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 478EFC369D9 for ; Sat, 3 May 2025 08:06:24 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7sh-0003d9-Vn; Sat, 03 May 2025 04:05:56 -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 1uB7sc-0003cg-PR for grub-devel@gnu.org; Sat, 03 May 2025 04:05:51 -0400 Received: from mail-lf1-x129.google.com ([2a00:1450:4864:20::129]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uB7sX-00081o-RN for grub-devel@gnu.org; Sat, 03 May 2025 04:05:50 -0400 Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-54998f865b8so2877831e87.3 for ; Sat, 03 May 2025 01:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746259543; x=1746864343; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JKsEkToSgFvEx19RsKylvM/kjX8ZLmb0e2DeTb4poEU=; b=V0yGPZgupIvqBUIXVuRHLmDGs3C6iJhbtDNJtSGeUcFJ9VteaOkZBPV6swFygta6pe 9R5nYUu43eAKWFvH6dcwYYnxjCCrKxjNaYLVWmzX0pt7vNFtxHTkoOAvJYDb/DguDHvs 7CTYv2uZcU0MebFHHXYEg4KRdFUuyvoig5p8pld0YPCDqQFUX8lAouItOKRPuBS4DbLm +4ScBbHPexpozJ2FENlrcj2ry3WMe0dF4gSrElI4n+XvSEnWbF5nT8dwYJwOexseEx9r 40hAk+isxe1gOsiRVhPTTEjG4F29Mu7hUusvYLxxSeaWGv047VjT+vAMJ5eGI2ThN4E7 lKKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259543; x=1746864343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JKsEkToSgFvEx19RsKylvM/kjX8ZLmb0e2DeTb4poEU=; b=kbm9MakcZh0pBBg5AGpSFqO21lRBGXEvGXTph4mbn1qy/Od0OBkvkOvmm6Tv8xYHR8 5qiCZPYg0TeToBaGvdtEO+FUQv9mihl6kp6M0DjoDv2J8VPNoSTC32rr5+3Rj97tCOyy Q9X3vzHYaY0k1zaJrSwLaobFvluLsCkIZGAWIn8iFE8qBlXy/Gr7HHq4UOcaGcgYVtRt R2HAdeA5fanwjatcJaVcsEI/xIMcpmO2dJcq+m/oSpGWuPIlxvN0nx6pFDaMt7s3dT8w /LVC4W7yyyZADSo+KNk3FPHR+1nzEkgFuioFXYSrAhLJaBWmL55BXrhEW+QDqQT4wSgm KbWQ== X-Gm-Message-State: AOJu0YxFPuxK+0OSTWq4/tzKg1nzXwUa/uq0kZXVnwplrnW6ED2JrTwN Prtb+PMPTdMa3Eh7XTe3PPfcSYjc+LrcwsXZB2xuArxWfXe+D5gjCbkyRQ== X-Gm-Gg: ASbGnctxqaZ3Ga4JKSd7zzTVCPuL2pf6/muOLbStLvb9rxksyGJomCum5y7gzSCK2nS HfSPtfh+hZ6HLSm6yAJg3KoFRcqCJmO7Phf1GUvp45SG5fa6JXDnOWITfyj4U6ybztJDbi8PrN3 pWW/2jj50obF/hfa4XPZ0Mf/wO4P8JnU3GklUodND4CiBl5tXKuoI5wZFEeYgT5SMo+5Cp9uUOy si10IDTkYw9uZq7QH1lN4dINFbCUNjxF/t2dcgtmcSKtRNXzF33wlrjlKayeLpBWP4cNL/2WVJG CaHN4zoFoYZqeeIwBFH9VJbc6uvYKxNCjg== X-Google-Smtp-Source: AGHT+IGDgTj+W6E1NqsFoDXm6sZH0IPGmI0EfR21rgEC9v4QbxvJnJFYs81BYovRRJNOIRhD7by/LQ== X-Received: by 2002:a05:6512:1252:b0:549:4e79:d4c0 with SMTP id 2adb3069b0e04-54eb2478da9mr428668e87.53.1746259542295; Sat, 03 May 2025 01:05:42 -0700 (PDT) Received: from localhost ([178.178.93.161]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54ea94f6d47sm675598e87.253.2025.05.03.01.05.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 01:05:41 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v2 1/5] Use ET_DYN instead of ET_REL modules Date: Sat, 3 May 2025 08:04:22 +0000 Message-ID: <20250503080528.13240-2-phcoder@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503080528.13240-1-phcoder@gmail.com> References: <20250503080528.13240-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::129; envelope-from=phcoder@gmail.com; helo=mail-lf1-x129.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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 RVRfRFlOIGFsc28ga25vd24gYXMgLnNvIGZpbGVzIGFyZSBhY3R1YWxseSBtZWFudCB0byBiZSBs b2FkZWQgZHluYW1pY2FsbHkuCk1vc3Qgb2YgdGhlIHdvcmsgb2YgbGlua2luZyBpcyBkb25lIGJ5 IG5vcm1hbCBsaW5rZXIgYW5kIHdlIG5lZWQgdG8gZG8Kb25seSBzaW1wbGUgcmVsb2NhdGlvbiBi eSBvZmZzZXQuIFRoaXMgc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIG91cgpkeW5hbWljIGxvYWRp bmcuIE1vcmVvdmVyIHRoZSB0b29scyBhcmUgbWVhbnQgdG8gcHJvZHVjZSAuc28gZmlsZXMgYW5k IHNvCml0J3MgZWFzaWVyIHRvIGdldCB0aGVtIHRvIHByb2R1Y2UgY29ycmVjdCBvdXRwdXQuIEFs c28gaXQgcmVkdWNlIHRoZQpjb3JlIHNpemUgb24gaTM4Ni1wYyBieSA0NCBieXRlcyBvbiBjb25m aWcgYmlvc2Rpc2srcGFydF9tc2RvcytleHQyCgpUaGlzIHJlcXVpcmVkIHRvIHVzZSAtZlBJQyBv biBtaXBzIGFzIG90aGVyd2lzZSBsaW5rZXIgY2hva2VzIG9uIHJlbG9jYXRpb25zCmluY29tcGF0 aWJsZSB3aXRoIC1zaGFyZWQKClRoaXMgd2FzIG9yaWdpbmFsbHkgbWVhbnQgZm9yIFJ1c3QgYXMg cnVzdGMgcHJvZHVjZXMgLnNvIG91dHB1dAphcyBhIHBvc3NpYmlsaXR5IGJ1dCBpdCBzaW1wbGlm aWVzIHRoZSBjb2RlLCBzbyBpdCdzIHVzZWZ1bCBpbmRlcGVuZGVudGx5IG9mClJ1c3QKClNpZ25l ZC1vZmYtYnk6IFZsYWRpbWlyIFNlcmJpbmVua28gPHBoY29kZXJAZ21haWwuY29tPgotLS0KIGNv bmYvTWFrZWZpbGUuY29tbW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogY29u Zi9pMzg2LW1vZHVsZXMuc2MgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogY29u ZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ3ICstLQogLi4u L2NvbW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rvci90cG0ya2V5LmMgICAgIHwgICA3ICsKIGdydWIt Y29yZS9nZW5tb2Quc2guaW4gICAgICAgICAgICAgICAgICAgICAgICB8ICAyNCArLQogZ3J1Yi1j b3JlL2dlbm1vZGRlcC5hd2sgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBncnViLWNv cmUva2Vybi9hcm0vZGwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKy0KIGdydWItY29y ZS9rZXJuL2FybTY0L2RsLmMgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQogZ3J1Yi1jb3Jl L2tlcm4vZGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjc0ICsrKysrKysrLS0tLS0t LS0tLQogZ3J1Yi1jb3JlL2tlcm4vZW11L2Z1bGwuYyAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBncnViLWNvcmUva2Vybi9pMzg2L2RsLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTkg Ky0KIGdydWItY29yZS9rZXJuL2lhNjQvZGwuYyAgICAgICAgICAgICAgICAgICAgICB8ICA0OSAr KystCiBncnViLWNvcmUva2Vybi9sb29uZ2FyY2g2NC9kbC5jICAgICAgICAgICAgICAgfCAgMjAg Ky0KIGdydWItY29yZS9rZXJuL21pcHMvZGwuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3OCAr KysrLQogZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9kbC5jICAgICAgICAgICAgICAgICAgIHwgIDE1 ICstCiBncnViLWNvcmUva2Vybi9yaXNjdi9kbC5jICAgICAgICAgICAgICAgICAgICAgfCAgMjMg Ky0KIGdydWItY29yZS9rZXJuL3NwYXJjNjQvZGwuYyAgICAgICAgICAgICAgICAgICB8ICAxNSAr LQogZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMgICAgICAgICAgICAgICAgICAgIHwgIDIxICst CiBncnViLWNvcmUvbGliL2JhY2t0cmFjZS5jICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0K IGluY2x1ZGUvZ3J1Yi9kbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArKy0K IGluY2x1ZGUvZ3J1Yi9lbGYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiB1 dGlsL2dydWItbWtpbWFnZXh4LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogdXRp bC9ncnViLW1vZHVsZS12ZXJpZmllci5jICAgICAgICAgICAgICAgICAgIHwgIDMwICstCiB1dGls L2dydWItbW9kdWxlLXZlcmlmaWVyWFguYyAgICAgICAgICAgICAgICAgfCAgNTYgKysrLQogdXRp bC9ncnViLXBlMmVsZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMzICsrKysrKysr LQogMjUgZmlsZXMgY2hhbmdlZCwgNjUyIGluc2VydGlvbnMoKyksIDMwMCBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb25mL2kzODYtbW9kdWxlcy5zYwoKZGlmZiAtLWdpdCBhL2Nv bmYvTWFrZWZpbGUuY29tbW9uIGIvY29uZi9NYWtlZmlsZS5jb21tb24KaW5kZXggYzYwZjU1Mzg2 Li44YjFiZDY1YmMgMTAwNjQ0Ci0tLSBhL2NvbmYvTWFrZWZpbGUuY29tbW9uCisrKyBiL2NvbmYv TWFrZWZpbGUuY29tbW9uCkBAIC01MSw3ICs1MSwxNSBAQCBlbmRpZgogZW5kaWYKIAogQ0ZMQUdT X01PRFVMRSA9ICQoQ0ZMQUdTX1BMQVRGT1JNKSAtZmZyZWVzdGFuZGluZwotTERGTEFHU19NT0RV TEUgPSAkKExERkxBR1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRBUkdFVF9MREZMQUdTX09MRE1B R0lDKSAtV2wsLXIKK2lmIENPTkRfZW11CitMREZMQUdTX01PRFVMRSA9ICQoTERGTEFHU19QTEFU Rk9STSkgLW5vc3RkbGliIC1XbCwtcgorZWxzZQoraWYgQ09ORF9pMzg2X29wdAorTERGTEFHU19N T0RVTEUgPSAkKExERkxBR1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRBUkdFVF9MREZMQUdTX09M RE1BR0lDKSAkKFRBUkdFVF9SRUxPQ0FUQUJMRSkgLVdsLC1UdGV4dC1zZWdtZW50PTAgLVdsLC1C c3RhdGljIC1XbCwtVCR7c3JjZGlyfS8uLi9jb25mL2kzODYtbW9kdWxlcy5zYworZWxzZQorTERG TEFHU19NT0RVTEUgPSAkKExERkxBR1NfUExBVEZPUk0pIC1ub3N0ZGxpYiAkKFRBUkdFVF9MREZM QUdTX09MRE1BR0lDKSAkKFRBUkdFVF9SRUxPQ0FUQUJMRSkKK2VuZGlmCitlbmRpZgogQ1BQRkxB R1NfTU9EVUxFID0gJChDUFBGTEFHU19DUFUpICQoQ1BQRkxBR1NfUExBVEZPUk0pCiBDQ0FTRkxB R1NfTU9EVUxFID0gJChDQ0FTRkxBR1NfQ1BVKSAkKENDQVNGTEFHU19QTEFURk9STSkKIApkaWZm IC0tZ2l0IGEvY29uZi9pMzg2LW1vZHVsZXMuc2MgYi9jb25mL2kzODYtbW9kdWxlcy5zYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmFhYjI2ZTRhMQotLS0gL2Rldi9udWxs CisrKyBiL2NvbmYvaTM4Ni1tb2R1bGVzLnNjCkBAIC0wLDAgKzEsMzUgQEAKK1NFQ1RJT05TCit7 CisgIC50ZXh0IDoKKyAgeworICAgICooLnRleHQpCisgIH0KKyAgLmRhdGEgOgorICB7CisgICAg KiguZGF0YSkKKyAgICAqKC5yZGF0YSkKKyAgICAqKC5wZGF0YSkKKyAgfQorICAuYnNzIDoKKyAg eworICAgICooLmJzcykKKyAgICAqKENPTU1PTikKKyAgfQorICAuZWRhdGEgOgorICB7CisgICAg KiguZWRhdGEpCisgIH0KKyAgLnN0YWIgOgorICB7CisgICAgKiguc3RhYikKKyAgfQorICAuc3Rh YnN0ciA6CisgIHsKKyAgICAqKC5zdGFic3RyKQorICB9CisKKyAgL0RJU0NBUkQvIDoKKyAgewor ICAgICAqKC5keW5hbWljKQorICB9Cit9CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m aWd1cmUuYWMKaW5kZXggODNlM2RkZjkwLi5mZjA2NzUyZDAgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTI3NSw2ICsyNzUsNyBAQCBjYXNlICIke3Rhcmdl dF9jcHV9LSRwbGF0Zm9ybSIgaW4KIAk7OwogZXNhYwogCitBQ19TVUJTVChUQVJHRVRfUkVMT0NB VEFCTEUpCiBBQ19TVUJTVChUQVJHRVRfTElOS19BRERSKQogQUNfU1VCU1QoVEFSR0VUX0RFQ09N UFJFU1NPUl9MSU5LX0FERFIpCiAKQEAgLTg3NiwxNiArODc3LDggQEAgaWYgKCB0ZXN0ICJ4JHRh cmdldF9jcHUiID0geGkzODYgfHwgdGVzdCAieCR0YXJnZXRfY3B1IiA9IHh4ODZfNjQgKTsgdGhl bgogZmkKIAogaWYgdGVzdCAieCR0YXJnZXRfY3B1IiA9IHhsb29uZ2FyY2g2NDsgdGhlbgotICBB Q19DQUNIRV9DSEVDSyhbd2hldGhlciBfbW5vX2V4cGxpY2l0X3JlbG9jcyB3b3Jrc10sIFtncnVi X2N2X2NjX21ub19leHBsaWNpdF9yZWxvY3NdLCBbCi0gICAgQ0ZMQUdTPSIkVEFSR0VUX0NGTEFH UyAtbW5vLWV4cGxpY2l0LXJlbG9jcyAtV2Vycm9yIgotICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtB Q19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSldLAotCVtncnViX2N2X2NjX21ub19leHBsaWNpdF9y ZWxvY3M9eWVzXSwKLQlbZ3J1Yl9jdl9jY19tbm9fZXhwbGljaXRfcmVsb2NzPW5vXSkKLSAgXSkK LSAgaWYgdGVzdCAieCRncnViX2N2X2NjX21ub19leHBsaWNpdF9yZWxvY3MiID0geHllczsgdGhl bgotICAgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1tbm8tZXhwbGljaXQtcmVsb2Nz IC1mbm8tcGx0IgotICAgIFRBUkdFVF9DQ0FTRkxBR1M9IiRUQVJHRVRfQ0NBU0ZMQUdTIC1tbm8t ZXhwbGljaXQtcmVsb2NzIC1mbm8tcGx0IgotICBmaQorICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VU X0NGTEFHUyAtZm5vLXBsdCIKKyAgVEFSR0VUX0NDQVNGTEFHUz0iJFRBUkdFVF9DQ0FTRkxBR1Mg LWZuby1wbHQiCiAKICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBuby1yZWxheCBvcHRpb25zXSwgZ3J1 Yl9jdl90YXJnZXRfY2NfbW5vX3JlbGF4LCBbCiAgICAgZ3J1Yl9jdl90YXJnZXRfY2NfbW5vX3Jl bGF4PW5vCkBAIC0xMTk5LDE0ICsxMTkyLDIwIEBAIGVsaWYgdGVzdCB4IiR0YXJnZXRfY3B1IiA9 IHhpMzg2IHx8IHRlc3QgeCIkdGFyZ2V0X2NwdSIgPSB4eDg2XzY0OyB0aGVuCiAgICAgQUNfTVNH X0VSUk9SKFtubyBzdWl0YWJsZSBsaW5rIGZvcm1hdCBmb3VuZF0pCiAgIGZpCiAgIFRBUkdFVF9M REZMQUdTPSIkVEFSR0VUX0xERkxBR1MgLVdsLCRncnViX2N2X3RhcmdldF9jY19saW5rX2Zvcm1h dCIKKyAgVEFSR0VUX1JFTE9DQVRBQkxFPSctc2hhcmVkJwogICBpZiB0ZXN0IHgiJGdydWJfY3Zf dGFyZ2V0X2NjX2xpbmtfZm9ybWF0IiA9IHgtbWkzODZwZSA7IHRoZW4KICAgICBUQVJHRVRfT0JK MkVMRj0nLi9idWlsZC1ncnViLXBlMmVsZiQoQlVJTERfRVhFRVhUKScKKyAgICBUQVJHRVRfUkVM T0NBVEFCTEU9Jy1XbCwtcicKICAgZmkKICAgaWYgdGVzdCB4IiRncnViX2N2X3RhcmdldF9jY19s aW5rX2Zvcm1hdCIgPSB4LW1pMzg2cGVwIDsgdGhlbgogICAgIFRBUkdFVF9PQkoyRUxGPScuL2J1 aWxkLWdydWItcGVwMmVsZiQoQlVJTERfRVhFRVhUKScKKyAgICBUQVJHRVRfUkVMT0NBVEFCTEU9 Jy1XbCwtcicKICAgZmkKIGZpCiAKK1RBUkdFVF9MREZPUk1BVD0iJGdydWJfY3ZfdGFyZ2V0X2Nj X2xpbmtfZm9ybWF0IgorQUNfU1VCU1QoVEFSR0VUX0xERk9STUFUKQorCiBpZiB0ZXN0IHgkZ3J1 Yl9jdl90YXJnZXRfY2NfbGlua19mb3JtYXQgPSB4LWFyY2gsaTM4NiB8fCB0ZXN0IHgkZ3J1Yl9j dl90YXJnZXRfY2NfbGlua19mb3JtYXQgPSB4LWFyY2gseDg2XzY0OyB0aGVuCiAgICBUQVJHRVRf QVBQTEVfTElOS0VSPTEKICAgIEFDX0NIRUNLX1BST0coW1RBUkdFVF9PQkpDT05WXSwgW29iamNv bnZdLCBbb2JqY29udl0sIFtdKQpAQCAtMTI0MCw2ICsxMjM5LDEwIEBAIGVsc2UKICAgVEFSR0VU X0lNR19DRkxBR1M9CiBmaQogCitpZiB0ZXN0IHgke3BsYXRmb3JtfSA9IHhlZmkgfHwgdGVzdCB4 JHtwbGF0Zm9ybX0gPSB4ZW11OyB0aGVuCisgIFRBUkdFVF9MREZMQUdTX09MRE1BR0lDPQorZmkK KwogQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyIKIAogQUNfQVJHX0VOQUJMRShbZWZpZW11XSwKQEAg LTE0MjAsMTggKzE0MjMsMjcgQEAgZ3J1Yl9DSEVDS19QSUMKIFsjIE9uIG1vc3QgcGxhdGZvcm1z IHdlIGRvbid0IHdhbnQgUElDIGFzIGl0IG9ubHkgbWFrZXMgcmVsb2NhdGlvbnMgaGFyZGVyCiAj IGFuZCBjb2RlIGxlc3MgZWZmaWNpZW50LiBPbiBtaXBzIHdlIHdhbnQgdG8gaGF2ZSBvbmUgZ290 IHRhYmxlIHBlciBtb2R1bGUKICMgYW5kIHJlbG9hZCAkZ3AgaW4gZXZlcnkgZnVuY3Rpb24uCi0j IEdDQyBpbXBsZW1lbnRzIGl0IHVzaW5nIHN5bWJvbCBfX2dudV9sb2NhbF9ncCBpbiBub24tUElD IGFzIHdlbGwuCi0jIEhvd2V2ZXIgd2l0aCBjbGFuZyB3ZSBuZWVkIFBJQyBmb3IgdGhpcyByZWxv YWRpbmcgdG8gaGFwcGVuLgogIyBXaXRoIGFybTY0IHdlIG5lZWQgcmVsb2NhdGlvbnMgdGhhdCBh cmUgaW4gc29tZSB3YXkgcmVwcmVzZW50YWJsZSBpbgogIyBQRSBhcyB3ZSBuZWVkIHRvIHN1cHBv cnQgYXJtNjQtZWZpLiBXaXRob3V0IC1mUElDIGNsYW5nIGdlbmVyYXRlcwogIyBtb3ZrJ3Mgd2hp Y2ggYXJlbid0IHJlcHJlc2VudGFibGUuCiAjIFNpbmNlIGRlZmF1bHQgdmFyaWVzIGFjcm9zcyBk aWN0cmlidXRpb25zIHVzZSBlaXRoZXIgLWZQSUMgb3IgLWZuby1QSUMKICMgZXhwbGljaXRseS4K LWlmICggdGVzdCB4JHRhcmdldF9jcHUgPSB4bWlwcyB8fCB0ZXN0IHgkdGFyZ2V0X2NwdSA9IHht aXBzZWwgfHwgdGVzdCB4JHRhcmdldF9jcHUgPSB4YXJtNjQgKSAmJiB0ZXN0ICJ4JGdydWJfY3Zf Y2NfdGFyZ2V0X2NsYW5nIiA9IHh5ZXMgOyB0aGVuCi0gICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VU X0NGTEFHUyAtZlBJQyIKLWVsaWYgWyB4IiRwaWNfcG9zc2libGUiID0geHllcyBdOyB0aGVuCi0g ICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZm5vLVBJQyIKLWZpXQorY2FzZSAkdGFy Z2V0X2NwdS0kcGxhdGZvcm0gaW4KKyAgICAgbWlwcy0qIHwgbWlwc2VsLSopCisgICAgICAgIFRB UkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1mUElDIC1tYWJpY2FsbHMiCisJOzsKKyAgICAg YXJtNjQtKikKKwlpZiB0ZXN0ICJ4JGdydWJfY3ZfY2NfdGFyZ2V0X2NsYW5nIiA9IHh5ZXMgOyB0 aGVuCisJICAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLWZQSUMiCisJZmkKKwk7Owor ICAgICByaXNjdjMyLSogfCBpYTY0LSopCisgICAgICAgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRf Q0ZMQUdTIC1mUElDIgorCTs7CisgICAgICopCisgICAgICAgIFRBUkdFVF9DRkxBR1M9IiRUQVJH RVRfQ0ZMQUdTIC1mbm8tUElDIgorCTs7Citlc2FjXQogCiBDRkxBR1M9IiRUQVJHRVRfQ0ZMQUdT IgogCkBAIC0yMjE4LDYgKzIyMzAsNyBAQCBBTV9DT05ESVRJT05BTChbQ09ORF9zcGFyYzY0X2ll ZWUxMjc1XSwgW3Rlc3QgeCR0YXJnZXRfY3B1ID0geHNwYXJjNjQgLWEgeCRwbGF0ZgogQU1fQ09O RElUSU9OQUwoW0NPTkRfc3BhcmM2NF9lbXVdLCBbdGVzdCB4JHRhcmdldF9jcHUgPSB4c3BhcmM2 NCAtYSB4JHBsYXRmb3JtID0geGVtdV0pCiBBTV9DT05ESVRJT05BTChbQ09ORF94ODZfNjRfZWZp XSwgW3Rlc3QgeCR0YXJnZXRfY3B1ID0geHg4Nl82NCAtYSB4JHBsYXRmb3JtID0geGVmaV0pCiBB TV9DT05ESVRJT05BTChbQ09ORF94ODZfNjRfeGVuXSwgW3Rlc3QgeCR0YXJnZXRfY3B1ID0geHg4 Nl82NCAtYSB4JHBsYXRmb3JtID0geHhlbl0pCitBTV9DT05ESVRJT05BTChbQ09ORF9pMzg2X29w dF0sIFt0ZXN0IHgkdGFyZ2V0X2NwdSA9IHhpMzg2IC1hIHgiJGdydWJfY3ZfdGFyZ2V0X2NjX2xp bmtfZm9ybWF0IiAhPSB4LW1pMzg2cGVdKQogCiBBTV9DT05ESVRJT05BTChbQ09ORF9IT1NUX0hV UkRdLCBbdGVzdCB4JGhvc3Rfa2VybmVsID0geGh1cmRdKQogQU1fQ09ORElUSU9OQUwoW0NPTkRf SE9TVF9MSU5VWF0sIFt0ZXN0IHgkaG9zdF9rZXJuZWwgPSB4bGludXhdKQpkaWZmIC0tZ2l0IGEv Z3J1Yi1jb3JlL2NvbW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rvci90cG0ya2V5LmMgYi9ncnViLWNv cmUvY29tbWFuZHMvdHBtMl9rZXlfcHJvdGVjdG9yL3RwbTJrZXkuYwppbmRleCAzYjYwMDFkODQu LmI4ZDUyMjdkZCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3RwbTJfa2V5X3Byb3Rl Y3Rvci90cG0ya2V5LmMKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL3RwbTJfa2V5X3Byb3RlY3Rv ci90cG0ya2V5LmMKQEAgLTM5LDYgKzM5LDEzIEBAIGFzbjFfYWxsb2NhdGVfYW5kX3JlYWQgKGFz bjFfbm9kZSBub2RlLCBjb25zdCBjaGFyICpuYW1lLCB2b2lkICoqY29udGVudCwgZ3J1Yl9zCiAg ICAgcmV0dXJuIEFTTjFfTUVNX0VSUk9SOwogCiAgIHJldCA9IGFzbjFfcmVhZF92YWx1ZSAobm9k ZSwgbmFtZSwgTlVMTCwgJnRtcHN0cl9zaXplKTsKKyAgaWYgKHJldCA9PSBBU04xX1NVQ0NFU1Mp CisgICAgeworICAgICAgKmNvbnRlbnQgPSBOVUxMOworICAgICAgKmNvbnRlbnRfc2l6ZSA9IDA7 CisKKyAgICAgIHJldHVybiBBU04xX1NVQ0NFU1M7CisgICAgfQogICBpZiAocmV0ICE9IEFTTjFf TUVNX0VSUk9SKQogICAgIHJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS9nZW5t b2Quc2guaW4gYi9ncnViLWNvcmUvZ2VubW9kLnNoLmluCmluZGV4IDMzNzc1M2M1Ny4uNjM4Zjcy ZjAwIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvZ2VubW9kLnNoLmluCisrKyBiL2dydWItY29yZS9n ZW5tb2Quc2guaW4KQEAgLTIzLDYgKzIzLDcgQEAgaW5maWxlPSQyCiBvdXRmaWxlPSQ0CiAKIHRt cGZpbGU9JHtvdXRmaWxlfS50bXAKK3RtcGZpbGUyPSR7b3V0ZmlsZX0udG1wMgogbW9kbmFtZT1g ZWNobyAkaW5maWxlIHwgc2VkIC1lICdzQFwubW9kdWxlLiokQEAnYAogCiBpZiAhIGdyZXAgXiRt b2RuYW1lOiAkbW9kZGVwID4vZGV2L251bGw7IHRoZW4KQEAgLTMzLDcgKzM0LDcgQEAgZmkKIGRl cHM9YGdyZXAgXiRtb2RuYW1lOiAkbW9kZGVwIHwgc2VkIHNAXi4qOkBAYAogCiAjIHJlbW92ZSBv bGQgZmlsZXMgaWYgYW55Ci1ybSAtZiAkdG1wZmlsZSAkb3V0ZmlsZQorcm0gLWYgJHRtcGZpbGUg JHRtcGZpbGUyICRvdXRmaWxlCiAKIGlmIHRlc3QgeEBUQVJHRVRfQVBQTEVfTElOS0VSQCAhPSB4 MTsgdGhlbgogICAgICMgc3RyaXBvdXQgLm1vZG5hbWUgYW5kIC5tb2RkZXBzIHNlY3Rpb25zIGZy b20gaW5wdXQgbW9kdWxlCkBAIC01MywxMCArNTQsOCBAQCBpZiB0ZXN0IHhAVEFSR0VUX0FQUExF X0xJTktFUkAgIT0geDE7IHRoZW4KICAgICBmaQogICAgIHJtIC1mICR0MSAkdDIKIAotCWlmIHRl c3QgeEBwbGF0Zm9ybUAgIT0geGVtdTsgdGhlbgotCSAgICBAVEFSR0VUX1NUUklQQCAtLXN0cmlw LXVubmVlZGVkIFwKLQkJLUsgZ3J1Yl9tb2RfaW5pdCAtSyBncnViX21vZF9maW5pIFwKLQkJLUsg X2dydWJfbW9kX2luaXQgLUsgX2dydWJfbW9kX2ZpbmkgXAorICAgIGlmIHRlc3QgeEBwbGF0Zm9y bUAgIT0geGVtdTsgdGhlbgorCVNUUklQX0ZMQUdTPSItLXN0cmlwLXVubmVlZGVkIFwKIAkJLVIg Lm5vdGUuR05VLXN0YWNrIFwKIAkJLVIgLm5vdGUuZ251LmdvbGQtdmVyc2lvbiBcCiAJCS1SIC5u b3RlLmdudS5wcm9wZXJ0eSBcCkBAIC02NSwxMyArNjQsMjQgQEAgaWYgdGVzdCB4QFRBUkdFVF9B UFBMRV9MSU5LRVJAICE9IHgxOyB0aGVuCiAJCS1SIC5yZWwuZ251LmJ1aWxkLmF0dHJpYnV0ZXMg XAogCQktUiAucmVsYS5nbnUuYnVpbGQuYXR0cmlidXRlcyBcCiAJCS1SIC5laF9mcmFtZSAtUiAu cmVsYS5laF9mcmFtZSAtUiAucmVsLmVoX2ZyYW1lIFwKLQkJLVIgLm5vdGUgLVIgLmNvbW1lbnQg LVIgLkFSTS5leGlkeCAkdG1wZmlsZSB8fCBleGl0IDEKKwkJLVIgLm5vdGUgLVIgLmNvbW1lbnQg LVIgLmdudS5oYXNoIC1SIC5BUk0uZXhpZHggXAorCQktUiAuc3ltdGFiIC1SIC5zdHJ0YWIgLVIg LnNoc3RydGFiIgorCWlmIHRlc3QgeEB0YXJnZXRfY3B1QCAhPSB4bWlwcyAmJiB0ZXN0IHhAdGFy Z2V0X2NwdUAgIT0geG1pcHNlbCAmJiB0ZXN0IHhAdGFyZ2V0X2NwdUAgIT0geGlhNjQ7IHRoZW4K KwkgICAgU1RSSVBfRkxBR1M9IiRTVFJJUF9GTEFHUyAtUiAuZHluYW1pYyIKIAlmaQorCWNhc2Ug IkBUQVJHRVRfTERGT1JNQVRAIiBpbgorCSAgICAtbWkzODZwZXwtbWkzODZwZXApCQk7OworCSAg ICAqKQkJCQkJU1RSSVBfRkxBR1M9IiRTVFJJUF9GTEFHUyAtcyI7OworCWVzYWMKKwlAVEFSR0VU X1NUUklQQCAkU1RSSVBfRkxBR1MgJHRtcGZpbGUgfHwgZXhpdCAxCisgICAgZWxzZQorCUBUQVJH RVRfQ0NAIC1XbCwtLWV4cG9ydC1keW5hbWljIC1vICR0bXBmaWxlMiAtc2hhcmVkIC1ub3N0ZGxp YiAkdG1wZmlsZQorCWNwICR0bXBmaWxlMiAkdG1wZmlsZQorICAgIGZpCiAJaWYgISB0ZXN0IC16 ICIke1RBUkdFVF9PQkoyRUxGfSI7IHRoZW4KIAkgICAgIiR7VEFSR0VUX09CSjJFTEZ9IiAkdG1w ZmlsZSB8fCBleGl0IDEKIAlmaQogZWxzZQotICAgIHRtcGZpbGUyPSR7b3V0ZmlsZX0udG1wMgog ICAgIHQxPSR7b3V0ZmlsZX0udDEuYwogICAgIHQyPSR7b3V0ZmlsZX0udDIuYwogCmRpZmYgLS1n aXQgYS9ncnViLWNvcmUvZ2VubW9kZGVwLmF3ayBiL2dydWItY29yZS9nZW5tb2RkZXAuYXdrCmlu ZGV4IGFiNDU3Y2IyYi4uNjM5ZGM1NjMyIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvZ2VubW9kZGVw LmF3aworKysgYi9ncnViLWNvcmUvZ2VubW9kZGVwLmF3awpAQCAtMTgsNyArMTgsNyBAQCBCRUdJ TiB7CiAKIHsKICAgaWYgKCQxID09ICJkZWZpbmVkIikgewotICAgIGlmICgkMyAhfiAvXlwucmVm cHRyXC4vICYmICQzIGluIHN5bXRhYikgeworICAgIGlmICgkMyAhfiAvXlwucmVmcHRyXC4vICYm ICQzICE9ICJncnViX21vZF9pbml0IiAmJiAkMyAhPSAiZ3J1Yl9tb2RfZmluaSIgJiYgJDMgIT0g Il9ncnViX21vZF9pbml0IiAmJiAkMyAhPSAiX2dydWJfbW9kX2ZpbmkiICYmICQzICE9ICJfX2Jz c19zdGFydCIgJiYgJDMgIT0gIl9mZGF0YSIgJiYgJDMgIT0gIl9mdGV4dCIgJiYgJDMgIT0gIl9m YnNzIiAmJiAkMyAhPSAiX2VkYXRhIiAmJiAkMyAhPSAiX2VuZCIgJiYgJDMgIT0gIl9fYWVhYmlf dWlkaXZtb2QiICYmICQzICE9ICJfX2FlYWJpX2lkaXZtb2QiICYmICQzIGluIHN5bXRhYikgewog ICAgICAgcHJpbnRmICIlcyBpbiAlcyBpcyBkdXBsaWNhdGVkIGluICVzXG4iLCAkMywgJDIsIHN5 bXRhYlskM10gPiIvZGV2L3N0ZGVyciI7CiAgICAgICBlcnJvcisrOwogICAgIH0KZGlmZiAtLWdp dCBhL2dydWItY29yZS9rZXJuL2FybS9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtL2RsLmMKaW5k ZXggZWFiOWQxN2ZmLi4zZDhiZDlmOWEgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL2FybS9k bC5jCisrKyBiL2dydWItY29yZS9rZXJuL2FybS9kbC5jCkBAIC0xMDgsOCArMTA4LDcgQEAgZ3J1 Yl9hcmNoX2RsX2dldF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAqZWhkciwgZ3J1Yl9zaXpl X3QgKnRyYW1wLAogICogUnVudGltZSBkeW5hbWljIGxpbmtlciB3aXRoIGhlbHBlciBmdW5jdGlv bnMuICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBt b2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVudF90 IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lk ICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1JlbCAqcmVsLCAqbWF4OwogCkBAIC0xMjIs MTAgKzEyMSwxMSBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1v ZCwgdm9pZCAqZWhkciwKICAgICAgIGdydWJfZXJyX3QgcmV0dmFsOwogICAgICAgRWxmX1N5bSAq c3ltOwogCi0gICAgICBpZiAoc2VnLT5zaXplIDwgcmVsLT5yX29mZnNldCkKKyAgICAgIGlmICht b2QtPm1pbl9hZGRyICsgbW9kLT5zeiA8PSByZWwtPnJfb2Zmc2V0IHx8IG1vZC0+bWluX2FkZHIg PiByZWwtPnJfb2Zmc2V0KQogCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxF LAotCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQiKTsKLSAgICAgIHRh cmdldCA9ICh2b2lkICopICgoY2hhciAqKSBzZWctPmFkZHIgKyByZWwtPnJfb2Zmc2V0KTsKKwkJ CSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50OiAleCBub3QgaW4gWyV4Li4l eF0iLAorCQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5fYWRkciwgbW9kLT5taW5fYWRkciAr IG1vZC0+c3opOworICAgICAgdGFyZ2V0ID0gKHZvaWQgKikgKChjaGFyICopIG1vZC0+YmFzZSAr IHJlbC0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKTsKICAgICAgIHN5bSA9IChFbGZfU3ltICop ICgoY2hhciAqKSBtb2QtPnN5bXRhYgogCQkJICsgbW9kLT5zeW1zaXplICogRUxGX1JfU1lNIChy ZWwtPnJfaW5mbykpOwogCkBAIC0xMzQsNiArMTM0LDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRl X3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBzd2l0Y2ggKEVMRl9S X1RZUEUgKHJlbC0+cl9pbmZvKSkKIAl7CiAJY2FzZSBSX0FSTV9BQlMzMjoKKwljYXNlIFJfQVJN X0dMT0JfREFUOgogCSAgewogCSAgICAvKiBEYXRhIHdpbGwgYmUgbmF0dXJhbGx5IGFsaWduZWQg Ki8KIAkgICAgcmV0dmFsID0gZ3J1Yl9hcm1fcmVsb2NfYWJzMzIgKHRhcmdldCwgc3ltX2FkZHIp OwpAQCAtMTQxLDYgKzE0MiwxNSBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAkgICAgICByZXR1cm4gcmV0dmFsOwogCSAgfQogCSAg YnJlYWs7CisKKwljYXNlIFJfQVJNX0pVTVBfU0xPVDoKKwkgICp0YXJnZXQgPSBzeW1fYWRkcjsK KwkgIGJyZWFrOworCisJY2FzZSBSX0FSTV9SRUxBVElWRToKKwkgICp0YXJnZXQgKz0gKGdydWJf YWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyOworCSAgYnJlYWs7CisKIAljYXNlIFJf QVJNX0NBTEw6CiAJY2FzZSBSX0FSTV9KVU1QMjQ6CiAJICB7CmRpZmYgLS1naXQgYS9ncnViLWNv cmUva2Vybi9hcm02NC9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGwuYwppbmRleCBhMmI1 Nzg5YTkuLjdhY2VmZjA3NyAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vYXJtNjQvZGwuYwor KysgYi9ncnViLWNvcmUva2Vybi9hcm02NC9kbC5jCkBAIC01Miw4ICs1Miw3IEBAIGdydWJfYXJj aF9kbF9jaGVja19oZWFkZXIgKHZvaWQgKmVoZHIpCiAgKiBVbmlmaWVkIGZ1bmN0aW9uIGZvciBi b3RoIFJFTCBhbmQgUkVMQQogICovCiBncnViX2Vycl90Ci1ncnViX2FyY2hfZGxfcmVsb2NhdGVf c3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKLQkJCSAgICAgICBFbGZfU2hkciAq cywgZ3J1Yl9kbF9zZWdtZW50X3Qgc2VnKQorZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMg KGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsIEVsZl9TaGRyICpzKQogewogICBFbGZfUmVsICpy ZWwsICptYXg7CiAgIHVuc2lnbmVkIHVubWF0Y2hlZF9hZHJfZ290X3BhZ2UgPSAwOwpAQCAtNjcs OSArNjYsMTAgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2Qs IHZvaWQgKmVoZHIsCiAgICAgICB2b2lkICpwbGFjZTsKICAgICAgIGdydWJfdWludDY0X3Qgc3lt X2FkZHI7CiAKLSAgICAgIGlmIChyZWwtPnJfb2Zmc2V0ID49IHNlZy0+c2l6ZSkKKyAgICAgIGlm IChtb2QtPm1pbl9hZGRyICsgbW9kLT5zeiA8PSByZWwtPnJfb2Zmc2V0IHx8IG1vZC0+bWluX2Fk ZHIgPiByZWwtPnJfb2Zmc2V0KQogCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9E VUxFLAotCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQiKTsKKwkJCSAg ICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50OiAlbHggbm90IGluIFslbHguLiVs eF0iLAorCQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5fYWRkciwgbW9kLT5taW5fYWRkciAr IG1vZC0+c3opOwogCiAgICAgICBzeW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgbW9kLT5zeW10 YWIKIAkJCSArIG1vZC0+c3ltc2l6ZSAqIEVMRl9SX1NZTSAocmVsLT5yX2luZm8pKTsKQEAgLTc4 LDExICs3OCwxMyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1v ZCwgdm9pZCAqZWhkciwKICAgICAgIGlmIChzLT5zaF90eXBlID09IFNIVF9SRUxBKQogCXN5bV9h ZGRyICs9ICgoRWxmX1JlbGEgKikgcmVsKS0+cl9hZGRlbmQ7CiAKLSAgICAgIHBsYWNlID0gKHZv aWQgKikgKChncnViX2FkZHJfdCkgc2VnLT5hZGRyICsgcmVsLT5yX29mZnNldCk7CisgICAgICBw bGFjZSA9ICh2b2lkICopICgoY2hhciAqKSBtb2QtPmJhc2UgKyByZWwtPnJfb2Zmc2V0IC0gbW9k LT5taW5fYWRkcik7CiAKICAgICAgIHN3aXRjaCAoRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pKQog CXsKIAljYXNlIFJfQUFSQ0g2NF9BQlM2NDoKKwljYXNlIFJfQUFSQ0g2NF9KVU1QX1NMT1Q6CisJ Y2FzZSBSX0FBUkNINjRfR0xPQl9EQVQ6CiAJICB7CiAJICAgIGdydWJfdWludDY0X3QgKmFic19w bGFjZSA9IHBsYWNlOwogCkBAIC0xMjUsNyArMTI3LDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRl X3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJICAgIGdydWJfaW50NjRfdCB2 YWx1ZTsKIAkgICAgRWxmNjRfV29yZCAqYWRkcjMyID0gcGxhY2U7CiAJICAgIHZhbHVlID0gKChn cnViX2ludDMyX3QpICphZGRyMzIpICsgc3ltX2FkZHIgLQotCSAgICAgIChFbGY2NF9Yd29yZCkg KGdydWJfYWRkcl90KSBzZWctPmFkZHIgLSByZWwtPnJfb2Zmc2V0OworCSAgICAgIChFbGY2NF9Y d29yZCkgKGdydWJfYWRkcl90KSBwbGFjZTsKIAkgICAgaWYgKHZhbHVlICE9IChncnViX2ludDMy X3QpIHZhbHVlKQogCSAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxF LCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiKTsKIAkgICAgZ3J1Yl9kcHJpbnRmKCJkbCIsICIg IHJlbG9jX3ByZWwzMiAlcCA9PiAweCUwMTZsbHhcbiIsCkBAIC0xNTUsNyArMTU3LDcgQEAgZ3J1 Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJ CSAgJiYgKChFbGZfUmVsYSAqKSByZWwpLT5yX2FkZGVuZCA9PSByZWwyLT5yX2FkZGVuZAogCQkg ICYmIEVMRl9SX1RZUEUgKHJlbDItPnJfaW5mbykgPT0gUl9BQVJDSDY0X0xENjRfR09UX0xPMTJf TkMpCiAJCXsKLQkJICBncnViX2FybTY0X3NldF9hYnNfbG8xMl9sZHN0NjQgKCh2b2lkICopICgo Z3J1Yl9hZGRyX3QpIHNlZy0+YWRkciArIHJlbDItPnJfb2Zmc2V0KSwKKwkJICBncnViX2FybTY0 X3NldF9hYnNfbG8xMl9sZHN0NjQgKCh2b2lkICopICgoY2hhciAqKSBtb2QtPmJhc2UgKyByZWwy LT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpLAogCQkJCQkJICAoZ3J1Yl91aW50NjRfdClncCk7 CiAJCSAgYnJlYWs7CiAJCX0KQEAgLTE4Miw2ICsxODQsMTIgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9j YXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJICB9CiAJICBicmVhazsK IAorCWNhc2UgUl9BQVJDSDY0X1JFTEFUSVZFOgorCSAgKihncnViX3VpbnQ2NF90ICopcGxhY2Ug PSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7CisJICBpZiAocy0+c2hf dHlwZSA9PSBTSFRfUkVMQSkKKwkgICAgKihncnViX3VpbnQ2NF90ICopcGxhY2UgKz0gKChFbGZf UmVsYSAqKSByZWwpLT5yX2FkZGVuZDsKKwkgIGJyZWFrOworCiAJZGVmYXVsdDoKIAkgIHsKIAkg ICAgY2hhciByZWxfaW5mb1sxN107IC8qIGxvZzE2KDJeNjQpID0gMTYsIHBsdXMgTlVMLiAqLwpk aWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vZGwuYyBiL2dydWItY29yZS9rZXJuL2RsLmMKaW5k ZXggZGU4YzNhYThkLi42ZWYyZTgzZmYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL2RsLmMK KysrIGIvZ3J1Yi1jb3JlL2tlcm4vZGwuYwpAQCAtMTg3LDE5ICsxODcsNiBAQCBncnViX2RsX3Vu cmVnaXN0ZXJfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCkKICAgICB9CiB9CiAKLS8qIFJldHVybiB0 aGUgYWRkcmVzcyBvZiBhIHNlY3Rpb24gd2hvc2UgaW5kZXggaXMgTi4gICovCi1zdGF0aWMgdm9p ZCAqCi1ncnViX2RsX2dldF9zZWN0aW9uX2FkZHIgKGdydWJfZGxfdCBtb2QsIHVuc2lnbmVkIG4p Ci17Ci0gIGdydWJfZGxfc2VnbWVudF90IHNlZzsKLQotICBmb3IgKHNlZyA9IG1vZC0+c2VnbWVu dDsgc2VnOyBzZWcgPSBzZWctPm5leHQpCi0gICAgaWYgKHNlZy0+c2VjdGlvbiA9PSBuKQotICAg ICAgcmV0dXJuIHNlZy0+YWRkcjsKLQotICByZXR1cm4gMDsKLX0KLQogLyogQ2hlY2sgaWYgRUhE UiBpcyBhIHZhbGlkIEVMRiBoZWFkZXIuICAqLwogc3RhdGljIGdydWJfZXJyX3QKIGdydWJfZGxf Y2hlY2tfaGVhZGVyICh2b2lkICplaGRyLCBncnViX3NpemVfdCBzaXplKQpAQCAtMjMyLDM1ICsy MTksMzEgQEAgc3RhdGljIGdydWJfZXJyX3QKIGdydWJfZGxfbG9hZF9zZWdtZW50cyAoZ3J1Yl9k bF90IG1vZCwgY29uc3QgRWxmX0VoZHIgKmUpCiB7CiAgIHVuc2lnbmVkIGk7Ci0gIGNvbnN0IEVs Zl9TaGRyICpzOwotICBncnViX3NpemVfdCB0c2l6ZSA9IDAsIHRhbGlnbiA9IDEsIGFyY2hfYWRk cmFsaWduID0gMTsKKyAgY29uc3QgRWxmX1BoZHIgKnA7CisgIGdydWJfc2l6ZV90IHRhbGlnbiA9 IERMX0FMSUdOOwogI2lmICFkZWZpbmVkIChfX2kzODZfXykgJiYgIWRlZmluZWQgKF9feDg2XzY0 X18pICYmICFkZWZpbmVkKF9fcmlzY3YpICYmIFwKICAgIWRlZmluZWQgKF9fbG9vbmdhcmNoX18p CiAgIGdydWJfc2l6ZV90IHRyYW1wOwogICBncnViX3NpemVfdCB0cmFtcF9hbGlnbjsKICAgZ3J1 Yl9zaXplX3QgZ290OwogICBncnViX3NpemVfdCBnb3RfYWxpZ247CisgIGdydWJfYWRkcl90IHRy YW1wX2FkZHIgPSAwOworICBncnViX2FkZHJfdCBnb3RfYWRkciA9IDA7CiAgIGdydWJfZXJyX3Qg ZXJyOwogI2VuZGlmCi0gIGNoYXIgKnB0cjsKKyAgZ3J1Yl9hZGRyX3QgbWluX2FkZHIgPSB+KGdy dWJfYWRkcl90KTA7CisgIGdydWJfYWRkcl90IG1heF9hZGRyID0gMDsKIAotICBhcmNoX2FkZHJh bGlnbiA9IERMX0FMSUdOOwotCi0gIGZvciAoaSA9IDAsIHMgPSAoY29uc3QgRWxmX1NoZHIgKiko KGNvbnN0IGNoYXIgKikgZSArIGUtPmVfc2hvZmYpOwotICAgICAgIGkgPCBlLT5lX3NobnVtOwot ICAgICAgIGkrKywgcyA9IChjb25zdCBFbGZfU2hkciAqKSgoY29uc3QgY2hhciAqKSBzICsgZS0+ ZV9zaGVudHNpemUpKQorICBmb3IgKGkgPSAwLCBwID0gKGNvbnN0IEVsZl9QaGRyICopKChjb25z dCBjaGFyICopIGUgKyBlLT5lX3Bob2ZmKTsKKyAgICAgICBpIDwgZS0+ZV9waG51bTsKKyAgICAg ICBpKyssIHAgPSAoY29uc3QgRWxmX1BoZHIgKikoKGNvbnN0IGNoYXIgKikgcCArIGUtPmVfcGhl bnRzaXplKSkKICAgICB7Ci0gICAgICBncnViX3NpemVfdCBzaF9hZGRyYWxpZ247Ci0gICAgICBn cnViX3NpemVfdCBzaF9zaXplOwotCi0gICAgICBpZiAocy0+c2hfc2l6ZSA9PSAwIHx8ICEocy0+ c2hfZmxhZ3MgJiBTSEZfQUxMT0MpKQorICAgICAgaWYgKHAtPnBfdHlwZSAhPSBQVF9MT0FEKQog CWNvbnRpbnVlOwogCi0gICAgICBzaF9hZGRyYWxpZ24gPSBBTElHTl9VUCAocy0+c2hfYWRkcmFs aWduLCBhcmNoX2FkZHJhbGlnbik7Ci0gICAgICBzaF9zaXplID0gQUxJR05fVVAgKHMtPnNoX3Np emUsIHNoX2FkZHJhbGlnbik7Ci0KLSAgICAgIHRzaXplID0gQUxJR05fVVAgKHRzaXplLCBzaF9h ZGRyYWxpZ24pICsgc2hfc2l6ZTsKLSAgICAgIHRhbGlnbiA9IGdydWJfbWF4ICh0YWxpZ24sIHNo X2FkZHJhbGlnbik7CisgICAgICBtaW5fYWRkciA9IGdydWJfbWluKG1pbl9hZGRyLCBwLT5wX3Zh ZGRyKTsKKyAgICAgIG1heF9hZGRyID0gZ3J1Yl9tYXgobWF4X2FkZHIsIHAtPnBfdmFkZHIgKyBw LT5wX21lbXN6KTsKKyAgICAgIHRhbGlnbiA9IGdydWJfbWF4ICh0YWxpZ24sIHAtPnBfYWxpZ24p OwogICAgIH0KIAogI2lmICFkZWZpbmVkIChfX2kzODZfXykgJiYgIWRlZmluZWQgKF9feDg2XzY0 X18pICYmICFkZWZpbmVkKF9fcmlzY3YpICYmIFwKQEAgLTI2OCw3OSArMjUxLDQ4IEBAIGdydWJf ZGxfbG9hZF9zZWdtZW50cyAoZ3J1Yl9kbF90IG1vZCwgY29uc3QgRWxmX0VoZHIgKmUpCiAgIGVy ciA9IGdydWJfYXJjaF9kbF9nZXRfdHJhbXBfZ290X3NpemUgKGUsICZ0cmFtcCwgJmdvdCk7CiAg IGlmIChlcnIpCiAgICAgcmV0dXJuIGVycjsKLSAgdHJhbXBfYWxpZ24gPSBncnViX21heCAoR1JV Ql9BUkNIX0RMX1RSQU1QX0FMSUdOLCBhcmNoX2FkZHJhbGlnbik7Ci0gIHRzaXplICs9IEFMSUdO X1VQICh0cmFtcCwgdHJhbXBfYWxpZ24pOworICB0cmFtcF9hbGlnbiA9IGdydWJfbWF4IChHUlVC X0FSQ0hfRExfVFJBTVBfQUxJR04sIERMX0FMSUdOKTsKKyAgdHJhbXBfYWRkciA9IEFMSUdOX1VQ IChtYXhfYWRkciwgdHJhbXBfYWxpZ24pOworICBtYXhfYWRkciA9IEFMSUdOX1VQICh0cmFtcF9h ZGRyK3RyYW1wLCB0cmFtcF9hbGlnbik7CiAgIHRhbGlnbiA9IGdydWJfbWF4ICh0YWxpZ24sIHRy YW1wX2FsaWduKTsKLSAgZ290X2FsaWduID0gZ3J1Yl9tYXggKEdSVUJfQVJDSF9ETF9HT1RfQUxJ R04sIGFyY2hfYWRkcmFsaWduKTsKLSAgdHNpemUgKz0gQUxJR05fVVAgKGdvdCwgZ290X2FsaWdu KTsKKyAgZ290X2FsaWduID0gZ3J1Yl9tYXggKEdSVUJfQVJDSF9ETF9HT1RfQUxJR04sIERMX0FM SUdOKTsKKyAgZ290X2FkZHIgPSBBTElHTl9VUChtYXhfYWRkciwgZ290X2FsaWduKTsKKyAgbWF4 X2FkZHIgPSBBTElHTl9VUChnb3RfYWRkciArIGdvdCwgZ290X2FsaWduKTsKICAgdGFsaWduID0g Z3J1Yl9tYXggKHRhbGlnbiwgZ290X2FsaWduKTsKICNlbmRpZgogCisgIG1pbl9hZGRyID0gQUxJ R05fRE9XTihtaW5fYWRkciwgdGFsaWduKTsKKwogI2lmZGVmIEdSVUJfTUFDSElORV9FTVUKLSAg bW9kLT5iYXNlID0gZ3J1Yl9vc2RlcF9kbF9tZW1hbGlnbiAodGFsaWduLCB0c2l6ZSk7CisgIG1v ZC0+YmFzZSA9IGdydWJfb3NkZXBfZGxfbWVtYWxpZ24gKHRhbGlnbiwgbWF4X2FkZHIgLSBtaW5f YWRkcik7CiAjZWxzZQotICBtb2QtPmJhc2UgPSBncnViX21lbWFsaWduICh0YWxpZ24sIHRzaXpl KTsKKyAgbW9kLT5iYXNlID0gZ3J1Yl9tZW1hbGlnbiAodGFsaWduLCBtYXhfYWRkciAtIG1pbl9h ZGRyKTsKICNlbmRpZgogICBpZiAoIW1vZC0+YmFzZSkKICAgICByZXR1cm4gZ3J1Yl9lcnJubzsK LSAgbW9kLT5zeiA9IHRzaXplOwotICBwdHIgPSBtb2QtPmJhc2U7CisgIG1vZC0+c3ogPSBtYXhf YWRkciAtIG1pbl9hZGRyOworICBtb2QtPm1pbl9hZGRyID0gbWluX2FkZHI7CiAKLSAgZm9yIChp ID0gMCwgcyA9IChFbGZfU2hkciAqKSgoY2hhciAqKSBlICsgZS0+ZV9zaG9mZik7Ci0gICAgICAg aSA8IGUtPmVfc2hudW07Ci0gICAgICAgaSsrLCBzID0gKEVsZl9TaGRyICopKChjaGFyICopIHMg KyBlLT5lX3NoZW50c2l6ZSkpCisgIGZvciAoaSA9IDAsIHAgPSAoY29uc3QgRWxmX1BoZHIgKiko KGNvbnN0IGNoYXIgKikgZSArIGUtPmVfcGhvZmYpOworICAgICAgIGkgPCBlLT5lX3BobnVtOwor ICAgICAgIGkrKywgcCA9IChjb25zdCBFbGZfUGhkciAqKSgoY29uc3QgY2hhciAqKSBwICsgZS0+ ZV9waGVudHNpemUpKQogICAgIHsKLSAgICAgIGdydWJfc2l6ZV90IHNoX2FkZHJhbGlnbiA9IEFM SUdOX1VQIChzLT5zaF9hZGRyYWxpZ24sIGFyY2hfYWRkcmFsaWduKTsKLSAgICAgIGdydWJfc2l6 ZV90IHNoX3NpemUgPSBBTElHTl9VUCAocy0+c2hfc2l6ZSwgc2hfYWRkcmFsaWduKTsKLQotICAg ICAgaWYgKHMtPnNoX2ZsYWdzICYgU0hGX0FMTE9DKQotCXsKLQkgIGdydWJfZGxfc2VnbWVudF90 IHNlZzsKLQotCSAgc2VnID0gKGdydWJfZGxfc2VnbWVudF90KSBncnViX21hbGxvYyAoc2l6ZW9m ICgqc2VnKSk7Ci0JICBpZiAoISBzZWcpCi0JICAgIHJldHVybiBncnViX2Vycm5vOwotCi0JICBp ZiAocy0+c2hfc2l6ZSkKLQkgICAgewotCSAgICAgIHZvaWQgKmFkZHI7Ci0KLQkgICAgICBwdHIg PSAoY2hhciAqKSBBTElHTl9VUCAoKGdydWJfYWRkcl90KSBwdHIsIHNoX2FkZHJhbGlnbik7Ci0J ICAgICAgYWRkciA9IHB0cjsKLQkgICAgICBwdHIgKz0gc2hfc2l6ZTsKLQotCSAgICAgIHN3aXRj aCAocy0+c2hfdHlwZSkKLQkJewotCQljYXNlIFNIVF9QUk9HQklUUzoKLQkJICBncnViX21lbWNw eSAoYWRkciwgKGNoYXIgKikgZSArIHMtPnNoX29mZnNldCwgcy0+c2hfc2l6ZSk7Ci0JCSAgZ3J1 Yl9tZW1zZXQgKChjaGFyICopIGFkZHIgKyBzLT5zaF9zaXplLCAwLCBzaF9zaXplIC0gcy0+c2hf c2l6ZSk7Ci0JCSAgYnJlYWs7Ci0JCWNhc2UgU0hUX05PQklUUzoKLQkJICBncnViX21lbXNldCAo YWRkciwgMCwgc2hfc2l6ZSk7Ci0JCSAgYnJlYWs7Ci0JCX0KKyNpZiBkZWZpbmVkKF9fbWlwc19f KSB8fCBkZWZpbmVkKF9faWE2NF9fKQorICAgICAgaWYgKHAtPnBfdHlwZSA9PSBQVF9EWU5BTUlD KQorCWdydWJfYXJjaF9kbF9wYXJzZV9keW5hbWljIChtb2QsIChFbGZfRHluICopICgoY2hhciAq KSBlICsgcC0+cF9vZmZzZXQpLCBwLT5wX2ZpbGVzeik7CisjZW5kaWYKIAotCSAgICAgIHNlZy0+ YWRkciA9IGFkZHI7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgc2VnLT5hZGRyID0gMDsKKyAgICAg IGlmIChwLT5wX3R5cGUgIT0gUFRfTE9BRCkKKwljb250aW51ZTsKIAotCSAgc2VnLT5zaXplID0g c2hfc2l6ZTsKLQkgIHNlZy0+c2VjdGlvbiA9IGk7Ci0JICBzZWctPm5leHQgPSBtb2QtPnNlZ21l bnQ7Ci0JICBtb2QtPnNlZ21lbnQgPSBzZWc7Ci0JfQorICAgICAgdm9pZCAqYWRkciA9IChjaGFy ICopbW9kLT5iYXNlICsgKHAtPnBfdmFkZHIgLSBtb2QtPm1pbl9hZGRyKTsKKyAgICAgIGdydWJf bWVtY3B5IChhZGRyLCAoY2hhciAqKSBlICsgcC0+cF9vZmZzZXQsIHAtPnBfZmlsZXN6KTsKKyAg ICAgIGdydWJfbWVtc2V0ICgoY2hhciAqKSBhZGRyICsgcC0+cF9maWxlc3osIDAsIHAtPnBfbWVt c3ogLSBwLT5wX2ZpbGVzeik7CiAgICAgfQogI2lmICFkZWZpbmVkIChfX2kzODZfXykgJiYgIWRl ZmluZWQgKF9feDg2XzY0X18pICYmICFkZWZpbmVkKF9fcmlzY3YpICYmIFwKICAgIWRlZmluZWQg KF9fbG9vbmdhcmNoX18pCi0gIHB0ciA9IChjaGFyICopIEFMSUdOX1VQICgoZ3J1Yl9hZGRyX3Qp IHB0ciwgdHJhbXBfYWxpZ24pOwotICBtb2QtPnRyYW1wID0gcHRyOwotICBtb2QtPnRyYW1wcHRy ID0gcHRyOwotICBwdHIgKz0gdHJhbXA7Ci0gIHB0ciA9IChjaGFyICopIEFMSUdOX1VQICgoZ3J1 Yl9hZGRyX3QpIHB0ciwgZ290X2FsaWduKTsKLSAgbW9kLT5nb3QgPSBwdHI7Ci0gIG1vZC0+Z290 cHRyID0gcHRyOwotICBwdHIgKz0gZ290OworICBtb2QtPnRyYW1wcHRyID0gbW9kLT50cmFtcCA9 IChjaGFyICopIG1vZC0+YmFzZSArICh0cmFtcF9hZGRyIC0gbW9kLT5taW5fYWRkcik7CisgIG1v ZC0+Z290cHRyID0gbW9kLT5nb3QgPSAoY2hhciAqKSBtb2QtPmJhc2UgKyAoZ290X2FkZHIgLSBt b2QtPm1pbl9hZGRyKTsKICNlbmRpZgogCiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtMzU1 LDEwICszMDcsNDIgQEAgZ3J1Yl9kbF9yZXNvbHZlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIEVs Zl9FaGRyICplKQogICBjb25zdCBjaGFyICpzdHI7CiAgIEVsZl9Xb3JkIHNpemUsIGVudHNpemU7 CiAKKyAgLyogT24gZW11IG1vZF9pbml0L21vZF9maW5pIGFyZSBub3QgZXhwb3J0ZWQuICAqLwor I2lmZGVmIEdSVUJfTUFDSElORV9FTVUKKyAgICBmb3IgKGkgPSAwLCBzID0gKEVsZl9TaGRyICop ICgoY2hhciAqKSBlICsgZS0+ZV9zaG9mZik7CisgICAgICAgaSA8IGUtPmVfc2hudW07CisgICAg ICAgaSsrLCBzID0gKEVsZl9TaGRyICopICgoY2hhciAqKSBzICsgZS0+ZV9zaGVudHNpemUpKQor ICAgICAgaWYgKHMtPnNoX3R5cGUgPT0gU0hUX1NZTVRBQikKKwl7CisJICBFbGZfU2hkciAqczI7 CisJICBzeW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgZSArIHMtPnNoX29mZnNldCk7CisJICBz aXplID0gcy0+c2hfc2l6ZTsKKwkgIGVudHNpemUgPSBzLT5zaF9lbnRzaXplOworCisJICBzMiA9 IChFbGZfU2hkciAqKSAoKGNoYXIgKikgZSArIGUtPmVfc2hvZmYgKyBlLT5lX3NoZW50c2l6ZSAq IHMtPnNoX2xpbmspOworCSAgc3RyID0gKGNoYXIgKikgZSArIHMyLT5zaF9vZmZzZXQ7CisKKwkg IGZvciAoaSA9IDA7CisJICAgICAgIGkgPCBzaXplIC8gZW50c2l6ZTsKKwkgICAgICAgaSsrLCBz eW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgc3ltICsgZW50c2l6ZSkpCisJICAgIHsKKwkgICAg ICBjb25zdCBjaGFyICpuYW1lID0gc3RyICsgc3ltLT5zdF9uYW1lOworCisJICAgICAgaWYgKEVM Rl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNUVF9GVU5DKQorCQl7CisJCSAgaWYgKGdydWJf c3RyY21wIChuYW1lLCAiZ3J1Yl9tb2RfaW5pdCIpID09IDApCisJCSAgICBtb2QtPmluaXQgPSAo dm9pZCAoKikgKGdydWJfZGxfdCkpIChzeW0tPnN0X3ZhbHVlICsgKEVsZl9BZGRyKSBtb2QtPmJh c2UgLSBtb2QtPm1pbl9hZGRyKTsKKwkJICBlbHNlIGlmIChncnViX3N0cmNtcCAobmFtZSwgImdy dWJfbW9kX2ZpbmkiKSA9PSAwKQorCQkgICAgbW9kLT5maW5pID0gKHZvaWQgKCopICh2b2lkKSkg KHN5bS0+c3RfdmFsdWUgKyAoRWxmX0FkZHIpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHIpOwor CQl9CisJICAgIH0KKwl9CisjZW5kaWYKKwogICBmb3IgKGkgPSAwLCBzID0gKEVsZl9TaGRyICop ICgoY2hhciAqKSBlICsgZS0+ZV9zaG9mZik7CiAgICAgICAgaSA8IGUtPmVfc2hudW07CiAgICAg ICAgaSsrLCBzID0gKEVsZl9TaGRyICopICgoY2hhciAqKSBzICsgZS0+ZV9zaGVudHNpemUpKQot ICAgIGlmIChzLT5zaF90eXBlID09IFNIVF9TWU1UQUIpCisgICAgaWYgKHMtPnNoX3R5cGUgPT0g U0hUX0RZTlNZTSkKICAgICAgIGJyZWFrOwogCiAgIC8qIE1vZHVsZSB3aXRob3V0IHN5bWJvbCB0 YWJsZSBtYXkgc3RpbGwgYmUgdXNlZCB0byBwdWxsIGluIGRlcGVuZGVuY2llcy4KQEAgLTM5MCwx NSArMzc0LDE5IEBAIGdydWJfZGxfcmVzb2x2ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCBFbGZf RWhkciAqZSkKICAgICAgIHVuc2lnbmVkIGNoYXIgdHlwZSA9IEVMRl9TVF9UWVBFIChzeW0tPnN0 X2luZm8pOwogICAgICAgdW5zaWduZWQgY2hhciBiaW5kID0gRUxGX1NUX0JJTkQgKHN5bS0+c3Rf aW5mbyk7CiAgICAgICBjb25zdCBjaGFyICpuYW1lID0gc3RyICsgc3ltLT5zdF9uYW1lOworICAg ICAgaW50IGlzZnVuYyA9IHR5cGUgPT0gU1RUX0ZVTkM7CiAKICAgICAgIHN3aXRjaCAodHlwZSkK IAl7CiAJY2FzZSBTVFRfTk9UWVBFOgogCWNhc2UgU1RUX09CSkVDVDoKKwljYXNlIFNUVF9GVU5D OgogCSAgLyogUmVzb2x2ZSBhIGdsb2JhbCBzeW1ib2wuICAqLwogCSAgaWYgKHN5bS0+c3RfbmFt ZSAhPSAwICYmIHN5bS0+c3Rfc2huZHggPT0gMCkKIAkgICAgewogCSAgICAgIGdydWJfc3ltYm9s X3QgbnN5bSA9IGdydWJfZGxfcmVzb2x2ZV9zeW1ib2wgKG5hbWUpOworCSAgICAgIGlmICghIG5z eW0gJiYgYmluZCA9PSBTVEJfV0VBSykKKwkJYnJlYWs7CiAJICAgICAgaWYgKCEgbnN5bSkKIAkJ cmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCiAJCQkJICAgTl8oInN5bWJv bCBgJXMnIG5vdCBmb3VuZCIpLCBuYW1lKTsKQEAgLTQwOCw0MSArMzk2LDMyIEBAIGdydWJfZGxf cmVzb2x2ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCBFbGZfRWhkciAqZSkKIAkgICAgfQogCSAg ZWxzZQogCSAgICB7Ci0JICAgICAgc3ltLT5zdF92YWx1ZSArPSAoRWxmX0FkZHIpIGdydWJfZGxf Z2V0X3NlY3Rpb25fYWRkciAobW9kLAotCQkJCQkJCQkgICAgc3ltLT5zdF9zaG5keCk7CisJICAg ICAgc3ltLT5zdF92YWx1ZSArPSAoRWxmX0FkZHIpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7 CisjaWZkZWYgX19pYTY0X18KKwkgICAgICBpZiAoaXNmdW5jKQorCQl7CisJCSAgLyogRklYTUU6 IGZyZWUgZGVzY3JpcHRvciBvbmNlIGl0J3Mgbm90IHVzZWQgYW55bW9yZS4gKi8KKwkJICBjaGFy ICoqZGVzYzsKKwkJICBkZXNjID0gZ3J1Yl9tYWxsb2MgKDIgKiBzaXplb2YgKGNoYXIgKikpOwor CQkgIGlmICghZGVzYykKKwkJICAgIHJldHVybiBncnViX2Vycm5vOworCQkgIGRlc2NbMF0gPSAo dm9pZCAqKSBzeW0tPnN0X3ZhbHVlOworCQkgIGRlc2NbMV0gPSAoY2hhciAqKSBtb2QtPmJhc2Ug KyBtb2QtPnBsdGdvdDsKKwkJICBzeW0tPnN0X3ZhbHVlID0gKGdydWJfYWRkcl90KSBkZXNjOwor CQl9CisjZW5kaWYKIAkgICAgICBpZiAoYmluZCAhPSBTVEJfTE9DQUwpCi0JCWlmIChncnViX2Rs X3JlZ2lzdGVyX3N5bWJvbCAobmFtZSwgKHZvaWQgKikgc3ltLT5zdF92YWx1ZSwgMCwgbW9kKSkK KwkJaWYgKGdydWJfZGxfcmVnaXN0ZXJfc3ltYm9sIChuYW1lLCAodm9pZCAqKSBzeW0tPnN0X3Zh bHVlLCBpc2Z1bmMsIG1vZCkpCiAJCSAgcmV0dXJuIGdydWJfZXJybm87CisJICAgICAgaWYgKGlz ZnVuYyAmJiBncnViX3N0cmNtcCAobmFtZSwgImdydWJfbW9kX2luaXQiKSA9PSAwKQorCQltb2Qt PmluaXQgPSAodm9pZCAoKikgKGdydWJfZGxfdCkpIHN5bS0+c3RfdmFsdWU7CisJICAgICAgZWxz ZSBpZiAoaXNmdW5jICYmIGdydWJfc3RyY21wIChuYW1lLCAiZ3J1Yl9tb2RfZmluaSIpID09IDAp CisJCW1vZC0+ZmluaSA9ICh2b2lkICgqKSAodm9pZCkpIHN5bS0+c3RfdmFsdWU7CiAJICAgIH0K IAkgIGJyZWFrOwogCi0JY2FzZSBTVFRfRlVOQzoKLQkgIHN5bS0+c3RfdmFsdWUgKz0gKEVsZl9B ZGRyKSBncnViX2RsX2dldF9zZWN0aW9uX2FkZHIgKG1vZCwKLQkJCQkJCQkJc3ltLT5zdF9zaG5k eCk7Ci0jaWZkZWYgX19pYTY0X18KLQkgIHsKLQkgICAgICAvKiBGSVhNRTogZnJlZSBkZXNjcmlw dG9yIG9uY2UgaXQncyBub3QgdXNlZCBhbnltb3JlLiAqLwotCSAgICAgIGNoYXIgKipkZXNjOwot CSAgICAgIGRlc2MgPSBncnViX21hbGxvYyAoMiAqIHNpemVvZiAoY2hhciAqKSk7Ci0JICAgICAg aWYgKCFkZXNjKQotCQlyZXR1cm4gZ3J1Yl9lcnJubzsKLQkgICAgICBkZXNjWzBdID0gKHZvaWQg Kikgc3ltLT5zdF92YWx1ZTsKLQkgICAgICBkZXNjWzFdID0gbW9kLT5iYXNlOwotCSAgICAgIHN5 bS0+c3RfdmFsdWUgPSAoZ3J1Yl9hZGRyX3QpIGRlc2M7Ci0JICB9Ci0jZW5kaWYKLQkgIGlmIChi aW5kICE9IFNUQl9MT0NBTCkKLQkgICAgaWYgKGdydWJfZGxfcmVnaXN0ZXJfc3ltYm9sIChuYW1l LCAodm9pZCAqKSBzeW0tPnN0X3ZhbHVlLCAxLCBtb2QpKQotCSAgICAgIHJldHVybiBncnViX2Vy cm5vOwotCSAgaWYgKGdydWJfc3RyY21wIChuYW1lLCAiZ3J1Yl9tb2RfaW5pdCIpID09IDApCi0J ICAgIG1vZC0+aW5pdCA9ICh2b2lkICgqKSAoZ3J1Yl9kbF90KSkgc3ltLT5zdF92YWx1ZTsKLQkg IGVsc2UgaWYgKGdydWJfc3RyY21wIChuYW1lLCAiZ3J1Yl9tb2RfZmluaSIpID09IDApCi0JICAg IG1vZC0+ZmluaSA9ICh2b2lkICgqKSAodm9pZCkpIHN5bS0+c3RfdmFsdWU7Ci0JICBicmVhazsK LQogCWNhc2UgU1RUX1NFQ1RJT046Ci0JICBzeW0tPnN0X3ZhbHVlID0gKEVsZl9BZGRyKSBncnVi X2RsX2dldF9zZWN0aW9uX2FkZHIgKG1vZCwKLQkJCQkJCQkgICAgICAgc3ltLT5zdF9zaG5keCk7 CisJICBzeW0tPnN0X3ZhbHVlID0gKEVsZl9BZGRyKSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRy OwogCSAgYnJlYWs7CiAKIAljYXNlIFNUVF9GSUxFOgpAQCAtNjIwLDI2ICs1OTksMTQgQEAgZ3J1 Yl9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyKQogICAgICAg IGkrKywgcyA9IChFbGZfU2hkciAqKSAoKGNoYXIgKikgcyArIGUtPmVfc2hlbnRzaXplKSkKICAg ICBpZiAocy0+c2hfdHlwZSA9PSBTSFRfUkVMIHx8IHMtPnNoX3R5cGUgPT0gU0hUX1JFTEEpCiAg ICAgICB7Ci0JZ3J1Yl9kbF9zZWdtZW50X3Qgc2VnOwogCWdydWJfZXJyX3QgZXJyOwogCi0JaWYg KCEocy0+c2hfZmxhZ3MgJiBTSEZfSU5GT19MSU5LKSkKLQkgIGNvbnRpbnVlOwotCi0JLyogRmlu ZCB0aGUgdGFyZ2V0IHNlZ21lbnQuICAqLwotCWZvciAoc2VnID0gbW9kLT5zZWdtZW50OyBzZWc7 IHNlZyA9IHNlZy0+bmV4dCkKLQkgIGlmIChzZWctPnNlY3Rpb24gPT0gcy0+c2hfaW5mbykKLQkg ICAgYnJlYWs7Ci0KLQlpZiAoc2VnKQotCSAgewotCSAgICBpZiAoIW1vZC0+c3ltdGFiKQotCSAg ICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAicmVsb2NhdGlvbiB3 aXRob3V0IHN5bWJvbCB0YWJsZSIpOworCWlmICghbW9kLT5zeW10YWIpCisJICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gd2l0aG91dCBzeW1ib2wg dGFibGUiKTsKIAotCSAgICBlcnIgPSBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAobW9k LCBlaGRyLCBzLCBzZWcpOwotCSAgICBpZiAoZXJyKQotCSAgICAgIHJldHVybiBlcnI7Ci0JICB9 CisJZXJyID0gZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKG1vZCwgZWhkciwgcyk7CisJ aWYgKGVycikKKwkgIHJldHVybiBlcnI7CiAgICAgICB9CiAKICAgcmV0dXJuIEdSVUJfRVJSX05P TkU7CkBAIC02NTEsNyArNjE4LDcgQEAgc3RhdGljIGdydWJfZXJyX3QKIGdydWJfZGxfc2V0X21l bV9hdHRycyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkcikKIHsKICAgdW5zaWduZWQgaTsKLSAg Y29uc3QgRWxmX1NoZHIgKnM7CisgIGNvbnN0IEVsZl9QaGRyICpwOwogICBjb25zdCBFbGZfRWhk ciAqZSA9IGVoZHI7CiAgIGdydWJfZXJyX3QgZXJyOwogI2lmICFkZWZpbmVkIChfX2kzODZfXykg JiYgIWRlZmluZWQgKF9feDg2XzY0X18pICYmICFkZWZpbmVkKF9fcmlzY3YpICYmIFwKQEAgLTY2 MSwzOSArNjI4LDMzIEBAIGdydWJfZGxfc2V0X21lbV9hdHRycyAoZ3J1Yl9kbF90IG1vZCwgdm9p ZCAqZWhkcikKICAgZ3J1Yl9zaXplX3QgdGdzejsKICNlbmRpZgogCi0gIGZvciAoaSA9IDAsIHMg PSAoY29uc3QgRWxmX1NoZHIgKikgKChjb25zdCBjaGFyICopIGUgKyBlLT5lX3Nob2ZmKTsKLSAg ICAgICBpIDwgZS0+ZV9zaG51bTsKLSAgICAgICBpKyssIHMgPSAoY29uc3QgRWxmX1NoZHIgKikg KChjb25zdCBjaGFyICopIHMgKyBlLT5lX3NoZW50c2l6ZSkpCisgIGZvciAoaSA9IDAsIHAgPSAo Y29uc3QgRWxmX1BoZHIgKikgKChjb25zdCBjaGFyICopIGUgKyBlLT5lX3Bob2ZmKTsKKyAgICAg ICBpIDwgZS0+ZV9waG51bTsKKyAgICAgICBpKyssIHAgPSAoY29uc3QgRWxmX1BoZHIgKikgKChj b25zdCBjaGFyICopIHAgKyBlLT5lX3BoZW50c2l6ZSkpCiAgICAgewotICAgICAgZ3J1Yl9kbF9z ZWdtZW50X3Qgc2VnOwogICAgICAgZ3J1Yl91aW50NjRfdCBzZXRfYXR0cnMgPSBHUlVCX01FTV9B VFRSX1I7CiAgICAgICBncnViX3VpbnQ2NF90IGNsZWFyX2F0dHJzID0gR1JVQl9NRU1fQVRUUl9X IHwgR1JVQl9NRU1fQVRUUl9YOwogCi0gICAgICBmb3IgKHNlZyA9IG1vZC0+c2VnbWVudDsgc2Vn OyBzZWcgPSBzZWctPm5leHQpCi0JLyogRG9lcyB0aGlzIEVMRiBzZWN0aW9uJ3MgaW5kZXggbWF0 Y2ggR1JVQiBETCBzZWdtZW50PyAqLwotCWlmIChzZWctPnNlY3Rpb24gPT0gaSkKLQkgIGJyZWFr OwotCi0gICAgICAvKiBObyBHUlVCIERMIHNlZ21lbnQgZm91bmQgZm9yIHRoaXMgRUxGIHNlY3Rp b24sIHNraXAgaXQuICovCi0gICAgICBpZiAoIXNlZykKKyAgICAgIGlmIChwLT5wX21lbXN6ID09 IDApCiAJY29udGludWU7CiAKLSAgICAgIGlmIChzZWctPnNpemUgPT0gMCB8fCAhKHMtPnNoX2Zs YWdzICYgU0hGX0FMTE9DKSkKLQljb250aW51ZTsKLQotICAgICAgaWYgKHMtPnNoX2ZsYWdzICYg U0hGX1dSSVRFKQorICAgICAgaWYgKHAtPnBfZmxhZ3MgJiBQRl9XKQogCXsKIAkgIHNldF9hdHRy cyB8PSBHUlVCX01FTV9BVFRSX1c7CiAJICBjbGVhcl9hdHRycyAmPSB+R1JVQl9NRU1fQVRUUl9X OwogCX0KIAotICAgICAgaWYgKHMtPnNoX2ZsYWdzICYgU0hGX0VYRUNJTlNUUikKKyAgICAgIGlm IChwLT5wX2ZsYWdzICYgUEZfWCkKIAl7CiAJICBzZXRfYXR0cnMgfD0gR1JVQl9NRU1fQVRUUl9Y OwogCSAgY2xlYXJfYXR0cnMgJj0gfkdSVUJfTUVNX0FUVFJfWDsKIAl9CiAKLSAgICAgIGVyciA9 IGdydWJfdXBkYXRlX21lbV9hdHRycyAoKGdydWJfYWRkcl90KSBzZWctPmFkZHIsIHNlZy0+c2l6 ZSwKKyAgICAgIGdydWJfYWRkcl90IGZyb20gPSAoZ3J1Yl9hZGRyX3QpICgoY2hhciAqKW1vZC0+ YmFzZSArIChwLT5wX3ZhZGRyIC0gbW9kLT5taW5fYWRkcikpOworICAgICAgZ3J1Yl9hZGRyX3Qg dG8gPSBmcm9tICsgcC0+cF9tZW1zejsKKworICAgICAgZXJyID0gZ3J1Yl91cGRhdGVfbWVtX2F0 dHJzIChBTElHTl9ET1dOKGZyb20sIERMX0FMSUdOKSwKKwkJCQkgICBBTElHTl9VUCh0bywgRExf QUxJR04pIC0gQUxJR05fRE9XTihmcm9tLCBETF9BTElHTiksCiAJCQkJICAgc2V0X2F0dHJzLCBj bGVhcl9hdHRycyk7CiAgICAgICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCiAJcmV0dXJuIGVy cjsKQEAgLTc0NiwxNiArNzA3LDE2IEBAIGdydWJfZGxfbG9hZF9jb3JlX25vaW5pdCAodm9pZCAq YWRkciwgZ3J1Yl9zaXplX3Qgc2l6ZSkKICAgaWYgKGdydWJfZGxfY2hlY2tfaGVhZGVyIChlLCBz aXplKSkKICAgICByZXR1cm4gMDsKIAotICBpZiAoZS0+ZV90eXBlICE9IEVUX1JFTCkKKyAgaWYg KGUtPmVfdHlwZSAhPSBFVF9EWU4pCiAgICAgewogICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX01PRFVMRSwgTl8oInRoaXMgRUxGIGZpbGUgaXMgbm90IG9mIHRoZSByaWdodCB0eXBlIikp OwogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGF0IGV2ZXJ5IHNl Y3Rpb24gaXMgd2l0aGluIHRoZSBjb3JlLiAgKi8KLSAgaWYgKHNpemUgPCBlLT5lX3Nob2ZmICsg KGdydWJfdWludDMyX3QpIGUtPmVfc2hlbnRzaXplICogZS0+ZV9zaG51bSkKKyAgaWYgKHNpemUg PCBlLT5lX3Bob2ZmICsgKGdydWJfdWludDMyX3QpIGUtPmVfcGhlbnRzaXplICogZS0+ZV9waG51 bSkKICAgICB7Ci0gICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfT1MsICJFTEYgc2VjdGlv bnMgb3V0c2lkZSBjb3JlIik7CisgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfT1MsICJF TEYgcHJvZ3JhbSBoZWFkZXJzIG91dHNpZGUgY29yZSIpOwogICAgICAgcmV0dXJuIDA7CiAgICAg fQogCkBAIC03ODAsNiArNzQxLDkgQEAgZ3J1Yl9kbF9sb2FkX2NvcmVfbm9pbml0ICh2b2lkICph ZGRyLCBncnViX3NpemVfdCBzaXplKQogICAgICAgfHwgZ3J1Yl9kbF9sb2FkX3NlZ21lbnRzICht b2QsIGUpCiAgICAgICB8fCBncnViX2RsX3Jlc29sdmVfc3ltYm9scyAobW9kLCBlKQogICAgICAg fHwgZ3J1Yl9kbF9yZWxvY2F0ZV9zeW1ib2xzIChtb2QsIGUpCisjaWZkZWYgX19taXBzX18KKyAg ICAgIHx8IGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9wbHRnb3QgKG1vZCkKKyNlbmRpZgogICAgICAg fHwgZ3J1Yl9kbF9zZXRfbWVtX2F0dHJzIChtb2QsIGUpKQogICAgIHsKICAgICAgIG1vZC0+Zmlu aSA9IDA7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lbXUvZnVsbC5jIGIvZ3J1Yi1jb3Jl L2tlcm4vZW11L2Z1bGwuYwppbmRleCBlOGQ2M2IxZjUuLjE4ZTFhYjM0NiAxMDA2NDQKLS0tIGEv Z3J1Yi1jb3JlL2tlcm4vZW11L2Z1bGwuYworKysgYi9ncnViLWNvcmUva2Vybi9lbXUvZnVsbC5j CkBAIC0zOSwxMyArMzksMTEgQEAgZ3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhk cikKIH0KIAogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJf ZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2Vn bWVudF90IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9k LCB2b2lkICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgKHZvaWQpIG1vZDsKICAgKHZvaWQpIGVo ZHI7CiAgICh2b2lkKSBzOwotICAodm9pZCkgc2VnOwogICByZXR1cm4gR1JVQl9FUlJfQkFEX01P RFVMRTsKIH0KIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni9kbC5jIGIvZ3J1Yi1j b3JlL2tlcm4vaTM4Ni9kbC5jCmluZGV4IDEzNDZkYTVjYy4uN2M0MzUzYmFiIDEwMDY0NAotLS0g YS9ncnViLWNvcmUva2Vybi9pMzg2L2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni9kbC5j CkBAIC00MSw3ICs0MSw3IEBAIGdydWJfYXJjaF9kbF9jaGVja19oZWFkZXIgKHZvaWQgKmVoZHIp CiAvKiBSZWxvY2F0ZSBzeW1ib2xzLiAgKi8KIGdydWJfZXJyX3QKIGdydWJfYXJjaF9kbF9yZWxv Y2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAotCQkJICAgICAgIEVsZl9T aGRyICpzLCBncnViX2RsX3NlZ21lbnRfdCBzZWcpCisJCQkgICAgICAgRWxmX1NoZHIgKnMpCiB7 CiAgIEVsZl9SZWwgKnJlbCwgKm1heDsKIApAQCAtNTMsMTYgKzUzLDIyIEBAIGdydWJfYXJjaF9k bF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgRWxm X1dvcmQgKmFkZHI7CiAgICAgICBFbGZfU3ltICpzeW07CiAKLSAgICAgIGlmIChzZWctPnNpemUg PCByZWwtPnJfb2Zmc2V0KQorICAgICAgaWYgKG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJl bC0+cl9vZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91 dCBvZiB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNl Z21lbnQ6ICV4IG5vdCBpbiBbJXguLiV4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1p bl9hZGRyLCBtb2QtPm1pbl9hZGRyICsgbW9kLT5zeik7CiAKLSAgICAgIGFkZHIgPSAoRWxmX1dv cmQgKikgKChjaGFyICopIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgYWRkciA9 IChFbGZfV29yZCAqKSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+ bWluX2FkZHIpOwogICAgICAgc3ltID0gKEVsZl9TeW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFi CiAJCQkgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CiAKICAgICAg IHN3aXRjaCAoRUxGX1JfVFlQRSAocmVsLT5yX2luZm8pKQogCXsKKwljYXNlIFJfMzg2X0pNUF9T TE9UOgorCSAgKmFkZHIgPSBzeW0tPnN0X3ZhbHVlOworCSAgYnJlYWs7CisKKwljYXNlIFJfMzg2 X0dMT0JfREFUOgogCWNhc2UgUl8zODZfMzI6CiAJICAqYWRkciArPSBzeW0tPnN0X3ZhbHVlOwog CSAgYnJlYWs7CkBAIC03MCw2ICs3NiwxMSBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9s cyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAljYXNlIFJfMzg2X1BDMzI6CiAJICAqYWRk ciArPSAoc3ltLT5zdF92YWx1ZSAtIChncnViX2FkZHJfdCkgYWRkcik7CiAJICBicmVhazsKKwor CWNhc2UgUl8zODZfUkVMQVRJVkU6CisJICAqYWRkciArPSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFz ZSAtIG1vZC0+bWluX2FkZHI7CisJICBicmVhazsKKwogCWRlZmF1bHQ6CiAJICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfTk9UX0lNUExFTUVOVEVEX1lFVCwKIAkJCSAgICAgTl8oInJlbG9j YXRpb24gMHgleCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0IiksCmRpZmYgLS1naXQgYS9ncnViLWNv cmUva2Vybi9pYTY0L2RsLmMgYi9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMKaW5kZXggZGI1OTMw MGZlLi43NWI2M2E3OWYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL2lhNjQvZGwuYworKysg Yi9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMKQEAgLTQzLDE0ICs0MywyOSBAQCBncnViX2FyY2hf ZGxfY2hlY2tfaGVhZGVyICh2b2lkICplaGRyKQogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0K IAordm9pZAorZ3J1Yl9hcmNoX2RsX3BhcnNlX2R5bmFtaWMgKGdydWJfZGxfdCBtb2QsIEVsZl9E eW4gKmR5biwgZ3J1Yl9zaXplX3Qgc3opCit7CisgIHVuc2lnbmVkIGk7CisgIGZvciAoaSA9IDA7 IGkgPCBzeiAvIHNpemVvZihkeW5bMF0pOyBpKyspCisgICAgc3dpdGNoIChkeW5baV0uZF90YWcp CisgICAgICB7CisgICAgICBjYXNlIERUX1BMVEdPVDoKKwltb2QtPnBsdGdvdCA9IGR5bltpXS5k X3VuLmRfcHRyOworCWJyZWFrOworICAgICAgY2FzZSBEVF9OVUxMOgorCXJldHVybjsKKyAgICAg IH0KK30KKwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtYWxpZ24iCiAK IC8qIFJlbG9jYXRlIHN5bWJvbHMuICAqLwogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9j YXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1No ZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1i b2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1Jl bGEgKnJlbCwgKm1heDsKKyAgZ3J1Yl9hZGRyX3QgZ3AgPSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFz ZSArIChncnViX2FkZHJfdCkgbW9kLT5wbHRnb3Q7CiAKICAgZm9yIChyZWwgPSAoRWxmX1JlbGEg KikgKChjaGFyICopIGVoZHIgKyBzLT5zaF9vZmZzZXQpLAogCSBtYXggPSAoRWxmX1JlbGEgKikg KChjaGFyICopIHJlbCArIHMtPnNoX3NpemUpOwpAQCAtNjEsMTEgKzc2LDEyIEBAIGdydWJfYXJj aF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAg RWxmX1N5bSAqc3ltOwogICAgICAgZ3J1Yl91aW50NjRfdCB2YWx1ZTsKIAotICAgICAgaWYgKHNl Zy0+c2l6ZSA8IChyZWwtPnJfb2Zmc2V0ICYgfjMpKQorICAgICAgaWYgKG1vZC0+bWluX2FkZHIg KyBtb2QtPnN6IDw9IHJlbC0+cl9vZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9vZmZz ZXQpCiAJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAicmVs b2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBp cyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICByZWwt PnJfb2Zmc2V0LCBtb2QtPm1pbl9hZGRyLCBtb2QtPm1pbl9hZGRyICsgbW9kLT5zeik7CiAKLSAg ICAgIGFkZHIgPSAoZ3J1Yl9hZGRyX3QpIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQ7CisgICAg ICBhZGRyID0gKGdydWJfYWRkcl90KSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNl dCAtIG1vZC0+bWluX2FkZHIpOwogICAgICAgc3ltID0gKEVsZl9TeW0gKikgKChjaGFyICopIG1v ZC0+c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7 CiAKQEAgLTk0LDI1ICsxMTAsMjggQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdy dWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJICAgIGdydWJfaWE2NF9hZGRfdmFsdWVfdG9fc2xv dF8yMGIgKGFkZHIsIG5vZmYpOwogCSAgfQogCSAgYnJlYWs7Ci0JY2FzZSBSX0lBNjRfU0VHUkVM NjRMU0I6Ci0JICAqKGdydWJfdWludDY0X3QgKikgYWRkciArPSB2YWx1ZSAtIChncnViX2FkZHJf dCkgc2VnLT5hZGRyOworCWNhc2UgUl9JQTY0X0lQTFRMU0I6CisJICBncnViX21lbWNweSgodm9p ZCAqKSBhZGRyLCAodm9pZCAqKSB2YWx1ZSwgMTYpOwogCSAgYnJlYWs7CiAJY2FzZSBSX0lBNjRf RlBUUjY0TFNCOgogCWNhc2UgUl9JQTY0X0RJUjY0TFNCOgotCSAgKihncnViX3VpbnQ2NF90ICop IGFkZHIgKz0gdmFsdWU7CisJICAqKGdydWJfdWludDY0X3QgKikgYWRkciA9IHZhbHVlOworCSAg YnJlYWs7CisJY2FzZSBSX0lBNjRfUkVMNjRMU0I6CisJICAqKGdydWJfdWludDY0X3QgKikgYWRk ciA9IChncnViX2FkZHJfdCkgbW9kLT5iYXNlIC0gbW9kLT5taW5fYWRkciArIHJlbC0+cl9hZGRl bmQ7CiAJICBicmVhazsKIAljYXNlIFJfSUE2NF9QQ1JFTDY0TFNCOgogCSAgKihncnViX3VpbnQ2 NF90ICopIGFkZHIgKz0gdmFsdWUgLSBhZGRyOwogCSAgYnJlYWs7CiAJY2FzZSBSX0lBNjRfR1BS RUw2NEk6Ci0JICBncnViX2lhNjRfc2V0X2ltbXU2NCAoYWRkciwgdmFsdWUgLSAoZ3J1Yl9hZGRy X3QpIG1vZC0+YmFzZSk7CisJICBncnViX2lhNjRfc2V0X2ltbXU2NCAoYWRkciwgdmFsdWUgLSBn cCk7CiAJICBicmVhazsKIAljYXNlIFJfSUE2NF9HUFJFTDIyOgotCSAgaWYgKCh2YWx1ZSAtIChn cnViX2FkZHJfdCkgbW9kLT5iYXNlKSAmIH5NQVNLMjApCisJICBpZiAoKHZhbHVlIC0gZ3ApICYg fk1BU0syMCkKIAkgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCiAJ CQkgICAgICAgImdwcmVsIG9mZnNldCB0b28gYmlnICglbHgpIiwKLQkJCSAgICAgICB2YWx1ZSAt IChncnViX2FkZHJfdCkgbW9kLT5iYXNlKTsKLQkgIGdydWJfaWE2NF9hZGRfdmFsdWVfdG9fc2xv dF8yMSAoYWRkciwgdmFsdWUgLSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSk7CisJCQkgICAgICAg dmFsdWUgLSBncCk7CisJICBncnViX2lhNjRfYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKGFkZHIsIHZh bHVlIC0gZ3ApOwogCSAgYnJlYWs7CiAKIAljYXNlIFJfSUE2NF9MVE9GRjIyWDoKQEAgLTEyNCwx MSArMTQzLDExIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9k LCB2b2lkICplaGRyLAogCSAgewogCSAgICBncnViX3VpbnQ2NF90ICpncHB0ciA9IG1vZC0+Z290 cHRyOwogCSAgICAqZ3BwdHIgPSB2YWx1ZTsKLQkgICAgaWYgKCgoZ3J1Yl9hZGRyX3QpIGdwcHRy IC0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2UpICYgfk1BU0syMCkKKwkgICAgaWYgKCgoZ3J1Yl9h ZGRyX3QpIGdwcHRyIC0gZ3ApICYgfk1BU0syMCkKIAkgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQkFEX01PRFVMRSwKIAkJCQkgImdwcmVsIG9mZnNldCB0b28gYmlnICglbHgpIiwK LQkJCQkgKGdydWJfYWRkcl90KSBncHB0ciAtIChncnViX2FkZHJfdCkgbW9kLT5iYXNlKTsKLQkg ICAgZ3J1Yl9pYTY0X2FkZF92YWx1ZV90b19zbG90XzIxIChhZGRyLCAoZ3J1Yl9hZGRyX3QpIGdw cHRyIC0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2UpOworCQkJCSAoZ3J1Yl9hZGRyX3QpIGdwcHRy IC0gZ3ApOworCSAgICBncnViX2lhNjRfYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKGFkZHIsIChncnVi X2FkZHJfdCkgZ3BwdHIgLSBncCk7CiAJICAgIG1vZC0+Z290cHRyID0gZ3BwdHIgKyAxOwogCSAg ICBicmVhazsKIAkgIH0KZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2xvb25nYXJjaDY0L2Rs LmMgYi9ncnViLWNvcmUva2Vybi9sb29uZ2FyY2g2NC9kbC5jCmluZGV4IDdmOTIzYjQxNS4uNjcw Y2E4ODdlIDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9sb29uZ2FyY2g2NC9kbC5jCisrKyBi L2dydWItY29yZS9rZXJuL2xvb25nYXJjaDY0L2RsLmMKQEAgLTQ2LDcgKzQ2LDcgQEAgZ3J1Yl9h cmNoX2RsX2NoZWNrX2hlYWRlciAodm9pZCAqZWhkcikKICAqLwogZ3J1Yl9lcnJfdAogZ3J1Yl9h cmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkg ICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZykKKwkJCSAgICAgICBFbGZf U2hkciAqcykKIHsKICAgRWxmX1JlbCAqcmVsLCAqbWF4OwogICBzdHJ1Y3QgZ3J1Yl9sb29uZ2Fy Y2g2NF9zdGFjayBzdGFjazsKQEAgLTYxLDkgKzYxLDEwIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0 ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgdm9pZCAqcGxhY2U7 CiAgICAgICBncnViX3VpbnQ2NF90IHN5bV9hZGRyOwogCi0gICAgICBpZiAocmVsLT5yX29mZnNl dCA+PSBzZWctPnNpemUpCisgICAgICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3ogPD0gcmVs LT5yX29mZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29mZnNldCkKIAlyZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0 c2lkZSB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNl Z21lbnQ6ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2Qt Pm1pbl9hZGRyLCBtb2QtPm1pbl9hZGRyICsgbW9kLT5zeik7CiAKICAgICAgIHN5bSA9IChFbGZf U3ltICopICgoY2hhciopIG1vZC0+c3ltdGFiCiAJCQkgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9T WU0gKHJlbC0+cl9pbmZvKSk7CkBAIC03MiwxMCArNzMsMTQgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9j YXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBpZiAocy0+c2hf dHlwZSA9PSBTSFRfUkVMQSkKIAlzeW1fYWRkciArPSAoKEVsZl9SZWxhICopIHJlbCktPnJfYWRk ZW5kOwogCi0gICAgICBwbGFjZSA9ICh2b2lkICopICgoZ3J1Yl9hZGRyX3QpIHNlZy0+YWRkciAr IHJlbC0+cl9vZmZzZXQpOworICAgICAgcGxhY2UgPSAodm9pZCAqKSAoKGNoYXIgKikgbW9kLT5i YXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogCiAgICAgICBzd2l0Y2ggKEVM Rl9SX1RZUEUgKHJlbC0+cl9pbmZvKSkKIAl7CisJY2FzZSBSX0xBUkNIX0pVTVBfU0xPVDoKKwkg ICooZ3J1Yl91aW50NjRfdCAqKXBsYWNlID0gc3ltX2FkZHI7CisJICBicmVhazsKKwogCWNhc2Ug Ul9MQVJDSF82NDoKIAkgIHsKIAkgICAgZ3J1Yl91aW50NjRfdCAqYWJzX3BsYWNlID0gcGxhY2U7 CkBAIC04Myw5ICs4OCwxNCBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9k bF90IG1vZCwgdm9pZCAqZWhkciwKIAkgICAgZ3J1Yl9kcHJpbnRmICgiZGwiLCAicmVsb2NfYWJz NjQgJXAgPT4gMHglMDE2bGx4LCAlcFxuIiwKIAkJCSAgcGxhY2UsICh1bnNpZ25lZCBsb25nIGxv bmcpIHN5bV9hZGRyLCBhYnNfcGxhY2UpOwogCi0JICAgICphYnNfcGxhY2UgKz0gKGdydWJfdWlu dDY0X3QpIHN5bV9hZGRyOworCSAgICAqYWJzX3BsYWNlID0gKGdydWJfdWludDY0X3QpIHN5bV9h ZGRyOwogCSAgfQogCSAgYnJlYWs7CisJY2FzZSBSX0xBUkNIX1JFTEFUSVZFOgorCSAgKihncnVi X3VpbnQ2NF90ICopcGxhY2UgPSAoZ3J1Yl9hZGRyX3QpIG1vZC0+YmFzZSAtIG1vZC0+bWluX2Fk ZHI7CisJICBpZiAocy0+c2hfdHlwZSA9PSBTSFRfUkVMQSkKKwkgICAgKihncnViX3VpbnQ2NF90 ICopcGxhY2UgKz0gKChFbGZfUmVsYSAqKSByZWwpLT5yX2FkZGVuZDsKKwkgIGJyZWFrOwogCWNh c2UgUl9MQVJDSF9NQVJLX0xBOgogCSAgYnJlYWs7CiAJY2FzZSBSX0xBUkNIX1NPUF9QVVNIX1BD UkVMOgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9kbC5jIGIvZ3J1Yi1jb3JlL2tl cm4vbWlwcy9kbC5jCmluZGV4IDViMDJmOTdmYy4uY2RhNDBmZDA3IDEwMDY0NAotLS0gYS9ncnVi LWNvcmUva2Vybi9taXBzL2RsLmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vbWlwcy9kbC5jCkBAIC0y OSw2ICsyOSw1NCBAQAogc3RhdGljIGNoYXIgX19nbnVfbG9jYWxfZ3BfZHVtbXk7CiBzdGF0aWMg Y2hhciBfZ3BfZGlzcF9kdW1teTsKIAorCit2b2lkCitncnViX2FyY2hfZGxfcGFyc2VfZHluYW1p YyAoZ3J1Yl9kbF90IG1vZCwgRWxmX0R5biAqZHluLCBncnViX3NpemVfdCBzeikKK3sKKyAgdW5z aWduZWQgaTsKKyAgZm9yIChpID0gMDsgaSA8IHN6IC8gc2l6ZW9mKGR5blswXSk7IGkrKykKKyAg ICBzd2l0Y2ggKGR5bltpXS5kX3RhZykKKyAgICAgIHsKKyAgICAgIGNhc2UgRFRfUExUR09UOgor CW1vZC0+cGx0Z290ID0gZHluW2ldLmRfdW4uZF9wdHI7CisJYnJlYWs7CisgICAgICBjYXNlIERU X01JUFNfR09UU1lNOgorCW1vZC0+Z290c3ltID0gZHluW2ldLmRfdW4uZF92YWw7CisJYnJlYWs7 CisgICAgICBjYXNlIERUX01JUFNfU1lNVEFCTk86CisJbW9kLT5zeW10YWJubyA9IGR5bltpXS5k X3VuLmRfdmFsOworCWJyZWFrOworICAgICAgY2FzZSBEVF9NSVBTX0xPQ0FMX0dPVE5POgorCW1v ZC0+bG9jYWxfZ290bm8gPSBkeW5baV0uZF91bi5kX3ZhbDsKKwlicmVhazsKKyAgICAgIGNhc2Ug RFRfTlVMTDoKKwlyZXR1cm47CisgICAgICB9Cit9CisKK2dydWJfZXJyX3QKK2dydWJfYXJjaF9k bF9yZWxvY2F0ZV9wbHRnb3QgKGdydWJfZGxfdCBtb2QpCit7CisgIGdydWJfdWludDMyX3QgaSA9 IDA7CisgIGdydWJfdWludDMyX3QgKnBsdGdvdCA9IChncnViX3VpbnQzMl90ICopICh2b2lkICop ICgoY2hhciAqKSBtb2QtPmJhc2UgKyAobW9kLT5wbHRnb3QgLSBtb2QtPm1pbl9hZGRyKSk7CisK KyAgZm9yIChpID0gMDsgaSA8IG1vZC0+bG9jYWxfZ290bm87IGkrKykKKyAgICB7CisgICAgICBw bHRnb3RbaV0gKz0gKGdydWJfYWRkcl90KW1vZC0+YmFzZSAtIG1vZC0+bWluX2FkZHI7CisgICAg ICBncnViX2RwcmludGYoImRsIiwgIkxvY2F0aW5nIGxvY2FsICVwWyV4XSB0byAleFxuIiwgJnBs dGdvdFtpXSwgbW9kLT5wbHRnb3QgKyAoaSkgKiA0LCBwbHRnb3RbaV0pOworICAgIH0KKyAgZm9y IChpID0gMDsgaSA8IG1vZC0+c3ltdGFibm8gLSBtb2QtPmdvdHN5bTsgaSsrKQorICAgIHsKKyAg ICAgIEVsZl9TeW0gKnN5bTsKKyAgICAgIHN5bSA9IChFbGZfU3ltICopICh2b2lkICopICgoY2hh ciAqKSBtb2QtPnN5bXRhYgorCQkJCSAgKyBtb2QtPnN5bXNpemUgKiAoaSArIG1vZC0+Z290c3lt KSk7CisgICAgICBwbHRnb3RbaSttb2QtPmxvY2FsX2dvdG5vXSA9IHN5bS0+c3RfdmFsdWU7Cisg ICAgICBncnViX2RwcmludGYoImRsIiwgIkxvY2F0aW5nICVwWyV4XSB0byAleFxuIiwgJnBsdGdv dFtpK21vZC0+bG9jYWxfZ290bm9dLCBtb2QtPnBsdGdvdCArIChpK21vZC0+bG9jYWxfZ290bm8p ICogNCwgc3ltLT5zdF92YWx1ZSk7CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOwor fQorCiAvKiBDaGVjayBpZiBFSERSIGlzIGEgdmFsaWQgRUxGIGhlYWRlci4gICovCiBncnViX2Vy cl90CiBncnViX2FyY2hfZGxfY2hlY2tfaGVhZGVyICh2b2lkICplaGRyKQpAQCAtOTYsOCArMTQ0 LDcgQEAgZ3J1Yl9hcmNoX2RsX2dldF90cmFtcF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAqZWhkciwg Z3J1Yl9zaXplX3QgKnRyYW1wLAogCiAvKiBSZWxvY2F0ZSBzeW1ib2xzLiAgKi8KIGdydWJfZXJy X3QKLWdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICpl aGRyLAotCQkJICAgICAgIEVsZl9TaGRyICpzLCBncnViX2RsX3NlZ21lbnRfdCBzZWcpCitncnVi X2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwgRWxm X1NoZHIgKnMpCiB7CiAgIGdydWJfdWludDMyX3QgZ3AwOwogICBFbGZfRWhkciAqZSA9IGVoZHI7 CkBAIC0xMzAsMTEgKzE3NywxNCBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKICAgICAgIEVsZl9TeW0gKnN5bTsKICAgICAgIGdydWJf dWludDMyX3Qgc3ltX3ZhbHVlOwogCi0gICAgICBpZiAoc2VnLT5zaXplIDwgcmVsLT5yX29mZnNl dCkKLQlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxv YyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50Iik7CisgICAgICBpZiAoRUxGX1JfVFlQRSAo cmVsLT5yX2luZm8pID09IFJfTUlQU19OT05FKQorCWNvbnRpbnVlOwogCi0gICAgICBhZGRyID0g KGdydWJfdWludDhfdCAqKSAoKGNoYXIgKikgc2VnLT5hZGRyICsgcmVsLT5yX29mZnNldCk7Cisg ICAgICBpZiAobW9kLT5taW5fYWRkciArIG1vZC0+c3ogPD0gcmVsLT5yX29mZnNldCB8fCBtb2Qt Pm1pbl9hZGRyID4gcmVsLT5yX29mZnNldCkKKwlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX01PRFVMRSwKKwkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50OiAl eCBub3QgaW4gWyV4Li4leF0iLAorCQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5fYWRkciwg bW9kLT5taW5fYWRkciArIG1vZC0+c3opOworICAgICAgYWRkciA9ICh2b2lkICopICgoY2hhciAq KSBtb2QtPmJhc2UgKyByZWwtPnJfb2Zmc2V0IC0gbW9kLT5taW5fYWRkcik7CiAgICAgICBzeW0g PSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgbW9kLT5zeW10YWIKIAkJCSArIG1vZC0+c3ltc2l6ZSAq IEVMRl9SX1NZTSAocmVsLT5yX2luZm8pKTsKICAgICAgIHN5bV92YWx1ZSA9IHN5bS0+c3RfdmFs dWU7CkBAIC0xNzQsNyArMjI0LDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdy dWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJCSAgJiYgRUxGX1JfVFlQRSAocmVsMi0+cl9pbmZv KSA9PSBSX01JUFNfTE8xNikKIAkJewogCQkgIHZhbHVlICs9ICooZ3J1Yl9pbnQxNl90ICopCi0J CSAgICAoKGNoYXIgKikgc2VnLT5hZGRyICsgcmVsMi0+cl9vZmZzZXQKKwkJICAgICgoKGNoYXIg KikgbW9kLT5iYXNlICsgcmVsMi0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKQogI2lmZGVmIEdS VUJfQ1BVX1dPUkRTX0JJR0VORElBTgogCQkgICAgICsgMgogI2VuZGlmCkBAIC0xOTAsNiArMjQw LDE4IEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lk ICplaGRyLAogI2VuZGlmCiAJICAqKGdydWJfdWludDE2X3QgKikgYWRkciArPSBzeW1fdmFsdWUg JiAweGZmZmY7CiAJICBicmVhazsKKwljYXNlIFJfTUlQU19SRUwzMjoKKwkgIGlmIChFTEZfUl9T WU0gKHJlbC0+cl9pbmZvKSA9PSAwIHx8IEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pID09IFNU VF9TRUNUSU9OKQorCSAgICB7CisJICAgICAgKihncnViX3VpbnQzMl90ICopIGFkZHIgKz0gKGdy dWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyOworCSAgICAgIGlmIChzLT5zaF90 eXBlID09IFNIVF9SRUxBKQorCQkqKGdydWJfdWludDMyX3QgKikgYWRkciArPSAoKEVsZl9SZWxh ICopIHJlbCktPnJfYWRkZW5kOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAqKGdy dWJfdWludDMyX3QgKikgYWRkciA9IChncnViX2FkZHJfdCkgc3ltX3ZhbHVlOworCSAgICB9CisJ ICBicmVhazsKIAljYXNlIFJfTUlQU18zMjoKIAkgICooZ3J1Yl91aW50MzJfdCAqKSBhZGRyICs9 IHN5bV92YWx1ZTsKIAkgIGJyZWFrOwpAQCAtMjI2LDcgKzI4OCw3IEBAIGdydWJfYXJjaF9kbF9y ZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogCQkgICAgJiYgRUxG X1JfVFlQRSAocmVsMi0+cl9pbmZvKSA9PSBSX01JUFNfTE8xNikKIAkJICB7CiAJCSAgICBzeW1f dmFsdWUgKz0gKihncnViX2ludDE2X3QgKikKLQkJICAgICAgKChjaGFyICopIHNlZy0+YWRkciAr IHJlbDItPnJfb2Zmc2V0CisJCSAgICAgICgoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsMi0+cl9v ZmZzZXQgLSBtb2QtPm1pbl9hZGRyKQogI2lmZGVmIEdSVUJfQ1BVX1dPUkRTX0JJR0VORElBTgog CQkgICAgICAgKyAyCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3Bvd2VycGMv ZGwuYyBiL2dydWItY29yZS9rZXJuL3Bvd2VycGMvZGwuYwppbmRleCA3YjY0MThlYWIuLjAzY2Nh OTNmMCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9kbC5jCisrKyBiL2dydWIt Y29yZS9rZXJuL3Bvd2VycGMvZGwuYwpAQCAtOTIsOCArOTIsNyBAQCBncnViX2FyY2hfZGxfZ2V0 X3RyYW1wX2dvdF9zaXplIChjb25zdCB2b2lkICplaGRyLCBncnViX3NpemVfdCAqdHJhbXAsCiAK IC8qIFJlbG9jYXRlIHN5bWJvbHMuICAqLwogZ3J1Yl9lcnJfdAotZ3J1Yl9hcmNoX2RsX3JlbG9j YXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCi0JCQkgICAgICAgRWxmX1No ZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZykKK2dydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1i b2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLCBFbGZfU2hkciAqcykKIHsKICAgRWxmX1Jl bGEgKnJlbCwgKm1heDsKIApAQCAtMTA2LDExICsxMDUsMTIgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9j YXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAgICAgICBFbGZfU3ltICpz eW07CiAgICAgICBncnViX3VpbnQzMl90IHZhbHVlOwogCi0gICAgICBpZiAoc2VnLT5zaXplIDwg cmVsLT5yX29mZnNldCkKKyAgICAgIGlmIChtb2QtPm1pbl9hZGRyICsgbW9kLT5zeiA8PSByZWwt PnJfb2Zmc2V0IHx8IG1vZC0+bWluX2FkZHIgPiByZWwtPnJfb2Zmc2V0KQogCXJldHVybiBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLAotCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQg b2YgdGhlIHNlZ21lbnQiKTsKKwkJCSAgICJyZWxvYyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdt ZW50OiAleCBub3QgaW4gWyV4Li4leF0iLAorCQkJICAgcmVsLT5yX29mZnNldCwgbW9kLT5taW5f YWRkciwgbW9kLT5taW5fYWRkciArIG1vZC0+c3opOwogCi0gICAgICBhZGRyID0gKEVsZl9Xb3Jk ICopICgoY2hhciAqKSBzZWctPmFkZHIgKyByZWwtPnJfb2Zmc2V0KTsKKyAgICAgIGFkZHIgPSAo RWxmX1dvcmQgKikgKChjaGFyICopIG1vZC0+YmFzZSArIHJlbC0+cl9vZmZzZXQgLSBtb2QtPm1p bl9hZGRyKTsKICAgICAgIHN5bSA9IChFbGZfU3ltICopICgoY2hhciAqKSBtb2QtPnN5bXRhYgog CQkJICsgbW9kLT5zeW1zaXplICogRUxGX1JfU1lNIChyZWwtPnJfaW5mbykpOwogCkBAIC0xNTAs MTAgKzE1MCwxNSBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1v ZCwgdm9pZCAqZWhkciwKIAkgICooRWxmX0hhbGYgKikgYWRkciA9ICh2YWx1ZSArIDB4ODAwMCkg Pj4gMTY7CiAJICBicmVhazsKIAorCWNhc2UgR1JVQl9FTEZfUl9QUENfSk1QX1NMT1Q6CiAJY2Fz ZSBHUlVCX0VMRl9SX1BQQ19BRERSMzI6CiAJICAqYWRkciA9IHZhbHVlOwogCSAgYnJlYWs7CiAK KwljYXNlIEdSVUJfRUxGX1JfUFBDX1JFTEFUSVZFOgorCSAgKmFkZHIgKz0gKGdydWJfYWRkcl90 KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9hZGRyICsgcmVsLT5yX2FkZGVuZDsKKwkgIGJyZWFrOwor CiAJY2FzZSBHUlVCX0VMRl9SX1BQQ19SRUwzMjoKIAkgICphZGRyID0gdmFsdWUgLSAoRWxmX1dv cmQpIGFkZHI7CiAJICBicmVhazsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3Jpc2N2L2Rs LmMgYi9ncnViLWNvcmUva2Vybi9yaXNjdi9kbC5jCmluZGV4IDg5NjY1M2JiNC4uNWIzNDNmMzQy IDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9yaXNjdi9kbC5jCisrKyBiL2dydWItY29yZS9r ZXJuL3Jpc2N2L2RsLmMKQEAgLTU0LDcgKzU0LDcgQEAgZ3J1Yl9hcmNoX2RsX2NoZWNrX2hlYWRl ciAodm9pZCAqZWhkcikKIC8qIFJlbG9jYXRlIHN5bWJvbHMuICovCiBncnViX2Vycl90CiBncnVi X2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKLQkJ CSAgICAgICBFbGZfU2hkciAqcywgZ3J1Yl9kbF9zZWdtZW50X3Qgc2VnKQorCQkJICAgICAgIEVs Zl9TaGRyICpzKQogewogICBFbGZfUmVsICpyZWwsICptYXg7CiAKQEAgLTY3LDkgKzY3LDExIEBA IGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9zeW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRy LAogICAgICAgdm9pZCAqcGxhY2U7CiAgICAgICBncnViX3NpemVfdCBzeW1fYWRkcjsKIAotICAg ICAgaWYgKHJlbC0+cl9vZmZzZXQgPj0gc2VnLT5zaXplKQorICAgICAgaWYgKG1vZC0+bWluX2Fk ZHIgKyBtb2QtPnN6IDw9IHJlbC0+cl9vZmZzZXQgfHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9v ZmZzZXQpCiAJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAi cmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudCIpOworCQkJICAgInJlbG9jIG9mZnNl dCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICVseCBub3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICAo dW5zaWduZWQgbG9uZykgcmVsLT5yX29mZnNldCwgKHVuc2lnbmVkIGxvbmcpIG1vZC0+bWluX2Fk ZHIsCisJCQkgICAodW5zaWduZWQgbG9uZykgbW9kLT5taW5fYWRkciArIG1vZC0+c3opOwogCiAg ICAgICBzeW0gPSAoRWxmX1N5bSAqKSAoKGNoYXIgKikgbW9kLT5zeW10YWIKIAkJCSArIG1vZC0+ c3ltc2l6ZSAqIEVMRl9SX1NZTSAocmVsLT5yX2luZm8pKTsKQEAgLTc4LDcgKzgwLDcgQEAgZ3J1 Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAg ICAgICBpZiAocy0+c2hfdHlwZSA9PSBTSFRfUkVMQSkKIAlzeW1fYWRkciArPSAoKEVsZl9SZWxh ICopIHJlbCktPnJfYWRkZW5kOwogCi0gICAgICBwbGFjZSA9ICh2b2lkICopICgoZ3J1Yl9hZGRy X3QpIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgcGxhY2UgPSAodm9pZCAqKSAo KGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIpOwogCiAg ICAgICBzd2l0Y2ggKEVMRl9SX1RZUEUgKHJlbC0+cl9pbmZvKSkKIAl7CkBAIC0yNzAsNyArMjcy LDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQg KmVoZHIsCiAKIAkJcmVsMl9vZmZzZXQgPSByZWwyLT5yX29mZnNldDsKIAkJcmVsMl9pbmZvID0g cmVsMi0+cl9pbmZvOwotCQlyZWwyX2xvYyA9IChncnViX2FkZHJfdCkgc2VnLT5hZGRyICsgcmVs Ml9vZmZzZXQ7CisJCXJlbDJfbG9jID0gKEVsZl9BZGRyKSAoKGNoYXIgKikgbW9kLT5iYXNlICsg cmVsMl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKTsKIAogCQlpZiAoRUxGX1JfVFlQRSAocmVsMl9p bmZvKSA9PSBSX1JJU0NWX1BDUkVMX0hJMjAKIAkJICAgICYmIHJlbDJfbG9jID09IHN5bV9hZGRy KQpAQCAtMzMwLDYgKzMzMiwxNyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAogCWNhc2UgUl9SSVNDVl9SRUxBWDoKIAkgIGJyZWFr OworCisJY2FzZSBSX1JJU0NWX0pVTVBfU0xPVDoKKwkgICooZ3J1Yl9zaXplX3QgKilwbGFjZSA9 IHN5bV9hZGRyOworCSAgYnJlYWs7CisKKwljYXNlIFJfUklTQ1ZfUkVMQVRJVkU6CisJICAqKGdy dWJfc2l6ZV90ICopcGxhY2UgKz0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9h ZGRyOworCSAgaWYgKHMtPnNoX3R5cGUgPT0gU0hUX1JFTEEpCisJICAgICooZ3J1Yl9zaXplX3Qg KilwbGFjZSArPSAoKEVsZl9SZWxhICopIHJlbCktPnJfYWRkZW5kOworCSAgYnJlYWs7CisKIAlk ZWZhdWx0OgogCSAgewogCSAgICBjaGFyIHJlbF9pbmZvWzE3XTsgLyogbG9nMTYoMl42NCkgPSAx NiwgcGx1cyBOVUwuICovCmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9zcGFyYzY0L2RsLmMg Yi9ncnViLWNvcmUva2Vybi9zcGFyYzY0L2RsLmMKaW5kZXggZjNkOTYwMTg2Li42NTcxZWRhZWEg MTAwNjQ0Ci0tLSBhL2dydWItY29yZS9rZXJuL3NwYXJjNjQvZGwuYworKysgYi9ncnViLWNvcmUv a2Vybi9zcGFyYzY0L2RsLmMKQEAgLTk3LDggKzk3LDcgQEAgZ3J1Yl9hcmNoX2RsX2dldF90cmFt cF9nb3Rfc2l6ZSAoY29uc3Qgdm9pZCAqZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAogCiAvKiBS ZWxvY2F0ZSBzeW1ib2xzLiAgKi8KIGdydWJfZXJyX3QKLWdydWJfYXJjaF9kbF9yZWxvY2F0ZV9z eW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAotCQkJICAgICAgIEVsZl9TaGRyICpz LCBncnViX2RsX3NlZ21lbnRfdCBzZWcpCitncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAo Z3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwgRWxmX1NoZHIgKnMpCiB7CiAgIEVsZl9SZWxhICpy ZWwsICptYXg7CiAKQEAgLTExMSwxNyArMTEwLDIxIEBAIGdydWJfYXJjaF9kbF9yZWxvY2F0ZV9z eW1ib2xzIChncnViX2RsX3QgbW9kLCB2b2lkICplaGRyLAogICAgICAgRWxmX1N5bSAqc3ltOwog ICAgICAgRWxmX0FkZHIgdmFsdWU7CiAKLSAgICAgIGlmIChzZWctPnNpemUgPCByZWwtPnJfb2Zm c2V0KQorICAgICAgaWYgKG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6IDw9IHJlbC0+cl9vZmZzZXQg fHwgbW9kLT5taW5fYWRkciA+IHJlbC0+cl9vZmZzZXQpCiAJcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9NT0RVTEUsCi0JCQkgICAicmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2Vn bWVudCIpOworCQkJICAgInJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQ6ICVseCBu b3QgaW4gWyVseC4uJWx4XSIsCisJCQkgICByZWwtPnJfb2Zmc2V0LCBtb2QtPm1pbl9hZGRyLCBt b2QtPm1pbl9hZGRyICsgbW9kLT5zeik7CiAKLSAgICAgIGFkZHIgPSAoRWxmX1dvcmQgKikgKChj aGFyICopIHNlZy0+YWRkciArIHJlbC0+cl9vZmZzZXQpOworICAgICAgYWRkciA9IChFbGZfV29y ZCAqKSAoKGNoYXIgKikgbW9kLT5iYXNlICsgcmVsLT5yX29mZnNldCAtIG1vZC0+bWluX2FkZHIp OwogICAgICAgc3ltID0gKEVsZl9TeW0gKikgKChjaGFyICopIG1vZC0+c3ltdGFiCiAJCQkgKyBt b2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZvKSk7CiAKICAgICAgIHZhbHVlID0g c3ltLT5zdF92YWx1ZSArIHJlbC0+cl9hZGRlbmQ7CiAgICAgICBzd2l0Y2ggKEVMRl9SX1RZUEUg KHJlbC0+cl9pbmZvKSAmIDB4ZmYpCiAJeworCWNhc2UgUl9TUEFSQ19SRUxBVElWRToKKwkgICoo RWxmX1h3b3JkICopIGFkZHIgKz0gKGdydWJfYWRkcl90KSBtb2QtPmJhc2UgLSBtb2QtPm1pbl9h ZGRyICsgcmVsLT5yX2FkZGVuZDsKKwkgIGJyZWFrOwogCWNhc2UgUl9TUEFSQ18zMjogLyogMyBW LXdvcmQzMiAqLwogCSAgaWYgKHZhbHVlICYgMHhGRkZGRkZGRjAwMDAwMDAwKQogCSAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKQEAgLTE2Niw2ICsxNjksOCBAQCBn cnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwK IAljYXNlIFJfU1BBUkNfTE8xMDogLyogMTIgVC1zaW1tMTMgKi8KIAkgICphZGRyID0gKCphZGRy ICYgMHhGRkZGRkMwMCkgfCAodmFsdWUgJiAweDNGRik7CiAJICBicmVhazsKKwljYXNlIFJfU1BB UkNfSk1QX1NMT1Q6CisJY2FzZSBSX1NQQVJDX0dMT0JfREFUOgogCWNhc2UgUl9TUEFSQ182NDog LyogMzIgVi14d29yZHM2NCAqLwogCSAgKihFbGZfWHdvcmQgKikgYWRkciA9IHZhbHVlOwogCSAg YnJlYWs7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYyBiL2dydWItY29y ZS9rZXJuL3g4Nl82NC9kbC5jCmluZGV4IGU1YThiZGNmNC4uOTk3NmJmNDNkIDEwMDY0NAotLS0g YS9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYworKysgYi9ncnViLWNvcmUva2Vybi94ODZfNjQv ZGwuYwpAQCAtNDEsNyArNDEsNyBAQCBncnViX2FyY2hfZGxfY2hlY2tfaGVhZGVyICh2b2lkICpl aGRyKQogLyogUmVsb2NhdGUgc3ltYm9scy4gICovCiBncnViX2Vycl90CiBncnViX2FyY2hfZGxf cmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKLQkJCSAgICAgICBF bGZfU2hkciAqcywgZ3J1Yl9kbF9zZWdtZW50X3Qgc2VnKQorCQkJICAgICAgIEVsZl9TaGRyICpz KQogewogICBFbGY2NF9SZWxhICpyZWwsICptYXg7CiAKQEAgLTU0LDExICs1NCwxMiBAQCBncnVi X2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKICAg ICAgIEVsZjY0X1h3b3JkICphZGRyNjQ7CiAgICAgICBFbGY2NF9TeW0gKnN5bTsKIAotICAgICAg aWYgKHNlZy0+c2l6ZSA8IHJlbC0+cl9vZmZzZXQpCisgICAgICBpZiAobW9kLT5taW5fYWRkciAr IG1vZC0+c3ogPD0gcmVsLT5yX29mZnNldCB8fCBtb2QtPm1pbl9hZGRyID4gcmVsLT5yX29mZnNl dCkKIAlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwKLQkJCSAgICJyZWxv YyBvZmZzZXQgaXMgb3V0IG9mIHRoZSBzZWdtZW50Iik7CisJCQkgICAicmVsb2Mgb2Zmc2V0IGlz IG91dCBvZiB0aGUgc2VnbWVudDogJSIgUFJJeEdSVUJfVUlOVDY0X1QgIiBub3QgaW4gWyUiIFBS SXhHUlVCX1VJTlQ2NF9UICIuLiUiIFBSSXhHUlVCX1VJTlQ2NF9UICJdIiwKKwkJCSAgIHJlbC0+ cl9vZmZzZXQsIG1vZC0+bWluX2FkZHIsIG1vZC0+bWluX2FkZHIgKyBtb2QtPnN6KTsKIAotICAg ICAgYWRkcjMyID0gKEVsZjY0X1dvcmQgKikgKChjaGFyICopIHNlZy0+YWRkciArIHJlbC0+cl9v ZmZzZXQpOworICAgICAgYWRkcjMyID0gKEVsZjY0X1dvcmQgKikgKChjaGFyICopIG1vZC0+YmFz ZSArIHJlbC0+cl9vZmZzZXQgLSBtb2QtPm1pbl9hZGRyKTsKICAgICAgIGFkZHI2NCA9IChFbGY2 NF9Yd29yZCAqKSBhZGRyMzI7CiAgICAgICBzeW0gPSAoRWxmNjRfU3ltICopICgoY2hhciAqKSBt b2QtPnN5bXRhYgogCQkJICAgKyBtb2QtPnN5bXNpemUgKiBFTEZfUl9TWU0gKHJlbC0+cl9pbmZv KSk7CkBAIC02Niw3ICs2NywxMyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1 Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKICAgICAgIHN3aXRjaCAoRUxGX1JfVFlQRSAocmVsLT5y X2luZm8pKQogCXsKIAljYXNlIFJfWDg2XzY0XzY0OgotCSAgKmFkZHI2NCArPSByZWwtPnJfYWRk ZW5kICsgc3ltLT5zdF92YWx1ZTsKKwljYXNlIFJfWDg2XzY0X0dMT0JfREFUOgorCWNhc2UgUl9Y ODZfNjRfSlVNUF9TTE9UOgorCSAgKmFkZHI2NCA9IHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3Zh bHVlOworCSAgYnJlYWs7CisKKwljYXNlIFJfWDg2XzY0X1JFTEFUSVZFOgorCSAgKmFkZHI2NCA9 IChncnViX2FkZHJfdCkgbW9kLT5iYXNlIC0gbW9kLT5taW5fYWRkciArIHJlbC0+cl9hZGRlbmQ7 CiAJICBicmVhazsKIAogCWNhc2UgUl9YODZfNjRfUEMzMjoKQEAgLTc0LDcgKzgxLDcgQEAgZ3J1 Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIsCiAJ ICB7CiAJICAgIGdydWJfaW50NjRfdCB2YWx1ZTsKIAkgICAgdmFsdWUgPSAoKGdydWJfaW50MzJf dCkgKmFkZHIzMikgKyByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZSAtCi0JICAgICAgKEVs ZjY0X1h3b3JkKSAoZ3J1Yl9hZGRyX3QpIHNlZy0+YWRkciAtIHJlbC0+cl9vZmZzZXQ7CisJICAg ICAgKEVsZjY0X1h3b3JkKSAoZ3J1Yl9hZGRyX3QpIGFkZHIzMjsKIAkgICAgaWYgKHZhbHVlICE9 IChncnViX2ludDMyX3QpIHZhbHVlKQogCSAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfTU9EVUxFLCAicmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UiKTsKIAkgICAgKmFkZHIzMiA9 IHZhbHVlOwpAQCAtODQsNyArOTEsNyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAo Z3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKIAljYXNlIFJfWDg2XzY0X1BDNjQ6CiAJICB7CiAJ ICAgICphZGRyNjQgKz0gcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWUgLQotCSAgICAgIChF bGY2NF9Yd29yZCkgKGdydWJfYWRkcl90KSBzZWctPmFkZHIgLSByZWwtPnJfb2Zmc2V0OworCSAg ICAgIChFbGY2NF9Yd29yZCkgKGdydWJfYWRkcl90KSBhZGRyNjQ7CiAJICB9CiAJICBicmVhazsK IApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9iYWNrdHJhY2UuYyBiL2dydWItY29yZS9saWIv YmFja3RyYWNlLmMKaW5kZXggODI1YTg4MDBlLi4yM2Y0ZDE4YWYgMTAwNjQ0Ci0tLSBhL2dydWIt Y29yZS9saWIvYmFja3RyYWNlLmMKKysrIGIvZ3J1Yi1jb3JlL2xpYi9iYWNrdHJhY2UuYwpAQCAt MzMsMTMgKzMzLDEwIEBAIGdydWJfYmFja3RyYWNlX3ByaW50X2FkZHJlc3MgKHZvaWQgKmFkZHIp CiAKICAgRk9SX0RMX01PRFVMRVMgKG1vZCkKICAgewotICAgIGdydWJfZGxfc2VnbWVudF90IHNl Z21lbnQ7Ci0gICAgZm9yIChzZWdtZW50ID0gbW9kLT5zZWdtZW50OyBzZWdtZW50OyBzZWdtZW50 ID0gc2VnbWVudC0+bmV4dCkKLSAgICAgIGlmIChzZWdtZW50LT5hZGRyIDw9IGFkZHIgJiYgKGdy dWJfdWludDhfdCAqKSBzZWdtZW50LT5hZGRyCi0JICArIHNlZ21lbnQtPnNpemUgPiAoZ3J1Yl91 aW50OF90ICopIGFkZHIpCisgICAgaWYgKG1vZC0+YmFzZSA8PSBhZGRyICYmIChncnViX3VpbnQ4 X3QgKikgbW9kLT5iYXNlICsgbW9kLT5zeiA+IChncnViX3VpbnQ4X3QgKikgYWRkcikKIAl7Ci0J ICBncnViX3ByaW50ZiAoIiVzLiV4KyUiIFBSSXhHUlVCX1NJWkUsIG1vZC0+bmFtZSwgc2VnbWVu dC0+c2VjdGlvbiwKLQkJICAgICAgIChncnViX3NpemVfdCkgKChncnViX3VpbnQ4X3QgKikgYWRk ciAtIChncnViX3VpbnQ4X3QgKikgc2VnbWVudC0+YWRkcikpOworCSAgZ3J1Yl9wcmludGYgKCIl c1sweCUiIFBSSXhHUlVCX1NJWkUgIl0iLCBtb2QtPm5hbWUsCisJCSAgICAgICAoZ3J1Yl9zaXpl X3QpIChtb2QtPm1pbl9hZGRyICsgKChncnViX3VpbnQ4X3QgKikgYWRkciAtIChncnViX3VpbnQ4 X3QgKikgbW9kLT5iYXNlKSkpOwogCSAgcmV0dXJuOwogCX0KICAgfQpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9ncnViL2RsLmggYi9pbmNsdWRlL2dydWIvZGwuaAppbmRleCA4NDUwOWM1YzEuLmIzMGU5 NTA2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL2RsLmgKKysrIGIvaW5jbHVkZS9ncnViL2Rs LmgKQEAgLTQxLDEzICs0MSwxMyBAQAogI2lmICFkZWZpbmVkIChHUlVCX1VUSUwpICYmICFkZWZp bmVkIChHUlVCX01BQ0hJTkVfRU1VKSAmJiAhZGVmaW5lZCAoR1JVQl9LRVJORUwpCiAKICNkZWZp bmUgR1JVQl9NT0RfSU5JVChuYW1lKQlcCi1zdGF0aWMgdm9pZCBncnViX21vZF9pbml0IChncnVi X2RsX3QgbW9kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkgX19hdHRyaWJ1dGVfXyAoKHVzZWQp KTsgXAotc3RhdGljIHZvaWQgXAordm9pZCBncnViX21vZF9pbml0IChncnViX2RsX3QgbW9kIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSkgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsgXAordm9pZCBc CiBncnViX21vZF9pbml0IChncnViX2RsX3QgbW9kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkK IAogI2RlZmluZSBHUlVCX01PRF9GSU5JKG5hbWUpCVwKLXN0YXRpYyB2b2lkIGdydWJfbW9kX2Zp bmkgKHZvaWQpIF9fYXR0cmlidXRlX18gKCh1c2VkKSk7IFwKLXN0YXRpYyB2b2lkIFwKK3ZvaWQg Z3J1Yl9tb2RfZmluaSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKTsgXAordm9pZCBcCiBn cnViX21vZF9maW5pICh2b2lkKQogCiAjZWxpZiBkZWZpbmVkIChHUlVCX0tFUk5FTCkKQEAgLTE1 MiwxNSArMTUyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgZ3J1Yl9tb2R1bGVfbmFtZV8jI25hbWVb XSBcCiAKICNpZm5kZWYgQVNNX0ZJTEUKIAotc3RydWN0IGdydWJfZGxfc2VnbWVudAotewotICBz dHJ1Y3QgZ3J1Yl9kbF9zZWdtZW50ICpuZXh0OwotICB2b2lkICphZGRyOwotICBncnViX3NpemVf dCBzaXplOwotICB1bnNpZ25lZCBzZWN0aW9uOwotfTsKLXR5cGVkZWYgc3RydWN0IGdydWJfZGxf c2VnbWVudCAqZ3J1Yl9kbF9zZWdtZW50X3Q7Ci0KIHN0cnVjdCBncnViX2RsOwogCiBzdHJ1Y3Qg Z3J1Yl9kbF9kZXAKQEAgLTE3Nyw3ICsxNjgsNiBAQCBzdHJ1Y3QgZ3J1Yl9kbAogICBncnViX3Vp bnQ2NF90IHJlZl9jb3VudDsKICAgaW50IHBlcnNpc3RlbnQ7CiAgIGdydWJfZGxfZGVwX3QgZGVw OwotICBncnViX2RsX3NlZ21lbnRfdCBzZWdtZW50OwogICBFbGZfU3ltICpzeW10YWI7CiAgIGdy dWJfc2l6ZV90IHN5bXNpemU7CiAgIHZvaWQgKCppbml0KSAoc3RydWN0IGdydWJfZGwgKm1vZCk7 CkBAIC0xOTAsOSArMTgwLDE2IEBAIHN0cnVjdCBncnViX2RsCiAjZW5kaWYKICNpZmRlZiBfX21p cHNfXwogICBncnViX3VpbnQzMl90ICpyZWdpbmZvOworICBncnViX3VpbnQzMl90IGdvdHN5bTsK KyAgZ3J1Yl91aW50MzJfdCBsb2NhbF9nb3RubzsKKyAgZ3J1Yl91aW50MzJfdCBzeW10YWJubzsK KyNlbmRpZgorI2lmIGRlZmluZWQgKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9faWE2NF9fKQorICBn cnViX3NpemVfdCBwbHRnb3Q7CiAjZW5kaWYKICAgdm9pZCAqYmFzZTsKICAgZ3J1Yl9zaXplX3Qg c3o7CisgIGdydWJfYWRkcl90IG1pbl9hZGRyOwogICBzdHJ1Y3QgZ3J1Yl9kbCAqbmV4dDsKIH07 CiAjZW5kaWYKQEAgLTI2MywxMiArMjYwLDE0IEBAIGdydWJfZXJyX3QgZ3J1Yl9hcmNoX2RsX2No ZWNrX2hlYWRlciAodm9pZCAqZWhkcik7CiAjaWZuZGVmIEdSVUJfVVRJTAogZ3J1Yl9lcnJfdAog Z3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdCBtb2QsIHZvaWQgKmVoZHIs Ci0JCQkgICAgICAgRWxmX1NoZHIgKnMsIGdydWJfZGxfc2VnbWVudF90IHNlZyk7CisJCQkgICAg ICAgRWxmX1NoZHIgKnMpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkIChfbWlwcykKICNkZWZpbmUg R1JVQl9MSU5LRVJfSEFWRV9JTklUIDEKIHZvaWQgZ3J1Yl9hcmNoX2RsX2luaXRfbGlua2VyICh2 b2lkKTsKKworZ3J1Yl9lcnJfdCBncnViX2FyY2hfZGxfcmVsb2NhdGVfcGx0Z290IChncnViX2Rs X3QgbW9kKTsKICNlbmRpZgogCiAjZGVmaW5lIEdSVUJfSUE2NF9ETF9UUkFNUF9BTElHTiAxNgpA QCAtMjgxLDYgKzI4MCwxMCBAQCBncnViX2Vycl90CiBncnViX2FybTY0X2RsX2dldF90cmFtcF9n b3Rfc2l6ZSAoY29uc3Qgdm9pZCAqZWhkciwgZ3J1Yl9zaXplX3QgKnRyYW1wLAogCQkJCSAgZ3J1 Yl9zaXplX3QgKmdvdCk7CiAKKyNpZiBkZWZpbmVkIChfX2lhNjRfXykgfHwgZGVmaW5lZCAoX19t aXBzX18pCit2b2lkIGdydWJfYXJjaF9kbF9wYXJzZV9keW5hbWljIChncnViX2RsX3QgbW9kLCBF bGZfRHluICpkeW4sIGdydWJfc2l6ZV90IHN6KTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoX19p YTY0X18pCiAjZGVmaW5lIEdSVUJfQVJDSF9ETF9UUkFNUF9BTElHTiBHUlVCX0lBNjRfRExfVFJB TVBfQUxJR04KICNkZWZpbmUgR1JVQl9BUkNIX0RMX0dPVF9BTElHTiBHUlVCX0lBNjRfRExfR09U X0FMSUdOCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZWxmLmggYi9pbmNsdWRlL2dydWIvZWxm LmgKaW5kZXggYmQzMTNhNzBiLi5mYzkxNDg0NTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9l bGYuaAorKysgYi9pbmNsdWRlL2dydWIvZWxmLmgKQEAgLTI1NDAsNiArMjU0MCw4IEBAIHR5cGVk ZWYgRWxmMzJfQWRkciBFbGYzMl9Db25mbGljdDsKIC8qIExvb25nQXJjaCByZWxvY2F0aW9ucyAq LwogI2RlZmluZSBSX0xBUkNIX05PTkUJCQkgICAgICAwCiAjZGVmaW5lIFJfTEFSQ0hfNjQJCQkg ICAgICAyCisjZGVmaW5lIFJfTEFSQ0hfUkVMQVRJVkUJCSAgICAgIDMKKyNkZWZpbmUgUl9MQVJD SF9KVU1QX1NMT1QJCSAgICAgIDUKICNkZWZpbmUgUl9MQVJDSF9NQVJLX0xBCQkJICAgICAgMjAK ICNkZWZpbmUgUl9MQVJDSF9TT1BfUFVTSF9QQ1JFTAkJICAgICAgMjIKICNkZWZpbmUgUl9MQVJD SF9TT1BfUFVTSF9BQlNPTFVURQkgICAgICAyMwpAQCAtMjU4MSw2ICsyNTgzLDcgQEAgdHlwZWRl ZiBFbGYzMl9BZGRyIEVsZl9BZGRyOwogdHlwZWRlZiBFbGYzMl9OaGRyIEVsZl9OaGRyOwogdHlw ZWRlZiBFbGYzMl9FaGRyIEVsZl9FaGRyOwogdHlwZWRlZiBFbGYzMl9QaGRyIEVsZl9QaGRyOwor dHlwZWRlZiBFbGYzMl9EeW4gRWxmX0R5bjsKIHR5cGVkZWYgRWxmMzJfSGFsZiBFbGZfSGFsZjsK IHR5cGVkZWYgRWxmMzJfT2ZmIEVsZl9PZmY7CiB0eXBlZGVmIEVsZjMyX1JlbCBFbGZfUmVsOwpA QCAtMjYxMSw2ICsyNjE0LDcgQEAgdHlwZWRlZiBFbGY2NF9BZGRyIEVsZl9BZGRyOwogdHlwZWRl ZiBFbGY2NF9OaGRyIEVsZl9OaGRyOwogdHlwZWRlZiBFbGY2NF9FaGRyIEVsZl9FaGRyOwogdHlw ZWRlZiBFbGY2NF9QaGRyIEVsZl9QaGRyOwordHlwZWRlZiBFbGY2NF9EeW4gRWxmX0R5bjsKIHR5 cGVkZWYgRWxmNjRfSGFsZiBFbGZfSGFsZjsKIHR5cGVkZWYgRWxmNjRfT2ZmIEVsZl9PZmY7CiB0 eXBlZGVmIEVsZjY0X1JlbCBFbGZfUmVsOwpkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1raW1hZ2V4 eC5jIGIvdXRpbC9ncnViLW1raW1hZ2V4eC5jCmluZGV4IDQ0ODg2MmIyZS4uOTdlODM2NzFhIDEw MDY0NAotLS0gYS91dGlsL2dydWItbWtpbWFnZXh4LmMKKysrIGIvdXRpbC9ncnViLW1raW1hZ2V4 eC5jCkBAIC0xNDEwLDggKzE0MTAsMTAgQEAgU1VGRklYIChyZWxvY2F0ZV9hZGRycykgKEVsZl9F aGRyICplLCBzdHJ1Y3Qgc2VjdGlvbl9tZXRhZGF0YSAqc21kLAogCQkgICAgIHsKIAkJICAgICAg IGdydWJfdWludDMyX3QgaGkyMCwgbG8xMjsKIAorI2lmIGRlZmluZWQoTUtJTUFHRV9FTEY2NCkK IAkJICAgICAgIGlmIChvZmYgIT0gKGdydWJfaW50MzJfdClvZmYpCiAJCQkgZ3J1Yl91dGlsX2Vy cm9yICgidGFyZ2V0ICVseCBub3QgcmVhY2hhYmxlIGZyb20gcGM9JWx4IiwgKGxvbmcpc3ltX2Fk ZHIsIChsb25nKSgoY2hhciAqKXRhcmdldCAtIChjaGFyICopZSkpOworI2VuZGlmCiAKIAkJICAg ICAgIGhpMjAgPSAob2ZmICsgMHg4MDApICYgMHhmZmZmZjAwMDsKIAkJICAgICAgIGxvMTIgPSAo b2ZmIC0gaGkyMCkgJiAweGZmZjsKZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1tb2R1bGUtdmVyaWZp ZXIuYyBiL3V0aWwvZ3J1Yi1tb2R1bGUtdmVyaWZpZXIuYwppbmRleCA5MWQ5ZThmODguLjgwMmFh ODg5OSAxMDA2NDQKLS0tIGEvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jCisrKyBiL3V0aWwv Z3J1Yi1tb2R1bGUtdmVyaWZpZXIuYwpAQCAtMTAsMTEgKzEwLDE3IEBAIHN0cnVjdCBncnViX21v ZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgIHsgImkzODYiLCA0LCAwLCBFTV8zODYs IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUwsIChpbnRbXSl7CiAgICAgICBSXzM4Nl8z MiwKICAgICAgIFJfMzg2X1BDMzIsCisgICAgICBSXzM4Nl9SRUxBVElWRSwKKyAgICAgIFJfMzg2 X0pNUF9TTE9ULAorICAgICAgUl8zODZfR0xPQl9EQVQsCiAgICAgICAtMQogICAgIH0gfSwKICAg eyAieDg2XzY0IiwgOCwgMCwgRU1fWDg2XzY0LCBHUlVCX01PRFVMRV9WRVJJRllfU1VQUE9SVFNf UkVMQSwgKGludFtdKXsKICAgICAgIFJfWDg2XzY0XzY0LAogICAgICAgUl9YODZfNjRfUEM2NCwK KyAgICAgIFJfWDg2XzY0X1JFTEFUSVZFLAorICAgICAgUl9YODZfNjRfR0xPQl9EQVQsCisgICAg ICBSX1g4Nl82NF9KVU1QX1NMT1QsCiAgICAgICAvKiBSX1g4Nl82NF8zMiwgUl9YODZfNjRfMzJT IGFyZSBzdXBwb3J0ZWQgYnV0IHNob3VsZG4ndCBiZSB1c2VkIGJlY2F1c2Ugb2YgdGhlaXIgbGlt aXRlZCByYW5nZS4gICovCiAgICAgICAtMQogICAgIH0sIChpbnRbXSl7CkBAIC0zMCw2ICszNiw4 IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgICAgICBH UlVCX0VMRl9SX1BQQ19BRERSMzIsCiAgICAgICBHUlVCX0VMRl9SX1BQQ19SRUwzMiwKICAgICAg IEdSVUJfRUxGX1JfUFBDX1BMVFJFTDI0LAorICAgICAgR1JVQl9FTEZfUl9QUENfUkVMQVRJVkUs CisgICAgICBHUlVCX0VMRl9SX1BQQ19KTVBfU0xPVCwKICAgICAgIC0xCiAgICAgfSB9LAogICB7 ICJzcGFyYzY0IiwgOCwgMSwgRU1fU1BBUkNWOSwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRT X1JFTEEsIChpbnRbXSl7CkBAIC00Niw2ICs1NCw5IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJp Zmllcl9hcmNoIGFyY2hzW10gPSB7CiAJIHVzdWFsbHkuICovCiAgICAgICBSX1NQQVJDX0hJMjIs CiAgICAgICBSX1NQQVJDXzMyLAorICAgICAgUl9TUEFSQ19SRUxBVElWRSwKKyAgICAgIFJfU1BB UkNfR0xPQl9EQVQsCisgICAgICBSX1NQQVJDX0pNUF9TTE9ULAogICAgICAgLTEKICAgICB9IH0s CiAgIHsgImlhNjQiLCA4LCAwLCBFTV9JQV82NCwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRT X1JFTEEsIChpbnRbXSl7CkBAIC01Niw3ICs2Nyw2IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJp Zmllcl9hcmNoIGFyY2hzW10gPSB7CiAJCQkgIGZvciBhbnl0aGluZyBlbHNlLCBzbyBhc3N1bWUg dGhhdCBpdCBhbHdheXMgcG9pbnRzIHRvIGEKIAkJCSAgZnVuY3Rpb24uCiAJCSAgICAgICAqLwot ICAgICAgUl9JQTY0X1NFR1JFTDY0TFNCLAogICAgICAgUl9JQTY0X0ZQVFI2NExTQiwKICAgICAg IFJfSUE2NF9ESVI2NExTQiwKICAgICAgIFJfSUE2NF9QQ1JFTDY0TFNCLApAQCAtNjUsMTIgKzc1 LDE2IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hzW10gPSB7CiAgICAg ICBSX0lBNjRfR1BSRUw2NEksCiAgICAgICBSX0lBNjRfTFRPRkZfRlBUUjIyLAogICAgICAgUl9J QTY0X0xEWE1PViwKKyAgICAgIFJfSUE2NF9JUExUTFNCLAorICAgICAgUl9JQTY0X1JFTDY0TFNC LAogICAgICAgLTEKICAgICB9LCAoaW50W10pewogICAgICAgUl9JQTY0X0dQUkVMMjIsCiAgICAg ICAtMQogICAgIH0gfSwKICAgeyAibWlwc2VsIiwgNCwgMCwgRU1fTUlQUywgR1JVQl9NT0RVTEVf VkVSSUZZX1NVUFBPUlRTX1JFTCB8IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUxBLCAo aW50W10peworICAgICAgUl9NSVBTX05PTkUsCisgICAgICBSX01JUFNfUkVMMzIsCiAgICAgICBS X01JUFNfSEkxNiwKICAgICAgIFJfTUlQU19MTzE2LAogICAgICAgUl9NSVBTXzMyLApAQCAtODIs NiArOTYsOCBAQCBzdHJ1Y3QgZ3J1Yl9tb2R1bGVfdmVyaWZpZXJfYXJjaCBhcmNoc1tdID0gewog ICAgICAgLTEKICAgICB9IH0sCiAgIHsgIm1pcHMiLCA0LCAxLCBFTV9NSVBTLCBHUlVCX01PRFVM RV9WRVJJRllfU1VQUE9SVFNfUkVMIHwgR1JVQl9NT0RVTEVfVkVSSUZZX1NVUFBPUlRTX1JFTEEs IChpbnRbXSl7CisgICAgICBSX01JUFNfTk9ORSwKKyAgICAgIFJfTUlQU19SRUwzMiwKICAgICAg IFJfTUlQU19ISTE2LAogICAgICAgUl9NSVBTX0xPMTYsCiAgICAgICBSX01JUFNfMzIsCkBAIC0x MDMsNiArMTE5LDkgQEAgc3RydWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggYXJjaHNbXSA9 IHsKICAgICAgIFJfQVJNX1RITV9NT1ZXX0FCU19OQywKICAgICAgIFJfQVJNX1RITV9NT1ZUX0FC UywKICAgICAgIFJfQVJNX1RITV9KVU1QMTksCisgICAgICBSX0FSTV9SRUxBVElWRSwKKyAgICAg IFJfQVJNX0pVTVBfU0xPVCwKKyAgICAgIFJfQVJNX0dMT0JfREFULAogICAgICAgLTEKICAgICB9 IH0sCiAgIHsgImFybTY0IiwgOCwgMCwgRU1fQUFSQ0g2NCwgR1JVQl9NT0RVTEVfVkVSSUZZX1NV UFBPUlRTX1JFTCB8IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUxBLCAoaW50W10pewpA QCAtMTExLDYgKzEzMCw5IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoIGFyY2hz W10gPSB7CiAgICAgICBSX0FBUkNINjRfSlVNUDI2LAogICAgICAgUl9BQVJDSDY0X0FEUl9HT1Rf UEFHRSwKICAgICAgIFJfQUFSQ0g2NF9MRDY0X0dPVF9MTzEyX05DLAorICAgICAgUl9BQVJDSDY0 X1JFTEFUSVZFLAorICAgICAgUl9BQVJDSDY0X0pVTVBfU0xPVCwKKyAgICAgIFJfQUFSQ0g2NF9H TE9CX0RBVCwKICAgICAgIC0xCiAgICAgfSwgKGludFtdKXsKICAgICAgIFJfQUFSQ0g2NF9BRFJf UFJFTF9QR19ISTIxLApAQCAtMTIyLDYgKzE0NCw4IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJp Zmllcl9hcmNoIGFyY2hzW10gPSB7CiAgIHsgImxvb25nYXJjaDY0IiwgOCwgMCwgRU1fTE9PTkdB UkNILCBHUlVCX01PRFVMRV9WRVJJRllfU1VQUE9SVFNfUkVMIHwgR1JVQl9NT0RVTEVfVkVSSUZZ X1NVUFBPUlRTX1JFTEEsIChpbnRbXSl7CiAgICAgICBSX0xBUkNIX05PTkUsCiAgICAgICBSX0xB UkNIXzY0LAorICAgICAgUl9MQVJDSF9SRUxBVElWRSwKKyAgICAgIFJfTEFSQ0hfSlVNUF9TTE9U LAogICAgICAgUl9MQVJDSF9NQVJLX0xBLAogICAgICAgUl9MQVJDSF9TT1BfUFVTSF9QQ1JFTCwK ICAgICAgIFJfTEFSQ0hfU09QX1BVU0hfQUJTT0xVVEUsCkBAIC0xNzgsNiArMjAyLDggQEAgc3Ry dWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggYXJjaHNbXSA9IHsKICAgICAgIFJfUklTQ1Zf UkVMQVgsCiAgICAgICBSX1JJU0NWX1JWQ19CUkFOQ0gsCiAgICAgICBSX1JJU0NWX1JWQ19KVU1Q LAorICAgICAgUl9SSVNDVl9SRUxBVElWRSwKKyAgICAgIFJfUklTQ1ZfSlVNUF9TTE9ULAogICAg ICAgLTEKICAgICB9IH0sCiAgIHsgInJpc2N2NjQiLCA4LCAwLCBFTV9SSVNDViwgR1JVQl9NT0RV TEVfVkVSSUZZX1NVUFBPUlRTX1JFTCB8IEdSVUJfTU9EVUxFX1ZFUklGWV9TVVBQT1JUU19SRUxB LCAoaW50W10pewpAQCAtMjA2LDYgKzIzMiw4IEBAIHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmll cl9hcmNoIGFyY2hzW10gPSB7CiAgICAgICBSX1JJU0NWX1JFTEFYLAogICAgICAgUl9SSVNDVl9S VkNfQlJBTkNILAogICAgICAgUl9SSVNDVl9SVkNfSlVNUCwKKyAgICAgIFJfUklTQ1ZfUkVMQVRJ VkUsCisgICAgICBSX1JJU0NWX0pVTVBfU0xPVCwKICAgICAgIC0xCiAgICAgfQogICB9LApkaWZm IC0tZ2l0IGEvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllclhYLmMgYi91dGlsL2dydWItbW9kdWxl LXZlcmlmaWVyWFguYwppbmRleCBhNDJjMjBiZDEuLjM3MjRmNjk2ZSAxMDA2NDQKLS0tIGEvdXRp bC9ncnViLW1vZHVsZS12ZXJpZmllclhYLmMKKysrIGIvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmll clhYLmMKQEAgLTE2Myw2ICsxNjMsMTYgQEAgZ2V0X3NoZHIgKGNvbnN0IHN0cnVjdCBncnViX21v ZHVsZV92ZXJpZmllcl9hcmNoICphcmNoLCBFbGZfRWhkciAqZSwgRWxmX1dvcmQgaW4KICAgcmV0 dXJuIHM7CiB9CiAKK3N0YXRpYyBFbGZfUGhkciAqCitnZXRfcGhkciAoY29uc3Qgc3RydWN0IGdy dWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggKmFyY2gsIEVsZl9FaGRyICplLCBFbGZfV29yZCBpbmRl eCkKK3sKKyAgaWYgKGdydWJfdGFyZ2V0X3RvX2hvc3QgKGUtPmVfcGhvZmYpID09IDApCisgICAg Z3J1Yl91dGlsX2Vycm9yICgiSW52YWxpZCBwcm9ncmFtIGhlYWRlciBvZmZzZXQiKTsKKworICBy ZXR1cm4gKEVsZl9QaGRyICopICgoY2hhciAqKSBlICsgZ3J1Yl90YXJnZXRfdG9faG9zdCAoZS0+ ZV9waG9mZikgKworCQkgICAgaW5kZXggKiBncnViX3RhcmdldF90b19ob3N0MTYgKGUtPmVfcGhl bnRzaXplKSk7Cit9CisKIHN0YXRpYyBFbGZfU2hudW0KIGdldF9zaG51bSAoY29uc3Qgc3RydWN0 IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2ggKmFyY2gsIEVsZl9FaGRyICplKQogewpAQCAtMjUy LDcgKzI2Miw3IEBAIGdldF9zeW10YWIgKGNvbnN0IHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmll cl9hcmNoICphcmNoLCBFbGZfRWhkciAqZSwgRWxmX1dvcmQKICAgICB7CiAgICAgICBzID0gZ2V0 X3NoZHIgKGFyY2gsIGUsIGksIG1vZHVsZV9zaXplKTsKIAotICAgICAgaWYgKGdydWJfdGFyZ2V0 X3RvX2hvc3QzMiAocy0+c2hfdHlwZSkgPT0gU0hUX1NZTVRBQikKKyAgICAgIGlmIChncnViX3Rh cmdldF90b19ob3N0MzIgKHMtPnNoX3R5cGUpID09IFNIVF9EWU5TWU0pCiAJYnJlYWs7CiAgICAg fQogCkBAIC0zNTcsNyArMzY3LDggQEAgaXNfc3ltYm9sX2xvY2FsKEVsZl9TeW0gKnN5bSkKIHN0 YXRpYyB2b2lkCiBzZWN0aW9uX2NoZWNrX3JlbG9jYXRpb25zIChjb25zdCBjaGFyICogY29uc3Qg bW9kbmFtZSwKIAkJCSAgIGNvbnN0IHN0cnVjdCBncnViX21vZHVsZV92ZXJpZmllcl9hcmNoICph cmNoLCB2b2lkICplaGRyLAotCQkJICAgRWxmX1NoZHIgKnMsIHNpemVfdCB0YXJnZXRfc2VnX3Np emUsIHNpemVfdCBtb2R1bGVfc2l6ZSkKKwkJCSAgIEVsZl9TaGRyICpzLCBzaXplX3QgbW9kdWxl X3NpemUsCisJCQkgICBncnViX3VpbnQ2NF90IG1pbl9hZGRyLCBncnViX3VpbnQ2NF90IG1heF9h ZGRyKQogewogICBFbGZfUmVsICpyZWwsICptYXg7CiAgIEVsZl9TeW0gKnN5bXRhYjsKQEAgLTM3 NCwxMSArMzg1LDE2IEBAIHNlY3Rpb25fY2hlY2tfcmVsb2NhdGlvbnMgKGNvbnN0IGNoYXIgKiBj b25zdCBtb2RuYW1lLAogICAgIHsKICAgICAgIEVsZl9TeW0gKnN5bTsKICAgICAgIHVuc2lnbmVk IGk7CisgICAgICBncnViX3VpbnQzMl90IHR5cGUgPSBFTEZfUl9UWVBFIChncnViX3RhcmdldF90 b19ob3N0IChyZWwtPnJfaW5mbykpOwogCi0gICAgICBpZiAodGFyZ2V0X3NlZ19zaXplIDwgZ3J1 Yl90YXJnZXRfdG9faG9zdCAocmVsLT5yX29mZnNldCkpCi0JZ3J1Yl91dGlsX2Vycm9yICgiJXM6 IHJlbG9jIG9mZnNldCBpcyBvdXQgb2YgdGhlIHNlZ21lbnQiLCBtb2RuYW1lKTsKKyAgICAgIGlm ICh0eXBlID09IDApCisJY29udGludWU7CiAKLSAgICAgIGdydWJfdWludDMyX3QgdHlwZSA9IEVM Rl9SX1RZUEUgKGdydWJfdGFyZ2V0X3RvX2hvc3QgKHJlbC0+cl9pbmZvKSk7CisgICAgICBpZiAo Z3J1Yl90YXJnZXRfdG9faG9zdCAocmVsLT5yX29mZnNldCkgPCBtaW5fYWRkciB8fCBncnViX3Rh cmdldF90b19ob3N0IChyZWwtPnJfb2Zmc2V0KSA+PSBtYXhfYWRkcikKKwlncnViX3V0aWxfZXJy b3IgKCIlczogcmVsb2Mgb2Zmc2V0IGlzIG91dCBvZiB0aGUgc2VnbWVudDogJWxseCBub3QgaW4g JWxseC0lbGx4IiwKKwkJCSBtb2RuYW1lLAorCQkJIChsb25nIGxvbmcpIGdydWJfdGFyZ2V0X3Rv X2hvc3QgKHJlbC0+cl9vZmZzZXQpLAorCQkJIChsb25nIGxvbmcpIG1pbl9hZGRyLCAobG9uZyBs b25nKSBtYXhfYWRkcik7CiAKICAgICAgIGlmIChhcmNoLT5tYWNoaW5lID09IEVNX1NQQVJDVjkp CiAJdHlwZSAmPSAweGZmOwpAQCAtNDM5LDcgKzQ1NSw3IEBAIHNlY3Rpb25fY2hlY2tfcmVsb2Nh dGlvbnMgKGNvbnN0IGNoYXIgKiBjb25zdCBtb2RuYW1lLAogCiBzdGF0aWMgdm9pZAogY2hlY2tf cmVsb2NhdGlvbnMgKGNvbnN0IGNoYXIgKiBjb25zdCBtb2RuYW1lLAotCQkgICBjb25zdCBzdHJ1 Y3QgZ3J1Yl9tb2R1bGVfdmVyaWZpZXJfYXJjaCAqYXJjaCwgRWxmX0VoZHIgKmUsIHNpemVfdCBt b2R1bGVfc2l6ZSkKKwkJICAgY29uc3Qgc3RydWN0IGdydWJfbW9kdWxlX3ZlcmlmaWVyX2FyY2gg KmFyY2gsIEVsZl9FaGRyICplLCBzaXplX3QgbW9kdWxlX3NpemUsIGdydWJfdWludDY0X3QgbWlu X2FkZHIsIGdydWJfdWludDY0X3QgbWF4X2FkZHIpCiB7CiAgIEVsZl9TaGRyICpzOwogICB1bnNp Z25lZCBpOwpAQCAtNDU3LDEyICs0NzMsNyBAQCBjaGVja19yZWxvY2F0aW9ucyAoY29uc3QgY2hh ciAqIGNvbnN0IG1vZG5hbWUsCiAJICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF90 eXBlKSA9PSBTSFRfUkVMQSAmJiAhKGFyY2gtPmZsYWdzICYgR1JVQl9NT0RVTEVfVkVSSUZZX1NV UFBPUlRTX1JFTEEpKQogCSAgICBncnViX3V0aWxfZXJyb3IgKCIlczogdW5zdXBwb3J0ZWQgU0hU X1JFTEEiLCBtb2RuYW1lKTsKIAotCSAgLyogRmluZCB0aGUgdGFyZ2V0IHNlZ21lbnQuICovCi0J ICBpZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDMyIChzLT5zaF9pbmZvKSA+PSBnZXRfc2hudW0gKGFy Y2gsIGUpKQotCSAgICBncnViX3V0aWxfZXJyb3IgKCIlczogb3JwaGFuZWQgcmVsb2Mgc2VjdGlv biIsIG1vZG5hbWUpOwotCSAgdHMgPSBnZXRfc2hkciAoYXJjaCwgZSwgZ3J1Yl90YXJnZXRfdG9f aG9zdDMyIChzLT5zaF9pbmZvKSwgbW9kdWxlX3NpemUpOwotCi0JICBzZWN0aW9uX2NoZWNrX3Jl bG9jYXRpb25zIChtb2RuYW1lLCBhcmNoLCBlLCBzLCBncnViX3RhcmdldF90b19ob3N0ICh0cy0+ c2hfc2l6ZSksIG1vZHVsZV9zaXplKTsKKwkgIHNlY3Rpb25fY2hlY2tfcmVsb2NhdGlvbnMgKG1v ZG5hbWUsIGFyY2gsIGUsIHMsIG1vZHVsZV9zaXplLCBtaW5fYWRkciwgbWF4X2FkZHIpOwogCX0K ICAgICB9CiB9CkBAIC00OTMsMTQgKzUwNCwxNCBAQCBTVUZGSVgoZ3J1Yl9tb2R1bGVfdmVyaWZ5 KSAoY29uc3QgY2hhciAqIGNvbnN0IGZpbGVuYW1lLAogICAgICAgfHwgZ3J1Yl90YXJnZXRfdG9f aG9zdDE2IChlLT5lX21hY2hpbmUpICE9IGFyY2gtPm1hY2hpbmUpCiAgICAgZ3J1Yl91dGlsX2Vy cm9yICgiJXM6IGludmFsaWQgYXJjaC1kZXBlbmRlbnQgRUxGIG1hZ2ljIiwgZmlsZW5hbWUpOwog Ci0gIGlmIChncnViX3RhcmdldF90b19ob3N0MTYgKGUtPmVfdHlwZSkgIT0gRVRfUkVMKQorICBp ZiAoZ3J1Yl90YXJnZXRfdG9faG9zdDE2IChlLT5lX3R5cGUpICE9IEVUX0RZTikKICAgICB7CiAg ICAgICBncnViX3V0aWxfZXJyb3IgKCIlczogdGhpcyBFTEYgZmlsZSBpcyBub3Qgb2YgdGhlIHJp Z2h0IHR5cGUiLCBmaWxlbmFtZSk7CiAgICAgfQogCiAgIC8qIE1ha2Ugc3VyZSB0aGF0IGV2ZXJ5 IHNlY3Rpb24gaXMgd2l0aGluIHRoZSBjb3JlLiAgKi8KLSAgaWYgKHNpemUgPCBncnViX3Rhcmdl dF90b19ob3N0IChlLT5lX3Nob2ZmKQotICAgICAgKyAoZ3J1Yl91aW50MzJfdCkgZ3J1Yl90YXJn ZXRfdG9faG9zdDE2IChlLT5lX3NoZW50c2l6ZSkgKiBnZXRfc2hudW0gKGFyY2gsIGUpKQorICBp ZiAoc2l6ZSA8IGdydWJfdGFyZ2V0X3RvX2hvc3QgKGUtPmVfcGhvZmYpCisgICAgICArIChncnVi X3VpbnQzMl90KSBncnViX3RhcmdldF90b19ob3N0MTYgKGUtPmVfcGhlbnRzaXplKSAqIGdydWJf dGFyZ2V0X3RvX2hvc3QxNiAoZS0+ZV9waG51bSkpCiAgICAgewogICAgICAgZ3J1Yl91dGlsX2Vy cm9yICgiJXM6IEVMRiBzZWN0aW9ucyBvdXRzaWRlIGNvcmUiLCBmaWxlbmFtZSk7CiAgICAgfQpA QCAtNTE2LDYgKzUyNywxOSBAQCBTVUZGSVgoZ3J1Yl9tb2R1bGVfdmVyaWZ5KSAoY29uc3QgY2hh ciAqIGNvbnN0IGZpbGVuYW1lLAogCiAgIG1vZG5hbWUgPSAoY29uc3QgY2hhciAqKSBlICsgZ3J1 Yl90YXJnZXRfdG9faG9zdCAocy0+c2hfb2Zmc2V0KTsKIAorICB1bnNpZ25lZCBpOworICBncnVi X3VpbnQ2NF90IG1pbl9hZGRyID0gfihncnViX3VpbnQ2NF90KTA7CisgIGdydWJfdWludDY0X3Qg bWF4X2FkZHIgPSAwOworCisgIGZvciAoaSA9IDA7IGkgPCBncnViX3RhcmdldF90b19ob3N0MTYg KGUtPmVfcGhudW0pOyBpKyspCisgICAgeworICAgICAgRWxmX1BoZHIgKnAgPSBnZXRfcGhkciAo YXJjaCwgZSwgaSk7CisKKyAgICAgIG1pbl9hZGRyID0gZ3J1Yl9taW4obWluX2FkZHIsIGdydWJf dGFyZ2V0X3RvX2hvc3QocC0+cF92YWRkcikpOworICAgICAgbWF4X2FkZHIgPSBncnViX21heCht YXhfYWRkciwgZ3J1Yl90YXJnZXRfdG9faG9zdChwLT5wX3ZhZGRyKSArIGdydWJfdGFyZ2V0X3Rv X2hvc3QocC0+cF9tZW1zeikpOworICAgIH0KKworCiAgIGNoZWNrX3N5bWJvbHMoYXJjaCwgZSwg bW9kbmFtZSwgd2hpdGVsaXN0X2VtcHR5LCBzaXplKTsKLSAgY2hlY2tfcmVsb2NhdGlvbnMobW9k bmFtZSwgYXJjaCwgZSwgc2l6ZSk7CisgIGNoZWNrX3JlbG9jYXRpb25zKG1vZG5hbWUsIGFyY2gs IGUsIHNpemUsIG1pbl9hZGRyLCBtYXhfYWRkcik7CiB9CmRpZmYgLS1naXQgYS91dGlsL2dydWIt cGUyZWxmLmMgYi91dGlsL2dydWItcGUyZWxmLmMKaW5kZXggMTEzMzEyOTRmLi5jZDFlNGNkNGEg MTAwNjQ0Ci0tLSBhL3V0aWwvZ3J1Yi1wZTJlbGYuYworKysgYi91dGlsL2dydWItcGUyZWxmLmMK QEAgLTYzLDcgKzYzLDggQEAgc3RhdGljIGludCBzdHJ0YWJfbWF4LCBzdHJ0YWJfbGVuOwogCiBz dGF0aWMgRWxmX0VoZHIgZWhkcjsKIHN0YXRpYyBFbGZfU2hkciAqc2hkcjsKLXN0YXRpYyBpbnQg bnVtX3NlY3Rpb25zLCBmaXJzdF9yZWxvY19zZWN0aW9uLCByZWxvY19zZWN0aW9uc19lbmQsIHN5 bXRhYl9zZWN0aW9uLCBzdHJ0YWJfc2VjdGlvbjsKK3N0YXRpYyBFbGZfUGhkciAqcGhkcjsKK3N0 YXRpYyBpbnQgbnVtX3NlY3Rpb25zLCBudW1fcGhkciwgZmlyc3RfcmVsb2Nfc2VjdGlvbiwgcmVs b2Nfc2VjdGlvbnNfZW5kLCBzeW10YWJfc2VjdGlvbiwgc3RydGFiX3NlY3Rpb247CiBzdGF0aWMg Z3J1Yl91aW50MzJfdCBvZmZzZXQsIGltYWdlX2Jhc2U7CiAKIHN0YXRpYyBpbnQKQEAgLTk2LDE0 ICs5NywxOCBAQCB3cml0ZV9zZWN0aW9uX2RhdGEgKEZJTEUqIGZwLCBjb25zdCBjaGFyICpuYW1l LCBjaGFyICppbWFnZSwKICAgaW50ICpzZWN0aW9uX21hcDsKICAgaW50IGk7CiAgIGdydWJfdWlu dDMyX3QgbGFzdF9jYXRlZ29yeSA9IDA7Ci0gIGdydWJfdWludDMyX3QgaWR4LCBpZHhfcmVsb2M7 CisgIGdydWJfdWludDMyX3QgaWR4LCBpZHhfcmVsb2MsIHBpZHg7CisgIGdydWJfdWludDY0X3Qg Y3VyX2FkZHIgPSAwOworICBncnViX3VpbnQzMl90IGN1cl9mbGFncyA9IDA7CiAgIGNoYXIgKnBl X3N0cnRhYiA9IChpbWFnZSArIHBlX2NoZHItPnN5bXRhYl9vZmZzZXQKIAkJICAgICArIHBlX2No ZHItPm51bV9zeW1ib2xzICogc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9wZTMyX3N5bWJvbCkpOwogCiAg IHNlY3Rpb25fbWFwID0geGNhbGxvYyAoMiAqIHBlX2NoZHItPm51bV9zZWN0aW9ucyArIDUsIHNp emVvZiAoaW50KSk7CiAgIHNlY3Rpb25fbWFwWzBdID0gMDsKICAgc2hkciA9IHhjYWxsb2MgKDIg KiBwZV9jaGRyLT5udW1fc2VjdGlvbnMgKyA1LCBzaXplb2YgKHNoZHJbMF0pKTsKKyAgcGhkciA9 IHhjYWxsb2MgKHBlX2NoZHItPm51bV9zZWN0aW9ucywgc2l6ZW9mIChzaGRyWzBdKSk7CiAgIGlk eCA9IDE7CisgIHBpZHggPSAwOwogICBpZHhfcmVsb2MgPSBwZV9jaGRyLT5udW1fc2VjdGlvbnMg KyAxOwogCiAgIGZvciAoaSA9IDA7IGkgPCBwZV9jaGRyLT5udW1fc2VjdGlvbnM7IGkrKywgcGVf c2hkcisrKQpAQCAtMTIzLDI3ICsxMjgsMzIgQEAgd3JpdGVfc2VjdGlvbl9kYXRhIChGSUxFKiBm cCwgY29uc3QgY2hhciAqbmFtZSwgY2hhciAqaW1hZ2UsCiAgICAgICBzZWNzaXplID0gcGVfc2hk ci0+cmF3X2RhdGFfc2l6ZTsKIAogICAgICAgc2hkcltpZHhdLnNoX3R5cGUgPSBTSFRfUFJPR0JJ VFM7CisgICAgICBwaGRyW3BpZHhdLnBfdHlwZSA9IFBUX0xPQUQ7CiAKICAgICAgIGlmICghIHN0 cmNtcCAoc2huYW1lLCAiLnRleHQiKSkKICAgICAgICAgewogICAgICAgICAgIGNhdGVnb3J5ID0g MDsKICAgICAgICAgICBzaGRyW2lkeF0uc2hfZmxhZ3MgPSBTSEZfQUxMT0MgfCBTSEZfRVhFQ0lO U1RSOworCSAgcGhkcltwaWR4XS5wX2ZsYWdzID0gUEZfUiB8IFBGX1g7CiAgICAgICAgIH0KICAg ICAgIGVsc2UgaWYgKCEgc3RybmNtcCAoc2huYW1lLCAiLnJkYXRhIiwgNikpCiAgICAgICAgIHsK ICAgICAgICAgICBjYXRlZ29yeSA9IDE7CiAgICAgICAgICAgc2hkcltpZHhdLnNoX2ZsYWdzID0g U0hGX0FMTE9DOworCSAgcGhkcltwaWR4XS5wX2ZsYWdzID0gUEZfUjsKICAgICAgICAgfQogICAg ICAgZWxzZSBpZiAoISBzdHJjbXAgKHNobmFtZSwgIi5kYXRhIikpCiAgICAgICAgIHsKICAgICAg ICAgICBjYXRlZ29yeSA9IDI7CiAgICAgICAgICAgc2hkcltpZHhdLnNoX2ZsYWdzID0gU0hGX0FM TE9DIHwgU0hGX1dSSVRFOworCSAgcGhkcltwaWR4XS5wX2ZsYWdzID0gUEZfUiB8IFBGX1c7CiAg ICAgICAgIH0KICAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChzaG5hbWUsICIuYnNzIikpCiAgICAg ICAgIHsKICAgICAgICAgICBjYXRlZ29yeSA9IDM7CiAJICBzaGRyW2lkeF0uc2hfdHlwZSA9IFNI VF9OT0JJVFM7CiAgICAgICAgICAgc2hkcltpZHhdLnNoX2ZsYWdzID0gU0hGX0FMTE9DIHwgU0hG X1dSSVRFOworCSAgcGhkcltwaWR4XS5wX2ZsYWdzID0gUEZfUiB8IFBGX1c7CiAJICBpZiAoc2Vj c2l6ZSA8IHBlX3NoZHItPnZpcnR1YWxfc2l6ZSkKIAkgICAgc2Vjc2l6ZSA9IHBlX3NoZHItPnZp cnR1YWxfc2l6ZTsKICAgICAgICAgfQpAQCAtMTcxLDkgKzE4MSw0NyBAQCB3cml0ZV9zZWN0aW9u X2RhdGEgKEZJTEUqIGZwLCBjb25zdCBjaGFyICpuYW1lLCBjaGFyICppbWFnZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JVQl9QRTMyX1NDTl9BTElHTl9NQVNLKSAt IDEpOwogICAgICAgc2hkcltpZHhdLnNoX2FkZHIgPSBwZV9zaGRyLT52aXJ0dWFsX2FkZHJlc3Mg KyBpbWFnZV9iYXNlOwogCisgICAgICBpZiAoY2F0ZWdvcnkgIT0gNCkKKwl7CisJICBncnViX3Vp bnQzMl90IGFsaWduID0gMSA8PCAoKChwZV9zaGRyLT5jaGFyYWN0ZXJpc3RpY3MgPj4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSVUJfUEUzMl9TQ05fQUxJR05fU0hJ RlQpICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JVQl9QRTMyX1ND Tl9BTElHTl9NQVNLKSAtIDEpOworCisJICBpZiAocGVfY2hkci0+Y2hhcmFjdGVyaXN0aWNzICYg R1JVQl9QRTMyX0VYRUNVVEFCTEVfSU1BR0UpCisJICAgIHsKKwkgICAgICBwaGRyW3BpZHhdLnBf YWxpZ24gPSBhbGlnbjsKKworCSAgICAgIHBoZHJbcGlkeF0ucF92YWRkciA9IHNoZHJbaWR4XS5z aF9hZGRyOworCSAgICAgIHBoZHJbcGlkeF0ucF9wYWRkciA9IHNoZHJbaWR4XS5zaF9hZGRyOwor CSAgICAgIHBoZHJbcGlkeF0ucF9tZW1zeiA9IHNlY3NpemU7CisJICAgIH0KKwkgIGVsc2UKKwkg ICAgeworCSAgICAgIGlmIChjdXJfZmxhZ3MgIT0gcGhkcltwaWR4XS5wX2ZsYWdzICYmIGFsaWdu IDwgNDA5NikKKwkJYWxpZ24gPSA0MDk2OworCisJICAgICAgY3VyX2ZsYWdzID0gcGhkcltwaWR4 XS5wX2ZsYWdzOworCisJICAgICAgcGhkcltwaWR4XS5wX2FsaWduID0gYWxpZ247CisJICAgICAg Y3VyX2FkZHIgPSAoY3VyX2FkZHIgKyBhbGlnbiAtIDEpICYgfihhbGlnbiAtIDEpOworCisJICAg ICAgcGhkcltwaWR4XS5wX3ZhZGRyID0gY3VyX2FkZHI7CisJICAgICAgcGhkcltwaWR4XS5wX3Bh ZGRyID0gY3VyX2FkZHI7CisJICAgICAgcGhkcltwaWR4XS5wX21lbXN6ID0gc2Vjc2l6ZTsKKwkg ICAgICBzaGRyW2lkeF0uc2hfYWRkciA9IGN1cl9hZGRyOworCisJICAgICAgY3VyX2FkZHIgKz0g c2Vjc2l6ZTsKKwkgICAgfQorCX0KKwogICAgICAgaWYgKHNoZHJbaWR4XS5zaF90eXBlICE9IFNI VF9OT0JJVFMpCiAgICAgICAgIHsKICAgICAgICAgICBzaGRyW2lkeF0uc2hfb2Zmc2V0ID0gb2Zm c2V0OworCSAgaWYgKGNhdGVnb3J5ICE9IDQpCisJICAgIHsKKwkgICAgICBwaGRyW3BpZHhdLnBf b2Zmc2V0ID0gb2Zmc2V0OworCSAgICAgIHBoZHJbcGlkeF0ucF9maWxlc3ogPSBzZWNzaXplOwor CSAgICB9CiAgICAgICAgICAgZ3J1Yl91dGlsX3dyaXRlX2ltYWdlX2F0IChpbWFnZSArIHBlX3No ZHItPnJhd19kYXRhX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBlX3NoZHItPnJhd19kYXRhX3NpemUsIG9mZnNldCwgZnAsCiAJCQkJICAgIHNobmFtZSk7CkBA IC0xOTgsMTAgKzI0NiwxMyBAQCB3cml0ZV9zZWN0aW9uX2RhdGEgKEZJTEUqIGZwLCBjb25zdCBj aGFyICpuYW1lLCBjaGFyICppbWFnZSwKICAgICAgIGVsc2UKICAgICAgICAgc2hkcltpZHhdLnNo X25hbWUgPSBpbnNlcnRfc3RyaW5nIChzaG5hbWUpOwogICAgICAgaWR4Kys7CisgICAgICBpZiAo Y2F0ZWdvcnkgIT0gNCkKKwlwaWR4Kys7CiAgICAgfQogCiAgIGlkeF9yZWxvYyAtPSBwZV9jaGRy LT5udW1fc2VjdGlvbnMgKyAxOwogICBudW1fc2VjdGlvbnMgPSBpZHggKyBpZHhfcmVsb2MgKyAy OworICBudW1fcGhkciA9IHBpZHg7CiAgIGZpcnN0X3JlbG9jX3NlY3Rpb24gPSBpZHg7CiAgIHJl bG9jX3NlY3Rpb25zX2VuZCA9IGlkeCArIGlkeF9yZWxvYzsKICAgbWVtbW92ZSAoc2hkciArIGlk eCwgc2hkciArIHBlX2NoZHItPm51bV9zZWN0aW9ucyArIDEsCkBAIC0yMjAsNyArMjcxLDggQEAg d3JpdGVfcmVsb2Nfc2VjdGlvbiAoRklMRSogZnAsIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmlt YWdlLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdydWJfcGUzMl9jb2ZmX2hlYWRlciAq cGVfY2hkciwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBncnViX3BlMzJfc2VjdGlvbl90 YWJsZSAgKnBlX3NoZHIsCiAgICAgICAgICAgICAgICAgICAgICBFbGZfU3ltICpzeW10YWIsCi0g ICAgICAgICAgICAgICAgICAgICBpbnQgKnN5bXRhYl9tYXApCisgICAgICAgICAgICAgICAgICAg ICBpbnQgKnN5bXRhYl9tYXAsCisJCSAgICAgaW50ICpzZWN0aW9uX21hcCkKIHsKICAgaW50IGk7 CiAKQEAgLTIyOCw2ICsyODAsNyBAQCB3cml0ZV9yZWxvY19zZWN0aW9uIChGSUxFKiBmcCwgY29u c3QgY2hhciAqbmFtZSwgY2hhciAqaW1hZ2UsCiAgICAgewogICAgICAgc3RydWN0IGdydWJfcGUz Ml9zZWN0aW9uX3RhYmxlICpwZV9zZWM7CiAgICAgICBzdHJ1Y3QgZ3J1Yl9wZTMyX3JlbG9jICpw ZV9yZWw7CisgICAgICBncnViX3VpbnQ2NF90IGVsZl9sb2FkX29mZnNldCA9IDA7CiAgICAgICBl bGZfcmVsb2NfdCAqcmVsOwogICAgICAgaW50IG51bV9yZWxzLCBqLCBtb2RpZmllZDsKIApAQCAt MjM2LDE3ICsyODksMjAgQEAgd3JpdGVfcmVsb2Nfc2VjdGlvbiAoRklMRSogZnAsIGNvbnN0IGNo YXIgKm5hbWUsIGNoYXIgKmltYWdlLAogICAgICAgcmVsID0gKGVsZl9yZWxvY190ICopIHhjYWxs b2MgKHBlX3NlYy0+bnVtX3JlbG9jYXRpb25zLCBzaXplb2YgKGVsZl9yZWxvY190KSk7CiAgICAg ICBudW1fcmVscyA9IDA7CiAgICAgICBtb2RpZmllZCA9IDA7CisgICAgICBlbGZfbG9hZF9vZmZz ZXQgPSAtcGVfc2VjLT52aXJ0dWFsX2FkZHJlc3MgKyBzaGRyW3NlY3Rpb25fbWFwW3NoZHJbaV0u c2hfbGluayArIDFdXS5zaF9hZGRyOwogCiAgICAgICBmb3IgKGogPSAwOyBqIDwgcGVfc2VjLT5u dW1fcmVsb2NhdGlvbnM7IGorKywgcGVfcmVsKyspCiAgICAgICAgIHsKICAgICAgICAgICBpbnQg dHlwZTsKICAgICAgICAgICBncnViX3VpbnQzMl90IG9mcywgKmFkZHI7CisJICBncnViX3VpbnQ2 NF90IGVsZl9vZnM7CiAKICAgICAgICAgICBpZiAoKHBlX3JlbC0+c3ltdGFiX2luZGV4ID49IHBl X2NoZHItPm51bV9zeW1ib2xzKSB8fAogICAgICAgICAgICAgICAoc3ltdGFiX21hcFtwZV9yZWwt PnN5bXRhYl9pbmRleF0gPT0gLTEpKQogICAgICAgICAgICAgZ3J1Yl91dGlsX2Vycm9yICgiaW52 YWxpZCBzeW1ib2wiKTsKIAogICAgICAgICAgIG9mcyA9IHBlX3JlbC0+b2Zmc2V0IC0gcGVfc2Vj LT52aXJ0dWFsX2FkZHJlc3M7CisJICBlbGZfb2ZzID0gcGVfcmVsLT5vZmZzZXQgKyBlbGZfbG9h ZF9vZmZzZXQ7CiAgICAgICAgICAgYWRkciA9IChncnViX3VpbnQzMl90ICopKGltYWdlICsgcGVf c2VjLT5yYXdfZGF0YV9vZmZzZXQgKyBvZnMpOwogCiAgICAgICAgICAgc3dpdGNoIChwZV9yZWwt PnR5cGUpCkBAIC0yODMsNyArMzM5LDcgQEAgd3JpdGVfcmVsb2Nfc2VjdGlvbiAoRklMRSogZnAs IGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmltYWdlLAogCSAgICB9CiAKICAgICAgICAgICBpZiAo dHlwZSA9PQotI2lmIEdSVUJfVEFSR0VUX1dPUkRTSVpFID09IDY0CisjaWYgR1JVQl9UQVJHRVRf V09SRFNJWkUgPT0gMzIKIAkgICAgICBSXzM4Nl9QQzMyCiAjZWxzZQogCSAgICAgIFJfWDg2XzY0 X1BDMzIKQEAgLTMwNiw3ICszNjIsNyBAQCB3cml0ZV9yZWxvY19zZWN0aW9uIChGSUxFKiBmcCwg Y29uc3QgY2hhciAqbmFtZSwgY2hhciAqaW1hZ2UsCiAgICAgICAgICAgICAgICAgewogCQkgIG1v ZGlmaWVkID0gMTsKICAgICAgICAgICAgICAgICAgICphZGRyICs9IChzeW10YWJbc3ltdGFiX21h cFtwZV9yZWwtPnN5bXRhYl9pbmRleF1dLnN0X3ZhbHVlCi0JCQkgICAgLSBvZnMgLSA0KTsKKwkJ CSAgICAtIGVsZl9vZnMgLSA0KTsKIAogICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg ICAgICAgICAgICAgfQpAQCAtMzIxLDkgKzM3Nyw1NSBAQCB3cml0ZV9yZWxvY19zZWN0aW9uIChG SUxFKiBmcCwgY29uc3QgY2hhciAqbmFtZSwgY2hhciAqaW1hZ2UsCiAJCX0KICAgICAgICAgICAg IH0KIAotICAgICAgICAgIHJlbFtudW1fcmVsc10ucl9vZmZzZXQgPSBvZnM7Ci0gICAgICAgICAg cmVsW251bV9yZWxzXS5yX2luZm8gPSBFTEZfUl9JTkZPIChzeW10YWJfbWFwW3BlX3JlbC0+c3lt dGFiX2luZGV4XSwKLQkJCQkJICAgICB0eXBlKTsKKwkgIGdydWJfdWludDMyX3Qgc3ltaWR4ID0g c3ltdGFiX21hcFtwZV9yZWwtPnN5bXRhYl9pbmRleF07CisKKwkgIGlmIChzeW10YWJbc3ltdGFi X21hcFtwZV9yZWwtPnN5bXRhYl9pbmRleF1dLnN0X3NobmR4ICE9IFNUTl9VTkRFRikKKwkgICAg eworI2lmIEdSVUJfVEFSR0VUX1dPUkRTSVpFID09IDY0CisJICAgICAgaWYgKHR5cGUgPT0gUl9Y ODZfNjRfUEMzMikKKwkJeworCQkgICphZGRyICs9IHN5bXRhYltzeW10YWJfbWFwW3BlX3JlbC0+ c3ltdGFiX2luZGV4XV0uc3RfdmFsdWUgLSBlbGZfb2ZzOworCQkgICphZGRyICs9IHJlbFtudW1f cmVsc10ucl9hZGRlbmQ7CisJCSAgbW9kaWZpZWQgPSAxOworCQkgIGNvbnRpbnVlOworCQl9CisK KwkgICAgICBpZiAodHlwZSA9PSBSX1g4Nl82NF9QQzY0KQorCQl7CisJCSAgKihncnViX3VpbnQ2 NF90ICopYWRkciArPSBzeW10YWJbc3ltdGFiX21hcFtwZV9yZWwtPnN5bXRhYl9pbmRleF1dLnN0 X3ZhbHVlIC0gZWxmX29mczsKKwkJICAqKGdydWJfdWludDY0X3QgKilhZGRyICs9IHJlbFtudW1f cmVsc10ucl9hZGRlbmQ7CisJCSAgbW9kaWZpZWQgPSAxOworCQkgIGNvbnRpbnVlOworCQl9CisK KwkgICAgICBpZiAodHlwZSA9PSBSX1g4Nl82NF82NCkKKwkJeworCQkgIHJlbFtudW1fcmVsc10u cl9hZGRlbmQgKz0gKihncnViX3VpbnQ2NF90ICopYWRkcjsKKwkJICByZWxbbnVtX3JlbHNdLnJf YWRkZW5kICs9IHN5bXRhYltzeW10YWJfbWFwW3BlX3JlbC0+c3ltdGFiX2luZGV4XV0uc3RfdmFs dWU7CisJCSAgKihncnViX3VpbnQ2NF90ICopYWRkciA9IDA7CisJCSAgbW9kaWZpZWQgPSAxOwor CQkgIHN5bWlkeCA9IDA7CisJCSAgdHlwZSA9IFJfWDg2XzY0X1JFTEFUSVZFOworCQl9CisjZWxz ZQorCSAgICAgIGlmICh0eXBlID09IFJfMzg2X1BDMzIpCisJCXsKKwkJICAqYWRkciArPSBzeW10 YWJbc3ltdGFiX21hcFtwZV9yZWwtPnN5bXRhYl9pbmRleF1dLnN0X3ZhbHVlIC0gZWxmX29mczsK KwkJICBtb2RpZmllZCA9IDE7CisJCSAgY29udGludWU7CisJCX0KKwkgICAgICBpZiAodHlwZSA9 PSBSXzM4Nl8zMikKKwkJeworCQkgICphZGRyICs9IHN5bXRhYltzeW10YWJfbWFwW3BlX3JlbC0+ c3ltdGFiX2luZGV4XV0uc3RfdmFsdWU7CisJCSAgbW9kaWZpZWQgPSAxOworCQkgIHN5bWlkeCA9 IDA7CisJCSAgdHlwZSA9IFJfMzg2X1JFTEFUSVZFOworCQl9CisjZW5kaWYKKwkgICAgfQorCisg ICAgICAgICAgcmVsW251bV9yZWxzXS5yX29mZnNldCA9IGVsZl9vZnM7CisgICAgICAgICAgcmVs W251bV9yZWxzXS5yX2luZm8gPSBFTEZfUl9JTkZPIChzeW1pZHgsIHR5cGUpOwogICAgICAgICAg IG51bV9yZWxzKys7CiAgICAgICAgIH0KIApAQCAtNDI0LDcgKzUyNiw3IEBAIHdyaXRlX3N5bWJv bF90YWJsZSAoRklMRSogZnAsIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmltYWdlLAogICAgICAg ICB9CiAKICAgICAgIHN5bXRhYltudW1fc3ltc10uc3Rfc2huZHggPSBzZWN0aW9uX21hcFtwZV9z eW10YWItPnNlY3Rpb25dOwotICAgICAgc3ltdGFiW251bV9zeW1zXS5zdF92YWx1ZSA9IHBlX3N5 bXRhYi0+dmFsdWU7CisgICAgICBzeW10YWJbbnVtX3N5bXNdLnN0X3ZhbHVlID0gcGVfc3ltdGFi LT52YWx1ZSArIHNoZHJbc2VjdGlvbl9tYXBbcGVfc3ltdGFiLT5zZWN0aW9uXV0uc2hfYWRkcjsK ICAgICAgIHN5bXRhYltudW1fc3ltc10uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChiaW5kLCB0eXBl KTsKIAogICAgICAgc3ltdGFiX21hcFtpXSA9IG51bV9zeW1zOwpAQCAtNDMyLDEwICs1MzQsMTAg QEAgd3JpdGVfc3ltYm9sX3RhYmxlIChGSUxFKiBmcCwgY29uc3QgY2hhciAqbmFtZSwgY2hhciAq aW1hZ2UsCiAgICAgfQogCiAgIHdyaXRlX3JlbG9jX3NlY3Rpb24gKGZwLCBuYW1lLCBpbWFnZSwg cGVfY2hkciwgcGVfc2hkciwKLQkJICAgICAgIHN5bXRhYiwgc3ltdGFiX21hcCk7CisJCSAgICAg ICBzeW10YWIsIHN5bXRhYl9tYXAsIHNlY3Rpb25fbWFwKTsKIAogICBzaGRyW3N5bXRhYl9zZWN0 aW9uXS5zaF9uYW1lID0gaW5zZXJ0X3N0cmluZyAoIi5zeW10YWIiKTsKLSAgc2hkcltzeW10YWJf c2VjdGlvbl0uc2hfdHlwZSA9IFNIVF9TWU1UQUI7CisgIHNoZHJbc3ltdGFiX3NlY3Rpb25dLnNo X3R5cGUgPSBTSFRfRFlOU1lNOwogICBzaGRyW3N5bXRhYl9zZWN0aW9uXS5zaF9vZmZzZXQgPSBv ZmZzZXQ7CiAgIHNoZHJbc3ltdGFiX3NlY3Rpb25dLnNoX3NpemUgPSBudW1fc3ltcyAqIHNpemVv ZiAoRWxmX1N5bSk7CiAgIHNoZHJbc3ltdGFiX3NlY3Rpb25dLnNoX2VudHNpemUgPSBzaXplb2Yg KEVsZl9TeW0pOwpAQCAtNDc0LDcgKzU3Niw3IEBAIHdyaXRlX3NlY3Rpb25faGVhZGVyIChGSUxF ICpmcCwgY29uc3QgY2hhciAqbmFtZSkKICAgZWhkci5lX2lkZW50W0VJX01BRzNdID0gRUxGTUFH MzsKICAgZWhkci5lX2lkZW50W0VJX1ZFUlNJT05dID0gRVZfQ1VSUkVOVDsKICAgZWhkci5lX3Zl cnNpb24gPSBFVl9DVVJSRU5UOwotICBlaGRyLmVfdHlwZSA9IEVUX1JFTDsKKyAgZWhkci5lX3R5 cGUgPSBFVF9EWU47CiAKICNpZiBHUlVCX1RBUkdFVF9XT1JEU0laRSA9PSA2NAogICBlaGRyLmVf aWRlbnRbRUlfQ0xBU1NdID0gRUxGQ0xBU1M2NDsKQEAgLTQ5Myw2ICs1OTUsMTMgQEAgd3JpdGVf c2VjdGlvbl9oZWFkZXIgKEZJTEUgKmZwLCBjb25zdCBjaGFyICpuYW1lKQogICBlaGRyLmVfc2hu dW0gPSBudW1fc2VjdGlvbnM7CiAgIGdydWJfdXRpbF93cml0ZV9pbWFnZV9hdCAoc2hkciwgc2l6 ZW9mIChFbGZfU2hkcikgKiBudW1fc2VjdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0LCBmcCwgbmFtZSk7CisgIG9mZnNldCArPSBzaXplb2YgKEVsZl9TaGRyKSAqIG51 bV9zZWN0aW9uczsKKworICBlaGRyLmVfcGhlbnRzaXplID0gc2l6ZW9mIChFbGZfUGhkcik7Cisg IGVoZHIuZV9waG9mZiA9IG9mZnNldDsKKyAgZWhkci5lX3BobnVtID0gbnVtX3BoZHI7CisgIGdy dWJfdXRpbF93cml0ZV9pbWFnZV9hdCAocGhkciwgc2l6ZW9mIChFbGZfUGhkcikgKiBudW1fcGhk ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGZwLCBuYW1lKTsKIAogICBn cnViX3V0aWxfd3JpdGVfaW1hZ2VfYXQgKCZlaGRyLCBzaXplb2YgKEVsZl9FaGRyKSwgMCwgZnAs IG5hbWUpOwogfQotLSAKMi40OS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3Jn Cmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK