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 8664ECCA471 for ; Mon, 6 Oct 2025 07:28:04 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v5fbq-0007lk-8d; Mon, 06 Oct 2025 03:26: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 1v5fbi-0007jJ-JL for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:06 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v5fbf-0001wt-93 for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:06 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 595N2ewr006201; Mon, 6 Oct 2025 07:26:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=1vySdb Xt21UzMo+ds9c/XPZx+yoqj+OM/jLpDWxqvcw=; b=UzPvHFhceesxjPmbpPpUII tG1lz79UmeJ0gFZFrBDrkVkR0IBpl6RvQVxgI85y9PHdnJr4AC3nYX7bd7e1gYO9 epFIeYyPqLVSMA7NZa3YqqIi2CBE8M9lE5rpQdvVWfHRb5LOMS4G9nU3mA3s1ouF 0/NCu5F+BMA4O/c8It44jd5ishgQqSKpqg9U2df3liHjfB59SGuDdTGPvB54Elof qulggCz1arO6e5x7aVB4yzBS5aUYCDB7EWtJmmqcPhIlk1TCme4tvm/MWP7AQ1BY 33mt64SWgy7pO/5AZvcJavowYCUpkPTZVrxkeLmBx/arVSvwrSxQJX0A4zppo/rw == Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49jt0p7mdr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:26:00 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5965ifWT030964; Mon, 6 Oct 2025 07:26:00 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49kfdjvrmp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:25:59 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5967PtC934013466 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Oct 2025 07:25:56 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D077F2004B; Mon, 6 Oct 2025 07:25:55 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 934CC20040; Mon, 6 Oct 2025 07:25:52 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.213.16]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Oct 2025 07:25:52 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , sridharm@linux.ibm.com, Daniel Kiper Subject: [PATCH v18 10/20] appended signatures: Support verifying appended signatures Date: Mon, 6 Oct 2025 12:54:55 +0530 Message-ID: <20251006072508.19088-11-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251006072508.19088-1-sudhakar@linux.ibm.com> References: <20251006072508.19088-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=XvT3+FF9 c=1 sm=1 tr=0 ts=68e36f08 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=RY-FXc0reJtTllVORC4A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=WlT8qwTXB_Kj6um4hl3b:22 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-ORIG-GUID: 2Ch8GW6LhQPCqo9VuHmT3-0w8v3LBCmm X-Proofpoint-GUID: 2Ch8GW6LhQPCqo9VuHmT3-0w8v3LBCmm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDA0MDAwOSBTYWx0ZWRfX0nqniIhCsxZ4 /l1nQ08l6OpFyFh8y+tJDhGC64C/zKwbDBlxnGHyA3AMBvZyKjNACGXiASl+FftMtjGdKakGebs B2L4CoNWDFL59/9AufKpfrC+EYr6JN2DQBmsGLgmsHFH5VvJp4MNzIyD8b7ulYIN62QDHsjMUhb vJzNmdbj48jB+6KA+0d9pSi3ELLaro1jX8OGLIVCe4chrLkeRwi/iZNT2sMfXqN5S9zm7zaE2fW vGL0AEMA8Y1KEvFYJGKz255UKhRVT44b3gIEgXPEYO4ETkoTgQJfPFmxF24iZ8miAft5KCWIc7R vzh2YmphG0+6kHSF3sOSWH3nNa3e0T7LEqbyZURkNwmuuoT2cSoT2vPYmLQXTI/DB6oeFxlXeWx L5oorCM8KsIRFhZiOZGg3K69WfnN2g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-06_02,2025-10-02_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 priorityscore=1501 clxscore=1015 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2510040009 Received-SPF: pass client-ip=148.163.158.5; envelope-from=sudhakar@linux.ibm.com; helo=mx0b-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.01, RCVD_IN_MSPIKE_WL=-0.01, 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 QnVpbGRpbmcgb24gdGhlIHBhcnNlcnMgYW5kIHRoZSBhYmlsaXR5IHRvIGVtYmVkIFguNTA5IGNl cnRpZmljYXRlcywgYXMgd2VsbAphcyB0aGUgZXhpc3RpbmcgZ2NyeXB0IGZ1bmN0aW9uYWxpdHks IGFkZCBhIG1vZHVsZSBmb3IgdmVyaWZ5aW5nIGFwcGVuZGVkCnNpZ25hdHVyZXMuCgpUaGlzIGlu Y2x1ZGVzIGEgc2lnbmF0dXJlIHZlcmlmaWVyIHRoYXQgcmVxdWlyZXMgdGhhdCB0aGUgTGludXgg a2VybmVsIGFuZApHUlVCIG1vZHVsZXMgaGF2ZSBhcHBlbmRlZCBzaWduYXR1cmVzIGZvciB2ZXJp ZmljYXRpb24uCgpTaWduYXR1cmUgdmVyaWZpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCBieSBzZXR0 aW5nIGNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMuCklmIHNlY3VyZSBib290IGlzIGVuYWJsZWQg d2l0aCBlbmZvcmNlIG1vZGUgd2hlbiB0aGUgYXBwZW5kZWRzaWcgbW9kdWxlIGlzCmxvYWRlZCwg c2lnbmF0dXJlIHZlcmlmaWNhdGlvbiB3aWxsIGJlIGVuYWJsZWQsIGFuZCB0cnVzdGVkIGtleXMg d2lsbCBiZQpleHRyYWN0ZWQgZnJvbSB0aGUgR1JVQiBFTEYgTm90ZSBhbmQgc3RvcmVkIGluIHRo ZSBkYiBhbmQgbG9ja2VkIGF1dG9tYXRpY2FsbHkuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQXh0 ZW5zIDxkamFAYXh0ZW5zLm5ldD4KU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxz dWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlz aEBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJA b3JhY2xlLmNvbT4KLS0tCiBncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgICAgICAgICAgICAg ICAgICB8ICAxNSArCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcu YyB8IDU4MSArKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvZXJyLmggICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogaW5jbHVkZS9ncnViL2ZpbGUuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCA2MDAgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdydWItY29yZS9jb21tYW5kcy9h cHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxl LmNvcmUuZGVmIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCmluZGV4IDhlMzkyOTcxMC4u NjgyNGEwZWU0IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKKysrIGIv Z3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCkBAIC05OTcsNiArOTk3LDIxIEBAIG1vZHVsZSA9 IHsKICAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSc7CiB9OwogCittb2R1bGUgPSB7Cisg IG5hbWUgPSBhcHBlbmRlZHNpZzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBw ZW5kZWRzaWcuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcveDUwOS5jOworICBj b21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9wa2NzNy5jOworICBjb21tb24gPSBjb21tYW5k cy9hcHBlbmRlZHNpZy9hc24xdXRpbC5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNp Zy9nbnV0bHNfYXNuMV90YWIuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcvcGtp eF9hc24xX3RhYi5jOworICBlbmFibGUgPSBlbXU7CisgIGVuYWJsZSA9IHBvd2VycGNfaWVlZTEy NzU7CisgIGNmbGFncyA9ICckKENGTEFHU19HQ1JZKSAtV25vLXJlZHVuZGFudC1kZWNscyc7Cisg IGNwcGZsYWdzID0gJyQoQ1BQRkxBR1NfR0NSWSkgLUkkKHNyY2RpcikvbGliL2xpYnRhc24xLWdy dWInOworICBkZXBlbmRzID0gY3J5cHRvLCBnY3J5X3JzYSwgZ2NyeV9zaGEyNTYsIGdjcnlfc2hh NTEyLCBtcGksIGFzbjE7Cit9OworCiBtb2R1bGUgPSB7CiAgIG5hbWUgPSBoZHBhcm07CiAgIGNv bW1vbiA9IGNvbW1hbmRzL2hkcGFybS5jOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRz L2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRz aWcvYXBwZW5kZWRzaWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmU1 M2VmZDJkYQotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNp Zy9hcHBlbmRlZHNpZy5jCkBAIC0wLDAgKzEsNTgxIEBACisvKgorICogIEdSVUIgIC0tICBHUmFu ZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwLCAy MDIxLCAyMDIyLCAyMDI1IElCTSBDb3Jwb3JhdGlvbgorICoKKyAqICBHUlVCIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiAgR1JVQiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0 aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICov CisKKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisjaW5jbHVkZSA8Z3J1Yi9taXNjLmg+CisjaW5j bHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIvZXJyLmg+CisjaW5jbHVkZSA8Z3J1Yi9k bC5oPgorI2luY2x1ZGUgPGdydWIvZmlsZS5oPgorI2luY2x1ZGUgPGdydWIvY29tbWFuZC5oPgor I2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+CisjaW5jbHVkZSA8Z3J1Yi9pMThuLmg+CisjaW5jbHVk ZSA8Z3J1Yi9nY3J5cHQvZ2NyeXB0Lmg+CisjaW5jbHVkZSA8Z3J1Yi9rZXJuZWwuaD4KKyNpbmNs dWRlIDxncnViL2V4dGNtZC5oPgorI2luY2x1ZGUgPGdydWIvdmVyaWZ5Lmg+CisjaW5jbHVkZSA8 bGlidGFzbjEuaD4KKyNpbmNsdWRlIDxncnViL2Vudi5oPgorI2luY2x1ZGUgPGdydWIvbG9ja2Rv d24uaD4KKworI2luY2x1ZGUgImFwcGVuZGVkc2lnLmgiCisKK0dSVUJfTU9EX0xJQ0VOU0UgKCJH UEx2MysiKTsKKworLyogUHVibGljIGtleSB0eXBlLiAqLworI2RlZmluZSBQS0VZX0lEX1BLQ1M3 ICAgICAgMgorCisvKiBBcHBlbmRlZCBzaWduYXR1cmUgbWFnaWMgc3RyaW5nIGFuZCBzaXplLiAq LworI2RlZmluZSBTSUdfTUFHSUMgICAgICAgICAgIn5Nb2R1bGUgc2lnbmF0dXJlIGFwcGVuZGVk flxuIgorI2RlZmluZSBTSUdfTUFHSUNfU0laRSAgICAgKChzaXplb2YoU0lHX01BR0lDKSAtIDEp KQorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgZXh0cmFjdGVkIGZyb20gc2NyaXB0cy9zaWdu LWZpbGUuYyBpbiB0aGUgbGludXgga2VybmVsCisgKiBzb3VyY2UuIEl0IHdhcyBsaWNlbnNlZCBh cyBMR1BMdjIuMSssIHdoaWNoIGlzIEdQTHYzKyBjb21wYXRpYmxlLgorICovCitzdHJ1Y3QgbW9k dWxlX3NpZ25hdHVyZQoreworICBncnViX3VpbnQ4X3QgYWxnbzsgICAgICAgLyogUHVibGljLWtl eSBjcnlwdG8gYWxnb3JpdGhtIFswXS4gKi8KKyAgZ3J1Yl91aW50OF90IGhhc2g7ICAgICAgIC8q IERpZ2VzdCBhbGdvcml0aG0gWzBdLiAqLworICBncnViX3VpbnQ4X3QgaWRfdHlwZTsgICAgLyog S2V5IGlkZW50aWZpZXIgdHlwZSBbUEtFWV9JRF9QS0NTN10uICovCisgIGdydWJfdWludDhfdCBz aWduZXJfbGVuOyAvKiBMZW5ndGggb2Ygc2lnbmVyJ3MgbmFtZSBbMF0uICovCisgIGdydWJfdWlu dDhfdCBrZXlfaWRfbGVuOyAvKiBMZW5ndGggb2Yga2V5IGlkZW50aWZpZXIgWzBdLiAqLworICBn cnViX3VpbnQ4X3QgX19wYWRbM107CisgIGdydWJfdWludDMyX3Qgc2lnX2xlbjsgICAvKiBMZW5n dGggb2Ygc2lnbmF0dXJlIGRhdGEuICovCit9IEdSVUJfUEFDS0VEOworCisjZGVmaW5lIFNJR19N RVRBREFUQV9TSVpFICAoc2l6ZW9mIChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSkpCisjZGVmaW5l IEFQUEVOREVEX1NJR19TSVpFKHBrY3M3X2RhdGFfc2l6ZSkgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHBrY3M3X2RhdGFfc2l6ZSArIFNJR19NQUdJQ19TSVpFICsgU0lHX01FVEFEQVRB X1NJWkUpCisKKy8qIFRoaXMgcmVwcmVzZW50cyBhbiBlbnRpcmUsIHBhcnNlZCwgYXBwZW5kZWQg c2lnbmF0dXJlLiAqLworc3RydWN0IGFwcGVuZGVkX3NpZ25hdHVyZQoreworICBzdHJ1Y3QgbW9k dWxlX3NpZ25hdHVyZSBzaWdfbWV0YWRhdGE7IC8qIE1vZHVsZSBzaWduYXR1cmUgbWV0YWRhdGEu ICovCisgIGdydWJfcGtjczdfZGF0YV90IHBrY3M3OyAgICAgICAgICAgICAgLyogUGFyc2VkIFBL Q1MjNyBkYXRhLiAqLworICBncnViX3NpemVfdCBzaWduYXR1cmVfbGVuOyAgICAgICAgICAgIC8q IExlbmd0aCBvZiBQS0NTIzcgZGF0YSArIG1ldGFkYXRhICsgbWFnaWMuICovCit9OwordHlwZWRl ZiBzdHJ1Y3QgYXBwZW5kZWRfc2lnbmF0dXJlIHNiX2FwcGVuZGVkc2lnX3Q7CisKKy8qIFRoaXMg cmVwcmVzZW50cyBhIHRydXN0ZWQgY2VydGlmaWNhdGVzLiAqLworc3RydWN0IHNiX2RhdGFiYXNl Cit7CisgIGdydWJfeDUwOV9jZXJ0X3QgKmNlcnRzOyAgICAvKiBDZXJ0aWZpY2F0ZXMuICovCisg IGdydWJfdWludDMyX3QgY2VydF9lbnRyaWVzOyAvKiBOdW1iZXIgb2YgY2VydGlmaWNhdGVzLiAq LworfTsKK3R5cGVkZWYgc3RydWN0IHNiX2RhdGFiYXNlIHNiX2RhdGFiYXNlX3Q7CisKKy8qIFRo ZSBkYiBsaXN0IGlzIHVzZWQgdG8gdmFsaWRhdGUgYXBwZW5kZWQgc2lnbmF0dXJlcy4gKi8KK3N0 YXRpYyBzYl9kYXRhYmFzZV90IGRiID0gey5jZXJ0cyA9IE5VTEwsIC5jZXJ0X2VudHJpZXMgPSAw fTsKKworLyoKKyAqIFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmxhZyAoY2hlY2tfc2lncykuCisg KiBjaGVja19zaWdzOiBmYWxzZQorICogIC0gTm8gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4gVGhp cyBpcyB0aGUgZGVmYXVsdC4KKyAqIGNoZWNrX3NpZ3M6IHRydWUKKyAqICAtIEVuZm9yY2Ugc2ln bmF0dXJlIHZlcmlmaWNhdGlvbiwgYW5kIGlmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbHMs IHBvc3QKKyAqICAgIHRoZSBlcnJvcnMgYW5kIHN0b3AgdGhlIGJvb3QuCisgKi8KK3N0YXRpYyBi b29sIGNoZWNrX3NpZ3MgPSBmYWxzZTsKKworc3RhdGljIGdydWJfc3NpemVfdAorcHNldWRvX3Jl YWQgKHN0cnVjdCBncnViX2ZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwgZ3J1Yl9zaXplX3QgbGVuKQor eworICBncnViX21lbWNweSAoYnVmLCAoZ3J1Yl91aW50OF90ICopIGZpbGUtPmRhdGEgKyBmaWxl LT5vZmZzZXQsIGxlbik7CisgIHJldHVybiBsZW47Cit9CisKKy8qIEZpbGVzeXN0ZW0gZGVzY3Jp cHRvci4gKi8KK3N0YXRpYyBzdHJ1Y3QgZ3J1Yl9mcyBwc2V1ZG9fZnMgPSB7CisgIC5uYW1lID0g InBzZXVkbyIsCisgIC5mc19yZWFkID0gcHNldWRvX3JlYWQKK307CisKK3N0YXRpYyBib29sCitp c19jZXJ0X21hdGNoIChjb25zdCBncnViX3g1MDlfY2VydF90ICpjZXJ0MSwgY29uc3QgZ3J1Yl94 NTA5X2NlcnRfdCAqY2VydDIpCit7CisgIGlmIChncnViX21lbWNtcCAoY2VydDEtPnN1YmplY3Qs IGNlcnQyLT5zdWJqZWN0LCBjZXJ0Mi0+c3ViamVjdF9sZW4pID09IDAKKyAgICAgICYmIGdydWJf bWVtY21wIChjZXJ0MS0+aXNzdWVyLCBjZXJ0Mi0+aXNzdWVyLCBjZXJ0Mi0+aXNzdWVyX2xlbikg PT0gMAorICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGNlcnQxLT5zZXJpYWwsIGNlcnQyLT5zZXJpYWws IGNlcnQyLT5zZXJpYWxfbGVuKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoY2VydDEtPm1w aXNbR1JVQl9SU0FfUEtfTU9EVUxVU10sIGNlcnQyLT5tcGlzW0dSVUJfUlNBX1BLX01PRFVMVVNd LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoY2VydDItPm1waXNbR1JVQl9SU0FfUEtf TU9EVUxVU10pKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoY2VydDEtPm1waXNbR1JVQl9S U0FfUEtfRVhQT05FTlRdLCBjZXJ0Mi0+bXBpc1tHUlVCX1JTQV9QS19FWFBPTkVOVF0sCisgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChjZXJ0Mi0+bXBpc1tHUlVCX1JTQV9QS19FWFBPTkVO VF0pKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoY2VydDEtPmZpbmdlcnByaW50W0dSVUJf RklOR0VSUFJJTlRfU0hBMjU2XSwKKyAgICAgICAgICAgICAgICAgICAgICBjZXJ0Mi0+ZmluZ2Vy cHJpbnRbR1JVQl9GSU5HRVJQUklOVF9TSEEyNTZdLAorICAgICAgICAgICAgICAgICAgICAgIGdy dWJfc3RybGVuICgoY2hhciAqKSBjZXJ0Mi0+ZmluZ2VycHJpbnRbR1JVQl9GSU5HRVJQUklOVF9T SEEyNTZdKSkgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisK Ky8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBwcmVzZW5jZSBpbiB0aGUgZGIgbGlzdC4gKi8KK3N0 YXRpYyBib29sCitjaGVja19jZXJ0X3ByZXNlbmNlIChjb25zdCBncnViX3g1MDlfY2VydF90ICpj ZXJ0X2luLCBjb25zdCBzYl9kYXRhYmFzZV90ICpzYl9kYXRhYmFzZSkKK3sKKyAgZ3J1Yl94NTA5 X2NlcnRfdCAqY2VydDsKKworICBmb3IgKGNlcnQgPSBzYl9kYXRhYmFzZS0+Y2VydHM7IGNlcnQg IT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCisgICAgaWYgKGlzX2NlcnRfbWF0Y2ggKGNlcnQs IGNlcnRfaW4pID09IHRydWUpCisgICAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7 Cit9CisKKy8qIEFkZCB0aGUgY2VydGlmaWNhdGUgaW50byB0aGUgZGIgbGlzdCAqLworc3RhdGlj IGdydWJfZXJyX3QKK2FkZF9jZXJ0aWZpY2F0ZSAoY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBj b25zdCBncnViX3NpemVfdCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgIHNiX2RhdGFiYXNl X3QgKnNiX2RhdGFiYXNlKQoreworICBncnViX2Vycl90IHJjOworICBncnViX3g1MDlfY2VydF90 ICpjZXJ0OworCisgIGlmIChkYXRhID09IE5VTEwgfHwgZGF0YV9zaXplID09IDApCisgICAgcmV0 dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9SQU5HRSwgImNlcnRpZmljYXRlIGRhdGEg b3Igc2l6ZSBpcyBub3QgYXZhaWxhYmxlIik7CisKKyAgY2VydCA9IGdydWJfemFsbG9jIChzaXpl b2YgKGdydWJfeDUwOV9jZXJ0X3QpKTsKKyAgaWYgKGNlcnQgPT0gTlVMTCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKwor ICByYyA9IGdydWJfeDUwOV9jZXJ0X3BhcnNlIChkYXRhLCBkYXRhX3NpemUsIGNlcnQpOworICBp ZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICB7CisgICAgICBncnViX2RwcmludGYgKCJhcHBl bmRlZHNpZyIsICJjYW5ub3QgYWRkIGEgY2VydGlmaWNhdGUgQ049JyVzJyB0byB0aGUgZGIgbGlz dFxuIiwKKyAgICAgICAgICAgICAgICAgICAgY2VydC0+c3ViamVjdCk7CisgICAgICBncnViX2Zy ZWUgKGNlcnQpOworICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICBpZiAoY2hlY2tfY2VydF9w cmVzZW5jZSAoY2VydCwgc2JfZGF0YWJhc2UpID09IHRydWUpCisgICAgeworICAgICAgZ3J1Yl9k cHJpbnRmICgiYXBwZW5kZWRzaWciLAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBh IGNlcnRpZmljYXRlIENOPSclcycsIGFzIGl0IGlzIHByZXNlbnQgaW4gdGhlIGRiIGxpc3QiLAor ICAgICAgICAgICAgICAgICAgICBjZXJ0LT5zdWJqZWN0KTsKKyAgICAgIGdydWJfeDUwOV9jZXJ0 X3JlbGVhc2UgKGNlcnQpOworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKworICAgICAgcmV0dXJu IEdSVUJfRVJSX0VYSVNUUzsKKyAgICB9CisKKyAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAiYWRkZWQgYSBjZXJ0aWZpY2F0ZSBDTj0nJXMnIHRvIHRoZSBkYiBsaXN0XG4iLAorICAgICAg ICAgICAgICAgIGNlcnQtPnN1YmplY3QpOworCisgIGNlcnQtPm5leHQgPSBzYl9kYXRhYmFzZS0+ Y2VydHM7CisgIHNiX2RhdGFiYXNlLT5jZXJ0cyA9IGNlcnQ7CisgIHNiX2RhdGFiYXNlLT5jZXJ0 X2VudHJpZXMrKzsKKworICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBncnViX2Vycl90CitmaWxl X3JlYWRfd2hvbGUgKGdydWJfZmlsZV90IGZpbGUsIGdydWJfdWludDhfdCAqKmJ1ZiwgZ3J1Yl9z aXplX3QgKmxlbikKK3sKKyAgZ3J1Yl9vZmZfdCBmdWxsX2ZpbGVfc2l6ZTsKKyAgZ3J1Yl9zaXpl X3QgZmlsZV9zaXplLCB0b3RhbF9yZWFkX3NpemUgPSAwOworICBncnViX3NzaXplX3QgcmVhZF9z aXplOworCisgIGZ1bGxfZmlsZV9zaXplID0gZ3J1Yl9maWxlX3NpemUgKGZpbGUpOworICBpZiAo ZnVsbF9maWxlX3NpemUgPT0gR1JVQl9GSUxFX1NJWkVfVU5LTk9XTikKKyAgICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAi Y2Fubm90IHJlYWQgYSBmaWxlIG9mIHVua25vd24gc2l6ZSBpbnRvIGEgYnVmZmVyIik7CisKKyAg aWYgKGZ1bGxfZmlsZV9zaXplID4gR1JVQl9TSVpFX01BWCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfT1VUX09GX1JBTkdFLAorICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBp cyB0b28gbGFyZ2UgdG8gcmVhZDogJSIgUFJJdUdSVUJfT0ZGU0VUICIgYnl0ZXMiLAorICAgICAg ICAgICAgICAgICAgICAgICBmdWxsX2ZpbGVfc2l6ZSk7CisKKyAgZmlsZV9zaXplID0gKGdydWJf c2l6ZV90KSBmdWxsX2ZpbGVfc2l6ZTsKKyAgKmJ1ZiA9IGdydWJfbWFsbG9jIChmaWxlX3NpemUp OworICBpZiAoKmJ1ZiA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9P VVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGFsbG9jYXRl IGZpbGUgZGF0YSBidWZmZXIgc2l6ZSAlIiBQUkl1R1JVQl9TSVpFLAorICAgICAgICAgICAgICAg ICAgICAgICBmaWxlX3NpemUpOworCisgIHdoaWxlICh0b3RhbF9yZWFkX3NpemUgPCBmaWxlX3Np emUpCisgICAgeworICAgICAgcmVhZF9zaXplID0gZ3J1Yl9maWxlX3JlYWQgKGZpbGUsICpidWYg KyB0b3RhbF9yZWFkX3NpemUsIGZpbGVfc2l6ZSAtIHRvdGFsX3JlYWRfc2l6ZSk7CisgICAgICBp ZiAocmVhZF9zaXplIDwgMCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoKmJ1Zik7 CisgICAgICAgICAgcmV0dXJuIGdydWJfZXJybm87CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYg KHJlYWRfc2l6ZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9mcmVlICgqYnVmKTsK KyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJjb3VsZCBub3QgcmVhZCBmdWxsIGZpbGUgc2l6ZSAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIoJSIgUFJJdUdSVUJfU0laRSAiKSwgb25seSAlIiBQUkl1 R1JVQl9TSVpFICIgYnl0ZXMgcmVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp bGVfc2l6ZSwgdG90YWxfcmVhZF9zaXplKTsKKyAgICAgICAgfQorCisgICAgICB0b3RhbF9yZWFk X3NpemUgKz0gcmVhZF9zaXplOworICAgIH0KKworICAqbGVuID0gZmlsZV9zaXplOworCisgIHJl dHVybiBHUlVCX0VSUl9OT05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZXh0cmFjdF9hcHBl bmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZz aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiX2FwcGVuZGVkc2lnX3QgKnNpZykK K3sKKyAgZ3J1Yl9zaXplX3QgYXBwZW5kZWRzaWdfcGtjczdfc2l6ZTsKKyAgZ3J1Yl9zaXplX3Qg c2lnbmVkX2RhdGFfc2l6ZSA9IGJ1ZnNpemU7CisgIGNvbnN0IGdydWJfdWludDhfdCAqc2lnbmVk X2RhdGEgPSBidWY7CisKKyAgaWYgKHNpZ25lZF9kYXRhX3NpemUgPCBTSUdfTUFHSUNfU0laRSkK KyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgImZpbGUgdG9v IHNob3J0IGZvciBzaWduYXR1cmUgbWFnaWMiKTsKKworICAvKiBGYXN0LWZvcndhcmRpbmcgcG9p bnRlciBhbmQgZ2V0IHNpZ25hdHVyZSBtYWdpYyBzdHJpbmcuICovCisgIHNpZ25lZF9kYXRhICs9 IHNpZ25lZF9kYXRhX3NpemUgLSBTSUdfTUFHSUNfU0laRTsKKyAgaWYgKGdydWJfc3RybmNtcCAo KGNvbnN0IGNoYXIgKikgc2lnbmVkX2RhdGEsIFNJR19NQUdJQywgU0lHX01BR0lDX1NJWkUpKQor ICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAibWlzc2luZyBv ciBpbnZhbGlkIHNpZ25hdHVyZSBtYWdpYyIpOworCisgIHNpZ25lZF9kYXRhX3NpemUgLT0gU0lH X01BR0lDX1NJWkU7CisgIGlmIChzaWduZWRfZGF0YV9zaXplIDwgU0lHX01FVEFEQVRBX1NJWkUp CisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRv byBzaG9ydCBmb3Igc2lnbmF0dXJlIG1ldGFkYXRhIik7CisKKyAgLyogUmV3aW5kIHBvaW50ZXIg YW5kIGV4dHJhY3Qgc2lnbmF0dXJlIG1ldGFkYXRhLiAqLworICBzaWduZWRfZGF0YSAtPSBTSUdf TUVUQURBVEFfU0laRTsKKyAgZ3J1Yl9tZW1jcHkgKCYoc2lnLT5zaWdfbWV0YWRhdGEpLCBzaWdu ZWRfZGF0YSwgU0lHX01FVEFEQVRBX1NJWkUpOworCisgIGlmIChzaWctPnNpZ19tZXRhZGF0YS5p ZF90eXBlICE9IFBLRVlfSURfUEtDUzcpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X0JBRF9TSUdOQVRVUkUsICJ3cm9uZyBzaWduYXR1cmUgdHlwZSIpOworCisgIGFwcGVuZGVkc2ln X3BrY3M3X3NpemUgPSBncnViX2JlX3RvX2NwdTMyIChzaWctPnNpZ19tZXRhZGF0YS5zaWdfbGVu KTsKKworICBzaWduZWRfZGF0YV9zaXplIC09IFNJR19NRVRBREFUQV9TSVpFOworICBpZiAoYXBw ZW5kZWRzaWdfcGtjczdfc2l6ZSA+IHNpZ25lZF9kYXRhX3NpemUpCisgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRvbyBzaG9ydCBmb3IgUEtDUyM3 IG1lc3NhZ2UiKTsKKworICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJzaWcgbGVuICUi IFBSSXVHUlVCX1NJWkUgIlxuIiwgYXBwZW5kZWRzaWdfcGtjczdfc2l6ZSk7CisKKyAgLyogQXBw ZW5kZWQgc2lnbmF0dXJlIHNpemUuICovCisgIHNpZy0+c2lnbmF0dXJlX2xlbiA9IEFQUEVOREVE X1NJR19TSVpFIChhcHBlbmRlZHNpZ19wa2NzN19zaXplKTsKKyAgLyogUmV3aW5kIHBvaW50ZXIg YW5kIHBhcnNlIGFwcGVuZGVkIHBrY3M3IGRhdGEuICovCisgIHNpZ25lZF9kYXRhIC09IGFwcGVu ZGVkc2lnX3BrY3M3X3NpemU7CisKKyAgcmV0dXJuIGdydWJfcGtjczdfZGF0YV9wYXJzZSAoc2ln bmVkX2RhdGEsIGFwcGVuZGVkc2lnX3BrY3M3X3NpemUsICZzaWctPnBrY3M3KTsKK30KKworLyoK KyAqIEdpdmVuIGEgaGFzaCB2YWx1ZSAnaHZhbCcsIG9mIGhhc2ggc3BlY2lmaWNhdGlvbiAnaGFz aCcsIHByZXBhcmUgdGhlCisgKiBTLWV4cHJlc3Npb25zIChzZXhwKSBhbmQgcGVyZm9ybSB0aGUg c2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK3ZlcmlmeV9z aWduYXR1cmUgKGNvbnN0IGdjcnlfbXBpX3QgKnBrbXBpLCBjb25zdCBnY3J5X21waV90IGhtcGks CisgICAgICAgICAgICAgICAgICBjb25zdCBnY3J5X21kX3NwZWNfdCAqaGFzaCwgY29uc3QgZ3J1 Yl91aW50OF90ICpodmFsKQoreworICBnY3J5X3NleHBfdCBoc2V4cCwgcHVia2V5LCBzaWc7Cisg IGdydWJfc2l6ZV90IGVycm9mOworCisgIGlmIChfZ2NyeV9zZXhwX2J1aWxkICgmaHNleHAsICZl cnJvZiwgIihkYXRhIChmbGFncyAlcykgKGhhc2ggJXMgJWIpKSIsICJwa2NzMSIsCisgICAgICAg ICAgICAgICAgICAgICAgICBoYXNoLT5uYW1lLCBoYXNoLT5tZGxlbiwgaHZhbCkgIT0gR1BHX0VS Ul9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICBpZiAo X2djcnlfc2V4cF9idWlsZCAoJnB1YmtleSwgJmVycm9mLCAiKHB1YmxpYy1rZXkgKGRzYSAobiAl TSkgKGUgJU0pKSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgcGttcGlbMF0sIHBrbXBpWzFd KSAhPSBHUEdfRVJSX05PX0VSUk9SKQorICAgIHJldHVybiBHUlVCX0VSUl9CQURfU0lHTkFUVVJF OworCisgIGlmIChfZ2NyeV9zZXhwX2J1aWxkICgmc2lnLCAmZXJyb2YsICIoc2lnLXZhbCAocnNh IChzICVNKSkpIiwgaG1waSkgIT0gR1BHX0VSUl9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9F UlJfQkFEX1NJR05BVFVSRTsKKworICBfZ2NyeV9zZXhwX2R1bXAgKHNpZyk7CisgIF9nY3J5X3Nl eHBfZHVtcCAoaHNleHApOworICBfZ2NyeV9zZXhwX2R1bXAgKHB1YmtleSk7CisKKyAgaWYgKGdy dWJfY3J5cHRvX3BrX3JzYS0+dmVyaWZ5IChzaWcsIGhzZXhwLCBwdWJrZXkpICE9IEdQR19FUlJf Tk9fRVJST1IpCisgICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkU7CisKKyAgcmV0dXJu IEdSVUJfRVJSX05PTkU7Cit9CisKK3N0YXRpYyBncnViX2Vycl90CitncnViX3ZlcmlmeV9hcHBl bmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZz aXplKQoreworICBncnViX2Vycl90IGVycjsKKyAgZ3J1Yl9zaXplX3QgZGF0YXNpemU7CisgIHZv aWQgKmNvbnRleHQ7CisgIGdydWJfdWludDhfdCAqaGFzaDsKKyAgZ3J1Yl94NTA5X2NlcnRfdCAq cGs7CisgIHNiX2FwcGVuZGVkc2lnX3Qgc2lnOworICBncnViX3BrY3M3X3NpZ25lcl90ICpzaTsK KyAgZ3J1Yl9pbnQzMl90IGk7CisKKyAgaWYgKCFkYi5jZXJ0X2VudHJpZXMpCisgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJubyB0cnVzdGVkIGtleXMgdG8g dmVyaWZ5IGFnYWluc3QiKTsKKworICBlcnIgPSBleHRyYWN0X2FwcGVuZGVkX3NpZ25hdHVyZSAo YnVmLCBidWZzaXplLCAmc2lnKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJl dHVybiBlcnI7CisKKyAgZGF0YXNpemUgPSBidWZzaXplIC0gc2lnLnNpZ25hdHVyZV9sZW47CisK KyAgLyogVmVyaWZ5IHNpZ25hdHVyZSB1c2luZyB0cnVzdGVkIGtleXMgZnJvbSBkYiBsaXN0LiAq LworICBmb3IgKGkgPSAwOyBpIDwgc2lnLnBrY3M3LnNpZ25lcl9jb3VudDsgaSsrKQorICAgIHsK KyAgICAgIHNpID0gJnNpZy5wa2NzNy5zaWduZXJzW2ldOworICAgICAgY29udGV4dCA9IGdydWJf emFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOworICAgICAgaWYgKGNvbnRleHQgPT0gTlVM TCkKKyAgICAgICAgcmV0dXJuIGdydWJfZXJybm87CisKKyAgICAgIHNpLT5oYXNoLT5pbml0IChj b250ZXh0LCAwKTsKKyAgICAgIHNpLT5oYXNoLT53cml0ZSAoY29udGV4dCwgYnVmLCBkYXRhc2l6 ZSk7CisgICAgICBzaS0+aGFzaC0+ZmluYWwgKGNvbnRleHQpOworICAgICAgaGFzaCA9IHNpLT5o YXNoLT5yZWFkIChjb250ZXh0KTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAiZGF0YSBzaXplICUiIFBSSXVHUlVCX1NJWkUgIiwgc2lnbmVyICVkIGhhc2ggJTAyeCUwMngl MDJ4JTAyeC4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUsIGksIGhhc2hbMF0s IGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOworCisgICAgICBmb3IgKHBrID0gZGIuY2VydHM7 IHBrICE9IE5VTEw7IHBrID0gcGstPm5leHQpCisgICAgICAgIHsKKyAgICAgICAgICBlcnIgPSB2 ZXJpZnlfc2lnbmF0dXJlIChway0+bXBpcywgc2ktPnNpZ19tcGksIHNpLT5oYXNoLCBoYXNoKTsK KyAgICAgICAgICBpZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlmeSBzaWduZXIgJWQg d2l0aCBrZXkgJyVzJyBzdWNjZWVkZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg aSwgcGstPnN1YmplY3QpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlmeSBzaWduZXIgJWQg d2l0aCBrZXkgJyVzJyBmYWlsZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpLCBway0+ c3ViamVjdCk7CisgICAgICAgIH0KKworICAgICAgZ3J1Yl9mcmVlIChjb250ZXh0KTsKKyAgICAg IGlmIChlcnIgPT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgIGdy dWJfcGtjczdfZGF0YV9yZWxlYXNlICgmc2lnLnBrY3M3KTsKKworICBpZiAoZXJyICE9IEdSVUJf RVJSX05PTkUpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKGVyciwgImZhaWxlZCB0byB2ZXJpZnkg c2lnbmF0dXJlIGFnYWluc3QgYSB0cnVzdGVkIGtleSIpOworCisgIHJldHVybiBlcnI7Cit9CisK Ky8qCisgKiBFeHRyYWN0IHRoZSBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgRUxGIE5vdGUg aGVhZGVyLCBwYXJzZSBpdCwgYW5kIGFkZAorICogaXQgdG8gdGhlIGRiIGxpc3QuCisgKi8KK3N0 YXRpYyB2b2lkCitsb2FkX2VsZjJkYiAodm9pZCkKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7CisgIHN0 cnVjdCBncnViX21vZHVsZV9oZWFkZXIgKmhlYWRlcjsKKyAgc3RydWN0IGdydWJfZmlsZSBwc2V1 ZG9fZmlsZTsKKyAgZ3J1Yl91aW50OF90ICpjZXJ0X2RhdGEgPSBOVUxMOworICBncnViX3NpemVf dCBjZXJ0X2RhdGFfc2l6ZSA9IDA7CisKKyAgRk9SX01PRFVMRVMgKGhlYWRlcikKKyAgICB7Cisg ICAgICAvKiBOb3QgYW4gWC41MDkgY2VydGlmaWNhdGUsIHNraXAuICovCisgICAgICBpZiAoaGVh ZGVyLT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQorICAgICAgICBjb250aW51ZTsKKwor ICAgICAgZ3J1Yl9tZW1zZXQgKCZwc2V1ZG9fZmlsZSwgMCwgc2l6ZW9mIChwc2V1ZG9fZmlsZSkp OworICAgICAgcHNldWRvX2ZpbGUuZnMgPSAmcHNldWRvX2ZzOworICAgICAgcHNldWRvX2ZpbGUu c2l6ZSA9IGhlYWRlci0+c2l6ZSAtIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7 CisgICAgICBwc2V1ZG9fZmlsZS5kYXRhID0gKGNoYXIgKikgaGVhZGVyICsgc2l6ZW9mIChzdHJ1 Y3QgZ3J1Yl9tb2R1bGVfaGVhZGVyKTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAiZm91bmQgYW4gWC41MDkgY2VydGlmaWNhdGUsIHNpemU9JSIgUFJJdUdSVUJfVUlOVDY0 X1QgIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7CisKKyAgICAg IGVyciA9IGZpbGVfcmVhZF93aG9sZSAoJnBzZXVkb19maWxlLCAmY2VydF9kYXRhLCAmY2VydF9k YXRhX3NpemUpOworICAgICAgaWYgKGVyciA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQorICAg ICAgICByZXR1cm47CisgICAgICBlbHNlIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAg ICAgY29udGludWU7CisKKyAgICAgIGVyciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBj ZXJ0X2RhdGFfc2l6ZSwgJmRiKTsKKyAgICAgIGdydWJfZnJlZSAoY2VydF9kYXRhKTsKKyAgICAg IGlmIChlcnIgPT0gR1JVQl9FUlJfT1VUX09GX01FTU9SWSkKKyAgICAgICAgcmV0dXJuOworICAg IH0KK30KKworLyogRnJlZSBkYiBsaXN0IG1lbW9yeSAqLworc3RhdGljIHZvaWQKK2ZyZWVfZGJf bGlzdCAodm9pZCkKK3sKKyAgZ3J1Yl94NTA5X2NlcnRfdCAqY2VydDsKKworICB3aGlsZSAoZGIu Y2VydHMgIT0gTlVMTCkKKyAgICB7CisgICAgICBjZXJ0ID0gZGIuY2VydHM7CisgICAgICBkYi5j ZXJ0cyA9IGRiLmNlcnRzLT5uZXh0OworICAgICAgZ3J1Yl94NTA5X2NlcnRfcmVsZWFzZSAoY2Vy dCk7CisgICAgICBncnViX2ZyZWUgKGNlcnQpOworICAgIH0KKworICBncnViX21lbXNldCAoJmRi LCAwLCBzaXplb2YgKHNiX2RhdGFiYXNlX3QpKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgor Z3J1Yl9lbnZfcmVhZF9zZWMgKHN0cnVjdCBncnViX2Vudl92YXIgKnZhciBfX2F0dHJpYnV0ZV9f ICgodW51c2VkKSksCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSkKK3sKKyAgaWYgKGNoZWNrX3NpZ3MgPT0gdHJ1ZSkKKyAgICByZXR1 cm4gInllcyI7CisKKyAgcmV0dXJuICJubyI7Cit9CisKK3N0YXRpYyBjaGFyICoKK2dydWJfZW52 X3dyaXRlX3NlYyAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmlidXRlX18gKCh1bnVz ZWQpKSwgY29uc3QgY2hhciAqdmFsKQoreworICBjaGFyICpyZXQ7CisKKyAgLyoKKyAgICogRG8g bm90IGFsbG93IHRoZSB2YWx1ZSB0byBiZSBjaGFuZ2VkIGlmIHNpZ25hdHVyZSB2ZXJpZmljYXRp b24gaXMgZW5hYmxlZAorICAgKiAoY2hlY2tfc2lncyBpcyBzZXQgdG8gdHJ1ZSkgYW5kIEdSVUIg aXMgbG9ja2VkIGRvd24uCisgICAqLworICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlICYmIGdydWJf aXNfbG9ja2Rvd24gKCkgPT0gR1JVQl9MT0NLRE9XTl9FTkFCTEVEKQorICAgIHsKKyAgICAgIHJl dCA9IGdydWJfc3RyZHVwICgieWVzIik7CisgICAgICBpZiAocmV0ID09IE5VTEwpCisgICAgICAg IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJjb3VsZCBub3QgZHVwbGljYXRl IGEgc3RyaW5nIGVuZm9yY2UiKTsKKworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgaWYg KGdydWJfc3RyY21wICh2YWwsICJ5ZXMiKSA9PSAwKQorICAgIGNoZWNrX3NpZ3MgPSB0cnVlOwor ICBlbHNlIGlmIChncnViX3N0cmNtcCAodmFsLCAibm8iKSA9PSAwKQorICAgIGNoZWNrX3NpZ3Mg PSBmYWxzZTsKKworICByZXQgPSBncnViX3N0cmR1cCAoZ3J1Yl9lbnZfcmVhZF9zZWMgKE5VTEws IE5VTEwpKTsKKyAgaWYgKHJldCA9PSBOVUxMKQorICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX09V VF9PRl9NRU1PUlksICJjb3VsZCBub3QgZHVwbGljYXRlIGEgc3RyaW5nICVzIiwKKyAgICAgICAg ICAgICAgICBncnViX2Vudl9yZWFkX3NlYyAoTlVMTCwgTlVMTCkpOworCisgIHJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBncnViX2Vycl90CithcHBlbmRlZHNpZ19pbml0IChncnViX2ZpbGVfdCBp byBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1Yl9maWxlX3R5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgIHZvaWQgKipjb250ZXh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwg ZW51bSBncnViX3ZlcmlmeV9mbGFncyAqZmxhZ3MpCit7CisgIGlmIChjaGVja19zaWdzID09IGZh bHNlKQorICAgIHsKKyAgICAgICpmbGFncyA9IEdSVUJfVkVSSUZZX0ZMQUdTX1NLSVBfVkVSSUZJ Q0FUSU9OOworICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CisgICAgfQorCisgIHN3aXRjaCAo dHlwZSAmIEdSVUJfRklMRV9UWVBFX01BU0spCisgICAgeworICAgICAgY2FzZSBHUlVCX0ZJTEVf VFlQRV9DRVJUSUZJQ0FURV9UUlVTVDoKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBpcyBh IGNlcnRpZmljYXRlIHRvIGFkZCB0byB0cnVzdGVkIGtleWNoYWluLgorICAgICAgICAgKgorICAg ICAgICAgKiBUaGlzIG5lZWRzIHRvIGJlIHZlcmlmaWVkIG9yIGJsb2NrZWQuIElkZWFsbHkgd2Un ZCB3cml0ZSBhbiB4NTA5CisgICAgICAgICAqIHZlcmlmaWVyLCBidXQgd2UgbGFjayB0aGUgaHVi cmlzIHJlcXVpcmVkIHRvIHRha2UgdGhpcyBvbi4gSW5zdGVhZCwKKyAgICAgICAgICogcmVxdWly ZSB0aGF0IGl0IGhhdmUgYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgorICAgICAgICAgKi8KKyAgICAg IGNhc2UgR1JVQl9GSUxFX1RZUEVfTElOVVhfS0VSTkVMOgorICAgICAgY2FzZSBHUlVCX0ZJTEVf VFlQRV9HUlVCX01PRFVMRToKKyAgICAgICAgLyoKKyAgICAgICAgICogQXBwZW5kZWQgc2lnbmF0 dXJlcyBhcmUgb25seSBkZWZpbmVkIGZvciBFTEYgYmluYXJpZXMuIE91dCBvZiBhbgorICAgICAg ICAgKiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgd2Ugb25seSB2ZXJpZnkgTGludXgga2VybmVscyBh bmQgR1JVQiBtb2R1bGVzCisgICAgICAgICAqIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAqLwor ICAgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19TSU5HTEVfQ0hVTks7CisgICAgICAg IHJldHVybiBHUlVCX0VSUl9OT05FOworCisgICAgICBjYXNlIEdSVUJfRklMRV9UWVBFX0FDUElf VEFCTEU6CisgICAgICBjYXNlIEdSVUJfRklMRV9UWVBFX0RFVklDRV9UUkVFX0lNQUdFOgorICAg ICAgICAvKgorICAgICAgICAgKiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgYXBwZW5kZWQgc2lnbmF0 dXJlIHZlcmlmaWNhdGlvbiB3aXRob3V0CisgICAgICAgICAqIGxvY2tkb3duIC0gbGlrZSB0aGUg UEdQIHZlcmlmaWVyLiBXaGVuIGNvbWJpbmVkIHdpdGggYW4gZW1iZWRkZWQKKyAgICAgICAgICog Y29uZmlnIGZpbGUgaW4gYSBzaWduZWQgR1JVQiBiaW5hcnksIHRoaXMgY291bGQgc3RpbGwgYmUg YSBtZWFuaW5nZnVsCisgICAgICAgICAqIHNlY3VyZS1ib290IGNoYWluIC0gc28gbG9uZyBhcyBp dCBpc24ndCBzdWJ2ZXJ0ZWQgYnkgc29tZXRoaW5nIGxpa2UgYQorICAgICAgICAgKiByb3VnZSBB Q1BJIHRhYmxlIG9yIERUIGltYWdlLiBEZWZlciB0aGVtIGV4cGxpY2l0bHkuCisgICAgICAgICAq LworICAgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19ERUZFUl9BVVRIOworICAgICAg ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgKmZsYWdz ID0gR1JVQl9WRVJJRllfRkxBR1NfU0tJUF9WRVJJRklDQVRJT047CisgICAgICAgIHJldHVybiBH UlVCX0VSUl9OT05FOworICAgIH0KK30KKworc3RhdGljIGdydWJfZXJyX3QKK2FwcGVuZGVkc2ln X3dyaXRlICh2b2lkICpjdHh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgdm9pZCAqYnVmLCBn cnViX3NpemVfdCBzaXplKQoreworICByZXR1cm4gZ3J1Yl92ZXJpZnlfYXBwZW5kZWRfc2lnbmF0 dXJlIChidWYsIHNpemUpOworfQorCitzdHJ1Y3QgZ3J1Yl9maWxlX3ZlcmlmaWVyIGdydWJfYXBw ZW5kZWRzaWdfdmVyaWZpZXIgPSB7CisgIC5uYW1lID0gImFwcGVuZGVkc2lnIiwKKyAgLmluaXQg PSBhcHBlbmRlZHNpZ19pbml0LAorICAud3JpdGUgPSBhcHBlbmRlZHNpZ193cml0ZSwKK307CisK K0dSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQoreworICBncnViX2ludDMyX3QgcmM7CisKKyAg LyoKKyAgICogSWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIGVuZm9yY2UgbW9kZSBhbmQg R1JVQiBpcyBsb2NrZWQgZG93biwgZW5hYmxlCisgICAqIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24u CisgICAqLworICBpZiAoZ3J1Yl9pc19sb2NrZG93biAoKSA9PSBHUlVCX0xPQ0tET1dOX0VOQUJM RUQpCisgICAgY2hlY2tfc2lncyA9IHRydWU7CisKKyAgLyoKKyAgICogVGhpcyBpcyBhcHBlbmRl ZCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGVudmlyb25tZW50IHZhcmlhYmxlLiBJdCBpcworICAg KiBhdXRvbWF0aWNhbGx5IHNldCB0byBlaXRoZXIgIm5vIiBvciAieWVzIiBiYXNlZCBvbiB0aGUg 4oCZaWJtLHNlY3VyZS1ib2904oCZCisgICAqIGRldmljZSB0cmVlIHByb3BlcnR5LgorICAgKgor ICAgKiAibm8iOiBObyBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0 LgorICAgKgorICAgKiAieWVzIjogRW5mb3JjZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLiBXaGVu IEdSVUIgaXMgbG9ja2VkIGRvd24sIHVzZXIgY2Fubm90CisgICAqICAgICAgICBjaGFuZ2UgdGhl IHZhbHVlIGJ5IHNldHRpbmcgdGhlIGNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMgdmFyaWFibGUK KyAgICogICAgICAgIGJhY2sgdG8g4oCYbm/igJkKKyAgICovCisgIGdydWJfcmVnaXN0ZXJfdmFy aWFibGVfaG9vayAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiLCBncnViX2Vudl9yZWFkX3Nl YywgZ3J1Yl9lbnZfd3JpdGVfc2VjKTsKKyAgZ3J1Yl9lbnZfZXhwb3J0ICgiY2hlY2tfYXBwZW5k ZWRfc2lnbmF0dXJlcyIpOworCisgIHJjID0gZ3J1Yl9hc24xX2luaXQgKCk7CisgIGlmIChyYyAh PSBBU04xX1NVQ0NFU1MpCisgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGluaXRpbmcgQVNOLjEgZGF0 YSBzdHJ1Y3R1cmVzOiAlZDogJXNcbiIsIHJjLCBhc24xX3N0cmVycm9yIChyYykpOworCisgIC8q IEV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20gRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0gaW4gdGhl IGRiLiAqLworICBsb2FkX2VsZjJkYiAoKTsKKyAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAidGhlIGRiIGxpc3Qgbm93IGhhcyAldSBzdGF0aWMga2V5c1xuIiwKKyAgICAgICAgICAgICAg ICBkYi5jZXJ0X2VudHJpZXMpOworCisgIGdydWJfdmVyaWZpZXJfcmVnaXN0ZXIgKCZncnViX2Fw cGVuZGVkc2lnX3ZlcmlmaWVyKTsKKyAgZ3J1Yl9kbF9zZXRfcGVyc2lzdGVudCAobW9kKTsKK30K KworR1JVQl9NT0RfRklOSSAoYXBwZW5kZWRzaWcpCit7CisgIC8qCisgICAqIGdydWJfZGxfc2V0 X3BlcnNpc3RlbnQgc2hvdWxkIHByZXZlbnQgdGhpcyBmcm9tIGFjdHVhbGx5IHJ1bm5pbmcsIGJ1 dCBpdAorICAgKiBkb2VzIHN0aWxsIHJ1biB1bmRlciBlbXUuCisgICAqLworCisgIGZyZWVfZGJf bGlzdCAoKTsKKyAgZ3J1Yl9yZWdpc3Rlcl92YXJpYWJsZV9ob29rICgiY2hlY2tfYXBwZW5kZWRf c2lnbmF0dXJlcyIsIE5VTEwsIE5VTEwpOworICBncnViX2Vudl91bnNldCAoImNoZWNrX2FwcGVu ZGVkX3NpZ25hdHVyZXMiKTsKKyAgZ3J1Yl92ZXJpZmllcl91bnJlZ2lzdGVyICgmZ3J1Yl9hcHBl bmRlZHNpZ192ZXJpZmllcik7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZXJyLmggYi9p bmNsdWRlL2dydWIvZXJyLmgKaW5kZXggMjAyZmE4YTdhLi42YWI5MDVjOTMgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZ3J1Yi9lcnIuaAorKysgYi9pbmNsdWRlL2dydWIvZXJyLmgKQEAgLTc1LDcgKzc1 LDggQEAgdHlwZWRlZiBlbnVtCiAgICAgR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKICAgICBHUlVC X0VSUl9CQURfRklSTVdBUkUsCiAgICAgR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwKLSAgICBH UlVCX0VSUl9SRUNVUlNJT05fREVQVEgKKyAgICBHUlVCX0VSUl9SRUNVUlNJT05fREVQVEgsCisg ICAgR1JVQl9FUlJfRVhJU1RTCiAgIH0KIGdydWJfZXJyX3Q7CiAKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZ3J1Yi9maWxlLmggYi9pbmNsdWRlL2dydWIvZmlsZS5oCmluZGV4IGE1YmYzYTc5Mi4uZDY3 OGRlMDYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvZmlsZS5oCisrKyBiL2luY2x1ZGUvZ3J1 Yi9maWxlLmgKQEAgLTgwLDYgKzgwLDggQEAgZW51bSBncnViX2ZpbGVfdHlwZQogICAgIEdSVUJf RklMRV9UWVBFX1BVQkxJQ19LRVksCiAgICAgLyogRmlsZSBob2xkaW5nIHB1YmxpYyBrZXkgdG8g YWRkIHRvIHRydXNlZCBrZXlzLiAgKi8KICAgICBHUlVCX0ZJTEVfVFlQRV9QVUJMSUNfS0VZX1RS VVNULAorICAgIC8qIEZpbGUgaG9sZGluZyB4NTA5IGNlcnRpZmljaWF0ZSB0byBhZGQgdG8gdHJ1 c3RlZCBrZXlzLiAgKi8KKyAgICBHUlVCX0ZJTEVfVFlQRV9DRVJUSUZJQ0FURV9UUlVTVCwKICAg ICAvKiBGaWxlIG9mIHdoaWNoIHdlIGludGVuZCB0byBwcmludCBhIGJsb2NrbGlzdCB0byB0aGUg dXNlci4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVfUFJJTlRfQkxPQ0tMSVNULAogICAgIC8qIEZp bGUgd2UgaW50ZW5kIHRvIHVzZSBmb3IgdGVzdCBsb2FkaW5nIG9yIHRlc3Rpbmcgc3BlZWQuICAq LwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxA Z251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVs Cg==