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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 568AFCCD194 for ; Thu, 16 Oct 2025 09:10:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v9Jyu-0004EA-0S; Thu, 16 Oct 2025 05:09:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v9Jys-0004Dk-Lz for grub-devel@gnu.org; Thu, 16 Oct 2025 05:09:06 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v9Jyp-00078D-2M for grub-devel@gnu.org; Thu, 16 Oct 2025 05:09:06 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-427015003eeso206754f8f.0 for ; Thu, 16 Oct 2025 02:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1760605739; x=1761210539; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=svYYkuWrunJXLxF5rkFBmEWWCybmEL+lkL/5IIn5jqM=; b=KIBxZtlOaabvLSwYSrUjjXwnTqHKOZtfdsCVmu7655VeG/qBT6NhtOg+ls38OgdJlO DshWq2v5FHLhIP3QERYyL8+F3w/93st0jJuNsd8wt1Fh47IKxft9lmdv+9ZZUnXT48/m ppUnYYEsZ/iKJ5IRzxCC32mZccp8nDJsEVn+TIP0JoCotB4vdV/konzdgio55huoRn6Y XuORN554gLvq8c3fBKSpy59BRS4r2EbkoNo9KAkfWHPIw8o80ocJvgKRNsCqdYSH9JFQ bLTWLhCZsy6kBg90F6ktj30LCUBsxCrBYKd1aRqmPfAyhB3MaOCXSZhmXXmWMXSe/LSR TB0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760605739; x=1761210539; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=svYYkuWrunJXLxF5rkFBmEWWCybmEL+lkL/5IIn5jqM=; b=fQ94r19Pq+VF83EUf1zjqg8JtF/C2bf7cOVASWrfuMFwpGe9I8UQxihVkdnLdW29Dh 98QoYVwDjZBi4y9woIYsxvmtnF6BGm1Q7ELEzY2Ub27j7PbAkYnRMaD4QCL2dIum1oNj H2TZxaYLUxjqYlz2piYM3wKq4j9DVgK4Tnia1aFE7PamWYR6lmRbamLnjXqhOoBbfx3v GmJplv93ZSWF12esvGVWQSjMOYQn13C/rP0j9T0xfqR8m3yiup92eEPiWoYkdWG3s5jk WLIlYutg3gI1tMBnlKkQtW7FJLJmxbeABsea+4eyCuJpNufXKJBWekYUSXzOYmCBK8jV gWQQ== X-Gm-Message-State: AOJu0YxEyQuP3PwYGUwf3xYfJOWyz5B5VI5u2fp4igFgU6i8UUBV7ofB Iv7Y50KKFIvyiFnW9tp8CehZmMpcyudd8OFGg1dhvmVCsHPoPytSfQezWrW4vERu18yvDlZk0dp ErXRR X-Gm-Gg: ASbGnctG4Tajp1djCw4CSpsQfrIenqoW3g76oMtPrVdVLDhTo/EpQZTJklTXRa4gKQ4 p0sDWDahX8rA2u64gs1zZATl3oaulTHfYwuUD/uZOsBKCN2d5yC2eCDVifz7dSoF2CeLYkE88P2 KJzb9qeuemrjPP5AQGmN+0z4uz96uQmX3zfBNuGBQ22esIZ/9n8lWLsdnbq+Xt/7Q0u9GLzMUuA bS889RY0GZJuPhNrfGGJeyo8gE0fm8m10HOgin0WASgdoDrEve1cSJDPhL7iD1bZQ5IBalISTSp bvBptPQ4VONZBtY/2IOS8Ots0Vw8Bu5z3yfa6QmnyV7pxOrrJRrA7QpgQgE6hScZ5WsfLYTYb4W ckrjcV2yxxpzQ/GsQ80kn4qgDDOhlbILUFk9PxRICLScCD/GKC+gq1UkPVm9pkOZojfCuLFoC+c /y/u/zai2I0C8IgSnJGGN93iRuxDHK0qv+v0w56ecVg7VNj4aBH/Y= X-Google-Smtp-Source: AGHT+IFBBs28DkAciIPJDRAe5zLIrI41FA5i0tUGTCEFIySQrKbAbrJxBU2cEFWYOj2Yj1etNssgjw== X-Received: by 2002:a05:6000:460b:b0:426:ff2f:9c15 with SMTP id ffacd0b85a97d-426ff2f9c3cmr1267976f8f.5.1760605739251; Thu, 16 Oct 2025 02:08:59 -0700 (PDT) Received: from localhost (111-240-155-173.dynamic-ip.hinet.net. [111.240.155.173]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-33bb66bf2a4sm1092256a91.20.2025.10.16.02.08.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Oct 2025 02:08:58 -0700 (PDT) To: The development of GNU GRUB Subject: [PATCH v2 10/10] disk/cryptodisk: Add '--hw-accel' to enable hardware acceleration Date: Thu, 16 Oct 2025 17:08:26 +0800 Message-ID: <20251016090826.14983-11-glin@suse.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251016090826.14983-1-glin@suse.com> References: <20251016090826.14983-1-glin@suse.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=glin@suse.com; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Gary Lin via Grub-devel Reply-To: The development of GNU GRUB Cc: Gary Lin , Daniel Kiper , Vladimir 'phcoder' Serbinenko , Glenn Washburn , Michael Chang Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org VGhlICctLWh3LWFjY2VsJyBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdG8gY3J5cHRvbW91bnQgdG8g c3BlZWQgdXAKZGVjcnlwdGlvbiBieSB0ZW1wb3JhcmlseSBlbmFibGluZyBoYXJkd2FyZS1zcGVj aWZpYyBpbnN0cnVjdGlvbgpzZXRzIChlLmcuLCBBVlgsIFNTRSkgaW4gbGliZ2NyeXB0LgoKQSBu ZXcgZmVhdHVyZSwgImZlYXR1cmVfZ2NyeV9od19hY2NlbCIsIGlzIGFsc28gaW50cm9kdWNlZCB0 byBtYXJrIHRoZQphdmFpbGFiaWxpdHkgb2YgdGhlIG5ldyBvcHRpb24uCgpTaWduZWQtb2ZmLWJ5 OiBHYXJ5IExpbiA8Z2xpbkBzdXNlLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFu aWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQogZG9jcy9ncnViLnRleGkgICAgICAgICAgICAgIHwg IDUgKysrLS0KIGdydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYyB8IDI2ICsrKysrKysrKysrKysr KysrKysrKysrLS0tCiBncnViLWNvcmUvbm9ybWFsL21haW4uYyAgICAgfCAgMyArKy0KIDMgZmls ZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2NzL2dydWIudGV4aSBiL2RvY3MvZ3J1Yi50ZXhpCmluZGV4IDUyYTk4YTk3ZC4uOTlmNTgz ZjliIDEwMDY0NAotLS0gYS9kb2NzL2dydWIudGV4aQorKysgYi9kb2NzL2dydWIudGV4aQpAQCAt NzEzNCw3ICs3MTM0LDcgQEAgVGhlIG9wdGlvbiBAb3B0aW9uey0tcXVpZXR9IGNhbiBiZSBnaXZl biB0byBzdXBwcmVzcyB0aGUgb3V0cHV0LgogQG5vZGUgY3J5cHRvbW91bnQKIEBzdWJzZWN0aW9u IGNyeXB0b21vdW50CiAKLUBkZWZmbiBDb21tYW5kIGNyeXB0b21vdW50IFsgW0BvcHRpb257LXB9 IHBhc3N3b3JkXSB8IFtAb3B0aW9uey1rfSBrZXlmaWxlIFtAb3B0aW9uey1PfSBrZXlvZmZzZXRd IFtAb3B0aW9uey1TfSBrZXlzaXplXSBdIHwgW0BvcHRpb257LVB9IHByb3RlY3Rvcl0gXSBbQG9w dGlvbnstSH0gZmlsZV0gZGV2aWNlfEBvcHRpb257LXV9IHV1aWR8QG9wdGlvbnstYX18QG9wdGlv bnstYn0KK0BkZWZmbiBDb21tYW5kIGNyeXB0b21vdW50IFsgW0BvcHRpb257LXB9IHBhc3N3b3Jk XSB8IFtAb3B0aW9uey1rfSBrZXlmaWxlIFtAb3B0aW9uey1PfSBrZXlvZmZzZXRdIFtAb3B0aW9u ey1TfSBrZXlzaXplXSBdIHwgW0BvcHRpb257LVB9IHByb3RlY3Rvcl0gfCBbQG9wdGlvbnstQX1d IF0gW0BvcHRpb257LUh9IGZpbGVdIGRldmljZXxAb3B0aW9uey11fSB1dWlkfEBvcHRpb257LWF9 fEBvcHRpb257LWJ9CiBTZXR1cCBhY2Nlc3MgdG8gZW5jcnlwdGVkIGRldmljZS4gQSBwYXNzcGhy YXNlIHdpbGwgYmUgcmVxdWVzdGVkIGludGVyYWN0aXZlbHksCiBpZiBuZWl0aGVyIHRoZSBAb3B0 aW9uey1wfSBub3IgQG9wdGlvbnsta30gb3B0aW9ucyBhcmUgZ2l2ZW4uIFRoZSBvcHRpb24KIEBv cHRpb257LXB9IGNhbiBiZSB1c2VkIHRvIHN1cHBseSBhIHBhc3NwaHJhc2UgKHVzZWZ1bCBmb3Ig c2NyaXB0cykuCkBAIC03MTQyLDcgKzcxNDIsOCBAQCBBbHRlcm5hdGl2ZWx5IHRoZSBAb3B0aW9u ey1rfSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc3VwcGx5IGEga2V5ZmlsZSB3aXRoCiBvcHRpb25z IEBvcHRpb257LU99IGFuZCBAb3B0aW9uey1TfSBvcHRpb25hbGx5IHN1cHBseWluZyB0aGUgb2Zm c2V0IGFuZCBzaXplLAogcmVzcGVjdGl2ZWx5LCBvZiB0aGUga2V5IGRhdGEgaW4gdGhlIGdpdmVu IGtleSBmaWxlLiBCZXNpZGVzIHRoZSBrZXlmaWxlLAogdGhlIGtleSBjYW4gYmUgc3RvcmVkIGlu IGEga2V5IHByb3RlY3RvciwgYW5kIG9wdGlvbiBAb3B0aW9uey1QfSBjb25maWd1cmVzCi1zcGVj aWZpYyBrZXkgcHJvdGVjdG9yLCBlLmcuIHRwbTIsIHRvIHJldHJpZXZlIHRoZSBrZXkgZnJvbS4K K3NwZWNpZmljIGtleSBwcm90ZWN0b3IsIGUuZy4gdHBtMiwgdG8gcmV0cmlldmUgdGhlIGtleSBm cm9tLiBUaGUgb3B0aW9uIEBvcHRpb257LUF9CitlbmFibGVzIGhhcmR3YXJlIGFjY2VsZXJhdGlv biBpbiBsaWJnY3J5cHQgdG8gc3BlZWQgdXAgZGVjcnlwdGlvbi4KIFRoZSBAb3B0aW9uey1IfSBv cHRpb25zIGNhbiBiZSB1c2VkIHRvIHN1cHBseSBjcnlwdG9tb3VudCBiYWNrZW5kcyB3aXRoIGFu CiBhbHRlcm5hdGl2ZSBoZWFkZXIgZmlsZSAoYWthIGRldGFjaGVkIGhlYWRlcikuIE5vdCBhbGwg YmFja2VuZHMgaGF2ZSBoZWFkZXJzCiBub3Igc3VwcG9ydCBhbHRlcm5hdGl2ZSBoZWFkZXIgZmls ZXMgKGN1cnJlbnRseSBvbmx5IExVS1MxIGFuZCBMVUtTMiBzdXBwb3J0IHRoZW0pLgpkaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jIGIvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRv ZGlzay5jCmluZGV4IDlhZjY2NWRmMy4uMjkwODIxYmI2IDEwMDY0NAotLS0gYS9ncnViLWNvcmUv ZGlzay9jcnlwdG9kaXNrLmMKKysrIGIvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCkBAIC0y OSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8Z3J1Yi9wYXJ0aXRpb24uaD4KICNpbmNsdWRlIDxncnVi L2tleV9wcm90ZWN0b3IuaD4KICNpbmNsdWRlIDxncnViL3NhZmVtYXRoLmg+CisjaW5jbHVkZSA8 Z3J1Yi9od2ZlYXR1cmVzLWdjcnkuaD4KIAogI2lmZGVmIEdSVUJfVVRJTAogI2luY2x1ZGUgPGdy dWIvZW11L2hvc3RkaXNrLmg+CkBAIC00OCw3ICs0OSw4IEBAIGVudW0KICAgICBPUFRJT05fS0VZ RklMRV9PRkZTRVQsCiAgICAgT1BUSU9OX0tFWUZJTEVfU0laRSwKICAgICBPUFRJT05fSEVBREVS LAotICAgIE9QVElPTl9QUk9URUNUT1IKKyAgICBPUFRJT05fUFJPVEVDVE9SLAorICAgIE9QVElP Tl9IV0FDQ0VMCiAgIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3J1Yl9hcmdfb3B0aW9uIG9w dGlvbnNbXSA9CkBAIC02NCw2ICs2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3J1Yl9hcmdf b3B0aW9uIG9wdGlvbnNbXSA9CiAgICAgeyJoZWFkZXIiLCAnSCcsIDAsIE5fKCJSZWFkIGhlYWRl ciBmcm9tIGZpbGUiKSwgMCwgQVJHX1RZUEVfU1RSSU5HfSwKICAgICB7InByb3RlY3RvciIsICdQ JywgR1JVQl9BUkdfT1BUSU9OX1JFUEVBVEFCTEUsCiAgICAgIE5fKCJVbmxvY2sgdm9sdW1lKHMp IHVzaW5nIGtleSBwcm90ZWN0b3IocykuIiksIDAsIEFSR19UWVBFX1NUUklOR30sCisgICAgeyJo dy1hY2NlbCIsICdBJywgMCwgTl8oIkVuYWJsZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24uIiksIDAs IDB9LAogICAgIHswLCAwLCAwLCAwLCAwLCAwfQogICB9OwogCkBAIC0xNDIwLDcgKzE0MjMsNyBA QCBncnViX2NyeXB0b2Rpc2tfY2xlYXJfa2V5X2NhY2hlIChzdHJ1Y3QgZ3J1Yl9jcnlwdG9tb3Vu dF9hcmdzICpjYXJncykKIH0KIAogc3RhdGljIGdydWJfZXJyX3QKLWdydWJfY21kX2NyeXB0b21v dW50IChncnViX2V4dGNtZF9jb250ZXh0X3QgY3R4dCwgaW50IGFyZ2MsIGNoYXIgKiphcmdzKQor X19ncnViX2NtZF9jcnlwdG9tb3VudCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGludCBh cmdjLCBjaGFyICoqYXJncykKIHsKICAgc3RydWN0IGdydWJfYXJnX2xpc3QgKnN0YXRlID0gY3R4 dC0+c3RhdGU7CiAgIHN0cnVjdCBncnViX2NyeXB0b21vdW50X2FyZ3MgY2FyZ3MgPSB7MH07CkBA IC0xNjI5LDYgKzE2MzIsMjMgQEAgZ3J1Yl9jbWRfY3J5cHRvbW91bnQgKGdydWJfZXh0Y21kX2Nv bnRleHRfdCBjdHh0LCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCiAgICAgfQogfQogCitzdGF0aWMg Z3J1Yl9lcnJfdAorZ3J1Yl9jbWRfY3J5cHRvbW91bnQgKGdydWJfZXh0Y21kX2NvbnRleHRfdCBj dHh0LCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCit7CisgIHN0cnVjdCBncnViX2FyZ19saXN0ICpz dGF0ZSA9IGN0eHQtPnN0YXRlOworICBncnViX2Vycl90IGVycjsKKworICBpZiAoc3RhdGVbT1BU SU9OX0hXQUNDRUxdLnNldCkKKyAgICBncnViX2VuYWJsZV9nY3J5X2h3ZiAoKTsKKworICBlcnIg PSBfX2dydWJfY21kX2NyeXB0b21vdW50IChjdHh0LCBhcmdjLCBhcmdzKTsKKworICBpZiAoc3Rh dGVbT1BUSU9OX0hXQUNDRUxdLnNldCkKKyAgICBncnViX3Jlc2V0X2djcnlfaHdmICgpOworCisg IHJldHVybiBlcnI7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl9kaXNrX2RldiBncnViX2NyeXB0 b2Rpc2tfZGV2ID0gewogICAubmFtZSA9ICJjcnlwdG9kaXNrIiwKICAgLmlkID0gR1JVQl9ESVNL X0RFVklDRV9DUllQVE9ESVNLX0lELApAQCAtMTg5OCw3ICsxOTE4LDcgQEAgR1JVQl9NT0RfSU5J VCAoY3J5cHRvZGlzaykKICAgY21kID0gZ3J1Yl9yZWdpc3Rlcl9leHRjbWQgKCJjcnlwdG9tb3Vu dCIsIGdydWJfY21kX2NyeXB0b21vdW50LCAwLAogCQkJICAgICAgTl8oIlsgWy1wIHBhc3N3b3Jk XSB8IFstayBrZXlmaWxlIgogCQkJCSAiIFstTyBrZXlvZmZzZXRdIFstUyBrZXlzaXplXSBdIF0g Wy1IIGZpbGVdIgotCQkJCSAiIFstUCBwcm90ZWN0b3IgWy1QIHByb3RlY3RvciAuLi5dXSIKKwkJ CQkgIiBbLVAgcHJvdGVjdG9yIFstUCBwcm90ZWN0b3IgLi4uXV0gfCBbLUFdIgogCQkJCSAiIDxT T1VSQ0V8LXUgVVVJRHwtYXwtYj4iKSwKIAkJCSAgICAgIE5fKCJNb3VudCBhIGNyeXB0byBkZXZp Y2UuIiksIG9wdGlvbnMpOwogICBncnViX3Byb2Nmc19yZWdpc3RlciAoImx1a3Nfc2NyaXB0Iiwg Jmx1a3Nfc2NyaXB0KTsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9ub3JtYWwvbWFpbi5jIGIvZ3J1 Yi1jb3JlL25vcm1hbC9tYWluLmMKaW5kZXggMDFiNzlhYzMyLi44YzJhY2Y5MzggMTAwNjQ0Ci0t LSBhL2dydWItY29yZS9ub3JtYWwvbWFpbi5jCisrKyBiL2dydWItY29yZS9ub3JtYWwvbWFpbi5j CkBAIC01MTgsNyArNTE4LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmZlYXR1cmVzW10gPSB7CiAg ICJmZWF0dXJlX2RlZmF1bHRfZm9udF9wYXRoIiwgImZlYXR1cmVfYWxsX3ZpZGVvX21vZHVsZSIs CiAgICJmZWF0dXJlX21lbnVlbnRyeV9pZCIsICJmZWF0dXJlX21lbnVlbnRyeV9vcHRpb25zIiwg ImZlYXR1cmVfMjAwX2ZpbmFsIiwKICAgImZlYXR1cmVfbmF0aXZlZGlza19jbWQiLCAiZmVhdHVy ZV90aW1lb3V0X3N0eWxlIiwKLSAgImZlYXR1cmVfc2VhcmNoX2NyeXB0b2Rpc2tfb25seSIsICJm ZWF0dXJlX3RwbTJfY2FwX3BjcnMiCisgICJmZWF0dXJlX3NlYXJjaF9jcnlwdG9kaXNrX29ubHki LCAiZmVhdHVyZV90cG0yX2NhcF9wY3JzIiwKKyAgImZlYXR1cmVfZ2NyeV9od19hY2NlbCIKIH07 CiAKIEdSVUJfTU9EX0lOSVQobm9ybWFsKQotLSAKMi41MS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1 Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dy dWItZGV2ZWwK