From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [PATCH v6 4/4] hugetlb: allow to free gigantic pages regardless of the configuration References: <20190307132015.26970-1-alex@ghiti.fr> <20190307132015.26970-5-alex@ghiti.fr> <87va0movdh.fsf@linux.ibm.com> From: "Aneesh Kumar K.V" Date: Thu, 14 Mar 2019 18:47:35 +0530 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Message-Id: <972208b7-5c05-cc05-efbf-0d48bff4cf77@linux.ibm.com> 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 List-Archive: To: Alexandre Ghiti , Andrew Morton , Vlastimil Babka , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , 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 List-ID: T24gMy8xNC8xOSA1OjEzIFBNLCBBbGV4YW5kcmUgR2hpdGkgd3JvdGU6Cj4gT24gMDMvMTQvMjAx OSAwNjo1MiBBTSwgQW5lZXNoIEt1bWFyIEsuViB3cm90ZToKPj4gQWxleGFuZHJlIEdoaXRpIDxh bGV4QGdoaXRpLmZyPiB3cml0ZXM6Cj4+Cj4+PiBPbiBzeXN0ZW1zIHdpdGhvdXQgQ09OVElHX0FM TE9DIGFjdGl2YXRlZCBidXQgdGhhdCBzdXBwb3J0IGdpZ2FudGljIAo+Pj4gcGFnZXMsCj4+PiBi b290dGltZSByZXNlcnZlZCBnaWdhbnRpYyBwYWdlcyBjYW4gbm90IGJlIGZyZWVkIGF0IGFsbC4g VGhpcyBwYXRjaAo+Pj4gc2ltcGx5IGVuYWJsZXMgdGhlIHBvc3NpYmlsaXR5IHRvIGhhbmQgYmFj ayB0aG9zZSBwYWdlcyB0byBtZW1vcnkKPj4+IGFsbG9jYXRvci4KPj4+Cj4+PiBTaWduZWQtb2Zm LWJ5OiBBbGV4YW5kcmUgR2hpdGkgPGFsZXhAZ2hpdGkuZnI+Cj4+PiBBY2tlZC1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PiBbc3BhcmNdCj4+PiAtLS0KPj4+IMKgIGFy Y2gvYXJtNjQvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgIDIgKy0KPj4+IMKgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHVnZXRs Yi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0IC0tCj4+PiDCoCBhcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vYm9vazNzLzY0L2h1Z2V0bGIuaCB8wqAgNyAtLS0KPj4+IMKgIGFyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvS2NvbmZpZy5jcHV0eXBlwqDCoMKgwqDCoMKgIHzCoCAyICstCj4+PiDC oCBhcmNoL3MzOTAvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArLQo+Pj4gwqAgYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2h1 Z2V0bGIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzIC0tCj4+PiDCoCBhcmNoL3No L0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCAyICstCj4+PiDCoCBhcmNoL3NwYXJjL0tjb25maWfCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyICstCj4+PiDCoCBh cmNoL3g4Ni9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDIgKy0KPj4+IMKgIGFyY2gveDg2L2luY2x1ZGUvYXNtL2h1Z2V0 bGIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgLS0KPj4+IMKgIGluY2x1ZGUv bGludXgvZ2ZwLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMiArLQo+Pj4gwqAgbW0vaHVnZXRsYi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDU3ICsrKysrKysrKysr Ky0tLS0tLS0tCj4+PiDCoCBtbS9wYWdlX2FsbG9jLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0ICstCj4+PiDCoCAxMyBmaWxl cyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29uZmlnCj4+PiBpbmRl eCAwOTFhNTEzYjkzZTkuLmFmNjg3ZWZmODg0YSAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvYXJtNjQv S2NvbmZpZwo+Pj4gKysrIGIvYXJjaC9hcm02NC9LY29uZmlnCj4+PiBAQCAtMTgsNyArMTgsNyBA QCBjb25maWcgQVJNNjQKPj4+IMKgwqDCoMKgwqAgc2VsZWN0IEFSQ0hfSEFTX0ZBU1RfTVVMVElQ TElFUgo+Pj4gwqDCoMKgwqDCoCBzZWxlY3QgQVJDSF9IQVNfRk9SVElGWV9TT1VSQ0UKPj4+IMKg wqDCoMKgwqAgc2VsZWN0IEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTEwKPj4+IC3CoMKgwqAgc2Vs ZWN0IEFSQ0hfSEFTX0dJR0FOVElDX1BBR0UgaWYgQ09OVElHX0FMTE9DCj4+PiArwqDCoMKgIHNl bGVjdCBBUkNIX0hBU19HSUdBTlRJQ19QQUdFCj4+PiDCoMKgwqDCoMKgIHNlbGVjdCBBUkNIX0hB U19LQ09WCj4+PiDCoMKgwqDCoMKgIHNlbGVjdCBBUkNIX0hBU19NRU1CQVJSSUVSX1NZTkNfQ09S RQo+Pj4gwqDCoMKgwqDCoCBzZWxlY3QgQVJDSF9IQVNfUFRFX1NQRUNJQUwKPj4+IGRpZmYgLS1n aXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2h1Z2V0bGIuaCAKPj4+IGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9odWdldGxiLmgKPj4+IGluZGV4IGZiNjYwOTg3NTQ1NS4uNTk4OTNlNzY2ODI0 IDEwMDY0NAo+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9odWdldGxiLmgKPj4+ICsr KyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHVnZXRsYi5oCj4+PiBAQCAtNjUsOCArNjUsNCBA QCBleHRlcm4gdm9pZCBzZXRfaHVnZV9zd2FwX3B0ZV9hdChzdHJ1Y3QgbW1fc3RydWN0IAo+Pj4g Km1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4+PiDCoCAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvaHVn ZXRsYi5oPgo+Pj4gLSNpZmRlZiBDT05GSUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRQo+Pj4gLXN0 YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3N1cHBvcnRlZCh2b2lkKSB7IHJldHVybiB0 cnVlOyB9Cj4+PiAtI2VuZGlmCj4+PiAtCj4+PiDCoCAjZW5kaWYgLyogX19BU01fSFVHRVRMQl9I ICovCj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9o dWdldGxiLmggCj4+PiBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaHVnZXRs Yi5oCj4+PiBpbmRleCA1YjAxNzc3MzM5OTQuLmQwNGEwYmNjMmYxYyAxMDA2NDQKPj4+IC0tLSBh L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaHVnZXRsYi5oCj4+PiArKysgYi9h cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2h1Z2V0bGIuaAo+Pj4gQEAgLTMyLDEz ICszMiw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGhzdGF0ZV9nZXRfcHNpemUoc3RydWN0IGhzdGF0 ZSAKPj4+ICpoc3RhdGUpCj4+PiDCoMKgwqDCoMKgIH0KPj4+IMKgIH0KPj4+IC0jaWZkZWYgQ09O RklHX0FSQ0hfSEFTX0dJR0FOVElDX1BBR0UKPj4+IC1zdGF0aWMgaW5saW5lIGJvb2wgZ2lnYW50 aWNfcGFnZV9zdXBwb3J0ZWQodm9pZCkKPj4+IC17Cj4+PiAtwqDCoMKgIHJldHVybiB0cnVlOwo+ Pj4gLX0KPj4+IC0jZW5kaWYKPj4+IC0KPj4+IMKgIC8qIGh1Z2VwZCBlbnRyeSB2YWxpZCBiaXQg Ki8KPj4+IMKgICNkZWZpbmUgSFVHRVBEX1ZBTF9CSVRTwqDCoMKgwqDCoMKgwqAgKDB4ODAwMDAw MDAwMDAwMDAwMFVMKQo+PiBBcyBleHBsYWluZWQgaW4gaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJz Lm9yZy9wYXRjaC8xMDQ3MDAzLwo+PiBhcmNoaXRlY3R1cmVzIGxpa2UgcHBjNjQgaGF2ZSBhIGh5 cGVydmlzb3IgYXNzaXN0ZWQgbWVjaGFuaXNtIHRvIGluZGljYXRlCj4+IHdoZXJlIHRvIGZpbmQg Z2lnYW50aWMgaHVnZSBwYWdlcygxNkcgcGFnZXMpLiBBdCB0aGlzIHBvaW50LCB3ZSBkb24ndCAK Pj4gdXNlIHRoaXMKPj4gcmVzZXJ2ZWQgcGFnZXMgZm9yIGFueXRoaW5nIG90aGVyIHRoYW4gaHVn ZXRsYiBiYWNraW5nIGFuZCBoZW5jZSB0aGVyZQo+PiBpcyBubyBydW50aW1lIGZyZWUgb2YgdGhp cyBwYWdlcyBuZWVkZWQgKCBBbHNvIHdlIGRvbid0IGRvCj4+IHJ1bnRpbWUgYWxsb2NhdGlvbiBv ZiB0aGVtKS4KPj4KPj4gSSBndWVzcyB5b3UgY2FuIHN0aWxsIGFjaGlldmUgd2hhdCB5b3Ugd2Fu dCB0byBkbyBpbiB0aGlzIHBhdGNoIGJ5Cj4+IGtlZXBpbmcgZ2lnYW50aWNfcGFnZV9zdXBwb3J0 ZWQoKT8KPj4KPj4gTk9URTogV2Ugc2hvdWxkIHJlbmFtZSBnaWdhbnRpY19wYWdlX3N1cHBvcnRl ZCB0byBiZSBtb3JlIHNwZWNpZmljIHRvCj4+IHN1cHBvcnQgZm9yIHJ1bnRpbWVfYWxsb2MvZnJl ZSBvZiBnaWdhbnRpYyBwYWdlcwo+Pgo+PiAtYW5lZXNoCj4+Cj4gVGhhbmtzIGZvciBub3RpY2lu ZyBBbmVlc2guCj4gCj4gSSBjYW4ndCBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gYnJpbmdp bmcgYmFjayAKPiBnaWdhbnRpY19wYWdlX3N1cHBvcnRlZCBjaGVjaywKPiBzaW5jZSBpdCBpcyBt dXN0IGJlIGRvbmUgYXQgcnVudGltZSBpbiB5b3VyIGNhc2UuCj4gSSdtIG5vdCBzdXJlIG9mIG9u ZSB0aGluZyB0aG91Z2g6IHlvdSBzYXkgdGhhdCBmcmVlaW5nIGJvb3R0aW1lIGdpZ2FudGljIAo+ IHBhZ2VzCj4gaXMgbm90IG5lZWRlZCwgYnV0IGlzIGl0IGZvcmJpZGRlbiA/IEp1c3QgdG8ga25v dyB3aGVyZSB0aGUgY2hlY2sgYW5kIAo+IHdoYXQgaXRzCj4gbmV3IG5hbWUgc2hvdWxkIGJlLgo+ IElzIHNvbWV0aGluZyBsaWtlIHRoYXQgKG9uIHRvcCBvZiB0aGlzIHNlcmllcykgb2sgZm9yIHlv dSAoYW5kIGV2ZXJ5b25lIAo+IGVsc2UpIGJlZm9yZQo+IEkgc2VuZCBhIHY3Ogo+IAo+IGRpZmYg LS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L2h1Z2V0bGIuaCAKPiBi L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvaHVnZXRsYi5oCj4gaW5kZXggZDA0 YTBiYy4uZDEyMTU1OSAxMDA2NDQKPiAtLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9v azNzLzY0L2h1Z2V0bGIuaAo+ICsrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3Mv NjQvaHVnZXRsYi5oCj4gQEAgLTM1LDQgKzM1LDIwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGhzdGF0 ZV9nZXRfcHNpemUoc3RydWN0IGhzdGF0ZSAKPiAqaHN0YXRlKQo+ICDCoC8qIGh1Z2VwZCBlbnRy eSB2YWxpZCBiaXQgKi8KPiAgwqAjZGVmaW5lIEhVR0VQRF9WQUxfQklUU8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAoMHg4MDAwMDAwMDAwMDAwMDAwVUwpCj4gCj4gKyNpZmRlZiBDT05G SUdfQVJDSF9IQVNfR0lHQU5USUNfUEFHRQo+ICsjZGVmaW5lIF9fSEFWRV9BUkNIX0dJR0FOVElD X1BBR0VfU1VQUE9SVEVECj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3N1cHBv cnRlZCh2b2lkKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoCAvKgo+ICvCoMKgwqDCoMKgwqDCoCAqIFdl IHVzZWQgZ2lnYW50aWMgcGFnZSByZXNlcnZhdGlvbiB3aXRoIGh5cGVydmlzb3IgYXNzaXN0IGlu IAo+IHNvbWUgY2FzZS4KPiArwqDCoMKgwqDCoMKgwqAgKiBXZSBjYW5ub3QgdXNlIHJ1bnRpbWUg YWxsb2NhdGlvbiBvZiBnaWdhbnRpYyBwYWdlcyBpbiB0aG9zZSAKPiBwbGF0Zm9ybXMKPiArwqDC oMKgwqDCoMKgwqAgKiBUaGlzIGlzIGhhc2ggdHJhbnNsYXRpb24gbW9kZSBMUEFScy4KPiArwqDC oMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgIGlmIChmaXJtd2FyZV9oYXNfZmVhdHVyZShG V19GRUFUVVJFX0xQQVIpICYmICFyYWRpeF9lbmFibGVkKCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+ICsKPiArwqDCoMKgwqDCoMKgIHJldHVybiB0cnVl Owo+ICt9Cj4gKyNlbmRpZgo+ICsKPiAgwqAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9h c20tZ2VuZXJpYy9odWdldGxiLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaAo+IGlu ZGV4IDcxZDdiNzcuLjdkMTJlNzMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9o dWdldGxiLmgKPiArKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL2h1Z2V0bGIuaAo+IEBAIC0xMjYs NCArMTI2LDE4IEBAIHN0YXRpYyBpbmxpbmUgcHRlX3QgaHVnZV9wdGVwX2dldChwdGVfdCAqcHRl cCkKPiAgwqB9Cj4gIMKgI2VuZGlmCj4gCj4gKyNpZm5kZWYgX19IQVZFX0FSQ0hfR0lHQU5USUNf UEFHRV9TVVBQT1JURUQKPiArI2lmZGVmIENPTkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFCgoK VGhlIHBhdHRlcm4gaSBsaWtlIGlzCgojaWZuZGVmIGdpZ2FudGljX3BhZ2Vfc3VwcG9ydGVkCiNk ZWZpbmUgZ2lnYW50aWNfcGFnZV9zdXBwb3J0ZWQgZ2lnYW50aWNfcGFnZV9zdXBwb3J0ZWQKCnN0 YXRpYyBpbmxpbmUgYm9vbCBnaWdhbnRpY19wYWdlX3N1cHBvcnRlZCh2b2lkKQp7CiAgICAgICAg IHJldHVybiB0cnVlOwp9CgojZW5kaWYKCmluc3RlYWQgb2YgX0hBVkVfQVJDSF9HSUdBTlRJQ19Q QUdFX1NVUFBPUlRFRC4KCgo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZ2lnYW50aWNfcGFnZV9zdXBw b3J0ZWQodm9pZCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPiArfQo+ICsj ZWxzZQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZ2lnYW50aWNfcGFnZV9zdXBwb3J0ZWQodm9pZCkK PiArewo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZmFsc2U7Cj4gK30KPiArI2VuZGlmIC8qIENP TkZJR19BUkNIX0hBU19HSUdBTlRJQ19QQUdFICovCj4gKyNlbmRpZiAvKiBfX0hBVkVfQVJDSF9H SUdBTlRJQ19QQUdFX1NVUFBPUlRFRCAqLwo+ICsKPiAgwqAjZW5kaWYgLyogX0FTTV9HRU5FUklD X0hVR0VUTEJfSCAqLwo+IGRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMK PiBpbmRleCA5ZmM5NmVmLi5jZmJiYWZlIDEwMDY0NAo+IC0tLSBhL21tL2h1Z2V0bGIuYwo+ICsr KyBiL21tL2h1Z2V0bGIuYwo+IEBAIC0yNDI1LDYgKzI0MjUsMTEgQEAgc3RhdGljIHNzaXplX3Qg X19ucl9odWdlcGFnZXNfc3RvcmVfY29tbW9uKGJvb2wgCj4gb2JleV9tZW1wb2xpY3ksCj4gIMKg wqDCoMKgwqDCoMKgIGludCBlcnI7Cj4gIMKgwqDCoMKgwqDCoMKgIE5PREVNQVNLX0FMTE9DKG5v ZGVtYXNrX3QsIG5vZGVzX2FsbG93ZWQsIEdGUF9LRVJORUwgfCAKPiBfX0dGUF9OT1JFVFJZKTsK PiAKPiArwqDCoMKgwqDCoMKgIGlmIChoc3RhdGVfaXNfZ2lnYW50aWMoaCkgJiYgIWdpZ2FudGlj X3BhZ2Vfc3VwcG9ydGVkKCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIg PSAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+ICvC oMKgwqDCoMKgwqAgfQoKCnlvdSBzaG91bGQgcmVzdG9yZSBvdGhlciB1c2VycyBvZiBnaWdhbnRp Y19wYWdlX3N1cHBvcnRlZCgpIG5vdCBqdXN0IAp0aGlzLiBUaGF0IHdpbGwganVzdCBtYWtlIHlv dXIgZWFybGllciBwYXRjaCBhcyByZW1vdmluZyAKZ2lnYW50aWNfcGFnZV9zdXBwb3J0ZWQgZnJv bSBldmVyeSBhcmNoaXRlY3R1cmUgb3RoZXIgdGhhbiBwcGM2NCBhbmQgCmhhdmUgYSBnZW5lcmlj IHZlcnNpb24gYXMgYWJvdmUuCgoKPiArCj4gIMKgwqDCoMKgwqDCoMKgIGlmIChuaWQgPT0gTlVN QV9OT19OT0RFKSB7Cj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGdsb2JhbCBoc3RhdGUgYXR0cmlidXRlCj4g QEAgLTI0NDYsNiArMjQ1MSw3IEBAIHN0YXRpYyBzc2l6ZV90IF9fbnJfaHVnZXBhZ2VzX3N0b3Jl X2NvbW1vbihib29sIAo+IG9iZXlfbWVtcG9saWN5LAo+IAo+ICDCoMKgwqDCoMKgwqDCoCBlcnIg PSBzZXRfbWF4X2h1Z2VfcGFnZXMoaCwgY291bnQsIG5vZGVzX2FsbG93ZWQpOwo+IAo+ICtvdXQ6 Cj4gIMKgwqDCoMKgwqDCoMKgIGlmIChub2Rlc19hbGxvd2VkICE9ICZub2RlX3N0YXRlc1tOX01F TU9SWV0pCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOT0RFTUFTS19GUkVFKG5v ZGVzX2FsbG93ZWQpOwo+IAo+IAo+IAo+IAoKLWFuZWVzaC4KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==