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 DBF7CC83F09 for ; Wed, 9 Jul 2025 11:50:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZTIW-0006L3-Nz; Wed, 09 Jul 2025 07:49:13 -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 1uZTIL-0006Gh-19 for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:01 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZTIE-0006us-6H for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:00 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5694rdvJ015202; Wed, 9 Jul 2025 11:48:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=w0j4XeYF5XqmAfHid KQ+IeFgdPqHEOl48MibMUq/MsQ=; b=iy59l5w/gONjg/HSzwFpMyG+C4dY7iJW6 9BHF6ahu42UQ9D6lH5do/GOTQ4uiBPPSDd3i/MVDLJ1Kox/Rj66elAkU0NIa8wPh GFhErlzSXfXWe2Hjxz2t9r8lrafpzoRm55qriMnRiI18E1PvEv+Rmiy5pxJp9amq aHmqFTKqdw3W7+X7cVfokeq1PoodMuq8DPYnxprsuTcjnwbiDbp89F5dYR7Tqpgq g1wNXmGMJCk1p1wxdrk+Q1nTT4tscJAmHlXfctT5FQDuw5bKxhVGAKyG+AVJS9mD aI9tgnvoCicXbvHvcCGb9AZdKbCM2XS1EytNA1Hzw5M2VlCjL8x3Q== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47pur75y93-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:48:45 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 569B7j5G025634; Wed, 9 Jul 2025 11:48:44 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47qfcp818s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:48:44 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 569BmesL33751772 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Jul 2025 11:48:40 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9674B20043; Wed, 9 Jul 2025 11:48:40 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 267C320040; Wed, 9 Jul 2025 11:48:38 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.27.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 9 Jul 2025 11:48:37 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, nayna@linux.ibm.com, ltcgcw@linux.vnet.ibm.com, ssrish@linux.ibm.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, Sudhakar Kuppusamy , dja@axtens.net Subject: [PATCH v4 12/23] appended signatures: Support verifying appended signatures Date: Wed, 9 Jul 2025 17:15:29 +0530 Message-Id: <20250709114540.58608-13-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250709114540.58608-1-sudhakar@linux.ibm.com> References: <20250709114540.58608-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA5MDEwNiBTYWx0ZWRfX5AjBCvp9C6TY 8x9EGLI8GJxF7EnlECtx17eQ84LbLOisn/mtpsv1iL8tof8PAudveAD/pZQ5sQ1jFXAX5FbaaV2 rB6HNrFcmSBJ2swEXIlI7IgfcWAKycTDNQBhEobf8VDIIB2uve989S24eyVQTF4yUXivXgVwHn8 fZ03z9OiRhr1PcDiyBPySwdvQcsWWPycUFROWiircDL8ByfInouE9viYuTqo5odrshxrJe3hcPT NAIYi1AYWKkNzBZ7PiiSy8QuE3VzL+Q40aTmeIqwhRiA1nyaimrID/UYqdAKXQkbKrI1Hru55RJ MSe0iMr9vDgOoCQU2AmVRIPG8q7wHnLgbkGyvYsQ1OHzngOjZBsSSuR1IyoUv4krVY+twT3vkb0 rKox7D/ZEIxIlPeE8JUBknKM+wgb782qO18sC8Nv+ae3cwYNwtPqEBOcwD9Z3ob1EBcM4uwB X-Proofpoint-GUID: YhZujv_32phuxFkBNB5pHPngHaTM1wlS X-Proofpoint-ORIG-GUID: YhZujv_32phuxFkBNB5pHPngHaTM1wlS X-Authority-Analysis: v=2.4 cv=W/M4VQWk c=1 sm=1 tr=0 ts=686e571e cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Wb1JkmetP80A:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=GXoPAi1pmjj15N9aP9gA:9 a=WlT8qwTXB_Kj6um4hl3b:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-09_02,2025-07-08_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 mlxscore=0 priorityscore=1501 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 bulkscore=0 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507090106 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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: , 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 QnVpbGRpbmcgb24gdGhlIHBhcnNlcnMgYW5kIHRoZSBhYmlsaXR5IHRvIGVtYmVkIHg1MDkgY2Vy dGlmaWNhdGVzLCBhcwp3ZWxsIGFzIHRoZSBleGlzdGluZyBnY3J5cHQgZnVuY3Rpb25hbGl0eSwg YWRkIGEgbW9kdWxlIGZvciB2ZXJpZnlpbmcKYXBwZW5kZWQgc2lnbmF0dXJlcy4KClRoaXMgaW5j bHVkZXMgYSB2ZXJpZmllciB0aGF0IHJlcXVpcmVzIHRoYXQgTGludXgga2VybmVscyBhbmQgZ3J1 YiBtb2R1bGVzCmhhdmUgYXBwZW5kZWQgc2lnbmF0dXJlcywgYW5kIGNvbW1hbmRzIHRvIG1hbmFn ZSB0aGUgbGlzdCBvZiB0cnVzdGVkCmNlcnRpZmljYXRlcyBmb3IgdmVyaWZpY2F0aW9uLgoKVmVy aWZpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCBieSBzZXR0aW5nIGNoZWNrX2FwcGVuZGVkX3NpZ25h dHVyZXMuIElmCkdSVUIgaXMgbG9ja2VkIGRvd24gd2hlbiB0aGUgbW9kdWxlIGlzIGxvYWRlZCwg dmVyaWZpY2F0aW9uIHdpbGwgYmUKZW5hYmxlZCBhbmQgbG9ja2VkIGF1dG9tYXRpY2FsbHkuCgpB cyB3aXRoIHRoZSBQR1AgdmVyaWZpZXIsIGl0IGlzIG5vdCBhIGNvbXBsZXRlIHNlY3VyZS1ib290 IHNvbHV0aW9uOgpvdGhlciBtZWNoYW5pc21zLCBzdWNoIGFzIGEgcGFzc3dvcmQgb3IgbG9ja2Rv d24sIG11c3QgYmUgdXNlZCB0byBlbnN1cmUKdGhhdCBhIHVzZXIgY2Fubm90IGRyb3AgdG8gdGhl IEdSVUIgc2hlbGwgYW5kIGRpc2FibGUgdmVyaWZpY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogRGFu aWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+ClNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1 c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbiBCZXJnZXIg PHN0ZWZhbmJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQtYnk6IEF2bmlzaCBDaG91aGFuIDxhdm5p c2hAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgICAgICAg ICAgICAgICAgICB8ICAxNCArCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5k ZWRzaWcuYyB8IDU5NCArKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvZmlsZS5oICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDYxMCBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVk c2lnL2FwcGVuZGVkc2lnLmMKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5k ZWYgYi9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKaW5kZXggZjE5MDcxZTIyLi42ZjU0MTli OWUgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgorKysgYi9ncnViLWNv cmUvTWFrZWZpbGUuY29yZS5kZWYKQEAgLTk3OSw2ICs5NzksMjAgQEAgbW9kdWxlID0gewogICBj cHBmbGFncyA9ICctSSQoc3JjZGlyKS9saWIvcG9zaXhfd3JhcCc7CiB9OwogCittb2R1bGUgPSB7 CisgIG5hbWUgPSBhcHBlbmRlZHNpZzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcv YXBwZW5kZWRzaWcuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcveDUwOS5jOwor ICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9wa2NzNy5jOworICBjb21tb24gPSBjb21t YW5kcy9hcHBlbmRlZHNpZy9hc24xdXRpbC5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRl ZHNpZy9nbnV0bHNfYXNuMV90YWIuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcv cGtpeF9hc24xX3RhYi5jOworICBlbmFibGUgPSBwb3dlcnBjX2llZWUxMjc1OworICBjZmxhZ3Mg PSAnJChDRkxBR1NfUE9TSVgpJzsKKyAgY3BwZmxhZ3MgPSAnLUkkKHNyY2RpcikvbGliL3Bvc2l4 X3dyYXAgLUkkKHNyY2RpcikvbGliL2xpYnRhc24xLWdydWInOworICBkZXBlbmRzID0gY3J5cHRv LCBnY3J5X3JzYSwgZ2NyeV9zaGEyNTYsIGdjcnlfc2hhNTEyLCBwa2NzMV92MTUsIG1waSwgYXNu MTsKK307CisKIG1vZHVsZSA9IHsKICAgbmFtZSA9IGhkcGFybTsKICAgY29tbW9uID0gY29tbWFu ZHMvaGRwYXJtLmM7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcv YXBwZW5kZWRzaWcuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNp Zy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZTI2ZmM5NzI0Ci0tLSAv ZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2ln LmMKQEAgLTAsMCArMSw1OTQgQEAKKy8qCisgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9v dGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMSwgMjAyMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIsIDIw MjUgSUJNIENvcnBvcmF0aW9uCisgKgorICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBH UlVCIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIEdSVUIuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUg PGdydWIvdHlwZXMuaD4KKyNpbmNsdWRlIDxncnViL21pc2MuaD4KKyNpbmNsdWRlIDxncnViL21t Lmg+CisjaW5jbHVkZSA8Z3J1Yi9lcnIuaD4KKyNpbmNsdWRlIDxncnViL2RsLmg+CisjaW5jbHVk ZSA8Z3J1Yi9maWxlLmg+CisjaW5jbHVkZSA8Z3J1Yi9jb21tYW5kLmg+CisjaW5jbHVkZSA8Z3J1 Yi9jcnlwdG8uaD4KKyNpbmNsdWRlIDxncnViL3BrY3MxX3YxNS5oPgorI2luY2x1ZGUgPGdydWIv aTE4bi5oPgorI2luY2x1ZGUgPGdydWIvZ2NyeXB0L2djcnlwdC5oPgorI2luY2x1ZGUgPGdydWIv a2VybmVsLmg+CisjaW5jbHVkZSA8Z3J1Yi9leHRjbWQuaD4KKyNpbmNsdWRlIDxncnViL3Zlcmlm eS5oPgorI2luY2x1ZGUgPGxpYnRhc24xLmg+CisjaW5jbHVkZSA8Z3J1Yi9lbnYuaD4KKyNpbmNs dWRlIDxncnViL2xvY2tkb3duLmg+CisKKyNpbmNsdWRlICJhcHBlbmRlZHNpZy5oIgorCitHUlVC X01PRF9MSUNFTlNFICgiR1BMdjMrIik7CisKKy8qIFB1YmxpYyBrZXkgdHlwZS4gKi8KKyNkZWZp bmUgR1JVQl9QS0VZX0lEX1BLQ1M3IDIKKworLyogQXBwZW5kZWQgc2lnbmF0dXJlIG1hZ2ljIHN0 cmluZy4gKi8KK3N0YXRpYyBjb25zdCBjaGFyIG1hZ2ljW10gPSAifk1vZHVsZSBzaWduYXR1cmUg YXBwZW5kZWR+XG4iOworCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgZXh0cmFjdGVkIGZyb20g c2NyaXB0cy9zaWduLWZpbGUuYyBpbiB0aGUgbGludXgga2VybmVsCisgKiBzb3VyY2UuIEl0IHdh cyBsaWNlbnNlZCBhcyBMR1BMdjIuMSssIHdoaWNoIGlzIEdQTHYzKyBjb21wYXRpYmxlLgorICov CitzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZQoreworICBncnViX3VpbnQ4X3QgYWxnbzsgICAgICAg LyogUHVibGljLWtleSBjcnlwdG8gYWxnb3JpdGhtIFswXS4gKi8KKyAgZ3J1Yl91aW50OF90IGhh c2g7ICAgICAgIC8qIERpZ2VzdCBhbGdvcml0aG0gWzBdLiAqLworICBncnViX3VpbnQ4X3QgaWRf dHlwZTsgICAgLyogS2V5IGlkZW50aWZpZXIgdHlwZSBbR1JVQl9QS0VZX0lEX1BLQ1M3XS4gKi8K KyAgZ3J1Yl91aW50OF90IHNpZ25lcl9sZW47IC8qIExlbmd0aCBvZiBzaWduZXIncyBuYW1lIFsw XS4gKi8KKyAgZ3J1Yl91aW50OF90IGtleV9pZF9sZW47IC8qIExlbmd0aCBvZiBrZXkgaWRlbnRp ZmllciBbMF0uICovCisgIGdydWJfdWludDhfdCBfX3BhZFszXTsKKyAgZ3J1Yl91aW50MzJfdCBz aWdfbGVuOyAgIC8qIExlbmd0aCBvZiBzaWduYXR1cmUgZGF0YS4gKi8KK30gR1JVQl9QQUNLRUQ7 CisKKy8qIFRoaXMgcmVwcmVzZW50cyBhbiBlbnRpcmUsIHBhcnNlZCwgYXBwZW5kZWQgc2lnbmF0 dXJlLiAqLworc3RydWN0IGdydWJfYXBwZW5kZWRfc2lnbmF0dXJlCit7CisgIGdydWJfc2l6ZV90 IHNpZ25hdHVyZV9sZW47ICAgICAgICAgICAgLyogTGVuZ3RoIG9mIFBLQ1MjNyBkYXRhICsgbWV0 YWRhdGEgKyBtYWdpYy4gKi8KKyAgc3RydWN0IG1vZHVsZV9zaWduYXR1cmUgc2lnX21ldGFkYXRh OyAvKiBNb2R1bGUgc2lnbmF0dXJlIG1ldGFkYXRhLiAqLworICBzdHJ1Y3QgcGtjczdfc2lnbmVk RGF0YSBwa2NzNzsgICAgICAgIC8qIFBhcnNlZCBQS0NTIzcgZGF0YS4gKi8KK307CisKKy8qIFRy dXN0ZWQgY2VydGlmaWNhdGVzIGZvciB2ZXJpZnlpbmcgYXBwZW5kZWQgc2lnbmF0dXJlcy4gKi8K K3N0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpkYjsKKworc3RhdGljIGVudW0KK3sKKyAgQ0hFQ0tf U0lHU19OTyA9IDAsCisgIENIRUNLX1NJR1NfRU5GT1JDRSA9IDEsCisgIENIRUNLX1NJR1NfRk9S Q0VEID0gMgorfSBjaGVja19zaWdzID0gQ0hFQ0tfU0lHU19OTzsKKworc3RhdGljIGNvbnN0IGNo YXIgKgorZ3J1Yl9lbnZfcmVhZF9zZWMgKHN0cnVjdCBncnViX2Vudl92YXIgKnZhciBfX2F0dHJp YnV0ZV9fICgodW51c2VkKSksCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSkKK3sKKyAgaWYgKGNoZWNrX3NpZ3MgPT0gQ0hFQ0tfU0lH U19GT1JDRUQpCisgICAgcmV0dXJuICJmb3JjZWQiOworICBlbHNlIGlmIChjaGVja19zaWdzID09 IENIRUNLX1NJR1NfRU5GT1JDRSkKKyAgICByZXR1cm4gImVuZm9yY2UiOworCisgIHJldHVybiAi bm8iOworfQorCitzdGF0aWMgY2hhciAqCitncnViX2Vudl93cml0ZV9zZWMgKHN0cnVjdCBncnVi X2Vudl92YXIgKnZhciBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGNvbnN0IGNoYXIgKnZhbCkK K3sKKyAgY2hhciAqcmV0OworCisgIC8qIERvIG5vdCBhbGxvdyB0aGUgdmFsdWUgdG8gYmUgY2hh bmdlZCBpZiBzZXQgdG8gZm9yY2VkLiAqLworICBpZiAoY2hlY2tfc2lncyA9PSBDSEVDS19TSUdT X0ZPUkNFRCkKKyAgICB7CisgICAgICByZXQgPSBncnViX3N0cmR1cCAoImZvcmNlZCIpOworICAg ICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0Zf TUVNT1JZLCAiY291bGQgbm90IGR1cGxpY2F0ZSBhIHN0cmluZyBmb3JjZWQuIik7CisKKyAgICAg IHJldHVybiByZXQ7CisgICAgfQorCisgIGlmICgoKnZhbCA9PSAnMicpIHx8ICgqdmFsID09ICdm JykpCisgICAgY2hlY2tfc2lncyA9IENIRUNLX1NJR1NfRk9SQ0VEOworICBlbHNlIGlmICgoKnZh bCA9PSAnMScpIHx8ICgqdmFsID09ICdlJykpCisgICAgY2hlY2tfc2lncyA9IENIRUNLX1NJR1Nf RU5GT1JDRTsKKyAgZWxzZSBpZiAoKCp2YWwgPT0gJzAnKSB8fCAoKnZhbCA9PSAnbicpKQorICAg IGNoZWNrX3NpZ3MgPSBDSEVDS19TSUdTX05POworCisgIHJldCA9IGdydWJfc3RyZHVwIChncnVi X2Vudl9yZWFkX3NlYyAoTlVMTCwgTlVMTCkpOworICBpZiAocmV0ID09IE5VTEwpCisgICAgZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgImNvdWxkIG5vdCBkdXBsaWNhdGUgYSBz dHJpbmcgJXMiLAorICAgICAgICAgICAgICAgIGdydWJfZW52X3JlYWRfc2VjIChOVUxMLCBOVUxM KSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdydWJfZXJyX3QKK2ZpbGVfcmVhZF9h bGwgKGdydWJfZmlsZV90IGZpbGUsIGdydWJfdWludDhfdCAqKmJ1ZiwgZ3J1Yl9zaXplX3QgKmxl bikKK3sKKyAgZ3J1Yl9vZmZfdCBmdWxsX2ZpbGVfc2l6ZTsKKyAgZ3J1Yl9zaXplX3QgZmlsZV9z aXplLCB0b3RhbF9yZWFkX3NpemUgPSAwOworICBncnViX3NzaXplX3QgcmVhZF9zaXplOworCisg IGZ1bGxfZmlsZV9zaXplID0gZ3J1Yl9maWxlX3NpemUgKGZpbGUpOworICBpZiAoZnVsbF9maWxl X3NpemUgPT0gR1JVQl9GSUxFX1NJWkVfVU5LTk9XTikKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJl YWQgYSBmaWxlIG9mIHVua25vd24gc2l6ZSBpbnRvIGEgYnVmZmVyLiIpOworCisgIGlmIChmdWxs X2ZpbGVfc2l6ZSA+IEdSVUJfU0laRV9NQVgpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX09VVF9PRl9SQU5HRSwKKyAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgdG9vIGxh cmdlIHRvIHJlYWQ6ICUiIFBSSXVHUlVCX1VJTlQ2NF9UICIgYnl0ZXMuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgZnVsbF9maWxlX3NpemUpOworCisgIGZpbGVfc2l6ZSA9IChncnViX3NpemVf dCkgZnVsbF9maWxlX3NpemU7CisgICpidWYgPSBncnViX21hbGxvYyAoZmlsZV9zaXplKTsKKyAg aWYgKCpidWYgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09G X01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhbGxvY2F0ZSBmaWxl IGRhdGEgYnVmZmVyIHNpemUgJSIgUFJJdUdSVUJfU0laRSwKKyAgICAgICAgICAgICAgICAgICAg ICAgZmlsZV9zaXplKTsKKworICB3aGlsZSAodG90YWxfcmVhZF9zaXplIDwgZmlsZV9zaXplKQor ICAgIHsKKyAgICAgIHJlYWRfc2l6ZSA9IGdydWJfZmlsZV9yZWFkIChmaWxlLCAqYnVmICsgdG90 YWxfcmVhZF9zaXplLCBmaWxlX3NpemUgLSB0b3RhbF9yZWFkX3NpemUpOworICAgICAgaWYgKHJl YWRfc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICBncnViX2ZyZWUgKCpidWYpOworICAg ICAgICAgIHJldHVybiBncnViX2Vycm5vOworICAgICAgICB9CisgICAgICBlbHNlIGlmIChyZWFk X3NpemUgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoKmJ1Zik7CisgICAg ICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiY291bGQgbm90IHJlYWQgZnVsbCBmaWxlIHNpemUgIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiKCUiIFBSSXVHUlVCX1NJWkUgIiksIG9ubHkgJSIgUFJJdUdSVUJf U0laRSAiIGJ5dGVzIHJlYWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9z aXplLCB0b3RhbF9yZWFkX3NpemUpOworICAgICAgICB9CisKKyAgICAgIHRvdGFsX3JlYWRfc2l6 ZSArPSByZWFkX3NpemU7CisgICAgfQorCisgICpsZW4gPSBmaWxlX3NpemU7CisKKyAgcmV0dXJu IEdSVUJfRVJSX05PTkU7Cit9CisKK3N0YXRpYyBncnViX2Vycl90CityZWFkX2NlcnRfZnJvbV9m aWxlIChncnViX2ZpbGVfdCBmLCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydGlmaWNhdGUp Cit7CisgIGdydWJfZXJyX3QgZXJyOworICBncnViX3VpbnQ4X3QgKmJ1ZjsKKyAgZ3J1Yl9zaXpl X3QgZmlsZV9zaXplOworCisgIGVyciA9IGZpbGVfcmVhZF9hbGwgKGYsICZidWYsICZmaWxlX3Np emUpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAgcmV0dXJuIGVycjsKKworICBl cnIgPSBwYXJzZV94NTA5X2NlcnRpZmljYXRlIChidWYsIGZpbGVfc2l6ZSwgY2VydGlmaWNhdGUp OworICBncnViX2ZyZWUgKGJ1Zik7CisKKyAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIGdydWJf ZXJyX3QKK2V4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3QgKmJ1 ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUgKnNpZykKK3sKKyAgZ3J1Yl9zaXplX3QgcGtjczdf c2l6ZTsKKyAgZ3J1Yl9zaXplX3QgcmVtYWluaW5nX2xlbjsKKyAgY29uc3QgZ3J1Yl91aW50OF90 ICphcHBzaWdkYXRhID0gYnVmICsgYnVmc2l6ZSAtIGdydWJfc3RybGVuIChtYWdpYyk7CisKKyAg aWYgKGJ1ZnNpemUgPCBncnViX3N0cmxlbiAobWFnaWMpKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIHNpZ25hdHVyZSBt YWdpYy4iKTsKKworICBpZiAoZ3J1Yl9zdHJuY21wICgoY29uc3QgY2hhciAqKSBhcHBzaWdkYXRh LCBtYWdpYywgc2l6ZW9mIChtYWdpYykgLSAxKSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfQkFEX1NJR05BVFVSRSwgIm1pc3Npbmcgb3IgaW52YWxpZCBzaWduYXR1cmUgbWFnaWMu Iik7CisKKyAgcmVtYWluaW5nX2xlbiA9IGJ1ZnNpemUgLSBncnViX3N0cmxlbiAobWFnaWMpOwor CisgIGlmIChyZW1haW5pbmdfbGVuIDwgc2l6ZW9mIChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSkp CisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRv byBzaG9ydCBmb3Igc2lnbmF0dXJlIG1ldGFkYXRhLiIpOworCisgIGFwcHNpZ2RhdGEgLT0gc2l6 ZW9mIChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSk7CisgIC8qIEV4dHJhY3QgdGhlIG1ldGFkYXRh LiAqLworICBncnViX21lbWNweSAoJihzaWctPnNpZ19tZXRhZGF0YSksIGFwcHNpZ2RhdGEsIHNp emVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpKTsKKyAgcmVtYWluaW5nX2xlbiAtPSBzaXpl b2YgKHN0cnVjdCBtb2R1bGVfc2lnbmF0dXJlKTsKKworICBpZiAoc2lnLT5zaWdfbWV0YWRhdGEu aWRfdHlwZSAhPSBHUlVCX1BLRVlfSURfUEtDUzcpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9TSUdOQVRVUkUsICJ3cm9uZyBzaWduYXR1cmUgdHlwZS4iKTsKKworICBwa2Nz N19zaXplID0gZ3J1Yl9iZV90b19jcHUzMiAoc2lnLT5zaWdfbWV0YWRhdGEuc2lnX2xlbik7CisK KyAgaWYgKHBrY3M3X3NpemUgPiByZW1haW5pbmdfbGVuKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIFBLQ1MjNyBtZXNz YWdlLiIpOworCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInNpZyBsZW4gJSIgUFJJ dUdSVUJfU0laRSAiXG4iLCBwa2NzN19zaXplKTsKKworICBzaWctPnNpZ25hdHVyZV9sZW4gPSBn cnViX3N0cmxlbiAobWFnaWMpICsgc2l6ZW9mIChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSkgKyBw a2NzN19zaXplOworICAvKiBSZXdpbmQgcG9pbnRlciBhbmQgcGFyc2UgcGtjczcgZGF0YS4gKi8K KyAgYXBwc2lnZGF0YSAtPSBwa2NzN19zaXplOworCisgIHJldHVybiBwYXJzZV9wa2NzN19zaWdu ZWREYXRhIChhcHBzaWdkYXRhLCBwa2NzN19zaXplLCAmc2lnLT5wa2NzNyk7Cit9CisKK3N0YXRp YyBncnViX2Vycl90CitncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJf dWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZzaXplKQoreworICBncnViX2Vycl90IGVyciA9 IEdSVUJfRVJSX05PTkU7CisgIGdydWJfc2l6ZV90IGRhdGFzaXplOworICB2b2lkICpjb250ZXh0 OworICB1bnNpZ25lZCBjaGFyICpoYXNoOworICBnY3J5X21waV90IGhhc2htcGk7CisgIGdjcnlf ZXJyX2NvZGVfdCByYzsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKnBrOworICBzdHJ1Y3Qg Z3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUgc2lnOworICBzdHJ1Y3QgcGtjczdfc2lnbmVySW5mbyAq c2k7CisgIGludCBpOworCisgIGlmIChkYiA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAibm8gdHJ1c3RlZCBrZXlzIHRvIHZlcmlmeSBhZ2Fp bnN0LiIpOworCisgIGVyciA9IGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChidWYsIGJ1ZnNp emUsICZzaWcpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAgcmV0dXJuIGVycjsK KworICBkYXRhc2l6ZSA9IGJ1ZnNpemUgLSBzaWcuc2lnbmF0dXJlX2xlbjsKKworICBmb3IgKGkg PSAwOyBpIDwgc2lnLnBrY3M3LnNpZ25lckluZm9fY291bnQ7IGkrKykKKyAgICB7CisgICAgICAv KgorICAgICAgICogVGhpcyBjb3VsZCBiZSBvcHRpbWlzZWQgaW4gYSBjb3VwbGUgb2Ygd2F5czoK KyAgICAgICAqIC0gd2UgY291bGQgb25seSBjb21wdXRlIGhhc2hlcyBvbmNlIHBlciBoYXNoIHR5 cGUuCisgICAgICAgKiAtIHdlIGNvdWxkIHRyYWNrIHNpZ25lciBpbmZvcm1hdGlvbiBhbmQgb25s eSB2ZXJpZnkgd2hlcmUgSURzIG1hdGNoLgorICAgICAgICogRm9yIG5vdyB3ZSBkbyB0aGUgbmFp dmUgTyh0cnVzdGVkIGtleXMgKiBwa2NzNyBzaWduZXJzKSBhcHByb2FjaC4KKyAgICAgICAqLwor ICAgICAgc2kgPSAmc2lnLnBrY3M3LnNpZ25lckluZm9zW2ldOworICAgICAgY29udGV4dCA9IGdy dWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOworICAgICAgaWYgKGNvbnRleHQgPT0g TlVMTCkKKyAgICAgICAgcmV0dXJuIGdydWJfZXJybm87CisKKyAgICAgIHNpLT5oYXNoLT5pbml0 IChjb250ZXh0KTsKKyAgICAgIHNpLT5oYXNoLT53cml0ZSAoY29udGV4dCwgYnVmLCBkYXRhc2l6 ZSk7CisgICAgICBzaS0+aGFzaC0+ZmluYWwgKGNvbnRleHQpOworICAgICAgaGFzaCA9IHNpLT5o YXNoLT5yZWFkIChjb250ZXh0KTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAiZGF0YSBzaXplICUiIFBSSXhHUlVCX1NJWkUgIiwgc2lnbmVyICVkIGhhc2ggJTAyeCUwMngl MDJ4JTAyeC4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUsIGksIGhhc2hbMF0s IGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOworCisgICAgICBlcnIgPSBHUlVCX0VSUl9CQURf U0lHTkFUVVJFOworICAgICAgZm9yIChwayA9IGRiOyBwayAhPSBOVUxMOyBwayA9IHBrLT5uZXh0 KQorICAgICAgICB7CisgICAgICAgICAgcmMgPSBncnViX2NyeXB0b19yc2FfcGFkICgmaGFzaG1w aSwgaGFzaCwgc2ktPmhhc2gsIHBrLT5tcGlzWzBdKTsKKyAgICAgICAgICBpZiAocmMgIT0gR1BH X0VSUl9OT19FUlJPUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZXJyID0gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImVycm9yIHBhZGRpbmcgaGFzaCBmb3IgUlNBIHZlcmlmaWNhdGlvbjogJWQiLCAoaW50 KSByYyk7CisgICAgICAgICAgICAgIGdydWJfZnJlZSAoY29udGV4dCk7CisgICAgICAgICAgICAg IGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHJjID0gZ3J1Yl9jcnlw dG9fcGtfcnNhLT52ZXJpZnkgKDAsIGhhc2htcGksICZzaS0+c2lnX21waSwgcGstPm1waXMsIE5V TEwsIE5VTEwpOworICAgICAgICAgIGdjcnlfbXBpX3JlbGVhc2UgKGhhc2htcGkpOworICAgICAg ICAgIGlmIChyYyA9PSBHUEdfRVJSX05PX0VSUk9SKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgg a2V5ICclcycgc3VjY2VlZGVkLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBw ay0+c3ViamVjdCk7CisgICAgICAgICAgICAgIGVyciA9IEdSVUJfRVJSX05PTkU7CisgICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgi YXBwZW5kZWRzaWciLCAidmVyaWZ5IHNpZ25lciAlZCB3aXRoIGtleSAnJXMnIGZhaWxlZCB3aXRo ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaSwgcGstPnN1YmplY3QsIChpbnQpIHJj KTsKKyAgICAgICAgfQorCisgICAgICBncnViX2ZyZWUgKGNvbnRleHQpOworICAgICAgaWYgKGVy ciA9PSBHUlVCX0VSUl9OT05FKQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgLyogSWYgd2Ug ZGlkbid0IHZlcmlmeSwgcHJvdmlkZSBhIG5lYXQgbWVzc2FnZS4gKi8KKyAgaWYgKGVyciAhPSBH UlVCX0VSUl9OT05FKQorICAgIGVyciA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRV UkUsCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byB2ZXJpZnkgc2lnbmF0dXJlIGFn YWluc3QgYSB0cnVzdGVkIGtleS4iKTsKKworIGNsZWFudXA6CisgIHBrY3M3X3NpZ25lZERhdGFf cmVsZWFzZSAoJnNpZy5wa2NzNyk7CisKKyAgcmV0dXJuIGVycjsKK30KKworc3RhdGljIGdydWJf ZXJyX3QKK2dydWJfY21kX3ZlcmlmeV9zaWduYXR1cmUgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJncykKK3sKKyAgZ3J1Yl9m aWxlX3Qgc2lnbmVkX2ZpbGU7CisgIGdydWJfZXJyX3QgZXJyID0gR1JVQl9FUlJfTk9ORTsKKyAg Z3J1Yl91aW50OF90ICpkYXRhOworICBncnViX3NpemVfdCBmaWxlX3NpemU7CisKKyAgaWYgKGFy Z2MgIT0gMSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULCAi b25lIGFyZ3VtZW50IGV4cGVjdGVkLiIpOworCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2ln IiwgInZlcmlmeWluZyAlc1xuIiwgYXJnc1swXSk7CisKKyAgc2lnbmVkX2ZpbGUgPSBncnViX2Zp bGVfb3BlbiAoYXJnc1swXSwgR1JVQl9GSUxFX1RZUEVfVkVSSUZZX1NJR05BVFVSRSk7CisgIGlm IChzaWduZWRfZmlsZSA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9C QURfRklMRV9UWVBFLCAiY291bGQgbm90IG9wZW4gJXMgZmlsZS4iLCBhcmdzWzBdKTsKKworICBl cnIgPSBmaWxlX3JlYWRfYWxsIChzaWduZWRfZmlsZSwgJmRhdGEsICZmaWxlX3NpemUpOworICBp ZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCisgICAgZXJyID0gZ3J1Yl92ZXJpZnlfYXBwZW5kZWRf c2lnbmF0dXJlIChkYXRhLCBmaWxlX3NpemUpOworCisgIGdydWJfZmlsZV9jbG9zZSAoc2lnbmVk X2ZpbGUpOworICBncnViX2ZyZWUgKGRhdGEpOworCisgIHJldHVybiBlcnI7Cit9CisKK3N0YXRp YyBncnViX2Vycl90CitncnViX2NtZF9kYnggKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0 ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJncykKK3sKKyAgdW5zaWduZWQgbG9u ZyBjZXJ0X251bSwgaSA9IDA7CisgIGNvbnN0IGNoYXIgKmVuZDsKKyAgc3RydWN0IHg1MDlfY2Vy dGlmaWNhdGUgKmNlcnQsICpwcmV2X2NlcnQ7CisKKyAgaWYgKGFyZ2MgIT0gMSkKKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULCAib25lIGFyZ3VtZW50IGV4cGVj dGVkLiIpOworCisgIGNlcnRfbnVtID0gZ3J1Yl9zdHJ0b3VsIChhcmdzWzBdLCAmZW5kLCAxMCk7 CisgIGlmICgqKGFyZ3NbMF0pID09ICdcMCcgfHwgKmVuZCAhPSAnXDAnKQorICAgIHJldHVybiBn cnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisgICAgICAgICAgICAgICAgICAgICAg ICJub24tbnVtZXJpYyBvciBjZXJ0aWZpY2F0ZSBudW1iZXIgaXMgaW52YWxpZCAlcyIsIGFyZ3Nb MF0pOworICBlbHNlIGlmIChjZXJ0X251bSA9PSAwKQorICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZSBudW1iZXJzIHN0YXJ0IGF0IDEuIik7 CisKKyAgZm9yIChjZXJ0ID0gcHJldl9jZXJ0ID0gZGI7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNl cnQtPm5leHQpCisgICAgeworICAgICAgaWYgKGNlcnRfbnVtID09IDEpIC8qIE1hdGNoIHdpdGgg Zmlyc3QgY2VydGlmaWNhdGUgaW4gdGhlIGRiLiAqLworICAgICAgICB7CisgICAgICAgICAgZGIg PSBjZXJ0LT5uZXh0OworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICBlbHNlIGlm IChjZXJ0X251bSA9PSBpKQorICAgICAgICB7CisgICAgICAgICAgcHJldl9jZXJ0LT5uZXh0ID0g Y2VydC0+bmV4dDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICBwcmV2X2Nl cnQgPSBjZXJ0OworICAgICAgaSsrOworICAgIH0KKworICBpZiAoY2VydCAhPSBOVUxMKQorICAg IHsKKyAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICAgICAgZ3J1Yl9mcmVlIChj ZXJ0KTsKKyAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOworICAgIH0KKworICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgIm5v dCBmb3VuZCBjZXJ0aWZpY2F0ZSBudW1iZXIgJWx1IGluIHRoZSBkYi4iLCBjZXJ0X251bSk7Cit9 CisKK3N0YXRpYyBncnViX2Vycl90CitncnViX2NtZF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKiphcmdzKQoreworICBncnVi X2ZpbGVfdCBjZXJ0ZjsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQgPSBOVUxMOwor ICBncnViX2Vycl90IGVycjsKKworICBpZiAoYXJnYyAhPSAxKQorICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsICJvbmUgYXJndW1lbnQgZXhwZWN0ZWQuIik7CisK KyAgY2VydGYgPSBncnViX2ZpbGVfb3BlbiAoYXJnc1swXSwgR1JVQl9GSUxFX1RZUEVfQ0VSVElG SUNBVEVfVFJVU1QgfCBHUlVCX0ZJTEVfVFlQRV9OT19ERUNPTVBSRVNTKTsKKyAgaWYgKGNlcnRm ID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFX1RZUEUs ICJjb3VsZCBub3Qgb3BlbiAlcyBmaWxlLiIsIGFyZ3NbMF0pOworCisgIGNlcnQgPSBncnViX3ph bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSkpOworICBpZiAoY2VydCA9PSBO VUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAiY291 bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgY2VydGlmaWNhdGUuIik7CisKKyAgZXJyID0gcmVh ZF9jZXJ0X2Zyb21fZmlsZSAoY2VydGYsIGNlcnQpOworICBncnViX2ZpbGVfY2xvc2UgKGNlcnRm KTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAo Y2VydCk7CisgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICBncnViX2RwcmludGYgKCJhcHBl bmRlZHNpZyIsICJsb2FkZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXNcbiIsIGNlcnQtPnN1Ympl Y3QpOworCisgIGNlcnQtPm5leHQgPSBkYjsKKyAgZGIgPSBjZXJ0OworCisgIHJldHVybiBHUlVC X0VSUl9OT05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfbGlzdCAoZ3J1Yl9j b21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpLAorICAgICAgICAgICAgICAgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgaW50 IGNlcnRfbnVtID0gMTsKKyAgZ3J1Yl9zaXplX3QgaTsKKworICBmb3IgKGNlcnQgPSBkYjsgY2Vy dCAhPSBOVUxMOyBjZXJ0ID0gY2VydC0+bmV4dCkKKyAgICB7CisgICAgICBncnViX3ByaW50ZiAo IkNlcnRpZmljYXRlICVkOlxuIiwgY2VydF9udW0pOworICAgICAgZ3J1Yl9wcmludGYgKCJcdFNl cmlhbDogIik7CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBjZXJ0LT5zZXJpYWxfbGVuIC0gMTsg aSsrKQorICAgICAgICBncnViX3ByaW50ZiAoIiUwMng6IiwgY2VydC0+c2VyaWFsW2ldKTsKKwor ICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4XG4iLCBjZXJ0LT5zZXJpYWxbY2VydC0+c2VyaWFsX2xl biAtIDFdKTsKKyAgICAgIGdydWJfcHJpbnRmICgiXHRDTjogJXNcblxuIiwgY2VydC0+c3ViamVj dCk7CisgICAgICBjZXJ0X251bSsrOworICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK K30KKworc3RhdGljIGdydWJfZXJyX3QKK2FwcGVuZGVkc2lnX2luaXQgKGdydWJfZmlsZV90IGlv IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bSBncnViX2ZpbGVfdHlwZSB0eXBlLAorICAg ICAgICAgICAgICAgICAgdm9pZCAqKmNvbnRleHQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBl bnVtIGdydWJfdmVyaWZ5X2ZsYWdzICpmbGFncykKK3sKKyAgaWYgKGNoZWNrX3NpZ3MgPT0gQ0hF Q0tfU0lHU19OTykKKyAgICB7CisgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19TS0lQ X1ZFUklGSUNBVElPTjsKKyAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOworICAgIH0KKworICBz d2l0Y2ggKHR5cGUgJiBHUlVCX0ZJTEVfVFlQRV9NQVNLKQorICAgIHsKKyAgICAgIGNhc2UgR1JV Ql9GSUxFX1RZUEVfQ0VSVElGSUNBVEVfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRo aXMgaXMgYSBjZXJ0aWZpY2F0ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXljaGFpbi4KKyAgICAgICAg ICoKKyAgICAgICAgICogVGhpcyBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBibG9ja2VkLiBJZGVh bGx5IHdlJ2Qgd3JpdGUgYW4geDUwOQorICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sg dGhlIGh1YnJpcyByZXF1aXJlZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCisgICAgICAgICAq IHJlcXVpcmUgdGhhdCBpdCBoYXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAgICAgICAgICov CisgICAgICBjYXNlIEdSVUJfRklMRV9UWVBFX0xJTlVYX0tFUk5FTDoKKyAgICAgIGNhc2UgR1JV Ql9GSUxFX1RZUEVfR1JVQl9NT0RVTEU6CisgICAgICAgIC8qCisgICAgICAgICAqIEFwcGVuZGVk IHNpZ25hdHVyZXMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgRUxGIGJpbmFyaWVzLgorICAgICAgICAg KiBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIHdlIG9ubHkgdmVyaWZ5IExpbnV4IGtl cm5lbHMgYW5kCisgICAgICAgICAqIEdSVUIgbW9kdWxlcyBhdCB0aGlzIHBvaW50LgorICAgICAg ICAgKi8KKyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfU0lOR0xFX0NIVU5LOwor ICAgICAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQ RV9BQ1BJX1RBQkxFOgorICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9ERVZJQ0VfVFJFRV9JTUFH RToKKyAgICAgICAgLyoKKyAgICAgICAgICogSXQgaXMgcG9zc2libGUgdG8gdXNlIGFwcGVuZGVk IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gd2l0aG91dAorICAgICAgICAgKiBsb2NrZG93biAtIGxp a2UgdGhlIFBHUCB2ZXJpZmllci4gV2hlbiBjb21iaW5lZCB3aXRoIGFuIGVtYmVkZGVkCisgICAg ICAgICAqIGNvbmZpZyBmaWxlIGluIGEgc2lnbmVkIEdSVUIgYmluYXJ5LCB0aGlzIGNvdWxkIHN0 aWxsIGJlIGEgbWVhbmluZ2Z1bAorICAgICAgICAgKiBzZWN1cmUtYm9vdCBjaGFpbiAtIHNvIGxv bmcgYXMgaXQgaXNuJ3Qgc3VidmVydGVkIGJ5IHNvbWV0aGluZyBsaWtlIGEKKyAgICAgICAgICog cm91Z2UgQUNQSSB0YWJsZSBvciBEVCBpbWFnZS4gRGVmZXIgdGhlbSBleHBsaWNpdGx5LgorICAg ICAgICAgKi8KKyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfREVGRVJfQVVUSDsK KyAgICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg ICpmbGFncyA9IEdSVUJfVkVSSUZZX0ZMQUdTX1NLSVBfVkVSSUZJQ0FUSU9OOworICAgICAgICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKKyAgICB9Cit9CisKK3N0YXRpYyBncnViX2Vycl90CithcHBl bmRlZHNpZ193cml0ZSAodm9pZCAqY3R4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIHZvaWQg KmJ1ZiwgZ3J1Yl9zaXplX3Qgc2l6ZSkKK3sKKyAgcmV0dXJuIGdydWJfdmVyaWZ5X2FwcGVuZGVk X3NpZ25hdHVyZSAoYnVmLCBzaXplKTsKK30KKworc3RydWN0IGdydWJfZmlsZV92ZXJpZmllciBn cnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyID0geworICAubmFtZSA9ICJhcHBlbmRlZHNpZyIsCisg IC5pbml0ID0gYXBwZW5kZWRzaWdfaW5pdCwKKyAgLndyaXRlID0gYXBwZW5kZWRzaWdfd3JpdGUs Cit9OworCitzdGF0aWMgZ3J1Yl9zc2l6ZV90Citwc2V1ZG9fcmVhZCAoc3RydWN0IGdydWJfZmls ZSAqZmlsZSwgY2hhciAqYnVmLCBncnViX3NpemVfdCBsZW4pCit7CisgIGdydWJfbWVtY3B5IChi dWYsIChncnViX3VpbnQ4X3QgKikgZmlsZS0+ZGF0YSArIGZpbGUtPm9mZnNldCwgbGVuKTsKKyAg cmV0dXJuIGxlbjsKK30KKworLyogRmlsZXN5c3RlbSBkZXNjcmlwdG9yLiAqLworc3RhdGljIHN0 cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKKyAgLm5hbWUgPSAicHNldWRvIiwKKyAgLmZzX3Jl YWQgPSBwc2V1ZG9fcmVhZAorfTsKKworc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnks IGNtZF9saXN0LCBjbWRfZGJ4LCBjbWRfZGI7CisKK0dSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2ln KQoreworICBpbnQgcmM7CisgIHN0cnVjdCBncnViX21vZHVsZV9oZWFkZXIgKmhlYWRlcjsKKwor ICAvKiBJZiBpbiBsb2NrZG93biwgaW1tZWRpYXRlbHkgZW50ZXIgZm9yY2VkIG1vZGUuICovCisg IGlmIChncnViX2lzX2xvY2tkb3duICgpID09IEdSVUJfTE9DS0RPV05fRU5BQkxFRCkKKyAgICBj aGVja19zaWdzID0gQ0hFQ0tfU0lHU19GT1JDRUQ7CisKKyAgZGIgPSBOVUxMOworICBncnViX3Jl Z2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzIiwgZ3J1Yl9l bnZfcmVhZF9zZWMsIGdydWJfZW52X3dyaXRlX3NlYyk7CisgIGdydWJfZW52X2V4cG9ydCAoImNo ZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKKworICByYyA9IGFzbjFfaW5pdCAoKTsKKyAgaWYg KHJjKQorICAgIGdydWJfZmF0YWwgKCJlcnJvciBpbml0aW5nIEFTTi4xIGRhdGEgc3RydWN0dXJl czogJWQ6ICVzXG4iLCByYywgYXNuMV9zdHJlcnJvciAocmMpKTsKKworICBGT1JfTU9EVUxFUyAo aGVhZGVyKQorICB7CisgICAgc3RydWN0IGdydWJfZmlsZSBwc2V1ZG9fZmlsZTsKKyAgICBzdHJ1 Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqcGsgPSBOVUxMOworICAgIGdydWJfZXJyX3QgZXJyOworCisg ICAgLyogTm90IGFuIFguNTA5IGNlcnRpZmljYXRlLCBza2lwLiAqLworICAgIGlmIChoZWFkZXIt PnR5cGUgIT0gT0JKX1RZUEVfWDUwOV9QVUJLRVkpCisgICAgICBjb250aW51ZTsKKworICAgIGdy dWJfbWVtc2V0ICgmcHNldWRvX2ZpbGUsIDAsIHNpemVvZiAocHNldWRvX2ZpbGUpKTsKKyAgICBw c2V1ZG9fZmlsZS5mcyA9ICZwc2V1ZG9fZnM7CisgICAgcHNldWRvX2ZpbGUuc2l6ZSA9IGhlYWRl ci0+c2l6ZSAtIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7CisgICAgcHNldWRv X2ZpbGUuZGF0YSA9IChjaGFyICopIGhlYWRlciArIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxl X2hlYWRlcik7CisKKyAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJmb3VuZCBhbiB4 NTA5IGtleSwgc2l6ZT0lIiBQUkl1R1JVQl9VSU5UNjRfVCAiXG4iLAorICAgICAgICAgICAgICAg ICAgcHNldWRvX2ZpbGUuc2l6ZSk7CisKKyAgICBwayA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0 cnVjdCB4NTA5X2NlcnRpZmljYXRlKSk7CisgICAgaWYgKHBrID09IE5VTEwpCisgICAgICBncnVi X2ZhdGFsICgib3V0IG9mIG1lbW9yeSBsb2FkaW5nIGluaXRpYWwgY2VydGlmaWNhdGVzLiIpOwor CisgICAgZXJyID0gcmVhZF9jZXJ0X2Zyb21fZmlsZSAoJnBzZXVkb19maWxlLCBwayk7CisgICAg aWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGxvYWRp bmcgaW5pdGlhbCBrZXk6ICVzIiwgZ3J1Yl9lcnJtc2cpOworCisgICAgZ3J1Yl9kcHJpbnRmICgi YXBwZW5kZWRzaWciLCAibG9hZGVkIGNlcnRpZmljYXRlIENOPSclcydcbiIsIHBrLT5zdWJqZWN0 KTsKKworICAgIHBrLT5uZXh0ID0gZGI7CisgICAgZGIgPSBwazsKKyAgfQorCisgIGNtZF9kYiA9 IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJfY2VydCIsIGdydWJfY21kX2Ri LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5fKCJBZGQgdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIHRvIHRoZSBkYiIpKTsKKyAgY21k X2xpc3QgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfbGlzdF9kYiIsIGdydWJfY21k X2xpc3QsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiU2hvdyB0 aGUgbGlzdCBvZiB0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlcyBmcm9tIHRoZSBkYiIpKTsKKyAg Y21kX3ZlcmlmeSA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF92ZXJpZnkiLCBncnVi X2NtZF92ZXJpZnlfc2lnbmF0dXJlLCBOXygiRklMRSIpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOXygiVmVyaWZ5IEZJTEUgYWdhaW5zdCB0aGUgdHJ1c3RlZCBYLjUw OSBjZXJ0aWZpY2F0ZXMgaW4gdGhlIGRiIikpOworICBjbWRfZGJ4ID0gZ3J1Yl9yZWdpc3Rlcl9j b21tYW5kICgiYXBwZW5kX3JtX2RieF9jZXJ0IiwgZ3J1Yl9jbWRfZGJ4LCBOXygiQ0VSVF9OVU1C RVIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlJlbW92ZSBDRVJU X05VTUJFUiAoYXMgbGlzdGVkIGJ5IGFwcGVuZF9saXN0X2RiKSBmcm9tIHRoZSBkYiIpKTsKKwor ICBncnViX3ZlcmlmaWVyX3JlZ2lzdGVyICgmZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmllcik7Cisg IGdydWJfZGxfc2V0X3BlcnNpc3RlbnQgKG1vZCk7Cit9CisKK0dSVUJfTU9EX0ZJTkkgKGFwcGVu ZGVkc2lnKQoreworICAvKgorICAgKiBncnViX2RsX3NldF9wZXJzaXN0ZW50IHNob3VsZCBwcmV2 ZW50IHRoaXMgZnJvbSBhY3R1YWxseSBydW5uaW5nLCBidXQKKyAgICogaXQgZG9lcyBzdGlsbCBy dW4gdW5kZXIgZW11LgorICAgKi8KKyAgZ3J1Yl92ZXJpZmllcl91bnJlZ2lzdGVyICgmZ3J1Yl9h cHBlbmRlZHNpZ192ZXJpZmllcik7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfdmVy aWZ5KTsKKyAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9saXN0KTsKKyAgZ3J1Yl91bnJl Z2lzdGVyX2NvbW1hbmQgKGNtZF9kYik7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRf ZGJ4KTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9maWxlLmggYi9pbmNsdWRlL2dydWIv ZmlsZS5oCmluZGV4IGE1YmYzYTc5Mi4uZDY3OGRlMDYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dy dWIvZmlsZS5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKQEAgLTgwLDYgKzgwLDggQEAgZW51 bSBncnViX2ZpbGVfdHlwZQogICAgIEdSVUJfRklMRV9UWVBFX1BVQkxJQ19LRVksCiAgICAgLyog RmlsZSBob2xkaW5nIHB1YmxpYyBrZXkgdG8gYWRkIHRvIHRydXNlZCBrZXlzLiAgKi8KICAgICBH UlVCX0ZJTEVfVFlQRV9QVUJMSUNfS0VZX1RSVVNULAorICAgIC8qIEZpbGUgaG9sZGluZyB4NTA5 IGNlcnRpZmljaWF0ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXlzLiAgKi8KKyAgICBHUlVCX0ZJTEVf VFlQRV9DRVJUSUZJQ0FURV9UUlVTVCwKICAgICAvKiBGaWxlIG9mIHdoaWNoIHdlIGludGVuZCB0 byBwcmludCBhIGJsb2NrbGlzdCB0byB0aGUgdXNlci4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVf UFJJTlRfQkxPQ0tMSVNULAogICAgIC8qIEZpbGUgd2UgaW50ZW5kIHRvIHVzZSBmb3IgdGVzdCBs b2FkaW5nIG9yIHRlc3Rpbmcgc3BlZWQuICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2 ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcv bWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==