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 3A3ABCA0EE6 for ; Tue, 19 Aug 2025 13:15:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uoMBF-00079J-Bf; Tue, 19 Aug 2025 09:15: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 1uoMAx-0006kk-2Q for grub-devel@gnu.org; Tue, 19 Aug 2025 09:14:56 -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 1uoMAs-0007gH-I7 for grub-devel@gnu.org; Tue, 19 Aug 2025 09:14:53 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57JBIZMR009109; Tue, 19 Aug 2025 13:14:47 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=YSx1B8EwftRuz6vvW 1PmqLbst7JJFSJ/Sjc8z3th89g=; b=j5hCkead9Zk3fTir5MddYS/QvtWHsc/8Y 1pIb1axKNmoBS2J6kT5L7vT+w6oRQvo00RhLLmdxTAR6Hm02HakvcqCupR8GlWzW 1FC0ySB/LfnTSe8uQyvJP0tP+LCXN+QvtncF1QS6290HU+piX9yAE6YsdjwtSen7 D4zdretR3oREQQ8x+0fwQGf6IJ9l3+dEmD01XrHYoz2THKBcXktvUgq41TQeVyyy 3zy4VW/Jvqs4x7F+G0avrvo5gZvMSvT1FMMe4aSRdVJmXz0e/ia2f3hlbiqi3+dN TBSldVbTDR2NyA5k3Aw0rWy31V36zNBs0QcqN4sZAWOxQ/ejD99qw== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 48k60g3w7y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Aug 2025 13:14:46 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 57JD6pWg001490; Tue, 19 Aug 2025 13:14:45 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 48k4q0tfkw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Aug 2025 13:14:45 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57JDEfom60162432 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 19 Aug 2025 13:14:41 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 016942004B; Tue, 19 Aug 2025 13:14:41 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 962D220040; Tue, 19 Aug 2025 13:14:38 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.211.37]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 19 Aug 2025 13:14:38 +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 Subject: [PATCH v7 12/20] appended signatures: Create db and dbx lists Date: Tue, 19 Aug 2025 18:43:15 +0530 Message-Id: <20250819131323.57631-13-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250819131323.57631-1-sudhakar@linux.ibm.com> References: <20250819131323.57631-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Ma7WDQnNlBeXIFh3e3k0h5ZilfmASshy X-Authority-Analysis: v=2.4 cv=coObk04i c=1 sm=1 tr=0 ts=68a478c6 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=2OwXVqhp2XgA:10 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=kIH_fyVBlyCGi3TGOzAA:9 X-Proofpoint-GUID: Ma7WDQnNlBeXIFh3e3k0h5ZilfmASshy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE3MDAxNiBTYWx0ZWRfXxmHUN2Jcym6w yUBeFEBhQQbXFiix33BYhRoTGMwjkz4axqbwcbIJd6aGEd9zBkno52DY5zD8DZpxtcbQQCQJml/ CPUH5FElTnQWt9AIokzHUSHNJwVRREO2ZYcgC9dK/kvmdJls6Dg8z7Icy5nIQ5MjL4KxcFLq1o4 bk+Dj3QUR8uwtasZWvXRQWdh5/jD2v2DgaKcLZz9JENao/ycUqrSKCk54f8CbliBFGuf9AUuSbh CRqNn9TinCoDCnc8lMCghmWw2GCCXDmpVoLjdkhuGyZRYfZZow3pBJcdVXrAzvl/Xej/ZpMJpWU 734e7pK6PaKSDHuV7V6YT02ROulJMNaJUCX1YSvjbHuhW0lnTyKEmqFWoRYddGd5nh/FYuO7WET iwGeLPtm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-19_02,2025-08-14_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 bulkscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 adultscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508170016 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_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_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 SWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LCB0aGUgdHJ1c3RlZApjZXJ0aWZpY2F0ZXMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgR1JV QiBFTEYgTm90ZSBhbmQgYWRkZWQgdG8gZGIgbGlzdC4KVGhpcyBpcyBpbnRyb2R1Y2VkIGJ5IGEg c3Vic2VxdWVudCBwYXRjaC4KCklmIHNlY3VyZSBib290IGlzIGVuYWJsZWQgd2l0aCBkeW5hbWlj IGtleSBtYW5hZ2VtZW50IG1vZGUsIHRoZSB0cnVzdGVkCmNlcnRpZmljYXRlcyBhbmQgY2VydGlm aWNhdGUvYmluYXJ5IGhhc2ggd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgUEtTCmFuZCBhZGRl ZCB0byBkYiBsaXN0LiBUaGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMsIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoCmFyZSByZWFkIGZyb20gdGhlIFBLUyBhbmQgYWRkZWQgdG8gZGJ4IGxpc3QuIEJv dGggZGJ4IGFuZCBkYiBsaXN0cyBhcmUgaW50cm9kdWNlZCBieQphIHN1YnNlcXVlbnQgcGF0Y2gu CgpOb3RlOi0KCklmIHRoZSBjZXJ0aWZpY2F0ZSBvciB0aGUgY2VydGlmaWNhdGUgaGFzaCBleGlz dHMgaW4gdGhlIGRieCBsaXN0LCB0aGVuCmRvIG5vdCBhZGQgdGhhdCBjZXJ0aWZpY2F0ZS9jZXJ0 aWZpY2F0ZSBoYXNoIHRvIHRoZSBkYiBsaXN0LgoKU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3Vw cHVzYW15IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdl ciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2 bmlzaEBsaW51eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9h cHBlbmRlZHNpZy5jIHwgNDUyICsrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZ3J1Yi9jcnlw dG8uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvZ3J1Yi9lZmkvcGtz LmggICAgICAgICAgICAgICAgICAgICAgIHwgMTEyICsrKysrCiBpbmNsdWRlL2dydWIvdHlwZXMu aCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiA0IGZpbGVzIGNoYW5nZWQsIDU2MyBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv Z3J1Yi9lZmkvcGtzLmgKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRz aWcvYXBwZW5kZWRzaWcuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRl ZHNpZy5jCmluZGV4IGM5NTJiMDRhMi4uMDRiM2NjYzkzIDEwMDY0NAotLS0gYS9ncnViLWNvcmUv Y29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYworKysgYi9ncnViLWNvcmUvY29tbWFu ZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwpAQCAtMzMsNyArMzMsOCBAQAogI2luY2x1ZGUg PGxpYnRhc24xLmg+CiAjaW5jbHVkZSA8Z3J1Yi9lbnYuaD4KICNpbmNsdWRlIDxncnViL2xvY2tk b3duLmg+Ci0KKyNpbmNsdWRlIDxncnViL2VmaS9wa3MuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2Vy cGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaD4KICNpbmNsdWRlICJhcHBlbmRlZHNpZy5o IgogCiBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CkBAIC02NywxNSArNjgsMjMgQEAgc3Ry dWN0IGdydWJfYXBwZW5kZWRfc2lnbmF0dXJlCiAgIHN0cnVjdCBwa2NzN19zaWduZWREYXRhIHBr Y3M3OyAgICAgICAgLyogUGFyc2VkIFBLQ1MjNyBkYXRhLiAqLwogfTsKIAotLyogVGhpcyByZXBy ZXNlbnRzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuICovCisvKiBUaGlzIHJlcHJlc2VudHMgYSBk Yi9kYnggbGlzdC4gKi8KIHN0cnVjdCBncnViX2RhdGFiYXNlCiB7CiAgIHN0cnVjdCB4NTA5X2Nl cnRpZmljYXRlICpjZXJ0czsgLyogQ2VydGlmaWNhdGVzLiAqLwogICBncnViX3VpbnQzMl90IGNl cnRfZW50cmllczsgICAgIC8qIE51bWJlciBvZiBjZXJ0aWZpY2F0ZXMuICovCisgIGdydWJfdWlu dDhfdCAqKnNpZ25hdHVyZXM7ICAgICAgLyogQ2VydGlmaWNhdGUvYmluYXJ5IGhhc2hlcy4gKi8K KyAgZ3J1Yl9zaXplX3QgKnNpZ25hdHVyZV9zaXplOyAgICAvKiBTaXplIG9mIGNlcnRpZmljYXRl L2JpbmFyeSBoYXNoZXMuICovCisgIGdydWJfdWludDMyX3Qgc2lnbmF0dXJlX2VudHJpZXM7Lyog TnVtYmVyIG9mIGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoZXMuICovCiB9OwogCiAvKiBUaGUgZGIg bGlzdCAqLwotc3RydWN0IGdydWJfZGF0YWJhc2UgZGIgPSB7LmNlcnRzID0gTlVMTCwgLmNlcnRf ZW50cmllcyA9IDB9Oworc3RydWN0IGdydWJfZGF0YWJhc2UgZGIgPSB7LmNlcnRzID0gTlVMTCwg LmNlcnRfZW50cmllcyA9IDAsIC5zaWduYXR1cmVzID0gTlVMTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5zaWduYXR1cmVfc2l6ZSA9IE5VTEwsIC5zaWduYXR1cmVfZW50cmllcyA9IDB9 OworCisvKiBUaGUgZGJ4IGxpc3QgKi8KK3N0cnVjdCBncnViX2RhdGFiYXNlIGRieCA9IHsuY2Vy dHMgPSBOVUxMLCAuY2VydF9lbnRyaWVzID0gMCwgLnNpZ25hdHVyZXMgPSBOVUxMLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC5zaWduYXR1cmVfc2l6ZSA9IE5VTEwsIC5zaWduYXR1cmVf ZW50cmllcyA9IDB9OwogCiAvKiBBcHBlbmRlZCBzaWduYXR1cmUgc2l6ZS4gKi8KIHN0YXRpYyBn cnViX3NpemVfdCBhcHBlbmRfc2lnX2xlbiA9IDA7CkBAIC0xMzYsNiArMTQ1LDEzNCBAQCBncnVi X2Vudl93cml0ZV9zZWMgKHN0cnVjdCBncnViX2Vudl92YXIgKnZhciBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksIGNvbnN0IGNoYQogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgY29uc3QgY2hh ciAqCitncnViX2Vudl9yZWFkX2tleSAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWwgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBpZiAoZ3J1Yl9wa3NfdXNlX2tleXN0b3JlID09 IHRydWUpCisgICAgcmV0dXJuICJkeW5hbWljIjsKKworICByZXR1cm4gInN0YXRpYyI7Cit9CisK K3N0YXRpYyBjaGFyICoKK2dydWJfZW52X3dyaXRlX2tleSAoc3RydWN0IGdydWJfZW52X3ZhciAq dmFyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgY29uc3QgY2hhciAqdmFsKQoreworICBjaGFy ICpyZXQ7CisKKyAgLyoKKyAgICogRG8gbm90IGFsbG93IHRoZSB2YWx1ZSB0byBiZSBjaGFuZ2Vk IGlmIGNoZWNrX3NpZ3MgaXMgc2V0IHRvIGVuZm9yY2UgYW5kCisgICAqIEdSVUIgaXMgbG9ja2Vk IGRvd24uCisgICAqLworICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlICYmIGdydWJfaXNfbG9ja2Rv d24gKCkgPT0gR1JVQl9MT0NLRE9XTl9FTkFCTEVEKQorICAgIHsKKyAgICAgIHJldCA9IGdydWJf c3RyZHVwIChncnViX2Vudl9yZWFkX2tleSAoTlVMTCwgTlVMTCkpOworICAgICAgaWYgKHJldCA9 PSBOVUxMKQorICAgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0 IG9mIG1lbW9yeSIpOworCisgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICBpZiAoY2hlY2tf c2lncyA9PSBmYWxzZSkKKyAgICB7CisgICAgICBpZiAoKCp2YWwgPT0gJzEnKSB8fCAoKnZhbCA9 PSAnZCcpKQorICAgICAgICBncnViX3Brc191c2Vfa2V5c3RvcmUgPSB0cnVlOworICAgICAgZWxz ZSBpZiAoKCp2YWwgPT0gJzAnKSB8fCAoKnZhbCA9PSAncycpKQorICAgICAgICBncnViX3Brc191 c2Vfa2V5c3RvcmUgPSBmYWxzZTsKKyAgICB9CisKKyAgcmV0ID0gZ3J1Yl9zdHJkdXAgKGdydWJf ZW52X3JlYWRfa2V5IChOVUxMLCBOVUxMKSk7CisgIGlmIChyZXQgPT0gTlVMTCkKKyAgICBncnVi X2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOworCisgIHJl dHVybiByZXQ7Cit9CisKKy8qCisgKiBHVUlEIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUg aGFzaGluZyBmdW5jdGlvbiBhbmQKKyAqIGdlbmVyYXRlIHRoZSBoYXNoIHVzaW5nIGRldGVybWlu ZWQgaGFzaGluZyBmdW5jdGlvbi4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2dldF9oYXNoIChj b25zdCBncnViX3BhY2tlZF9ndWlkX3QgKmd1aWQsIGNvbnN0IGdydWJfdWludDhfdCAqZGF0YSwg Y29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplLAorICAgICAgICAgIGdydWJfdWludDhfdCAqaGFz aCwgZ3J1Yl9zaXplX3QgKmhhc2hfc2l6ZSkKK3sKKyAgZ2NyeV9tZF9zcGVjX3QgKmhhc2hfZnVu YyA9IE5VTEw7CisKKyAgaWYgKGd1aWQgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfT1VUX09GX1JBTkdFLCAiR1VJRCBpcyBub3QgYXZhaWxhYmxlIik7CisKKyAgaWYg KGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJRCwgR1JVQl9QQUNL RURfR1VJRF9TSVpFKSA9PSAwIHx8CisgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtT X0NFUlRfWDUwOV9TSEEyNTZfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwKQorICAg IGhhc2hfZnVuYyA9ICZfZ2NyeV9kaWdlc3Rfc3BlY19zaGEyNTY7CisgIGVsc2UgaWYgKGdydWJf bWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEzODRfR1VJRCwgR1JVQl9QQUNLRURfR1VJ RF9TSVpFKSA9PSAwIHx8CisgICAgICAgICAgIGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1Nf Q0VSVF9YNTA5X1NIQTM4NF9HVUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDApCisgICAg aGFzaF9mdW5jID0gJl9nY3J5X2RpZ2VzdF9zcGVjX3NoYTM4NDsKKyAgZWxzZSBpZiAoZ3J1Yl9t ZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTUxMl9HVUlELCBHUlVCX1BBQ0tFRF9HVUlE X1NJWkUpID09IDAgfHwKKyAgICAgICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19D RVJUX1g1MDlfU0hBNTEyX0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCkKKyAgICBo YXNoX2Z1bmMgPSAmX2djcnlfZGlnZXN0X3NwZWNfc2hhNTEyOworICBlbHNlCisgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9SQU5HRSwgInVuc3VwcG9ydGVkIEdVSUQgaGFz aCIpOworCisgIGdydWJfbWVtc2V0IChoYXNoLCAwLCBHUlVCX01BWF9IQVNIX1NJWkUpOworICBn cnViX2NyeXB0b19oYXNoIChoYXNoX2Z1bmMsIGhhc2gsIGRhdGEsIGRhdGFfc2l6ZSk7CisgICpo YXNoX3NpemUgPSAgaGFzaF9mdW5jLT5tZGxlbjsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK K30KKworLyogQWRkIHRoZSBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCBpbnRvIHRoZSBkYi9kYngg bGlzdC4gKi8KK3N0YXRpYyBncnViX2Vycl90CithZGRfaGFzaCAoY29uc3QgZ3J1Yl91aW50OF90 ICoqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplLAorICAgICAgICAgIGdydWJfdWlu dDhfdCAqKipzaWduYXR1cmVfbGlzdCwgZ3J1Yl9zaXplX3QgKipzaWduYXR1cmVfc2l6ZV9saXN0 LAorICAgICAgICAgIGdydWJfdWludDMyX3QgKnNpZ25hdHVyZV9saXN0X2VudHJpZXMpCit7Cisg IGdydWJfdWludDhfdCAqKnNpZ25hdHVyZXM7CisgIGdydWJfc2l6ZV90ICpzaWduYXR1cmVfc2l6 ZTsKKyAgZ3J1Yl91aW50MzJfdCBzaWduYXR1cmVfZW50cmllcyA9ICpzaWduYXR1cmVfbGlzdF9l bnRyaWVzOworCisgIGlmICgqZGF0YSA9PSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKQorICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZS9iaW5h cnktaGFzaCBkYXRhIG9yIHNpemUgaXMgbm90IGF2YWlsYWJsZSIpOworCisgIHNpZ25hdHVyZXMg PSBncnViX3JlYWxsb2MgKCpzaWduYXR1cmVfbGlzdCwgc2l6ZW9mIChncnViX3VpbnQ4X3QgKikg KiAoc2lnbmF0dXJlX2VudHJpZXMgKyAxKSk7CisgIGlmIChzaWduYXR1cmVzID09IE5VTEwpCisg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVt b3J5Iik7CisKKyAgc2lnbmF0dXJlX3NpemUgPSBncnViX3JlYWxsb2MgKCpzaWduYXR1cmVfc2l6 ZV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChncnViX3Np emVfdCkgKiAoc2lnbmF0dXJlX2VudHJpZXMgKyAxKSk7CisgIGlmIChzaWduYXR1cmVfc2l6ZSA9 PSBOVUxMKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgKiBBbGxvY2F0ZWQgbWVtb3J5IHdpbGwg YmUgZnJlZWQgYnkKKyAgICAgICAqIGZyZWVfZGJfbGlzdC9mcmVlX2RieF9saXN0LgorICAgICAg ICovCisgICAgICBzaWduYXR1cmVzW3NpZ25hdHVyZV9lbnRyaWVzICsgMV0gPSBOVUxMOworICAg ICAgKnNpZ25hdHVyZV9saXN0ID0gc2lnbmF0dXJlczsKKyAgICAgICpzaWduYXR1cmVfbGlzdF9l bnRyaWVzID0gc2lnbmF0dXJlX2VudHJpZXMgKyAxOworCisgICAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKyAgICB9CisKKyAg c2lnbmF0dXJlc1tzaWduYXR1cmVfZW50cmllc10gPSAoZ3J1Yl91aW50OF90ICopICpkYXRhOwor ICBzaWduYXR1cmVfc2l6ZVtzaWduYXR1cmVfZW50cmllc10gPSBkYXRhX3NpemU7CisgIHNpZ25h dHVyZV9lbnRyaWVzKys7CisgICpkYXRhID0gTlVMTDsKKworICAqc2lnbmF0dXJlX2xpc3QgPSBz aWduYXR1cmVzOworICAqc2lnbmF0dXJlX3NpemVfbGlzdCA9IHNpZ25hdHVyZV9zaXplOworICAq c2lnbmF0dXJlX2xpc3RfZW50cmllcyA9IHNpZ25hdHVyZV9lbnRyaWVzOworCisgIHJldHVybiBH UlVCX0VSUl9OT05FOworfQorCitzdGF0aWMgYm9vbAoraXNfeDUwOSAoY29uc3QgZ3J1Yl9wYWNr ZWRfZ3VpZF90ICpndWlkKQoreworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19D RVJUX1g1MDlfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwKQorICAgIHJldHVybiB0 cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGJvb2wKIGlzX2NlcnRfbWF0Y2gg KGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpkaXN0cnVzdGVkX2NlcnQsCiAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGJfY2VydCkKQEAgLTE1MCw2 ICsyODcsOTUgQEAgaXNfY2VydF9tYXRjaCAoY29uc3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUg KmRpc3RydXN0ZWRfY2VydCwKICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBDaGVjayB0aGUgY2Vy dGlmaWNhdGUgcHJlc2VuY2UgaW4gdGhlIFBsYXRmb3JtIEtleXN0b3JlIGRieCBsaXN0LiAqLwor c3RhdGljIGdydWJfZXJyX3QKK2lzX2RieF9jZXJ0IChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZp Y2F0ZSAqZGJfY2VydCkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50MzJfdCBpOwor ICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0OworCisgIGZvciAoaSA9 IDA7IGkgPCBncnViX3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAg IGlmIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSA9PSBOVUxMKQorICAgICAgICBjb250 aW51ZTsKKworICAgICAgaWYgKGlzX3g1MDkgKCZncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZ3Vp ZCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGRpc3RydXN0ZWRfY2VydCA9IGdydWJf emFsbG9jIChzaXplb2YgKHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlKSk7CisgICAgICAgICAgaWYg KGRpc3RydXN0ZWRfY2VydCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisKKyAgICAgICAgICBy YyA9IHBhcnNlX3g1MDlfY2VydGlmaWNhdGUgKGdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5kYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9wa3Nfa2V5c3Rv cmUuZGJ4W2ldLmRhdGFfc2l6ZSwgZGlzdHJ1c3RlZF9jZXJ0KTsKKyAgICAgICAgICBpZiAocmMg IT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZ3J1Yl9mcmVl IChkaXN0cnVzdGVkX2NlcnQpOworICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg IH0KKworICAgICAgICAgIGlmIChpc19jZXJ0X21hdGNoIChkaXN0cnVzdGVkX2NlcnQsIGRiX2Nl cnQpID09IHRydWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAo ImFwcGVuZGVkc2lnIiwgImEgY2VydGlmaWNhdGUgQ049JyVzJyBpcyBpZ25vcmVkICIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiYmVjYXVzZSBpdCBpcyBvbiB0aGUgZGJ4IGxpc3RcbiIs IGRiX2NlcnQtPnN1YmplY3QpOworICAgICAgICAgICAgICByZXR1cm4gR1JVQl9FUlJfQUNDRVNT X0RFTklFRDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2Ug KGRpc3RydXN0ZWRfY2VydCk7CisgICAgICAgICAgZ3J1Yl9mcmVlIChkaXN0cnVzdGVkX2NlcnQp OworICAgICAgICB9CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCisvKiBB ZGQgdGhlIGNlcnRpZmljYXRlIGludG8gdGhlIGRiL2RieCBsaXN0ICovCitzdGF0aWMgZ3J1Yl9l cnJfdAorYWRkX2NlcnRpZmljYXRlIChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdy dWJfc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgc3RydWN0IGdydWJfZGF0YWJh c2UgKmRhdGFiYXNlLCBjb25zdCBib29sIGlzX2RiKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZp Y2F0ZSAqY2VydDsKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50MzJfdCBjZXJ0X2VudHJp ZXMgPSBkYXRhYmFzZS0+Y2VydF9lbnRyaWVzOworCisgIGlmIChkYXRhID09IE5VTEwgfHwgZGF0 YV9zaXplID09IDApCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9SQU5H RSwgImNlcnRpZmljYXRlIGRhdGEgb3Igc2l6ZSBpcyBub3QgYXZhaWxhYmxlIik7CisKKyAgY2Vy dCA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlKSk7CisgIGlm IChjZXJ0ID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9N RU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisKKyAgcmMgPSBwYXJzZV94NTA5X2NlcnRpZmljYXRl IChkYXRhLCBkYXRhX3NpemUsIGNlcnQpOworICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAg ICB7CisgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJjYW5ub3QgYWRkIGEgY2Vy dGlmaWNhdGUgQ049JyVzJyB0byAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgY2VydC0+c3Vi amVjdCwgKChpc19kYiA9PSB0cnVlKSA/ICJkYiIgOiAiZGJ4IikpOworICAgICAgZ3J1Yl9mcmVl IChjZXJ0KTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgaWYgKGlzX2RiID09IHRydWUp CisgICAgeworICAgICAgcmMgPSBpc19kYnhfY2VydCAoY2VydCk7CisgICAgICBpZiAocmMgIT0g R1JVQl9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2Ug KGNlcnQpOworICAgICAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgICAgICAgcmV0dXJuIHJj OworICAgICAgICB9CisgICAgfQorCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImFk ZCBhIGNlcnRpZmljYXRlIENOPSclcycgdG8gJXMiLCBjZXJ0LT5zdWJqZWN0LAorICAgICAgICAg ICAgICAgICgoaXNfZGIgPT0gdHJ1ZSkgPyAiZGIiIDogImRieCIpKTsKKworICBjZXJ0X2VudHJp ZXMrKzsKKyAgY2VydC0+bmV4dCA9IGRhdGFiYXNlLT5jZXJ0czsKKyAgZGF0YWJhc2UtPmNlcnRz ID0gY2VydDsKKyAgZGF0YWJhc2UtPmNlcnRfZW50cmllcyA9IGNlcnRfZW50cmllczsKKworICBy ZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBncnViX2Vycl90CiBmaWxlX3JlYWRfd2hvbGUgKGdydWJf ZmlsZV90IGZpbGUsIGdydWJfdWludDhfdCAqKmJ1ZiwgZ3J1Yl9zaXplX3QgKmxlbikKIHsKQEAg LTY0OCwxMSArODc0LDE2OSBAQCBzdGF0aWMgc3RydWN0IGdydWJfZnMgcHNldWRvX2ZzID0gewog CiBzdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYnhf Y2VydCwgY21kX2RiX2NlcnQ7CiAKKy8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBoYXNoIHByZXNl bmNlIGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCitzdGF0aWMgYm9vbAoraXNfZGJ4X2NlcnRfaGFz aCAoY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUp Cit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfdWludDMyX3QgaTsKKyAgZ3J1Yl9zaXplX3Qg Y2VydF9oYXNoX3NpemUgPSAwOworICBncnViX3VpbnQ4X3QgY2VydF9oYXNoW0dSVUJfTUFYX0hB U0hfU0laRV0gPSB7IDAgfTsKKworICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9wa3Nfa2V5c3RvcmUu ZGJ4X2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4 W2ldLmRhdGEgPT0gTlVMTCB8fAorICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5k YXRhX3NpemUgPT0gMCkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIHJjID0gZ2V0X2hhc2gg KCZncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZ3VpZCwgZGF0YSwgZGF0YV9zaXplLAorICAgICAg ICAgICAgICAgICAgICAgY2VydF9oYXNoLCAmY2VydF9oYXNoX3NpemUpOworICAgICAgaWYgKHJj ICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoY2VydF9o YXNoX3NpemUgPT0gZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSAmJgorICAgICAg ICAgIGdydWJfbWVtY21wIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSwgY2VydF9oYXNo LCBjZXJ0X2hhc2hfc2l6ZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZHByaW50 ZiAoImFwcGVuZGVkc2lnIiwgImEgY2VydGlmaWNhdGUgKCUwMnglMDJ4JTAyeCUwMngpIGlzIGln bm9yZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgdGhpcyBjZXJ0aWZpY2F0 ZSBoYXNoIGlzIG9uIHRoZSBkYnggbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNl cnRfaGFzaFswXSwgY2VydF9oYXNoWzFdLCBjZXJ0X2hhc2hbMl0sIGNlcnRfaGFzaFszXSk7Cisg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIGZhbHNl OworfQorCisvKiBDaGVjayB0aGUgYmluYXJ5IGhhc2ggcHJlc2VuY2UgaW4gdGhlIFBLUyBkYngg bGlzdC4gKi8KK3N0YXRpYyBib29sCitpc19kYnhfYmluYXJ5X2hhc2ggKGNvbnN0IGdydWJfdWlu dDhfdCAqYmluYXJ5X2hhc2gsIGNvbnN0IGdydWJfc2l6ZV90IGJpbmFyeV9oYXNoX3NpemUpCit7 CisgIGdydWJfdWludDMyX3QgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9wa3Nfa2V5c3Rv cmUuZGJ4X2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUu ZGJ4W2ldLmRhdGEgPT0gTlVMTCB8fAorICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRieFtp XS5kYXRhX3NpemUgPT0gMCkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChiaW5hcnlf aGFzaF9zaXplID09IGdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5kYXRhX3NpemUgJiYKKyAgICAg ICAgICBncnViX21lbWNtcCAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEsIGJpbmFyeV9o YXNoLCBiaW5hcnlfaGFzaF9zaXplKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9k cHJpbnRmICgiYXBwZW5kZWRzaWciLCAiYSBiaW5hcnkgaGFzaCAoJTAyeCUwMnglMDJ4JTAyeCkg aXMgaWdub3JlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgYmVjYXVzZSBpdCBpcyBvbiB0 aGUgZGJ4IGxpc3RcbiIsIGJpbmFyeV9oYXNoWzBdLCBiaW5hcnlfaGFzaFsxXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGJpbmFyeV9oYXNoWzJdLCBiaW5hcnlfaGFzaFszXSk7CisgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQor CisvKiBBZGQgdGhlIGJpbmFyeSBoYXNoIHRvIHRoZSBkYiBsaXN0IGlmIGl0IGRvZXMgbm90IGV4 aXN0IGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorYWRkX2RiX2Jp bmFyeV9oYXNoIChjb25zdCBncnViX3VpbnQ4X3QgKipkYXRhLCBjb25zdCBncnViX3NpemVfdCBk YXRhX3NpemUpCit7CisgIGlmICgqZGF0YSA9PSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKQorICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJiaW5hcnkgaGFzaCBk YXRhIG9yIHNpemUgaXMgbm90IGF2YWlsYWJsZSIpOworCisgIGlmIChpc19kYnhfYmluYXJ5X2hh c2ggKCpkYXRhLCBkYXRhX3NpemUpID09IGZhbHNlKQorICAgIHJldHVybiBhZGRfaGFzaCAoZGF0 YSwgZGF0YV9zaXplLCAmZGIuc2lnbmF0dXJlcywgJmRiLnNpZ25hdHVyZV9zaXplLAorICAgICAg ICAgICAgICAgICAgICAgJmRiLnNpZ25hdHVyZV9lbnRyaWVzKTsKKworICByZXR1cm4gR1JVQl9F UlJfQkFEX1NJR05BVFVSRTsKK30KKworc3RhdGljIGJvb2wKK2lzX2hhc2ggKGNvbnN0IGdydWJf cGFja2VkX2d1aWRfdCAqZ3VpZCkKK3sKKyAgLyogR1VJRCB0eXBlIG9mIHRoZSBiaW5hcnkgaGFz aC4gKi8KKyAgaWYgKGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJ RCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwIHx8CisgICAgICBncnViX21lbWNtcCAoZ3Vp ZCwgJkdSVUJfUEtTX0NFUlRfU0hBMzg0X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0g MCB8fAorICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTUxMl9HVUlE LCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDApCisgICAgcmV0dXJuIHRydWU7CisKKyAgLyog R1VJRCB0eXBlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBoYXNoLiAqLworICBpZiAoZ3J1Yl9tZW1jbXAg KGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMjU2X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURf U0laRSkgPT0gMCB8fAorICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1 MDlfU0hBMzg0X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1 Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBNTEyX0dVSUQsIEdSVUJfUEFD S0VEX0dVSURfU0laRSkgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7 Cit9CisKKy8qIEFkZCB0aGUgWC41MDkgY2VydGlmaWNhdGVzL2JpbmFyeSBoYXNoIHRvIHRoZSBk YiBsaXN0IGZyb20gUEtTLiAqLworc3RhdGljIGdydWJfZXJyX3QKK2NyZWF0ZV9kYl9saXN0ICh2 b2lkKQoreworICBncnViX2Vycl90IHJjOworICBncnViX3VpbnQzMl90IGk7CisKKyAgZm9yIChp ID0gMDsgaSA8IGdydWJfcGtzX2tleXN0b3JlLmRiX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAg ICBpZiAoaXNfaGFzaCAoJmdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmd1aWQpID09IHRydWUpCisg ICAgICAgIHsKKyAgICAgICAgICByYyA9IGFkZF9kYl9iaW5hcnlfaGFzaCAoKGNvbnN0IGdydWJf dWludDhfdCAqKikgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YV9zaXplKTsK KyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJfT1VUX09GX01FTU9SWSkKKyAgICAgICAgICAg IHJldHVybiByYzsKKyAgICAgICAgfQorICAgICAgZWxzZSBpZiAoaXNfeDUwOSAoJmdydWJfcGtz X2tleXN0b3JlLmRiW2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAo aXNfZGJ4X2NlcnRfaGFzaCAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YV9zaXpl KSA9PSB0cnVlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICByYyA9IGFkZF9j ZXJ0aWZpY2F0ZSAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YV9zaXplLCAmZGIs IHRydWUpOworICAgICAgICAgIGlmIChyYyA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQorICAg ICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIHNpZ25hdHVyZSBkYXRhIHR5cGUg YW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAic2tpcHBlZCAoJXUpXG4iLCBpICsgMSk7Cisg ICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCisvKiBBZGQgdGhlIGNlcnRpZmlj YXRlcyBhbmQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggdG8gdGhlIGRieCBsaXN0IGZyb20gUEtT LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2NyZWF0ZV9kYnhfbGlzdCAodm9pZCkKK3sKKyAgZ3J1 Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50MzJfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBncnVi X3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChpc194NTA5 ICgmZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAg ICAgICAgICByYyA9IGFkZF9jZXJ0aWZpY2F0ZSAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRh dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRi eFtpXS5kYXRhX3NpemUsICZkYngsIGZhbHNlKTsKKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9F UlJfT1VUX09GX01FTU9SWSkKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAg ICAgZWxzZSBpZiAoaXNfaGFzaCAoJmdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5ndWlkKSA9PSB0 cnVlKQorICAgICAgICB7CisgICAgICAgICAgcmMgPSBhZGRfaGFzaCAoKGNvbnN0IGdydWJfdWlu dDhfdCAqKikgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSwgJmRieC5zaWduYXR1 cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYnguc2lnbmF0dXJlX3NpemUsICZkYngu c2lnbmF0dXJlX2VudHJpZXMpOworICAgICAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQor ICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGdy dWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIHNpZ25hdHVyZSBkYXRhIHR5 cGUgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAic2tpcHBlZCAoJXUpXG4iLCBpICsgMSk7 CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCiAvKiBGcmVlIGRiIGxpc3Qg bWVtb3J5ICovCiBzdGF0aWMgdm9pZAogZnJlZV9kYl9saXN0ICh2b2lkKQogewogICBzdHJ1Y3Qg eDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1Yl91aW50MzJfdCBpOwogCiAgIHdoaWxlIChk Yi5jZXJ0cyAhPSBOVUxMKQogICAgIHsKQEAgLTY2Miw5ICsxMDQ2LDM3IEBAIGZyZWVfZGJfbGlz dCAodm9pZCkKICAgICAgIGdydWJfZnJlZSAoY2VydCk7CiAgICAgfQogCisgIGZvciAoaSA9IDA7 IGkgPCBkYi5zaWduYXR1cmVfZW50cmllczsgaSsrKQorICAgIGdydWJfZnJlZSAoZGIuc2lnbmF0 dXJlc1tpXSk7CisKKyAgZ3J1Yl9mcmVlIChkYi5zaWduYXR1cmVzKTsKKyAgZ3J1Yl9mcmVlIChk Yi5zaWduYXR1cmVfc2l6ZSk7CiAgIGdydWJfbWVtc2V0ICgmZGIsIDAsIHNpemVvZiAoc3RydWN0 IGdydWJfZGF0YWJhc2UpKTsKIH0KIAorLyogRnJlZSBkYnggbGlzdCBtZW1vcnkgKi8KK3N0YXRp YyB2b2lkCitmcmVlX2RieF9saXN0ICh2b2lkKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0 ZSAqY2VydDsKKyAgZ3J1Yl91aW50MzJfdCBpOworCisgIHdoaWxlIChkYnguY2VydHMgIT0gTlVM TCkKKyAgICB7CisgICAgICBjZXJ0ID0gZGJ4LmNlcnRzOworICAgICAgZGJ4LmNlcnRzID0gZGJ4 LmNlcnRzLT5uZXh0OworICAgICAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBn cnViX2ZyZWUgKGNlcnQpOworICAgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgZGJ4LnNpZ25hdHVy ZV9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9mcmVlIChkYnguc2lnbmF0dXJlc1tpXSk7CisKKyAg Z3J1Yl9mcmVlIChkYnguc2lnbmF0dXJlcyk7CisgIGdydWJfZnJlZSAoZGJ4LnNpZ25hdHVyZV9z aXplKTsKKyAgZ3J1Yl9tZW1zZXQgKCZkYngsIDAsIHNpemVvZiAoc3RydWN0IGdydWJfZGF0YWJh c2UpKTsKK30KKwogLyoKICAqIEV4dHJhY3QgdGhlIFguNTA5IGNlcnRpZmljYXRlcyBmcm9tIHRo ZSBFTEYgTm90ZSBoZWFkZXIsCiAgKiBwYXJzZSBpdCwgYW5kIGFkZCBpdCB0byB0aGUgZGIgbGlz dC4KQEAgLTczNyw2ICsxMTQ5LDcgQEAgdW5yZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1cmVzX2Nt ZCAodm9pZCkKIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQogewogICBncnViX2ludDMyX3Qg cmM7CisgIGdydWJfZXJyX3QgZXJyOwogCiAgIC8qCiAgICAqIElmIHNlY3VyZSBib290IGlzIGVu YWJsZWQgd2l0aCBlbmZvcmNlZCBtb2RlIGFuZCBHUlVCIGlzIGxvY2tlZCBkb3duLApAQCAtNzQ4 LDIwICsxMTYxLDQ0IEBAIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQogICBncnViX3JlZ2lz dGVyX3ZhcmlhYmxlX2hvb2sgKCJjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzIiwgZ3J1Yl9lbnZf cmVhZF9zZWMsIGdydWJfZW52X3dyaXRlX3NlYyk7CiAgIGdydWJfZW52X2V4cG9ydCAoImNoZWNr X2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKIAorICAvKiBLZXkgbWFuYWdlbWVudCB2YXJpYWJsZS4g Ki8KKyAgZ3J1Yl9yZWdpc3Rlcl92YXJpYWJsZV9ob29rICgiYXBwZW5kZWRzaWdfa2V5X21nbXQi LCBncnViX2Vudl9yZWFkX2tleSwgZ3J1Yl9lbnZfd3JpdGVfa2V5KTsKKyAgZ3J1Yl9lbnZfZXhw b3J0ICgiYXBwZW5kZWRzaWdfa2V5X21nbXQiKTsKKwogICByYyA9IGFzbjFfaW5pdCAoKTsKICAg aWYgKHJjICE9IEFTTjFfU1VDQ0VTUykKICAgICBncnViX2ZhdGFsICgiZXJyb3IgaW5pdGluZyBB U04uMSBkYXRhIHN0cnVjdHVyZXM6ICVkOiAlc1xuIiwgcmMsIGFzbjFfc3RyZXJyb3IgKHJjKSk7 CiAKICAgLyoKLSAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLAotICAg KiBleHRyYWN0IHRydXN0ZWQga2V5cyBmcm9tIEVMRiBOb3RlIGFuZCBzdG9yZSB0aGVtIGluIHRo ZSBkYi4KKyAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkIHdpdGggc3Rh dGljIGtleSBtYW5hZ2VtZW50IG1vZGUsCisgICAqIGV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20g RUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0gaW4gdGhlIGRiIGxpc3QuCiAgICAqLwotICBpZiAoY2hl Y2tfc2lncyA9PSB0cnVlKQorICBpZiAoZ3J1Yl9wa3NfdXNlX2tleXN0b3JlID09IGZhbHNlICYm IGNoZWNrX3NpZ3MgPT0gdHJ1ZSkKICAgICB7CiAgICAgICBidWlsZF9zdGF0aWNfZGJfbGlzdCAo KTsKICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0IG5vdyBo YXMgJXUgc3RhdGljIGtleXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGRiLmNlcnRfZW50cmll cyk7CiAgICAgfQorICAvKgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJs ZWQgd2l0aCBkeW5hbWljIGtleSBtYW5hZ2VtZW50IG1vZGUsCisgICAqIGV4dHJhY3QgdHJ1c3Rl ZCBhbmQgZGlzdHJ1c3RlZCBrZXlzIGZyb20gUEtTIGFuZCBzdG9yZSB0aGVtIGluIHRoZSBkYiBh bmQgZGJ4IGxpc3QuCisgICAqLworICBlbHNlIGlmIChncnViX3Brc191c2Vfa2V5c3RvcmUgPT0g dHJ1ZSAmJiBjaGVja19zaWdzID09IHRydWUpCisgICAgeworICAgICAgZXJyID0gY3JlYXRlX2Ri X2xpc3QgKCk7CisgICAgICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgIndhcm5pbmc6IGRiIGxpc3QgbWlnaHQgbm90IGJlIGZ1 bGx5IHBvcHVsYXRlZFxuIik7CisKKyAgICAgIGVyciA9IGNyZWF0ZV9kYnhfbGlzdCAoKTsKKyAg ICAgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBw ZW5kZWRzaWciLCAid2FybmluZzogZGJ4IGxpc3QgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVsYXRl ZFxuIik7CisKKyAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0 IG5vdyBoYXMgJXUga2V5c1xuIgorICAgICAgICAgICAgICAgICAgICAidGhlIGRieCBsaXN0IG5v dyBoYXMgJXUga2V5c1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZGIuc2lnbmF0dXJlX2VudHJp ZXMgKyBkYi5jZXJ0X2VudHJpZXMsCisgICAgICAgICAgICAgICAgICAgIGRieC5zaWduYXR1cmVf ZW50cmllcyArIGRieC5jZXJ0X2VudHJpZXMpOworICAgICAgZ3J1Yl9wa3NfZnJlZV9rZXlzdG9y ZSAoKTsKKyAgICB9CiAKICAgcmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7CiAg IGdydWJfdmVyaWZpZXJfcmVnaXN0ZXIgKCZncnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyKTsKQEAg LTc3Niw4ICsxMjEzLDExIEBAIEdSVUJfTU9EX0ZJTkkgKGFwcGVuZGVkc2lnKQogICAgKi8KIAog ICBmcmVlX2RiX2xpc3QgKCk7CisgIGZyZWVfZGJ4X2xpc3QgKCk7CiAgIGdydWJfcmVnaXN0ZXJf dmFyaWFibGVfaG9vayAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiLCBOVUxMLCBOVUxMKTsK ICAgZ3J1Yl9lbnZfdW5zZXQgKCJjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzIik7CisgIGdydWJf cmVnaXN0ZXJfdmFyaWFibGVfaG9vayAoImFwcGVuZGVkc2lnX2tleV9tZ210IiwgTlVMTCwgTlVM TCk7CisgIGdydWJfZW52X3Vuc2V0ICgiYXBwZW5kZWRzaWdfa2V5X21nbXQiKTsKICAgZ3J1Yl92 ZXJpZmllcl91bnJlZ2lzdGVyICgmZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmllcik7CiAgIHVucmVn aXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRl L2dydWIvY3J5cHRvLmggYi9pbmNsdWRlL2dydWIvY3J5cHRvLmgKaW5kZXggYjBkN2FkZDFkLi4w MGQwNzRkZjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9jcnlwdG8uaAorKysgYi9pbmNsdWRl L2dydWIvY3J5cHRvLmgKQEAgLTUxMCw2ICs1MTAsNyBAQCBncnViX2NyeXB0b19obWFjX2J1ZmZl ciAoY29uc3Qgc3RydWN0IGdjcnlfbWRfc3BlYyAqbWQsCiBleHRlcm4gZ2NyeV9tZF9zcGVjX3Qg X2djcnlfZGlnZXN0X3NwZWNfbWQ1OwogZXh0ZXJuIGdjcnlfbWRfc3BlY190IF9nY3J5X2RpZ2Vz dF9zcGVjX3NoYTE7CiBleHRlcm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNfc2hh MjU2OworZXh0ZXJuIGdjcnlfbWRfc3BlY190IF9nY3J5X2RpZ2VzdF9zcGVjX3NoYTM4NDsKIGV4 dGVybiBnY3J5X21kX3NwZWNfdCBfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTI7CiBleHRlcm4gZ2Ny eV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNfY3JjMzI7CiBleHRlcm4gZ2NyeV9jaXBoZXJf c3BlY190IF9nY3J5X2NpcGhlcl9zcGVjX2FlczsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9l ZmkvcGtzLmggYi9pbmNsdWRlL2dydWIvZWZpL3Brcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uZmYzMDZmNTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ncnVi L2VmaS9wa3MuaApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNiAt IDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzCisgKiBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlCisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIDIt Q2xhdXNlIEJTRCBMaWNlbnNlIHdoaWNoCisgKiBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCisgKgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0 YWdpbmcgKGVkazItc3RhZ2luZyByZXBvIG9mIHRpYW5vY29yZSksCisgKiB0aGUgSW1hZ2VBdXRo ZW50aWNhdGlvbi5oIGZpbGUgdW5kZXIgaXQsIGFuZCBoZXJlJ3MgdGhlIGNvcHlyaWdodCBhbmQg bGljZW5zZS4KKyAqCisgKiBNZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24u aAorICoKKyAqIENvcHlyaWdodCAyMDIyLCAyMDIzLCAyMDI0LCAyMDI1IElCTSBDb3JwLgorICov CisKKyNpZm5kZWYgUEtTX0hFQURFUgorI2RlZmluZSBQS1NfSEVBREVSICAgMQorCisjaW5jbHVk ZSA8Z3J1Yi90eXBlcy5oPgorCisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1g1 MDlfR1VJRC4KKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Js b2IvbWFzdGVyL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKi8K KyNkZWZpbmUgR1JVQl9QS1NfQ0VSVF9YNTA5X0dVSUQgXAorICAoZ3J1Yl9ndWlkX3QpIFwKKyAg eyAweGExNTljMGE1LCAweGU0OTQsIDB4YTc0YSwgXAorICAgIHsgMHg4NywgMHhiNSwgMHhhYiwg MHgxNSwgMHg1YywgMHgyYiwgMHhmMCwgMHg3MiB9IFwKKyAgfQorCisvKgorICogSXQgaXMgZGVy aXZlZCBmcm9tIEVGSV9DRVJUX1NIQTI1Nl9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFn ZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1NIQTI1Nl9HVUlE IFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHgyNjE2YzRjMSwgMHg0YzUwLCAweDkyNDAsIFwK KyAgICB7IDB4YWMsIDB4YTksIDB4NDEsIDB4ZjksIDB4MzYsIDB4OTMsIDB4NDMsIDB4MjggfSBc CisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfQ0VSVF9TSEEzODRfR1VJRC4K KyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVy L01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKi8KKyNkZWZpbmUg R1JVQl9QS1NfQ0VSVF9TSEEzODRfR1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4MDc1 MzNlZmYsIDB4ZDA5ZiwgMHhjOTQ4LCBcCisgICAgeyAweDg1LCAweGYxLCAweDhhLCAweGQ1LCAw eDZjLCAweDcwLCAweDFlLCAweDEgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJv bSBFRklfQ0VSVF9TSEE1MTJfR1VJRC4KKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUv ZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVyL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50 aWNhdGlvbi5oCisgKi8KKyNkZWZpbmUgR1JVQl9QS1NfQ0VSVF9TSEE1MTJfR1VJRCBcCisgIChn cnViX2d1aWRfdCkgXAorICB7IDB4YWUwZjNlMDksIDB4YzRhNiwgMHg1MDRmLCBcCisgICAgeyAw eDlmLCAweDFiLCAweGQ0LCAweDFlLCAweDJiLCAweDg5LCAweGMxLCAweDlhIH0gXAorICB9CisK Ky8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfWDUwOV9TSEEyNTZfR1VJRC4KKyAq IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVyL01k ZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKi8KKyNkZWZpbmUgR1JV Ql9QS1NfQ0VSVF9YNTA5X1NIQTI1Nl9HVUlEIFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHg5 MmE0ZDIzYiwgMHhjMDk2LCAweDc5NDAsIFwKKyAgICB7IDB4YjQsIDB4MjAsIDB4ZmMsIDB4Zjks IDB4OGUsIDB4ZjEsIDB4MDMsIDB4ZWQgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQg ZnJvbSBFRklfQ0VSVF9YNTA5X1NIQTM4NF9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFn ZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0 X0dVSUQgICAgIFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHg2ZTg3NzY3MCwgMHhjMjgwLCAw eGU2NGUsIFwKKyAgICB7IDB4YWEsIDB4ZDIsIDB4MjgsIDB4YjMsIDB4NDksIDB4YTYsIDB4ODYs IDB4NWIgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfQ0VSVF9YNTA5 X1NIQTUxMl9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdp bmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgK KyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlfU0hBNTEyX0dVSUQgXAorICAoZ3J1Yl9n dWlkX3QpIFwKKyAgeyAweDYzYmY2ZDQ0LCAweDAyMjUsIDB4ZGE0YywgXAorICAgIHsgMHhiYywg MHhmYSwgMHgyNCwgMHg2NSwgMHhkMiwgMHhiMCwgMHhmZSwgMHg5ZCB9IFwKKyAgfQorCisjZW5k aWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi90eXBlcy5oIGIvaW5jbHVkZS9ncnViL3R5cGVz LmgKaW5kZXggNDUwNzliZjY1Li5iM2JhNzYyZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi90 eXBlcy5oCisrKyBiL2luY2x1ZGUvZ3J1Yi90eXBlcy5oCkBAIC0zNzksNiArMzc5LDggQEAgc3Ry dWN0IGdydWJfZ3VpZAogfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg0KSkpOwogdHlwZWRlZiBz dHJ1Y3QgZ3J1Yl9ndWlkIGdydWJfZ3VpZF90OwogCisjZGVmaW5lIEdSVUJfR1VJRF9TSVpFICAg IChzaXplb2YgKGdydWJfZ3VpZF90KSkKKwogc3RydWN0IGdydWJfcGFja2VkX2d1aWQKIHsKICAg Z3J1Yl91aW50MzJfdCBkYXRhMTsKQEAgLTM4OCw0ICszOTAsNiBAQCBzdHJ1Y3QgZ3J1Yl9wYWNr ZWRfZ3VpZAogfSBHUlVCX1BBQ0tFRDsKIHR5cGVkZWYgc3RydWN0IGdydWJfcGFja2VkX2d1aWQg Z3J1Yl9wYWNrZWRfZ3VpZF90OwogCisjZGVmaW5lIEdSVUJfUEFDS0VEX0dVSURfU0laRSAgICAo c2l6ZW9mIChncnViX3BhY2tlZF9ndWlkX3QpKQorCiAjZW5kaWYgLyogISBHUlVCX1RZUEVTX0hF QURFUiAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWIt ZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnVi LWRldmVsCg==