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 C0065CA0ED3 for ; Mon, 2 Sep 2024 15:29:39 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sl8zS-0008MU-C6; Mon, 02 Sep 2024 11:29:14 -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 1sl8zM-0008Lr-OW for grub-devel@gnu.org; Mon, 02 Sep 2024 11:29:10 -0400 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sl8zK-00039E-K8 for grub-devel@gnu.org; Mon, 02 Sep 2024 11:29:08 -0400 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-5334a8a1b07so5310861e87.1 for ; Mon, 02 Sep 2024 08:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725290944; x=1725895744; 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=aWYDocZ0pqcX3U6hk40y0dbeBS/GWQ0V0nQeJZxPR9/m9N+Jo7QcwvgdyHRC+Yjjj7 FK4n9Uw/VIDhhnWcKTSSMHqx6V/BdACLCF/3sSC9E/1zAEnTNJxGVTm3e7kdYj99vJu+ OW2/vK3ehZ7tR1eMD12CvVSQU9Cfylq0hEEe1QseOfZJPz1iF+Y1tLi+KS/vS1Xx5qb6 UJVd7v0l7qBBbGfFRZJOqPvxYLJQI9uV40KJz6dNdPdl1uYGznxx50Ebb5PO+969OINh x+ww3QcA7zx/mFj/D9E4681SsN/54NUTexctLUnTXsnyw2/aCXdwiMorCE+HQXeBqRmL mEhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725290944; x=1725895744; 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=IO5uMcNLZ4a4oczTus5Q04rMJWLOTGIkRMHF86JfFxrT0JN4Y90Wo+JKTpY00IVXjZ sTmWxrdXq1cE0Kom5mL6j7LEQobQIXujHK0iKUKU0wfedo6LmJ0VByuc+wpw8rUIVtem Nk19wE4ZwEwRuXk9n+o6xq6bac4p8U2DKgQah9pVXx4o1i5tjTPfL2gtKHjvFqmhbhiu twpItoCYvLXufDsQsBxwUyIaXuM3a9JgWss94cHFzN//42jjfJqUR13r/z/GElO2hj0d 7dEkkStMSflqFzHgLHA22dqdx/w/EgrBDy72VPYSZxotpVKpugbN4v4nVdBd/bGSKwUY 1pOA== X-Gm-Message-State: AOJu0YwSJASCuy5SGHR+oaLf3Q5GozSGzBWuVchDdk2A9cgUnK07/q1K XQ0qSQ8leHOGtWg4H/TCzubTcr/SXfgg6fOZpNE1ptNSanMxJgD1pi2+90Wf X-Google-Smtp-Source: AGHT+IH+kaXhhd2/DTlxzijrMS+Vx5ozoBWys6TyoiSERSqPKSmPELNNsfR9ejKv5j6Uy8FJLamkIw== X-Received: by 2002:a05:6512:2313:b0:52e:be1f:bf84 with SMTP id 2adb3069b0e04-53546bc09e6mr6654146e87.53.1725290944009; Mon, 02 Sep 2024 08:29:04 -0700 (PDT) Received: from localhost ([5.166.20.5]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-53540841505sm1671880e87.205.2024.09.02.08.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Sep 2024 08:29:03 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v4 2/5] Import b64dec from gpg-error Date: Mon, 2 Sep 2024 18:28:36 +0300 Message-Id: <20240902152840.5984-2-phcoder@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240902152840.5984-1-phcoder@gmail.com> References: <20240902152840.5984-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::12b; envelope-from=phcoder@gmail.com; helo=mail-lf1-x12b.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