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 DBAABC25B75 for ; Wed, 29 May 2024 12:13:40 +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: Mime-Version:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=isPlNebLwncN7CxI+diF7utDioXkbj9X3ItabzLnNaQ=; b=V21 s7bSMOYIiNoKozjJBuvrWEiSjhjqjcCAb5ggKEc8RNG0YU5b6spWZtO5RVni55T1juCUMXHiS4NiX gkkJyTiYMewBCD/4ZgBTuiDtRZB+7DMwuQRwKfx8dDYyBnH9//pC+WXM84F8P4EtzlemSuNLgrwR/ 8OjMnMvqgTuDOwEbJp4w2T+qiFwe+M5LB+r/yNzfbsc7i+sYQXxjcEVkF5gKNv1pM2VTjtUNHCdYP Z+l5dyVg0v1X4Qu7ZgLxdXoNNEDAZ8Q8ea8pRotEBXjxcb7zla/ctGPWwPoD1t1OPvV60TQt4f/PE mqmMf/HA9DgM9yJdjzzwf34za5vJMNA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sCIBN-000000042YA-3Tq0; Wed, 29 May 2024 12:13:30 +0000 Received: from mail-ed1-x549.google.com ([2a00:1450:4864:20::549]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sCIBK-000000042XB-1BoG for linux-arm-kernel@lists.infradead.org; Wed, 29 May 2024 12:13:27 +0000 Received: by mail-ed1-x549.google.com with SMTP id 4fb4d7f45d1cf-5785f7b847cso1177371a12.0 for ; Wed, 29 May 2024 05:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1716984802; x=1717589602; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:from:to:cc:subject:date:message-id:reply-to; bh=KHM4hvPISZ5Fqfl4GlcTR57oUno+i9soKGwTyex86bs=; b=4KKpppSjtmaROJ2drhRoLfDaYmYWT01dq/HT/D33Y0Gw6IdHfU11AisRdWJRnhDVHR hMuiJTXYg6DqssQZoBYrOWK1tbgxKGk3mJuePDU0kZ7+9K6NPUfn1JGaTfedNLEvD0rV sSq7ieNxmQJVkhAWicKL7SKf98aGnVNj7QmmdcCiRH+zpK/RpXLwA8CLKpKUEkJTJl+m al3rNRfyMT7SERcGhE7QQKB8V4Nptwsedz6gS6wkMPdcX5elnNYDGLwuvDA1XPY6ly5z IAGxxgZ4EQlpooy6m7VqXuDs5zdnX1CfN/vDtAtiFDrrPifvNkbf8WcF7OCiVwE/HTKt 10iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716984802; x=1717589602; h=content-transfer-encoding:cc:to:from:subject:message-id :mime-version:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KHM4hvPISZ5Fqfl4GlcTR57oUno+i9soKGwTyex86bs=; b=tGlh7NI6NuxTozpmGQlJVnOCeuQwkM8j0iw5zakesr1V/tXLhb4X5ZC+KMYc5fxMDZ 7Eg1fA40r2Ql+CEHrT/Ybqddw/X32F4dcgexyKjgGPwALLV1b5S/5lRxBSyNK446L3Rr ef9sVLcN5MLjzuCaZNMeMK//MOoCR0CCeaFJ/NkXojrUwc3A48mNVlq2tt+sHGYScvci q9I3xsx/UoDsgjdeQv1lzS7rwMTKZO38VfjD3FPbtVKES47p1UEizD/ncdqqjpq3WDV9 qkLv274qfjkwN7s2reDDXf/g4Dz+B9nh8rlR/RG9WNVaPa3Pt7AOAuvCIYT8JBn0N5I8 245g== X-Forwarded-Encrypted: i=1; AJvYcCUkxGRNIYztCefpUBtAY/ytr39qLAxT4PEoec/30V0uyWugf1/rhXLdywd8gX43GbpiqvKqWUuSfg4BgnkaNemchk4ET/Ri0IpRaqfxPPNeOBOly7w= X-Gm-Message-State: AOJu0Yx/zO1NVZasqI/pDOfiJaT8HmxE4lb07Iu0+ZihSCXjBag2GUt4 PL2prf+NfEIIR8cZuY6zY38hsNlKyoL5aBZs6SH/EFelVmp4HLkTfeVoayxgnEh5VoszZQF/CA= = X-Google-Smtp-Source: AGHT+IGy4WL2CP5PklvEqxujQTD6yc2fhlZRBTpxJ6g4wgBAaDOJBrprVoBIpT2DiBPtsVpg198JthWjYw== X-Received: from ptosi.c.googlers.com ([fda3:e722:ac3:cc00:31:98fb:c0a8:11ec]) (user=ptosi job=sendgmr) by 2002:a05:6402:3884:b0:578:242b:aac4 with SMTP id 4fb4d7f45d1cf-57a03f586cdmr2540a12.2.1716984801909; Wed, 29 May 2024 05:13:21 -0700 (PDT) Date: Wed, 29 May 2024 13:12:06 +0100 Mime-Version: 1.0 X-Mailer: git-send-email 2.45.1.288.g0e0cd299f1-goog Message-ID: <20240529121251.1993135-1-ptosi@google.com> Subject: [PATCH v4 00/13] KVM: arm64: Add support for hypervisor kCFI From: "=?UTF-8?q?Pierre-Cl=C3=A9ment=20Tosi?=" To: kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org Cc: "=?UTF-8?q?Pierre-Cl=C3=A9ment=20Tosi?=" , Marc Zyngier , Oliver Upton , Suzuki K Poulose , Vincent Donnefort X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240529_051326_445135_CA59CD7E X-CRM114-Status: GOOD ( 18.11 ) 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 Q09ORklHX0NGSV9DTEFORyAoImtlcm5lbCBDb250cm9sIEZsb3cgSW50ZWdyaXR5IikgbWFrZXMg dGhlIGNvbXBpbGVyIGluamVjdApydW50aW1lIHR5cGUgY2hlY2tzIGJlZm9yZSBhbnkgaW5kaXJl Y3QgZnVuY3Rpb24gY2FsbC4gT24gQUFyY2g2NCwgaXQgZ2VuZXJhdGVzCmEgQlJLIGluc3RydWN0 aW9uIHRvIGJlIGV4ZWN1dGVkIG9uIHR5cGUgbWlzbWF0Y2ggYW5kIGVuY29kZXMgdGhlIGluZGlj ZXMgb2YgdGhlCnJlZ2lzdGVycyBob2xkaW5nIHRoZSBicmFuY2ggdGFyZ2V0IGFuZCBleHBlY3Rl ZCB0eXBlIGluIHRoZSBpbW1lZGlhdGUgb2YgdGhlCmluc3RydWN0aW9uLiBBcyBhIHJlc3VsdCwg YSBzeW5jaHJvbm91cyBleGNlcHRpb24gZ2V0cyB0cmlnZ2VyZWQgb24ga0NGSSBmYWlsdXJlCmFu ZCB0aGUgZmF1bHQgaGFuZGxlciBjYW4gcmV0cmlldmUgdGhlIGltbWVkaWF0ZSAoYW5kIGluZGlj ZXMpIGZyb20gRVNSX0VMeC4KClRoaXMgZmVhdHVyZSBoYXMgYmVlbiBzdXBwb3J0ZWQgYXQgRUwx ICgiaG9zdCIpIHNpbmNlIGl0IHdhcyBpbnRyb2R1Y2VkIGJ5CmIyNmU0ODRiOGJiMyAoImFybTY0 OiBBZGQgQ0ZJIGVycm9yIGhhbmRsaW5nIiksIHdoZXJlIGNmaV9oYW5kbGVyKCkgZGVjb2RlcwpF U1JfRUwxLCBnaXZpbmcgaW5mb3JtYXRpdmUgcGFuaWMgbWVzc2FnZXMgc3VjaCBhcwoKICBbICAg MjEuODg1MTc5XSBDRkkgZmFpbHVyZSBhdCBsa2R0bV9pbmRpcmVjdF9jYWxsKzB4MmMvMHg0NCBb bGtkdG1dCiAgKHRhcmdldDogbGtkdG1faW5jcmVtZW50X2ludCsweDAvMHgxYyBbbGtkdG1dOyBl eHBlY3RlZCB0eXBlOiAweDdlMGM1MmEpCiAgWyAgIDIxLjg4NjU5M10gSW50ZXJuYWwgZXJyb3I6 IE9vcHMgLSBDRkk6IDAgWyMxXSBQUkVFTVBUIFNNUAoKSG93ZXZlciwgaXQgaXMgbm90IG9yIG9u bHkgcGFydGlhbGx5IHN1cHBvcnRlZCBhdCBFTDI6IGluIG5WSEUgKG9yIHBLVk0pLApDT05GSUdf Q0ZJX0NMQU5HIGdldHMgZmlsdGVyZWQgb3V0IGF0IGJ1aWxkIHRpbWUsIHByZXZlbnRpbmcgdGhl IGNvbXBpbGVyIGZyb20KaW5qZWN0aW5nIHRoZSBjaGVja3MuIEluIFZIRSwgRUwyIGNvZGUgZ2V0 cyBjb21waWxlZCB3aXRoIHRoZSBjaGVja3MgYnV0IHRoZQpoYW5kbGVycyBpbiBWQkFSX0VMMiBh cmUgbm90IGF3YXJlIG9mIGtDRkkgYW5kIHdpbGwgcHJvZHVjZSBhIGdlbmVyaWMgYW5kCm5vdC1z by1oZWxwZnVsIHBhbmljIG1lc3NhZ2Ugc3VjaCBhcwoKICBbICAgMzYuNDU2MDg4XVsgIFQyMDBd IEtlcm5lbCBwYW5pYyAtIG5vdCBzeW5jaW5nOiBIWVAgcGFuaWM6CiAgWyAgIDM2LjQ1NjA4OF1b ICBUMjAwXSBQUzoyMDQwMDNjOSBQQzpmZmZmZmZjMDgwMDkyMzEwIEVTUjpmMjAwODIyOAogIFsg ICAzNi40NTYwODhdWyAgVDIwMF0gRkFSOjAwMDAwMDAwODFhNTAwMDAgSFBGQVI6MDAwMDAwMDAw MDgxYTUwMCBQQVI6MWRlN2VjN2VkYmFkYzBkZQogIFsgICAzNi40NTYwODhdWyAgVDIwMF0gVkNQ VTowMDAwMDAwMGUxODljN2NmCgpUbyBhZGRyZXNzIHRoaXMsCgotIFswMS8xM10gZml4ZXMgYW4g ZXhpc3RpbmcgYnVnIHdoZXJlIHRoZSBFTFJfRUwyIHdhcyBnZXR0aW5nIGNsb2JiZXJlZCBvbgog IHN5bmNocm9ub3VzIGV4Y2VwdGlvbnMsIGNhdXNpbmcgdGhlIHdyb25nICJQQyIgdG8gYmUgcmVw b3J0ZWQgYnkKICBudmhlX2h5cF9wYW5pY19oYW5kbGVyKCkgb3IgX19oeXBfY2FsbF9wYW5pYygp LiBUaGlzIGlzIHBhcnRpY3VsYXJseSBsaW1pdGluZwogIGZvciBrQ0ZJLCBhcyBpdCB3b3VsZCBt YXNrIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmFpbGVkIHR5cGUgY2hlY2suCi0gWzAyLzEzXSBmaXhl cyBhIG1pbm9yIEMvYXNtIEFCSSBtaXNtYXRjaCB3aGljaCB3b3VsZCB0cmlnZ2VyIGEga0NGSSBm YWlsdXJlCi0gWzAzLzEzXSB0byBbMDkvMTNdIHByZXBhcmUgblZIRSBmb3IgQ09ORklHX0NGSV9D TEFORyBhbmQgWzEwLzEzXSBlbmFibGVzIGl0Ci0gWzExLzEzXSBpbXByb3ZlcyBrQ0ZJIGVycm9y IG1lc3NhZ2VzIGJ5IHNhdmluZyB0aGVuIHBhcnNpbmcgdGhlIENQVSBjb250ZXh0Ci0gWzEyLzEz XSBhZGRzIGEga0NGSSB0ZXN0IG1vZHVsZSBmb3IgVkhFIGFuZCBbMTMvMTNdIGV4dGVuZHMgaXQg dG8gblZIRSAmIHBLVk0KCkFzIGEgcmVzdWx0LCBhbiBpbmZvcm1hdGl2ZSBrQ0ZJIHBhbmljIG1l c3NhZ2UgaXMgcHJpbnRlZCBieSBvciBvbiBiZWhhbGYgb2YgRUwyCmdpdmluZyB0aGUgZXhwZWN0 ZWQgdHlwZSBhbmQgdGFyZ2V0IGFkZHJlc3MgKHBvc3NpYmx5IHJlc29sdmVkIHRvIGEgc3ltYm9s KSBmb3IKVkhFLCBuVkhFLCBhbmQgcEtWTSAoaWZmIENPTkZJR19OVkhFX0VMMl9ERUJVRz15KS4K Ck5vdGUgdGhhdCBrQ0ZJIGVycm9ycyByZW1haW4gZmF0YWwgYXQgRUwyLCBldmVuIHdoZW4gQ09O RklHX0NGSV9QRVJNSVNTSVZFPXkuCgpDaGFuZ2VzIGluIHY0OgogIC0gQWRkcmVzc2VkIFdpbGwn cyBjb21tZW50cyBvbiB2MzoKICAtIFJlbW92ZWQgc2F2ZS9yZXN0b3JlIG9mIHgwLXgxICYgdXNl ZCBfX2d1ZXN0X2V4aXRfcGFuaWMgQUJJIGZvciBuZXcgcm91dGluZXMKICAtIFJld29ya2VkIF9f cGt2bV9pbml0X3N3aXRjaF9wZ2QgbmV3IEFQSSB3aXRoIHNlcGFyYXRlIGFyZ3MKICAtIE1vdmVk IGNvc21ldGljIGNoYW5nZXMgKHJlbmFtaW5nIHRvIF9faHlwX3BhbmljKSBpbnRvIGRlZGljYXRl ZCBjb21taXQKICAtIEZ1cnRoZXIgY2xhcmlmaWVkIHRoZSBjb21taXQgbWVzc2FnZSByZWdhcmRp bmcgUl9BQVJDSDY0X0FCUzMyCiAgLSBlYXJseV9icms2NCgpIHVzZXMgZXNyX2lzX2NmaV9icmso KSAobm93IGludHJvZHVjZWQgYWxvbmcgZXNyX2Jya19jb21tZW50KCkpCiAgLSBBZGRlZCBoZWxw ZXIgdG8gZGlzcGxheSBudkhFIHBhbmljIGJhbm5lcgogIC0gTW92ZWQgdGhlIHRlc3QgbW9kdWxl IHRvIHRoZSBlbmQgb2YgdGhlIHNlcmllcwoKUGllcnJlLUNsw6ltZW50IFRvc2kgKDEzKToKICBL Vk06IGFybTY0OiBGaXggY2xvYmJlcmVkIEVMUiBpbiBzeW5jIGFib3J0L1NFcnJvcgogIEtWTTog YXJtNjQ6IEZpeCBfX3Brdm1faW5pdF9zd2l0Y2hfcGdkIGNhbGwgQUJJCiAgS1ZNOiBhcm02NDog blZIRTogU2ltcGxpZnkgX19ndWVzdF9leGl0X3BhbmljIHBhdGgKICBLVk06IGFybTY0OiBuVkhF OiBBZGQgRUwyaCBzeW5jIGV4Y2VwdGlvbiBoYW5kbGVyCiAgS1ZNOiBhcm02NDogUmVuYW1lIF9f Z3Vlc3RfZXhpdF9wYW5pYyBfX2h5cF9wYW5pYwogIEtWTTogYXJtNjQ6IG5WSEU6IGdlbi1oeXBy ZWw6IFNraXAgUl9BQVJDSDY0X0FCUzMyCiAgS1ZNOiBhcm02NDogVkhFOiBNYXJrIF9faHlwX2Nh bGxfcGFuaWMgX19ub3JldHVybgogIGFybTY0OiBJbnRyb2R1Y2UgZXNyX2NvbW1lbnQoKSAmIGVz cl9pc19jZmlfYnJrKCkKICBLVk06IGFybTY0OiBJbnRyb2R1Y2UgcHJpbnRfbnZoZV9oeXBfcGFu aWMgaGVscGVyCiAgS1ZNOiBhcm02NDogblZIRTogU3VwcG9ydCBDT05GSUdfQ0ZJX0NMQU5HIGF0 IEVMMgogIEtWTTogYXJtNjQ6IEltcHJvdmUgQ09ORklHX0NGSV9DTEFORyBlcnJvciBtZXNzYWdl CiAgS1ZNOiBhcm02NDogVkhFOiBBZGQgdGVzdCBtb2R1bGUgZm9yIGh5cCBrQ0ZJCiAgS1ZNOiBh cm02NDogblZIRTogU3VwcG9ydCB0ZXN0IG1vZHVsZSBmb3IgaHlwIGtDRkkKCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2Vzci5oICAgICAgICAgICAgfCAgMTEgKysKIGFyY2gvYXJtNjQvaW5jbHVk ZS9hc20va3ZtX2FzbS5oICAgICAgICB8ICAgMyArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2 bV9jZmkuaCAgICAgICAgfCAgMzggKysrKysrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1f aHlwLmggICAgICAgIHwgICAzICstCiBhcmNoL2FybTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jICAg ICAgICAgfCAgIDEgKwogYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYyAgICAgIHwg ICA0ICstCiBhcmNoL2FybTY0L2tlcm5lbC90cmFwcy5jICAgICAgICAgICAgICAgfCAgIDggKy0K IGFyY2gvYXJtNjQva3ZtL0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAyMCArKysrCiBhcmNo L2FybTY0L2t2bS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9hcm02NC9r dm0vaGFuZGxlX2V4aXQuYyAgICAgICAgICAgIHwgIDUwICsrKysrKysrLQogYXJjaC9hcm02NC9r dm0vaHlwL2NmaS5jICAgICAgICAgICAgICAgIHwgIDM3ICsrKysrKysKIGFyY2gvYXJtNjQva3Zt L2h5cC9lbnRyeS5TICAgICAgICAgICAgICB8ICAzNCArKysrKy0KIGFyY2gvYXJtNjQva3ZtL2h5 cC9oeXAtZW50cnkuUyAgICAgICAgICB8ICAgNCArLQogYXJjaC9hcm02NC9rdm0vaHlwL2luY2x1 ZGUvaHlwL2NmaS5oICAgIHwgIDQ3ICsrKysrKysrKwogYXJjaC9hcm02NC9rdm0vaHlwL2luY2x1 ZGUvaHlwL3N3aXRjaC5oIHwgICA1ICstCiBhcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9NYWtlZmls ZSAgICAgICAgfCAgIDcgKy0KIGFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2dlbi1oeXByZWwuYyAg ICB8ICAgNiArKwogYXJjaC9hcm02NC9rdm0vaHlwL252aGUvaG9zdC5TICAgICAgICAgIHwgIDIx ICsrLS0KIGFyY2gvYXJtNjQva3ZtL2h5cC9udmhlL2h5cC1pbml0LlMgICAgICB8ICAyMyArKy0t CiBhcmNoL2FybTY0L2t2bS9oeXAvbnZoZS9oeXAtbWFpbi5jICAgICAgfCAgMTkgKysrKwogYXJj aC9hcm02NC9rdm0vaHlwL252aGUvc2V0dXAuYyAgICAgICAgIHwgICA0ICstCiBhcmNoL2FybTY0 L2t2bS9oeXAvbnZoZS9zd2l0Y2guYyAgICAgICAgfCAgIDcgKysKIGFyY2gvYXJtNjQva3ZtL2h5 cC92aGUvTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L2t2bS9oeXAvdmhlL3N3 aXRjaC5jICAgICAgICAgfCAgMzQgKysrKystCiBhcmNoL2FybTY0L2t2bS9oeXBfY2ZpX3Rlc3Qu YyAgICAgICAgICAgfCAgNzUgKysrKysrKysrKysrKwogYXJjaC9hcm02NC9rdm0vaHlwX2NmaV90 ZXN0X21vZHVsZS5jICAgIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKwogMjYgZmlsZXMg Y2hhbmdlZCwgNTUzIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2NmaS5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9rdm0vaHlwL2NmaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9rdm0vaHlwL2luY2x1ZGUvaHlwL2NmaS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9rdm0vaHlwX2NmaV90ZXN0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2t2bS9o eXBfY2ZpX3Rlc3RfbW9kdWxlLmMKCi0tIAoyLjQ1LjEuMjg4LmcwZTBjZDI5OWYxLWdvb2cKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==