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=-17.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 453D1C4338F for ; Tue, 24 Aug 2021 18:49:26 +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 045F861176 for ; Tue, 24 Aug 2021 18:49:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 045F861176 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; 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:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ry29h00iw/+wQ/1431eTBXqSpaJ3h8VgFvU7E2oYz84=; b=NO9PoFlQdAQEQLj5K2nQ5tDreO E5UwaKxEHQDf6IRPQdN6tpEaAHRhwFD7v5qotxuxLt846q+aWfuSDndlnbhCp1m8Yxto7/9wSTB06 VBh44wR/E2+JFKcGjk1LS6lqlZXUTrPnVF5ger6SYTuQ3iKSah+30xEidDdVbtioUMqvnUVu8JbsA 4erUNQ7v7FWcnHb8W86z+XxUmaDb3h3knvftWKVYhlQ3dISdA5QR4gHVX3rlqvTURfHyExr5WB3MN hKQchTHVzu+DyI0E4Uc/9lk+rowZwmmBmq6b+qXcZQFycH9KWVB1rLXgdnblWsJsW38rL2FUJjxkf O+aiRinQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIbRs-004Oy1-7l; Tue, 24 Aug 2021 18:47:00 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIbRn-004OxG-MA for linux-arm-kernel@lists.infradead.org; Tue, 24 Aug 2021 18:46:57 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9B19FD6E; Tue, 24 Aug 2021 11:46:50 -0700 (PDT) Received: from [10.57.15.112] (unknown [10.57.15.112]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 33FD53F766; Tue, 24 Aug 2021 11:46:49 -0700 (PDT) Subject: Re: [BUG 5.14] arm64/mm: dma memory mapping fails (in some cases) To: Mike Rapoport , Catalin Marinas Cc: Alex Bee , Will Deacon , Andrew Morton , Anshuman Khandual , Linux Kernel Mailing List , linux-mm@kvack.org, Linux ARM References: <20210824173741.GC623@arm.com> From: Robin Murphy Message-ID: <0908ce39-7e30-91fa-68ef-11620f9596ae@arm.com> Date: Tue, 24 Aug 2021 19:46:42 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210824_114655_867525_A4F9C932 X-CRM114-Status: GOOD ( 42.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 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+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAyMS0wOC0yNCAxOToyOCwgTWlrZSBSYXBvcG9ydCB3cm90ZToKPiBPbiBUdWUsIEF1ZyAy NCwgMjAyMSBhdCAwNjozNzo0MVBNICswMTAwLCBDYXRhbGluIE1hcmluYXMgd3JvdGU6Cj4+IEhp IEFsZXgsCj4+Cj4+IFRoYW5rcyBmb3IgdGhlIHJlcG9ydC4KPj4KPj4gT24gVHVlLCBBdWcgMjQs IDIwMjEgYXQgMDM6NDA6NDdQTSArMDIwMCwgQWxleCBCZWUgd3JvdGU6Cj4+PiBpdCBzZWVtcyB0 aGVyZSBpcyBhIHJlZ3Jlc3Npb24gaW4gYXJtNjQgbWVtb3J5IG1hcHBpbmcgaW4gNS4xNCwgc2lu Y2UgaXQKPj4+IGZhaWxzIG9uIFJvY2tjaGlwIFJLMzMyOCB3aGVuIHRoZSBwbDMzMCBkbWFjIHRy aWVzIHRvIG1hcCB3aXRoOgo+Pj4KPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjE5MDldIC0t LS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/C vSA4LjkyMTk0MF0gV0FSTklORzogQ1BVOiAyIFBJRDogMzczIGF0IGtlcm5lbC9kbWEvbWFwcGlu Zy5jOjIzNSBkbWFfbWFwX3Jlc291cmNlKzB4NjgvMHhjMAo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/C vSA4LjkyMTk3M10gTW9kdWxlcyBsaW5rZWQgaW46IHNwaV9yb2NrY2hpcCgrKSBmdXNlCj4+PiBb w6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIxOTk2XSBDUFU6IDIgUElEOiAzNzMgQ29tbTogc3lzdGVt ZC11ZGV2ZCBOb3QgdGFpbnRlZCA1LjE0LjAtcmM3ICMxCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9 IDguOTIyMDA0XSBIYXJkd2FyZSBuYW1lOiBQaW5lNjQgUm9jazY0IChEVCkKPj4+IFvDr8K/wr3D r8K/wr3Dr8K/wr0gOC45MjIwMTFdIHBzdGF0ZTogODAwMDAwMDUgKE56Y3YgZGFpZiAtUEFOIC1V QU8gLVRDTyBCVFlQRT0tLSkKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIwMThdIHBjIDog ZG1hX21hcF9yZXNvdXJjZSsweDY4LzB4YzAKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIw MjZdIGxyIDogcGwzMzBfcHJlcF9zbGF2ZV9maWZvKzB4NzgvMHhkMAo+Pj4gW8Ovwr/CvcOvwr/C vcOvwr/CvSA4LjkyMjA0MF0gc3AgOiBmZmZmODAwMDEyMTAyYWUwCj4+PiBbw6/Cv8K9w6/Cv8K9 w6/Cv8K9IDguOTIyMDQzXSB4Mjk6IGZmZmY4MDAwMTIxMDJhZTAgeDI4OiBmZmZmMDAwMDA1Yzk0 ODAwIHgyNzogMDAwMDAwMDAwMDAwMDAwMAo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSA4LjkyMjA1 Nl0geDI2OiBmZmZmMDAwMDAwNTY2YmQwIHgyNTogMDAwMDAwMDAwMDAwMDAwMSB4MjQ6IDAwMDAw MDAwMDAwMDAwMDEKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIwNjddIHgyMzogMDAwMDAw MDAwMDAwMDAwMiB4MjI6IGZmZmYwMDAwMDA2MjhjMDAgeDIxOiAwMDAwMDAwMDAwMDAwMDAxCj4+ PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIyMDc4XSB4MjA6IGZmZmYwMDAwMDA1NjZiZDAgeDE5 OiAwMDAwMDAwMDAwMDAwMDAxIHgxODogMDAwMDAwMDAwMDAwMDAwMAo+Pj4gW8Ovwr/CvcOvwr/C vcOvwr/CvSA4LjkyMjA4OV0geDE3OiAwMDAwMDAwMDAwMDAwMDAwIHgxNjogMDAwMDAwMDAwMDAw MDAwMCB4MTU6IDAwMDAwMDAwMDAwMDAwMDAKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIx MDBdIHgxNDogMDAwMDAwMDAwMDAwMDI3NyB4MTM6IDAwMDAwMDAwMDAwMDAwMDEgeDEyOiAwMDAw MDAwMDAwMDAwMDAwCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIyMTExXSB4MTE6IDAwMDAw MDAwMDAwMDAwMDEgeDEwOiAwMDAwMDAwMDAwMDAwOGUwIHg5IDogZmZmZjgwMDAxMjEwMmE4MAo+ Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSA4LjkyMjEyM10geDggOiBmZmZmMDAwMDAwZDE0YjgwIHg3 IDogZmZmZjAwMDBmZTdiMTJmMCB4NiA6IGZmZmYwMDAwZmU3YjExMDAKPj4+IFvDr8K/wr3Dr8K/ wr3Dr8K/wr0gOC45MjIxMzRdIHg1IDogZmZmZmZjMDAwMDAwMDAwZiB4NCA6IDAwMDAwMDAwMDAw MDAwMDAgeDMgOiAwMDAwMDAwMDAwMDAwMDAxCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIy MTQ1XSB4MiA6IDAwMDAwMDAwMDAwMDAwMDEgeDEgOiAwMDAwMDAwMGZmMTkwODAwIHgwIDogZmZm ZjAwMDAwMDYyOGMwMAo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSA4LjkyMjE1OF0gQ2FsbCB0cmFj ZToKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIxNjNdw6/Cv8K9IGRtYV9tYXBfcmVzb3Vy Y2UrMHg2OC8weGMwCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIyMTczXcOvwr/CvSBwbDMz MF9wcmVwX3NsYXZlX3NnKzB4NTgvMHgyMjAKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gOC45MjIx ODFdw6/Cv8K9IHJvY2tjaGlwX3NwaV9wcmVwYXJlX2RtYSsweGQ4LzB4MmMwIFtzcGlfcm9ja2No aXBdCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDguOTIyMjA4XcOvwr/CvSByb2NrY2hpcF9zcGlf dHJhbnNmZXJfb25lKzB4Mjk0LzB4M2Q4IFtzcGlfcm9ja2NoaXBdCj4+IFsuLi5dCj4+PiBOb3Rl OiBUaGlzIGRvZXMgbm90IHJlbGF0ZSB0byB0aGUgc3BpIGRyaXZlciAtIHdoZW4gZGlzYWJsaW5n IHRoaXMgZGV2aWNlIGluCj4+PiB0aGUgZGV2aWNlIHRyZWUgaXQgZmFpbHMgZm9yIGFueSBvdGhl ciAoaTJzLCBmb3IgaW5zdGFuY2UpIHdoaWNoIHVzZXMgZG1hLgo+Pj4gQ29tbWVudGluZyBvdXQg dGhlIGZhaWxpbmcgY2hlY2sgYXQgWzFdLCBob3dldmVyLCBoZWxwcyBhbmQgdGhlIG1hcHBpbmcK Pj4+IHdvcmtzIGFnYWluLgo+IAo+PiBEbyB5b3Uga25vdyB3aGljaCBhZGRyZXNzIGRtYV9tYXBf cmVzb3VyY2UoKSBpcyB0cnlpbmcgdG8gbWFwIChtYXliZQo+PiBhZGQgc29tZSBwcmludGsoKSk/ IEl0J3Mgbm90IHN1cHBvc2VkIHRvIG1hcCBSQU0sIGhlbmNlIHRoZSB3YXJuaW5nLgo+PiBSYW5k b20gZ3Vlc3MsIHRoZSBhZGRyZXNzIGlzIDB4ZmYxOTA4MDAgKGJhc2VkIG9uIHRoZSB4MSBhYm92 ZSBidXQgdGhlCj4+IHJlZ3MgbWlnaHQgYXMgd2VsbCBiZSBtYW5nbGVkKS4KPiAKPiAweGZmMTkw ODAwIHdpbGwgY2F1c2UgdGhpcyB3YXJuaW5nIGZvciBzdXJlLiBJdCBoYXMgYSBtZW1vcnkgbWFw LCBidXQgaXQgaXMKPiBub3QgUkFNIHNvIG9sZCB2ZXJzaW9uIG9mIHBmbl92YWxpZCgpIHdvdWxk IHJldHVybiAwIGFuZCB0aGUgbmV3IG9uZQo+IHJldHVybnMgMS4KCkhvdyBkb2VzIHRoYXQgaGFw cGVuLCB0aG91Z2g/IEl0J3Mgbm90IGEgbWVtb3J5IGFkZHJlc3MsIGFuZCBpdCdzIG5vdCAKZXZl biB3aXRoaW4gdGhlIGJvdW5kcyBvZiBhbnl3aGVyZSB0aGVyZSBzaG91bGQgb3IgY291bGQgYmUg bWVtb3J5LiBUaGlzIApTb0MgaGFzIGEgc2ltcGxlIG1lbW9yeSBtYXAgLSBldmVyeXRoaW5nIGZy b20gMCB0byAweGZlZmZmZmZmIGdvZXMgdG8gCnRoZSBEUkFNIGNvbnRyb2xsZXIgKHdoaWNoIG1h eSBub3QgYWxsIGJlIHBvcHVsYXRlZCwgYW5kIG1heSBoYXZlIHBpZWNlcyAKY2FydmVkIG91dCBi eSBzZWN1cmUgZmlybXdhcmUpLCB3aGlsZSAweGZmMDAwMDAwLTB4ZmZmZmZmZmYgaXMgTU1JTy4g V2h5IApkbyB3ZSBoYXZlIHBhZ2VzIChvciBhdCBsZWFzdCB0aGUgYXNzdW1wdGlvbiBvZiBwYWdl cykgZm9yIHNvbWV3aGVyZSAKd2hpY2ggYnkgYWxsIHJpZ2h0cyBzaG91bGQgbm90IGhhdmUgdGhl bT8KCj4+PiBJIHRyaWVkIHRvIGZvbGxvdyB0aGUgcmVjZW50IGNoYW5nZXMgZm9yIGFybTY0IG1t IHdoaWNoIGNvdWxkIHJlbGF0ZSB0byB0aGUKPj4+IGNoZWNrIGZhaWxpbmcgYXQgWzFdIGFuZCBy ZXZlcnRpbmcKPj4+IMOvwr/CvSBjb21taXQgMTZjOWFmYzc3NjYwICgiYXJtNjQvbW06IGRyb3Ag SEFWRV9BUkNIX1BGTl9WQUxJRCIpCj4+PiBoZWxwcyBhbmQgbWFrZXMgaXQgd29yayBhZ2Fpbiwg YnV0IEknbSAxMDAlIHVuY2VydGFpbiBpZiB0aGF0IGNvbW1pdCBpcwo+Pj4gcmVhbGx5IHRoZSBj dWxwcml0Lgo+Pj4KPj4+IE5vdGUsIHRoYXQgdGhlIGZpcm13YXJlIChsZWdhY3kgdS1ib290KSBp bmplY3RzIG1lbW9yeSBjb25maWd1cmF0aW9uIGluIHRoZQo+Pj4gZGV2aWNlIHRyZWUgYXMgZm9s bG93czoKPj4+Cj4+PiAvbWVtcmVzZXJ2ZS/Dr8K/wr3Dr8K/wr3Dr8K/wr0gMHgwMDAwMDAwMGZj ZWZjMDAwIDB4MDAwMDAwMDAwMDAwZDAwMDsKPj4+IC8gewo+Pj4gLi4KPj4+IMOvwr/CvcOvwr/C vcOvwr/CvSBjb21wYXRpYmxlID0gInBpbmU2NCxyb2NrNjRcMHJvY2tjaGlwLHJrMzMyOCI7Cj4+ PiAuLgo+Pj4gw6/Cv8K9w6/Cv8K9w6/Cv8K9IG1lbW9yeSB7Cj4+PiDDr8K/wr3Dr8K/wr3Dr8K/ wr0gw6/Cv8K9w6/Cv8K9w6/Cv8K9IHJlZyA9IDwweDAwIDB4MjAwMDAwIDB4MDAgMHhmZWUwMDAw MCAweDAwIDB4MDAgMHgwMCAweDAwPjsKPj4+IMOvwr/CvcOvwr/CvcOvwr/CvSDDr8K/wr3Dr8K/ wr3Dr8K/wr0gZGV2aWNlX3R5cGUgPSAibWVtb3J5IjsKPj4+IMOvwr/CvcOvwr/CvcOvwr/CvSB9 Owo+Pj4KPj4+IC4uCj4+PiB9Cj4+Cj4+IEVpdGhlciBwZm5fdmFsaWQoKSBnZXRzIGNvbmZ1c2Vk IGluIDUuMTQgb3Igc29tZXRoaW5nIGlzIHdyb25nIHdpdGggdGhlCj4+IERULiBJIGhhdmUgYSBz dXNwaWNpb24gaXQncyB0aGUgZm9ybWVyIHNpbmNlIHJldmVydGluZyB0aGUgYWJvdmUgY29tbWl0 Cj4+IG1ha2VzIGl0IGRpc2FwcGVhci4KPiAKPiBJIHRoaW5rIHBmbl92YWxpZCgpIGFjdHVhbGx5 IGJlaGF2ZXMgYXMgZXhwZWN0ZWQgYnV0IHRoZSBjYWxsZXIgaXMgd3JvbmcKPiBiZWNhdXNlIHBm bl92YWxpZCAhPSBSQU0gKHRoaXMgYXBwbGllcyBidHcgdG8gIWFybTY0IGFzIHdlbGwpLgo+IAo+ IAkvKiBEb24ndCBhbGxvdyBSQU0gdG8gYmUgbWFwcGVkICovCj4gCWlmIChXQVJOX09OX09OQ0Uo cGZuX3ZhbGlkKFBIWVNfUEZOKHBoeXNfYWRkcikpKSkKPiAJCXJldHVybiBETUFfTUFQUElOR19F UlJPUjsKPiAKPiBBbGV4LCBjYW4geW91IHBsZWFzZSB0cnkgdGhpcyBwYXRjaDoKClRoYXQgd2ls bCBjZXJ0YWlubHkgcGFwZXIgb3ZlciB0aGUgaXNzdWUsIGJ1dCBpdCdzIGF2b2lkaW5nIHRoZSBx dWVzdGlvbiAKb2Ygd2hhdCB3ZW50IHdyb25nIHdpdGggdGhlIG1lbW9yeSBtYXAgaW4gdGhlIGZp cnN0IHBsYWNlLiBUaGUgY29tbWVudCAKaXMgaW5kZWVkIGEgYml0IGluYWNjdXJhdGUsIGJ1dCB1 bHRpbWF0ZWx5IGRtYV9tYXBfcmVzb3VyY2UoKSBleGlzdHMgZm9yIAphZGRyZXNzZXMgdGhhdCB3 b3VsZCBiZSB3cm9uZyB0byBwYXNzIHRvIGRtYV9tYXBfcGFnZSgpLCBzbyBJIGJlbGlldmUgCnBm bl92YWxpZCgpIGlzIHN0aWxsIHRoZSBjb3JyZWN0IGNoZWNrLgoKUm9iaW4uCgo+IGRpZmYgLS1n aXQgYS9rZXJuZWwvZG1hL21hcHBpbmcuYyBiL2tlcm5lbC9kbWEvbWFwcGluZy5jCj4gaW5kZXgg MmIwNmE4MDlkMGI5Li40NzE1ZTk2NDFhMjkgMTAwNjQ0Cj4gLS0tIGEva2VybmVsL2RtYS9tYXBw aW5nLmMKPiArKysgYi9rZXJuZWwvZG1hL21hcHBpbmcuYwo+IEBAIC0yMzIsNyArMjMyLDcgQEAg ZG1hX2FkZHJfdCBkbWFfbWFwX3Jlc291cmNlKHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5c19hZGRy X3QgcGh5c19hZGRyLAo+ICAgCQlyZXR1cm4gRE1BX01BUFBJTkdfRVJST1I7Cj4gICAKPiAgIAkv KiBEb24ndCBhbGxvdyBSQU0gdG8gYmUgbWFwcGVkICovCj4gLQlpZiAoV0FSTl9PTl9PTkNFKHBm bl92YWxpZChQSFlTX1BGTihwaHlzX2FkZHIpKSkpCj4gKwlpZiAoV0FSTl9PTl9PTkNFKCFtZW1i bG9ja19pc19tZW1vcnkocGh5c19hZGRyKSkpCj4gICAJCXJldHVybiBETUFfTUFQUElOR19FUlJP UjsKPiAgIAo+ICAgCWlmIChkbWFfbWFwX2RpcmVjdChkZXYsIG9wcykpCj4gICAKPj4+IFNvOiB0 aGVyZSBpcyBhICJob2xlIiBpbiB0aGUgbWFwcGFibGUgbWVtb3J5IGFuZCByZWFkaW5nIHRoZSBj b21taXQgbWVzc2FnZQo+Pj4gb2YKPj4+IMOvwr/CvSBjb21taXQgYTdkOWYzMDZiYTcwICgiYXJt NjQ6IGRyb3AgcGZuX3ZhbGlkX3dpdGhpbigpIGFuZCBzaW1wbGlmeQo+Pj4gcGZuX3ZhbGlkKCki KQo+Pj4gc3VnZ2VzdHMsIHRoZXJlIHdhcyBhIGNoYW5nZSBmb3IgdGhhdCBjYXNlIHJlY2VudGx5 Lgo+Pgo+PiBJIHRoaW5rIHRoZSBjaGFuZ2UgZnJvbSB0aGUgYXJtNjQgcGZuX3ZhbGlkKCkgdG8g dGhlIGdlbmVyaWMgb25lIGlzCj4+IGF2b2lkaW5nIHRoZSBjYWxsIHRvIG1lbWJsb2NrX2lzX21l bW9yeSgpLiBJIHdvbmRlciB3aGV0aGVyIHBmbl92YWxpZCgpCj4+IHJldHVybnMgdHJ1ZSBqdXN0 IGJlY2F1c2Ugd2UgaGF2ZSBhIHN0cnVjdCBwYWdlIGF2YWlsYWJsZSBidXQgdGhlIG1lbW9yeQo+ PiBtYXkgaGF2ZSBiZWVuIHJlc2VydmVkLgo+Pgo+PiBDYydpbmcgTWlrZSBSLgo+Pgo+Pj4gSSBh bHNvIG5vdGljZWQgdGhlcmUgaXMgYSBkaWZmIGluIHRoZSBrZXJuZWwgbG9nIHJlZ2FyZGluZyBt ZW1vcnkgaW5pdCB1cAo+Pj4gdW50aWwgNS4xMy4xMiBpdCBzYXlzCj4+Pgo+Pj4gW8Ovwr/CvcOv wr/CvcOvwr/CvSAwLjAwMDAwMF0gWm9uZSByYW5nZXM6Cj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9 IDAuMDAwMDAwXcOvwr/CvcOvwr/CvSBETUHDr8K/wr3Dr8K/wr3Dr8K/wr3Dr8K/wr3Dr8K/wr0g W21lbSAweDAwMDAwMDAwMDAyMDAwMDAtMHgwMDAwMDAwMGZlZmZmZmZmXQo+Pj4gW8Ovwr/CvcOv wr/CvcOvwr/CvSAwLjAwMDAwMF3Dr8K/wr3Dr8K/wr0gRE1BMzLDr8K/wr3Dr8K/wr3Dr8K/wr0g ZW1wdHkKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdw6/Cv8K9w6/Cv8K9IE5vcm1h bMOvwr/CvcOvwr/CvSBlbXB0eQo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAwLjAwMDAwMF0gTW92 YWJsZSB6b25lIHN0YXJ0IGZvciBlYWNoIG5vZGUKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4w MDAwMDBdIEVhcmx5IG1lbW9yeSBub2RlIHJhbmdlcwo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAw LjAwMDAwMF3Dr8K/wr3Dr8K/wr0gbm9kZcOvwr/CvcOvwr/CvSAwOiBbbWVtIDB4MDAwMDAwMDAw MDIwMDAwMC0weDAwMDAwMDAwZmVmZmZmZmZdCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAw MDAwXSBJbml0bWVtIHNldHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAwMDIwMDAwMC0weDAwMDAw MDAwZmVmZmZmZmZdCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXSBPbiBub2RlIDAg dG90YWxwYWdlczogMTA0Mzk2OAo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAwLjAwMDAwMF3Dr8K/ wr3Dr8K/wr0gRE1BIHpvbmU6IDE2MzEyIHBhZ2VzIHVzZWQgZm9yIG1lbW1hcAo+Pj4gW8Ovwr/C vcOvwr/CvcOvwr/CvSAwLjAwMDAwMF3Dr8K/wr3Dr8K/wr0gRE1BIHpvbmU6IDAgcGFnZXMgcmVz ZXJ2ZWQKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdw6/Cv8K9w6/Cv8K9IERNQSB6 b25lOiAxMDQzOTY4IHBhZ2VzLCBMSUZPIGJhdGNoOjYzCj4+Pgo+Pj4gSW4gY29udHJhcnkgaW4g NS4xNC1yYzcgaXQgc2F5czoKPj4+Cj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXSBa b25lIHJhbmdlczoKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdw6/Cv8K9w6/Cv8K9 IERNQcOvwr/CvcOvwr/CvcOvwr/CvcOvwr/CvcOvwr/CvSBbbWVtIDB4MDAwMDAwMDAwMDIwMDAw MC0weDAwMDAwMDAwZmVmZmZmZmZdCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXcOv wr/CvcOvwr/CvSBETUEzMsOvwr/CvcOvwr/CvcOvwr/CvSBlbXB0eQo+Pj4gW8Ovwr/CvcOvwr/C vcOvwr/CvSAwLjAwMDAwMF3Dr8K/wr3Dr8K/wr0gTm9ybWFsw6/Cv8K9w6/Cv8K9IGVtcHR5Cj4+ PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXSBNb3ZhYmxlIHpvbmUgc3RhcnQgZm9yIGVh Y2ggbm9kZQo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAwLjAwMDAwMF0gRWFybHkgbWVtb3J5IG5v ZGUgcmFuZ2VzCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXcOvwr/CvcOvwr/CvSBu b2Rlw6/Cv8K9w6/Cv8K9IDA6IFttZW0gMHgwMDAwMDAwMDAwMjAwMDAwLTB4MDAwMDAwMDBmZWZm ZmZmZl0KPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdIEluaXRtZW0gc2V0dXAgbm9k ZSAwIFttZW0gMHgwMDAwMDAwMDAwMjAwMDAwLTB4MDAwMDAwMDBmZWZmZmZmZl0KPj4+IFvDr8K/ wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdIE9uIG5vZGUgMCwgem9uZSBETUE6IDUxMiBwYWdlcyBp biB1bmF2YWlsYWJsZSByYW5nZXMKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdIE9u IG5vZGUgMCwgem9uZSBETUE6IDQwOTYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzCj4+Pgo+ Pj4gKG5vdGUgdGhlICJ1bmF2YWlsYWJsZSByYW5nZXMiKQo+Pj4gSSdtIHVuY2VydGFpbiBhZ2Fp biBoZXJlLCBpZiB0aGF0IGRpZmYgaXMgZXhwZWN0ZWQgYmVoYXZpb3IgYmVjYXVzZSBvZiB0aG9z ZQo+Pj4gcmVjZW50IG1tIGNoYW5nZXMgZm9yIGFybTY0Lgo+Pj4KPj4+IEFmdGVyIHJldmVydGlu Zwo+Pj4gw6/Cv8K9IGNvbW1pdCAxNmM5YWZjNzc2NjAgKCJhcm02NC9tbTogZHJvcCBIQVZFX0FS Q0hfUEZOX1ZBTElEIikKPj4+IHRoZSBsb2cgY2hhbmdlcyB0bwo+Pj4KPj4+IFvDr8K/wr3Dr8K/ wr3Dr8K/wr0gMC4wMDAwMDBdIFpvbmUgcmFuZ2VzOgo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAw LjAwMDAwMF3Dr8K/wr3Dr8K/wr0gRE1Bw6/Cv8K9w6/Cv8K9w6/Cv8K9w6/Cv8K9w6/Cv8K9IFtt ZW0gMHgwMDAwMDAwMDAwMjAwMDAwLTB4MDAwMDAwMDBmZWZmZmZmZl0KPj4+IFvDr8K/wr3Dr8K/ wr3Dr8K/wr0gMC4wMDAwMDBdw6/Cv8K9w6/Cv8K9IERNQTMyw6/Cv8K9w6/Cv8K9w6/Cv8K9IGVt cHR5Cj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAwMDAwXcOvwr/CvcOvwr/CvSBOb3JtYWzD r8K/wr3Dr8K/wr0gZW1wdHkKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4wMDAwMDBdIE1vdmFi bGUgem9uZSBzdGFydCBmb3IgZWFjaCBub2RlCj4+PiBbw6/Cv8K9w6/Cv8K9w6/Cv8K9IDAuMDAw MDAwXSBFYXJseSBtZW1vcnkgbm9kZSByYW5nZXMKPj4+IFvDr8K/wr3Dr8K/wr3Dr8K/wr0gMC4w MDAwMDBdw6/Cv8K9w6/Cv8K9IG5vZGXDr8K/wr3Dr8K/wr0gMDogW21lbSAweDAwMDAwMDAwMDAy MDAwMDAtMHgwMDAwMDAwMGZlZmZmZmZmXQo+Pj4gW8Ovwr/CvcOvwr/CvcOvwr/CvSAwLjAwMDAw MF0gSW5pdG1lbSBzZXR1cCBub2RlIDAgW21lbQo+Pj4gMHgwMDAwMDAwMDAwMjAwMDAwLTB4MDAw MDAwMDBmZWZmZmZmZl0KPj4+Cj4+PiAobm8gRE1BIHpvbmVzIGhlcmUpCj4+Pgo+Pj4gQXMgeW91 IG1pZ2h0IGhhdmUgbm90aWNlZCBJIGhhdmUgX3plcm9fIGNsdWUgYWJvdXQgbWVtb3J5IG1hcHBp bmcgYW5kIGRtYQo+Pj4gc3Vic3lzdGVtIC0gc28gbGV0IG1lIGtub3cgaWYgdGhlcmUgaXMgYW55 IG1vcmUgaW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGF0Cj4+PiBhbmQgdGhhbmtzIGZvciB5b3Vy IGhlbHAuCj4+Cj4+IEFkZGluZyBSb2JpbiBhcyB3ZWxsLCBoZSBoYXMgYSBiZXR0ZXIgY2x1ZSB0 aGFuIHVzIG9uIERNQSA7KS4KPj4KPj4+IEFsZXgKPj4+Cj4+PiBbMV0gaHR0cHM6Ly9naXQua2Vy bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUv a2VybmVsL2RtYS9tYXBwaW5nLmM/aWQ9ZTIyY2U4ZWI2MzFiZGM0N2E0YTRlYTdlY2Y0ZTRiYTQ5 OWRiNGY5MyNuMjM1Cj4+Cj4+IC0tIAo+PiBDYXRhbGluCj4gCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==