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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 0983FC001DB for ; Tue, 8 Aug 2023 21:14:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=PuwxbGHVFPZL4q+Ie5i8/9NG5Qh+7EbpmPK5nPtupUc=; b=c8a5AwwG2c33OEMUUYzDJOTokd 4FsH5Or2wEzC9AsJ01lQNp4Zsm2gdykhHmRMWg8QJu8QjpkRgZl1kS9r33VY+PFqus2L/uJ0zmD2y CyIkw5JMlNHDnGJuOqeEnKedDOrL+pC9wsPeQZ/EGgA0gdLfS5GXQt57hGWInWviyiOLZwTFdmbAW UvMDl8gBmL3f64sj5Toif0JxhA7W/HlpodjxOSD+UJaOwiAAJsv5MYPb4ymx7eSCcgLAkNBciYicv dU5wZYaydh3uetb38Qpju2PyDnrLh5++JaT4SrnwqO6H+eVO4wdOoHXWH5s5BPGIbCvnlzxV2sMzN q5RI+G0A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qTU1K-003UMq-2A; Tue, 08 Aug 2023 21:13:38 +0000 Received: from mail-pg1-x54a.google.com ([2607:f8b0:4864:20::54a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qTU1F-003UKL-1W for linux-arm-kernel@lists.infradead.org; Tue, 08 Aug 2023 21:13:36 +0000 Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-563379fe16aso6292903a12.3 for ; Tue, 08 Aug 2023 14:13:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1691529208; x=1692134008; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=2U8op5NWCZxGer1aWuXuZ1d6J73Ge5+Hk7EgkvJJLAs=; b=EiApR7LgfgrJOIT4RH8vwTp7YvtN3WX8F65amcCZ5tUQpyv/ZsbnzElbxtLH3YiRAr Xco5OB//pxBTUJ1Hz9I9wbK8VFMOtBI25Tou7znxlR4xLwF5hwG16hAzm3VNuOm7qNVv RXaphvZexnvsjJwdUedz4miwZlrHjyPKGJ4tg41nXpc1Cr1tDeUR45j+cXRmHY2zeNeJ aD2FSNHH9s2X0AH/332mpiw5dSfBYPcqgRab/m5d5fFkQb+ZWPzwvwukMvExFid52TaS W3qOIOCRBt/UK+p15DAoWro/GC9Q6ni0EalNj49A0OSEsHwDkeyMMKxa0prAwizF/XXF JV1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691529208; x=1692134008; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=2U8op5NWCZxGer1aWuXuZ1d6J73Ge5+Hk7EgkvJJLAs=; b=TCkhanPHPx686nzplT5kCy04Kh++5WdrxVHjwjBXjxjjUVUdxbQH0e6IKCeb43NqA7 pPAfcHVr6yDYA4dYjYjw5N16EaKU387ROyncjQHJcwxoqB+yelxb8YpmZrJlw+0Mf688 S/8rU2ijC/Tl6un1nzhHsQ+VZ7WZWk2dK3/FvhBx6HRAthzK4L3KWGEEJgwAj9ooybTk 3tF95+8yeNMpEMNehrM2qPCSro7oUXb6Azf2XvsPzlXSnXrLnjMyDvXGEVlRgm6RYxhd 1CKhN39LfpwHlEvN0pFoD5JyNCD5iBpDzYvbhLfT3179Wvl6N19ZW2HnR4SVdXHzNfOd 2hEA== X-Gm-Message-State: AOJu0Yyk5wEs8YRfONIvTgiDvhIR2/Wq3ZGeBjopf0IfntP3nfuqLVI0 hukBuToI6jiLN36TkiWv1Saf+h9lsjM= X-Google-Smtp-Source: AGHT+IF3VhVvM3seA6Kd3G1yrwf0aF3MmO0cqr5SVZX1MHXlsabrjEav/SHlO1qK0PHGPVCVUrfGthX1EsA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:b242:0:b0:563:e937:5e87 with SMTP id t2-20020a63b242000000b00563e9375e87mr12735pgo.5.1691529208021; Tue, 08 Aug 2023 14:13:28 -0700 (PDT) Date: Tue, 8 Aug 2023 14:13:26 -0700 In-Reply-To: Mime-Version: 1.0 References: <20230718234512.1690985-13-seanjc@google.com> Message-ID: Subject: Re: [RFC PATCH v11 12/29] KVM: Add KVM_CREATE_GUEST_MEMFD ioctl() for guest-specific backing memory From: Sean Christopherson To: Ackerley Tng Cc: pbonzini@redhat.com, maz@kernel.org, oliver.upton@linux.dev, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, willy@infradead.org, akpm@linux-foundation.org, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, chao.p.peng@linux.intel.com, tabba@google.com, jarkko@kernel.org, yu.c.zhang@linux.intel.com, vannapurve@google.com, mail@maciej.szmigiero.name, vbabka@suse.cz, david@redhat.com, qperret@google.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230808_141333_533145_53A29E1E X-CRM114-Status: GOOD ( 31.09 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBBdWcgMDcsIDIwMjMsIEFja2VybGV5IFRuZyB3cm90ZToKPiBJ4oCZZCBsaWtlIHRv IHByb3Bvc2UgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHJlZmNvdW50aW5nIGFwcHJvYWNoIGJldHdl ZW4KPiB0aGUgZ21lbSBmaWxlIGFuZCBhc3NvY2lhdGVkIGt2bSwgd2hlcmUgd2UgdGhpbmsgb2Yg S1ZN4oCZcyBtZW1zbG90cyBhcwo+IHVzZXJzIG9mIHRoZSBnbWVtIGZpbGUuCj4gCj4gSW5zdGVh ZCBvZiBoYXZpbmcgdGhlIGdtZW0gZmlsZSBwaW4gdGhlIFZNIChpLmUuIHRha2UgYSByZWZjb3Vu dCBvbgo+IGt2bSksIHdlIGNvdWxkIGxldCBtZW1zbG90IHRha2UgYSByZWZjb3VudCBvbiB0aGUg Z21lbSBmaWxlIHdoZW4gdGhlCj4gbWVtc2xvdHMgYXJlIGNvbmZpZ3VyZWQuCj4gCj4gSGVyZeKA mXMgYSBQT0MgcGF0Y2ggdGhhdCBmbGlwcyB0aGUgcmVmY291bnRpbmcgKGFuZCBtb2RpZmllZCBz ZWxmdGVzdHMgaW4KPiB0aGUgbmV4dCBjb21taXQpOgo+IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29n bGVwcm9ka2VybmVsL2xpbnV4LWNjL2NvbW1pdC83ZjQ4N2IwMjliODliOWYzZTliMDk0YTcyMWJj MDc3MmYzYzhjNzk3Cj4gCj4gT25lIHNpZGUgZWZmZWN0IG9mIGhhdmluZyB0aGUgZ21lbSBmaWxl IHBpbiB0aGUgVk0gaXMgdGhhdCBub3cgdGhlIGdtZW0KPiBmaWxlIGJlY29tZXMgc29ydCBvZiBh IGZhbHNlIGhhbmRsZSBvbiB0aGUgVk06Cj4gCj4gKyBDbG9zaW5nIHRoZSBmaWxlIGRlc3Ryb3lz IHRoZSBmaWxlIHBvaW50ZXJzIGluIHRoZSBWTSBhbmQgaW52YWxpZGF0ZXMKPiAgIHRoZSBwb2lu dGVycwoKWWVhaCwgdGhpcyBpcyBsZXNzIHRoYW4gaWRlYWwuICBCdXQsIGl0J3MgYWxzbyBob3cg dGhpbmdzIG9wZXJhdGUgdG9kYXkuICBLVk0KZG9lc24ndCBob2xkIHJlZmVyZW5jZXMgdG8gVk1B cyBvciBmaWxlcywgZS5nLiBpZiB1c2Vyc3BhY2UgbXVubWFwKClzIG1lbW9yeSwKYW55IGFuZCBh bGwgU1BURXMgcG9pbnRpbmcgYXQgdGhlIG1lbW9yeSBhcmUgemFwcGVkLiAgVGhlIG9ubHkgZGlm ZmVyZW5jZSB3aXRoCmdtZW0gaXMgdGhhdCBLVk0gbmVlZHMgdG8gZXhwbGljaXRseSBpbnZhbGlk YXRlIGZpbGUgcG9pbnRlcnMsIGluc3RlYWQgb2YgdGhhdApoYXBwZW5pbmcgYmVoaW5kIHRoZSBz Y2VuZXMgKG5vIG1vcmUgVk1BcyB0byBmaW5kKS4gIEFnYWluLCBJIGFncmVlIHRoZSByZXN1bHRp bmcKY29kZSBpcyBtb3JlIGNvbXBsZXggdGhhbiBJIHdvdWxkIHByZWZlciwgYnV0IGZyb20gYSB1 c2Vyc3BhY2UgcGVyc3BlY3RpdmUgSQpkb24ndCBzZWUgdGhpcyBhcyBwcm9ibGVtYXRpYy4KCj4g KyBLZWVwaW5nIHRoZSBmaWxlIG9wZW4ga2VlcHMgdGhlIFZNIGFyb3VuZCBpbiB0aGUga2VybmVs IGV2ZW4gdGhvdWdoCj4gICB0aGUgVk0gZmQgbWF5IGFscmVhZHkgYmUgY2xvc2VkLgoKVGhhdCBp cyBwZXJmZWN0bHkgb2suICBUaGVyZSBpcyBwbGVudHkgb2YgcHJpb3IgYXJ0LCBhcyB3ZWxsIGFz IHBsZW50eSBvZiB3YXlzCmZvciB1c2Vyc3BhY2UgdG8gc2hvb3QgaXRzZWxmIGluIHRoZSBmb290 LiAgRS5nLiBvcGVuIGEgc3RhdHMgZmQgZm9yIGEgdkNQVSBhbmQKdGhlIFZNIGFuZCBhbGwgaXRz IHZDUFVzIHdpbGwgYmUga2VwdCBhbGl2ZS4gIEFuZCBjb25jZXB0dWFsbHkgaXQncyBzb3VuZCwK YW55dGhpbmcgY3JlYXRlZCBpbiB0aGUgc2NvcGUgb2YgYSBWTSBfc2hvdWxkXyBwaW4gdGhlIFZN LgoKPiBJIGZlZWwgdGhhdCBtZW1zbG90cyBmb3JtIGEgbmF0dXJhbCB3YXkgb2YgbWFuYWdpbmcg dXNhZ2Ugb2YgdGhlIGdtZW0KPiBmaWxlLiBXaGVuIGEgbWVtc2xvdCBpcyBjcmVhdGVkLCBpdCBp cyB1c2luZyB0aGUgZmlsZTsgaGVuY2Ugd2UgdGFrZSBhCj4gcmVmY291bnQgb24gdGhlIGdtZW0g ZmlsZSwgYW5kIGFzIG1lbXNsb3RzIGFyZSByZW1vdmVkLCB3ZSBkcm9wCj4gcmVmY291bnRzIG9u IHRoZSBnbWVtIGZpbGUuCgpZZXMgYW5kIG5vLiAgSXQncyBkZWZpbml0ZWx5IG1vcmUgbmF0dXJh bCAqaWYqIHRoZSBnb2FsIGlzIHRvIGFsbG93IGd1ZXN0X21lbWZkCm1lbW9yeSB0byBleGlzdCB3 aXRob3V0IGJlaW5nIGF0dGFjaGVkIHRvIGEgVk0uICBCdXQgSSdtIG5vdCBhdCBhbGwgY29udmlu Y2VkCnRoYXQgd2Ugd2FudCB0byBhbGxvdyB0aGF0LCBvciB0aGF0IGl0IGhhcyBkZXNpcmFibGUg cHJvcGVydGllcy4gIFdpdGggVERYIGFuZApTTlAgaW4gcGFydGljdWFybHksIEknbSBwcmV0dHkg c3VyZSB0aGF0IGFsbG93aW5nIG1lbW9yeSB0byBvdXRsaXZlIHRoZSBWTSBpcwp2ZXJ5IHVuZGVy aXNhYmxlIChtb3JlIGJlbG93KS4KCj4gVGhlIEtWTSBwb2ludGVyIGlzIHNoYXJlZCBhbW9uZyBh bGwgdGhlIGJpbmRpbmdzIGluIGdtZW3igJlzIHhhcnJheSwgYW5kIHdlIGNhbgo+IGVuZm9yY2Ug dGhhdCBhIGdtZW0gZmlsZSBpcyB1c2VkIG9ubHkgd2l0aCBvbmUgVk06Cj4gCj4gKyBXaGVuIGJp bmRpbmcgYSBtZW1zbG90IHRvIHRoZSBmaWxlLCBpZiBhIGt2bSBwb2ludGVyIGV4aXN0cywgaXQg bXVzdAo+ICAgYmUgdGhlIHNhbWUga3ZtIGFzIHRoZSBvbmUgaW4gdGhpcyBiaW5kaW5nCj4gKyBX aGVuIHRoZSBiaW5kaW5nIHRvIHRoZSBsYXN0IG1lbXNsb3QgaXMgcmVtb3ZlZCBmcm9tIGEgZmls ZSwgTlVMTCB0aGUKPiAgIGt2bSBwb2ludGVyLgoKTnVsbGlmeWluZyB0aGUgS1ZNIHBvaW50ZXIg aXNuJ3Qgc3VmZmljaWVudCwgYmVjYXVzZSB3aXRob3V0IGFkZGl0aW9uYWwgYWN0aW9ucwp1c2Vy c3BhY2UgY291bGQgZXh0cmFjdCBkYXRhIGZyb20gYSBWTSBieSBkZWxldGluZyBpdHMgbWVtc2xv dHMgYW5kIHRoZW4gYmluZGluZwp0aGUgZ3Vlc3RfbWVtZmQgdG8gYW4gYXR0YWNrZXIgY29udHJv bGxlZCBWTS4gIE9yIG1vcmUgbGlrZWx5IHdpdGggVERYIGFuZCBTTlAsCmluZHVjZSBiYWRuZXNz IGJ5IGNvZXJjaW5nIEtWTSBpbnRvIG1hcHBpbmcgbWVtb3J5IGludG8gYSBndWVzdCB3aXRoIHRo ZSB3cm9uZwpBU0lEL0hLSUQuCgpJIGNhbiB0aGluayBvZiB0aHJlZSB3YXlzIHRvIGhhbmRsZSB0 aGF0OgoKICAoYSkgcHJldmVudCBhIGRpZmZlcmVudCBWTSBmcm9tICpldmVyKiBiaW5kaW5nIHRv IHRoZSBnbWVtIGluc3RhbmNlCiAgKGIpIGZyZWUvemVybyBwaHlzaWNhbCBwYWdlcyB3aGVuIHVu YmluZGluZwogIChjKSBmcmVlL3plcm8gd2hlbiBiaW5kaW5nIHRvIGEgZGlmZmVyZW50IFZNCgpP cHRpb24gKGEpIGlzIGVhc3ksIGJ1dCB0aGF0IHByZXR0eSBtdWNoIGRlZmVhdHMgdGhlIHB1cnBv c2Ugb2YgZGVjb3B1bGluZwpndWVzdF9tZW1mZCBmcm9tIGEgVk0uCgpPcHRpb24gKGIpIGlzbid0 IGhhcmQgdG8gaW1wbGVtZW50LCBidXQgaXQgc2NyZXdzIHVwIHRoZSBsaWZlY3ljbGUgb2YgdGhl IG1lbW9yeSwKZS5nLiB3b3VsZCByZXF1aXJlIG1lbW9yeSB3aGVuIGEgbWVtc2xvdCBpcyBkZWxl dGVkLiAgVGhhdCBpc24ndCBuZWNlc3NhcmlseSBhCmRlYWwtYnJlYWtlciwgYnV0IGl0IHJ1bnMg Y291bnRlciB0byBob3cgS1ZNIG1lbWxvdHMgY3VycmVudGx5IG9wZXJhdGUuICBNZW1zbG90cwph cmUgYmFzaWNhbGx5IGp1c3Qgd2VpcmQgcGFnZSB0YWJsZXMsIGUuZy4gZGVsZXRpbmcgYSBtZW1z bG90IGRvZXNuJ3QgaGF2ZSBhbnkKaW1wYWN0IG9uIHRoZSB1bmRlcmx5aW5nIGRhdGEgaW4gbWVt b3J5LiAgVERYIHRocm93cyBhIHdyZW5jaCBpbiB0aGlzIGFzIHJlbW92aW5nCmEgcGFnZSBmcm9t IHRoZSBTZWN1cmUgRVBUIGlzIGVmZmVjdGl2ZWx5IGRlc3RydWN0aXZlIHRvIHRoZSBkYXRhIChj YW4ndCBiZSBtYXBwZWQKYmFjayBpbiB0byB0aGUgVk0gd2l0aG91dCB6ZXJvaW5nIHRoZSBkYXRh KSwgYnV0IElNTyB0aGF0J3MgYW4gb2RkaXR5IHdpdGggVERYIGFuZApub3QgbmVjZXNzYXJpbHkg c29tZXRoaW5nIHdlIHdhbnQgdG8gY2Fycnkgb3ZlciB0byBvdGhlciBWTSB0eXBlcy4KClRoZXJl IHdvdWxkIGFsc28gYmUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIChwcm9iYWJseSBhIG5vbi1p c3N1ZSBpbiBwcmFjdGljZSksCmFuZCB3ZWlyZG5lc3MgaWYvd2hlbiB3ZSBnZXQgdG8gc2hhcmlu ZywgbGlua2luZyBhbmQvb3IgbW1hcCgpaW5nIGdtZW0uICBFLmcuIHdoYXQKc2hvdWxkIGhhcHBl biBpZiB0aGUgbGFzdCBtZW1zbG90IChiaW5kaW5nKSBpcyBkZWxldGVkLCBidXQgdGhlcmUgb3V0 c3RhbmRpbmcgdXNlcnNwYWNlCm1hcHBpbmdzPwoKT3B0aW9uIChjKSBpcyBiZXR0ZXIgZnJvbSBh IGxpZmVjeWNsZSBwZXJzcGVjdGl2ZSwgYnV0IGl0IGFkZHMgaXRzIG93biBmbGF2b3Igb2YKY29t cGxleGl0eSwgZS5nLiB0aGUgcGVyZm9ybWFudCB3YXkgdG8gcmVjbGFpbSBURFggbWVtb3J5IHJl cXVpcmVzIHRoZSBURE1SCihlZmZlY3RpdmVseSB0aGUgVk0gcG9pbnRlciksIGFuZCBzbyBhIGRl ZmVycmVkIHJlbGNhaW0gZG9lc24ndCByZWFsbHkgd29yayBmb3IKVERYLiAgQW5kIEknbSBwcmV0 dHkgc3VyZSBpdCAqY2FuJ3QqIHdvcmsgZm9yIFNOUCwgYmVjYXVzZSBSTVAgZW50cmllcyBtdXN0 IG5vdApvdXRsaXZlIHRoZSBWTTsgS1ZNIGNhbid0IHJldXNlIGFuIEFTSUQgaWYgdGhlcmUgYXJl IHBhZ2VzIGFzc2lnbmVkIHRvIHRoYXQgQVNJRAppbiB0aGUgUk1QLCBpLmUuIHVudGlsIGFsbCBt ZW1vcnkgYmVsb25naW5nIHRvIHRoZSBWTSBoYXMgYmVlbiBmdWxseSBmcmVlZC4KCj4gQ291bGQg YmluZGluZyBnbWVtIGZpbGVzIG5vdCBvbiBjcmVhdGlvbiwgYnV0IGF0IG1lbXNsb3QgY29uZmln dXJhdGlvbgo+IHRpbWUgYmUgc3VmZmljaWVudCBhbmQgc2ltcGxlcj8KCkFmdGVyIHdvcmtpbmcg dGhyb3VnaCB0aGUgZmxvd3MsIEkgdGhpbmsgYmluZGluZyBvbi1kZW1hbmQgd291bGQgc2ltcGxp ZnkgdGhlCnJlZmNvdW50aW5nIChzdGF0aW5nIHRoZSBvYnZpb3VzKSwgYnV0IGNvbXBsaWNhdGUg dGhlIGxpZmVjeWNsZSBvZiB0aGUgbWVtb3J5IGFzCndlbGwgYXMgdGhlIGNvbnRyYWN0IGJldHdl ZW4gS1ZNIGFuZCB1c2Vyc3BhY2UsIGFuZCB3b3VsZCBicmVhayB0aGUgc2VwYXJhdGlvbiBvZgpj b25jZXJucyBiZXR3ZWVuIHRoZSBpbm9kZSAocGh5c2ljYWwgbWVtb3J5IC8gZGF0YSkgYW5kIGZp bGUgKFZNJ3MgdmlldyAvIG1hcHBpbmdzKS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK