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 BE411C47DD9 for ; Mon, 22 Jan 2024 00:23:56 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yAQK1w+hMneSX02qW+8sQaGuK1wPG8tqIq3jzU+poUw=; b=EXPIpI8C6hHg9W c8j35P+2+7hmRUjYISde7+PbYRVrFeAKBUb5ce/KwOSH+5uipbv03i+YumjigF9r1DtaIt+4/djMH E8c4fhs74SKluqWZ3pQ8iBQSqruRHabnsXfqB1avFdH6YosZYeWH7hYR9kLtUmmFzh8zYEhjPUtP1 oW41z86CuscoiJRptbRE9GjB/LV2WVOekiF6bZjAYIgUU7DTxvBwgSluhvkFz0g8nWQC6ixCOdGDC jS5vpdawqApu7aYO2H75PFqHatrHDCevF1r3o8iZHFgCeU+U18V8xZSURZZwguaPB+EImN/nHszf1 +y62p+5uz9OG6LUCZU7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rRi6F-00AG49-2o; Mon, 22 Jan 2024 00:23:39 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rRi69-00AFyr-0d for linux-riscv@lists.infradead.org; Mon, 22 Jan 2024 00:23:37 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id AA61061004; Mon, 22 Jan 2024 00:23:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5499C433F1; Mon, 22 Jan 2024 00:23:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705882982; bh=Z7O66/3S299CaWxeCImK4eAKbrvAq6YIpzzHpwda8+s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Wqwd1GBeATNnaQuuILYQEDBsdjICE76qnCPAFU32h92NV2CgumMULXp6K0lOUc2Uj iT9wf3kFmmquqvaKgE87yWJRHWbTzMdu8AJoxE6eEaSlu6VC4LDFDjsvcMniLMPr2z lgXt3wfvtTLYcGC+/hOivfe4UuMJR4cibihDL4PLeiOW1rKDuyQGSKJXim2q/oyhDb RTJn/ws1kemXdyiUBhHM8cp7xOPeBJwVaV/CtXbJBJnt9e/abqoCiUbFKj92e55aD1 aQQCd7pi/AL93PoQf8YQhXP7XAw7Cmh83kmuVbu8VFa68JDGzcAH16mpHTfgxQWv6s DzI0mepDp9A/g== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Albert Ou , Andy Chiu , Ard Biesheuvel , =?UTF-8?q?Christoph=20M=C3=BCllner?= , Heiko Stuebner , Jerry Shih , Palmer Dabbelt , Paul Walmsley , Phoebe Chen , hongrong.hsu@sifive.com, Charalampos Mitrodimas , Heiko Stuebner Subject: [PATCH v3 07/10] crypto: riscv - add vector crypto accelerated SHA-{256,224} Date: Sun, 21 Jan 2024 16:19:18 -0800 Message-ID: <20240122002024.27477-8-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240122002024.27477-1-ebiggers@kernel.org> References: <20240122002024.27477-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240121_162333_340355_47EBF8B3 X-CRM114-Status: GOOD ( 30.66 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgoKQWRkIGFuIGltcGxlbWVu dGF0aW9uIG9mIFNIQS0yNTYgYW5kIFNIQS0yMjQgdXNpbmcgdGhlIFp2a25oYSBvciBadmtuaGIK ZXh0ZW5zaW9uLiAgVGhlIGFzc2VtYmx5IGNvZGUgaXMgZGVyaXZlZCBmcm9tIE9wZW5TU0wgY29k ZQoob3BlbnNzbC9vcGVuc3NsIzIxOTIzKSB0aGF0IHdhcyBkdWFsLWxpY2Vuc2VkIHNvIHRoYXQg aXQgY291bGQgYmUKcmV1c2VkIGluIHRoZSBrZXJuZWwuICBOZXZlcnRoZWxlc3MsIHRoZSBhc3Nl bWJseSBoYXMgYmVlbiBzaWduaWZpY2FudGx5CnJld29ya2VkIGZvciBpbnRlZ3JhdGlvbiB3aXRo IHRoZSBrZXJuZWwsIGZvciBleGFtcGxlIGJ5IHVzaW5nIGEgcmVndWxhcgouUyBmaWxlIGluc3Rl YWQgb2YgdGhlIHNvLWNhbGxlZCBwZXJsYXNtLCB1c2luZyB0aGUgYXNzZW1ibGVyIGluc3RlYWQg b2YKYmFyZSAnLmluc3QnLCBhbmQgZ3JlYXRseSByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uLgoK Q28tZGV2ZWxvcGVkLWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxjaGFyYWxhbXBvcy5taXRy b2RpbWFzQHZydWxsLmV1PgpTaWduZWQtb2ZmLWJ5OiBDaGFyYWxhbXBvcyBNaXRyb2RpbWFzIDxj aGFyYWxhbXBvcy5taXRyb2RpbWFzQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IEhlaWtvIFN0 dWVibmVyIDxoZWlrby5zdHVlYm5lckB2cnVsbC5ldT4KU2lnbmVkLW9mZi1ieTogSGVpa28gU3R1 ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1PgpDby1kZXZlbG9wZWQtYnk6IFBob2ViZSBD aGVuIDxwaG9lYmUuY2hlbkBzaWZpdmUuY29tPgpTaWduZWQtb2ZmLWJ5OiBQaG9lYmUgQ2hlbiA8 cGhvZWJlLmNoZW5Ac2lmaXZlLmNvbT4KU2lnbmVkLW9mZi1ieTogSmVycnkgU2hpaCA8amVycnku c2hpaEBzaWZpdmUuY29tPgpDby1kZXZlbG9wZWQtYnk6IEVyaWMgQmlnZ2VycyA8ZWJpZ2dlcnNA Z29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUu Y29tPgotLS0KIGFyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8 ICAxMSArCiBhcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAg IDMgKwogYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtZ2x1ZS5jICAgICAgIHwgMTM3 ICsrKysrKysrKysrCiAuLi4vc2hhMjU2LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLlMg ICAgfCAyMjUgKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2 NjQtZ2x1ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJp c2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLlMKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2Ny eXB0by9LY29uZmlnIGIvYXJjaC9yaXNjdi9jcnlwdG8vS2NvbmZpZwppbmRleCA2NzZiYTVhZjhm NTVhLi42ODdkYmI3MWY3ZDUwIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmln CisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcKQEAgLTMyLDExICszMiwyMiBAQCBjb25m aWcgQ1JZUFRPX0NIQUNIQV9SSVNDVjY0CiBjb25maWcgQ1JZUFRPX0dIQVNIX1JJU0NWNjQKIAl0 cmlzdGF0ZSAiSGFzaCBmdW5jdGlvbnM6IEdIQVNIIgogCWRlcGVuZHMgb24gNjRCSVQgJiYgUklT Q1ZfSVNBX1YgJiYgVE9PTENIQUlOX0hBU19WRUNUT1JfQ1JZUFRPCiAJc2VsZWN0IENSWVBUT19H Q00KIAloZWxwCiAJICBHQ00gR0hBU0ggZnVuY3Rpb24gKE5JU1QgU1AgODAwLTM4RCkKIAogCSAg QXJjaGl0ZWN0dXJlOiByaXNjdjY0IHVzaW5nOgogCSAgLSBadmtnIHZlY3RvciBjcnlwdG8gZXh0 ZW5zaW9uCiAKK2NvbmZpZyBDUllQVE9fU0hBMjU2X1JJU0NWNjQKKwl0cmlzdGF0ZSAiSGFzaCBm dW5jdGlvbnM6IFNIQS0yMjQgYW5kIFNIQS0yNTYiCisJZGVwZW5kcyBvbiA2NEJJVCAmJiBSSVND Vl9JU0FfViAmJiBUT09MQ0hBSU5fSEFTX1ZFQ1RPUl9DUllQVE8KKwlzZWxlY3QgQ1JZUFRPX1NI QTI1NgorCWhlbHAKKwkgIFNIQS0yMjQgYW5kIFNIQS0yNTYgc2VjdXJlIGhhc2ggYWxnb3JpdGht IChGSVBTIDE4MCkKKworCSAgQXJjaGl0ZWN0dXJlOiByaXNjdjY0IHVzaW5nOgorCSAgLSBadmtu aGEgb3IgWnZrbmhiIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9ucworCSAgLSBadmtiIHZlY3RvciBj cnlwdG8gZXh0ZW5zaW9uCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRv L01ha2VmaWxlIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKaW5kZXggMDRjOTZiNjEwNzQ4 OC4uNTYwNjRlYTZlM2VmZSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUK KysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKQEAgLTIsMTAgKzIsMTMgQEAKIAogb2Jq LSQoQ09ORklHX0NSWVBUT19BRVNfUklTQ1Y2NCkgKz0gYWVzLXJpc2N2NjQubwogYWVzLXJpc2N2 NjQteSA6PSBhZXMtcmlzY3Y2NC1nbHVlLm8gYWVzLXJpc2N2NjQtenZrbmVkLm8gXAogCQkgYWVz LXJpc2N2NjQtenZrbmVkLXp2YmItenZrZy5vIGFlcy1yaXNjdjY0LXp2a25lZC16dmtiLm8KIAog b2JqLSQoQ09ORklHX0NSWVBUT19DSEFDSEFfUklTQ1Y2NCkgKz0gY2hhY2hhLXJpc2N2NjQubwog Y2hhY2hhLXJpc2N2NjQteSA6PSBjaGFjaGEtcmlzY3Y2NC1nbHVlLm8gY2hhY2hhLXJpc2N2NjQt enZrYi5vCiAKIG9iai0kKENPTkZJR19DUllQVE9fR0hBU0hfUklTQ1Y2NCkgKz0gZ2hhc2gtcmlz Y3Y2NC5vCiBnaGFzaC1yaXNjdjY0LXkgOj0gZ2hhc2gtcmlzY3Y2NC1nbHVlLm8gZ2hhc2gtcmlz Y3Y2NC16dmtnLm8KKworb2JqLSQoQ09ORklHX0NSWVBUT19TSEEyNTZfUklTQ1Y2NCkgKz0gc2hh MjU2LXJpc2N2NjQubworc2hhMjU2LXJpc2N2NjQteSA6PSBzaGEyNTYtcmlzY3Y2NC1nbHVlLm8g c2hhMjU2LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiLm8KZGlmZiAtLWdpdCBhL2FyY2gv cmlzY3YvY3J5cHRvL3NoYTI1Ni1yaXNjdjY0LWdsdWUuYyBiL2FyY2gvcmlzY3YvY3J5cHRvL3No YTI1Ni1yaXNjdjY0LWdsdWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi43MWUwNTFlNDBhNjRmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8v c2hhMjU2LXJpc2N2NjQtZ2x1ZS5jCkBAIC0wLDAgKzEsMTM3IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorLyoKKyAqIFNIQS0yNTYgYW5kIFNIQS0yMjQg dXNpbmcgdGhlIFJJU0MtViB2ZWN0b3IgY3J5cHRvIGV4dGVuc2lvbnMKKyAqCisgKiBDb3B5cmln aHQgKEMpIDIwMjIgVlJVTEwgR21iSAorICogQXV0aG9yOiBIZWlrbyBTdHVlYm5lciA8aGVpa28u c3R1ZWJuZXJAdnJ1bGwuZXU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIzIFNpRml2ZSwgSW5j LgorICogQXV0aG9yOiBKZXJyeSBTaGloIDxqZXJyeS5zaGloQHNpZml2ZS5jb20+CisgKi8KKwor I2luY2x1ZGUgPGFzbS9zaW1kLmg+CisjaW5jbHVkZSA8YXNtL3ZlY3Rvci5oPgorI2luY2x1ZGUg PGNyeXB0by9pbnRlcm5hbC9oYXNoLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2ludGVybmFsL3NpbWQu aD4KKyNpbmNsdWRlIDxjcnlwdG8vc2hhMjU2X2Jhc2UuaD4KKyNpbmNsdWRlIDxsaW51eC9saW5r YWdlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKKy8qCisgKiBOb3RlOiB0aGUgYXNt IGZ1bmN0aW9uIG9ubHkgdXNlcyB0aGUgJ3N0YXRlJyBmaWVsZCBvZiBzdHJ1Y3Qgc2hhMjU2X3N0 YXRlLgorICogSXQgaXMgYXNzdW1lZCB0byBiZSB0aGUgZmlyc3QgZmllbGQuCisgKi8KK2FzbWxp bmthZ2Ugdm9pZCBzaGEyNTZfdHJhbnNmb3JtX3p2a25oYV9vcl96dmtuaGJfenZrYigKKwlzdHJ1 Y3Qgc2hhMjU2X3N0YXRlICpzdGF0ZSwgY29uc3QgdTggKmRhdGEsIGludCBudW1fYmxvY2tzKTsK Kworc3RhdGljIGludCByaXNjdjY0X3NoYTI1Nl91cGRhdGUoc3RydWN0IHNoYXNoX2Rlc2MgKmRl c2MsIGNvbnN0IHU4ICpkYXRhLAorCQkJCSB1bnNpZ25lZCBpbnQgbGVuKQoreworCS8qCisJICog RW5zdXJlIHN0cnVjdCBzaGEyNTZfc3RhdGUgYmVnaW5zIGRpcmVjdGx5IHdpdGggdGhlIFNIQS0y NTYKKwkgKiAyNTYtYml0IGludGVybmFsIHN0YXRlLCBhcyB0aGlzIGlzIHdoYXQgdGhlIGFzbSBm dW5jdGlvbiBleHBlY3RzLgorCSAqLworCUJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1Y3Qgc2hh MjU2X3N0YXRlLCBzdGF0ZSkgIT0gMCk7CisKKwlpZiAoY3J5cHRvX3NpbWRfdXNhYmxlKCkpIHsK KwkJa2VybmVsX3ZlY3Rvcl9iZWdpbigpOworCQlzaGEyNTZfYmFzZV9kb191cGRhdGUoZGVzYywg ZGF0YSwgbGVuLAorCQkJCSAgICAgIHNoYTI1Nl90cmFuc2Zvcm1fenZrbmhhX29yX3p2a25oYl96 dmtiKTsKKwkJa2VybmVsX3ZlY3Rvcl9lbmQoKTsKKwl9IGVsc2UgeworCQljcnlwdG9fc2hhMjU2 X3VwZGF0ZShkZXNjLCBkYXRhLCBsZW4pOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCByaXNjdjY0X3NoYTI1Nl9maW51cChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgY29uc3QgdTgg KmRhdGEsCisJCQkJdW5zaWduZWQgaW50IGxlbiwgdTggKm91dCkKK3sKKwlpZiAoY3J5cHRvX3Np bWRfdXNhYmxlKCkpIHsKKwkJa2VybmVsX3ZlY3Rvcl9iZWdpbigpOworCQlpZiAobGVuKQorCQkJ c2hhMjU2X2Jhc2VfZG9fdXBkYXRlKAorCQkJCWRlc2MsIGRhdGEsIGxlbiwKKwkJCQlzaGEyNTZf dHJhbnNmb3JtX3p2a25oYV9vcl96dmtuaGJfenZrYik7CisJCXNoYTI1Nl9iYXNlX2RvX2ZpbmFs aXplKAorCQkJZGVzYywgc2hhMjU2X3RyYW5zZm9ybV96dmtuaGFfb3JfenZrbmhiX3p2a2IpOwor CQlrZXJuZWxfdmVjdG9yX2VuZCgpOworCisJCXJldHVybiBzaGEyNTZfYmFzZV9maW5pc2goZGVz Yywgb3V0KTsKKwl9CisKKwlyZXR1cm4gY3J5cHRvX3NoYTI1Nl9maW51cChkZXNjLCBkYXRhLCBs ZW4sIG91dCk7Cit9CisKK3N0YXRpYyBpbnQgcmlzY3Y2NF9zaGEyNTZfZmluYWwoc3RydWN0IHNo YXNoX2Rlc2MgKmRlc2MsIHU4ICpvdXQpCit7CisJcmV0dXJuIHJpc2N2NjRfc2hhMjU2X2ZpbnVw KGRlc2MsIE5VTEwsIDAsIG91dCk7Cit9CisKK3N0YXRpYyBpbnQgcmlzY3Y2NF9zaGEyNTZfZGln ZXN0KHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLCBjb25zdCB1OCAqZGF0YSwKKwkJCQkgdW5zaWdu ZWQgaW50IGxlbiwgdTggKm91dCkKK3sKKwlyZXR1cm4gc2hhMjU2X2Jhc2VfaW5pdChkZXNjKSA/ OgorCSAgICAgICByaXNjdjY0X3NoYTI1Nl9maW51cChkZXNjLCBkYXRhLCBsZW4sIG91dCk7Cit9 CisKK3N0YXRpYyBzdHJ1Y3Qgc2hhc2hfYWxnIHJpc2N2NjRfc2hhMjU2X2FsZ3NbXSA9IHsKKwl7 CisJCS5pbml0ID0gc2hhMjU2X2Jhc2VfaW5pdCwKKwkJLnVwZGF0ZSA9IHJpc2N2NjRfc2hhMjU2 X3VwZGF0ZSwKKwkJLmZpbmFsID0gcmlzY3Y2NF9zaGEyNTZfZmluYWwsCisJCS5maW51cCA9IHJp c2N2NjRfc2hhMjU2X2ZpbnVwLAorCQkuZGlnZXN0ID0gcmlzY3Y2NF9zaGEyNTZfZGlnZXN0LAor CQkuZGVzY3NpemUgPSBzaXplb2Yoc3RydWN0IHNoYTI1Nl9zdGF0ZSksCisJCS5kaWdlc3RzaXpl ID0gU0hBMjU2X0RJR0VTVF9TSVpFLAorCQkuYmFzZSA9IHsKKwkJCS5jcmFfYmxvY2tzaXplID0g U0hBMjU2X0JMT0NLX1NJWkUsCisJCQkuY3JhX3ByaW9yaXR5ID0gMzAwLAorCQkJLmNyYV9uYW1l ID0gInNoYTI1NiIsCisJCQkuY3JhX2RyaXZlcl9uYW1lID0gInNoYTI1Ni1yaXNjdjY0LXp2a25o YV9vcl96dmtuaGItenZrYiIsCisJCQkuY3JhX21vZHVsZSA9IFRISVNfTU9EVUxFLAorCQl9LAor CX0sIHsKKwkJLmluaXQgPSBzaGEyMjRfYmFzZV9pbml0LAorCQkudXBkYXRlID0gcmlzY3Y2NF9z aGEyNTZfdXBkYXRlLAorCQkuZmluYWwgPSByaXNjdjY0X3NoYTI1Nl9maW5hbCwKKwkJLmZpbnVw ID0gcmlzY3Y2NF9zaGEyNTZfZmludXAsCisJCS5kZXNjc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2hh MjU2X3N0YXRlKSwKKwkJLmRpZ2VzdHNpemUgPSBTSEEyMjRfRElHRVNUX1NJWkUsCisJCS5iYXNl ID0geworCQkJLmNyYV9ibG9ja3NpemUgPSBTSEEyMjRfQkxPQ0tfU0laRSwKKwkJCS5jcmFfcHJp b3JpdHkgPSAzMDAsCisJCQkuY3JhX25hbWUgPSAic2hhMjI0IiwKKwkJCS5jcmFfZHJpdmVyX25h bWUgPSAic2hhMjI0LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16dmtiIiwKKwkJCS5jcmFfbW9k dWxlID0gVEhJU19NT0RVTEUsCisJCX0sCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHJp c2N2NjRfc2hhMjU2X21vZF9pbml0KHZvaWQpCit7CisJLyogQm90aCB6dmtuaGEgYW5kIHp2a25o YiBwcm92aWRlIHRoZSBTSEEtMjU2IGluc3RydWN0aW9ucy4gKi8KKwlpZiAoKHJpc2N2X2lzYV9l eHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFpWS05IQSkgfHwKKwkgICAgIHJpc2N2X2lzYV9leHRl bnNpb25fYXZhaWxhYmxlKE5VTEwsIFpWS05IQikpICYmCisJICAgIHJpc2N2X2lzYV9leHRlbnNp b25fYXZhaWxhYmxlKE5VTEwsIFpWS0IpICYmCisJICAgIHJpc2N2X3ZlY3Rvcl92bGVuKCkgPj0g MTI4KQorCQlyZXR1cm4gY3J5cHRvX3JlZ2lzdGVyX3NoYXNoZXMocmlzY3Y2NF9zaGEyNTZfYWxn cywKKwkJCQkJICAgICAgIEFSUkFZX1NJWkUocmlzY3Y2NF9zaGEyNTZfYWxncykpOworCisJcmV0 dXJuIC1FTk9ERVY7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCByaXNjdjY0X3NoYTI1Nl9tb2Rf ZXhpdCh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX3NoYXNoZXMocmlzY3Y2NF9zaGEyNTZf YWxncywKKwkJCQkgIEFSUkFZX1NJWkUocmlzY3Y2NF9zaGEyNTZfYWxncykpOworfQorCittb2R1 bGVfaW5pdChyaXNjdjY0X3NoYTI1Nl9tb2RfaW5pdCk7Cittb2R1bGVfZXhpdChyaXNjdjY0X3No YTI1Nl9tb2RfZXhpdCk7CisKK01PRFVMRV9ERVNDUklQVElPTigiU0hBLTI1NiAoUklTQy1WIGFj Y2VsZXJhdGVkKSIpOworTU9EVUxFX0FVVEhPUigiSGVpa28gU3R1ZWJuZXIgPGhlaWtvLnN0dWVi bmVyQHZydWxsLmV1PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTX0NS WVBUTygic2hhMjU2Iik7CitNT0RVTEVfQUxJQVNfQ1JZUFRPKCJzaGEyMjQiKTsKZGlmZiAtLWdp dCBhL2FyY2gvcmlzY3YvY3J5cHRvL3NoYTI1Ni1yaXNjdjY0LXp2a25oYV9vcl96dmtuaGItenZr Yi5TIGIvYXJjaC9yaXNjdi9jcnlwdG8vc2hhMjU2LXJpc2N2NjQtenZrbmhhX29yX3p2a25oYi16 dmtiLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOGViY2MxN2Rl NGRjZQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL3NoYTI1Ni1yaXNjdjY0 LXp2a25oYV9vcl96dmtuaGItenZrYi5TCkBAIC0wLDAgKzEsMjI1IEBACisvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBPUiBCU0QtMi1DbGF1c2UgKi8KKy8vCisvLyBUaGlz IGZpbGUgaXMgZHVhbC1saWNlbnNlZCwgbWVhbmluZyB0aGF0IHlvdSBjYW4gdXNlIGl0IHVuZGVy IHlvdXIKKy8vIGNob2ljZSBvZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyB0d28gbGljZW5zZXM6 CisvLworLy8gQ29weXJpZ2h0IDIwMjMgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwg UmlnaHRzIFJlc2VydmVkLgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z ZSAyLjAgKHRoZSAiTGljZW5zZSIpLiBZb3UgY2FuIG9idGFpbgorLy8gYSBjb3B5IGluIHRoZSBm aWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gb3IgYXQKKy8vIGh0dHBzOi8v d3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKy8vCisvLyBvcgorLy8KKy8vIENv cHlyaWdodCAoYykgMjAyMywgQ2hyaXN0b3BoIE3DvGxsbmVyIDxjaHJpc3RvcGgubXVlbGxuZXJA dnJ1bGwuZXU+CisvLyBDb3B5cmlnaHQgKGMpIDIwMjMsIFBob2ViZSBDaGVuIDxwaG9lYmUuY2hl bkBzaWZpdmUuY29tPgorLy8gQ29weXJpZ2h0IDIwMjQgR29vZ2xlIExMQworLy8gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK Ky8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo ZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp dGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBB TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8g TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U CisvLyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBUaGUgZ2VuZXJhdGVkIGNvZGUgb2YgdGhp cyBmaWxlIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBSSVNDLVYgZXh0ZW5zaW9uczoKKy8vIC0g UlY2NEkKKy8vIC0gUklTQy1WIFZlY3RvciAoJ1YnKSB3aXRoIFZMRU4gPj0gMTI4CisvLyAtIFJJ U0MtViBWZWN0b3IgU0hBLTIgU2VjdXJlIEhhc2ggZXh0ZW5zaW9uICgnWnZrbmhhJyBvciAnWnZr bmhiJykKKy8vIC0gUklTQy1WIFZlY3RvciBDcnlwdG9ncmFwaHkgQml0LW1hbmlwdWxhdGlvbiBl eHRlbnNpb24gKCdadmtiJykKKworI2luY2x1ZGUgPGxpbnV4L2NmaV90eXBlcy5oPgorCisudGV4 dAorLm9wdGlvbiBhcmNoLCArenZrbmhhLCArenZrYgorCisjZGVmaW5lIFNUQVRFUAkJYTAKKyNk ZWZpbmUgREFUQQkJYTEKKyNkZWZpbmUgTlVNX0JMT0NLUwlhMgorCisjZGVmaW5lIFNUQVRFUF9D CWEzCisKKyNkZWZpbmUgTUFTSwkJdjAKKyNkZWZpbmUgSU5ESUNFUwkJdjEKKyNkZWZpbmUgVzAJ CXYyCisjZGVmaW5lIFcxCQl2MworI2RlZmluZSBXMgkJdjQKKyNkZWZpbmUgVzMJCXY1CisjZGVm aW5lIFZUTVAJCXY2CisjZGVmaW5lIEZFQkEJCXY3CisjZGVmaW5lIEhHREMJCXY4CisjZGVmaW5l IEswCQl2MTAKKyNkZWZpbmUgSzEJCXYxMQorI2RlZmluZSBLMgkJdjEyCisjZGVmaW5lIEszCQl2 MTMKKyNkZWZpbmUgSzQJCXYxNAorI2RlZmluZSBLNQkJdjE1CisjZGVmaW5lIEs2CQl2MTYKKyNk ZWZpbmUgSzcJCXYxNworI2RlZmluZSBLOAkJdjE4CisjZGVmaW5lIEs5CQl2MTkKKyNkZWZpbmUg SzEwCQl2MjAKKyNkZWZpbmUgSzExCQl2MjEKKyNkZWZpbmUgSzEyCQl2MjIKKyNkZWZpbmUgSzEz CQl2MjMKKyNkZWZpbmUgSzE0CQl2MjQKKyNkZWZpbmUgSzE1CQl2MjUKKyNkZWZpbmUgUFJFVl9G RUJBCXYyNgorI2RlZmluZSBQUkVWX0hHREMJdjI3CisKKy8vIERvIDQgcm91bmRzIG9mIFNIQS0y NTYuICB3MCBjb250YWlucyB0aGUgY3VycmVudCA0IG1lc3NhZ2Ugc2NoZWR1bGUgd29yZHMuCisv LworLy8gSWYgbm90IGFsbCB0aGUgbWVzc2FnZSBzY2hlZHVsZSB3b3JkcyBoYXZlIGJlZW4gY29t cHV0ZWQgeWV0LCB0aGVuIHRoaXMgYWxzbworLy8gY29tcHV0ZXMgNCBtb3JlIG1lc3NhZ2Ugc2No ZWR1bGUgd29yZHMuICB3MS13MyBjb250YWluIHRoZSBuZXh0IDMgZ3JvdXBzIG9mIDQKKy8vIG1l c3NhZ2Ugc2NoZWR1bGUgd29yZHM7IHRoaXMgbWFjcm8gY29tcHV0ZXMgdGhlIGdyb3VwIGFmdGVy IHczIGFuZCB3cml0ZXMgaXQKKy8vIHRvIHcwLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBuZXh0ICh3 MCwgdzEsIHcyLCB3MykgaXMgdGhlIGN1cnJlbnQgKHcxLCB3MiwgdzMsCisvLyB3MCksIHNvIHRo ZSBjYWxsZXIgbXVzdCBjeWNsZSB0aHJvdWdoIHRoZSByZWdpc3RlcnMgYWNjb3JkaW5nbHkuCisu bWFjcm8Jc2hhMjU2XzRyb3VuZHMJbGFzdCwgaywgdzAsIHcxLCB3MiwgdzMKKwl2YWRkLnZ2CQlW VE1QLCBcaywgXHcwCisJdnNoYTJjbC52dglIR0RDLCBGRUJBLCBWVE1QCisJdnNoYTJjaC52dglG RUJBLCBIR0RDLCBWVE1QCisuaWYgIVxsYXN0CisJdm1lcmdlLnZ2bQlWVE1QLCBcdzIsIFx3MSwg TUFTSworCXZzaGEybXMudnYJXHcwLCBWVE1QLCBcdzMKKy5lbmRpZgorLmVuZG0KKworLm1hY3Jv CXNoYTI1Nl8xNnJvdW5kcwlsYXN0LCBrMCwgazEsIGsyLCBrMworCXNoYTI1Nl80cm91bmRzCVxs YXN0LCBcazAsIFcwLCBXMSwgVzIsIFczCisJc2hhMjU2XzRyb3VuZHMJXGxhc3QsIFxrMSwgVzEs IFcyLCBXMywgVzAKKwlzaGEyNTZfNHJvdW5kcwlcbGFzdCwgXGsyLCBXMiwgVzMsIFcwLCBXMQor CXNoYTI1Nl80cm91bmRzCVxsYXN0LCBcazMsIFczLCBXMCwgVzEsIFcyCisuZW5kbQorCisvLyB2 b2lkIHNoYTI1Nl90cmFuc2Zvcm1fenZrbmhhX29yX3p2a25oYl96dmtiKHUzMiBzdGF0ZVs4XSwg Y29uc3QgdTggKmRhdGEsCisvLwkJCQkJICAgICAgIGludCBudW1fYmxvY2tzKTsKK1NZTV9UWVBF RF9GVU5DX1NUQVJUKHNoYTI1Nl90cmFuc2Zvcm1fenZrbmhhX29yX3p2a25oYl96dmtiKQorCisJ Ly8gTG9hZCB0aGUgcm91bmQgY29uc3RhbnRzIGludG8gSzAtSzE1LgorCXZzZXRpdmxpCXplcm8s IDQsIGUzMiwgbTEsIHRhLCBtYQorCWxhCQl0MCwgSzI1NgorCXZsZTMyLnYJCUswLCAodDApCisJ YWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUsxLCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgor CXZsZTMyLnYJCUsyLCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUszLCAodDAp CisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUs0LCAodDApCisJYWRkaQkJdDAsIHQwLCAx NgorCXZsZTMyLnYJCUs1LCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUs2LCAo dDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUs3LCAodDApCisJYWRkaQkJdDAsIHQw LCAxNgorCXZsZTMyLnYJCUs4LCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUs5 LCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUsxMCwgKHQwKQorCWFkZGkJCXQw LCB0MCwgMTYKKwl2bGUzMi52CQlLMTEsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJdmxlMzIu dgkJSzEyLCAodDApCisJYWRkaQkJdDAsIHQwLCAxNgorCXZsZTMyLnYJCUsxMywgKHQwKQorCWFk ZGkJCXQwLCB0MCwgMTYKKwl2bGUzMi52CQlLMTQsICh0MCkKKwlhZGRpCQl0MCwgdDAsIDE2CisJ dmxlMzIudgkJSzE1LCAodDApCisKKwkvLyBTZXR1cCBtYXNrIGZvciB0aGUgdm1lcmdlIHRvIHJl cGxhY2UgdGhlIGZpcnN0IHdvcmQgKGlkeD09MCkgaW4KKwkvLyBtZXNzYWdlIHNjaGVkdWxpbmcu ICBUaGVyZSBhcmUgNCB3b3Jkcywgc28gYW4gOC1iaXQgbWFzayBzdWZmaWNlcy4KKwl2c2V0aXZs aQl6ZXJvLCAxLCBlOCwgbTEsIHRhLCBtYQorCXZtdi52LmkJCU1BU0ssIDB4MDEKKworCS8vIExv YWQgdGhlIHN0YXRlLiAgVGhlIHN0YXRlIGlzIHN0b3JlZCBhcyB7YSxiLGMsZCxlLGYsZyxofSwg YnV0IHdlCisJLy8gbmVlZCB7ZixlLGIsYX0se2gsZyxkLGN9LiAgVGhlIGRzdCB2dHlwZSBpcyBl MzJtMSBhbmQgdGhlIGluZGV4IHZ0eXBlCisJLy8gaXMgZThtZjQuICBXZSB1c2UgaW5kZXgtbG9h ZCB3aXRoIHRoZSBpOCBpbmRpY2VzIHsyMCwgMTYsIDQsIDB9LAorCS8vIGxvYWRlZCB1c2luZyB0 aGUgMzItYml0IGxpdHRsZSBlbmRpYW4gdmFsdWUgMHgwMDA0MTAxNC4KKwlsaQkJdDAsIDB4MDAw NDEwMTQKKwl2c2V0aXZsaQl6ZXJvLCAxLCBlMzIsIG0xLCB0YSwgbWEKKwl2bXYudi54CQlJTkRJ Q0VTLCB0MAorCWFkZGkJCVNUQVRFUF9DLCBTVEFURVAsIDgKKwl2c2V0aXZsaQl6ZXJvLCA0LCBl MzIsIG0xLCB0YSwgbWEKKwl2bHV4ZWk4LnYJRkVCQSwgKFNUQVRFUCksIElORElDRVMKKwl2bHV4 ZWk4LnYJSEdEQywgKFNUQVRFUF9DKSwgSU5ESUNFUworCisuTG5leHRfYmxvY2s6CisJYWRkaQkJ TlVNX0JMT0NLUywgTlVNX0JMT0NLUywgLTEKKworCS8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRl LCBhcyBpdCdzIG5lZWRlZCBsYXRlci4KKwl2bXYudi52CQlQUkVWX0ZFQkEsIEZFQkEKKwl2bXYu di52CQlQUkVWX0hHREMsIEhHREMKKworCS8vIExvYWQgdGhlIG5leHQgNTEyLWJpdCBtZXNzYWdl IGJsb2NrIGFuZCBlbmRpYW4tc3dhcCBlYWNoIDMyLWJpdCB3b3JkLgorCXZsZTMyLnYJCVcwLCAo REFUQSkKKwl2cmV2OC52CQlXMCwgVzAKKwlhZGRpCQlEQVRBLCBEQVRBLCAxNgorCXZsZTMyLnYJ CVcxLCAoREFUQSkKKwl2cmV2OC52CQlXMSwgVzEKKwlhZGRpCQlEQVRBLCBEQVRBLCAxNgorCXZs ZTMyLnYJCVcyLCAoREFUQSkKKwl2cmV2OC52CQlXMiwgVzIKKwlhZGRpCQlEQVRBLCBEQVRBLCAx NgorCXZsZTMyLnYJCVczLCAoREFUQSkKKwl2cmV2OC52CQlXMywgVzMKKwlhZGRpCQlEQVRBLCBE QVRBLCAxNgorCisJLy8gRG8gdGhlIDY0IHJvdW5kcyBvZiBTSEEtMjU2LgorCXNoYTI1Nl8xNnJv dW5kcwkwLCBLMCwgSzEsIEsyLCBLMworCXNoYTI1Nl8xNnJvdW5kcwkwLCBLNCwgSzUsIEs2LCBL NworCXNoYTI1Nl8xNnJvdW5kcwkwLCBLOCwgSzksIEsxMCwgSzExCisJc2hhMjU2XzE2cm91bmRz CTEsIEsxMiwgSzEzLCBLMTQsIEsxNQorCisJLy8gQWRkIHRoZSBwcmV2aW91cyBzdGF0ZS4KKwl2 YWRkLnZ2CQlGRUJBLCBGRUJBLCBQUkVWX0ZFQkEKKwl2YWRkLnZ2CQlIR0RDLCBIR0RDLCBQUkVW X0hHREMKKworCS8vIFJlcGVhdCBpZiBtb3JlIGJsb2NrcyByZW1haW4uCisJYm5legkJTlVNX0JM T0NLUywgLkxuZXh0X2Jsb2NrCisKKwkvLyBTdG9yZSB0aGUgbmV3IHN0YXRlIGFuZCByZXR1cm4u CisJdnN1eGVpOC52CUZFQkEsIChTVEFURVApLCBJTkRJQ0VTCisJdnN1eGVpOC52CUhHREMsIChT VEFURVBfQyksIElORElDRVMKKwlyZXQKK1NZTV9GVU5DX0VORChzaGEyNTZfdHJhbnNmb3JtX3p2 a25oYV9vcl96dmtuaGJfenZrYikKKworLnNlY3Rpb24gIi5yb2RhdGEiCisucDJhbGlnbiAyCisu dHlwZSBLMjU2LCBAb2JqZWN0CitLMjU2OgorCS53b3JkCQkweDQyOGEyZjk4LCAweDcxMzc0NDkx LCAweGI1YzBmYmNmLCAweGU5YjVkYmE1CisJLndvcmQJCTB4Mzk1NmMyNWIsIDB4NTlmMTExZjEs IDB4OTIzZjgyYTQsIDB4YWIxYzVlZDUKKwkud29yZAkJMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwg MHgyNDMxODViZSwgMHg1NTBjN2RjMworCS53b3JkCQkweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAw eDliZGMwNmE3LCAweGMxOWJmMTc0CisJLndvcmQJCTB4ZTQ5YjY5YzEsIDB4ZWZiZTQ3ODYsIDB4 MGZjMTlkYzYsIDB4MjQwY2ExY2MKKwkud29yZAkJMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1 Y2IwYTlkYywgMHg3NmY5ODhkYQorCS53b3JkCQkweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIw MDMyN2M4LCAweGJmNTk3ZmM3CisJLndvcmQJCTB4YzZlMDBiZjMsIDB4ZDVhNzkxNDcsIDB4MDZj YTYzNTEsIDB4MTQyOTI5NjcKKwkud29yZAkJMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJj NmRmYywgMHg1MzM4MGQxMworCS53b3JkCQkweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJj OTJlLCAweDkyNzIyYzg1CisJLndvcmQJCTB4YTJiZmU4YTEsIDB4YTgxYTY2NGIsIDB4YzI0Yjhi NzAsIDB4Yzc2YzUxYTMKKwkud29yZAkJMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4 NSwgMHgxMDZhYTA3MAorCS53b3JkCQkweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRj LCAweDM0YjBiY2I1CisJLndvcmQJCTB4MzkxYzBjYjMsIDB4NGVkOGFhNGEsIDB4NWI5Y2NhNGYs IDB4NjgyZTZmZjMKKwkud29yZAkJMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwg MHg4Y2M3MDIwOAorCS53b3JkCQkweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAw eGM2NzE3OGYyCisuc2l6ZSBLMjU2LCAuIC0gSzI1NgotLSAKMi40My4wCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBs aXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=