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 77593CD37A9 for ; Tue, 3 Sep 2024 17:30:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1slXLm-0006eA-Kk; Tue, 03 Sep 2024 13:29:54 -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 1slXLl-0006Xr-2O for grub-devel@gnu.org; Tue, 03 Sep 2024 13:29:53 -0400 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1slXLi-0004bd-Kl for grub-devel@gnu.org; Tue, 03 Sep 2024 13:29:52 -0400 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-53349d3071eso7375220e87.2 for ; Tue, 03 Sep 2024 10:29:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725384588; x=1725989388; 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=+FfaY9sE9M2FmlYkzZGdexKDoxnbpCZffyYPGJn9DIk=; b=SbLZ4CCehg/WpHVuUmlzcElmH0v8/K/2R+tPiwUSsmXh/60ZF3rMtVlnfnUqI/NhU2 8vfIYxvTbZklr3dw684X5cq/XeI8Lr/Bc5zPxOTnBXfxplRAbDd6lmlpPTxUI51pcU+T 2HrigRo3apu3Sn6B7ORShJf3XOKDJ2rTXv04/lTbM83chw9FSYHHBwZ+lGQYhQO3bB2q QY2zTjjLlcrijWn8y6HKE/qsQ6Df4ACZjiIeW2tDwZC8BZfMPOxlPfjs4yv4p5++S5v0 JNRM7nXYUXB5EKzPkf7GsM1lDloB0FXPGyQ93uQJnFVEMRpR6njU83X48n0z/G9cvPpg u5UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725384588; x=1725989388; 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=+FfaY9sE9M2FmlYkzZGdexKDoxnbpCZffyYPGJn9DIk=; b=oT5kIQyjbicAjteRqBzYPg4CnsSD5aMF0MWE/7uPvwzr8N9HZlEAN4HmUurUPQnOz6 ufVu/r0YuwTPddcHSbyfH0N07XYJxiDzcS7iKAzrnr/WBVGjhSULGrkCPQsO5CswSAlS JwxoXp5R7sDCheQmeQtNN/nLJh/hwO/kr3g7A0etgxqbdIQg0EQckLxdMzq66GWTUvNo uuERPjpKUE0yMLHStPAlXbz5cJ5+DOqYWAQvxoPeiH5VfYwtrrcDbFkIMQ35foxRQL/N /G39be5NEk0FSq2248Cfin8bcWX1GguTKEmue5TzGwRunUsiiE5nc/tmzdFgnbRxCaku SBsA== X-Gm-Message-State: AOJu0YywenJ3o3HWD5GzmL5mjWe95bd1fGHkBI95FaMzfI8qhx1oe9CK mp9saUkxrZXmb7DHVGsx6Zm43hirvu7BNlToOWfR2jMCVHdNYXiWwtIB4bU1 X-Google-Smtp-Source: AGHT+IHxFDzHdlH5/pSL9/+nSvjzV+zpjM3N01UUas33/E0tmr5g429cKHGmRWbZB8h8UWyf7SCGWw== X-Received: by 2002:a05:6512:3e02:b0:533:45b5:6609 with SMTP id 2adb3069b0e04-53546b05552mr10097418e87.17.1725384587741; Tue, 03 Sep 2024 10:29:47 -0700 (PDT) Received: from localhost ([5.166.20.5]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-535408593edsm2079272e87.301.2024.09.03.10.29.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Sep 2024 10:29:47 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v5 2/5] Import b64dec from gpg-error Date: Tue, 3 Sep 2024 20:29:31 +0300 Message-Id: <20240903172934.26772-2-phcoder@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240903172934.26772-1-phcoder@gmail.com> References: <20240903172934.26772-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::130; envelope-from=phcoder@gmail.com; helo=mail-lf1-x130.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: , Reply-To: The development of GNU GRUB 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 QmFzZSBvbiBsaWJncGctZXJyb3IgMS40OSBidXQgd2l0aCBtb2RpZmljYXRpb25zIHRvIG1ha2Ug aXQgY29tcGlsZQppbiBHUlVCIGVudmlyb25tZW50CgpTaWduZWQtb2ZmLWJ5OiBWbGFkaW1pciBT ZXJiaW5lbmtvIDxwaGNvZGVyQGdtYWlsLmNvbT4KLS0tCiBncnViLWNvcmUvbGliL2I2NGRlYy5j IHwgMjkzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUg Y2hhbmdlZCwgMjkzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUv bGliL2I2NGRlYy5jCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9iNjRkZWMuYyBiL2dydWIt Y29yZS9saWIvYjY0ZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi44 YWFmYTk3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUvbGliL2I2NGRlYy5jCkBAIC0w LDAgKzEsMjkzIEBACisvKiBiNjRkZWMuYyAtIFNpbXBsZSBCYXNlNjQgZGVjb2Rlci4KKyAqIENv cHlyaWdodCAoQykgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAq IENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSwgMjAxNiBnMTAgQ29kZSBHbWJICisgKgorICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgTGliZ3BnLWVycm9yLgorICoKKyAqIFRoaXMgZmlsZSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIuMSBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHBz Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBM R1BMLTIuMS1vci1sYXRlcgorICoKKyAqIFRoaXMgZmlsZSB3YXMgb3JpZ2luYWxseSBhIHBhcnQg b2YgR251UEcuCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+ CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxn cnViL2NyeXB0by5oPgorCitzdHJ1Y3QgX2dwZ3J0X2I2NHN0YXRlCit7CisgIGludCBpZHg7Cisg IGludCBxdWFkX2NvdW50OworICBjaGFyICp0aXRsZTsKKyAgdW5zaWduZWQgY2hhciByYWRidWZb NF07CisgIHVuc2lnbmVkIGludCBjcmM7CisgIGdwZ19lcnJfY29kZV90IGxhc3RlcnI7CisgIHVu c2lnbmVkIGludCBmbGFnczsKKyAgdW5zaWduZWQgaW50IHN0b3Bfc2VlbjoxOworICB1bnNpZ25l ZCBpbnQgaW52YWxpZF9lbmNvZGluZzoxOworICB1bnNpZ25lZCBpbnQgdXNpbmdfZGVjb2Rlcjox OworfTsKKworCisvKiBUaGUgcmV2ZXJzZSBiYXNlLTY0IGxpc3QgdXNlZCBmb3IgYmFzZS02NCBk ZWNvZGluZy4gKi8KK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNvbnN0IGFzY3RvYmluWzEyOF0gPQor ICB7CisgICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwK KyAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAg IDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsCisgICAgMHhm ZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwKKyAgICAweGZmLCAw eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4M2UsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4M2YsCisgICAgMHgzNCwgMHgzNSwgMHgz NiwgMHgzNywgMHgzOCwgMHgzOSwgMHgzYSwgMHgzYiwKKyAgICAweDNjLCAweDNkLCAweGZmLCAw eGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLAorICAgIDB4ZmYsIDB4MDAsIDB4MDEsIDB4MDIs IDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsCisgICAgMHgwNywgMHgwOCwgMHgwOSwgMHgwYSwgMHgw YiwgMHgwYywgMHgwZCwgMHgwZSwKKyAgICAweDBmLCAweDEwLCAweDExLCAweDEyLCAweDEzLCAw eDE0LCAweDE1LCAweDE2LAorICAgIDB4MTcsIDB4MTgsIDB4MTksIDB4ZmYsIDB4ZmYsIDB4ZmYs IDB4ZmYsIDB4ZmYsCisgICAgMHhmZiwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgx ZiwgMHgyMCwKKyAgICAweDIxLCAweDIyLCAweDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAw eDI4LAorICAgIDB4MjksIDB4MmEsIDB4MmIsIDB4MmMsIDB4MmQsIDB4MmUsIDB4MmYsIDB4MzAs CisgICAgMHgzMSwgMHgzMiwgMHgzMywgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZgorICB9 OworCitlbnVtIGRlY29kZXJfc3RhdGVzCisgIHsKKyAgICBzX2luaXQsIHNfaWRsZSwgc19sZnNl ZW4sIHNfYmVnaW5zZWVuLCBzX3dhaXRoZWFkZXIsIHNfd2FpdGJsYW5rLCBzX2JlZ2luLAorICAg IHNfYjY0XzAsIHNfYjY0XzEsIHNfYjY0XzIsIHNfYjY0XzMsCisgICAgc193YWl0ZW5kdGl0bGUs IHNfd2FpdGVuZAorICB9OworCisKKworLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNv bnRleHQgZm9yIHRoZSBiYXNlNjQgZGVjb2Rlci4gIElmCisgICBUSVRMRSBpcyBOVUxMIGEgcGxh aW4gYmFzZTY0IGRlY29kaW5nIGlzIGRvbmUuICBJZiBpdCBpcyB0aGUgZW1wdHkKKyAgIHN0cmlu ZyB0aGUgZGVjb2RlciB3aWxsIHNraXAgZXZlcnl0aGluZyB1bnRpbCBhICItLS0tLUJFR0lOICIg bGluZQorICAgaGFzIGJlZW4gc2VlbiwgZGVjb2RpbmcgZW5kcyBhdCBhICItLS0tRU5EICIgbGlu ZS4gICovCitncGdydF9iNjRzdGF0ZV90CitncGdydF9iNjRkZWNfc3RhcnQgKGNvbnN0IGNoYXIg KnRpdGxlKQoreworICBncGdydF9iNjRzdGF0ZV90IHN0YXRlOworICBjaGFyICp0ID0gTlVMTDsK KworICBpZiAodGl0bGUpCisgICAgeworICAgICAgdCA9IGdydWJfc3RyZHVwICh0aXRsZSk7Cisg ICAgICBpZiAoIXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBzdGF0ZSA9IGdy dWJfY2FsbG9jICgxLCBzaXplb2YgKHN0cnVjdCBfZ3BncnRfYjY0c3RhdGUpKTsKKyAgaWYgKCFz dGF0ZSkKKyAgICB7CisgICAgICBncnViX2ZyZWUgKHQpOworICAgICAgcmV0dXJuIE5VTEw7Cisg ICAgfQorCisgIGlmICh0KQorICAgIHsKKyAgICAgIHN0YXRlLT50aXRsZSA9IHQ7CisgICAgICBz dGF0ZS0+aWR4ID0gc19pbml0OworICAgIH0KKyAgZWxzZQorICAgIHN0YXRlLT5pZHggPSBzX2I2 NF8wOworCisgIHN0YXRlLT51c2luZ19kZWNvZGVyID0gMTsKKworICByZXR1cm4gc3RhdGU7Cit9 CisKKworLyogRG8gaW4tcGxhY2UgZGVjb2Rpbmcgb2YgYmFzZS02NCBkYXRhIG9mIExFTkdUSCBp biBCVUZGRVIuICBTdG9yZXMgdGhlCisgICBuZXcgbGVuZ3RoIG9mIHRoZSBidWZmZXIgYXQgUl9O QllURVMuICovCitncGdfZXJyX2NvZGVfdAorZ3BncnRfYjY0ZGVjX3Byb2MgKGdwZ3J0X2I2NHN0 YXRlX3Qgc3RhdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAg ICAgICAgc2l6ZV90ICpyX25ieXRlcykKK3sKKyAgZW51bSBkZWNvZGVyX3N0YXRlcyBkcyA9IHN0 YXRlLT5pZHg7CisgIHVuc2lnbmVkIGNoYXIgdmFsID0gc3RhdGUtPnJhZGJ1ZlswXTsKKyAgaW50 IHBvcyA9IHN0YXRlLT5xdWFkX2NvdW50OworICBjaGFyICpkLCAqczsKKworICBpZiAoc3RhdGUt Pmxhc3RlcnIpCisgICAgcmV0dXJuIHN0YXRlLT5sYXN0ZXJyOworCisgIGlmIChzdGF0ZS0+c3Rv cF9zZWVuKQorICAgIHsKKyAgICAgICpyX25ieXRlcyA9IDA7CisgICAgICBzdGF0ZS0+bGFzdGVy ciA9IEdQR19FUlJfRU9GOworICAgICAgZ3J1Yl9mcmVlIChzdGF0ZS0+dGl0bGUpOworICAgICAg c3RhdGUtPnRpdGxlID0gTlVMTDsKKyAgICAgIHJldHVybiBzdGF0ZS0+bGFzdGVycjsKKyAgICB9 CisKKyAgZm9yIChzPWQ9YnVmZmVyOyBsZW5ndGggJiYgIXN0YXRlLT5zdG9wX3NlZW47IGxlbmd0 aC0tLCBzKyspCisgICAgeworICAgIGFnYWluOgorICAgICAgc3dpdGNoIChkcykKKyAgICAgICAg eworICAgICAgICBjYXNlIHNfaWRsZToKKyAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgZHMgPSBzX2xmc2VlbjsKKyAgICAgICAgICAgICAgcG9z ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX2lu aXQ6CisgICAgICAgICAgZHMgPSBzX2xmc2VlbjsKKyAgICAgICAgICAvKiBGYWxsIHRocm91Z2gg Ki8KKyAgICAgICAgY2FzZSBzX2xmc2VlbjoKKyAgICAgICAgICBpZiAoKnMgIT0gIi0tLS0tQkVH SU4gIltwb3NdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBkcyA9IHNfaWRsZTsKKyAg ICAgICAgICAgICAgZ290byBhZ2FpbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlm IChwb3MgPT0gMTApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHBvcyA9IDA7CisgICAg ICAgICAgICAgIGRzID0gc19iZWdpbnNlZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc19i ZWdpbnNlZW46CisgICAgICAgICAgaWYgKCpzICE9ICJQR1AgIltwb3NdKQorICAgICAgICAgICAg ZHMgPSBzX2JlZ2luOyAvKiBOb3QgYSBQR1AgYXJtb3IuICAqLworICAgICAgICAgIGVsc2UgaWYg KHBvcyA9PSAzKQorICAgICAgICAgICAgZHMgPSBzX3dhaXRoZWFkZXI7CisgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc193 YWl0aGVhZGVyOgorICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQorICAgICAgICAgICAgZHMgPSBz X3dhaXRibGFuazsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBzX3dhaXRibGFuazoK KyAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykKKyAgICAgICAgICAgIGRzID0gc19iNjRfMDsgLyog YmxhbmsgbGluZSBmb3VuZC4gICovCisgICAgICAgICAgZWxzZSBpZiAoKnMgPT0gJyAnIHx8ICpz ID09ICdccicgfHwgKnMgPT0gJ1x0JykKKyAgICAgICAgICAgIDsgLyogSWdub3JlIHNwYWNlcy4g Ki8KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIEFybW9y IGhlYWRlciBsaW5lLiAgTm90ZSB0aGF0IHdlIGRvbid0IGNhcmUgdGhhdCBvdXIKKyAgICAgICAg ICAgICAgICogRlNNIGFjY2VwdHMgYSBoZWFkZXIgcHJlZml4ZWQgd2l0aCBzcGFjZXMuICAqLwor ICAgICAgICAgICAgICBkcyA9IHNfd2FpdGhlYWRlcjsgLyogV2FpdCBmb3IgbmV4dCBoZWFkZXIu ICAqLworICAgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHNfYmVn aW46CisgICAgICAgICAgaWYgKCpzID09ICdcbicpCisgICAgICAgICAgICBkcyA9IHNfYjY0XzA7 CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugc19iNjRfMDoKKyAgICAgICAgY2FzZSBz X2I2NF8xOgorICAgICAgICBjYXNlIHNfYjY0XzI6CisgICAgICAgIGNhc2Ugc19iNjRfMzoKKyAg ICAgICAgICB7CisgICAgICAgICAgICBpbnQgYzsKKworICAgICAgICAgICAgaWYgKCpzID09ICct JyAmJiBzdGF0ZS0+dGl0bGUpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBO b3QgYSB2YWxpZCBCYXNlNjQgY2hhcmFjdGVyOiBhc3N1bWUgZW5kCisgICAgICAgICAgICAgICAg ICAgaGVhZGVyLiAgKi8KKyAgICAgICAgICAgICAgICBkcyA9IHNfd2FpdGVuZDsKKyAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoKnMgPT0gJz0nKQorICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgLyogUGFkIGNoYXJhY3Rlcjogc3RvcCAqLworICAgICAgICAgICAg ICAgIGlmIChkcyA9PSBzX2I2NF8xKQorICAgICAgICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAg ICAgICAgICAgICAgICBkcyA9IHN0YXRlLT50aXRsZT8gc193YWl0ZW5kdGl0bGUgOiBzX3dhaXRl bmQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCpzID09ICdcbicgfHwg KnMgPT0gJyAnIHx8ICpzID09ICdccicgfHwgKnMgPT0gJ1x0JykKKyAgICAgICAgICAgICAgOyAv KiBTa2lwIHdoaXRlIHNwYWNlcy4gKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCAoKnMgJiAweDgw KQorICAgICAgICAgICAgICAgICAgICAgIHx8IChjID0gYXNjdG9iaW5bKih1bnNpZ25lZCBjaGFy ICopc10pID09IDI1NSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIFNraXAg aW52YWxpZCBlbmNvZGluZ3MuICAqLworICAgICAgICAgICAgICAgIHN0YXRlLT5pbnZhbGlkX2Vu Y29kaW5nID0gMTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZHMgPT0g c19iNjRfMCkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhbCA9IGMgPDwgMjsK KyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0XzE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGVsc2UgaWYgKGRzID09IHNfYjY0XzEpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICB2YWwgfD0gKGM+PjQpJjM7CisgICAgICAgICAgICAgICAgKmQrKyA9IHZhbDsKKyAgICAg ICAgICAgICAgICB2YWwgPSAoYzw8NCkmMHhmMDsKKyAgICAgICAgICAgICAgICBkcyA9IHNfYjY0 XzI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGRzID09IHNfYjY0XzIp CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWwgfD0gKGM+PjIpJjE1OworICAg ICAgICAgICAgICAgICpkKysgPSB2YWw7CisgICAgICAgICAgICAgICAgdmFsID0gKGM8PDYpJjB4 YzA7CisgICAgICAgICAgICAgICAgZHMgPSBzX2I2NF8zOworICAgICAgICAgICAgICB9CisgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWwgfD0gYyYw eDNmOworICAgICAgICAgICAgICAgICpkKysgPSB2YWw7CisgICAgICAgICAgICAgICAgZHMgPSBz X2I2NF8wOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHNfd2FpdGVuZHRpdGxlOgorICAgICAgICAgIGlmICgqcyA9PSAnLScpCisg ICAgICAgICAgICBkcyA9IHNfd2FpdGVuZDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz ZSBzX3dhaXRlbmQ6CisgICAgICAgICAgaWYgKCAqcyA9PSAnXG4nKQorICAgICAgICAgICAgc3Rh dGUtPnN0b3Bfc2VlbiA9IDE7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgZ3J1Yl9mYXRhbCAoImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgfQorICAgIH0K KworCisgIHN0YXRlLT5pZHggPSBkczsKKyAgc3RhdGUtPnJhZGJ1ZlswXSA9IHZhbDsKKyAgc3Rh dGUtPnF1YWRfY291bnQgPSBwb3M7CisgICpyX25ieXRlcyA9IChkIC0oY2hhciopIGJ1ZmZlcik7 CisgIHJldHVybiAwOworfQorCisKKy8qIFJldHVybiBhbiBlcnJvciBjb2RlIGluIGNhc2UgYW4g ZW5jb2RpbmcgZXJyb3IgaGFzIGJlZW4gZm91bmQKKyAgIGR1cmluZyBkZWNvZGluZy4gKi8KK2dw Z19lcnJfY29kZV90CitncGdydF9iNjRkZWNfZmluaXNoIChncGdydF9iNjRzdGF0ZV90IHN0YXRl KQoreworICBncGdfZXJyb3JfdCBlcnI7CisKKyAgaWYgKCFzdGF0ZSkKKyAgICByZXR1cm4gMDsg IC8qIEFscmVhZHkgcmVsZWFzZWQuICAqLworCisgIGlmICghc3RhdGUtPnVzaW5nX2RlY29kZXIp CisgICAgZXJyID0gR1BHX0VSUl9DT05GTElDVDsgIC8qIFN0YXRlIHdhcyBhbGxvY2F0ZWQgZm9y IHRoZSBlbmNvZGVyLiAgKi8KKyAgZWxzZSBpZiAoc3RhdGUtPmxhc3RlcnIpCisgICAgZXJyID0g c3RhdGUtPmxhc3RlcnI7CisgIGVsc2UKKyAgICB7CisgICAgICBncnViX2ZyZWUgKHN0YXRlLT50 aXRsZSk7CisgICAgICBlcnIgPSBzdGF0ZS0+aW52YWxpZF9lbmNvZGluZz8gR1BHX0VSUl9CQURf REFUQSA6IDA7CisgICAgfQorICBncnViX2ZyZWUgKHN0YXRlKTsKKworICByZXR1cm4gZXJyOwor fQotLSAKMi4zOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8v bGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK