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=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 DB454C1B0D8 for ; Mon, 14 Dec 2020 07:22:21 +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 8E55522597 for ; Mon, 14 Dec 2020 07:22:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E55522597 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.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: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:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=mzN2CmYyu4H1G+zCH6W0chMN6xLMj/Q5D1/qHS2cb3g=; b=wTiKnYcv0pU9CbJuamY0TaV/D ufkQWrFp8iXrFghZRV5Fa6f+YpIvvFYAPqqmO1bXUSWy8plZTkXNbtKYCxjQPMSKjKdEXWHyvKt+h 86nG/PssQMSfPox73nAlrYaF2oLUFzKWq5WfS/Ma7oChmlAUstSDAPeclizHxMFZXQsUE4E4xDHkL tMW86Wc6P4gmsPwB8NxqRgKwAggTsWvfSblP7BUnQWeQpWb+2j1F/NHkMGB91RkkK5KNEnFazwHLt q+fBXVwYUx+lReD0xC+kng/YFVWoTn60nyGNDAEX4weIJTToq2PLQ3sbdbTJbNEUOj/ZZXKCvPQm9 XPG+XEzuA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1koiAJ-0001xq-JJ; Mon, 14 Dec 2020 07:21:03 +0000 Received: from szxga03-in.huawei.com ([45.249.212.189]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1koiAF-0001x5-OG for linux-arm-kernel@lists.infradead.org; Mon, 14 Dec 2020 07:21:01 +0000 Received: from dggeme708-chm.china.huawei.com (unknown [172.30.72.54]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4CvXpX0ysjz54jT; Mon, 14 Dec 2020 15:20:04 +0800 (CST) Received: from [10.174.187.128] (10.174.187.128) by dggeme708-chm.china.huawei.com (10.1.199.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1913.5; Mon, 14 Dec 2020 15:20:49 +0800 Subject: Re: [RFC PATCH] KVM: arm64: Add prejudgement for relaxing permissions only case in stage2 translation fault handler To: Marc Zyngier References: <20201211080115.21460-1-wangyanan55@huawei.com> <20201211080115.21460-2-wangyanan55@huawei.com> <8d006755e5afce7e49b03993316c4fcc@kernel.org> From: "wangyanan (Y)" Message-ID: <8adf8bda-58da-bddd-0522-f750a2d030c2@huawei.com> Date: Mon, 14 Dec 2020 15:20:49 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <8d006755e5afce7e49b03993316c4fcc@kernel.org> Content-Language: en-US X-Originating-IP: [10.174.187.128] X-ClientProxiedBy: dggeme719-chm.china.huawei.com (10.1.199.115) To dggeme708-chm.china.huawei.com (10.1.199.104) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201214_022100_316661_E60BA22B X-CRM114-Status: GOOD ( 31.14 ) 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: , Cc: jiangkunkun@huawei.com, Gavin Shan , lushenming@huawei.com, Suzuki K Poulose , Catalin Marinas , zhukeqian1@huawei.com, Quentin Perret , wangjingyi11@huawei.com, linux-kernel@vger.kernel.org, yezengruan@huawei.com, James Morse , linux-arm-kernel@lists.infradead.org, yuzenghui@huawei.com, wanghaibin.wang@huawei.com, Will Deacon , Julien Thierry 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 Ck9uIDIwMjAvMTIvMTEgMTc6NDksIE1hcmMgWnluZ2llciB3cm90ZToKPiBIaSBZYW5hbiwKPgo+ IE9uIDIwMjAtMTItMTEgMDg6MDEsIFlhbmFuIFdhbmcgd3JvdGU6Cj4+IEluIGRpcnR5LWxvZ2dp bmcsIG9yIGRpcnR5LWxvZ2dpbmctc3RvcHBlZCB0aW1lLCBldmVuIG5vcm1hbCBydW5uaW5nCj4+ IHRpbWUgb2YgYSBndWVzdCBjb25maWdlZCB3aXRoIGh1Z2UgbWFwcGluZ3MgYW5kIG51bWJlcnMg b2YgdkNQVXMsCj4+IHRyYW5zbGF0aW9uIGZhdWx0cyBieSBkaWZmZXJlbnQgdkNQVXMgb24gdGhl IHNhbWUgR1BBIGNvdWxkIG9jY3VyCj4+IHN1Y2Nlc3NpdmVseSBhbG1vc3QgYXQgdGhlIHNhbWUg dGltZS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvciBpdC4KPj4KPj4gKDEpIElmIHRoZXJlIGFy ZSBzb21lIHZDUFVzIGFjY2Vzc2luZyB0aGUgc2FtZSBHUEEgYXQgdGhlIHNhbWUgdGltZQo+PiBh bmQgdGhlIGxlYWYgUFRFIGlzIG5vdCBzZXQgeWV0LCB0aGVuIHRoZXkgd2lsbCBhbGwgY2F1c2Ug dHJhbnNsYXRpb24KPj4gZmF1bHRzIGFuZCB0aGUgZmlyc3QgdkNQVSBob2xkaW5nIG1tdV9sb2Nr IHdpbGwgc2V0IHZhbGlkIGxlYWYgUFRFLAo+PiBhbmQgdGhlIG90aGVycyB3aWxsIGxhdGVyIGNo b29zZSB0byB1cGRhdGUgdGhlIGxlYWYgUFRFIG9yIG5vdC4KPj4KPj4gKDIpIFdoZW4gY2hhbmdp bmcgYSBsZWFmIGVudHJ5IG9yIGEgdGFibGUgZW50cnkgd2l0aCBicmVhay1iZWZvcmUtbWFrZSwK Pj4gaWYgdGhlcmUgYXJlIHNvbWUgdkNQVXMgYWNjZXNzaW5nIHRoZSBzYW1lIEdQQSBqdXN0IGNh dGNoIHRoZSBtb21lbnQKPj4gd2hlbiB0aGUgdGFyZ2V0IFBURSBpcyBzZXQgaW52YWxpZCBpbiBh IEJCTSBwcm9jZWR1cmUgY29pbmNpZGVudGFsbHksCj4+IHRoZXkgd2lsbCBhbGwgY2F1c2UgdHJh bnNsYXRpb24gZmF1bHRzIGFuZCB3aWxsIGxhdGVyIGNob29zZSB0byB1cGRhdGUKPj4gdGhlIGxl YWYgUFRFIG9yIG5vdC4KPj4KPj4gVGhlIHdvcnN0IGNhc2UgY2FuIGJlIGxpa2UgdGhpczogc29t ZSB2Q1BVcyBjYXVzZSB0cmFuc2xhdGlvbiBmYXVsdHMKPj4gb24gdGhlIHNhbWUgR1BBIHdpdGgg ZGlmZmVyZW50IHByb3RzLCB0aGV5IHdpbGwgZmlnaHQgZWFjaCBvdGhlciBieQo+PiBjaGFuZ2lu ZyBiYWNrIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgUFRFIHdpdGggYnJlYWstYmVmb3JlLW1h a2UuCj4+IEFuZCB0aGUgQkJNLWludmFsaWQgbW9tZW50IG1pZ2h0IHRyaWdnZXIgbW9yZSB1bm5l Y2Vzc2FyeSB0cmFuc2xhdGlvbgo+PiBmYXVsdHMuIEFzIGEgcmVzdWx0LCBzb21lIHVzZWxlc3Mg c21hbGwgbG9vcHMgd2lsbCBvY2N1ciwgd2hpY2ggY291bGQKPj4gbGVhZCB0byB2Q1BVIHN0dWNr Lgo+Pgo+PiBUbyBhdm9pZCB1bm5lY2Vzc2FyeSB1cGRhdGUgYW5kIHNtYWxsIGxvb3BzLCBhZGQg cHJlanVkZ2VtZW50IGluIHRoZQo+PiB0cmFuc2xhdGlvbiBmYXVsdCBoYW5kbGVyOiBTa2lwIHVw ZGF0aW5nIHRoZSB2YWxpZCBsZWFmIFBURSBpZiB3ZSBhcmUKPj4gdHJ5aW5nIHRvIHJlY3JlYXRl IGV4YWN0bHkgdGhlIHNhbWUgbWFwcGluZyBvciB0byByZWR1Y2UgYWNjZXNzCj4+IHBlcm1pc3Np b25zIG9ubHkoc3VjaCBhcyBSVy0tPlJPKS4gQW5kIHVwZGF0ZSB0aGUgdmFsaWQgbGVhZiBQVEUg d2l0aG91dAo+PiBicmVhay1iZWZvcmUtbWFrZSBpZiB3ZSBhcmUgdHJ5aW5nIHRvIGFkZCBtb3Jl IHBlcm1pc3Npb25zIG9ubHkuCj4KPiBJJ20gYSBiaXQgcGVycGxleGVkIHdpdGggdGhpczogd2h5 IGFyZSB5b3Ugc2tpcHBpbmcgdGhlIHVwZGF0ZSBpZiB0aGUKPiBwZXJtaXNzaW9ucyBuZWVkIHRv IGJlIHJlZHVjZWQ/IEV2ZW4gbW9yZSwgaG93IGNhbiB3ZSByZWR1Y2UgdGhlCj4gcGVybWlzc2lv bnMgZnJvbSBhIHZDUFUgZmF1bHQ/IEkgY2FuJ3QgcmVhbGx5IHRoaW5rIG9mIGEgc2NlbmFyaW8g d2hlcmUKPiB0aGF0IGhhcHBlbnMuCj4KPiBPciBhcmUgeW91IGRlc2NyaWJpbmcgYSBjYXNlIHdo ZXJlIHR3byB2Y3B1cyBmYXVsdCBzaW11bHRhbmVvdXNseSB3aXRoCj4gY29uZmxpY3RpbmcgcGVy bWlzc2lvbnM6Cj4KPiAtIEJvdGggdmNwdXMgZmF1bHQgb24gdHJhbnNsYXRpb24gZmF1bHQKPiAt IHZjcHUgQSB3YW50cyBXIGFjY2Vzcwo+IC0gdnBjdSBCIHdhbnRzIFIgYWNjZXNzCj4KPiBhbmQg J0EnIGdldHMgaW4gZmlyc3QsIHNldCB0aGUgcGVybWlzc2lvbnMgdG8gUlcgKGJlY2F1c2UgUiBp cwo+IGltcGxpY2l0bHkgYWRkZWQgdG8gVyksIGZvbGxvd2VkIGJ5ICdCJyB3aGljaCBkb3duZ3Jh ZGVzIGl0IHRvIFJPPwo+Cj4gSWYgdGhhdCdzIHdoYXQgeW91IGFyZSBkZXNjcmliaW5nLCB0aGVu IEkgYWdyZWUgd2UgY291bGQgZG8gYmV0dGVyLgpZZXMsIHRoaXMgaXMgZXhhY3RseSB3aGF0IEkg d2FudCB0byBkZXNjcmliZS4KPgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBZYW5hbiBXYW5nIDx3YW5n eWFuYW41NUBodWF3ZWkuY29tPgo+PiAtLS0KPj4gwqBhcmNoL2FybTY0L2t2bS9oeXAvcGd0YWJs ZS5jIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4+IMKgMSBmaWxl IGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9rdm0vaHlwL3BndGFibGUuYyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9w Z3RhYmxlLmMKPj4gaW5kZXggMjNhMDFkZmNiMjdhLi5mOGIzMjQ4Y2VmMWMgMTAwNjQ0Cj4+IC0t LSBhL2FyY2gvYXJtNjQva3ZtL2h5cC9wZ3RhYmxlLmMKPj4gKysrIGIvYXJjaC9hcm02NC9rdm0v aHlwL3BndGFibGUuYwo+PiBAQCAtNDUsNiArNDUsOCBAQAo+Pgo+PiDCoCNkZWZpbmUgS1ZNX1BU RV9MRUFGX0FUVFJfSElfUzJfWE7CoMKgwqAgQklUKDU0KQo+Pgo+PiArI2RlZmluZSBLVk1fUFRF X0xFQUZfQVRUUl9QRVJNU8KgwqDCoCAoR0VOTUFTSyg3LCA2KSB8IEJJVCg1NCkpCj4+ICsKPj4g wqBzdHJ1Y3Qga3ZtX3BndGFibGVfd2Fsa19kYXRhIHsKPj4gwqDCoMKgwqAgc3RydWN0IGt2bV9w Z3RhYmxlwqDCoMKgwqDCoMKgwqAgKnBndDsKPj4gwqDCoMKgwqAgc3RydWN0IGt2bV9wZ3RhYmxl X3dhbGtlcsKgwqDCoCAqd2Fsa2VyOwo+PiBAQCAtMTcwLDEwICsxNzIsOSBAQCBzdGF0aWMgdm9p ZCBrdm1fc2V0X3RhYmxlX3B0ZShrdm1fcHRlX3QgKnB0ZXAsCj4+IGt2bV9wdGVfdCAqY2hpbGRw KQo+PiDCoMKgwqDCoCBzbXBfc3RvcmVfcmVsZWFzZShwdGVwLCBwdGUpOwo+PiDCoH0KPj4KPj4g LXN0YXRpYyBib29sIGt2bV9zZXRfdmFsaWRfbGVhZl9wdGUoa3ZtX3B0ZV90ICpwdGVwLCB1NjQg cGEsIAo+PiBrdm1fcHRlX3QgYXR0ciwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgbGV2ZWwpCj4+ICtzdGF0aWMga3ZtX3B0ZV90IGt2bV9pbml0X3ZhbGlkX2xl YWZfcHRlKHU2NCBwYSwga3ZtX3B0ZV90IGF0dHIsIHUzMiAKPj4gbGV2ZWwpCj4+IMKgewo+PiAt wqDCoMKgIGt2bV9wdGVfdCBvbGQgPSAqcHRlcCwgcHRlID0ga3ZtX3BoeXNfdG9fcHRlKHBhKTsK Pj4gK8KgwqDCoCBrdm1fcHRlX3QgcHRlID0ga3ZtX3BoeXNfdG9fcHRlKHBhKTsKPj4gwqDCoMKg wqAgdTY0IHR5cGUgPSAobGV2ZWwgPT0gS1ZNX1BHVEFCTEVfTUFYX0xFVkVMUyAtIDEpID8gCj4+ IEtWTV9QVEVfVFlQRV9QQUdFIDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgS1ZNX1BURV9UWVBFX0JMT0NLOwo+Pgo+PiBA QCAtMTgxLDEyICsxODIsNyBAQCBzdGF0aWMgYm9vbCBrdm1fc2V0X3ZhbGlkX2xlYWZfcHRlKGt2 bV9wdGVfdAo+PiAqcHRlcCwgdTY0IHBhLCBrdm1fcHRlX3QgYXR0ciwKPj4gwqDCoMKgwqAgcHRl IHw9IEZJRUxEX1BSRVAoS1ZNX1BURV9UWVBFLCB0eXBlKTsKPj4gwqDCoMKgwqAgcHRlIHw9IEtW TV9QVEVfVkFMSUQ7Cj4+Cj4+IC3CoMKgwqAgLyogVG9sZXJhdGUgS1ZNIHJlY3JlYXRpbmcgdGhl IGV4YWN0IHNhbWUgbWFwcGluZy4gKi8KPj4gLcKgwqDCoCBpZiAoa3ZtX3B0ZV92YWxpZChvbGQp KQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG9sZCA9PSBwdGU7Cj4+IC0KPj4gLcKgwqDCoCBz bXBfc3RvcmVfcmVsZWFzZShwdGVwLCBwdGUpOwo+PiAtwqDCoMKgIHJldHVybiB0cnVlOwo+PiAr wqDCoMKgIHJldHVybiBwdGU7Cj4+IMKgfQo+Pgo+PiDCoHN0YXRpYyBpbnQga3ZtX3BndGFibGVf dmlzaXRvcl9jYihzdHJ1Y3Qga3ZtX3BndGFibGVfd2Fsa19kYXRhIAo+PiAqZGF0YSwgdTY0IGFk ZHIsCj4+IEBAIC0zNDEsMTIgKzMzNywxNyBAQCBzdGF0aWMgaW50IGh5cF9tYXBfc2V0X3Byb3Rf YXR0cihlbnVtCj4+IGt2bV9wZ3RhYmxlX3Byb3QgcHJvdCwKPj4gwqBzdGF0aWMgYm9vbCBoeXBf bWFwX3dhbGtlcl90cnlfbGVhZih1NjQgYWRkciwgdTY0IGVuZCwgdTMyIGxldmVsLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt2bV9wdGVfdCAqcHRlcCwgc3Ry dWN0IGh5cF9tYXBfZGF0YSAqZGF0YSkKPj4gwqB7Cj4+ICvCoMKgwqAga3ZtX3B0ZV90IG5ldywg b2xkID0gKnB0ZXA7Cj4+IMKgwqDCoMKgIHU2NCBncmFudWxlID0ga3ZtX2dyYW51bGVfc2l6ZShs ZXZlbCksIHBoeXMgPSBkYXRhLT5waHlzOwo+Pgo+PiDCoMKgwqDCoCBpZiAoIWt2bV9ibG9ja19t YXBwaW5nX3N1cHBvcnRlZChhZGRyLCBlbmQsIHBoeXMsIGxldmVsKSkKPj4gwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gZmFsc2U7Cj4+Cj4+IC3CoMKgwqAgV0FSTl9PTigha3ZtX3NldF92YWxpZF9s ZWFmX3B0ZShwdGVwLCBwaHlzLCBkYXRhLT5hdHRyLCBsZXZlbCkpOwo+PiArwqDCoMKgIC8qIFRv bGVyYXRlIEtWTSByZWNyZWF0aW5nIHRoZSBleGFjdCBzYW1lIG1hcHBpbmcuICovCj4+ICvCoMKg wqAgbmV3ID0ga3ZtX2luaXRfdmFsaWRfbGVhZl9wdGUocGh5cywgZGF0YS0+YXR0ciwgbGV2ZWwp Owo+PiArwqDCoMKgIGlmIChvbGQgIT0gbmV3ICYmICFXQVJOX09OKGt2bV9wdGVfdmFsaWQob2xk KSkpCj4+ICvCoMKgwqDCoMKgwqDCoCBzbXBfc3RvcmVfcmVsZWFzZShwdGVwLCBuZXcpOwo+PiAr Cj4+IMKgwqDCoMKgIGRhdGEtPnBoeXMgKz0gZ3JhbnVsZTsKPj4gwqDCoMKgwqAgcmV0dXJuIHRy dWU7Cj4+IMKgfQo+PiBAQCAtNDYxLDI1ICs0NjIsNTYgQEAgc3RhdGljIGludCBzdGFnZTJfbWFw X3NldF9wcm90X2F0dHIoZW51bQo+PiBrdm1fcGd0YWJsZV9wcm90IHByb3QsCj4+IMKgwqDCoMKg IHJldHVybiAwOwo+PiDCoH0KPj4KPj4gK3N0YXRpYyBib29sIHN0YWdlMl9zZXRfdmFsaWRfbGVh Zl9wdGVfcHJlKHU2NCBhZGRyLCB1MzIgbGV2ZWwsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAga3ZtX3B0ZV90ICpwdGVwLCBrdm1fcHRlX3QgbmV3LAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBzdGFnZTJf bWFwX2RhdGEgKmRhdGEpCj4+ICt7Cj4+ICvCoMKgwqAga3ZtX3B0ZV90IG9sZCA9ICpwdGVwLCBv bGRfYXR0ciwgbmV3X2F0dHI7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoKG9sZCBeIG5ldykgJiAofktW TV9QVEVfTEVBRl9BVFRSX1BFUk1TKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsK Pj4gKwo+PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAqIFNraXAgdXBkYXRpbmcgaWYgd2UgYXJl IHRyeWluZyB0byByZWNyZWF0ZSBleGFjdGx5IHRoZSBzYW1lIAo+PiBtYXBwaW5nCj4+ICvCoMKg wqDCoCAqIG9yIHRvIHJlZHVjZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9ubHkuIEFuZCB1cGRh dGUgdGhlIAo+PiB2YWxpZCBsZWFmCj4+ICvCoMKgwqDCoCAqIFBURSB3aXRob3V0IGJyZWFrLWJl Zm9yZS1tYWtlIGlmIHdlIGFyZSB0cnlpbmcgdG8gYWRkIG1vcmUgCj4+IGFjY2Vzcwo+PiArwqDC oMKgwqAgKiBwZXJtaXNzaW9ucyBvbmx5Lgo+PiArwqDCoMKgwqAgKi8KPj4gK8KgwqDCoCBvbGRf YXR0ciA9IChvbGQgJiBLVk1fUFRFX0xFQUZfQVRUUl9QRVJNUykgXiAKPj4gS1ZNX1BURV9MRUFG X0FUVFJfSElfUzJfWE47Cj4+ICvCoMKgwqAgbmV3X2F0dHIgPSAobmV3ICYgS1ZNX1BURV9MRUFG X0FUVFJfUEVSTVMpIF4gCj4+IEtWTV9QVEVfTEVBRl9BVFRSX0hJX1MyX1hOOwo+PiArwqDCoMKg IGlmIChuZXdfYXR0ciA8PSBvbGRfYXR0cikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVl Owo+PiArCj4+ICvCoMKgwqAgV1JJVEVfT05DRSgqcHRlcCwgbmV3KTsKPj4gK8KgwqDCoCBrdm1f Y2FsbF9oeXAoX19rdm1fdGxiX2ZsdXNoX3ZtaWRfaXBhLCBkYXRhLT5tbXUsIGFkZHIsIGxldmVs KTsKPgo+IEkgdGhpbmsgd2hhdCBib3RoZXJzIG1lIHRoZSBtb3N0IGhlcmUgaXMgdGhhdCB3ZSBh cmUgdHVybmluZyBhIG1hcHBpbmcgCj4gaW50bwo+IGEgcGVybWlzc2lvbiB1cGRhdGUsIHdoaWNo IG1ha2VzIHRoZSBjb2RlIHJlYWxseSBoYXJkIHRvIHJlYWQsIGFuZCBtaXhlcwo+IHR3byB0aGlu Z3MgdGhhdCB3ZXJlIHNvIGZhciBzZXBhcmF0ZS4KPgo+IEkgd29uZGVyIHdoZXRoZXIgd2Ugc2hv dWxkIGluc3RlYWQgYWJvcnQgdGhlIHVwZGF0ZSBhbmQgc2ltcGx5IHRha2UgCj4gdGhlIGZhdWx0 Cj4gYWdhaW4sIGlmIHdlIGV2ZXIgbmVlZCB0byBkbyBpdC4KPgo+IFRoYW5rcywKPgo+IMKgwqDC oMKgwqDCoMKgIE0uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1hcm0ta2VybmVsCg==