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=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 E7C94C4338F for ; Mon, 16 Aug 2021 06:55:01 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5874C61A7E for ; Mon, 16 Aug 2021 06:55:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5874C61A7E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 744038D0001; Mon, 16 Aug 2021 02:55:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F56A6B0072; Mon, 16 Aug 2021 02:55:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5E29B8D0001; Mon, 16 Aug 2021 02:55:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0161.hostedemail.com [216.40.44.161]) by kanga.kvack.org (Postfix) with ESMTP id 41CE66B0071 for ; Mon, 16 Aug 2021 02:55:00 -0400 (EDT) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id BA0818249980 for ; Mon, 16 Aug 2021 06:54:59 +0000 (UTC) X-FDA: 78480031518.30.3933171 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by imf20.hostedemail.com (Postfix) with ESMTP id 313B5D00BE84 for ; Mon, 16 Aug 2021 06:54:57 +0000 (UTC) Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.54]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4Gp4fH59nVz7yxR; Mon, 16 Aug 2021 14:54:47 +0800 (CST) Received: from dggpemm500005.china.huawei.com (7.185.36.74) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Mon, 16 Aug 2021 14:54:52 +0800 Received: from dggpeml500016.china.huawei.com (7.185.36.70) by dggpemm500005.china.huawei.com (7.185.36.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Mon, 16 Aug 2021 14:54:52 +0800 Received: from dggpeml500016.china.huawei.com ([7.185.36.70]) by dggpeml500016.china.huawei.com ([7.185.36.70]) with mapi id 15.01.2176.012; Mon, 16 Aug 2021 14:54:52 +0800 From: "Longpeng (Mike, Cloud Infrastructure Service Product Dept.)" To: Khalid Aziz CC: Steven Sistare , Anthony Yznaga , "linux-kernel@vger.kernel.org" , "linux-mm@kvack.org" , Matthew Wilcox , "Gonglei (Arei)" Subject: RE: [RFC PATCH 0/5] madvise MADV_DOEXEC Thread-Topic: [RFC PATCH 0/5] madvise MADV_DOEXEC Thread-Index: AQHXkHx3rHlzMKHix0+kvEwtcZpkNat1SbyA Date: Mon, 16 Aug 2021 06:54:52 +0000 Message-ID: <49528665cce5490eaa2961fe7d282752@huawei.com> References: <1595869887-23307-1-git-send-email-anthony.yznaga@oracle.com> <43471cbb-67c6-f189-ef12-0f8302e81b06@oracle.com> <55720e1b39cff0a0f882d8610e7906dc80ea0a01.camel@oracle.com> In-Reply-To: <55720e1b39cff0a0f882d8610e7906dc80ea0a01.camel@oracle.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.174.148.223] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 313B5D00BE84 Authentication-Results: imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=huawei.com; spf=pass (imf20.hostedemail.com: domain of longpeng2@huawei.com designates 45.249.212.189 as permitted sender) smtp.mailfrom=longpeng2@huawei.com X-Rspamd-Server: rspam04 X-Stat-Signature: 8iptio4c83p4d753bw594t194t8nuec6 X-HE-Tag: 1629096897-127406 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: SGkgS2hhbGlkLA0KDQpUaGFua3MgZm9yIHlvdXIgcmVwbGF5LCBQU0IgOikNCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaGFsaWQgQXppeiBbbWFpbHRvOmtoYWxpZC5h eml6QG9yYWNsZS5jb21dDQo+IFNlbnQ6IFNhdHVyZGF5LCBBdWd1c3QgMTQsIDIwMjEgMzo0OSBB TQ0KPiBUbzogTG9uZ3BlbmcgKE1pa2UsIENsb3VkIEluZnJhc3RydWN0dXJlIFNlcnZpY2UgUHJv ZHVjdCBEZXB0LikNCj4gPGxvbmdwZW5nMkBodWF3ZWkuY29tPjsgTWF0dGhldyBXaWxjb3ggPHdp bGx5QGluZnJhZGVhZC5vcmc+DQo+IENjOiBTdGV2ZW4gU2lzdGFyZSA8c3RldmVuLnNpc3RhcmVA b3JhY2xlLmNvbT47IEFudGhvbnkgWXpuYWdhDQo+IDxhbnRob255Lnl6bmFnYUBvcmFjbGUuY29t PjsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gbGludXgtbW1Aa3ZhY2sub3JnOyBH b25nbGVpIChBcmVpKSA8YXJlaS5nb25nbGVpQGh1YXdlaS5jb20+DQo+IFN1YmplY3Q6IFJlOiBb UkZDIFBBVENIIDAvNV0gbWFkdmlzZSBNQURWX0RPRVhFQw0KPiANCj4gT24gVHVlLCAyMDIxLTA3 LTEzIGF0IDAwOjU3ICswMDAwLCBMb25ncGVuZyAoTWlrZSwgQ2xvdWQgSW5mcmFzdHJ1Y3R1cmUg U2VydmljZQ0KPiBQcm9kdWN0IERlcHQuKSB3cm90ZToNCj4gPiBIaSBNYXR0aGV3LA0KPiA+DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTWF0dGhldyBXaWxj b3ggW21haWx0bzp3aWxseUBpbmZyYWRlYWQub3JnXQ0KPiA+ID4gU2VudDogTW9uZGF5LCBKdWx5 IDEyLCAyMDIxIDk6MzAgQU0NCj4gPiA+IFRvOiBMb25ncGVuZyAoTWlrZSwgQ2xvdWQgSW5mcmFz dHJ1Y3R1cmUgU2VydmljZSBQcm9kdWN0IERlcHQuKQ0KPiA+ID4gPGxvbmdwZW5nMkBodWF3ZWku Y29tPg0KPiA+ID4gQ2M6IFN0ZXZlbiBTaXN0YXJlIDxzdGV2ZW4uc2lzdGFyZUBvcmFjbGUuY29t PjsgQW50aG9ueSBZem5hZ2ENCj4gPiA+IDxhbnRob255Lnl6bmFnYUBvcmFjbGUuY29tPjsgbGlu dXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gPiA+IGxpbnV4LW1tQGt2YWNrLm9yZzsgR29u Z2xlaSAoQXJlaSkgPGFyZWkuZ29uZ2xlaUBodWF3ZWkuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6 IFtSRkMgUEFUQ0ggMC81XSBtYWR2aXNlIE1BRFZfRE9FWEVDDQo+ID4gPg0KPiA+ID4gT24gTW9u LCBKdWwgMTIsIDIwMjEgYXQgMDk6MDU6NDVBTSArMDgwMCwgTG9uZ3BlbmcgKE1pa2UsIENsb3Vk DQo+ID4gPiBJbmZyYXN0cnVjdHVyZSBTZXJ2aWNlIFByb2R1Y3QgRGVwdC4pIHdyb3RlOg0KPiA+ ID4gPiBMZXQgbWUgZGVzY3JpYmUgbXkgdXNlIGNhc2UgbW9yZSBjbGVhcmx5IChqdXN0IGlnbm9y ZSBpZiB5b3UncmUNCj4gPiA+ID4gbm90IGludGVyZXN0ZWQgaW4gaXQpOg0KPiA+ID4gPg0KPiA+ ID4gPiAxLiBQcm9nIEEgbW1hcCgpIDRHQiBtZW1vcnkgKGFub24gb3IgZmlsZS1tYXBwaW5nKSwg c3VwcG9zZSB0aGUNCj4gPiA+ID4gYWxsb2NhdGVkIFZBIHJhbmdlIGlzIFsweDQwMDAwMDAwLDB4 MTQwMDAwMDAwKQ0KPiA+ID4gPg0KPiA+ID4gPiAyLiBQcm9nIEEgc3BlY2lmaWVzIFsweDQ4MDAw MDAwLDB4NTAwMDAwMDApIGFuZA0KPiA+ID4gPiBbMHg4MDAwMDAwMCwweDEwMDAwMDAwMCkgd2ls bCBiZSBzaGFyZWQgYnkgaXRzIGNoaWxkLg0KPiA+ID4gPg0KPiA+ID4gPiAzLiBQcm9nIEEgZm9y aygpIFByb2cgQiBhbmQgdGhlbiBQcm9nIEIgZXhlYygpIGEgbmV3IEVMRiBiaW5hcnkuDQo+ID4g PiA+DQo+ID4gPiA+IDQuIFByb2cgQiBub3RpY2UgdGhlIHNoYXJlZCByYW5nZXMgKGUuZy4gYnkg aW5wdXQgcGFyYW1ldGVycyBvcg0KPiA+ID4gPiAuLi4pDQo+ID4gPiA+IGFuZCByZW1hcCB0aGVt IHRvIGEgY29udGludW91cyBWQSByYW5nZS4NCj4gPiA+DQo+ID4gPiBUaGlzIGlzIGRhbmdlcm91 cy7CoCBUaGVyZSBtdXN0IGJlIGFuIGFjdGl2ZSBzdGVwIGZvciBQcm9nIEIgdG8NCj4gPiA+IGFj Y2VwdCBQcm9nIEEncyByYW5nZXMgaW50byBpdHMgYWRkcmVzcyBzcGFjZS7CoCBPdGhlcndpc2Ug UHJvZyBBDQo+ID4gPiBjb3VsZCBhbG1vc3QgY29tcGxldGVseSBmaWxsIFByb2cgQidzIGFkZHJl c3Mgc3BhY2UgYW5kIHNvIGNvbnRyb2wNCj4gPiA+IHdoZXJlIFByb2cgQiBwbGFjZXMgaXRzIG1h cHBpbmdzLsKgIEl0IGNvdWxkIGFsc28gcHJvdm9rZSBhIGxhdGVudA0KPiA+ID4gYnVnIGluIFBy b2cgQiBpZiBpdCBkb2Vzbid0IGhhbmRsZSBhZGRyZXNzIHNwYWNlIGV4aGF1c3Rpb24NCj4gPiA+ IGdyYWNlZnVsbHkuDQo+ID4gPg0KPiA+ID4gSSBoYWQgYSBwcm9wb3NhbCB0byBoYW5kbGUgdGhp cy7CoCBXb3VsZCBpdCBtZWV0IHlvdXIgcmVxdWlyZW1lbnRzPw0KPiA+ID4gaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGttbC8yMDIwMDczMDE1MjI1MC5HRzIzODA4QGNhc3Blci5pbmZyYWRlYWQN Cj4gPiA+IC5vcmcvDQo+ID4NCj4gPiBJIG5vdGljZWQgeW91ciBwcm9wb3NhbCBvZiBwcm9qZWN0 IFNpbGVieSBhbmQgSSB0aGluayBpdCBjYW4gbWVldA0KPiA+IFN0ZXZlbidzIHJlcXVpcmVtZW50 LCBidXQgSSBub3Qgc3VyZSB3aGV0aGVyIGl0J3Mgc3VpdGFibGUgZm9yIG1pbmUNCj4gPiBiZWNh dXNlIHRoZXJlJ3Mgbm8gc2FtcGxlIGNvZGUgeWV0LCBpcyBpdCBpbiBwcm9ncmVzcyA/DQo+IA0K PiBIaSBNaWtlLA0KPiANCj4gSSBhbSB3b3JraW5nIG9uIHJlZmluaW5nIHRoZSBpZGVhcyBmcm9t IHByb2plY3QgU2lsZWJ5LiBJIGFtIGFsc28gd29ya2luZyBvbg0KPiBkZXNpZ25pbmcgdGhlIGlt cGxlbWVudGF0aW9uLiBTaW5jZSB0aGUgb3JpZ2luYWwgY29uY2VwdCwgdGhlIG1zaGFyZSBBUEkg aGFzDQo+IGV2b2x2ZWQgZnVydGhlci4gSGVyZSBpcyB3aGF0IGl0IGxva3MgbGlrZToNCj4gDQoN CldoYXQncyB0aGUgYWN0dWFsIHVzZSBjYXNlcyBvZiBTaWxlYnkgPyBXZSBjYW4gYWxyZWFkeSBz aGFyZSBhbm9ueW1vdXMgbWVtb3J5IA0KYnkgbWVtZmQuDQoNCj4gVGhlIG1zaGFyZSBBUEkgY29u c2lzdHMgb2YgdHdvIHN5c3RlbSBjYWxscyAtIG1zaGFyZSgpIGFuZA0KPiBtc2hhcmVfdW5saW5r KCkNCj4gDQo+IG1zaGFyZQ0KPiA9PT09PT0NCj4gDQo+IGludCBtc2hhcmUoY2hhciAqbmFtZSx2 b2lkICphZGRyLCBzaXplX3QgbGVuZ3RoLCBpbnQgb2ZsYWdzLCBtb2RlX3QNCj4gbW9kZSkNCj4g DQo+IG1zaGFyZSgpIGNyZWF0ZXMgYW5kIG9wZW5zIGEgbmV3LCBvciBvcGVucyBhbiBleGlzdGlu ZyBzaGFyZWQgbWVtb3J5IGFyZWEgdGhhdA0KPiB3aWxsIGJlIHNoYXJlZCBhdCBQVEUgbGV2ZWwu IG5hbWUgcmVmZXJzIHRvIHNoYXJlZCBvYmplY3QgbmFtZSB0aGF0IGV4aXN0cyB1bmRlcg0KPiAv ZGV2L21zaGFyZSAodGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZS4gVGhlcmUgbWlnaHQgYmUgYmV0 dGVyIHdheXMgdG8gbWFuYWdlIHRoZQ0KPiBuYW1lcyBmb3IgbXNoYXJlJ2QgYXJlYXMpLiBhZGRy IGlzIHRoZSBzdGFydGluZyBhZGRyZXNzIG9mIHRoaXMgc2hhcmVkIG1lbW9yeQ0KPiBhcmVhIGFu ZCBsZW5ndGggaXMgdGhlIHNpemUgb2YgdGhpcyBhcmVhLiBvZmxhZ3MgY2FuIGJlIG9uZSBvZjoN Cj4gDQo+ICAgICBPX1JET05MWSBvcGVucyBzaGFyZWQgbWVtb3J5IGFyZWEgZm9yIHJlYWQgb25s eSBhY2Nlc3MgYnkgZXZlcnlvbmUNCj4gICAgIE9fUkRXUiBvcGVucyBzaGFyZWQgbWVtb3J5IGFy ZWEgZm9yIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcw0KPiAgICAgT19DUkVBVCBjcmVhdGVzIHRoZSBu YW1lZCBzaGFyZWQgbWVtb3J5IGFyZWEgaWYgaXQgZG9lcyBub3QgZXhpc3QNCj4gICAgIE9fRVhD TCBJZiBPX0NSRUFUIHdhcyBhbHNvIHNwZWNpZmllZCwgYW5kIGEgc2hhcmVkIG1lbW9yeSBhcmVh DQo+ICAgICAgICAgZXhpc3RzIHdpdGggdGhhdCBuYW1lLCByZXR1cm4gYW4gZXJyb3IuDQo+IA0K PiBtb2RlIHJlcHJlc2VudHMgdGhlIGNyZWF0aW9uIG1vZGUgZm9yIHRoZSBzaGFyZWQgb2JqZWN0 IHVuZGVyIC9kZXYvbXNoYXJlLg0KPiANCj4gUmV0dXJuIFZhbHVlDQo+IC0tLS0tLS0tLS0tLQ0K PiANCj4gbXNoYXJlKCkgcmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvci4gQSByZWFkIGZyb20gdGhp cyBmaWxlIGRlc2NyaXB0b3IgcmV0dXJucyB0d28gbG9uZw0KPiB2YWx1ZXMgLSAoMSkgc3RhcnRp bmcgYWRkcmVzcywgYW5kICgyKSBzaXplIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuDQo+IA0K PiBOb3Rlcw0KPiAtLS0tLQ0KPiANCj4gUFRFcyBhcmUgc2hhcmVkIGF0IHBnZGlyIGxldmVsIGFu ZCBoZW5jZSBpdCBpbXBvc2VzIGZvbGxvd2luZyByZXF1aXJlbWVudHMgb24gdGhlDQo+IGFkZHJl c3MgYW5kIHNpemUgZ2l2ZW4gdG8gdGhlIG1zaGFyZSgpOg0KPiANCj4gICAgIC0gU3RhcnRpbmcg YWRkcmVzcyBtdXN0IGJlIGFsaWduZWQgdG8gcGdkaXIgc2l6ZSAoNTEyR0Igb24geDg2XzY0KQ0K DQpUaGUgbGltaXRhdGlvbiBzZWVtcyBub3QgdW5yZWFzb25hYmxlLCB3aHkgPw0KDQo+ICAgICAt IFNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHBnZGlyIHNpemUNCj4gICAgIC0gQW55IG1hcHBp bmdzIGNyZWF0ZWQgaW4gdGhpcyBhZGRyZXNzIHJhbmdlIGF0IGFueSB0aW1lIGJlY29tZQ0KPiAg ICAgc2hhcmVkIGF1dG9tYXRpY2FsbHkNCj4gICAgIC0gU2hhcmVkIGFkZHJlc3MgcmFuZ2UgY2Fu IGhhdmUgdW5tYXBwZWQgYWRkcmVzc2VzIGluIGl0LiBBbnkNCj4gICAgIGFjY2VzcyB0byB1bm1h cHBlZCBhZGRyZXNzIHdpbGwgcmVzdWx0IGluIFNJR0JVUw0KPiANCj4gTWFwcGluZ3Mgd2l0aGlu IHRoaXMgYWRkcmVzcyByYW5nZSBiZWhhdmUgYXMgaWYgdGhleSB3ZXJlIHNoYXJlZCBiZXR3ZWVu DQo+IHRocmVhZHMsIHNvIGEgd3JpdGUgdG8gYSBNQVBfUFJJVkFURSBtYXBwaW5nIHdpbGwgY3Jl YXRlIGEgcGFnZSB3aGljaCBpcyBzaGFyZWQNCj4gYmV0d2VlbiBhbGwgdGhlIHNoYXJlcnMuIFRo ZSBmaXJzdCBwcm9jZXNzIHRoYXQgZGVjbGFyZXMgYW4gYWRkcmVzcyByYW5nZSBtc2hhcmUnZA0K PiBjYW4gY29udGludWUgdG8gbWFwIG9iamVjdHMgaW4gdGhlIHNoYXJlZCBhcmVhLiBBbGwgb3Ro ZXIgcHJvY2Vzc2VzIHRoYXQgd2FudA0KPiBtc2hhcmUnZCBhY2Nlc3MgdG8gdGhpcyBtZW1vcnkg YXJlYSBjYW4gZG8gc28gYnkgY2FsbGluZyBtc2hhcmUoKS4gQWZ0ZXIgdGhpcyBjYWxsLA0KPiB0 aGUgYWRkcmVzcyByYW5nZSBnaXZlbiBieSBtc2hhcmUgYmVjb21lcyBhIHNoYXJlZCByYW5nZSBp biBpdHMgYWRkcmVzcyBzcGFjZS4NCj4gQW5vbnltb3VzIG1hcHBpbmdzIHdpbGwgYmUgc2hhcmVk IGFuZCBub3QgQ09XZWQuDQo+IA0KPiANCj4gbXNoYXJlX3VubGluaw0KPiA9PT09PT09PT09PT09 DQo+IA0KPiBpbnQgbXNoYXJlX3VubGluayhjaGFyICpuYW1lKQ0KPiANCj4gQSBzaGFyZWQgYWRk cmVzcyByYW5nZSBjcmVhdGVkIGJ5IG1zaGFyZSgpIGNhbiBiZSBkZXN0cm95ZWQgdXNpbmcNCj4g bXNoYXJlX3VubGluaygpIHdoaWNoIHJlbW92ZXMgdGhlICBzaGFyZWQgbmFtZWQgb2JqZWN0LiBP bmNlIGFsbCBwcm9jZXNzZXMNCj4gaGF2ZSB1bm1hcHBlZCB0aGUgc2hhcmVkIG9iamVjdCwgdGhl IHNoYXJlZCBhZGRyZXNzIHJhbmdlIHJlZmVyZW5jZXMgYXJlDQo+IGRlLWFsbG9jYXRlZCBhbmQg ZGVzdHJveWVkLg0KPiANCj4gUmV0dXJuIFZhbHVlDQo+IC0tLS0tLS0tLS0tLQ0KPiANCj4gbXNo YXJlX3VubGluaygpIHJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC0xIG9uIGVycm9yLg0KPiANCj4g DQo+IEV4YW1wbGUNCj4gPT09PT09PQ0KPiANCj4gQSBwcm9jZXNzIGNhbiBjcmVhdGUgYW4gbXNo YXJlJ2QgYXJlYSBhbmQgbWFwIG9iamVjdHMgaW50byBpdCBhcw0KPiBmb2xsb3dzOg0KPiANCj4g ICAgIGZkID0gbXNoYXJlKCJqdW5rIiwgIFRCKDEpLCBHQig1MTIpLCBPX0NSRUFUfE9fUkRXUiwg MDYwMCk7DQo+IA0KPiAgICAgLyogTWFwIG9iamVjdHMgaW4gdGhlIHNoYXJlZCBhZGRyZXNzIHNw YWNlIGFuZC9vciBXcml0ZSBkYXRhICovDQo+IA0KPiAgICAgbXNoYXJlX3VubGluaygianVuayIp Ow0KPiANCg0KVXNlIHRoZSBuYW1lIHRvIGlkZW50aWZ5IHRoZSByYW5nZSBzZWVtcyBpbnNlY3Vy ZSBhbmQgbG9va3MgZWFzeSB0byBiZSBhdHRhY2tlZC4NCkhvdyBhYm91dCB0byB1c2UgdGhlIGZk ID8gV2UgY2FuIHBhc3MgdGhlIGZkIHRvIGFub3RoZXIgcHJvY2VzcyB3aG8gaXMgcGVybWl0IHRv DQphY2Nlc3MgdGhlIG1zaGFyZSdkIG1lbW9yeS4NCg0KPiBBbm90aGVyIHByb2Nlc3MgY2FuIHRo ZW4gYWNjZXNzIHRoaXMgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggYW5vdGhlciBjYWxsIHRvDQo+ IG1zaGFyZSgpOg0KPiANCj4gICAgIGZkID0gbXNoYXJlKCJqdW5rIiwgVEIoMSksIEdCKDUxMiks IE9fUkRXUiwgMDYwMCk7DQo+IA0KPiAgICAgLyogUmVhZCBhbmQgd3JpdGUgZGF0YSBpbiBUQigx KS0oKFRCKDEpK0dCKDUxMikpIHJhbmdlICovDQo+IA0KPiAgICAgbXNoYXJlX3VubGluaygianVu ayIpOw0KPiANCj4gDQo+ID4NCj4gPiBBY2NvcmRpbmcgdG8gdGhlIGFic3RyYWN0IG9mIFNpbGVi eSwgSSBoYXZlIHR3byBxdWVzdGlvbnM6DQo+ID4gMS4gV291bGQgeW91IHBsYW4gdG8gc3VwcG9y dCB0aGUgZmlsZS1tYXBwaW5nIG1lbW9yeSBzaGFyaW5nID8gZS5nLg0KPiA+IFByb2cgQSdzIDRH IG1lbW9yeSBpcyBiYWNrZW5kIHdpdGggMk0gaHVnZXRsYi4NCj4gDQo+IFllcywgZmlsZS1tYXBw ZWQgbWVtb3J5IHNoYXJpbmcgc3VwcG9ydCBpcyBwbGFubmVkLg0KPiANCj4gPiAyLiBEb2VzIGVh Y2ggbXNoYXJlIGZkIG9ubHkgY29udGFpbmUgb25lIHNoYXJpbmcgVk1BID8gRm9yIGxhcmdlDQo+ ID4gbWVtb3J5IHByb2Nlc3MgKDFUfjRUIGluIG91ciBlbnYpLCBtYXliZSB0aGVyZSBpcyBodW5k cmVkcyBvZiBtZW1vcnkNCj4gPiByYW5nZXMgbmVlZCB0byBiZSBzaGFyZWQsIHRoaXMgd2lsbCB0 YWtlIHRvbyBtdWNoIGZkIHNwYWNlIGlmIHNvID8NCj4gPg0KPiANCj4gTm8sIGVhY2ggZmQgY2Fu IHN1cHBvcnQgYWxsIFZNQXMgY292ZXJlZCBieSB0aGUgYWRkcmVzcyByYW5nZSB3aXRoIGEgc2l6 ZSB0aGF0IGlzDQo+IG11bHRpcGxlIG9mIHBnZGlyIHNpemUuDQo+IA0KDQpJIGFsc28gbWFkZSBh IHByb3Bvc2FsIHRvIG1lZXQgb3VyIHJlcXVpcmVtZW50IGluc2lkZS4NCk91ciByZXF1aXJlbWVu dCBpczoNCjEuIFRoZSBwcm9jZXNzIEEgY2FuIHNwZWNpZnkgc29tZSByYW5nZXMgdG8gYmUgc2hh cmVkIGJ5IGFub3RoZXIgcHJvY2VzcyBCLg0KMi4gVGhlIHJhbmdlcyBjYW4gYmUgc2hhcmVkIGlu IHRoZSBvcmRlciBvZiB0aGUgc3BlY2lmaWVkIGJ5IHByb2Nlc3MgQS4NCjMuIFRoZSByYW5nZXMg Y2FuIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBWTUEsIHNvbWUgb2YgdGhlIFZNQXMgY2FuIGJlIGFu b24gYW5kDQogIG90aGVycyBjYW4gYmUgZmlsZS1tYXBwZWQuDQoNClRoZSBwcm9wb3NhbCBpbnRy b2R1Y2VzIGEgY2hhciBkZXZpY2UgbmFtZWQgL2Rldi9tc2hhcmUgYW5kIGludGVyYWN0cyB3aXRo IHRoZSB1c2Vycw0KYnkgaW9jdGwgaW50ZXJmYWNlcy4gSXQgc3VwcG9ydHMgdGhyZWUgY29tbWFu ZCBjdXJyZW50bHk6DQotIE1TSEFSRV9TSUdOOiBzcGVjaWZ5IHRoZSByYW5nZSB3YW50IHRvIGJl IHNoYXJlZA0KLSBNU0hBUkVfSU5GTzogZ2V0IHRoZSBpbmZvIG9mIHRoZSBzaGFyZWQgcmFuZ2Vz DQotIE1TSEFSRV9NTUFQOiBtYXAgdGhlIHNoYXJlZCByYW5nZXMgaW50byB0aGUgYWRkcmVzcyBz cGFjZQ0KDQpIZXJlIGlzIGFuIGV4YW1wbGUgdG8gc2hvdyBob3cgdG8gdXNlIGl0Lg0KDQoxLiBT dXBwb3NlIHByb2Nlc3MgQSB3YW50IHRvIHNoYXJlIGZvdXIgcmFuZ2VzOg0KICBhLiAweDEwMDAg fiAweDIwMDAgLS0+IEFub255bW91cw0KICBiLiAweDQwMDAgfiAweDgwMDAgLS0+IFBGTiBtYXBw ZWQgcmFuZ2UNCiAgYy4gMHgyMDAwMDAgfiAweDQwMDAwMCAtLT4gMk0gaHVnZXRsYg0KICBkLiAw eDUwMDAwMCB+IDB4NTAxMDAwIC0tPiBBbm9ueW1vdXMNCg0KDQoyLiBQcm9jZXNzIEEgd3JpdGUg ZGF0YSBpbnRvIHRoZXNlIGZvdXIgcmFuZ2VzIGFjY29yZGluZyB0aGUgZm9sbG93aW5nIHNlcXVl bmNlOg0KICAiYiAtLSBjIC0tIGEgLS0gZCINCiAgKCBTbyB0aGUgcHJvY2VzcyBCIHNob3VsZCBt YXAgdGhlIHJhbmdlcyBhcyB0aGUgc2FtZSBvcmRlciApDQoNCg0KMy4gUHJvY2VzcyBBIHNwZWNp ZnkgdGhlIHJhbmdlczoNCg0KICBGRCA9IG9wZW4oIC9kZXYvbXNhaHJlICk7DQogIGlvY3RsKEZE LCBNU0hBUkVfU0lHTiwgcmFuZ2UgYik7DQogIGlvY3RsKEZELCBNU0hBUkVfU0lHTiwgcmFuZ2Ug Yyk7DQogIGlvY3RsKEZELCBNU0hBUkVfU0lHTiwgcmFuZ2UgYSk7DQogIGlvY3RsKEZELCBNU0hB UkVfU0lHTiwgcmFuZ2UgZCk7DQoNCg0KNC4gUHJvY2VzcyBBIG1ha2Ugc3VyZSB0aGUgT19DTE9F WEVDIG9mIEZEIGlzIENMRUFSDQoNCg0KNS4gUHJvY2VzcyBBIG5vdyBmb3JrK2V4ZWMgcHJvY2Vz cyBCIHdpdGggcGFyYW1ldGVyIHNoYXJlZF9mZD1GRDoNCg0KICAuL2Jpbl9CIHNoYXJlZF9mZD1G RA0KDQoNCjYuIFByb2Nlc3MgQiBnZXQgdGhlIGluZm8gYnkgTVNIQVJFX0lORk8gaW9jdGw6DQoN CiAgaW9jdGwoIHNoYXJlZF9mZCwgTVNIQVJFX0lORk8sICZpbmZvICk7DQoNCiAgVGhlIGluZm8g aW5jbHVkZXM6DQogICAgbnVtOiB0aGUgY291bnQgb2YgdGhlIHNoYXJlZCByYW5nZXMNCiAgICB0 b3RhbHZtOiB0aGUgdG90YWwgdm0gc2l6ZSBvZiB0aGVzZSBzaGFyZWQgcmFuZ2VzDQogICAgYWxp Z246IGFsaWduIHJlcXVpcmVtZW50DQoNCg0KNy4gUHJvY2VzcyBCIHVzZSBNU0hBUkVfTU1BUCB0 byBtYXAgdGhlc2UgcmFuZ2VzIGludG8gaXRzIHNwYWNlOg0KDQogIHAgPSBtbWFwICggaW5mby50 b3RhbHZtLCBpbmZvLmFsaWduICk7DQogIGlvY3RsKHNoYXJlZF9mZCwgTVNIQVJFX01NQVAsIHtN TUFQX0FMTCwgYWRkcmVzcyBmaXhlZCwgcH0gKTsNCg0KDQpJIGhhdmUgd3JvdGUgYSBkcmFmdCBm b3IgaXQgYW5kIGl0IHdvcmtzIGluIGxvY2FsLiBCdXQgSSdtIG5vdCBzdXJlIHRoZSBjb25jZXB0 IGlzIHJpZ2h0LA0Kc28gSSdtIGdsYWQgdG8ga25vdyB0aGF0IHlvdSdyZSB3b3JraW5nIG9uIFNp bGVieSwgbWF5YmUgSSBjYW4gcmVmZXIgdG8gdGhlIHdvcmsgb2YgeW91cnMuDQoNCg0KPiAtLQ0K PiBLaGFsaWQNCg0K