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 ECA83CCA471 for ; Thu, 9 Oct 2025 06:27:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v6k6u-0001vh-S3; Thu, 09 Oct 2025 02:26:45 -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 1v6k6r-0001vY-LS for grub-devel@gnu.org; Thu, 09 Oct 2025 02:26:41 -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 1v6k6j-0002dK-35 for grub-devel@gnu.org; Thu, 09 Oct 2025 02:26:41 -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 598NZfx7016972; Thu, 9 Oct 2025 06:26:05 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=N+rcrT wCWrtAwA8ikf5PJv/Macb3mNStewq5FX/Ulss=; b=kRGGW9YG3qAFKyxlSIJ58M qGTlApXOUcknK9PbAOwpMLtmwNNcf8sboD2hITmRGHqIbfhMs4CLtxysioRIeCAR o7TGKVzyVBp/f82lAdl4YsuviWRgavdB53Tj+fXp9sPRHNYCryvAXuUi6aVfX4es XQx1L9wknNLq1g8vBjKd5dh51ChDHVECkZIF/GFyyqYEQkGdT5mO4d0Neq3upZct ARRCgEaO0UZHZhmqiNyyaBoRNu0PK4JufI2sfVKYTzHgG1ugHG1ctGHGNmElq+bE JUz1yn5R71BsL74XbGnlbqAYomNYNDbzYfWUVKjxJVkINkgUwL5d+6uoVBnWtn3w == Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49nv84k066-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Oct 2025 06:26:04 +0000 (GMT) Received: from m0353725.ppops.net (m0353725.ppops.net [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.0.8) with ESMTP id 5996MoQf018133; Thu, 9 Oct 2025 06:26:04 GMT 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 49nv84k061-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Oct 2025 06:26:04 +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 59960WLA022808; Thu, 9 Oct 2025 06:26:03 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49nv8vb1eu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 09 Oct 2025 06:26:03 +0000 Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5996Ppxf25297396 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 9 Oct 2025 06:25:52 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 67D155805D; Thu, 9 Oct 2025 06:26:03 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D1EA95805F; Thu, 9 Oct 2025 06:26:02 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Thu, 9 Oct 2025 06:26:02 +0000 (GMT) MIME-Version: 1.0 Date: Thu, 09 Oct 2025 11:56:02 +0530 From: Avnish Chouhan To: logang@deltatee.com Cc: grub-devel@gnu.org, Daniel Kiper , alexander.burmashev@oracle.com, phcoder@gmail.com Subject: Re: [PATCH 1/4] io: Implement zstdio decompression In-Reply-To: References: Message-ID: <0d42d5c6cbdf26b14064300f589d2a75@linux.ibm.com> X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=HKPO14tv c=1 sm=1 tr=0 ts=68e7557c cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=mDV3o1hIAAAA:8 a=gXLdhW2jAAAA:8 a=yPCof4ZbAAAA:8 a=pGLkceISAAAA:8 a=Qly08j278zwImvhLV2gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=Dn9eIPSr_RzuO0KTJioD:22 X-Proofpoint-GUID: VEWJyPF_evzeNSk0rjkFn_DKcp2EXDiL X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDA4MDEyMSBTYWx0ZWRfXwE+oNKz1igVk 1RlvgBofL+ojIK3HHamtUnrsnXmwX2dS6k6sJ8vMqSBvdqUV7b4ucEz7Ud1tPRjSs6PEBnGRtEH eu0d2exeVle12x50gu0RBahgVjDwnRYkz0NZryyo6UqgV9qukNT+CQSU7mXgP1S7epUjMM76icR 4HTIQbCA/65o2iMXaBQpkAYo4mTecbFjYp4DjeUE+8fRdg/SwFkt3j0hsIvIytdHzC6N/FNVPz6 tvOkLpH5dCyHf7D4ak1A+mlj3XdmRN8MgncpyfpW7A2edsr3ZhZLpZdo0M6Zqixx/oEkuQIMuD6 UlF0Bzw15OqQY2l0eaCZqlQNBiYMHSON0rEqbI4FLV9i5bBnhdnYPEDalImj/hRuOPzReobk2dE s14V42VS4xORZwB/0QluUnrR4ytSGg== X-Proofpoint-ORIG-GUID: V5tK4BDSbXkWGTDhQSHnTnBuvevpv2Of 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-09_01,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1011 phishscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510080121 Received-SPF: pass client-ip=148.163.158.5; envelope-from=avnish@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.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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org T24gMjAyNS0wOS0yNCAwMTo0OSwgZ3J1Yi1kZXZlbC1yZXF1ZXN0QGdudS5vcmcgd3JvdGU6Cj4g TWVzc2FnZTogNAo+IERhdGU6IFR1ZSwgMjMgU2VwIDIwMjUgMTQ6MTI6NTcgLTA2MDAKPiBGcm9t OiBMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0YXRlZS5jb20+Cj4gVG86IGdydWItZGV2ZWxA Z251Lm9yZywgRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4sIEFsZXgKPiAJ QnVybWFzaGV2IDxhbGV4YW5kZXIuYnVybWFzaGV2QG9yYWNsZS5jb20+LCBWbGFkaW1pciAncGhj b2RlcicKPiAJU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Cj4gQ2M6IE5hZ3kgRWxlbcOp ciBLw6Fyb2x5ICA8bmFneS5lbGVtZXIua2Fyb2x5QGdtYWlsLmNvbT4sIExvZ2FuCj4gCUd1bnRo b3JwZSA8bG9nYW5nQGRlbHRhdGVlLmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0ggMS80XSBpbzogSW1w bGVtZW50IHpzdGRpbyBkZWNvbXByZXNzaW9uCj4gTWVzc2FnZS1JRDogPDIwMjUwOTIzMjAxMzAw LjMwNzktMi1sb2dhbmdAZGVsdGF0ZWUuY29tPgo+IAo+IEFkZCB6c3RkIGJhc2VkIGlvIGRlY29t cHJlc3Npb24uCj4gCj4gQmFzZWQgbGFyZ2VseSBvbiB0aGUgZXhpc3RpbmcgeHppbywgaW1wbGVt ZW50IHRoZSBzYW1lIGZlYXR1cmVzIHVzaW5nCj4gdGhlIHpzdGQgbGlicmFyeSBhbHJlYWR5IGlu Y2x1ZGVkIGluIHRoZSBwcm9qZWN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IExvZ2FuIEd1bnRob3Jw ZSA8bG9nYW5nQGRlbHRhdGVlLmNvbT4KPiAtLS0KPiAgTWFrZWZpbGUudXRpbC5kZWYgICAgICAg ICAgIHwgICAxICsKPiAgZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmIHwgICA5ICstCj4gIGdy dWItY29yZS9pby96c3RkaW8uYyAgICAgICB8IDIzNyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgaW5jbHVkZS9ncnViL2ZpbGUuaCAgICAgICAgIHwgICAzICstCj4gIDQg ZmlsZXMgY2hhbmdlZCwgMjQ4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUvaW8venN0ZGlvLmMKPiAKPiBkaWZmIC0tZ2l0IGEvTWFr ZWZpbGUudXRpbC5kZWYgYi9NYWtlZmlsZS51dGlsLmRlZgo+IGluZGV4IDAzODI1M2IzN2E0Mi4u NzQ3ODYxNzdmOTA4IDEwMDY0NAo+IC0tLSBhL01ha2VmaWxlLnV0aWwuZGVmCj4gKysrIGIvTWFr ZWZpbGUudXRpbC5kZWYKPiBAQCAtMTYyLDYgKzE2Miw3IEBAIGxpYnJhcnkgPSB7Cj4gICAgY29t bW9uID0gZ3J1Yi1jb3JlL2lvL2d6aW8uYzsKPiAgICBjb21tb24gPSBncnViLWNvcmUvaW8veHpp by5jOwo+ICAgIGNvbW1vbiA9IGdydWItY29yZS9pby9sem9waW8uYzsKPiArICBjb21tb24gPSBn cnViLWNvcmUvaW8venN0ZGlvLmM7Cj4gICAgY29tbW9uID0gZ3J1Yi1jb3JlL2tlcm4vaWE2NC9k bF9oZWxwZXIuYzsKPiAgICBjb21tb24gPSBncnViLWNvcmUva2Vybi9hcm0vZGxfaGVscGVyLmM7 Cj4gICAgY29tbW9uID0gZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGxfaGVscGVyLmM7Cj4gZGlmZiAt LWdpdCBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiBiL2dydWItY29yZS9NYWtlZmlsZS5j b3JlLmRlZgo+IGluZGV4IDBmY2Y2N2Y5ZGY3ZC4uNGM4MDA1NzgyZTMxIDEwMDY0NAo+IC0tLSBh L2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgo+ICsrKyBiL2dydWItY29yZS9NYWtlZmlsZS5j b3JlLmRlZgo+IEBAIC00NzMsNyArNDczLDcgQEAgaW1hZ2UgPSB7Cj4gICAgaTM4Nl9wYyA9IGJv b3QvaTM4Ni9wYy9ib290LlM7Cj4gCj4gICAgY3BwZmxhZ3MgPSAnLURIWUJSSURfQk9PVD0xJzsK PiAtCj4gKwo+ICAgIGkzODZfcGNfbGRmbGFncyA9ICckKFRBUkdFVF9JTUdfTERGTEFHUyknOwo+ ICAgIGkzODZfcGNfbGRmbGFncyA9ICckKFRBUkdFVF9JTUdfQkFTRV9MRE9QVCksMHg3QzAwJzsK PiAKPiBAQCAtMjQ4Niw2ICsyNDg2LDEzIEBAIG1vZHVsZSA9IHsKPiAgICBjcHBmbGFncyA9ICct SSQoc3JjZGlyKS9saWIvcG9zaXhfd3JhcCAtSSQoc3JjZGlyKS9saWIvbWluaWx6bwo+IC1ETUlO SUxaT19IQVZFX0NPTkZJR19IJzsKPiAgfTsKPiAKPiArbW9kdWxlID0gewo+ICsgIG5hbWUgPSB6 c3RkaW87Cj4gKyAgY29tbW9uID0gaW8venN0ZGlvLmM7Cj4gKyAgY3BwZmxhZ3MgPSAnLUkkKHNy Y2RpcikvbGliL3Bvc2l4X3dyYXAgLUkkKHNyY2RpcikvbGliL3pzdGQnOwo+ICsgIGNmbGFncz0n LVduby11bnJlYWNoYWJsZS1jb2RlJzsKPiArfTsKPiArCj4gIG1vZHVsZSA9IHsKPiAgICBuYW1l ID0gdGVzdGxvYWQ7Cj4gICAgY29tbW9uID0gY29tbWFuZHMvdGVzdGxvYWQuYzsKPiBkaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2lvL3pzdGRpby5jIGIvZ3J1Yi1jb3JlL2lvL3pzdGRpby5jCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmI2NDY1NWFhNjNlMwo+IC0t LSAvZGV2L251bGwKPiArKysgYi9ncnViLWNvcmUvaW8venN0ZGlvLmMKPiBAQCAtMCwwICsxLDIz NyBAQAo+ICsvKiB6c3RkaW8uYyAtIGRlY29tcHJlc3Npb24gc3VwcG9ydCBmb3IgenN0ZCAqLwo+ ICsvKgo+ICsgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgo+ICsgKiAgQ29w eXJpZ2h0IChDKSAyMDEwICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KPiArICoKPiAr ICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQo+ICsgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgCj4gYnkKPiArICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiAgR1JVQiBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK PiArICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKPiArICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCj4gKyAqCj4gKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKi8KPiArCj4gKyNp bmNsdWRlIDxncnViL2Vyci5oPgo+ICsjaW5jbHVkZSA8Z3J1Yi9tbS5oPgo+ICsjaW5jbHVkZSA8 Z3J1Yi9taXNjLmg+Cj4gKyNpbmNsdWRlIDxncnViL2ZpbGUuaD4KPiArI2luY2x1ZGUgPGdydWIv ZnMuaD4KPiArI2luY2x1ZGUgPGdydWIvZGwuaD4KPiArCj4gK0dSVUJfTU9EX0xJQ0VOU0UgKCJH UEx2MysiKTsKPiArCj4gKyNpbmNsdWRlICJ6c3RkLmgiCj4gKwo+ICsjZGVmaW5lIFNUUkVBTV9I RUFERVJfU0laRSAxNgo+ICsKPiArc3RydWN0IGdydWJfenN0ZGlvCj4gK3sKPiArICBncnViX2Zp bGVfdCBmaWxlOwo+ICsgIFpTVERfREN0eCAqZGN0eDsKPiArICBncnViX3NpemVfdCBpbnNpemU7 Cj4gKyAgZ3J1Yl9zaXplX3Qgb3V0c2l6ZTsKPiArCj4gKyAgWlNURF9vdXRCdWZmZXIgb3V0cHV0 Owo+ICsgIFpTVERfaW5CdWZmZXIgaW5wdXQ7Cj4gKwo+ICsgIGdydWJfb2ZmX3Qgc2F2ZWRfb2Zm c2V0Owo+ICsgIGdydWJfdWludDhfdCBidWZzW107Cj4gK307Cj4gKwo+ICt0eXBlZGVmIHN0cnVj dCBncnViX3pzdGRpbyAqZ3J1Yl96c3RkaW9fdDsKPiArc3RhdGljIHN0cnVjdCBncnViX2ZzIGdy dWJfenN0ZGlvX2ZzOwo+ICsKPiArc3RhdGljIGludAo+ICt0ZXN0X2hlYWRlciAoZ3J1Yl9maWxl X3QgZmlsZSkKPiArewo+ICsgIGdydWJfenN0ZGlvX3QgenN0ZGlvID0gZmlsZS0+ZGF0YTsKPiAr ICBzaXplX3QgenJldDsKPiArCj4gKyAgenN0ZGlvLT5pbnB1dC5wb3MgPSAwOwo+ICsgIHpzdGRp by0+b3V0cHV0LnBvcyA9IDA7Cj4gKyAgenN0ZGlvLT5vdXRwdXQuc2l6ZSA9IHpzdGRpby0+b3V0 c2l6ZTsKPiArICB6c3RkaW8tPmlucHV0LnNpemUgPSBncnViX2ZpbGVfcmVhZCAoenN0ZGlvLT5m aWxlLCB6c3RkaW8tPmJ1ZnMsCj4gKwkJCQkgICAgICAgU1RSRUFNX0hFQURFUl9TSVpFKTsKCkhp IExvZ2FuLAoKSW5kZW50YXRpb24gc2VlbXMgbGl0dGxlIG9mZiBpbiBsaW5lICJTVFJFQU1fSEVB REVSX1NJWkUpOyIgLiBQbGVhc2UgCnJlY2hlY2shCgo+ICsgIGlmICh6c3RkaW8tPmlucHV0LnNp emUgIT0gU1RSRUFNX0hFQURFUl9TSVpFKQo+ICsgICAgcmV0dXJuIDA7Cj4gKwo+ICsgIHpyZXQg PSBaU1REX2RlY29tcHJlc3NTdHJlYW0oenN0ZGlvLT5kY3R4LCAmenN0ZGlvLT5vdXRwdXQsIAo+ ICZ6c3RkaW8tPmlucHV0KTsKCk1pc3NpbmcgZW1wdHkgc3BhY2UsICJaU1REX2RlY29tcHJlc3NT dHJlYW0gKHpzdGRpby0+ZGN0eC4uLi4iCgo+ICsgIGlmIChaU1REX2lzRXJyb3IoenJldCkpCgpT YW1lIGFzIGFib3ZlLiBNaXNzaW5nIGVtcHR5IHNwYWNlIQoKPiArICAgIHJldHVybiAwOwo+ICsK PiArICByZXR1cm4gMTsKPiArfQo+ICsKPiArc3RhdGljIGdydWJfZmlsZV90Cj4gK2dydWJfenN0 ZGlvX29wZW4gKGdydWJfZmlsZV90IGlvLCBlbnVtIGdydWJfZmlsZV90eXBlIHR5cGUpCj4gK3sK PiArICBncnViX2ZpbGVfdCBmaWxlOwo+ICsgIGdydWJfenN0ZGlvX3QgenN0ZGlvOwo+ICsKPiAr ICBpZiAodHlwZSAmIEdSVUJfRklMRV9UWVBFX05PX0RFQ09NUFJFU1MpCj4gKyAgICByZXR1cm4g aW87Cj4gKwo+ICsgIGZpbGUgPSAoZ3J1Yl9maWxlX3QpIGdydWJfemFsbG9jIChzaXplb2YgKCpm aWxlKSk7CgoiZ3J1Yl96YWxsb2MgKHNpemVvZiAoZ3J1Yl9maWxlX3QpKTsiIHdvdWxkIGJlIGJl dHRlciEKCj4gKyAgaWYgKCFmaWxlKQoKaWYgKGZpbGUgPT0gTlVMTCkKCj4gKyAgICByZXR1cm4g MDsKPiArCj4gKyAgenN0ZGlvID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoKnpzdGRpbykgKyBaU1RE X0RTdHJlYW1JblNpemUoKSArCj4gKwkJCVpTVERfRFN0cmVhbU91dFNpemUoKSk7Cgp6c3RkaW8g PSBncnViX3phbGxvYyAoc2l6ZW9mIChncnViX3pzdGRpb190KSArIFpTVERfRFN0cmVhbUluU2l6 ZSAoKSArIApaU1REX0RTdHJlYW1PdXRTaXplICgpKTsKCj4gKyAgaWYgKCF6c3RkaW8pCgppZiAo enN0ZGlvID09IE5VTEwpCgo+ICsgICAgewo+ICsgICAgICBncnViX2ZyZWUgKGZpbGUpOwo+ICsg ICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgenN0ZGlvLT5maWxlID0gaW87Cj4gKyAg enN0ZGlvLT5pbnNpemUgPSBaU1REX0RTdHJlYW1JblNpemUoKTsKPiArICB6c3RkaW8tPm91dHNp emUgPSBaU1REX0RTdHJlYW1PdXRTaXplKCk7Cgp6c3RkaW8tPmluc2l6ZSA9IFpTVERfRFN0cmVh bUluU2l6ZSAoKTsKenN0ZGlvLT5vdXRzaXplID0gWlNURF9EU3RyZWFtT3V0U2l6ZSAoKTsKClBs ZWFzZSBhZGQgdGhlIGVtcHR5IHNwYWNlIHdoZXJldmVyIG1pc3NpbmchCgo+ICsgIHpzdGRpby0+ aW5wdXQuc3JjID0genN0ZGlvLT5idWZzOwo+ICsgIHpzdGRpby0+b3V0cHV0LmRzdCA9ICZ6c3Rk aW8tPmJ1ZnNbenN0ZGlvLT5pbnNpemVdOwo+ICsKPiArICBmaWxlLT5kZXZpY2UgPSBpby0+ZGV2 aWNlOwo+ICsgIGZpbGUtPmRhdGEgPSB6c3RkaW87Cj4gKyAgZmlsZS0+ZnMgPSAmZ3J1Yl96c3Rk aW9fZnM7Cj4gKyAgZmlsZS0+c2l6ZSA9IEdSVUJfRklMRV9TSVpFX1VOS05PV047Cj4gKyAgZmls ZS0+bm90X2Vhc2lseV9zZWVrYWJsZSA9IDE7Cj4gKwo+ICsgIGlmIChncnViX2ZpbGVfdGVsbCAo enN0ZGlvLT5maWxlKSAhPSAwKQo+ICsgICAgZ3J1Yl9maWxlX3NlZWsgKHpzdGRpby0+ZmlsZSwg MCk7Cj4gKwo+ICsgIHpzdGRpby0+ZGN0eCA9IFpTVERfY3JlYXRlREN0eCgpOwo+ICsgIGlmICgh enN0ZGlvLT5kY3R4KQoKaWYgKHpzdGRpby0+ZGN0eCA9PSBOVUxMKQoKPiArICAgIHsKPiArICAg ICAgZ3J1Yl9mcmVlIChmaWxlKTsKPiArICAgICAgZ3J1Yl9mcmVlICh6c3RkaW8pOwo+ICsgICAg ICByZXR1cm4gMDsKPiArICAgIH0KPiArCj4gKyAgaWYgKCF0ZXN0X2hlYWRlciAoZmlsZSkpCj4g KyAgICB7Cj4gKyAgICAgIGdydWJfZXJybm8gPSBHUlVCX0VSUl9OT05FOwo+ICsgICAgICBncnVi X2ZpbGVfc2VlayAoaW8sIDApOwo+ICsgICAgICBaU1REX2ZyZWVEQ3R4KHpzdGRpby0+ZGN0eCk7 CgpaU1REX2ZyZWVEQ3R4ICh6c3RkaW8tPmRjdHgpOwoKPiArICAgICAgZ3J1Yl9mcmVlICh6c3Rk aW8pOwo+ICsgICAgICBncnViX2ZyZWUgKGZpbGUpOwo+ICsKPiArICAgICAgcmV0dXJuIGlvOwo+ ICsgICAgfQo+ICsKPiArICByZXR1cm4gZmlsZTsKPiArfQo+ICsKPiArc3RhdGljIGdydWJfc3Np emVfdAo+ICtncnViX3pzdGRpb19yZWFkIChncnViX2ZpbGVfdCBmaWxlLCBjaGFyICpidWYsIGdy dWJfc2l6ZV90IGxlbikKPiArewo+ICsgIGdydWJfenN0ZGlvX3QgenN0ZGlvID0gZmlsZS0+ZGF0 YTsKPiArICBncnViX3NzaXplX3QgcmV0ID0gMDsKPiArICBncnViX3NzaXplX3QgcmVhZHJldDsK PiArICBncnViX29mZl90IGN1cnJlbnRfb2Zmc2V0Owo+ICsgIGdydWJfc2l6ZV90IHpyZXQ7Cj4g Kwo+ICsgIC8qIElmIHNlZWsgYmFja3dhcmQgbmVlZCB0byByZXNldCBkZWNvZGVyIGFuZCBzdGFy dCBmcm9tIGJlZ2lubmluZwo+IG9mIGZpbGUuICovCj4gKyAgaWYgKGZpbGUtPm9mZnNldCA8IHpz dGRpby0+c2F2ZWRfb2Zmc2V0KQo+ICsgICAgewo+ICsgICAgICBaU1REX2luaXREU3RyZWFtKHpz dGRpby0+ZGN0eCk7CgpaU1REX2luaXREU3RyZWFtICh6c3RkaW8tPmRjdHgpOwoKPiArICAgICAg enN0ZGlvLT5pbnB1dC5wb3MgPSAwOwo+ICsgICAgICB6c3RkaW8tPmlucHV0LnNpemUgPSAwOwo+ ICsgICAgICB6c3RkaW8tPm91dHB1dC5wb3MgPSAwOwo+ICsgICAgICB6c3RkaW8tPnNhdmVkX29m ZnNldCA9IDA7Cj4gKyAgICAgIGdydWJfZmlsZV9zZWVrICh6c3RkaW8tPmZpbGUsIDApOwo+ICsg ICAgfQo+ICsKPiArICBjdXJyZW50X29mZnNldCA9IHpzdGRpby0+c2F2ZWRfb2Zmc2V0Owo+ICsK PiArICB3aGlsZSAobGVuID4gMCkKPiArICAgIHsKPiArICAgICAgenN0ZGlvLT5vdXRwdXQuc2l6 ZSA9IGZpbGUtPm9mZnNldCArIHJldCArIGxlbiAtIGN1cnJlbnRfb2Zmc2V0Owo+ICsgICAgICBp ZiAoenN0ZGlvLT5vdXRwdXQuc2l6ZSA+IHpzdGRpby0+b3V0c2l6ZSkKPiArCXpzdGRpby0+b3V0 cHV0LnNpemUgPSB6c3RkaW8tPm91dHNpemU7Cj4gKyAgICAgIGlmICh6c3RkaW8tPmlucHV0LnBv cyA9PSB6c3RkaW8tPmlucHV0LnNpemUpCj4gKwl7Cj4gKwkgIHJlYWRyZXQgPSBncnViX2ZpbGVf cmVhZCAoenN0ZGlvLT5maWxlLCB6c3RkaW8tPmJ1ZnMsCj4gKwkJCQkgICAgenN0ZGlvLT5pbnNp emUpOwo+ICsJICBpZiAocmVhZHJldCA8IDApCj4gKwkgICAgcmV0dXJuIC0xOwoKQWRkaW5nIGFu IGVtcHR5IGxpbmUgd291bGQgYmUgZ29vZCBoZXJlISBBbmQgY291bGQgeW91IHBsZWFzZSByZWNo ZWNrIAp0aGUgaW5kZW50YXRpb24gaW4gdGhpcyB3aGlsZSBsb29wLiBTZWVtcyBsaXR0bGUgb2Zm LgoKPiArCSAgenN0ZGlvLT5pbnB1dC5zaXplID0gcmVhZHJldDsKPiArCSAgenN0ZGlvLT5pbnB1 dC5wb3MgPSAwOwo+ICsJfQo+ICsKPiArICAgICAgenJldCA9IFpTVERfZGVjb21wcmVzc1N0cmVh bSh6c3RkaW8tPmRjdHgsICZ6c3RkaW8tPm91dHB1dCwKCi4uLlpTVERfZGVjb21wcmVzc1N0cmVh bSAoenN0ZGlvLi4uCgo+ICsJCQkJICAgJnpzdGRpby0+aW5wdXQpOwo+ICsgICAgICBpZiAoWlNU RF9pc0Vycm9yKHpyZXQpKQoKaWYgKFpTVERfaXNFcnJvciAoenJldCkpCgo+ICsJewo+ICsJICBn cnViX2Vycm9yIChHUlVCX0VSUl9CQURfQ09NUFJFU1NFRF9EQVRBLAo+ICsJCSAgICAgIE5fKCJ6 c3RkIGZpbGUgY29ycnVwdGVkIG9yIHVuc3VwcG9ydGVkIGJsb2NrIG9wdGlvbnMiKSk7Cj4gKwkg IHJldHVybiAtMTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICBncnViX29mZl90IG5ld19vZmZz ZXQgPSBjdXJyZW50X29mZnNldCArIHpzdGRpby0+b3V0cHV0LnBvczsKPiArCj4gKyAgICAgIGlm IChmaWxlLT5vZmZzZXQgPD0gbmV3X29mZnNldCkKPiArCSAgLyogU3RvcmUgZmlyc3QgY2h1bmsg b2YgZGF0YSBpbiBidWZmZXIuICAqLwoKLyogU3RvcmUgZmlyc3QgY2h1bmsgb2YgZGF0YSBpbiBi dWZmZXIuICAqLwppZiAoZmlsZS0+b2Zmc2V0IDw9IG5ld19vZmZzZXQpCgo+ICsgICAgICAgIHsK PiArCSAgZ3J1Yl9zaXplX3QgZGVsdGEgPSBuZXdfb2Zmc2V0IC0gKGZpbGUtPm9mZnNldCArIHJl dCk7Cj4gKwkgIGdydWJfbWVtbW92ZSAoYnVmLCAoZ3J1Yl91aW50OF90ICopenN0ZGlvLT5vdXRw dXQuZHN0ICsKCkVtcHR5IHNwYWNlIG1pc3NpbmchICIuLi4sIChncnViX3VpbnQ4X3QgKikgenN0 ZGlvLi4uIgoKPiArCQkJKHpzdGRpby0+b3V0cHV0LnBvcyAtIGRlbHRhKSwKPiArCSAgICAgICAg ICAgICAgICBkZWx0YSk7Cj4gKwkgIGxlbiAtPSBkZWx0YTsKPiArCSAgYnVmICs9IGRlbHRhOwo+ ICsJICByZXQgKz0gZGVsdGE7Cj4gKwl9Cj4gKwljdXJyZW50X29mZnNldCA9IG5ld19vZmZzZXQ7 Cj4gKwo+ICsJenN0ZGlvLT5vdXRwdXQucG9zID0gMDsKPiArCj4gKwlpZiAoenN0ZGlvLT5pbnB1 dC5wb3MgPT0gMCAmJiB6c3RkaW8tPm91dHB1dC5wb3MgPT0gMCkKPiArCSAgYnJlYWs7Cj4gKyAg ICB9Cj4gKwo+ICsgIGlmIChyZXQgPj0gMCkKPiArICAgIHpzdGRpby0+c2F2ZWRfb2Zmc2V0ID0g ZmlsZS0+b2Zmc2V0ICsgcmV0Owo+ICsKPiArICByZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKiBS ZWxlYXNlIGV2ZXJ5dGhpbmcsIGluY2x1ZGluZyB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdC4g ICovCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJfenN0ZGlvX2Nsb3NlIChncnViX2ZpbGVf dCBmaWxlKQo+ICt7Cj4gKyAgZ3J1Yl96c3RkaW9fdCB6c3RkaW8gPSBmaWxlLT5kYXRhOwo+ICsK PiArICBaU1REX2ZyZWVEQ3R4KHpzdGRpby0+ZGN0eCk7CgpaU1REX2ZyZWVEQ3R4ICh6c3RkaW8t PmRjdHgpOwoKVGhhbmsgeW91IQoKUmVnYXJkcywKQXZuaXNoIENob3VoYW4KCj4gKwo+ICsgIGdy dWJfZmlsZV9jbG9zZSAoenN0ZGlvLT5maWxlKTsKPiArICBncnViX2ZyZWUgKHpzdGRpbyk7Cj4g Kwo+ICsgIC8qIERldmljZSBtdXN0IG5vdCBiZSBjbG9zZWQgdHdpY2UuICAqLwo+ICsgIGZpbGUt PmRldmljZSA9IDA7Cj4gKyAgZmlsZS0+bmFtZSA9IDA7Cj4gKyAgcmV0dXJuIGdydWJfZXJybm87 Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZ3J1Yl9mcyBncnViX3pzdGRpb19mcyA9IHsKPiAr ICAubmFtZSA9ICJ6c3RkaW8iLAo+ICsgIC5mc19kaXIgPSAwLAo+ICsgIC5mc19vcGVuID0gMCwK PiArICAuZnNfcmVhZCA9IGdydWJfenN0ZGlvX3JlYWQsCj4gKyAgLmZzX2Nsb3NlID0gZ3J1Yl96 c3RkaW9fY2xvc2UsCj4gKyAgLmZzX2xhYmVsID0gMCwKPiArICAubmV4dCA9IDAKPiArfTsKPiAr Cj4gK0dSVUJfTU9EX0lOSVQgKHpzdGRpbykKPiArewo+ICsgIGdydWJfZmlsZV9maWx0ZXJfcmVn aXN0ZXIgKEdSVUJfRklMRV9GSUxURVJfWlNURElPLCAKPiBncnViX3pzdGRpb19vcGVuKTsKPiAr fQo+ICsKPiArR1JVQl9NT0RfRklOSSAoenN0ZGlvKQo+ICt7Cj4gKyAgZ3J1Yl9maWxlX2ZpbHRl cl91bnJlZ2lzdGVyIChHUlVCX0ZJTEVfRklMVEVSX1pTVERJTyk7Cj4gK30KPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9ncnViL2ZpbGUuaCBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKPiBpbmRleCBhNWJm M2E3OTJkNmYuLjdjNjY1NzMwYTA5MCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2dydWIvZmlsZS5o Cj4gKysrIGIvaW5jbHVkZS9ncnViL2ZpbGUuaAo+IEBAIC0xODYsOSArMTg2LDEwIEBAIHR5cGVk ZWYgZW51bSBncnViX2ZpbGVfZmlsdGVyX2lkCj4gICAgICBHUlVCX0ZJTEVfRklMVEVSX0daSU8s Cj4gICAgICBHUlVCX0ZJTEVfRklMVEVSX1haSU8sCj4gICAgICBHUlVCX0ZJTEVfRklMVEVSX0xa T1BJTywKPiArICAgIEdSVUJfRklMRV9GSUxURVJfWlNURElPLAo+ICAgICAgR1JVQl9GSUxFX0ZJ TFRFUl9NQVgsCj4gICAgICBHUlVCX0ZJTEVfRklMVEVSX0NPTVBSRVNTSU9OX0ZJUlNUID0gR1JV Ql9GSUxFX0ZJTFRFUl9HWklPLAo+IC0gICAgR1JVQl9GSUxFX0ZJTFRFUl9DT01QUkVTU0lPTl9M QVNUID0gR1JVQl9GSUxFX0ZJTFRFUl9MWk9QSU8sCj4gKyAgICBHUlVCX0ZJTEVfRklMVEVSX0NP TVBSRVNTSU9OX0xBU1QgPSBHUlVCX0ZJTEVfRklMVEVSX1pTVERJTywKPiAgICB9IGdydWJfZmls ZV9maWx0ZXJfaWRfdDsKPiAKPiAgdHlwZWRlZiBncnViX2ZpbGVfdCAoKmdydWJfZmlsZV9maWx0 ZXJfdCkgKGdydWJfZmlsZV90IGluLCBlbnVtCj4gZ3J1Yl9maWxlX3R5cGUgdHlwZSk7Cj4gLS0K PiAyLjQ3LjMKPiAKPiAKPiAKPiAKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAK PiBTdWJqZWN0OiBEaWdlc3QgRm9vdGVyCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBHcnViLWRldmVsIG1haWxpbmcgbGlzdAo+IEdydWItZGV2 ZWxAZ251Lm9yZwo+IGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWIt ZGV2ZWwKPiAKPiAKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAKPiBFbmQgb2Yg R3J1Yi1kZXZlbCBEaWdlc3QsIFZvbCAyNTksIElzc3VlIDgzCj4gKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUu b3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK