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=-11.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 6D951C433E7 for ; Mon, 12 Oct 2020 04:09:55 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 EEF7820731 for ; Mon, 12 Oct 2020 04:09:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fdYFCa88"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="A8BKSU6q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EEF7820731 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:Reply-To:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ao0w5NQcCzSnUvbQ6v4lvi/qLrwrMUqXmeOlMbkVy8c=; b=fdYFCa88Xt2Mqz HZxfSFGzEuU5xfKPYLQUDCbrsDNBVG3WgbHsiLwrtGbP42xaT9UkeR365iqWgr1srXfKEq3GW0Roe ubOvTt91o9uCQrB+J+2mF316jPTb3YEJHk0PuGC05WhM0HDTjN9oB5sq9hBFTiBe/sqyV72UN9KAa SzBbJXzg77Qn9iPJPKFcw4Ay2kK3dXKol1HvAY2WJcAp3Sj8dUNJmNLW2jKSTsTyAHfLWdFwDMy5O NX6IMnIZ41sXh9IaZPljnbWAul4wFkl5EBYCUv6PnAqwKArJzkcOT8nEajAZvkJElOKV9z4nFkqOZ LPTMHOnCD23L6pTmXPEQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kRp86-0002n2-C9; Mon, 12 Oct 2020 04:08:10 +0000 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kRp82-0002mf-Vs for linux-arm-kernel@lists.infradead.org; Mon, 12 Oct 2020 04:08:08 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602475686; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OPFNRicNHEm5+9nR6GRgjdYGrulZesq1Xk7YBtFZUvk=; b=A8BKSU6q2lO38YxyJSNSSQsj/iJIttl+OMHHStyRnUbBvbRYJyO7bhonOV8LvQ4rzcMVK3 lahhAwOTKHcrGxVZ57+tjWW9kQUgyd3ZcEAxQGFcapp0MWGKe+Juc9UC5IwtYxC/lDqhrv 2HbMqh5OOyvZLYzCWBQCcaQdV2eRRF0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-445-Tli8Zf_CNjaMJNrtgGQRbA-1; Mon, 12 Oct 2020 00:07:58 -0400 X-MC-Unique: Tli8Zf_CNjaMJNrtgGQRbA-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 12DD780EF8B; Mon, 12 Oct 2020 04:07:57 +0000 (UTC) Received: from [10.64.54.32] (vpn2-54-32.bne.redhat.com [10.64.54.32]) by smtp.corp.redhat.com (Postfix) with ESMTPS id F094B19D61; Mon, 12 Oct 2020 04:07:53 +0000 (UTC) Subject: Re: [PATCH V4 3/3] arm64/mm/hotplug: Ensure early memory sections are all online To: Anshuman Khandual , linux-arm-kernel@lists.infradead.org References: <1601387687-6077-1-git-send-email-anshuman.khandual@arm.com> <1601387687-6077-4-git-send-email-anshuman.khandual@arm.com> <471fed64-0f61-9c16-3943-2bb8f77ee810@redhat.com> <8489f045-e94c-a3cc-3fc3-a7d92d19bca6@arm.com> From: Gavin Shan Message-ID: Date: Mon, 12 Oct 2020 15:07:51 +1100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 MIME-Version: 1.0 In-Reply-To: <8489f045-e94c-a3cc-3fc3-a7d92d19bca6@arm.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201012_000807_350952_C3F19E53 X-CRM114-Status: GOOD ( 36.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Gavin Shan Cc: Mark Rutland , Steve Capper , catalin.marinas@arm.com, linux-kernel@vger.kernel.org, Mark Brown , Marc Zyngier , will@kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQW5zaHVtYW4sCgpPbiAxMC82LzIwIDI6MTEgUE0sIEFuc2h1bWFuIEtoYW5kdWFsIHdyb3Rl Ogo+IE9uIDEwLzAxLzIwMjAgMDY6MjMgQU0sIEdhdmluIFNoYW4gd3JvdGU6Cj4+IE9uIDkvMjkv MjAgMTE6NTQgUE0sIEFuc2h1bWFuIEtoYW5kdWFsIHdyb3RlOgo+Pj4gVGhpcyBhZGRzIGEgdmFs aWRhdGlvbiBmdW5jdGlvbiB0aGF0IHNjYW5zIHRoZSBlbnRpcmUgYm9vdCBtZW1vcnkgYW5kIG1h a2VzCj4+PiBzdXJlIHRoYXQgYWxsIGVhcmx5IG1lbW9yeSBzZWN0aW9ucyBhcmUgb25saW5lLiBU aGlzIGNoZWNrIGlzIGVzc2VudGlhbCBmb3IKPj4+IHRoZSBtZW1vcnkgbm90aWZpZXIgdG8gd29y ayBwcm9wZXJseSwgYXMgaXQgY2Fubm90IHByZXZlbnQgYW55IGJvb3QgbWVtb3J5Cj4+PiBmcm9t IG9mZmxpbmluZywgaWYgYWxsIHNlY3Rpb25zIGFyZSBub3Qgb25saW5lIHRvIGJlZ2luIHdpdGgu IFRoZSBub3RpZmllcgo+Pj4gcmVnaXN0cmF0aW9uIGlzIHNraXBwZWQsIGlmIHRoaXMgdmFsaWRh dGlvbiBkb2VzIG5vdCBnbyB0aHJvdWdoLiBBbHRob3VnaAo+Pj4gdGhlIGJvb3Qgc2VjdGlvbiBz Y2FubmluZyBpcyBzZWxlY3RpdmVseSBlbmFibGVkIHdpdGggREVCVUdfVk0uCj4+Pgo+Pj4gQ2M6 IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4+PiBDYzogV2lsbCBE ZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KPj4+IENjOiBNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFu ZEBhcm0uY29tPgo+Pj4gQ2M6IE1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+Cj4+PiBDYzog U3RldmUgQ2FwcGVyIDxzdGV2ZS5jYXBwZXJAYXJtLmNvbT4KPj4+IENjOiBNYXJrIEJyb3duIDxi cm9vbmllQGtlcm5lbC5vcmc+Cj4+PiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCj4+PiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwo+Pj4gU2lnbmVkLW9m Zi1ieTogQW5zaHVtYW4gS2hhbmR1YWwgPGFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20+Cj4+PiAt LS0KPj4+ICDCoCBhcmNoL2FybTY0L21tL21tdS5jIHwgNTkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgwqAgMSBmaWxlIGNoYW5nZWQsIDU5IGluc2Vy dGlvbnMoKykKPj4KPj4gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4g VGhlIGNvcmUgYWxyZWFkeSBlbnN1cmUgdGhlCj4+IGNvcnJlc3BvbmRpbmcgc2VjdGlvbiBpcyBv bmxpbmUgd2hlbiB0cnlpbmcgdG8gb2ZmbGluZSBpdC4gSXQncyBndXJhbnRlZWQKPj4gdGhhdCBz ZWN0aW9uIGlzIG9ubGluZSB3aGVuIHRoZSBub3RpZmllciBpcyB0cmlnZ2VyZWQuIEknbSBub3Qg c3VyZSBpZgo+PiB0aGVyZSBpcyBhbnl0aGluZyBJIG1pc3NlZD8KPiAKPiBDdXJyZW50IG1lbW9y eSBub3RpZmllciBibG9ja3MgYW55IGJvb3QgbWVtb3J5IGhvdCByZW1vdmFsIGF0dGVtcHQgdmlh Cj4gYmxvY2tpbmcgaXRzIG9mZmxpbmluZyBzdGVwIGl0c2VsZi4gU28gaWYgc29tZSBzZWN0aW9u cyBpbiBib290IG1lbW9yeQo+IGFyZSBub3Qgb25saW5lIChiZWNhdXNlIG9mIGEgYnVnIG9yIGNo YW5nZSBpbiBpbml0IHNlcXVlbmNlKSBieSB0aGUKPiB0aW1lIG1lbW9yeSBibG9jayBkZXZpY2Ug Y2FuIGJlIHJlbW92ZWQsIHRoZSBub3RpZmllciBsb3NlcyB0aGUgYWJpbGl0eQo+IHRvIHByZXZl bnQgaXRzIHJlbW92YWwuIFRoaXMgdmFsaWRhdGlvbiBoZXJlLCBlbnN1cmVzIHRoYXQgZW50aXJl IGJvb3QKPiBtZW1vcnkgaXMgaW4gb25saW5lIHN0YXRlLCBvdGhlcndpc2UgY2FsbCBvdXQgc2Vj dGlvbnMgdGhhdCBhcmUgbm90LAo+IHdpdGggYW4gd2FybmluZyB0aGF0IHRob3NlIGJvb3QgbWVt b3J5IGNhbiBiZSByZW1vdmVkLgo+IAoKV2VsbC4gSSB0aGluayBpdCBzaG91bGQgYmUgdmVyeSBy YXJlLiBJIGd1ZXNzIHlvdSBkb24ndCBvYnNlcnZlIHRoZQplcnJvcm5vdXMgY2FzZSBzbyBmYXI/ IEhvd2V2ZXIsIEkgdGhpbmsgaXQncyBmaW5lIHRvIGFkZCB0aGUgY2hlY2sKc2luY2UgaXQncyBv bmx5IGVuYWJsZWQgd2l0aCBDT05GSUdfREVCVUdfVk0uCgo+PiAgIAo+Pgo+Pj4gZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvbW0vbW11LmMgYi9hcmNoL2FybTY0L21tL21tdS5jCj4+PiBpbmRleCA5 MGEzMGY1ZWJmYzAuLmI2N2E2NTdlYTFhZCAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvYXJtNjQvbW0v bW11LmMKPj4+ICsrKyBiL2FyY2gvYXJtNjQvbW0vbW11LmMKPj4+IEBAIC0xNTIyLDYgKzE1MjIs NjIgQEAgc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBwcmV2ZW50X2Jvb3RtZW1fcmVtb3Zl X25iID0gewo+Pj4gIMKgwqDCoMKgwqAgLm5vdGlmaWVyX2NhbGwgPSBwcmV2ZW50X2Jvb3RtZW1f cmVtb3ZlX25vdGlmaWVyLAo+Pj4gIMKgIH07Cj4+PiAgwqAgKy8qCj4+PiArICogVGhpcyBlbnN1 cmVzIHRoYXQgYm9vdCBtZW1vcnkgc2VjdGlvbnMgb24gdGhlIHBsYWx0Zm9ybSBhcmUgb25saW5l Cj4gCj4gV2lsbCBmaXguCj4gCj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXl5eXl5eXl5eCj4+PiArICogZHVyaW5nIGVhcmx5IGJvb3QuIFRoZXkgY291 bGQgbm90IGJlIHByZXZlbnRlZCBmcm9tIGJlaW5nIG9mZmxpbmVkCj4+PiArICogaWYgZm9yIHNv bWUgcmVhc29uIHRoZXkgYXJlIG5vdCBicm91Z2h0IG9ubGluZSB0byBiZWdpbiB3aXRoLiBUaGlz Cj4+PiArICogaGVscCB2YWxpZGF0ZSB0aGUgYmFzaWMgYXNzdW1wdGlvbiBvbiB3aGljaCB0aGUg YWJvdmUgbWVtb3J5IGV2ZW50Cj4+PiArICogbm90aWZpZXIgd29ya3MgdG8gcHJldmVudCBib290 IG1lbW9yeSBvZmZsaW5pbmcgYW5kIGl0J3MgcG9zc2libGUKPj4+ICsgKiByZW1vdmFsLgo+Pj4g KyAqLwo+Pj4gK3N0YXRpYyBib29sIHZhbGlkYXRlX2Jvb3RtZW1fb25saW5lKHZvaWQpCj4+PiAr ewo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbWVtYmxvY2tfcmVnaW9uICptYmxrOwo+Pj4gK8KgwqDCoCBz dHJ1Y3QgbWVtX3NlY3Rpb24gKm1zOwo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIHBmbiwgZW5k X3Bmbiwgc3RhcnQsIGVuZDsKPj4+ICvCoMKgwqAgYm9vbCBhbGxfb25saW5lID0gdHJ1ZTsKPj4+ ICsKPj4+ICvCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoCAqIFNjYW5uaW5nIGFjcm9zcyBhbGwgbWVt YmxvY2sgbWlnaHQgYmUgZXhwZW5zaXZlCj4+PiArwqDCoMKgwqAgKiBvbiBzb21lIGJpZyBtZW1v cnkgc3lzdGVtcy4gSGVuY2UgZW5hYmxlIHRoaXMKPj4+ICvCoMKgwqDCoCAqIHZhbGlkYXRpb24g b25seSB3aXRoIERFQlVHX1ZNLgo+Pj4gK8KgwqDCoMKgICovCj4+PiArwqDCoMKgIGlmICghSVNf RU5BQkxFRChDT05GSUdfREVCVUdfVk0pKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBhbGxf b25saW5lOwo+Pj4gKwo+Pj4gK8KgwqDCoCBmb3JfZWFjaF9tZW1ibG9jayhtZW1vcnksIG1ibGsp IHsKPj4+ICvCoMKgwqDCoMKgwqDCoCBwZm4gPSBQSFlTX1BGTihtYmxrLT5iYXNlKTsKPj4+ICvC oMKgwqDCoMKgwqDCoCBlbmRfcGZuID0gUEhZU19QRk4obWJsay0+YmFzZSArIG1ibGstPnNpemUp Owo+Pj4gKwo+Pgo+PiBJdCdzIG5vdCBhIGdvb2QgaWRlYSB0byBhY2Nlc3MgQG1ibGstPntiYXNl LCBzaXplfS4gVGhlcmUgYXJlIHR3bwo+PiBhY2Nlc3NvcnM6IG1lbWJsb2NrX3JlZ2lvbl9tZW1v cnlfe2Jhc2UsIGVuZH1fcGZuKCkuCj4gCj4gU3VyZSwgd2lsbCByZXBsYWNlLgo+IAo+Pgo+Pj4g K8KgwqDCoMKgwqDCoMKgIGZvciAoOyBwZm4gPCBlbmRfcGZuOyBwZm4gKz0gUEFHRVNfUEVSX1NF Q1RJT04pIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zID0gX19wZm5fdG9fc2VjdGlv bihwZm4pOwo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBBbGwgbWVtb3J5IHJhbmdlcyBpbiB0aGUgc3lzdGVtIGF0IHRo aXMgcG9pbnQKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzaG91bGQgaGF2ZSBiZWVu IG1hcmtlZCBlYXJseSBzZWN0aW9ucy4KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFdBUk5fT04oIWVhcmx5X3NlY3Rpb24obXMpKTsK Pj4+ICsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogTWVtb3J5IG5vdGlmaWVyIG1lY2hhbmlzbSBoZXJlIHRvIHByZXZlbnQgYm9v dAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG1lbW9yeSBvZmZsaW5pbmcgZGVwZW5k cyBvbiB0aGUgZmFjdCB0aGF0IGVhY2gKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBl YXJseSBzZWN0aW9uIG1lbW9yeSBvbiB0aGUgc3lzdGVtIGlzIGludGlhbGx5Cj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICogb25saW5lLiBPdGhlcndpc2UgYSBnaXZlbiBtZW1vcnkgc2Vj dGlvbiB3aGljaAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGlzIGFscmVhZHkgb2Zm bGluZSB3aWxsIGJlIG92ZXJsb29rZWQgYW5kIGNhbgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIGJlIHJlbW92ZWQgY29tcGxldGVseS4gQ2FsbCBvdXQgc3VjaCBzZWN0aW9ucy4KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4KPj4gcy9pbnRpYWxseS9pbml0aWFsbHkK PiAKPiBXaWxsIGNoYW5nZS4KPiAKPj4KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgh b25saW5lX3NlY3Rpb24obXMpKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0YXJ0ID0gUEZOX1BIWVMocGZuKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZW5kID0gc3RhcnQgKyAoMVVMIDw8IFBBX1NFQ1RJT05fU0hJRlQpOwo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIk1lbW9yeSByYW5nZSBbJWx4ICVseF0gaXMg b2ZmbGluZVxuIiwgc3RhcnQsIGVuZCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHByX2VycigiTWVtb3J5IHJhbmdlIFslbHggJWx4XSBjYW4gYmUgcmVtb3ZlZFxuIiwgc3Rh cnQsIGVuZCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFsbF9vbmxpbmUg PSBmYWxzZTsKPj4KPj4gVGhlc2UgdHdvIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBjb21iaW5lZDoK Pj4KPj4gIMKgwqDCoCBwcl9lcnIoIk1lbW9yeSByYW5nZSBbJWx4ICVseF0gbm90IG9ubGluZSwg Y2FuJ3QgYmUgb2ZmbGluZWRcbiIsCj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdGFydCwgZW5k KTsKPiAKPiBXaWxsIGNoYW5nZSBidXQgaXQgaXMgYWN0dWFsbHkgcy9jYW4ndCBiZSBvZmZsaW5l ZC9jYW4gYmUgcmVtb3ZlZC8gaW5zdGVhZC4KPiAKPj4KPj4gSSB0aGluayB5b3UgbmVlZCB0byBy ZXR1cm4gQGFsbF9vbmxpbmUgaW1tZWRpYXRlbHksIHdpdGhvdXQKPj4gY2hlY2tpbmcgaWYgdGhl IHN1YnNlcXVlbnQgc2VjdGlvbnMgYXJlIG9ubGluZSBvciBub3Q/IDopCj4gCj4gVGhpbmtpbmcg YWJvdXQgdGhpcyBhZ2Fpbi4gSXQgbWlnaHQgYmUgYmV0dGVyIGlmIHRoZSBub3RpZmllciByZWdp c3RyYXRpb24KPiBkb2VzIG5vdCBkZXBlbmQgb24gcmV0dXJuIHZhbHVlIGZyb20gdmFsaWRhdGVf Ym9vdG1lbV9vbmxpbmUoKS4gSW5zdGVhZCBpdAo+IHNob3VsZCBwcm9jZWVkIGVpdGhlciB3YXkg YnV0IGFmdGVyIGNhbGxpbmcgb3V0IGFsbCBib290IG1lbW9yeSBzZWN0aW9ucwo+IHRoYXQgYXJl IG5vdCBvbmxpbmUuIEluIHRoYXQgY2FzZSBub3RpZmllciB3aWxsIGF0bGVhc3QgcHJldmVudCBy ZW1vdmFsIG9mCj4gc29tZSBwYXJ0cyBvZiBib290IG1lbW9yeSB3aGljaCBhcmUgb25saW5lLgo+ IAoKWWVzLCBhZ3JlZWQuIEhvd2V2ZXIsIHRoZSBtb3N0IGltcG9ydGFudCBwYXJ0IGlzIHRvIHBy aW50IHRoZSBlcnJvcm5vdXMKbWVzc2FnZXMgaW50cm9kdWNlZCBpbiB2YWxpZGF0ZV9ib290bWVt X29ubGluZSgpLgoKQ2hlZXJzLApHYXZpbgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==