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=-7.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89F1CC43381 for ; Wed, 27 Mar 2019 09:49:33 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 112E12075C for ; Wed, 27 Mar 2019 09:49:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="dK052xjI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 112E12075C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=xd72uhscLzEvrVAo6QFGusI13uDT+pRs7yMcK1Lqztg=; b=dK052xjItKloEtPHwhi8kTtmM DFFah1LeuKO/pV/rWecKKBTuU0orVjGmsu/xBOts/7QomekX6bePNyBZ0xkXQHFjnNq5hYt19B6Hd TlmcffiMRDs6WMY41O5JPNkx1M8kRem7ZQEuU2DPwTG70idbcmh17FGN9mZ6gEA62d2uMN4bu6jni g4J08bZ6wQMVP7ALH0BHu2MV9yL78Rci7BFTYDZIXOI6jJNh0l8u6z0x1t6f7rv9Wh4TONr8xK6th u+fNT8OfqCTXP23byAn4CWCXaUOnHEwETZ7TQwf1bFXKjlTxjJnbn/XOcAab60tzbxwkrR1X/McdT haFtnQ3XA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h95BZ-0004fg-Tq; Wed, 27 Mar 2019 09:49:29 +0000 Received: from relay12.mail.gandi.net ([217.70.178.232]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h95BW-0004ek-3F for linux-arm-kernel@lists.infradead.org; Wed, 27 Mar 2019 09:49:28 +0000 Received: from [10.30.1.20] (lneuilly-657-1-5-103.w81-250.abo.wanadoo.fr [81.250.144.103]) (Authenticated sender: alex@ghiti.fr) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 2175620000E; Wed, 27 Mar 2019 09:49:13 +0000 (UTC) Subject: Re: [PATCH v8 4/4] hugetlb: allow to free gigantic pages regardless of the configuration To: "Aneesh Kumar K.V" , mpe@ellerman.id.au, Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , Yoshinori Sato , Rich Felker , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H . Peter Anvin" , x86@kernel.org, Dave Hansen , Andy Lutomirski , Peter Zijlstra , Mike Kravetz , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org References: <20190327063626.18421-1-alex@ghiti.fr> <20190327063626.18421-5-alex@ghiti.fr> From: Alexandre Ghiti Message-ID: Date: Wed, 27 Mar 2019 10:48:54 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Language: fr X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190327_024926_468112_3D26D012 X-CRM114-Status: GOOD ( 29.89 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDMvMjcvMjAxOSAwOTo1NSBBTSwgQW5lZXNoIEt1bWFyIEsuViB3cm90ZToKPiBPbiAzLzI3 LzE5IDI6MTQgUE0sIEFsZXhhbmRyZSBHaGl0aSB3cm90ZToKPj4KPj4KPj4gT24gMDMvMjcvMjAx OSAwODowMSBBTSwgQW5lZXNoIEt1bWFyIEsuViB3cm90ZToKPj4+IE9uIDMvMjcvMTkgMTI6MDYg UE0sIEFsZXhhbmRyZSBHaGl0aSB3cm90ZToKPj4+PiBPbiBzeXN0ZW1zIHdpdGhvdXQgQ09OVElH X0FMTE9DIGFjdGl2YXRlZCBidXQgdGhhdCBzdXBwb3J0IGdpZ2FudGljIAo+Pj4+IHBhZ2VzLAo+ Pj4+IGJvb3R0aW1lIHJlc2VydmVkIGdpZ2FudGljIHBhZ2VzIGNhbiBub3QgYmUgZnJlZWQgYXQg YWxsLiBUaGlzIHBhdGNoCj4+Pj4gc2ltcGx5IGVuYWJsZXMgdGhlIHBvc3NpYmlsaXR5IHRvIGhh bmQgYmFjayB0aG9zZSBwYWdlcyB0byBtZW1vcnkKPj4+PiBhbGxvY2F0b3IuCj4+Pj4KPj4+PiBT aWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgR2hpdGkgPGFsZXhAZ2hpdGkuZnI+Cj4+Pj4gQWNrZWQt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4gW3NwYXJjXQo+Pj4+Cj4+ Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaHVnZXRs Yi5oIAo+Pj4+IGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9odWdldGxiLmgK Pj4+PiBpbmRleCBlYzJhNTVhNTUzYzcuLjcwMTMyODRmMGYxYiAxMDA2NDQKPj4+PiAtLS0gYS9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2h1Z2V0bGIuaAo+Pj4+ICsrKyBiL2Fy Y2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaHVnZXRsYi5oCj4+Pj4gQEAgLTM2LDgg KzM2LDggQEAgc3RhdGljIGlubGluZSBpbnQgaHN0YXRlX2dldF9wc2l6ZShzdHJ1Y3QgaHN0YXRl IAo+Pj4+ICpoc3RhdGUpCj4+Pj4gwqDCoMKgwqDCoCB9Cj4+Pj4gwqAgfQo+Pj4+IMKgIC0jaWZk ZWYgQ09ORklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UKPj4+PiAtc3RhdGljIGlubGluZSBib29s IGdpZ2FudGljX3BhZ2Vfc3VwcG9ydGVkKHZvaWQpCj4+Pj4gKyNkZWZpbmUgX19IQVZFX0FSQ0hf R0lHQU5USUNfUEFHRV9SVU5USU1FX1NVUFBPUlRFRAo+Pj4+ICtzdGF0aWMgaW5saW5lIGJvb2wg Z2lnYW50aWNfcGFnZV9ydW50aW1lX3N1cHBvcnRlZCh2b2lkKQo+Pj4+IMKgIHsKPj4+PiDCoMKg wqDCoMKgIC8qCj4+Pj4gwqDCoMKgwqDCoMKgICogV2UgdXNlZCBnaWdhbnRpYyBwYWdlIHJlc2Vy dmF0aW9uIHdpdGggaHlwZXJ2aXNvciBhc3Npc3QgCj4+Pj4gaW4gc29tZSBjYXNlLgo+Pj4+IEBA IC00OSw3ICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3N1cHBvcnRl ZCh2b2lkKQo+Pj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7Cj4+Pj4gwqAgfQo+Pj4+IC0j ZW5kaWYKPj4+PiDCoCDCoCAvKiBodWdlcGQgZW50cnkgdmFsaWQgYml0ICovCj4+Pj4gwqAgI2Rl ZmluZSBIVUdFUERfVkFMX0JJVFPCoMKgwqDCoMKgwqDCoCAoMHg4MDAwMDAwMDAwMDAwMDAwVUwp Cj4+Pgo+Pj4gSXMgdGhhdCBjb3JyZWN0IHdoZW4gQ09OVElHX0FMTE9DIGlzIG5vdCBlbmFibGVk PyBJIGd1ZXNzIHdlIHdhbnQKPj4+Cj4+PiBnaWdhbnRpY19wYWdlX3J1bnRpbWVfc3VwcG9ydGVk IHRvIHJldHVybiBmYWxzZSB3aGVuIENPTlRJR19BTExPQyBpcyAKPj4+IG5vdCBlbmFibGVkIG9u IGFsbCBhcmNoaXRlY3R1cmVzIGFuZCBvbiBQT1dFUiB3aGVuIGl0IGlzIGVuYWJsZWQgd2UgCj4+ PiB3YW50IGl0IHRvIGJlIGNvbmRpdGlvbmFsIGFzIGl0IGlzIG5vdy4KPj4+Cj4+PiAtYW5lZXNo Cj4+Pgo+Pgo+PiBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSBpcyBzZXQgYnkgZGVmYXVs dCB3aGVuIGFuIGFyY2hpdGVjdHVyZSAKPj4gc3VwcG9ydHMgZ2lnYW50aWMKPj4gcGFnZXM6IG9u IGl0cyBvd24sIGl0IGFsbG93cyB0byBhbGxvY2F0ZSBib290dGltZSBnaWdhbnRpYyBwYWdlcyBB TkQgCj4+IHRvIGZyZWUgdGhlbSBhdCBydW50aW1lCj4+ICh0aGlzIGlzIHRoZSBnb2FsIG9mIHRo aXMgc2VyaWVzKSwgYnV0IG5vdCB0byBhbGxvY2F0ZSBydW50aW1lIAo+PiBnaWdhbnRpYyBwYWdl cy4KPj4gSWYgQ09OVElHX0FMTE9DIGlzIHNldCwgaXQgYWxsb3dzIGluIGFkZGl0aW9uIHRvIGFs bG9jYXRlIHJ1bnRpbWUgCj4+IGdpZ2FudGljIHBhZ2VzLgo+Pgo+PiBJIHJlLWludHJvZHVjZWQg dGhlIHJ1bnRpbWUgY2hlY2tzIGJlY2F1c2Ugd2UgY2FuJ3Qga25vdyBhdCBjb21waWxlIAo+PiB0 aW1lIGlmIHBvd2VycGMgY2FuCj4+IG9yIG5vdCBzdXBwb3J0IGdpZ2FudGljIHBhZ2VzLgo+Pgo+ PiBTbyBmb3IgYWxsIGFyY2hpdGVjdHVyZXMsIGdpZ2FudGljX3BhZ2VfcnVudGltZV9zdXBwb3J0 ZWQgb25seSAKPj4gZGVwZW5kcyBvbgo+PiBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSBl bmFibGVkIG9yIG5vdC4gVGhlIHBvc3NpYmlsaXR5IHRvIAo+PiBhbGxvY2F0ZSBydW50aW1lCj4+ IGdpZ2FudGljIHBhZ2VzIGlzIGRlYWx0IHdpdGggYWZ0ZXIgdGhvc2UgcnVudGltZSBjaGVja3Mu Cj4+Cj4KPiB5b3UgcmVtb3ZlZCB0aGF0ICNpZmRlZiBpbiB0aGUgcGF0Y2ggYWJvdmUuIGllIHdl IGhhZAo+ICNpZmRlZiBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRQo+IHN0YXRpYyBpbmxp bmUgYm9vbCBnaWdhbnRpY19wYWdlX3N1cHBvcnRlZCh2b2lkKQo+IHsKPiDCoMKgwqDCoC8qCj4g wqDCoMKgwqAgKiBXZSB1c2VkIGdpZ2FudGljIHBhZ2UgcmVzZXJ2YXRpb24gd2l0aCBoeXBlcnZp c29yIGFzc2lzdCBpbiAKPiBzb21lIGNhc2UuCj4gwqDCoMKgwqAgKiBXZSBjYW5ub3QgdXNlIHJ1 bnRpbWUgYWxsb2NhdGlvbiBvZiBnaWdhbnRpYyBwYWdlcyBpbiB0aG9zZSAKPiBwbGF0Zm9ybXMK PiDCoMKgwqDCoCAqIFRoaXMgaXMgaGFzaCB0cmFuc2xhdGlvbiBtb2RlIExQQVJzLgo+IMKgwqDC oMKgICovCj4gwqDCoMKgwqBpZiAoZmlybXdhcmVfaGFzX2ZlYXR1cmUoRldfRkVBVFVSRV9MUEFS KSAmJiAhcmFkaXhfZW5hYmxlZCgpKQo+IMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPgo+ IMKgwqDCoMKgcmV0dXJuIHRydWU7Cj4gfQo+ICNlbmRpZgoKWWVzLCBJIHJlbW92ZWQgdGhlICNp ZmRlZiBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRSBiZWNhdXNlIGl0IHdhcyAKZGVmaW5l ZCBvbmx5CmlmIENPTlRJR19BTExPQyB3YXMgc2V0LiBCdXQgbm93LCBDT05GSUdfQVJDSF9IQVNf R0lHQU5USUNfUEFHRSBpcyAKaW5jb25kaXRpb25hbGx5CnNldCBmb3IgcG93ZXJwYyBzbyBJIHRo aW5rIHdlIGRvbid0IG5lZWQgaXQgYW55bW9yZS4KQWN0dWFsbHkgSSBoYXZlIGRvdWJ0cyBub3cs IGlzIHRoaXMgdHJ1ZSBmb3IgYWxsIGNvbmZpZ3VyYXRpb25zID8gSSBzZWUgCnRoYXQgaXQgaXMg b25seSBzZXQgZm9yClBQQ19SQURJWF9NTVUuIEkgdGhpbmsgdGhlIHByb2JsZW0gaXMgaGVyZTog aW5zdGVhZCBvZiByZXR1cm5pbmcgdHJ1ZSwgCml0IHNob3VsZCBkbyBsaWtlCnRoZSBnZW5lcmlj IHZlcnNpb24sIGllIHJldHVybiBJU19FTkFCTEVEKENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19Q QUdFKS4KRG8geW91IGFncmVlID8KCj4KPgo+IFRoaXMgaXMgbm93Cj4gI2RlZmluZSBfX0hBVkVf QVJDSF9HSUdBTlRJQ19QQUdFX1JVTlRJTUVfU1VQUE9SVEVECj4gc3RhdGljIGlubGluZSBib29s IGdpZ2FudGljX3BhZ2VfcnVudGltZV9zdXBwb3J0ZWQodm9pZCkKPiB7Cj4gaWYgKGZpcm13YXJl X2hhc19mZWF0dXJlKEZXX0ZFQVRVUkVfTFBBUikgJiYgIXJhZGl4X2VuYWJsZWQoKSkKPiDCoMKg wqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4KPiDCoMKgwqDCoHJldHVybiB0cnVlOwo+IH0KPgo+ Cj4gSSBhbSB3b25kZXJpbmcgd2hldGhlciBpdCBzaG91bGQgYmUKPgo+ICNkZWZpbmUgX19IQVZF X0FSQ0hfR0lHQU5USUNfUEFHRV9SVU5USU1FX1NVUFBPUlRFRAo+IHN0YXRpYyBpbmxpbmUgYm9v bCBnaWdhbnRpY19wYWdlX3J1bnRpbWVfc3VwcG9ydGVkKHZvaWQpCj4gewo+Cj4gwqDCoCBpZiAo IUlTX0VOQUJMRUQoQ09ORklHX0NPTlRJR19BTExPQykpCj4gwqDCoMKgwqDCoMKgwqAgcmV0dXJu IGZhbHNlOwoKSSBkb24ndCB0aGluayB0aGlzIHRlc3Qgc2hvdWxkIGhhcHBlbiBoZXJlLCBDT05G SUdfQ09OVElHX0FMTE9DIG9ubHkgYWxsb3dzCnRvIGFsbG9jYXRlIGdpZ2FudGljIHBhZ2VzLCBk b2luZyB0aGF0IGNoZWNrIGhlcmUgd291bGQgcHJldmVudCBwb3dlcnBjCnRvIGZyZWUgYm9vdHRp bWUgZ2lnYW50aWMgcGFnZXMgd2hlbiBub3QgYSBndWVzdC4gTm90ZSB0aGF0IHRoaXMgY2hlY2sK aXMgYWN0dWFsbHkgZG9uZSBpbiBzZXRfbWF4X2h1Z2VfcGFnZXMuCgoKPgo+IGlmIChmaXJtd2Fy ZV9oYXNfZmVhdHVyZShGV19GRUFUVVJFX0xQQVIpICYmICFyYWRpeF9lbmFibGVkKCkpCj4gwqDC oMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwoKTWF5YmUgSSBkaWQgbm90IHVuZGVyc3RhbmQgdGhp cyBjaGVjazogSSB1bmRlcnN0b29kIHRoYXQsIGluIHRoZSBjYXNlIAp0aGUgc3lzdGVtCmlzIHZp cnR1YWxpemVkLCB3ZSBkbyBub3Qgd2FudCBpdCB0byBoYW5kIGJhY2sgZ2lnYW50aWMgcGFnZXMu IERvZXMgdGhpcyAKY2hlY2sKdGVzdCBpZiB0aGUgc3lzdGVtIGlzIGN1cnJlbnRseSBiZWluZyB2 aXJ0dWFsaXplZCA/CklmIHllcywgSSB0aGluayB0aGUgcGF0Y2ggaXMgY29ycmVjdDogaXQgcHJl dmVudHMgZnJlZWluZyBnaWdhbnRpYyBwYWdlcyAKd2hlbiB0aGUgc3lzdGVtCmlzIHZpcnR1YWxp emVkIGJ1dCBhbGxvd3MgYSAnbm9ybWFsJyBzeXN0ZW0gdG8gZnJlZSBnaWdhbnRpYyBwYWdlcy4K Cgo+Cj4gwqDCoMKgwqByZXR1cm4gdHJ1ZTsKPiB9Cj4KPiBvciBhZGQgdGhhdCAjaWZkZWYgYmFj ay4KPgo+PiBCeSB0aGUgd2F5LCBJIGZvcmdvdCB0byBhc2sgeW91IHdoeSB5b3UgdGhpbmsgdGhh dCBpZiBhbiBhcmNoIGNhbm5vdCAKPj4gYWxsb2NhdGUgcnVudGltZSBnaWdhbnRpYwo+PiBwYWdl cywgaXQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZyZWUgYm9vdHRpbWUgZ2lnYW50aWMgcGFnZXMg Pwo+Pgo+Cj4gb24gdmlydHVhbGl6ZWQgcGxhdGZvcm1zIGxpa2UgcG93ZXJ2bSB3aGljaCB1c2Ug YSBwYXJhdmlydHVhbGl6ZWQgcGFnZSAKPiB0YWJsZSB1cGRhdGUgbWVjaGFuaXNtICh3ZSBkb250 JyBoYXZlIHR3byBsZXZlbCB0YWJsZSkuIFRoZSBhYmlsaXR5IHRvIAo+IG1hcCBhIHBhZ2UgaHVn ZSBkZXBlbmRzIG9uIGhvdyBoeXBlcnZpc29yIGFsbG9jYXRlZCB0aGUgZ3Vlc3QgcmFtLiAKPiBI eXBlcnZpc29yIGFsc28gYWxsb2NhdGVzIHRoZSBndWVzdCBzcGVjaWZpYyBwYWdlIHRhYmxlIG9m IGEgc3BlY2lmaWMgCj4gc2l6ZSBkZXBlbmRpbmcgb24gaG93IG1hbnkgcGFnZXMgYXJlIGdvaW5n IHRvIGJlIG1hcHBlZCBieSB3aGF0IHBhZ2UgCj4gc2l6ZS4KPgo+IG9uIFBPV0VSIHdlIGluZGlj YXRlIHBvc3NpYmxlIGd1ZXN0IHJlYWwgYWRkcmVzcyB0aGF0IGNhbiBiZSBtYXBwZWQgCj4gdmlh IGh1Z2VwYWdlIChpbiB0aGlzIGNhc2UgMTZHKSB1c2luZyBhIGRldmljZSB0cmVlIG5vZGUgCj4g KGlibSxleHBlY3RlZCNwYWdlcykgLiBJdCBpcyBleHBlY3RlZCB0aGF0IHdlIHdpbGwgbWFwIHRo ZXNlIHBhZ2VzIAo+IG9ubHkgYXMgMTZHIHBhZ2VzLiBIZW5jZSB3ZSBjYW5ub3QgZnJlZSB0aGVt IGJhY2sgdG8gdGhlIGJ1ZGR5IHdoZXJlIAo+IGl0IGNvdWxkIGdldCBtYXBwZWQgdmlhIDY0SyBw YWdlIHNpemUuCgpUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbnMuCgpBbGV4Cj4KPiAtYW5lZXNo Cj4KPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK