Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vffmt-003zYj-0x for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 14:54:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vffms-005Gfe-1i for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 14:54:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vffmr-005GfV-0t for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 14:54:26 +0000 Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vffmo-000Ded-1j for pgsql-hackers@postgresql.org; Tue, 13 Jan 2026 14:54:24 +0000 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id D07827A011E for ; Tue, 13 Jan 2026 09:54:21 -0500 (EST) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-03.internal (MEProxy); Tue, 13 Jan 2026 09:54:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1768316061; x=1768402461; bh=TMtSg/JCjb CF3zJ9lKx8h/Y2VOnGf0LwqSL9jrQvAgI=; b=JJmBdisArrE7vrlUqr2cWkeYZ0 FT3Yw3G2uV3M4NEecyNPh6wvOs07QFmrGiioYJCoSUxLsv9pyyFjXY1B/NuVOVOW T80ALTU7UnnuW0wgYU+OIZ5dCvMdoxZ7tatO3m5KTaaOZpb8zjLiIph57olBTVm4 3LQDYI3H/dqzo6t67NJVwpYl8Mw6YRRd1bSYQIkPOEDpuj/u28E7eaUI2ivqL6Il O7ObGjjIN2aeF/H3ZT9vTAi3lbGizAzG86UUzHsWz3mIq9uM7HveXBodCpmliGW9 qQeiwtDDm5pTqbf2i8ntUJ8FEV8v5WHC0fJ21GJ0+a39Rl/SN40SWvollJ/A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1768316061; x=1768402461; bh=TMtSg/JCjbCF3zJ9lKx8h/Y2VOnGf0LwqSL 9jrQvAgI=; b=OfyYAeQ4iK8aCdfzrEJFhmKTy2r9jYj/kwKSb2rK5tLWhHDAl4x DdJTHsKmhytw0Bg9ims/iNLcZPo73ZqJBMCiClVxzmbsGsNNggHvPTouSNxGkirH W3WCw6dE7qDRyjQ8eM432aJppHTs/EiQkVggfFB29GpUs1fAgNxSy/BNdMb9OIKw 1ErkQk5qopcqCsTJ0kxjAG1/jXXpk6f+v1E7iP9zkPtplB6lVr3udBoS+G6BIGQU 4WVMrBp7HfQU/1QOczS0fRSQi9twVKbMGB+eoEJGC+jIdrQkx5tEGAMMbVtKbdAJ 8mKkfnHEXQdsVsHD8dKD9OEIpJ8yZs8hmDQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdduvddtieduucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpeffhffvkfgjfhfuofggtgesmhdtmherre dtjeenucfhrhhomhepifhrvghguceuuhhrugcuoehgrhgvghessghurhgurdhmvgeqnecu ggftrfgrthhtvghrnhepfeeluedutdeludduieekgfduffehffffieelueeuvddtveejve euueegkeeuteeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf rhhomhepghhrvghgsegsuhhrugdrmhgvpdhnsggprhgtphhtthhopedupdhmohguvgepsh hmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgv shhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 13 Jan 2026 09:54:21 -0500 (EST) Date: Tue, 13 Jan 2026 09:54:10 -0500 From: Greg Burd To: "=?utf-8?Q?pgsql-hackers=40postgresql.org?=" Message-ID: <9394564A-5764-4DCA-8845-8AE102DE61DC@greg.burd.me> In-Reply-To: <5165C147-B476-4E3D-AAA9-11C0B966FC4D@greg.burd.me> References: <5165C147-B476-4E3D-AAA9-11C0B966FC4D@greg.burd.me> Subject: Re: Expanding HOT updates for expression and partial indexes X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="69665c92_23ba1acf_1975" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --69665c92_23ba1acf_1975 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Rebased again to address build failure. -greg --69665c92_23ba1acf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?v28-0001-Prepare-heapam=5Ftuple=5Fupdate-and-simple=5Fheap=5Fupda.patch?=" RnJvbSA2MDIxM2U4OThmOWY4MjlkMDVmZmU5N2RmNGI2MTg2YTIzM2FhODQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogU3VuLCAy IE5vdiAyMDI1IDExOjM2OjIwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MjggMS80XSBQcmVwYXJl IGhlYXBhbV90dXBsZV91cGRhdGUoKSBhbmQKIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGZvciBkaXZl cmdlbmNlCgpUaGlzIGNvbW1pdCBsYXlzIHRoZSBmb3VuZGF0aW9uIGZvciBsYXJnZXIgY2hhbmdl cyB0byBjb21lIGJ5IHRha2luZyB0aGUKZmlyc3QgcG9ydGlvbiBvZiBoZWFwX3VwZGF0ZSgpIHRo cm91Z2ggdGhlIEhlYXBEZXRlcm1pbkNvbHVtbnNJbmZvKCkgYW5kCnJlcGxpY2F0aW5nIHRoYXQg bG9naWMgaW4gYm90aCBoZWFwYW1fdHVwbGVfdXBkYXRlKCkgYW5kCnNpbXBsZV9oZWFwX3VwYXRl KCkuICBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGVzZSB0d28gcGF0aHMgbWlnaHQgZGl2ZXJnZQpp biBpbXBsZW1lbnRhdGlvbiBsYXRlciBvbi4gIFRoZSBzaW1wbGVfaGVhcF91cGRhdGUoKSBwYXRo IGRlYWxzIHNvbGVseQp3aXRoIHVwZGF0ZXMgdG8gY2F0YWxvZyB0dXBsZXMgd2hpY2ggY291bGQg cmVjb3JkIHRoZWlyIG1vZGlmaWVkCmF0dHJpYnV0ZXMgcmF0aGVyIHRoYW4gcmVsZWFybiB0aGVt LiAgVGhlIHJlbWFpbmluZyBjYWxscyBmcm9tIHRoZQpleGVjdXRvciBpbnRvIHRoZSB0YWJsZSBB TSB1cGRhdGUgQVBJIGNvdWxkIGluY2x1ZGUgdGhlIHNldCBvZiB1cGRhdGVkCmF0dHJpYnV0ZXMu ICBUaGlzIGlzIGZvcmVzaGFkb3dpbmcuLi4gb2YgY291cnNlLCBhcyB0aGF0J3Mgd2hhdCB0aGUg bmV4dApjb21taXQgd2lsbCBzdGFydCB0byBkby4KCkFzIHBhcnQgb2YgdGhpcyByZW9yZ2FuaXph dGlvbiwgdGhlIGhhbmRsaW5nIG9mIHJlcGxpY2EgaWRlbnRpdHkga2V5CmF0dHJpYnV0ZXMgaGFz IGJlZW4gYWRqdXN0ZWQuIEluc3RlYWQgb2YgZmV0Y2hpbmcgYSBzZWNvbmQgY29weSBvZgp0aGUg Yml0bWFwIGR1cmluZyBhbiB1cGRhdGUgb3BlcmF0aW9uLCB0aGUgY2FsbGVyIGlzIG5vdyByZXF1 aXJlZCB0bwpwcm92aWRlIGl0LiBUaGlzIGNoYW5nZSBhcHBsaWVzIHRvIGJvdGggaGVhcF91cGRh dGUoKSBhbmQKaGVhcF9kZWxldGUoKS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYyAgICAgICAgIHwgNTY4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgMTE3ICsrKystCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgIHwgIDI0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQxMCBp bnNlcnRpb25zKCspLCAyOTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpp bmRleCBmMzBhNTZlY2Y1NS4uODU2M2RhZGM4ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CkBAIC0zOSwxOCArMzksMjQgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKICNpbmNs dWRlICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgor I2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIK KyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFi YXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdmFjdXVtLmgiCisjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pdGVtcHRyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjIsMTYgKzY4LDggQEAgc3RhdGljIFhMb2dS ZWNQdHIgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1ZmZlciBvbGRidWYsCiAJCQkJ CQkJCSAgSGVhcFR1cGxlIG5ld3R1cCwgSGVhcFR1cGxlIG9sZF9rZXlfdHVwbGUsCiAJCQkJCQkJ CSAgYm9vbCBhbGxfdmlzaWJsZV9jbGVhcmVkLCBib29sIG5ld19hbGxfdmlzaWJsZV9jbGVhcmVk KTsKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgdm9pZCBjaGVja19sb2NrX2lm X2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCQkg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJCQkJCQkJCQkJIEhlYXBUdXBsZSBuZXd0 dXApOwogc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVw KTsKICNlbmRpZgotc3RhdGljIEJpdG1hcHNldCAqSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJl bGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29s cywKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkJCQkJICAg SGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkJCQkgICBib29sICpo YXNfZXh0ZXJuYWwpOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxl TW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhh dmVfdHVwbGVfbG9jayk7CkBAIC0xMDYsMTAgKzEwNCwxMCBAQCBzdGF0aWMgYm9vbCBDb25kaXRp b25hbE11bHRpWGFjdElkV2FpdChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0U3RhdHVzIHN0 YXR1cwogc3RhdGljIHZvaWQgaW5kZXhfZGVsZXRlX3NvcnQoVE1fSW5kZXhEZWxldGVPcCAqZGVs c3RhdGUpOwogc3RhdGljIGludAlib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpOwogc3RhdGljIFhMb2dSZWNQdHIgbG9nX2hlYXBfbmV3X2NpZChSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCk7Ci1zdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RS ZXBsaWNhSWRlbnRpdHkoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlf cmVxdWlyZWQsCitzdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwKKwkJCQkJCQkJCQlCaXRtYXBzZXQgKnJpZF9hdHRy cywgYm9vbCBrZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJYm9vbCAqY29weSk7CiAKLQogLyoKICAq IEVhY2ggdHVwbGUgbG9jayBtb2RlIGhhcyBhIGNvcnJlc3BvbmRpbmcgaGVhdnl3ZWlnaHQgbG9j aywgYW5kIG9uZSBvciB0d28KICAqIGNvcnJlc3BvbmRpbmcgTXVsdGlYYWN0U3RhdHVzZXMgKG9u ZSB0byBtZXJlbHkgbG9jayB0dXBsZXMsIGFub3RoZXIgb25lIHRvCkBAIC0yODYxLDYgKzI4NTks NyBAQCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQsCiAJQnVmZmVyCQlidWZmZXI7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZm ZXI7CiAJVHJhbnNhY3Rpb25JZCBuZXdfeG1heDsKKwlCaXRtYXBzZXQgICpyaWRfYXR0cnM7CiAJ dWludDE2CQluZXdfaW5mb21hc2ssCiAJCQkJbmV3X2luZm9tYXNrMjsKIAlib29sCQloYXZlX3R1 cGxlX2xvY2sgPSBmYWxzZTsKQEAgLTI4NzMsNiArMjg3Miw4IEBAIGhlYXBfZGVsZXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIAogCUFzc2VydEhhc1Nu YXBzaG90Rm9yVG9hc3QocmVsYXRpb24pOwogCisJcmlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7CisK IAkvKgogCSAqIEZvcmJpZCB0aGlzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiwgbGVzdCBp dCBhbGxvY2F0ZSBhIGNvbWJvIENJRC4KIAkgKiBPdGhlciB3b3JrZXJzIG1pZ2h0IG5lZWQgdGhh dCBjb21ibyBDSUQgZm9yIHZpc2liaWxpdHkgY2hlY2tzLCBhbmQgd2UKQEAgLTMwNzYsNiArMzA3 Nyw3IEBAIGwxOgogCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKHRwLnRfc2VsZiks IExvY2tUdXBsZUV4Y2x1c2l2ZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQog CQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CiAJCXJl dHVybiByZXN1bHQ7CiAJfQogCkBAIC0zMDk3LDcgKzMwOTksMTAgQEAgbDE6CiAJICogQ29tcHV0 ZSByZXBsaWNhIGlkZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2Vj dGlvbiBzbwogCSAqIHdlIGRvbid0IFBBTklDIHVwb24gYSBtZW1vcnkgYWxsb2NhdGlvbiBmYWls dXJlLgogCSAqLwotCW9sZF9rZXlfdHVwbGUgPSBFeHRyYWN0UmVwbGljYUlkZW50aXR5KHJlbGF0 aW9uLCAmdHAsIHRydWUsICZvbGRfa2V5X2NvcGllZCk7CisJb2xkX2tleV90dXBsZSA9IEV4dHJh Y3RSZXBsaWNhSWRlbnRpdHkocmVsYXRpb24sICZ0cCwgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAg IHRydWUsICZvbGRfa2V5X2NvcGllZCk7CisJYm1zX2ZyZWUocmlkX2F0dHJzKTsKKwlyaWRfYXR0 cnMgPSBOVUxMOwogCiAJLyoKIAkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBwb3NzaWJseS1tdWx0 aXhhY3QtYWJsZSBvcGVyYXRpb24gaW4gdGhlIGN1cnJlbnQKQEAgLTMzMDksNyArMzMxNCwxMCBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAgKiBTZWUg dGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJz LCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVwbGUgcmF0 aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgaGVhcCB0 dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCisgKgorICogSXQncyByZXF1aXJlZCB0aGF0IHRoZSBj YWxsZXIgaGFzIGFjcXVpcmVkIHRoZSBwaW4gYW5kIGxvY2sgb24gdGhlIGJ1ZmZlci4KKyAqIFRo YXQgbG9jayBhbmQgcGluIHdpbGwgYmUgbWFuYWdlZCBoZXJlLCBub3QgaW4gdGhlIGNhbGxlci4K ICAqCiAgKiBJbiB0aGUgZmFpbHVyZSBjYXNlcywgdGhlIHJvdXRpbmUgZmlsbHMgKnRtZmQgd2l0 aCB0aGUgdHVwbGUncyB0X2N0aWQsCiAgKiB0X3htYXggKHJlc29sdmluZyBhIHBvc3NpYmxlIE11 bHRpWGFjdCwgaWYgbmVjZXNzYXJ5KSwgYW5kIHRfY21heCAodGhlIGxhc3QKQEAgLTMzMTcsMzAg KzMzMjUsMjEgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCkKICAqIGdlbmVyYXRlZCBieSBhbm90aGVyIHRyYW5zYWN0aW9u KS4KICAqLwogVE1fUmVzdWx0Ci1oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJQ29tbWFuZElkIGNp ZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVyZURhdGEgKnRt ZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpCitoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlRGF0YSAq b2xkdHVwLAorCQkJSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jv c3NjaGVjaywgYm9vbCB3YWl0LAorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1v ZGUgKmxvY2ttb2RlLCBCdWZmZXIgYnVmZmVyLAorCQkJUGFnZSBwYWdlLCBCbG9ja051bWJlciBi bG9jaywgSXRlbUlkIGxwLCBCaXRtYXBzZXQgKmhvdF9hdHRycywKKwkJCUJpdG1hcHNldCAqc3Vt X2F0dHJzLCBCaXRtYXBzZXQgKnBrX2F0dHJzLCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCUJp dG1hcHNldCAqbWl4X2F0dHJzLCBCdWZmZXIgKnZtYnVmZmVyLAorCQkJYm9vbCByZXBfaWRfa2V5 X3JlcXVpcmVkLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1 bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQo KTsKLQlCaXRtYXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJp dG1hcHNldCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQg ICppbnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKLQlJdGVt SWQJCWxwOwotCUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBUdXBsZQloZWFwdHVwOwogCUhl YXBUdXBsZQlvbGRfa2V5X3R1cGxlID0gTlVMTDsKIAlib29sCQlvbGRfa2V5X2NvcGllZCA9IGZh bHNlOwotCVBhZ2UJCXBhZ2U7Ci0JQmxvY2tOdW1iZXIgYmxvY2s7CiAJTXVsdGlYYWN0U3RhdHVz IG14YWN0X3N0YXR1czsKLQlCdWZmZXIJCWJ1ZmZlciwKLQkJCQluZXdidWYsCi0JCQkJdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyLAorCUJ1ZmZlcgkJbmV3YnVmLAogCQkJCXZtYnVmZmVyX25ldyA9 IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJbmVlZF90b2FzdDsKIAlTaXplCQluZXd0dXBzaXplLApA QCAtMzM1NCw3ICszMzUzLDYgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQlhbGxfdmlz aWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9ja2VyczsKIAlib29s CQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwgPSBmYWxzZTsKIAlUcmFu c2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLAogCQkJCXhtYXhfb2xkX3R1cGxlOwogCXVpbnQxNgkJ aW5mb21hc2tfb2xkX3R1cGxlLApAQCAtMzM2MiwxNDQgKzMzNjAsMTMgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwKIAkJCQlpbmZvbWFza19uZXdfdHVwbGUsCiAJCQkJaW5mb21hc2syX25ld190dXBs ZTsKIAotCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwotCi0JLyogQ2hlYXAsIHNp bXBsaXN0aWMgY2hlY2sgdGhhdCB0aGUgdHVwbGUgbWF0Y2hlcyB0aGUgcmVsJ3Mgcm93dHlwZS4g Ki8KLQlBc3NlcnQoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMobmV3dHVwLT50X2RhdGEpIDw9Ci0J CSAgIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSk7Ci0KKwlBc3NlcnQo QnVmZmVySXNMb2NrZWRCeU1lKGJ1ZmZlcikpOworCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkp OwogCUFzc2VydEhhc1NuYXBzaG90Rm9yVG9hc3QocmVsYXRpb24pOwogCi0JLyoKLQkgKiBGb3Ji aWQgdGhpcyBkdXJpbmcgYSBwYXJhbGxlbCBvcGVyYXRpb24sIGxlc3QgaXQgYWxsb2NhdGUgYSBj b21ibyBDSUQuCi0JICogT3RoZXIgd29ya2VycyBtaWdodCBuZWVkIHRoYXQgY29tYm8gQ0lEIGZv ciB2aXNpYmlsaXR5IGNoZWNrcywgYW5kIHdlCi0JICogaGF2ZSBubyBwcm92aXNpb24gZm9yIGJy b2FkY2FzdGluZyBpdCB0byB0aGVtLgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RSQU5TQUNUSU9O X1NUQVRFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgdXBkYXRlIHR1cGxlcyBkdXJpbmcgYSBwYXJh bGxlbCBvcGVyYXRpb24iKSkpOwotCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWNoZWNr X2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChyZWxhdGlvbiwgb3RpZCwgbmV3dHVwKTsK LSNlbmRpZgotCi0JLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIGJlIGNo ZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgotCSAqIEZvciBIT1QgY29uc2lkZXJh dGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAq IGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBt dXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0t LSBpbiB0aGUgd29yc3QgY2FzZSwgaWYgd2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9u ZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2Nr IGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVs Y2FjaGUKLQkgKiBjYWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVh cC4KLQkgKgotCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRl bnRpdHkgYW5kIGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiBy b3dzIGluIHRoZSB0YWJsZS4KLQkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVzIG9mIGVh Y2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNhY2hlIGZsdXNo IGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMgPSBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1B UF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwot CWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9B VFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAo cmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwot CWludGVyZXN0aW5nX2F0dHJzID0gTlVMTDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRf bWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRy cyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0 dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaWRfYXR0cnMpOwotCi0JYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKG90 aWQpOwotCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIsIE5VTEwpOwot CWJ1ZmZlciA9IFJlYWRCdWZmZXIocmVsYXRpb24sIGJsb2NrKTsKLQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwotCi0JLyoKLQkgKiBCZWZvcmUgbG9ja2luZyB0aGUgYnVmZmVyLCBwaW4g dGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaWYgaXQgYXBwZWFycyB0bwotCSAqIGJlIG5lY2Vzc2Fy eS4gIFNpbmNlIHdlIGhhdmVuJ3QgZ290IHRoZSBsb2NrIHlldCwgc29tZW9uZSBlbHNlIG1pZ2h0 IGJlCi0JICogaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGlzLCBzbyB3ZSdsbCBuZWVkIHRv IHJlY2hlY2sgYWZ0ZXIgd2UgaGF2ZQotCSAqIHRoZSBsb2NrLgotCSAqLwotCWlmIChQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpKQotCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwgYmxvY2ssICZ2 bWJ1ZmZlcik7Ci0KLQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK LQotCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihv dGlkKSk7Ci0KLQkvKgotCSAqIFVzdWFsbHksIGEgYnVmZmVyIHBpbiBhbmQvb3Igc25hcHNob3Qg YmxvY2tzIHBydW5pbmcgb2Ygb3RpZCwgZW5zdXJpbmcKLQkgKiB3ZSBzZWUgTFBfTk9STUFMIGhl cmUuICBXaGVuIHRoZSBvdGlkIG9yaWdpbiBpcyBhIHN5c2NhY2hlLCB3ZSBtYXkgaGF2ZQotCSAq IG5laXRoZXIgYSBwaW4gbm9yIGEgc25hcHNob3QuICBIZW5jZSwgd2UgbWF5IHNlZSBvdGhlciBM UF8gc3RhdGVzLCBlYWNoCi0JICogb2Ygd2hpY2ggaW5kaWNhdGVzIGNvbmN1cnJlbnQgcHJ1bmlu Zy4KLQkgKgotCSAqIEZhaWxpbmcgd2l0aCBUTV9VcGRhdGVkIHdvdWxkIGJlIG1vc3QgYWNjdXJh dGUuICBIb3dldmVyLCB1bmxpa2Ugb3RoZXIKLQkgKiBUTV9VcGRhdGVkIHNjZW5hcmlvcywgd2Ug ZG9uJ3Qga25vdyB0aGUgc3VjY2Vzc29yIGN0aWQgaW4gTFBfVU5VU0VEIGFuZAotCSAqIExQX0RF QUQgY2FzZXMuICBXaGlsZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBUTV9VcGRhdGVkIGFuZCBU TV9EZWxldGVkCi0JICogZG9lcyBtYXR0ZXIgdG8gU1FMIHN0YXRlbWVudHMgVVBEQVRFIGFuZCBN RVJHRSwgdGhvc2UgU1FMIHN0YXRlbWVudHMKLQkgKiBob2xkIGEgc25hcHNob3QgdGhhdCBlbnN1 cmVzIExQX05PUk1BTC4gIEhlbmNlLCB0aGUgY2hvaWNlIGJldHdlZW4KLQkgKiBUTV9VcGRhdGVk IGFuZCBUTV9EZWxldGVkIGFmZmVjdHMgb25seSB0aGUgd29yZGluZyBvZiBlcnJvciBtZXNzYWdl cy4KLQkgKiBTZXR0bGUgb24gVE1fRGVsZXRlZCwgZm9yIHR3byByZWFzb25zLiAgRmlyc3QsIGl0 IGF2b2lkcyBjb21wbGljYXRpbmcKLQkgKiB0aGUgc3BlY2lmaWNhdGlvbiBvZiB3aGVuIHRtZmQt PmN0aWQgaXMgdmFsaWQuICBTZWNvbmQsIGl0IGNyZWF0ZXMKLQkgKiBlcnJvciBsb2cgZXZpZGVu Y2UgdGhhdCB3ZSB0b29rIHRoaXMgYnJhbmNoLgotCSAqCi0JICogU2luY2UgaXQncyBwb3NzaWJs ZSB0byBzZWUgTFBfVU5VU0VEIGF0IG90aWQsIGl0J3MgYWxzbyBwb3NzaWJsZSB0byBzZWUKLQkg KiBMUF9OT1JNQUwgZm9yIGEgdHVwbGUgdGhhdCByZXBsYWNlZCBMUF9VTlVTRUQuICBJZiBpdCdz IGEgdHVwbGUgZm9yIGFuCi0JICogdW5yZWxhdGVkIHJvdywgd2UnbGwgZmFpbCB3aXRoICJkdXBs aWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSIuCi0JICogWFhYIGlmIG90aWQgaXMgdGhl IGxpdmUsIG5ld2VyIHZlcnNpb24gb2YgdGhlIG5ld3R1cCByb3csIHdlJ2xsIGRpc2NhcmQKLQkg KiBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluIHZlcnNpb25zIG9mIHRoaXMgY2F0YWxvZyByb3cgYWZ0 ZXIgdGhlIHZlcnNpb24KLQkgKiB0aGUgY2FsbGVyIGdvdCBmcm9tIHN5c2NhY2hlLiAgU2VlIHN5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYy4KLQkgKi8KLQlpZiAoIUl0ZW1JZElzTm9ybWFsKGxw KSkKLQl7Ci0JCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxp ZChyZWxhdGlvbikpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0JCUFzc2Vy dCghaGF2ZV90dXBsZV9sb2NrKTsKLQkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCi0J CQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJdG1mZC0+Y3RpZCA9ICpvdGlkOwotCQl0bWZk LT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29t bWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwotCi0JCWJtc19mcmVlKGhvdF9h dHRycyk7Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JCWJtc19mcmVlKGtleV9hdHRycyk7Ci0J CWJtc19mcmVlKGlkX2F0dHJzKTsKLQkJLyogbW9kaWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFs aXplZCAqLwotCQlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7Ci0JCXJldHVybiBUTV9EZWxl dGVkOwotCX0KLQotCS8qCi0JICogRmlsbCBpbiBlbm91Z2ggZGF0YSBpbiBvbGR0dXAgZm9yIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbyB0byB3b3JrCi0JICogcHJvcGVybHkuCi0JICovCi0Jb2xk dHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKLQlvbGR0dXAudF9k YXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwotCW9sZHR1cC50 X2xlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7Ci0Jb2xkdHVwLnRfc2VsZiA9ICpvdGlkOwotCi0J LyogdGhlIG5ldyB0dXBsZSBpcyByZWFkeSwgZXhjZXB0IGZvciB0aGlzOiAqLworCS8qIFRoZSBu ZXcgdHVwbGUgaXMgcmVhZHksIGV4Y2VwdCBmb3IgdGhpcyAqLwogCW5ld3R1cC0+dF90YWJsZU9p ZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCi0JLyoKLQkgKiBEZXRlcm1pbmUgY29s dW1ucyBtb2RpZmllZCBieSB0aGUgdXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQotCSAq IHdoZXRoZXIgYW55IG9mIHRoZSB1bm1vZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJp YnV0ZXMgaW4gdGhlCi0JICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4g IFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJpYnV0ZXMgdGhlIGZs YXR0ZW5lZCB2YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2YgdGhlCi0JICogbmV3 IHR1cGxlIHNvIHdlIG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9mIHRoZSBvbGRfa2V5X3R1cGxl LiAgU2VlCi0JICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4KLQkgKi8KLQltb2RpZmllZF9hdHRy cyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMs Ci0JCQkJCQkJCQkJCSAgaWRfYXR0cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAgbmV3dHVwLCAm aWRfaGFzX2V4dGVybmFsKTsKLQogCS8qCiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAi a2V5IiBjb2x1bW4sIHdlIGNhbiBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KIAkgKiBUaGlzIGFs bG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdlIGFyZSBydW5uaW5nIHNpbXVsdGFuZW91 c2x5CkBAIC0zNTExLDcgKzMzNzgsNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCSAqIGlzIHVw ZGF0ZXMgdGhhdCBkb24ndCBtYW5pcHVsYXRlIGtleSBjb2x1bW5zLCBub3QgdGhvc2UgdGhhdAog CSAqIHNlcmVuZGlwaXRvdXNseSBhcnJpdmUgYXQgdGhlIHNhbWUga2V5IHZhbHVlcy4KIAkgKi8K LQlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBrZXlfYXR0cnMpKQorCWlmICghYm1z X292ZXJsYXAobWl4X2F0dHJzLCBwa19hdHRycykpCiAJewogCQkqbG9ja21vZGUgPSBMb2NrVHVw bGVOb0tleUV4Y2x1c2l2ZTsKIAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzTm9LZXlV cGRhdGU7CkBAIC0zNTM1LDE3ICszNDAyLDEwIEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0 aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJCWtl eV9pbnRhY3QgPSBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIE5vdGU6IGJleW9uZCB0aGlzIHBvaW50 LCB1c2Ugb2xkdHVwIG5vdCBvdGlkIHRvIHJlZmVyIHRvIG9sZCB0dXBsZS4KLQkgKiBvdGlkIG1h eSB2ZXJ5IHdlbGwgcG9pbnQgYXQgbmV3dHVwLT50X3NlbGYsIHdoaWNoIHdlIHdpbGwgb3Zlcndy aXRlCi0JICogd2l0aCB0aGUgbmV3IHR1cGxlJ3MgbG9jYXRpb24sIHNvIHRoZXJlJ3MgZ3JlYXQg cmlzayBvZiBjb25mdXNpb24gaWYgd2UKLQkgKiB1c2Ugb3RpZCBhbnltb3JlLgotCSAqLwotCiBs MjoKIAljaGVja2VkX2xvY2tlcnMgPSBmYWxzZTsKIAlsb2NrZXJfcmVtYWlucyA9IGZhbHNlOwot CXJlc3VsdCA9IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZSgmb2xkdHVwLCBjaWQsIGJ1ZmZlcik7 CisJcmVzdWx0ID0gSGVhcFR1cGxlU2F0aXNmaWVzVXBkYXRlKG9sZHR1cCwgY2lkLCBidWZmZXIp OwogCiAJLyogc2VlIGJlbG93IGFib3V0IHRoZSAibm8gd2FpdCIgY2FzZSAqLwogCUFzc2VydChy ZXN1bHQgIT0gVE1fQmVpbmdNb2RpZmllZCB8fCB3YWl0KTsKQEAgLTM1NzcsOCArMzQzNyw4IEBA IGwyOgogCQkgKi8KIAogCQkvKiBtdXN0IGNvcHkgc3RhdGUgZGF0YSBiZWZvcmUgdW5sb2NraW5n IGJ1ZmZlciAqLwotCQl4d2FpdCA9IEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRf ZGF0YSk7Ci0JCWluZm9tYXNrID0gb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazsKKwkJeHdhaXQg PSBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC0+dF9kYXRhKTsKKwkJaW5mb21hc2sg PSBvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazsKIAogCQkvKgogCQkgKiBOb3cgd2UgaGF2ZSB0 byBkbyBzb21ldGhpbmcgYWJvdXQgdGhlIGV4aXN0aW5nIGxvY2tlci4gIElmIGl0J3MgYQpAQCAt MzYxOCwxMyArMzQ3OCwxMiBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEgbG9jayBhbmQgYWxy ZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8KIAkJCQlpZiAoIWN1cnJl bnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0 dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlv biwgJm9sZHR1cC0+dF9zZWxmLCAqbG9ja21vZGUsCiAJCQkJCQkJCQkJIExvY2tXYWl0QmxvY2ss ICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyogd2FpdCBmb3IgbXVsdGl4YWN0ICovCiAJCQkJ TXVsdGlYYWN0SWRXYWl0KChNdWx0aVhhY3RJZCkgeHdhaXQsIG14YWN0X3N0YXR1cywgaW5mb21h c2ssCi0JCQkJCQkJCXJlbGF0aW9uLCAmb2xkdHVwLnRfc2VsZiwgWExUV19VcGRhdGUsCi0JCQkJ CQkJCSZyZW1haW4pOworCQkJCQkJCQlyZWxhdGlvbiwgJm9sZHR1cC0+dF9zZWxmLCBYTFRXX1Vw ZGF0ZSwgJnJlbWFpbik7CiAJCQkJY2hlY2tlZF9sb2NrZXJzID0gdHJ1ZTsKIAkJCQlsb2NrZXJf cmVtYWlucyA9IHJlbWFpbiAhPSAwOwogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9D S19FWENMVVNJVkUpOwpAQCAtMzYzNCw5ICszNDkzLDkgQEAgbDI6CiAJCQkJICogY291bGQgdXBk YXRlIHRoaXMgdHVwbGUgYmVmb3JlIHdlIGdldCB0byB0aGlzIHBvaW50LiAgQ2hlY2sKIAkJCQkg KiBmb3IgeG1heCBjaGFuZ2UsIGFuZCBzdGFydCBvdmVyIGlmIHNvLgogCQkJCSAqLwotCQkJCWlm ICh4bWF4X2luZm9tYXNrX2NoYW5nZWQob2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKKwkJCQlp ZiAoeG1heF9pbmZvbWFza19jaGFuZ2VkKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrLAogCQkJ CQkJCQkJCSAgaW5mb21hc2spIHx8Ci0JCQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKEhlYXBUdXBs ZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCisJCQkJCSFUcmFuc2FjdGlvbklkRXF1 YWxzKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEpLAogCQkJCQkJCQkJ CSB4d2FpdCkpCiAJCQkJCWdvdG8gbDI7CiAJCQl9CkBAIC0zNjYxLDggKzM1MjAsOCBAQCBsMjoK IAkJCSAqIGJlZm9yZSB0aGlzIG9uZSwgd2hpY2ggYXJlIGltcG9ydGFudCB0byBrZWVwIGluIGNh c2UgdGhpcwogCQkJICogc3VieGFjdCBhYm9ydHMuCiAJCQkgKi8KLQkJCWlmICghSEVBUF9YTUFY X0lTX0xPQ0tFRF9PTkxZKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2spKQotCQkJCXVwZGF0ZV94 YWN0ID0gSGVhcFR1cGxlR2V0VXBkYXRlWGlkKG9sZHR1cC50X2RhdGEpOworCQkJaWYgKCFIRUFQ X1hNQVhfSVNfTE9DS0VEX09OTFkob2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2spKQorCQkJCXVw ZGF0ZV94YWN0ID0gSGVhcFR1cGxlR2V0VXBkYXRlWGlkKG9sZHR1cC0+dF9kYXRhKTsKIAkJCWVs c2UKIAkJCQl1cGRhdGVfeGFjdCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC0zNzAzLDkg KzM1NjIsOSBAQCBsMjoKIAkJCSAqIGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVy LCBCVUZGRVJfTE9DS19VTkxPQ0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24s ICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJl bGF0aW9uLCAmb2xkdHVwLT50X3NlbGYsICpsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0Qmxv Y2ssICZoYXZlX3R1cGxlX2xvY2spOwotCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0 aW9uLCAmb2xkdHVwLnRfc2VsZiwKKwkJCVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCByZWxhdGlv biwgJm9sZHR1cC0+dF9zZWxmLAogCQkJCQkJCSAgWExUV19VcGRhdGUpOwogCQkJY2hlY2tlZF9s b2NrZXJzID0gdHJ1ZTsKIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJ VkUpOwpAQCAtMzcxNSwyMCArMzU3NCwyMCBAQCBsMjoKIAkJCSAqIG90aGVyIHhhY3QgY291bGQg dXBkYXRlIHRoaXMgdHVwbGUgYmVmb3JlIHdlIGdldCB0byB0aGlzIHBvaW50LgogCQkJICogQ2hl Y2sgZm9yIHhtYXggY2hhbmdlLCBhbmQgc3RhcnQgb3ZlciBpZiBzby4KIAkJCSAqLwotCQkJaWYg KHhtYXhfaW5mb21hc2tfY2hhbmdlZChvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLCBpbmZvbWFz aykgfHwKKwkJCWlmICh4bWF4X2luZm9tYXNrX2NoYW5nZWQob2xkdHVwLT50X2RhdGEtPnRfaW5m b21hc2ssIGluZm9tYXNrKSB8fAogCQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKHh3YWl0LAotCQkJ CQkJCQkJIEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSkpKQorCQkJCQkJ CQkJIEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEpKSkKIAkJCQlnb3Rv IGwyOwogCiAJCQkvKiBPdGhlcndpc2UgY2hlY2sgaWYgaXQgY29tbWl0dGVkIG9yIGFib3J0ZWQg Ki8KLQkJCVVwZGF0ZVhtYXhIaW50Qml0cyhvbGR0dXAudF9kYXRhLCBidWZmZXIsIHh3YWl0KTsK LQkJCWlmIChvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lOVkFMSUQpCisJ CQlVcGRhdGVYbWF4SGludEJpdHMob2xkdHVwLT50X2RhdGEsIGJ1ZmZlciwgeHdhaXQpOworCQkJ aWYgKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lOVkFMSUQpCiAJCQkJ Y2FuX2NvbnRpbnVlID0gdHJ1ZTsKIAkJfQogCiAJCWlmIChjYW5fY29udGludWUpCiAJCQlyZXN1 bHQgPSBUTV9PazsKLQkJZWxzZSBpZiAoIUl0ZW1Qb2ludGVyRXF1YWxzKCZvbGR0dXAudF9zZWxm LCAmb2xkdHVwLnRfZGF0YS0+dF9jdGlkKSkKKwkJZWxzZSBpZiAoIUl0ZW1Qb2ludGVyRXF1YWxz KCZvbGR0dXAtPnRfc2VsZiwgJm9sZHR1cC0+dF9kYXRhLT50X2N0aWQpKQogCQkJcmVzdWx0ID0g VE1fVXBkYXRlZDsKIAkJZWxzZQogCQkJcmVzdWx0ID0gVE1fRGVsZXRlZDsKQEAgLTM3NDEsMzkg KzM2MDAsMzMgQEAgbDI6CiAJCQkgICByZXN1bHQgPT0gVE1fVXBkYXRlZCB8fAogCQkJICAgcmVz dWx0ID09IFRNX0RlbGV0ZWQgfHwKIAkJCSAgIHJlc3VsdCA9PSBUTV9CZWluZ01vZGlmaWVkKTsK LQkJQXNzZXJ0KCEob2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzayAmIEhFQVBfWE1BWF9JTlZBTElE KSk7CisJCUFzc2VydCghKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lO VkFMSUQpKTsKIAkJQXNzZXJ0KHJlc3VsdCAhPSBUTV9VcGRhdGVkIHx8Ci0JCQkgICAhSXRlbVBv aW50ZXJFcXVhbHMoJm9sZHR1cC50X3NlbGYsICZvbGR0dXAudF9kYXRhLT50X2N0aWQpKTsKKwkJ CSAgICFJdGVtUG9pbnRlckVxdWFscygmb2xkdHVwLT50X3NlbGYsICZvbGR0dXAtPnRfZGF0YS0+ dF9jdGlkKSk7CiAJfQogCiAJaWYgKGNyb3NzY2hlY2sgIT0gSW52YWxpZFNuYXBzaG90ICYmIHJl c3VsdCA9PSBUTV9PaykKIAl7CiAJCS8qIFBlcmZvcm0gYWRkaXRpb25hbCBjaGVjayBmb3IgdHJh bnNhY3Rpb24tc25hcHNob3QgbW9kZSBSSSB1cGRhdGVzICovCi0JCWlmICghSGVhcFR1cGxlU2F0 aXNmaWVzVmlzaWJpbGl0eSgmb2xkdHVwLCBjcm9zc2NoZWNrLCBidWZmZXIpKQorCQlpZiAoIUhl YXBUdXBsZVNhdGlzZmllc1Zpc2liaWxpdHkob2xkdHVwLCBjcm9zc2NoZWNrLCBidWZmZXIpKQog CQkJcmVzdWx0ID0gVE1fVXBkYXRlZDsKIAl9CiAKIAlpZiAocmVzdWx0ICE9IFRNX09rKQogCXsK LQkJdG1mZC0+Y3RpZCA9IG9sZHR1cC50X2RhdGEtPnRfY3RpZDsKLQkJdG1mZC0+eG1heCA9IEhl YXBUdXBsZUhlYWRlckdldFVwZGF0ZVhpZChvbGR0dXAudF9kYXRhKTsKKwkJdG1mZC0+Y3RpZCA9 IG9sZHR1cC0+dF9kYXRhLT50X2N0aWQ7CisJCXRtZmQtPnhtYXggPSBIZWFwVHVwbGVIZWFkZXJH ZXRVcGRhdGVYaWQob2xkdHVwLT50X2RhdGEpOwogCQlpZiAocmVzdWx0ID09IFRNX1NlbGZNb2Rp ZmllZCkKLQkJCXRtZmQtPmNtYXggPSBIZWFwVHVwbGVIZWFkZXJHZXRDbWF4KG9sZHR1cC50X2Rh dGEpOworCQkJdG1mZC0+Y21heCA9IEhlYXBUdXBsZUhlYWRlckdldENtYXgob2xkdHVwLT50X2Rh dGEpOwogCQllbHNlCiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJVW5sb2Nr VHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOwotCQlp ZiAodm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKLQkJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIp OworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmb2xkdHVwLT50X3NlbGYsICpsb2Nr bW9kZSk7CisJCWlmICgqdm1idWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKKwkJCVJlbGVhc2VCdWZm ZXIoKnZtYnVmZmVyKTsKIAkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAotCQlibXNfZnJl ZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNfZnJlZShrZXlfYXR0 cnMpOwotCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsK LQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApA QCAtMzc4NiwxMCArMzYzOSwxMCBAQCBsMjoKIAkgKiB0dXBsZSBoYXMgYmVlbiBsb2NrZWQgb3Ig dXBkYXRlZCB1bmRlciB1cywgYnV0IGhvcGVmdWxseSBpdCB3b24ndAogCSAqIGhhcHBlbiB2ZXJ5 IG9mdGVuLgogCSAqLwotCWlmICh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0Fs bFZpc2libGUocGFnZSkpCisJaWYgKCp2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJ c0FsbFZpc2libGUocGFnZSkpCiAJewogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tf VU5MT0NLKTsKLQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAmdm1idWZmZXIp OworCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwgYmxvY2ssIHZtYnVmZmVyKTsKIAkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCWdvdG8gbDI7CiAJfQpA QCAtMzgwMCw5ICszNjUzLDkgQEAgbDI6CiAJICogSWYgdGhlIHR1cGxlIHdlJ3JlIHVwZGF0aW5n IGlzIGxvY2tlZCwgd2UgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgbG9ja2luZwogCSAqIGluZm8gaW4g dGhlIG9sZCB0dXBsZSdzIFhtYXguICBQcmVwYXJlIGEgbmV3IFhtYXggdmFsdWUgZm9yIHRoaXMu CiAJICovCi0JY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdY bWF4KG9sZHR1cC50X2RhdGEpLAotCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywK LQkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syLAorCWNvbXB1dGVfbmV3X3htYXhf aW5mb21hc2soSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAtPnRfZGF0YSksCisJCQkJ CQkJICBvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzaywKKwkJCQkJCQkgIG9sZHR1cC0+dF9kYXRh LT50X2luZm9tYXNrMiwKIAkJCQkJCQkgIHhpZCwgKmxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAg JnhtYXhfb2xkX3R1cGxlLCAmaW5mb21hc2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNr Ml9vbGRfdHVwbGUpOwpAQCAtMzgxNCwxMiArMzY2NywxMiBAQCBsMjoKIAkgKiB0dXBsZS4gIChJ biByYXJlIGNhc2VzIHRoYXQgbWlnaHQgYWxzbyBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBhbmQg eWV0CiAJICogbm90IGhhdmUgdGhlIEhFQVBfWE1BWF9JTlZBTElEIGJpdCBzZXQ7IHRoYXQncyBm aW5lLikKIAkgKi8KLQlpZiAoKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sgJiBIRUFQX1hNQVhf SU5WQUxJRCkgfHwKLQkJSEVBUF9MT0NLRURfVVBHUkFERUQob2xkdHVwLnRfZGF0YS0+dF9pbmZv bWFzaykgfHwKKwlpZiAoKG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrICYgSEVBUF9YTUFYX0lO VkFMSUQpIHx8CisJCUhFQVBfTE9DS0VEX1VQR1JBREVEKG9sZHR1cC0+dF9kYXRhLT50X2luZm9t YXNrKSB8fAogCQkoY2hlY2tlZF9sb2NrZXJzICYmICFsb2NrZXJfcmVtYWlucykpCiAJCXhtYXhf bmV3X3R1cGxlID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQotCQl4bWF4X25ld190dXBs ZSA9IEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSk7CisJCXhtYXhfbmV3 X3R1cGxlID0gSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heChvbGR0dXAtPnRfZGF0YSk7CiAKIAlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtYXhfbmV3X3R1cGxlKSkKIAl7CkBAIC0zODM0LDcg KzM2ODcsNyBAQCBsMjoKIAkJICogTm90ZSB0aGF0IHNpbmNlIHdlJ3JlIGRvaW5nIGFuIHVwZGF0 ZSwgdGhlIG9ubHkgcG9zc2liaWxpdHkgaXMgdGhhdAogCQkgKiB0aGUgbG9ja2VycyBoYWQgRk9S IEtFWSBTSEFSRSBsb2NrLgogCQkgKi8KLQkJaWYgKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sg JiBIRUFQX1hNQVhfSVNfTVVMVEkpCisJCWlmIChvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzayAm IEhFQVBfWE1BWF9JU19NVUxUSSkKIAkJewogCQkJR2V0TXVsdGlYYWN0SWRIaW50Qml0cyh4bWF4 X25ld190dXBsZSwgJmluZm9tYXNrX25ld190dXBsZSwKIAkJCQkJCQkJICAgJmluZm9tYXNrMl9u ZXdfdHVwbGUpOwpAQCAtMzg2Miw3ICszNzE1LDcgQEAgbDI6CiAJICogUmVwbGFjZSBjaWQgd2l0 aCBhIGNvbWJvIENJRCBpZiBuZWNlc3NhcnkuICBOb3RlIHRoYXQgd2UgYWxyZWFkeSBwdXQKIAkg KiB0aGUgcGxhaW4gY2lkIGludG8gdGhlIG5ldyB0dXBsZS4KIAkgKi8KLQlIZWFwVHVwbGVIZWFk ZXJBZGp1c3RDbWF4KG9sZHR1cC50X2RhdGEsICZjaWQsICZpc2NvbWJvKTsKKwlIZWFwVHVwbGVI ZWFkZXJBZGp1c3RDbWF4KG9sZHR1cC0+dF9kYXRhLCAmY2lkLCAmaXNjb21ibyk7CiAKIAkvKgog CSAqIElmIHRoZSB0b2FzdGVyIG5lZWRzIHRvIGJlIGFjdGl2YXRlZCwgT1IgaWYgdGhlIG5ldyB0 dXBsZSB3aWxsIG5vdCBmaXQKQEAgLTM4NzksMTIgKzM3MzIsMTIgQEAgbDI6CiAJCXJlbGF0aW9u LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXKQogCXsKIAkJLyogdG9hc3QgdGFi bGUgZW50cmllcyBzaG91bGQgbmV2ZXIgYmUgcmVjdXJzaXZlbHkgdG9hc3RlZCAqLwotCQlBc3Nl cnQoIUhlYXBUdXBsZUhhc0V4dGVybmFsKCZvbGR0dXApKTsKKwkJQXNzZXJ0KCFIZWFwVHVwbGVI YXNFeHRlcm5hbChvbGR0dXApKTsKIAkJQXNzZXJ0KCFIZWFwVHVwbGVIYXNFeHRlcm5hbChuZXd0 dXApKTsKIAkJbmVlZF90b2FzdCA9IGZhbHNlOwogCX0KIAllbHNlCi0JCW5lZWRfdG9hc3QgPSAo SGVhcFR1cGxlSGFzRXh0ZXJuYWwoJm9sZHR1cCkgfHwKKwkJbmVlZF90b2FzdCA9IChIZWFwVHVw bGVIYXNFeHRlcm5hbChvbGR0dXApIHx8CiAJCQkJCSAgSGVhcFR1cGxlSGFzRXh0ZXJuYWwobmV3 dHVwKSB8fAogCQkJCQkgIG5ld3R1cC0+dF9sZW4gPiBUT0FTVF9UVVBMRV9USFJFU0hPTEQpOwog CkBAIC0zOTE3LDkgKzM3NzAsOSBAQCBsMjoKIAkJICogdXBkYXRpbmcsIGJlY2F1c2UgdGhlIHBv dGVudGlhbGx5IGNyZWF0ZWQgbXVsdGl4YWN0IHdvdWxkIG90aGVyd2lzZQogCQkgKiBiZSB3cm9u Zy4KIAkJICovCi0JCWNvbXB1dGVfbmV3X3htYXhfaW5mb21hc2soSGVhcFR1cGxlSGVhZGVyR2V0 UmF3WG1heChvbGR0dXAudF9kYXRhKSwKLQkJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9t YXNrLAotCQkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syLAorCQljb21wdXRlX25l d194bWF4X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLT50X2RhdGEp LAorCQkJCQkJCQkgIG9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrLAorCQkJCQkJCQkgIG9sZHR1 cC0+dF9kYXRhLT50X2luZm9tYXNrMiwKIAkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2Us CiAJCQkJCQkJCSAgJnhtYXhfbG9ja19vbGRfdHVwbGUsICZpbmZvbWFza19sb2NrX29sZF90dXBs ZSwKIAkJCQkJCQkJICAmaW5mb21hc2syX2xvY2tfb2xkX3R1cGxlKTsKQEAgLTM5MjksMTggKzM3 ODIsMTggQEAgbDI6CiAJCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJCS8qIENsZWFyIG9ic29s ZXRlIHZpc2liaWxpdHkgZmxhZ3MgLi4uICovCi0JCW9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2sg Jj0gfihIRUFQX1hNQVhfQklUUyB8IEhFQVBfTU9WRUQpOwotCQlvbGR0dXAudF9kYXRhLT50X2lu Zm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7Ci0JCUhlYXBUdXBsZUNsZWFySG90VXBkYXRl ZCgmb2xkdHVwKTsKKwkJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2sgJj0gfihIRUFQX1hNQVhf QklUUyB8IEhFQVBfTU9WRUQpOworCQlvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazIgJj0gfkhF QVBfS0VZU19VUERBVEVEOworCQlIZWFwVHVwbGVDbGVhckhvdFVwZGF0ZWQob2xkdHVwKTsKIAkJ LyogLi4uIGFuZCBzdG9yZSBpbmZvIGFib3V0IHRyYW5zYWN0aW9uIHVwZGF0aW5nIHRoaXMgdHVw bGUgKi8KIAkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtYXhfbG9ja19vbGRfdHVwbGUp KTsKLQkJSGVhcFR1cGxlSGVhZGVyU2V0WG1heChvbGR0dXAudF9kYXRhLCB4bWF4X2xvY2tfb2xk X3R1cGxlKTsKLQkJb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzayB8PSBpbmZvbWFza19sb2NrX29s ZF90dXBsZTsKLQkJb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gaW5mb21hc2syX2xvY2tf b2xkX3R1cGxlOwotCQlIZWFwVHVwbGVIZWFkZXJTZXRDbWF4KG9sZHR1cC50X2RhdGEsIGNpZCwg aXNjb21ibyk7CisJCUhlYXBUdXBsZUhlYWRlclNldFhtYXgob2xkdHVwLT50X2RhdGEsIHhtYXhf bG9ja19vbGRfdHVwbGUpOworCQlvbGR0dXAtPnRfZGF0YS0+dF9pbmZvbWFzayB8PSBpbmZvbWFz a19sb2NrX29sZF90dXBsZTsKKwkJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2syIHw9IGluZm9t YXNrMl9sb2NrX29sZF90dXBsZTsKKwkJSGVhcFR1cGxlSGVhZGVyU2V0Q21heChvbGR0dXAtPnRf ZGF0YSwgY2lkLCBpc2NvbWJvKTsKIAogCQkvKiB0ZW1wb3JhcmlseSBtYWtlIGl0IGxvb2sgbm90 LXVwZGF0ZWQsIGJ1dCBsb2NrZWQgKi8KLQkJb2xkdHVwLnRfZGF0YS0+dF9jdGlkID0gb2xkdHVw LnRfc2VsZjsKKwkJb2xkdHVwLT50X2RhdGEtPnRfY3RpZCA9IG9sZHR1cC0+dF9zZWxmOwogCiAJ CS8qCiAJCSAqIENsZWFyIGFsbC1mcm96ZW4gYml0IG9uIHZpc2liaWxpdHkgbWFwIGlmIG5lZWRl ZC4gV2UgY291bGQKQEAgLTM5NDksNyArMzgwMiw3IEBAIGwyOgogCQkgKiB3b3J0aHdoaWxlLgog CQkgKi8KIAkJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIGJsb2NrLCB2bWJ1ZmZlciwKKwkJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGJsb2NrLCAqdm1idWZmZXIsCiAJCQkJCQkJCVZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTikpCiAJCQljbGVhcmVkX2FsbF9mcm96ZW4gPSB0cnVlOwogCkBAIC0zOTYzLDEwICszODE2 LDEwIEBAIGwyOgogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJCdWZmZXIo MCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOwogCi0JCQl4bHJlYy5vZmZudW0gPSBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigmb2xkdHVwLnRfc2VsZik7CisJCQl4bHJlYy5vZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmb2xkdHVwLT50X3NlbGYpOwogCQkJeGxyZWMueG1h eCA9IHhtYXhfbG9ja19vbGRfdHVwbGU7Ci0JCQl4bHJlYy5pbmZvYml0c19zZXQgPSBjb21wdXRl X2luZm9iaXRzKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2ssCi0JCQkJCQkJCQkJCQkgIG9sZHR1 cC50X2RhdGEtPnRfaW5mb21hc2syKTsKKwkJCXhscmVjLmluZm9iaXRzX3NldCA9IGNvbXB1dGVf aW5mb2JpdHMob2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2ssCisJCQkJCQkJCQkJCQkgIG9sZHR1 cC0+dF9kYXRhLT50X2luZm9tYXNrMik7CiAJCQl4bHJlYy5mbGFncyA9CiAJCQkJY2xlYXJlZF9h bGxfZnJvemVuID8gWExIX0xPQ0tfQUxMX0ZST1pFTl9DTEVBUkVEIDogMDsKIAkJCVhMb2dSZWdp c3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwTG9jayk7CkBAIC0zOTg4LDcgKzM4NDEsNyBAQCBs MjoKIAkJaWYgKG5lZWRfdG9hc3QpCiAJCXsKIAkJCS8qIE5vdGUgd2UgYWx3YXlzIHVzZSBXQUwg YW5kIEZTTSBkdXJpbmcgdXBkYXRlcyAqLwotCQkJaGVhcHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0 X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAmb2xkdHVwLCAwKTsKKwkJCWhlYXB0dXAgPSBo ZWFwX3RvYXN0X2luc2VydF9vcl91cGRhdGUocmVsYXRpb24sIG5ld3R1cCwgb2xkdHVwLCAwKTsK IAkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVwLT50X2xlbik7CiAJCX0KIAkJZWxzZQpA QCAtNDAyNCwyMCArMzg3NywyMCBAQCBsMjoKIAkJCQkvKiBJdCBkb2Vzbid0IGZpdCwgbXVzdCB1 c2UgUmVsYXRpb25HZXRCdWZmZXJGb3JUdXBsZS4gKi8KIAkJCQluZXdidWYgPSBSZWxhdGlvbkdl dEJ1ZmZlckZvclR1cGxlKHJlbGF0aW9uLCBoZWFwdHVwLT50X2xlbiwKIAkJCQkJCQkJCQkJCSAg IGJ1ZmZlciwgMCwgTlVMTCwKLQkJCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcl9uZXcsICZ2bWJ1ZmZl ciwKKwkJCQkJCQkJCQkJCSAgICZ2bWJ1ZmZlcl9uZXcsIHZtYnVmZmVyLAogCQkJCQkJCQkJCQkJ ICAgMCk7CiAJCQkJLyogV2UncmUgYWxsIGRvbmUuICovCiAJCQkJYnJlYWs7CiAJCQl9CiAJCQkv KiBBY3F1aXJlIFZNIHBhZ2UgcGluIGlmIG5lZWRlZCBhbmQgd2UgZG9uJ3QgaGF2ZSBpdC4gKi8K LQkJCWlmICh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCi0JCQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAmdm1idWZmZXIpOwor CQkJaWYgKCp2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCisJCQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCB2bWJ1ZmZlcik7CiAJ CQkvKiBSZS1hY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSBvbGQgdHVwbGUncyBwYWdlLiAqLwogCQkJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCQkvKiBSZS1jaGVj ayB1c2luZyB0aGUgdXAtdG8tZGF0ZSBmcmVlIHNwYWNlICovCiAJCQlwYWdlZnJlZSA9IFBhZ2VH ZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOwogCQkJaWYgKG5ld3R1cHNpemUgPiBwYWdlZnJlZSB8fAot CQkJCSh2bWJ1ZmZlciA9PSBJbnZhbGlkQnVmZmVyICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkp KQorCQkJCSgqdm1idWZmZXIgPT0gSW52YWxpZEJ1ZmZlciAmJiBQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpKSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFJhdHMsIGl0IGRvZXNuJ3QgZml0IGFueW1vcmUs IG9yIHNvbWVib2R5IGp1c3Qgbm93IHNldCB0aGUKQEAgLTQwNzUsNyArMzkyOCw3IEBAIGwyOgog CSAqIHdpbGwgaW5jbHVkZSBjaGVja2luZyB0aGUgcmVsYXRpb24gbGV2ZWwsIHRoZXJlIGlzIG5v IGJlbmVmaXQgdG8gYQogCSAqIHNlcGFyYXRlIGNoZWNrIGZvciB0aGUgbmV3IHR1cGxlLgogCSAq LwotCUNoZWNrRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihyZWxhdGlvbiwgJm9sZHR1cC50X3Nl bGYsCisJQ2hlY2tGb3JTZXJpYWxpemFibGVDb25mbGljdEluKHJlbGF0aW9uLCAmb2xkdHVwLT50 X3NlbGYsCiAJCQkJCQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcikpOwogCiAJLyoK QEAgLTQwODMsNyArMzkzNiw2IEBAIGwyOgogCSAqIGhhcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBu ZXcgdHVwbGUuICBJZiB0aGV5IGFyZSB0aGUgc2FtZSBidWZmZXIsIG9ubHkKIAkgKiBvbmUgcGlu IGlzIGhlbGQuCiAJICovCi0KIAlpZiAobmV3YnVmID09IGJ1ZmZlcikKIAl7CiAJCS8qCkBAIC00 MDkxLDcgKzM5NDMsNyBAQCBsMjoKIAkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYg YW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgogCQkgKiBjaGFuZ2VkLgogCQkgKi8K LQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaG90X2F0dHJzKSkKKwkJaWYgKCFi bXNfb3ZlcmxhcChtaXhfYXR0cnMsIGhvdF9hdHRycykpCiAJCXsKIAkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKIApAQCAtNDEwMiw3ICszOTU0LDcgQEAgbDI6CiAJCQkgKiBpbmRleGVzIGlmIHRo ZSBjb2x1bW5zIHdlcmUgdXBkYXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0CiAJCQkgKiBl LmcuIHZhbHVlIGJvdW5kIGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KIAkJCSAqLwot CQkJaWYgKGJtc19vdmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQorCQkJaWYgKGJt c19vdmVybGFwKG1peF9hdHRycywgc3VtX2F0dHJzKSkKIAkJCQlzdW1tYXJpemVkX3VwZGF0ZSA9 IHRydWU7CiAJCX0KIAl9CkBAIC00MTE5LDEwICszOTcxLDggQEAgbDI6CiAJICogbG9nZ2VkLiAg UGFzcyBvbGQga2V5IHJlcXVpcmVkIGFzIHRydWUgb25seSBpZiB0aGUgcmVwbGljYSBpZGVudGl0 eSBrZXkKIAkgKiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMgZXh0ZXJuYWwgZGF0YS4K IAkgKi8KLQlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlvbiwg Jm9sZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgaWRfYXR0 cnMpIHx8Ci0JCQkJCQkJCQkJICAgaWRfaGFzX2V4dGVybmFsLAotCQkJCQkJCQkJCSAgICZvbGRf a2V5X2NvcGllZCk7CisJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVs YXRpb24sIG9sZHR1cCwgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAgIHJlcF9pZF9rZXlfcmVxdWly ZWQsICZvbGRfa2V5X2NvcGllZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUg dGlsbCBjaGFuZ2VzIGFyZSBsb2dnZWQgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTQx NDQsNyArMzk5NCw3IEBAIGwyOgogCWlmICh1c2VfaG90X3VwZGF0ZSkKIAl7CiAJCS8qIE1hcmsg dGhlIG9sZCB0dXBsZSBhcyBIT1QtdXBkYXRlZCAqLwotCQlIZWFwVHVwbGVTZXRIb3RVcGRhdGVk KCZvbGR0dXApOworCQlIZWFwVHVwbGVTZXRIb3RVcGRhdGVkKG9sZHR1cCk7CiAJCS8qIEFuZCBt YXJrIHRoZSBuZXcgdHVwbGUgYXMgaGVhcC1vbmx5ICovCiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5 KGhlYXB0dXApOwogCQkvKiBNYXJrIHRoZSBjYWxsZXIncyBjb3B5IHRvbywgaW4gY2FzZSBkaWZm ZXJlbnQgZnJvbSBoZWFwdHVwICovCkBAIC00MTUzLDcgKzQwMDMsNyBAQCBsMjoKIAllbHNlCiAJ ewogCQkvKiBNYWtlIHN1cmUgdHVwbGVzIGFyZSBjb3JyZWN0bHkgbWFya2VkIGFzIG5vdC1IT1Qg Ki8KLQkJSGVhcFR1cGxlQ2xlYXJIb3RVcGRhdGVkKCZvbGR0dXApOworCQlIZWFwVHVwbGVDbGVh ckhvdFVwZGF0ZWQob2xkdHVwKTsKIAkJSGVhcFR1cGxlQ2xlYXJIZWFwT25seShoZWFwdHVwKTsK IAkJSGVhcFR1cGxlQ2xlYXJIZWFwT25seShuZXd0dXApOwogCX0KQEAgLTQxNjIsMTcgKzQwMTIs MTcgQEAgbDI6CiAKIAogCS8qIENsZWFyIG9ic29sZXRlIHZpc2liaWxpdHkgZmxhZ3MsIHBvc3Np Ymx5IHNldCBieSBvdXJzZWx2ZXMgYWJvdmUuLi4gKi8KLQlvbGR0dXAudF9kYXRhLT50X2luZm9t YXNrICY9IH4oSEVBUF9YTUFYX0JJVFMgfCBIRUFQX01PVkVEKTsKLQlvbGR0dXAudF9kYXRhLT50 X2luZm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CisJb2xkdHVwLT50X2RhdGEtPnRfaW5m b21hc2sgJj0gfihIRUFQX1hNQVhfQklUUyB8IEhFQVBfTU9WRUQpOworCW9sZHR1cC0+dF9kYXRh LT50X2luZm9tYXNrMiAmPSB+SEVBUF9LRVlTX1VQREFURUQ7CiAJLyogLi4uIGFuZCBzdG9yZSBp bmZvIGFib3V0IHRyYW5zYWN0aW9uIHVwZGF0aW5nIHRoaXMgdHVwbGUgKi8KIAlBc3NlcnQoVHJh bnNhY3Rpb25JZElzVmFsaWQoeG1heF9vbGRfdHVwbGUpKTsKLQlIZWFwVHVwbGVIZWFkZXJTZXRY bWF4KG9sZHR1cC50X2RhdGEsIHhtYXhfb2xkX3R1cGxlKTsKLQlvbGR0dXAudF9kYXRhLT50X2lu Zm9tYXNrIHw9IGluZm9tYXNrX29sZF90dXBsZTsKLQlvbGR0dXAudF9kYXRhLT50X2luZm9tYXNr MiB8PSBpbmZvbWFzazJfb2xkX3R1cGxlOwotCUhlYXBUdXBsZUhlYWRlclNldENtYXgob2xkdHVw LnRfZGF0YSwgY2lkLCBpc2NvbWJvKTsKKwlIZWFwVHVwbGVIZWFkZXJTZXRYbWF4KG9sZHR1cC0+ dF9kYXRhLCB4bWF4X29sZF90dXBsZSk7CisJb2xkdHVwLT50X2RhdGEtPnRfaW5mb21hc2sgfD0g aW5mb21hc2tfb2xkX3R1cGxlOworCW9sZHR1cC0+dF9kYXRhLT50X2luZm9tYXNrMiB8PSBpbmZv bWFzazJfb2xkX3R1cGxlOworCUhlYXBUdXBsZUhlYWRlclNldENtYXgob2xkdHVwLT50X2RhdGEs IGNpZCwgaXNjb21ibyk7CiAKIAkvKiByZWNvcmQgYWRkcmVzcyBvZiBuZXcgdHVwbGUgaW4gdF9j dGlkIG9mIG9sZCBvbmUgKi8KLQlvbGR0dXAudF9kYXRhLT50X2N0aWQgPSBoZWFwdHVwLT50X3Nl bGY7CisJb2xkdHVwLT50X2RhdGEtPnRfY3RpZCA9IGhlYXB0dXAtPnRfc2VsZjsKIAogCS8qIGNs ZWFyIFBEX0FMTF9WSVNJQkxFIGZsYWdzLCByZXNldCBhbGwgdmlzaWJpbGl0eW1hcCBiaXRzICov CiAJaWYgKFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShidWZmZXIpKSkKQEAgLTQxODAs NyArNDAzMCw3IEBAIGwyOgogCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gdHJ1ZTsKIAkJUGFnZUNs ZWFyQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwogCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbGF0aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCXZtYnVm ZmVyLCBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCQkJCQkJCSp2bWJ1ZmZlciwgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKIAl9CiAJaWYgKG5ld2J1ZiAhPSBidWZmZXIgJiYgUGFnZUlz QWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKG5ld2J1ZikpKQogCXsKQEAgLTQyMDUsMTIgKzQwNTUs MTIgQEAgbDI6CiAJCSAqLwogCQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWxhdGlvbikpCiAJCXsKLQkJCWxvZ19oZWFwX25ld19jaWQocmVsYXRpb24sICZvbGR0 dXApOworCQkJbG9nX2hlYXBfbmV3X2NpZChyZWxhdGlvbiwgb2xkdHVwKTsKIAkJCWxvZ19oZWFw X25ld19jaWQocmVsYXRpb24sIGhlYXB0dXApOwogCQl9CiAKIAkJcmVjcHRyID0gbG9nX2hlYXBf dXBkYXRlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCSBuZXdidWYsICZvbGR0dXAsIGhlYXB0 dXAsCisJCQkJCQkJCSBuZXdidWYsIG9sZHR1cCwgaGVhcHR1cCwKIAkJCQkJCQkJIG9sZF9rZXlf dHVwbGUsCiAJCQkJCQkJCSBhbGxfdmlzaWJsZV9jbGVhcmVkLAogCQkJCQkJCQkgYWxsX3Zpc2li bGVfY2xlYXJlZF9uZXcpOwpAQCAtNDIzNSw3ICs0MDg1LDcgQEAgbDI6CiAJICogYm90aCB0dXBs ZSB2ZXJzaW9ucyBpbiBvbmUgY2FsbCB0byBpbnZhbC5jIHNvIHdlIGNhbiBhdm9pZCByZWR1bmRh bnQKIAkgKiBzaW52YWwgbWVzc2FnZXMuKQogCSAqLwotCUNhY2hlSW52YWxpZGF0ZUhlYXBUdXBs ZShyZWxhdGlvbiwgJm9sZHR1cCwgaGVhcHR1cCk7CisJQ2FjaGVJbnZhbGlkYXRlSGVhcFR1cGxl KHJlbGF0aW9uLCBvbGR0dXAsIGhlYXB0dXApOwogCiAJLyogTm93IHdlIGNhbiByZWxlYXNlIHRo ZSBidWZmZXIocykgKi8KIAlpZiAobmV3YnVmICE9IGJ1ZmZlcikKQEAgLTQyNDMsMTQgKzQwOTMs MTQgQEAgbDI6CiAJUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCWlmIChCdWZmZXJJc1ZhbGlkKHZt YnVmZmVyX25ldykpCiAJCVJlbGVhc2VCdWZmZXIodm1idWZmZXJfbmV3KTsKLQlpZiAoQnVmZmVy SXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCWlmIChCdWZm ZXJJc1ZhbGlkKCp2bWJ1ZmZlcikpCisJCVJlbGVhc2VCdWZmZXIoKnZtYnVmZmVyKTsKIAogCS8q CiAJICogUmVsZWFzZSB0aGUgbG1nciB0dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQuCiAJICovCiAJ aWYgKGhhdmVfdHVwbGVfbG9jaykKLQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9s ZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOworCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24s ICZvbGR0dXAtPnRfc2VsZiwgKmxvY2ttb2RlKTsKIAogCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0 ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIpOwogCkBAIC00Mjgz LDEzICs0MTMzLDYgQEAgbDI6CiAJaWYgKG9sZF9rZXlfdHVwbGUgIT0gTlVMTCAmJiBvbGRfa2V5 X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tleV90dXBsZSk7CiAKLQlibXNfZnJlZSho b3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsK LQlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19m cmVlKGludGVyZXN0aW5nX2F0dHJzKTsKLQogCXJldHVybiBUTV9PazsKIH0KIApAQCAtNDI5OCw3 ICs0MTQxLDcgQEAgbDI6CiAgKiBDb25maXJtIGFkZXF1YXRlIGxvY2sgaGVsZCBkdXJpbmcgaGVh cF91cGRhdGUoKSwgcGVyIHJ1bGVzIGZyb20KICAqIFJFQURNRS50dXBsb2NrIHNlY3Rpb24gIkxv Y2tpbmcgdG8gd3JpdGUgaW5wbGFjZS11cGRhdGVkIHRhYmxlcyIuCiAgKi8KLXN0YXRpYyB2b2lk Cit2b2lkCiBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRpb24gcmVs YXRpb24sCiAJCQkJCQkJCQkgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAogCQkJCQkJCQkJ IEhlYXBUdXBsZSBuZXd0dXApCkBAIC00NDcwLDcgKzQzMTMsNyBAQCBoZWFwX2F0dHJfZXF1YWxz KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1 ZTIsCiAgKiBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcpIG9mIHRoZSBvbGQgdHVwbGUgaXMgYSBtZW1i ZXIgb2YgZXh0ZXJuYWxfY29scyBhbmQgaXMKICAqIHN0b3JlZCBleHRlcm5hbGx5LgogICovCi1z dGF0aWMgQml0bWFwc2V0ICoKK0JpdG1hcHNldCAqCiBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8o UmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAog CQkJCQkJIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKQEAgLTQ1NTMsMjUgKzQzOTYsMTc1IEBA IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlvbiwKIH0KIAogLyoKLSAq CXNpbXBsZV9oZWFwX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQotICoKLSAqIFRoaXMgcm91dGlu ZSBtYXkgYmUgdXNlZCB0byB1cGRhdGUgYSB0dXBsZSB3aGVuIGNvbmN1cnJlbnQgdXBkYXRlcyBv ZgotICogdGhlIHRhcmdldCB0dXBsZSBhcmUgbm90IGV4cGVjdGVkIChmb3IgZXhhbXBsZSwgYmVj YXVzZSB3ZSBoYXZlIGEgbG9jawotICogb24gdGhlIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0 aGUgdHVwbGUpLiAgQW55IGZhaWx1cmUgaXMgcmVwb3J0ZWQKLSAqIHZpYSBlcmVwb3J0KCkuCisg KiBUaGlzIHJvdXRpbmUgbWF5IGJlIHVzZWQgdG8gdXBkYXRlIGEgdHVwbGUgd2hlbiBjb25jdXJy ZW50IHVwZGF0ZXMgb2YgdGhlCisgKiB0YXJnZXQgdHVwbGUgYXJlIG5vdCBleHBlY3RlZCAoZm9y IGV4YW1wbGUsIGJlY2F1c2Ugd2UgaGF2ZSBhIGxvY2sgb24gdGhlCisgKiByZWxhdGlvbiBhc3Nv Y2lhdGVkIHdpdGggdGhlIHR1cGxlKS4gIEFueSBmYWlsdXJlIGlzIHJlcG9ydGVkIHZpYSBlcmVw b3J0KCkuCiAgKi8KIHZvaWQKLXNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwLAorc2ltcGxlX2hlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXBsZSwKIAkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykK IHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJTG9ja1R1cGxl TW9kZSBsb2NrbW9kZTsKKwlCdWZmZXIJCWJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKKwlQYWdlCQlwYWdlOworCUJsb2NrTnVtYmVyIGJsb2NrOworCUJpdG1hcHNl dCAgKmhvdF9hdHRycywKKwkJCSAgICpzdW1fYXR0cnMsCisJCQkgICAqcGtfYXR0cnMsCisJCQkg ICAqcmlkX2F0dHJzLAorCQkJICAgKm1peF9hdHRycywKKwkJCSAgICppZHhfYXR0cnM7CisJSXRl bUlkCQlscDsKKwlIZWFwVHVwbGVEYXRhIG9sZHR1cDsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVp cmVkID0gZmFsc2U7CisKKwlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8q IENoZWFwLCBzaW1wbGlzdGljIGNoZWNrIHRoYXQgdGhlIHR1cGxlIG1hdGNoZXMgdGhlIHJlbCdz IHJvd3R5cGUuICovCisJQXNzZXJ0KEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cGxlLT50X2Rh dGEpIDw9CisJCSAgIFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSk7CisK KwkvKgorCSAqIEZvcmJpZCB0aGlzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiwgbGVzdCBp dCBhbGxvY2F0ZSBhIGNvbWJvIENJRC4KKwkgKiBPdGhlciB3b3JrZXJzIG1pZ2h0IG5lZWQgdGhh dCBjb21ibyBDSUQgZm9yIHZpc2liaWxpdHkgY2hlY2tzLCBhbmQgd2UKKwkgKiBoYXZlIG5vIHBy b3Zpc2lvbiBmb3IgYnJvYWRjYXN0aW5nIGl0IHRvIHRoZW0uCisJICovCisJaWYgKElzSW5QYXJh bGxlbE1vZGUoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFM SURfVFJBTlNBQ1RJT05fU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCB1cGRhdGUgdHVwbGVz IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpKSk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCisJY2hlY2tfbG9ja19pZl9pbnBsYWNlX3VwZGF0ZWFibGVfcmVsKHJlbGF0aW9uLCBv dGlkLCB0dXBsZSk7CisjZW5kaWYKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qgb2YgYXR0cmli dXRlcyB0byBiZSBjaGVja2VkIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMuCisJICoKKwkgKiBGb3Ig SE9UIGNvbnNpZGVyYXRpb25zLCB0aGlzIGlzIHdhc3RlZCBlZmZvcnQgaWYgd2UgZmFpbCB0byB1 cGRhdGUgb3IKKwkgKiBoYXZlIHRvIHB1dCB0aGUgbmV3IHR1cGxlIG9uIGEgZGlmZmVyZW50IHBh Z2UuICBCdXQgd2UgbXVzdCBjb21wdXRlIHRoZQorCSAqIGxpc3QgYmVmb3JlIG9idGFpbmluZyBi dWZmZXIgbG9jayAtLS0gaW4gdGhlIHdvcnN0IGNhc2UsIGlmIHdlIGFyZQorCSAqIGRvaW5nIGFu IHVwZGF0ZSBvbiBvbmUgb2YgdGhlIHJlbGV2YW50IHN5c3RlbSBjYXRhbG9ncywgd2UgY291bGQK KwkgKiBkZWFkbG9jayBpZiB3ZSB0cnkgdG8gZmV0Y2ggdGhlIGxpc3QgbGF0ZXIuICBJbiBhbnkg Y2FzZSwgdGhlIHJlbGNhY2hlCisJICogY2FjaGVzIHRoZSBkYXRhIHNvIHRoaXMgaXMgdXN1YWxs eSBwcmV0dHkgY2hlYXAuCisJICoKKwkgKiBXZSBhbHNvIG5lZWQgY29sdW1ucyB1c2VkIGJ5IHRo ZSByZXBsaWNhIGlkZW50aXR5IGFuZCBjb2x1bW5zIHRoYXQgYXJlCisJICogY29uc2lkZXJlZCB0 aGUgImtleSIgb2Ygcm93cyBpbiB0aGUgdGFibGUuCisJICoKKwkgKiBOb3RlIHRoYXQgd2UgZ2V0 IGNvcGllcyBvZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkgYWJvdXQKKwkgKiBy ZWxjYWNoZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2guCisJICovCisJaG90X2F0dHJz ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJICAgSU5E RVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HKTsKKwlzdW1fYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9T VU1NQVJJWkVEKTsKKwlwa19hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0 aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCXJpZF9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0lE RU5USVRZX0tFWSk7CisKKwlpZHhfYXR0cnMgPSBibXNfY29weShob3RfYXR0cnMpOworCWlkeF9h dHRycyA9IGJtc19hZGRfbWVtYmVycyhpZHhfYXR0cnMsIHN1bV9hdHRycyk7CisJaWR4X2F0dHJz ID0gYm1zX2FkZF9tZW1iZXJzKGlkeF9hdHRycywgcGtfYXR0cnMpOworCWlkeF9hdHRycyA9IGJt c19hZGRfbWVtYmVycyhpZHhfYXR0cnMsIHJpZF9hdHRycyk7CisKKwlibG9jayA9IEl0ZW1Qb2lu dGVyR2V0QmxvY2tOdW1iZXIob3RpZCk7CisJSU5KRUNUSU9OX1BPSU5UKCJoZWFwX3VwZGF0ZS1i ZWZvcmUtcGluIiwgTlVMTCk7CisJYnVmZmVyID0gUmVhZEJ1ZmZlcihyZWxhdGlvbiwgYmxvY2sp OworCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkvKgorCSAqIEJlZm9yZSBsb2Nr aW5nIHRoZSBidWZmZXIsIHBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpZiBpdCBhcHBlYXJz IHRvCisJICogYmUgbmVjZXNzYXJ5LiAgU2luY2Ugd2UgaGF2ZW4ndCBnb3QgdGhlIGxvY2sgeWV0 LCBzb21lb25lIGVsc2UgbWlnaHQgYmUKKwkgKiBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo aXMsIHNvIHdlJ2xsIG5lZWQgdG8gcmVjaGVjayBhZnRlciB3ZSBoYXZlCisJICogdGhlIGxvY2su CisJICovCisJaWYgKFBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXZpc2liaWxpdHltYXBfcGlu KHJlbGF0aW9uLCBibG9jaywgJnZtYnVmZmVyKTsKKworCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZG RVJfTE9DS19FWENMVVNJVkUpOworCisJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIEl0ZW1Qb2lu dGVyR2V0T2Zmc2V0TnVtYmVyKG90aWQpKTsKKworCS8qCisJICogVXN1YWxseSwgYSBidWZmZXIg cGluIGFuZC9vciBzbmFwc2hvdCBibG9ja3MgcHJ1bmluZyBvZiBvdGlkLCBlbnN1cmluZworCSAq IHdlIHNlZSBMUF9OT1JNQUwgaGVyZS4gIFdoZW4gdGhlIG90aWQgb3JpZ2luIGlzIGEgc3lzY2Fj aGUsIHdlIG1heSBoYXZlCisJICogbmVpdGhlciBhIHBpbiBub3IgYSBzbmFwc2hvdC4gIEhlbmNl LCB3ZSBtYXkgc2VlIG90aGVyIExQXyBzdGF0ZXMsIGVhY2gKKwkgKiBvZiB3aGljaCBpbmRpY2F0 ZXMgY29uY3VycmVudCBwcnVuaW5nLgorCSAqCisJICogRmFpbGluZyB3aXRoIFRNX1VwZGF0ZWQg d291bGQgYmUgbW9zdCBhY2N1cmF0ZS4gIEhvd2V2ZXIsIHVubGlrZSBvdGhlcgorCSAqIFRNX1Vw ZGF0ZWQgc2NlbmFyaW9zLCB3ZSBkb24ndCBrbm93IHRoZSBzdWNjZXNzb3IgY3RpZCBpbiBMUF9V TlVTRUQgYW5kCisJICogTFBfREVBRCBjYXNlcy4gIFdoaWxlIHRoZSBkaXN0aW5jdGlvbiBiZXR3 ZWVuIFRNX1VwZGF0ZWQgYW5kIFRNX0RlbGV0ZWQKKwkgKiBkb2VzIG1hdHRlciB0byBTUUwgc3Rh dGVtZW50cyBVUERBVEUgYW5kIE1FUkdFLCB0aG9zZSBTUUwgc3RhdGVtZW50cworCSAqIGhvbGQg YSBzbmFwc2hvdCB0aGF0IGVuc3VyZXMgTFBfTk9STUFMLiAgSGVuY2UsIHRoZSBjaG9pY2UgYmV0 d2VlbgorCSAqIFRNX1VwZGF0ZWQgYW5kIFRNX0RlbGV0ZWQgYWZmZWN0cyBvbmx5IHRoZSB3b3Jk aW5nIG9mIGVycm9yIG1lc3NhZ2VzLgorCSAqIFNldHRsZSBvbiBUTV9EZWxldGVkLCBmb3IgdHdv IHJlYXNvbnMuICBGaXJzdCwgaXQgYXZvaWRzIGNvbXBsaWNhdGluZworCSAqIHRoZSBzcGVjaWZp Y2F0aW9uIG9mIHdoZW4gdG1mZC0+Y3RpZCBpcyB2YWxpZC4gIFNlY29uZCwgaXQgY3JlYXRlcwor CSAqIGVycm9yIGxvZyBldmlkZW5jZSB0aGF0IHdlIHRvb2sgdGhpcyBicmFuY2guCisJICoKKwkg KiBTaW5jZSBpdCdzIHBvc3NpYmxlIHRvIHNlZSBMUF9VTlVTRUQgYXQgb3RpZCwgaXQncyBhbHNv IHBvc3NpYmxlIHRvIHNlZQorCSAqIExQX05PUk1BTCBmb3IgYSB0dXBsZSB0aGF0IHJlcGxhY2Vk IExQX1VOVVNFRC4gIElmIGl0J3MgYSB0dXBsZSBmb3IgYW4KKwkgKiB1bnJlbGF0ZWQgcm93LCB3 ZSdsbCBmYWlsIHdpdGggImR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIi4KKwkg KiBYWFggaWYgb3RpZCBpcyB0aGUgbGl2ZSwgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgbmV3dHVwIHJv dywgd2UnbGwgZGlzY2FyZAorCSAqIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW4gdmVyc2lvbnMgb2Yg dGhpcyBjYXRhbG9nIHJvdyBhZnRlciB0aGUgdmVyc2lvbgorCSAqIHRoZSBjYWxsZXIgZ290IGZy b20gc3lzY2FjaGUuICBTZWUgc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjLgorCSAqLworCWlm ICghSXRlbUlkSXNOb3JtYWwobHApKQorCXsKKwkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXND YWNoZShSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSkpOworCisJCVVubG9ja1JlbGVhc2VCdWZm ZXIoYnVmZmVyKTsKKwkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCisJCQlSZWxlYXNl QnVmZmVyKHZtYnVmZmVyKTsKKwkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKKworCQlibXNf ZnJlZShob3RfYXR0cnMpOworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCQlibXNfZnJlZShwa19h dHRycyk7CisJCWJtc19mcmVlKHJpZF9hdHRycyk7CisJCWJtc19mcmVlKGlkeF9hdHRycyk7CisJ CS8qIG1peF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisKKwkJZWxvZyhFUlJPUiwgInR1 cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7CisKKwkJcmV0dXJuOworCX0KKworCS8qCisJICog UGFydGlhbGx5IGNvbnN0cnVjdCB0aGUgb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yayBhbmQKKwkgKiB0aGVuIHBhc3MgdGhhdCBvbiB0byBoZWFwX3VwZGF0ZS4KKwkg Ki8KKwlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCW9s ZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisJ b2xkdHVwLnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGxwKTsKKwlvbGR0dXAudF9zZWxmID0gKm90 aWQ7CisKKwltaXhfYXR0cnMgPSBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8ocmVsYXRpb24sIGlk eF9hdHRycywgcmlkX2F0dHJzLAorCQkJCQkJCQkJCSAmb2xkdHVwLCB0dXBsZSwgJnJlcF9pZF9r ZXlfcmVxdWlyZWQpOworCisJLyoKKwkgKiBXZSdsbCBuZWVkIHRvIFdBTCBsb2cgdGhlIHJlcGxp Y2EgaWRlbnRpdHkgYXR0cmlidXRlcyBpZiBlaXRoZXIgdGhleQorCSAqIG92ZXJsYXAgd2l0aCB0 aGUgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIG9yLCBhcyB3ZSd2ZSBjaGVja2VkIGZvcgor CSAqIGp1c3Qgbm93IGluIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbywgdGhleSB3ZXJlIHVubW9k aWZpZWQgZXh0ZXJuYWwKKwkgKiBpbmRleGVkIGF0dHJpYnV0ZXMuCisJICovCisJcmVwX2lkX2tl eV9yZXF1aXJlZCA9IHJlcF9pZF9rZXlfcmVxdWlyZWQgfHwgYm1zX292ZXJsYXAobWl4X2F0dHJz LCByaWRfYXR0cnMpOworCisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sICZvbGR0dXAs IHR1cGxlLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIEludmFsaWRTbmFwc2hv dCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLCAmdG1mZCwgJmxvY2ttb2RlLAorCQkJCQkJ IGJ1ZmZlciwgcGFnZSwgYmxvY2ssIGxwLCBob3RfYXR0cnMsIHN1bV9hdHRycywgcGtfYXR0cnMs CisJCQkJCQkgcmlkX2F0dHJzLCBtaXhfYXR0cnMsICZ2bWJ1ZmZlciwgcmVwX2lkX2tleV9yZXF1 aXJlZCwKKwkJCQkJCSB1cGRhdGVfaW5kZXhlcyk7CisKKwlibXNfZnJlZShob3RfYXR0cnMpOwor CWJtc19mcmVlKHN1bV9hdHRycyk7CisJYm1zX2ZyZWUocGtfYXR0cnMpOworCWJtc19mcmVlKHJp ZF9hdHRycyk7CisJYm1zX2ZyZWUobWl4X2F0dHJzKTsKKwlibXNfZnJlZShpZHhfYXR0cnMpOwog Ci0JcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRD dXJyZW50Q29tbWFuZElkKHRydWUpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3 YWl0IGZvciBjb21taXQgKi8gLAotCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CiAJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpAQCAt OTIyNywxMiArOTIyMCwxMSBAQCBsb2dfaGVhcF9uZXdfY2lkKFJlbGF0aW9uIHJlbGF0aW9uLCBI ZWFwVHVwbGUgdHVwKQogICogdGhlIHNhbWUgdHVwbGUgdGhhdCB3YXMgcGFzc2VkIGluLgogICov CiBzdGF0aWMgSGVhcFR1cGxlCi1FeHRyYWN0UmVwbGljYUlkZW50aXR5KFJlbGF0aW9uIHJlbGF0 aW9uLCBIZWFwVHVwbGUgdHAsIGJvb2wga2V5X3JlcXVpcmVkLAotCQkJCQkgICBib29sICpjb3B5 KQorRXh0cmFjdFJlcGxpY2FJZGVudGl0eShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHRw LCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCQkJICAgYm9vbCBrZXlfcmVxdWlyZWQsIGJvb2wg KmNvcHkpCiB7CiAJVHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsK IAljaGFyCQlyZXBsaWRlbnQgPSByZWxhdGlvbi0+cmRfcmVsLT5yZWxyZXBsaWRlbnQ7Ci0JQml0 bWFwc2V0ICAqaWRhdHRyczsKIAlIZWFwVHVwbGUJa2V5X3R1cGxlOwogCWJvb2wJCW51bGxzW01h eEhlYXBBdHRyaWJ1dGVOdW1iZXJdOwogCURhdHVtCQl2YWx1ZXNbTWF4SGVhcEF0dHJpYnV0ZU51 bWJlcl07CkBAIC05MjYzLDE3ICs5MjU1LDEzIEBAIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVs YXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJaWYgKCFr ZXlfcmVxdWlyZWQpCiAJCXJldHVybiBOVUxMOwogCi0JLyogZmluZCBvdXQgdGhlIHJlcGxpY2Eg aWRlbnRpdHkgY29sdW1ucyAqLwotCWlkYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsK LQogCS8qCiAJICogSWYgdGhlcmUncyBubyBkZWZpbmVkIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1u cywgdHJlYXQgYXMgIWtleV9yZXF1aXJlZC4KIAkgKiAoVGhpcyBjYXNlIHNob3VsZCBub3QgYmUg cmVhY2hhYmxlIGZyb20gaGVhcF91cGRhdGUsIHNpbmNlIHRoYXQgc2hvdWxkCiAJICogY2FsY3Vs YXRlIGtleV9yZXF1aXJlZCBhY2N1cmF0ZWx5LiAgQnV0IGhlYXBfZGVsZXRlIGp1c3QgcGFzc2Vz CiAJICogY29uc3RhbnQgdHJ1ZSBmb3Iga2V5X3JlcXVpcmVkLCBzbyB3ZSBjYW4gaGl0IHRoaXMg Y2FzZSBpbiBkZWxldGVzLikKIAkgKi8KLQlpZiAoYm1zX2lzX2VtcHR5KGlkYXR0cnMpKQorCWlm IChibXNfaXNfZW1wdHkocmlkX2F0dHJzKSkKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgpAQCAtOTI4 Niw3ICs5Mjc0LDcgQEAgRXh0cmFjdFJlcGxpY2FJZGVudGl0eShSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHRwLCBib29sIGtleV9yZXF1aXJlZCwKIAlmb3IgKGludCBpID0gMDsgaSA8IGRl c2MtPm5hdHRzOyBpKyspCiAJewogCQlpZiAoYm1zX2lzX21lbWJlcihpICsgMSAtIEZpcnN0TG93 SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGlkYXR0cnMpKQorCQkJCQkJICBy aWRfYXR0cnMpKQogCQkJQXNzZXJ0KCFudWxsc1tpXSk7CiAJCWVsc2UKIAkJCW51bGxzW2ldID0g dHJ1ZTsKQEAgLTkyOTUsOCArOTI4Myw2IEBAIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJa2V5X3R1cGxl ID0gaGVhcF9mb3JtX3R1cGxlKGRlc2MsIHZhbHVlcywgbnVsbHMpOwogCSpjb3B5ID0gdHJ1ZTsK IAotCWJtc19mcmVlKGlkYXR0cnMpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHVwbGUsIHdoaWNoIGJ5 IGhlcmUgb25seSBjb250YWlucyBpbmRleGVkIGNvbHVtbnMsIHN0aWxsIGhhcwogCSAqIHRvYXN0 ZWQgY29sdW1ucywgZm9yY2UgdGhlbSB0byBiZSBpbmxpbmVkLiBUaGlzIGlzIHNvbWV3aGF0IHVu bGlrZWx5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjYmVm NzNlNWQ0Yi4uNTRjMDIxZmYyMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYwpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIAogc3RhdGljIHZvaWQgcmVmb3JtX2FuZF9yZXdyaXRlX3R1cGxlKEhlYXBUdXBsZSB0dXBs ZSwKQEAgLTMxMiwyMyArMzEzLDEzMyBAQCBoZWFwYW1fdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiAJcmV0dXJuIGhlYXBfZGVs ZXRlKHJlbGF0aW9uLCB0aWQsIGNpZCwgY3Jvc3NjaGVjaywgd2FpdCwgdG1mZCwgY2hhbmdpbmdQ YXJ0KTsKIH0KIAotCiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJ CQkJQ29tbWFuZElkIGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ss CiAJCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCUxvY2tUdXBsZU1v ZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKKwlib29s CQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7 CiAJSGVhcFR1cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAm c2hvdWxkRnJlZSk7CisJSGVhcFR1cGxlRGF0YSBvbGR0dXA7CisJQnVmZmVyCQlidWZmZXI7CisJ QnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJUGFnZQkJcGFnZTsKKwlCbG9ja051 bWJlciBibG9jazsKKwlJdGVtSWQJCWxwOworCUJpdG1hcHNldCAgKmhvdF9hdHRycywKKwkJCSAg ICpzdW1fYXR0cnMsCisJCQkgICAqcGtfYXR0cnMsCisJCQkgICAqcmlkX2F0dHJzLAorCQkJICAg Km1peF9hdHRycywKKwkJCSAgICppZHhfYXR0cnM7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFz c2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyogQ2hlYXAsIHNpbXBsaXN0aWMg Y2hlY2sgdGhhdCB0aGUgdHVwbGUgbWF0Y2hlcyB0aGUgcmVsJ3Mgcm93dHlwZS4gKi8KKwlBc3Nl cnQoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwbGUtPnRfZGF0YSkgPD0KKwkJICAgUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pKTsKKworCS8qCisJICogRm9yYmlkIHRo aXMgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9uLCBsZXN0IGl0IGFsbG9jYXRlIGEgY29tYm8g Q0lELgorCSAqIE90aGVyIHdvcmtlcnMgbWlnaHQgbmVlZCB0aGF0IGNvbWJvIENJRCBmb3Igdmlz aWJpbGl0eSBjaGVja3MsIGFuZCB3ZQorCSAqIGhhdmUgbm8gcHJvdmlzaW9uIGZvciBicm9hZGNh c3RpbmcgaXQgdG8gdGhlbS4KKwkgKi8KKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UUkFOU0FDVElPTl9TVEFU RSksCisJCQkJIGVycm1zZygiY2Fubm90IHVwZGF0ZSB0dXBsZXMgZHVyaW5nIGEgcGFyYWxsZWwg b3BlcmF0aW9uIikpKTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwljaGVja19sb2Nr X2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwocmVsYXRpb24sIG90aWQsIHR1cGxlKTsKKyNlbmRp ZgorCisJLyoKKwkgKiBGZXRjaCB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQg Zm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KKwkgKgorCSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMs IHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3ZSBmYWlsIHRvIHVwZGF0ZSBvcgorCSAqIGhhdmUg dG8gcHV0IHRoZSBuZXcgdHVwbGUgb24gYSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNv bXB1dGUgdGhlCisJICogbGlzdCBiZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0 aGUgd29yc3QgY2FzZSwgaWYgd2UgYXJlCisJICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0 aGUgcmVsZXZhbnQgc3lzdGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAorCSAqIGRlYWRsb2NrIGlmIHdl IHRyeSB0byBmZXRjaCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUK KwkgKiBjYWNoZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KKwkg KgorCSAqIFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkg YW5kIGNvbHVtbnMgdGhhdCBhcmUKKwkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKgorCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVzIG9mIGVhY2ggYml0 bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAorCSAqIHJlbGNhY2hlIGZsdXNoIGhhcHBl bmluZyBtaWR3YXkgdGhyb3VnaC4KKwkgKi8KKwlob3RfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1Rf QkxPQ0tJTkcpOworCXN1bV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0 aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOworCXBrX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklU TUFQX0tFWSk7CisJcmlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCisJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKKworCWlk eF9hdHRycyA9IGJtc19jb3B5KGhvdF9hdHRycyk7CisJaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1i ZXJzKGlkeF9hdHRycywgc3VtX2F0dHJzKTsKKwlpZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMo aWR4X2F0dHJzLCBwa19hdHRycyk7CisJaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGlkeF9h dHRycywgcmlkX2F0dHJzKTsKKworCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihv dGlkKTsKKwlJTkpFQ1RJT05fUE9JTlQoImhlYXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsK KwlidWZmZXIgPSBSZWFkQnVmZmVyKHJlbGF0aW9uLCBibG9jayk7CisJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoYnVmZmVyKTsKKworCS8qCisJICogQmVmb3JlIGxvY2tpbmcgdGhlIGJ1ZmZlciwgcGlu IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlmIGl0IGFwcGVhcnMgdG8KKwkgKiBiZSBuZWNlc3Nh cnkuICBTaW5jZSB3ZSBoYXZlbid0IGdvdCB0aGUgbG9jayB5ZXQsIHNvbWVvbmUgZWxzZSBtaWdo dCBiZQorCSAqIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdpbmcgdGhpcywgc28gd2UnbGwgbmVlZCB0 byByZWNoZWNrIGFmdGVyIHdlIGhhdmUKKwkgKiB0aGUgbG9jay4KKwkgKi8KKwlpZiAoUGFnZUlz QWxsVmlzaWJsZShwYWdlKSkKKwkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIGJsb2NrLCAm dm1idWZmZXIpOworCisJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 CisKKwlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIo b3RpZCkpOworCisJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7CisKKwkvKgorCSAqIFBhcnRp YWxseSBjb25zdHJ1Y3QgdGhlIG9sZHR1cCBmb3IgSGVhcERldGVybWluZUNvbHVtbnNJbmZvIHRv IHdvcmsgYW5kCisJICogdGhlbiBwYXNzIHRoYXQgb24gdG8gaGVhcF91cGRhdGUuCisJICovCisJ b2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwlvbGR0dXAu dF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCW9sZHR1 cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChscCk7CisJb2xkdHVwLnRfc2VsZiA9ICpvdGlkOwor CisJbWl4X2F0dHJzID0gSGVhcERldGVybWluZUNvbHVtbnNJbmZvKHJlbGF0aW9uLCBpZHhfYXR0 cnMsIHJpZF9hdHRycywKKwkJCQkJCQkJCQkgJm9sZHR1cCwgdHVwbGUsICZyZXBfaWRfa2V5X3Jl cXVpcmVkKTsKKworCS8qCisJICogV2UnbGwgbmVlZCB0byBXQUwgbG9nIHRoZSByZXBsaWNhIGlk ZW50aXR5IGF0dHJpYnV0ZXMgaWYgZWl0aGVyIHRoZXkKKwkgKiBvdmVybGFwIHdpdGggdGhlIG1v ZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyBvciwgYXMgd2UndmUgY2hlY2tlZCBmb3IKKwkgKiBq dXN0IG5vdyBpbiBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8sIHRoZXkgd2VyZSB1bm1vZGlmaWVk IGV4dGVybmFsCisJICogaW5kZXhlZCBhdHRyaWJ1dGVzLgorCSAqLworCXJlcF9pZF9rZXlfcmVx dWlyZWQgPSByZXBfaWRfa2V5X3JlcXVpcmVkIHx8IGJtc19vdmVybGFwKG1peF9hdHRycywgcmlk X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90 LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+dF90 YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJl bGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQs IGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRp b24sICZvbGR0dXAsIHR1cGxlLCBjaWQsIGNyb3NzY2hlY2ssIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAorCQkJCQkJIGJ1ZmZlciwgcGFnZSwgYmxvY2ssIGxwLCBob3RfYXR0cnMsIHN1bV9hdHRycywg cGtfYXR0cnMsCisJCQkJCQkgcmlkX2F0dHJzLCBtaXhfYXR0cnMsICZ2bWJ1ZmZlciwgcmVwX2lk X2tleV9yZXF1aXJlZCwgdXBkYXRlX2luZGV4ZXMpOworCisJYm1zX2ZyZWUoaG90X2F0dHJzKTsK KwlibXNfZnJlZShzdW1fYXR0cnMpOworCWJtc19mcmVlKHBrX2F0dHJzKTsKKwlibXNfZnJlZShy aWRfYXR0cnMpOworCWJtc19mcmVlKG1peF9hdHRycyk7CisJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCAzYzA5NjFhYjM2Yi4uMzhmOTQ0NzcxZGIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTM2NCwxMSArMzY0LDEzIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9kZWxl dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJ CSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgYm9vbCBjaGFuZ2luZ1BhcnQpOwogZXh0ZXJuIHZvaWQg aGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKLWV4dGVybiBUTV9SZXN1 bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq b3RpZCwKLQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29tbWFuZElkIGNpZCwg U25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKTsKK2V4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZURhdGEgKm9sZHR1cCwKKwkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1 cCwgQ29tbWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAorCQkJCQkJ CSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJIFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2ssIEl0ZW1JZCBscCwg Qml0bWFwc2V0ICpob3RfYXR0cnMsCisJCQkJCQkJIEJpdG1hcHNldCAqc3VtX2F0dHJzLCBCaXRt YXBzZXQgKnBrX2F0dHJzLCBCaXRtYXBzZXQgKnJpZF9hdHRycywKKwkJCQkJCQkgQml0bWFwc2V0 ICptaXhfYXR0cnMsIEJ1ZmZlciAqdm1idWZmZXIsCisJCQkJCQkJIGJvb2wgcmVwX2lkX2tleV9y ZXF1aXJlZCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogZXh0ZXJuIFRNX1Jl c3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwK IAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDMwLDYg KzQzMiwxOCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQs IGludCBuZGVhZCwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2Vk KTsKIAorLyogaW4gaGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIEJpdG1hcHNldCAqSGVhcERldGVy bWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIEJpdG1hcHNl dCAqaW50ZXJlc3RpbmdfY29scywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmV4dGVybmFsX2Nv bHMsCisJCQkJCQkJCQkJICAgSGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKKwkJ CQkJCQkJCQkgICBib29sICpoYXNfZXh0ZXJuYWwpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJ TkcKK2V4dGVybiB2b2lkIGNoZWNrX2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChSZWxh dGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs CisJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CisjZW5kaWYKKwogLyogaW4gaGVhcC92 YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws CiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5KTsKLS0gCjIuNTEuMgoK --69665c92_23ba1acf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v28-0004-Identify-if-partial-indexes-are-impacted-by-an-u.patch" RnJvbSBiOGUxZGM2ZTYyNTEwMmM5ZjI1YzIwMTllNGZjOTAwZDExMjU1NDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogRnJpLCA1 IERlYyAyMDI1IDEzOjQyOjEzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MjggNC80XSBJZGVudGlm eSBpZiBwYXJ0aWFsIGluZGV4ZXMgYXJlIGltcGFjdGVkIGJ5IGFuCiB1cGRhdGUuCgpUaGUgZXhl Y3V0b3Igbm93IGRldGVybWluZXMgd2hpY2gsIGlmIGFueSwgYXR0cmlidXRlcyB0aGF0IGFyZSBp bmRleGVkCmFyZSBib3RoIG1vZGlmaWVkIGFuZCBmb3JjZSBuZXcgaW5kZXggdHVwbGVzIHRvIGJl IGluc2VydGVkIGFoZWFkIG9mCmNhbGxpbmcgaW50byB0aGUgdGFibGUgQU0gdXBkYXRlIGZ1bmN0 aW9uLiAgUHJpb3IgdG8gdGhpcyBjb21taXQgdGhlCnRlc3QgZm9yIHBhcnRpYWwgaW5kZXhlcyBo YXBwZW5lZCBhZnRlciB0YWJsZSB1cGRhdGUsIHRoaXMgY2hhbmdlcyB0aGF0CnRvIGJlZm9yZSBz byB0aGF0IGluIGNhc2VzIHdoZXJlIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHR1cGxlcyBib3RoIGxp ZQpvdXRzaWRlIHRoZSBwcmVkaWNhdGUgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBwcmVkaWNhdGUg YXJlIG5vdCBpbmNsdWRlZAppbiB0aGUgIm1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyIgYml0 bWFwc2V0LgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIHwgNTMg KysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMK aW5kZXggYWIwYTM0M2JjZjYuLmZlZTNkNzVmYTM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwpAQCAtMjI3LDkgKzIyNywxMSBAQCBFeGVjQ2hlY2tJbmRleGVkQXR0cnNG b3JDaGFuZ2VzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCiAJCUJpdG1hcHNldCAgKm1fYXR0cnMg PSBOVUxMOyAvKiAocG9zc2libHkpIG1vZGlmaWVkIGluZGV4ZWQgYXR0cnMgKi8KIAkJQml0bWFw c2V0ICAqcF9hdHRycyA9IE5VTEw7IC8qIChwb3NzaWJseSkgbW9kaWZpZWQgcHJlZGljYXRlIGF0 dHJzICovCiAJCUJpdG1hcHNldCAgKnVfYXR0cnMgPSBOVUxMOyAvKiB1bm1vZGlmaWVkIGluZGV4 ZWQgYXR0cnMgKi8KKwkJQml0bWFwc2V0ICAqcHJlX2F0dHJzID0gaW5kZXhJbmZvLT5paV9QcmVk aWNhdGVBdHRyczsKIAkJYm9vbAkJaGFzX2FtX2NvbXBhcmUgPSAoYW1yb3V0aW5lLT5hbWNvbXBh cmVkYXR1bXMgIT0gTlVMTCk7CiAJCWJvb2wJCXN1cHBvcnRzX2lvcyA9IChhbXJvdXRpbmUtPmFt Y2FucmV0dXJuICE9IE5VTEwpOwogCQlib29sCQlpc19wYXJ0aWFsID0gKGluZGV4SW5mby0+aWlf UHJlZGljYXRlICE9IE5JTCk7CisJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50dXBsZTsKIAkJ RXhwckNvbnRleHQgKmVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwog CQlpbnQJCQludW1fZGF0dW1zID0gc3VwcG9ydHNfaW9zID8KIAkJCWluZGV4SW5mby0+aWlfTnVt SW5kZXhBdHRycyA6IGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRyczsKQEAgLTIzOCw5ICsy NDAsNTEgQEAgRXhlY0NoZWNrSW5kZXhlZEF0dHJzRm9yQ2hhbmdlcyhSZXN1bHRSZWxJbmZvICpy ZWxpbmZvLAogCQlpZiAoYm1zX2lzX3N1YnNldChpbmRleEluZm8tPmlpX0luZGV4ZWRBdHRycywg bWl4X2F0dHJzKSkKIAkJCWNvbnRpbnVlOwogCi0JCS8qIEFkZCBwYXJ0aWFsIGluZGV4IGF0dHJp YnV0ZXMgKi8KLQkJaWYgKGlzX3BhcnRpYWwpCi0JCQlwX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJz KHBfYXR0cnMsIGluZGV4SW5mby0+aWlfUHJlZGljYXRlQXR0cnMpOworCQkvKiBDaGVja2luZyBw YXJ0aWFsIGF0IHRoaXMgcG9pbnQgaXNuJ3QgdmlhYmxlIHdoZW4gd2UncmUgc2VyaWFsaXphYmxl ICovCisJCWlmIChpc19wYXJ0aWFsICYmIElzb2xhdGlvbklzU2VyaWFsaXphYmxlKCkpCisJCXsK KwkJCXBfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMocF9hdHRycywgcHJlX2F0dHJzKTsKKwkJfQor CQkvKiBDaGVjayBwYXJ0aWFsIGluZGV4IHByZWRpY2F0ZSAqLworCQllbHNlIGlmIChpc19wYXJ0 aWFsKQorCQl7CisJCQlFeHByU3RhdGUgICpwc3RhdGU7CisJCQlib29sCQlvbGRfcXVhbGlmaWVz LAorCQkJCQkJbmV3X3F1YWxpZmllczsKKworCisJCQlpZiAoIWluZGV4SW5mby0+aWlfQ2hlY2tl ZFByZWRpY2F0ZSkKKwkJCQlwc3RhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9Q cmVkaWNhdGUsIGVzdGF0ZSk7CisJCQllbHNlCisJCQkJcHN0YXRlID0gaW5kZXhJbmZvLT5paV9Q cmVkaWNhdGVTdGF0ZTsKKworCQkJc2F2ZV9zY2FudHVwbGUgPSBlY29udGV4dC0+ZWN4dF9zY2Fu dHVwbGU7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IG9sZF90dHM7CisJCQlvbGRf cXVhbGlmaWVzID0gRXhlY1F1YWwocHN0YXRlLCBlY29udGV4dCk7CisKKwkJCWVjb250ZXh0LT5l Y3h0X3NjYW50dXBsZSA9IG5ld190dHM7CisJCQluZXdfcXVhbGlmaWVzID0gRXhlY1F1YWwocHN0 YXRlLCBlY29udGV4dCk7CisKKwkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2Nh bnR1cGxlOworCisJCQlpbmRleEluZm8tPmlpX0NoZWNrZWRQcmVkaWNhdGUgPSB0cnVlOworCQkJ aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IHBzdGF0ZTsKKwkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU2F0aXNmaWVkID0gbmV3X3F1YWxpZmllczsKKworCQkJLyogQm90aCBvdXRzaWRl IHByZWRpY2F0ZSwgaW5kZXggZG9lc24ndCBuZWVkIHVwZGF0ZSAqLworCQkJaWYgKCFvbGRfcXVh bGlmaWVzICYmICFuZXdfcXVhbGlmaWVzKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBBIHRyYW5z aXRpb24gbWVhbnMgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGluZGV4ICovCisJCQlpZiAob2xkX3F1 YWxpZmllcyAhPSBuZXdfcXVhbGlmaWVzKQorCQkJCXBfYXR0cnMgPSBibXNfY29weShwcmVfYXR0 cnMpOworCisJCQkvKgorCQkJICogV2hlbiBib3RoIGFyZSB3aXRoaW4gdGhlIHByZWRpY2F0ZSB3 ZSBtdXN0IHVwZGF0ZSB0aGlzIGluZGV4LAorCQkJICogYnV0IG9ubHkgaWYgb25lIG9mIHRoZSBp bmRleCBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkJICovCisJCX0KIAogCQkvKiBDb21wYXJl IHRoZSBpbmRleCBkYXR1bXMgZm9yIGVxdWFsaXR5ICovCiAJCWZvciAoaW50IGogPSAwOyBqIDwg bnVtX2RhdHVtczsgaisrKQpAQCAtMjc2LDExICszMjAsMTIgQEAgRXhlY0NoZWNrSW5kZXhlZEF0 dHJzRm9yQ2hhbmdlcyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQkJICovCiAJCQllbHNlIGlm IChyZWxfYXR0cm51bSA9PSAwKQogCQkJewotCQkJCVR1cGxlVGFibGVTbG90ICpzYXZlX3NjYW50 dXBsZSA9IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsKIAkJCQlPaWQJCQlleHByX3R5cGVfb2lk OwogCQkJCUV4cHIJICAgKmV4cHIgPSAoRXhwciAqKSBsaXN0X250aChpbmRleEluZm8tPmlpX0V4 cHJlc3Npb25zLCBudGhfZXhwcik7CiAJCQkJRXhwclN0YXRlICAqc3RhdGU7CiAKKwkJCQlzYXZl X3NjYW50dXBsZSA9IGVjb250ZXh0LT5lY3h0X3NjYW50dXBsZTsKKwogCQkJCWlmIChpbmRleElu Zm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPT0gTklMKQogCQkJCXsKIAkJCQkJLyogRmlyc3QgdGlt ZSB0aHJvdWdoLCBzZXQgdXAgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0YXRlICovCi0tIAoyLjUx LjIKCg== --69665c92_23ba1acf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?v28-0003-Replace-index=5Funchanged=5Fby=5Fupdate-with-ri=5FChange.patch?=" RnJvbSAzMjcwMTVmOWY1MWFlMGUzMjlmYzk0M2E1OGU1OTZiM2FiN2JlYTI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogRnJpLCAz MSBPY3QgMjAyNSAxNDo1NToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI4IDMvNF0gUmVwbGFj ZSBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKCkgd2l0aAogcmlfQ2hhbmdlZEluZGV4ZWRDb2xz CgpJbiBleGVjSW5kZXhpbmcgb24gdXBkYXRlcyB3ZSdkIGxpa2UgdG8gcGFzcyBhIGhpbnQgdG8g dGhlIGluZGV4aW5nIGNvZGUKd2hlbiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIGFyZSB1bmNoYW5n ZWQuICBUaGlzIGNvbW1pdCByZXBsYWNlcyB0aGUgbm93CnJlZHVuZGFudCBjb2RlIGluIGluZGV4 X3VuY2hhbmdlZF9ieV91cGRhdGUoKSB3aXRoIHRoZSBzYW1lIGluZm9ybWF0aW9uCmZvdW5kIGVh cmxpZXIgaW4gRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgYW5kIHN0YXNoZWQgaW4K cmlfQ2hhbmdlZEluZGV4ZWRDb2xzLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3Rpbmcu YyAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTU2 ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgIHwg ICA0IC0KIDQgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDE2MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggZmY4ZGE1YmU1ZjguLjU2NzVjNmY4ZWE5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMDQsOCArMzA0LDYgQEAgY3JlYXRlX3RvYXN0X3RhYmxl KFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRleElu Zm8tPmlpX1VuaXF1ZSA9IHRydWU7CiAJaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0ID0g ZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMgPSB0cnVlOwotCWluZGV4SW5m by0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCWluZGV4SW5mby0+aWlfSW5kZXhVbmNo YW5nZWQgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBmYWxzZTsKIAlpbmRl eEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9QYXJhbGxl bFdvcmtlcnMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCAxMjc1ZmVm ZmFlOS4uYjc1ZTc2NDAxZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x NDMsMTEgKzE0Myw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBib29sIGluZGV4 X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25zdHJfcHJv Y3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVlcywgY29uc3QgYm9vbCAq ZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVtICpuZXdfdmFsdWVzKTsKLXN0 YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsIEluZGV4SW5mbyAqaW5kZXhJbmZv LAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uKTsKLXN0YXRpYyBib29sIGluZGV4 X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJQml0bWFw c2V0ICphbGxVcGRhdGVkQ29scyk7CiBzdGF0aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90 RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJ CQkJCQkJY2hhciB0eXB0eXBlLCBPaWQgYXR0dHlwaWQpOwogCkBAIC00NTEsMTAgKzQ0Niw3IEBA IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkg KiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0 ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50 IHNob3VsZCBiZSBwYXNzZWQuCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBp bmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJCQkg ZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBpbmRl eFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgYm1zX2lzX2VtcHR5KHJl c3VsdFJlbEluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyk7CiAKIAkJc2F0aXNmaWVzQ29uc3Ry YWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24g Ki8KQEAgLTEwMTQsMTUyICsxMDA2LDYgQEAgaW5kZXhfcmVjaGVja19jb25zdHJhaW50KFJlbGF0 aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAot LyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNzIGluZGV4 VW5jaGFuZ2VkIGhpbnQuCi0gKgotICogV2hlbiB0aGUgZXhlY3V0b3IgcGVyZm9ybXMgYW4gVVBE QVRFIHRoYXQgcmVxdWlyZXMgYSBuZXcgcm91bmQgb2YgaW5kZXgKLSAqIHR1cGxlcywgZGV0ZXJt aW5lIGlmIHdlIHNob3VsZCBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgZm9yIG9u ZQotICogc2luZ2xlIGluZGV4LgotICovCi1zdGF0aWMgYm9vbAotaW5kZXhfdW5jaGFuZ2VkX2J5 X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKLQkJ CQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0aW9uIGluZGV4UmVsYXRpb24pCi17Ci0J Qml0bWFwc2V0ICAqdXBkYXRlZENvbHM7Ci0JQml0bWFwc2V0ICAqZXh0cmFVcGRhdGVkQ29sczsK LQlCaXRtYXBzZXQgICphbGxVcGRhdGVkQ29sczsKLQlib29sCQloYXNleHByZXNzaW9uID0gZmFs c2U7Ci0JTGlzdAkgICAqaWR4RXhwcnM7Ci0KLQkvKgotCSAqIENoZWNrIGNhY2hlIGZpcnN0Ci0J ICovCi0JaWYgKGluZGV4SW5mby0+aWlfQ2hlY2tlZFVuY2hhbmdlZCkKLQkJcmV0dXJuIGluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQ7Ci0JaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2Vk ID0gdHJ1ZTsKLQotCS8qCi0JICogQ2hlY2sgZm9yIGluZGV4ZWQgYXR0cmlidXRlIG92ZXJsYXAg d2l0aCB1cGRhdGVkIGNvbHVtbnMuCi0JICoKLQkgKiBPbmx5IGRvIHRoaXMgZm9yIGtleSBjb2x1 bW5zLiAgQSBjaGFuZ2UgdG8gYSBub24ta2V5IGNvbHVtbiB3aXRoaW4gYW4KLQkgKiBJTkNMVURF IGluZGV4IHNob3VsZCBub3QgYmUgY291bnRlZCBoZXJlLiAgTm9uLWtleSBjb2x1bW4gdmFsdWVz IGFyZQotCSAqIG9wYXF1ZSBwYXlsb2FkIHN0YXRlIHRvIHRoZSBpbmRleCBBTSwgYSBsaXR0bGUg bGlrZSBhbiBleHRyYSB0YWJsZSBUSUQuCi0JICoKLQkgKiBOb3RlIHRoYXQgcm93LWxldmVsIEJF Rk9SRSB0cmlnZ2VycyB3b24ndCBhZmZlY3Qgb3VyIGJlaGF2aW9yLCBzaW5jZQotCSAqIHRoZXkg ZG9uJ3QgYWZmZWN0IHRoZSB1cGRhdGVkQ29scyBiaXRtYXBzIGdlbmVyYWxseS4gIEl0IGRvZXNu J3Qgc2VlbQotCSAqIHdvcnRoIHRoZSB0cm91YmxlIG9mIGNoZWNraW5nIHdoaWNoIGF0dHJpYnV0 ZXMgd2VyZSBjaGFuZ2VkIGRpcmVjdGx5LgotCSAqLwotCXVwZGF0ZWRDb2xzID0gRXhlY0dldFVw ZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZXh0cmFVcGRhdGVkQ29scyA9IEV4 ZWNHZXRFeHRyYVVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZm9yIChpbnQg YXR0ciA9IDA7IGF0dHIgPCBpbmRleEluZm8tPmlpX051bUluZGV4S2V5QXR0cnM7IGF0dHIrKykK LQl7Ci0JCWludAkJCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1thdHRy XTsKLQotCQlpZiAoa2V5Y29sIDw9IDApCi0JCXsKLQkJCS8qCi0JCQkgKiBTa2lwIGV4cHJlc3Np b25zIGZvciBub3csIGJ1dCByZW1lbWJlciB0byBkZWFsIHdpdGggdGhlbSBsYXRlcgotCQkJICog b24KLQkJCSAqLwotCQkJaGFzZXhwcmVzc2lvbiA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQot Ci0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1 dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xzKSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXlj b2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVw ZGF0ZWRDb2xzKSkKLQkJewotCQkJLyogQ2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQg Zm9yIHRoaXMgaW5kZXggKi8KLQkJCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxz ZTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhp cyBmYXIgYW5kIGluZGV4IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAot CSAqIGluZGV4X2luc2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdl ZCcgPSB0cnVlIGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5 IGF0dHJpYnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGlu IGFkZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFuZ2Vk IGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRleEluZm8t PmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JLyoKLQkg KiBOZWVkIHRvIHBhc3Mgb25seSBvbmUgYm1zIHRvIGV4cHJlc3Npb25fdHJlZV93YWxrZXIgaGVs cGVyIGZ1bmN0aW9uLgotCSAqIEF2b2lkIGFsbG9jYXRpbmcgbWVtb3J5IGluIGNvbW1vbiBjYXNl IHdoZXJlIHRoZXJlIGFyZSBubyBleHRyYSBjb2xzLgotCSAqLwotCWlmICghZXh0cmFVcGRhdGVk Q29scykKLQkJYWxsVXBkYXRlZENvbHMgPSB1cGRhdGVkQ29sczsKLQllbHNlCi0JCWFsbFVwZGF0 ZWRDb2xzID0gYm1zX3VuaW9uKHVwZGF0ZWRDb2xzLCBleHRyYVVwZGF0ZWRDb2xzKTsKLQotCS8q Ci0JICogV2UgaGF2ZSB0byB3b3JrIHNsaWdodGx5IGhhcmRlciBpbiB0aGUgZXZlbnQgb2YgaW5k ZXhlZCBleHByZXNzaW9ucywKLQkgKiBidXQgdGhlIHByaW5jaXBsZSBpcyB0aGUgc2FtZSBhcyBi ZWZvcmU6IHRyeSB0byBmaW5kIGNvbHVtbnMgKFZhcnMsCi0JICogYWN0dWFsbHkpIHRoYXQgb3Zl cmxhcCB3aXRoIGtub3duLXVwZGF0ZWQgY29sdW1ucy4KLQkgKgotCSAqIElmIHdlIGZpbmQgYW55 IG1hdGNoaW5nIFZhcnMsIGRvbid0IHBhc3MgaGludCBmb3IgaW5kZXguICBPdGhlcndpc2UKLQkg KiBwYXNzIGhpbnQuCi0JICovCi0JaWR4RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWxhdGlvbik7Ci0JaGFzZXhwcmVzc2lvbiA9IGluZGV4X2V4cHJlc3Npb25fY2hh bmdlZF93YWxrZXIoKE5vZGUgKikgaWR4RXhwcnMsCi0JCQkJCQkJCQkJCQkJYWxsVXBkYXRlZENv bHMpOwotCWxpc3RfZnJlZShpZHhFeHBycyk7Ci0JaWYgKGV4dHJhVXBkYXRlZENvbHMpCi0JCWJt c19mcmVlKGFsbFVwZGF0ZWRDb2xzKTsKLQotCWlmIChoYXNleHByZXNzaW9uKQotCXsKLQkJaW5k ZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQot Ci0JLyoKLQkgKiBEZWxpYmVyYXRlbHkgZG9uJ3QgY29uc2lkZXIgaW5kZXggcHJlZGljYXRlcy4g IFdlIHNob3VsZCBldmVuIGdpdmUgdGhlCi0JICogaGludCB3aGVuIHJlc3VsdCByZWwncyAidXBk YXRlZCB0dXBsZSIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5kZXgKLQkgKiB0dXBsZSwgd2hpY2gg aXMgcG9zc2libGUgd2l0aCBhIHBhcnRpYWwgaW5kZXggKHByb3ZpZGVkIHRoZSB1c3VhbAotCSAq IGNvbmRpdGlvbnMgYXJlIG1ldCkuCi0JICovCi0JaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9IHRydWU7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8qCi0gKiBJbmRleGVkIGV4cHJlc3Npb24g aGVscGVyIGZvciBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKCkuCi0gKgotICogUmV0dXJucyB0 cnVlIHdoZW4gVmFyIHRoYXQgYXBwZWFycyB3aXRoaW4gYWxsVXBkYXRlZENvbHMgbG9jYXRlZC4K LSAqLwotc3RhdGljIGJvb2wKLWluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAq bm9kZSwgQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scykKLXsKLQlpZiAobm9kZSA9PSBOVUxMKQot CQlyZXR1cm4gZmFsc2U7Ci0KLQlpZiAoSXNBKG5vZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2 YXIgPSAoVmFyICopIG5vZGU7Ci0KLQkJaWYgKGJtc19pc19tZW1iZXIodmFyLT52YXJhdHRubyAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGFsbFVwZGF0ZWRD b2xzKSkKLQkJewotCQkJLyogVmFyIHdhcyB1cGRhdGVkIC0tIGluZGljYXRlcyB0aGF0IHdlIHNo b3VsZCBub3QgaGludCAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBTdGlsbCBoYXZl bid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRoZSBoaW50ICovCi0JCXJldHVybiBmYWxz ZTsKLQl9Ci0KLQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBpbmRleF9leHBy ZXNzaW9uX2NoYW5nZWRfd2Fsa2VyLAotCQkJCQkJCQkgIGFsbFVwZGF0ZWRDb2xzKTsKLX0KLQog LyoKICAqIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eSAtIHJhaXNlIGFuIGVycm9yIGlmIHRo ZSB0dXBsZSBoYXMgYW4gZW1wdHkKICAqIHJhbmdlIG9yIG11bHRpcmFuZ2UgaW4gdGhlIGdpdmVu IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggZGQwOTJiYWNhZDkuLjlkM2E1Yjc5 ZDI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODQ1LDggKzg0NSw2IEBAIG1ha2VJbmRleElu Zm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVz c2lvbnMsCiAJbi0+aWlfVW5pcXVlID0gdW5pcXVlOwogCW4tPmlpX051bGxzTm90RGlzdGluY3Qg PSBudWxsc19ub3RfZGlzdGluY3Q7CiAJbi0+aWlfUmVhZHlGb3JJbnNlcnRzID0gaXNyZWFkeTsK LQluLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gZmFsc2U7Ci0Jbi0+aWlfSW5kZXhVbmNoYW5nZWQg PSBmYWxzZTsKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5paV9TdW1tYXJp emluZyA9IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdpdGhvdXRvdmVy bGFwczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggOGE5MGFmZTMxNWQuLmIxNThlNDk2YjYzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjE4LDEwICsyMTgsNiBAQCB0eXBlZGVmIHN0cnVjdCBJ bmRleEluZm8KIAlib29sCQlpaV9OdWxsc05vdERpc3RpbmN0OwogCS8qIGlzIGl0IHZhbGlkIGZv ciBpbnNlcnRzPyAqLwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5zZXJ0czsKLQkvKiBJbmRleFVuY2hh bmdlZCBzdGF0dXMgZGV0ZXJtaW5lZCB5ZXQ/ICovCi0JYm9vbAkJaWlfQ2hlY2tlZFVuY2hhbmdl ZDsKLQkvKiBhbWluc2VydCBoaW50LCBjYWNoZWQgZm9yIHJldGFpbCBpbnNlcnRzICovCi0JYm9v bAkJaWlfSW5kZXhVbmNoYW5nZWQ7CiAJLyogYXJlIHdlIGRvaW5nIGEgY29uY3VycmVudCBpbmRl eCBidWlsZD8gKi8KIAlib29sCQlpaV9Db25jdXJyZW50OwogCS8qIGRpZCB3ZSBkZXRlY3QgYW55 IGJyb2tlbiBIT1QgY2hhaW5zPyAqLwotLSAKMi41MS4yCgo= --69665c92_23ba1acf_1975 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v28-0002-Track-changed-indexed-columns-in-the-executor-du.patch" RnJvbSA5ODVjYTQ5ZDNiMjhjNjJiMGQ5OTY0ZTJhMmY1NjhlNDdjMjU5ZWRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogU3VuLCAy NiBPY3QgMjAyNSAxMDo0OToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjI4IDIvNF0gVHJhY2sg Y2hhbmdlZCBpbmRleGVkIGNvbHVtbnMgaW4gdGhlIGV4ZWN1dG9yIGR1cmluZwogVVBEQVRFcwoK UmVmYWN0b3IgZXhlY3V0b3IgdXBkYXRlIGxvZ2ljIHRvIGRldGVybWluZSB3aGljaCBpbmRleGVk IGNvbHVtbnMgaGF2ZQphY3R1YWxseSBjaGFuZ2VkIGR1cmluZyBhbiBVUERBVEUgb3BlcmF0aW9u IHJhdGhlciB0aGFuIGxlYXZpbmcgdGhpcyB1cAp0byBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8o KSBpbiBoZWFwX3VwZGF0ZSgpLgoKRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgcmVw bGFjZXMgSGVhcERldGVybWluZXNDb2x1bW5zSW5mbygpCndoZW4gaW52b2tlZCBmcm9tIHRoZSB0 YWJsZSBBTSBBUEkgdmlhIGhlYXBhbV90dXBsZV91cGRhdGUoKS4gVGhlCnRlc3QgZm9yIGVxdWFs aXR5IHJlbWFpbnMgZGF0dW1Jc0VxdWFsKCkgYXMgYmVmb3JlLgoKVGhpcyBjaGFuZ2UgbmVjZXNz aXRhdGVkIHNvbWUgbG9naWMgY2hhbmdlcyBpbiBleGVjUmVwbGljYXRpb24oKSBhcyBpdApwZXJm b3JtcyB1cGRhdGVzIG5vdyBtdXN0IHByb3ZpZGUgdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHRoYXQg YXJlIGJvdGgKY2hhbmdlZCBhbmQgcmVmZXJlbmNlZCBieSBpbmRleGVzLiAgTHVja2lsbHksIHRo aXMgaXMgYXZhaWxhYmxlIHdpdGhpbgpjYWxscyB0byBzbG90X21vZGlmeV9kYXRhKCkgd2hlcmUg TG9naWNhbFJlcFR1cGxlRGF0YSBpcyBwcm9jZXNzZWQgYW5kCmhhcyBhIHJlY29yZCBvZiB1cGRh dGVkIGF0dHJpYnV0ZXMuICBJbiB0aGlzIGNhc2UgcmF0aGVyIHRoYW4gdXNpbmcKRXhlY1doaWNo SW5kZXhlc1JlcXVpcmVVcGRhdGVzKCkgd2UgY2FuIHByZXNldmUgd2hhdCBzbG90X21vZGlmeV9k YXRhKCkKaWRlbnRpZmllcyBhcyB0aGUgbW9kaWZpZWQgc2V0IGFuZCB0aGVuIGludGVyc2VjdCB0 aGF0IHdpdGggdGhlIHNldCBvZgppbmRleGVzIG9uIHRoZSByZWxhdGlvbiBhbmQgZ2V0IHRoZSBj b3JyZWN0IHNldCBvZiBtb2RpZmllZCBpbmRleGVkCmF0dHJpYnV0ZXMgcmVxdWlyZWQgb24gaGVh cF91cGRhdGUoKS4KClRoaXMgY29tbWl0IGFsc28gZXh0ZW5kcyB0aGUgcm9sZSBpbmRleCBBTXMg cGxheSBkZXRlcm1pbmluZyBpZiB0aGV5CnJlcXVpcmUgYW4gdXBkYXRlLiBBIG5ldyBvcHRpb25h bCBpbmRleCBBTSBBUEksIGFtY29tcGFyZWRhdHVtcygpLCBpcwphZGRlZCB0byBhbGxvdyBpbmRl eCBhY2Nlc3MgbWV0aG9kcyB0byBwcm92aWRlIGN1c3RvbSBsb2dpYyBmb3IKY29tcGFyaW5nIGRh dHVtcy4gSGFzaCBhbmQgR2luIGluZGV4ZXMgbm93IGltcGxlbWVudCB0aGlzIGZ1bmN0aW9uLiBX aGVuCm5vdCBpbXBsZW1lbnRlZCB0aGUgZXhlY3V0b3Igd2lsbCBjb21wYXJlIFR1cGxlVGFibGVT bG90IGRhdHVtIGZvcgplcXVhbGl0eSB1c2luZyBkYXR1bUlzRXF1YWwoKSBhcyBiZWZvcmUuCgpC ZWNhdXNlIGhlYXBfdXBkYXRlKCkgbm93IHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gcHJvdmlkZSB0 aGUgbW9kaWZpZWQKaW5kZXhlZCBjb2x1bW5zIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGhhcyBiZWNv bWUgYSB0YWQgbW9yZSBjb21wbGV4LiAgSXQKaXMgb25seSBjYWxsZWQgZnJvbSBDYXRhbG9nVHVw bGVVcGRhdGUoKSB3aGljaCBlaXRoZXIgdXBkYXRlcyBoZWFwCnR1cGxlcyB2aWEgdGhlaXIgRm9y bV9YWFggb3IgYnkgY2FsbGluZyBoZWFwX21vZGlmeV90dXBsZSgpLiAgSW4gYm90aApjYXNlcyB0 aGUgY2FsbGVyIGRvZXMga25vdyB0aGUgbW9kaWZpZWQgc2V0IG9mIGF0dHJpYnV0ZXMsIGJ1dCBz YWRseQp0aG9zZSBhdHRyaWJ1dGVzIGFyZSBsb3N0IGJlZm9yZSBiZWluZyBwcm92aWRlZCB0byBz aW1wbGVfaGVhcF91cGRhdGUoKS4KRHVlIHRvIHRoYXQgdGhlICJzaW1wbGUiIHBhdGggaGFzIHRv IChmb3Igbm93KSByZXRhaW4gdGhlCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGxvZ2ljIGlu IG9yZGVyIGZvciBjYXRhbG9nIHVwZGF0ZXMgdG8KcG90ZW50aWFsbHkgdGFrZSB0aGUgSE9UIHBh dGguCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jICAgICAgICAgICAgICB8ICA5 MCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAgICAgICAgICAgICB8ICA0 NCArKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDIw ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgNzYg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyAgICAgICAgICAgICB8ICAgOCArCiBz cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgNTcgKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAgICAgICAgICAgICB8ICAxNiArLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgICAgICB8ICA0MSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgICAgICB8ICAgNyArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAyODggKysrKysrKy0KIHNyYy9i YWNrZW5kL25vZGVzL2JpdG1hcHNldC5jICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcwICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUv YWNjZXNzL2FtYXBpLmggICAgICAgICAgICAgICAgICAgIHwgIDI4ICsKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9naW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9uYnRyZWUuaCAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggICAgICAgICAgICAgICAgIHwgIDIwICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5o ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2V4cGVjdGVkL2luc2VydC1jb25mbGljdC1z cGVjY29uZmxpY3Qub3V0IHwgIDIwICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3Vw ZGF0ZXMub3V0ICAgICB8IDY1MCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9oZWFwX2hvdF91cGRhdGVzLnNxbCAgICAgfCA1MTMgKysrKysrKysrKysrKysKIHNyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAzNCBmaWxlcyBj aGFuZ2VkLCAxOTQ5IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRlcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFwX2hvdF91cGRhdGVzLnNx bAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA2ODg3ZTQyMTQ0Mi4uYWE5ZmQxMTA4MDIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTI5MCw2ICsyOTAsNyBAQCBicmluaGFuZGxlcihQR19G VU5DVElPTl9BUkdTKQogCQkuYW1wcm9wZXJ0eSA9IE5VTEwsCiAJCS5hbWJ1aWxkcGhhc2VuYW1l ID0gTlVMTCwKIAkJLmFtdmFsaWRhdGUgPSBicmludmFsaWRhdGUsCisJCS5hbWNvbXBhcmVkYXR1 bXMgPSBOVUxMLAogCQkuYW1hZGp1c3RtZW1iZXJzID0gTlVMTCwKIAkJLmFtYmVnaW5zY2FuID0g YnJpbmJlZ2luc2NhbiwKIAkJLmFtcmVzY2FuID0gYnJpbnJlc2NhbiwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW51dGlsLmMKaW5kZXggZDIwNTA5M2UyMWQuLjc2NDViNGVlMGYyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbnV0aWwuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20u aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3Nl bGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC03OCw2ICs3OSw3IEBAIGdp bmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIAkJLmFtcHJvcGVydHkgPSBOVUxMLAogCQkuYW1i dWlsZHBoYXNlbmFtZSA9IGdpbmJ1aWxkcGhhc2VuYW1lLAogCQkuYW12YWxpZGF0ZSA9IGdpbnZh bGlkYXRlLAorCQkuYW1jb21wYXJlZGF0dW1zID0gZ2luY29tcGFyZWRhdHVtcywKIAkJLmFtYWRq dXN0bWVtYmVycyA9IGdpbmFkanVzdG1lbWJlcnMsCiAJCS5hbWJlZ2luc2NhbiA9IGdpbmJlZ2lu c2NhbiwKIAkJLmFtcmVzY2FuID0gZ2lucmVzY2FuLApAQCAtNDQwLDEzICs0NDIsNiBAQCBjbXBF bnRyaWVzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKIAlyZXR1cm4g cmVzOwogfQogCi0KLS8qCi0gKiBFeHRyYWN0IHRoZSBpbmRleCBrZXkgdmFsdWVzIGZyb20gYW4g aW5kZXhhYmxlIGl0ZW0KLSAqCi0gKiBUaGUgcmVzdWx0aW5nIGtleSB2YWx1ZXMgYXJlIHNvcnRl ZCwgYW5kIGFueSBkdXBsaWNhdGVzIGFyZSByZW1vdmVkLgotICogVGhpcyBhdm9pZHMgZ2VuZXJh dGluZyByZWR1bmRhbnQgaW5kZXggZW50cmllcy4KLSAqLwogRGF0dW0gKgogZ2luRXh0cmFjdEVu dHJpZXMoR2luU3RhdGUgKmdpbnN0YXRlLCBPZmZzZXROdW1iZXIgYXR0bnVtLAogCQkJCSAgRGF0 dW0gdmFsdWUsIGJvb2wgaXNOdWxsLApAQCAtNjkyLDMgKzY4Nyw4NCBAQCBnaW5idWlsZHBoYXNl bmFtZShpbnQ2NCBwaGFzZW51bSkKIAkJCXJldHVybiBOVUxMOwogCX0KIH0KKworLyoKKyAqIGdp bmNvbXBhcmVkYXR1bXMgLSBDb21wYXJlIGRhdHVtcyB0byBkZXRlcm1pbmUgaWYgdGhleSBwcm9k dWNlIGlkZW50aWNhbCBrZXlzCisgKgorICogVGhpcyBmdW5jdGlvbiBleHRyYWN0cyBrZXlzIGZy b20gYm90aCBvbGRfZGF0dW0gYW5kIG5ld19kYXR1bSB1c2luZyB0aGUKKyAqIG9wY2xhc3MncyBl eHRyYWN0VmFsdWUgZnVuY3Rpb24sIHRoZW4gY29tcGFyZXMgdGhlIGV4dHJhY3RlZCBrZXkgYXJy YXlzLgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgc2V0cyBhcmUgaWRlbnRpY2FsIChzYW1l IGtleXMsIHNhbWUgY291bnRzKS4KKyAqCisgKiBUaGlzIGVuYWJsZXMgSE9UIHVwZGF0ZXMgZm9y IEdJTiBpbmRleGVzIHdoZW4gdGhlIGluZGV4ZWQgcG9ydGlvbnMgb2YgYQorICogdmFsdWUgaGF2 ZW4ndCBjaGFuZ2VkLCBldmVuIGlmIHRoZSB2YWx1ZSBpdHNlbGYgaGFzIGNoYW5nZWQuCisgKgor ICogRXhhbXBsZTogSlNPTkIgY29sdW1uIHdpdGggR0lOIGluZGV4LiBJZiBhbiB1cGRhdGUgY2hh bmdlcyBhIG5vbi1pbmRleGVkCisgKiBrZXkgaW4gdGhlIEpTT05CIGRvY3VtZW50LCB0aGUgZXh0 cmFjdGVkIGtleXMgYXJlIGlkZW50aWNhbCBhbmQgd2UgY2FuCisgKiBkbyBhIEhPVCB1cGRhdGUu CisgKi8KK2Jvb2wKK2dpbmNvbXBhcmVkYXR1bXMoUmVsYXRpb24gaW5kZXgsIGludCBhdHRudW0s CisJCQkJIERhdHVtIG9sZF9kYXR1bSwgYm9vbCBvbGRfaXNudWxsLAorCQkJCSBEYXR1bSBuZXdf ZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCkKK3sKKwlHaW5TdGF0ZQlnaW5zdGF0ZTsKKwlEYXR1bQkg ICAqb2xkX2tleXM7CisJRGF0dW0JICAgKm5ld19rZXlzOworCUdpbk51bGxDYXRlZ29yeSAqb2xk X2NhdGVnb3JpZXM7CisJR2luTnVsbENhdGVnb3J5ICpuZXdfY2F0ZWdvcmllczsKKwlpbnQzMgkJ b2xkX25rZXlzOworCWludDMyCQluZXdfbmtleXM7CisJTWVtb3J5Q29udGV4dCB0bXBjb250ZXh0 OworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlyZXN1bHQgPSB0cnVlOworCisJ LyogSGFuZGxlIE5VTEwgY2FzZXMgKi8KKwlpZiAob2xkX2lzbnVsbCAhPSBuZXdfaXNudWxsKQor CQlyZXR1cm4gZmFsc2U7CisJaWYgKG9sZF9pc251bGwpCisJCXJldHVybiB0cnVlOworCisJLyog Q3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBleHRyYWN0aW9uIHdvcmsgKi8KKwl0bXBjb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJ CQkJICAgIkdJTiBkYXR1bSBjb21wYXJpc29uIiwKKwkJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFV TFRfU0laRVMpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1wY29udGV4 dCk7CisKKwlpbml0R2luU3RhdGUoJmdpbnN0YXRlLCBpbmRleCk7CisKKwkvKiBFeHRyYWN0IGtl eXMgZnJvbSBib3RoIGRhdHVtcyB1c2luZyBleGlzdGluZyBHSU4gaW5mcmFzdHJ1Y3R1cmUgKi8K KwlvbGRfa2V5cyA9IGdpbkV4dHJhY3RFbnRyaWVzKCZnaW5zdGF0ZSwgYXR0bnVtLCBvbGRfZGF0 dW0sIG9sZF9pc251bGwsCisJCQkJCQkJCSAmb2xkX25rZXlzLCAmb2xkX2NhdGVnb3JpZXMpOwor CW5ld19rZXlzID0gZ2luRXh0cmFjdEVudHJpZXMoJmdpbnN0YXRlLCBhdHRudW0sIG5ld19kYXR1 bSwgbmV3X2lzbnVsbCwKKwkJCQkJCQkJICZuZXdfbmtleXMsICZuZXdfY2F0ZWdvcmllcyk7CisK KwkvKiBEaWZmZXJlbnQgbnVtYmVyIG9mIGtleXMsIGRlZmluaXRlbHkgZGlmZmVyZW50ICovCisJ aWYgKG9sZF9ua2V5cyAhPSBuZXdfbmtleXMpCisJeworCQlyZXN1bHQgPSBmYWxzZTsKKwkJZ290 byBjbGVhbnVwOworCX0KKworCS8qCisJICogQ29tcGFyZSB0aGUgc29ydGVkIGtleSBhcnJheXMg ZWxlbWVudC1ieS1lbGVtZW50LiBTaW5jZSBib3RoIGFycmF5cyBhcmUKKwkgKiBhbHJlYWR5IHNv cnRlZCBieSBnaW5FeHRyYWN0RW50cmllcywgd2UgY2FuIGRvIGEgc2ltcGxlIE8obikKKwkgKiBj b21wYXJpc29uLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgb2xkX25rZXlzOyBpKyspCisJ eworCQlpZiAoZ2luQ29tcGFyZUVudHJpZXMoJmdpbnN0YXRlLCBhdHRudW0sCisJCQkJCQkJICBv bGRfa2V5c1tpXSwgb2xkX2NhdGVnb3JpZXNbaV0sCisJCQkJCQkJICBuZXdfa2V5c1tpXSwgbmV3 X2NhdGVnb3JpZXNbaV0pICE9IDApCisJCXsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQkJYnJlYWs7 CisJCX0KKwl9CisKK2NsZWFudXA6CisJLyogQ2xlYW4gdXAgKi8KKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBjb250ZXh0KTsKKwor CXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggZTg4ZGRiMzJhMDUu LjQ5YTk5OTk4MDgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC01MCw2ICs1MCwxMCBAQCBz dGF0aWMgdm9pZCBoYXNoYnVpbGRDYWxsYmFjayhSZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkgIHZv aWQgKnN0YXRlKTsKIAogCitzdGF0aWMgYm9vbCBoYXNoY29tcGFyZWRhdHVtcyhSZWxhdGlvbiBp bmRleCwgaW50IGF0dG51bSwKKwkJCQkJCQkgIERhdHVtIG9sZF9kYXR1bSwgYm9vbCBvbGRfaXNu dWxsLAorCQkJCQkJCSAgRGF0dW0gbmV3X2RhdHVtLCBib29sIG5ld19pc251bGwpOworCiAvKgog ICogSGFzaCBoYW5kbGVyIGZ1bmN0aW9uOiByZXR1cm4gSW5kZXhBbVJvdXRpbmUgd2l0aCBhY2Nl c3MgbWV0aG9kIHBhcmFtZXRlcnMKICAqIGFuZCBjYWxsYmFja3MuCkBAIC05OCw2ICsxMDIsNyBA QCBoYXNoaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogCQkuYW1wcm9wZXJ0eSA9IE5VTEwsCiAJ CS5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTCwKIAkJLmFtdmFsaWRhdGUgPSBoYXNodmFsaWRhdGUs CisJCS5hbWNvbXBhcmVkYXR1bXMgPSBoYXNoY29tcGFyZWRhdHVtcywKIAkJLmFtYWRqdXN0bWVt YmVycyA9IGhhc2hhZGp1c3RtZW1iZXJzLAogCQkuYW1iZWdpbnNjYW4gPSBoYXNoYmVnaW5zY2Fu LAogCQkuYW1yZXNjYW4gPSBoYXNocmVzY2FuLApAQCAtOTQ0LDMgKzk0OSw0MiBAQCBoYXNodHJh bnNsYXRlY21wdHlwZShDb21wYXJlVHlwZSBjbXB0eXBlLCBPaWQgb3BmYW1pbHkpCiAJCXJldHVy biBIVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CiAJcmV0dXJuIEludmFsaWRTdHJhdGVneTsKIH0KKwor LyoKKyAqIGhhc2hjb21wYXJlZGF0dW1zIC0gQ29tcGFyZSBkYXR1bXMgdG8gZGV0ZXJtaW5lIGlm IHRoZXkgcHJvZHVjZSBpZGVudGljYWwga2V5cworICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg aGFzaCB2YWx1ZXMgYXJlIGlkZW50aWNhbCAoaW5kZXggZG9lc24ndCBuZWVkIHVwZGF0ZSkuCisg Ki8KK2Jvb2wKK2hhc2hjb21wYXJlZGF0dW1zKFJlbGF0aW9uIGluZGV4LCBpbnQgYXR0bnVtLAor CQkJCSAgRGF0dW0gb2xkX2RhdHVtLCBib29sIG9sZF9pc251bGwsCisJCQkJICBEYXR1bSBuZXdf ZGF0dW0sIGJvb2wgbmV3X2lzbnVsbCkKK3sKKwl1aW50MzIJCW9sZF9oYXNoa2V5OworCXVpbnQz MgkJbmV3X2hhc2hrZXk7CisKKwkvKiBJZiBib3RoIGFyZSBOVUxMLCB0aGV5J3JlIGVxdWFsICov CisJaWYgKG9sZF9pc251bGwgJiYgbmV3X2lzbnVsbCkKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBJ ZiBOVUxMIHN0YXR1cyBkaWZmZXJzLCB0aGV5J3JlIG5vdCBlcXVhbCAqLworCWlmIChvbGRfaXNu dWxsICE9IG5ld19pc251bGwpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogX2hhc2hfZGF0 dW0yaGFzaGtleSgpIGlzIHVzZWQgYmVjYXVzZSB3ZSBrbm93IHRoaXMgY2FuJ3QgYmUgYSBjcm9z cworCSAqIHR5cGUgY29tcGFyaXNvbi4KKwkgKi8KKwlvbGRfaGFzaGtleSA9IF9oYXNoX2RhdHVt Mmhhc2hrZXkoaW5kZXgsIG9sZF9kYXR1bSk7CisJbmV3X2hhc2hrZXkgPSBfaGFzaF9kYXR1bTJo YXNoa2V5KGluZGV4LCBuZXdfZGF0dW0pOworCisJLyoKKwkgKiBJZiBoYXNoIGtleXMgYXJlIGlk ZW50aWNhbCwgdGhlIGluZGV4IGVudHJ5IHdvdWxkIGJlIHRoZSBzYW1lLiBSZXR1cm4KKwkgKiB0 cnVlIHRvIGluZGljYXRlIG5vIGluZGV4IHVwZGF0ZSBuZWVkZWQuCisJICoKKwkgKiBOb3RlOiBI YXNoIGNvbGxpc2lvbnMgYXJlIHJhcmUgYnV0IHBvc3NpYmxlLiBJZiBoYXNoKHgpID09IGhhc2go eSkgYnV0CisJICogeCAhPSB5LCB0aGUgaGFzaCBpbmRleCBzdGlsbCB0cmVhdHMgdGhlbSBpZGVu dGljYWxseSwgc28gd2UgY29ycmVjdGx5CisJICogcmV0dXJuIHRydWUuCisJICovCisJcmV0dXJu IChvbGRfaGFzaGtleSA9PSBuZXdfaGFzaGtleSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CmluZGV4IDg1NjNkYWRjOGRhLi45OTI3OTVkNzNkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTMzMjUsMTIgKzMzMjUsMTIgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCkKICAqIGdlbmVyYXRlZCBieSBhbm90 aGVyIHRyYW5zYWN0aW9uKS4KICAqLwogVE1fUmVzdWx0Ci1oZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgSGVhcFR1cGxlRGF0YSAqb2xkdHVwLAotCQkJSGVhcFR1cGxlIG5ld3R1cCwgQ29t bWFuZElkIGNpZCwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVy ZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBCdWZmZXIgYnVmZmVyLAotCQkJ UGFnZSBwYWdlLCBCbG9ja051bWJlciBibG9jaywgSXRlbUlkIGxwLCBCaXRtYXBzZXQgKmhvdF9h dHRycywKLQkJCUJpdG1hcHNldCAqc3VtX2F0dHJzLCBCaXRtYXBzZXQgKnBrX2F0dHJzLCBCaXRt YXBzZXQgKnJpZF9hdHRycywKLQkJCUJpdG1hcHNldCAqbWl4X2F0dHJzLCBCdWZmZXIgKnZtYnVm ZmVyLAoraGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZURhdGEgKm9sZHR1 cCwgSGVhcFR1cGxlIG5ld3R1cCwKKwkJCUNvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hl Y2ssIGJvb2wgd2FpdCwKKwkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICps b2NrbW9kZSwKKwkJCUJ1ZmZlciBidWZmZXIsIFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgYmxvY2ss IEl0ZW1JZCBscCwKKwkJCUJpdG1hcHNldCAqaG90X2F0dHJzLCBCaXRtYXBzZXQgKnN1bV9hdHRy cywgQml0bWFwc2V0ICpwa19hdHRycywKKwkJCUJpdG1hcHNldCAqcmlkX2F0dHJzLCBjb25zdCBC aXRtYXBzZXQgKm1peF9hdHRycywgQnVmZmVyICp2bWJ1ZmZlciwKIAkJCWJvb2wgcmVwX2lkX2tl eV9yZXF1aXJlZCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJVE1fUmVz dWx0CXJlc3VsdDsKQEAgLTQzOTksOCArNDM5OSw5IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5m byhSZWxhdGlvbiByZWxhdGlvbiwKICAqIFRoaXMgcm91dGluZSBtYXkgYmUgdXNlZCB0byB1cGRh dGUgYSB0dXBsZSB3aGVuIGNvbmN1cnJlbnQgdXBkYXRlcyBvZiB0aGUKICAqIHRhcmdldCB0dXBs ZSBhcmUgbm90IGV4cGVjdGVkIChmb3IgZXhhbXBsZSwgYmVjYXVzZSB3ZSBoYXZlIGEgbG9jayBv biB0aGUKICAqIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHVwbGUpLiAgQW55IGZhaWx1 cmUgaXMgcmVwb3J0ZWQgdmlhIGVyZXBvcnQoKS4KKyAqIFJldHVybnMgdGhlIHNldCBvZiBtb2Rp ZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMuCiAgKi8KLXZvaWQKK0JpdG1hcHNldCAqCiBzaW1wbGVf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKQogewpAQCAtNDUyOSw3ICs0NTMwLDcgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAog CQllbG9nKEVSUk9SLCAidHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsKIAotCQlyZXR1cm47 CisJCXJldHVybiBOVUxMOwogCX0KIAogCS8qCkBAIC00NTYyLDcgKzQ1NjMsNiBAQCBzaW1wbGVf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cAogCWJtc19mcmVlKHN1bV9hdHRycyk7CiAJYm1zX2ZyZWUocGtfYXR0 cnMpOwogCWJtc19mcmVlKHJpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobWl4X2F0dHJzKTsKIAlibXNf ZnJlZShpZHhfYXR0cnMpOwogCiAJc3dpdGNoIChyZXN1bHQpCkBAIC00NTg4LDYgKzQ1ODgsOCBA QCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBo ZWFwX3VwZGF0ZSBzdGF0dXM6ICV1IiwgcmVzdWx0KTsKIAkJCWJyZWFrOwogCX0KKworCXJldHVy biBtaXhfYXR0cnM7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKaW5kZXggNTRjMDIxZmYyMDkuLmZmMDMxOWM0ODUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTMxNSw5ICszMTUsMTIgQEAgaGVhcGFtX3R1cGxlX2Rl bGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgdGlkLCBDb21tYW5kSWQgY2lkLAog CiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCQkJQ29tbWFuZElk IGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQ29tbWFuZElkIGNpZCwg U25hcHNob3Qgc25hcHNob3QsCisJCQkJCVNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwK KwkJCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsCisJCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAorCQkJCQljb25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywKKwkJCQkJVFVfVXBkYXRlSW5kZXhl cyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJYm9vbAkJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGZhbHNl OwogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwpAQCAtMzMyLDcgKzMzNSw2IEBAIGhlYXBhbV90 dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFi bGVTbG90ICpzbG90LAogCQkJICAgKnN1bV9hdHRycywKIAkJCSAgICpwa19hdHRycywKIAkJCSAg ICpyaWRfYXR0cnMsCi0JCQkgICAqbWl4X2F0dHJzLAogCQkJICAgKmlkeF9hdHRyczsKIAlUTV9S ZXN1bHQJcmVzdWx0OwogCkBAIC00MDUsMjUgKzQwNyw2NiBAQCBoZWFwYW1fdHVwbGVfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCwKIAogCUFzc2VydChJdGVtSWRJc05vcm1hbChscCkpOwogCi0JLyoKLQkgKiBQYXJ0aWFsbHkg Y29uc3RydWN0IHRoZSBvbGR0dXAgZm9yIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyB0byB3b3Jr IGFuZAotCSAqIHRoZW4gcGFzcyB0aGF0IG9uIHRvIGhlYXBfdXBkYXRlLgotCSAqLwogCW9sZHR1 cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbik7CiAJb2xkdHVwLnRfZGF0 YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKIAlvbGR0dXAudF9s ZW4gPSBJdGVtSWRHZXRMZW5ndGgobHApOwogCW9sZHR1cC50X3NlbGYgPSAqb3RpZDsKIAotCW1p eF9hdHRycyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaWR4X2F0dHJzLCBy aWRfYXR0cnMsCi0JCQkJCQkJCQkJICZvbGR0dXAsIHR1cGxlLCAmcmVwX2lkX2tleV9yZXF1aXJl ZCk7Ci0KIAkvKgotCSAqIFdlJ2xsIG5lZWQgdG8gV0FMIGxvZyB0aGUgcmVwbGljYSBpZGVudGl0 eSBhdHRyaWJ1dGVzIGlmIGVpdGhlciB0aGV5Ci0JICogb3ZlcmxhcCB3aXRoIHRoZSBtb2RpZmll ZCBpbmRleGVkIGF0dHJpYnV0ZXMgb3IsIGFzIHdlJ3ZlIGNoZWNrZWQgZm9yCi0JICoganVzdCBu b3cgaW4gSGVhcERldGVybWluZUNvbHVtbnNJbmZvLCB0aGV5IHdlcmUgdW5tb2RpZmllZCBleHRl cm5hbAotCSAqIGluZGV4ZWQgYXR0cmlidXRlcy4KKwkgKiBXZSdsbCBuZWVkIHRvIGluY2x1ZGUg dGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5IHdoZW4gZWl0aGVyIHRoZSBpZGVudGl0eQorCSAqIGtl eSBhdHRyaWJ1dGVzIG92ZXJsYXAgd2l0aCB0aGUgbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBv ciB3aGVuIHRoZQorCSAqIHJlcGxpY2EgaWRlbnRpdHkgYXR0cmlidXRlcyBhcmUgc3RvcmVkIGV4 dGVybmFsbHkuICBUaGlzIGlzIHJlcXVpcmVkCisJICogYmVjYXVzZSBmb3Igc3VjaCBhdHRyaWJ1 dGVzIHRoZSBmbGF0dGVuZWQgdmFsdWUgd29uJ3QgYmUgV0FMIGxvZ2dlZCBhcworCSAqIHBhcnQg b2YgdGhlIG5ldyB0dXBsZSBzbyB3ZSBtdXN0IGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGV4dHJh Y3QgYW5kCisJICogaW5jbHVkZSB0aGVtIGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUgKHNl ZSBFeHRyYWN0UmVwbGljYUlkZW50aXR5KS4KIAkgKi8KLQlyZXBfaWRfa2V5X3JlcXVpcmVkID0g cmVwX2lkX2tleV9yZXF1aXJlZCB8fCBibXNfb3ZlcmxhcChtaXhfYXR0cnMsIHJpZF9hdHRycyk7 CisJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGJtc19vdmVybGFwKG1peF9hdHRycywgcmlkX2F0dHJz KTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJeworCQlCaXRtYXBzZXQgICphdHRyczsK KwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwkJaW50 CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qgb3duIGlkeF9hdHRycyBzbyB3 ZSdsbCBjb3B5IGl0IGFuZCByZW1vdmUgdGhlIG1vZGlmaWVkIHNldAorCQkgKiB0byByZWR1Y2Ug dGhlIGF0dHJpYnV0ZXMgd2UgbmVlZCB0byB0ZXN0IGluIHRoZSB3aGlsZSBsb29wIGFuZAorCQkg KiBhdm9pZCBhIHR3byBicmFuY2hlcyBpbiB0aGUgbG9vcC4KKwkJICovCisJCWF0dHJzID0gYm1z X2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtaXhfYXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVt YmVycyhhdHRycywgcmlkX2F0dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21l bWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6 ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICov CisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkv KgorCQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIGludGVyZXN0aW5n X2F0dHJzIGluCisJCQkgKiByZWxjYWNoZQorCQkJICovCisJCQlBc3NlcnQoYXR0cm51bSA+IDAp OworCisJCQl2YWx1ZSA9IGhlYXBfZ2V0YXR0cigmb2xkdHVwLCBhdHRybnVtLCB0dXBkZXNjLCAm aXNudWxsKTsKKworCQkJLyogTm8gbmVlZCB0byBjaGVjayBhdHRyaWJ1dGVzIHRoYXQgY2FuJ3Qg YmUgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlmIChpc251bGwgfHwKKwkJCQlUdXBsZURlc2ND b21wYWN0QXR0cih0dXBkZXNjLCBhdHRybnVtIC0gMSktPmF0dGxlbiAhPSAtMSkKKwkJCQljb250 aW51ZTsKKworCQkJLyogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9y ZWQgZXh0ZXJuYWxseSAqLworCQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgoc3RydWN0IHZhcmxl bmEgKikgRGF0dW1HZXRQb2ludGVyKHZhbHVlKSkpCisJCQl7CisJCQkJcmVwX2lkX2tleV9yZXF1 aXJlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlibXNfZnJlZShhdHRycyk7 CisJfQogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNsb3QtPnR0 c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwpAQCAtNDM3LDcgKzQ4MCw2 IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCWJtc19mcmVlKHN1bV9hdHRycyk7CiAJYm1zX2Zy ZWUocGtfYXR0cnMpOwogCWJtc19mcmVlKHJpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobWl4X2F0dHJz KTsKIAlibXNfZnJlZShpZHhfYXR0cnMpOwogCiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9z ZWxmLCAmc2xvdC0+dHRzX3RpZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHJlZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwppbmRleCAz ZGVjMWVlNjU3ZC4uYjk3NTYxMmJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYwpA QCAtMTU2LDYgKzE1Niw3IEBAIGJ0aGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogCQkuYW1wcm9w ZXJ0eSA9IGJ0cHJvcGVydHksCiAJCS5hbWJ1aWxkcGhhc2VuYW1lID0gYnRidWlsZHBoYXNlbmFt ZSwKIAkJLmFtdmFsaWRhdGUgPSBidHZhbGlkYXRlLAorCQkuYW1jb21wYXJlZGF0dW1zID0gTlVM TCwKIAkJLmFtYWRqdXN0bWVtYmVycyA9IGJ0YWRqdXN0bWVtYmVycywKIAkJLmFtYmVnaW5zY2Fu ID0gYnRiZWdpbnNjYW4sCiAJCS5hbXJlc2NhbiA9IGJ0cmVzY2FuLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZS90YWJsZWFtLmMKaW5kZXggODc0OTE3OTY1MjMuLjQ1OGQ0OGNhNzllIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMKQEAgLTM2Nyw2ICszNjcsNyBAQCB2b2lkCiBzaW1wbGVfdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCSAgVHVw bGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJICBj b25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywKIAkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKQEAgLTM3Nyw3ICszNzgsOSBAQCBz aW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwK IAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNob3QsIElu dmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJ CQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsCisJCQkJCQkJCW1peF9hdHRycywKKwkJCQkJCQkJdXBkYXRlX2luZGV4ZXMpOwog CiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGRk NTc2MjRiNGY5Li44MTM0N2M3YjQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFw L2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAt OTYzLDEwICs5NjMsMTggQEAgaW5kZXhfcmVnaXN0ZXIoT2lkIGhlYXAsCiAJbmV3aW5kLT5pbF9p bmZvLT5paV9FeHByZXNzaW9ucyA9CiAJCWNvcHlPYmplY3QoaW5kZXhJbmZvLT5paV9FeHByZXNz aW9ucyk7CiAJbmV3aW5kLT5pbF9pbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCS8q IGV4cHJlc3Npb24gYXR0cnMgd2lsbCBsaWtlbHkgYmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNv cHkgaXQgKi8KKwluZXdpbmQtPmlsX2luZm8tPmlpX0V4cHJlc3Npb25zQXR0cnMgPQorCQljb3B5 T2JqZWN0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNBdHRycyk7CiAJLyogcHJlZGljYXRlIHdp bGwgbGlrZWx5IGJlIG51bGwsIGJ1dCBtYXkgYXMgd2VsbCBjb3B5IGl0ICovCiAJbmV3aW5kLT5p bF9pbmZvLT5paV9QcmVkaWNhdGUgPQogCQljb3B5T2JqZWN0KGluZGV4SW5mby0+aWlfUHJlZGlj YXRlKTsKIAluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKKwkvKiBw cmVkaWNhdGUgYXR0cnMgd2lsbCBsaWtlbHkgYmUgbnVsbCwgYnV0IG1heSBhcyB3ZWxsIGNvcHkg aXQgKi8KKwluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZUF0dHJzID0KKwkJY29weU9iamVj dChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZUF0dHJzKTsKKwluZXdpbmQtPmlsX2luZm8tPmlpX0No ZWNrZWRQcmVkaWNhdGUgPSBmYWxzZTsKKwluZXdpbmQtPmlsX2luZm8tPmlpX1ByZWRpY2F0ZVNh dGlzZmllZCA9IGZhbHNlOwogCS8qIG5vIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBhdCBib290c3Ry YXAgdGltZSwgc28gbm8gbmVlZCB0byBjb3B5ICovCiAJQXNzZXJ0KGluZGV4SW5mby0+aWlfRXhj bHVzaW9uT3BzID09IE5VTEwpOwogCUFzc2VydChpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2Nz ID09IE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDQzZGU0MmNlMzllLi5mZTUzNmM5NzQwZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFw YW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Jl bHNjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90 YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3RyYW5zYW0uaCIKQEAgLTU4LDYgKzU5LDcgQEAKICNpbmNsdWRlICJjb21tYW5k cy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rl cy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJv cHRpbWl6ZXIvb3B0aW1pemVyLmgiCkBAIC0yNDEyLDYgKzI0MTQsNjEgQEAgaW5kZXhfZHJvcChP aWQgaW5kZXhJZCwgYm9vbCBjb25jdXJyZW50LCBib29sIGNvbmN1cnJlbnRfbG9ja19tb2RlKQog ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICovCiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqIEJ1aWxkVXBkYXRlSW5k ZXhJbmZvCisgKgorICogRm9yIGV4cHJlc3Npb24gaW5kZXhlcyB1cGRhdGVzIG1heSBub3QgY2hh bmdlIHRoZSBpbmRleGVkIHZhbHVlIGFsbG93aW5nCisgKiBmb3IgYSBIT1QgdXBkYXRlLiAgQWRk IGluZm9ybWF0aW9uIHRvIHRoZSBJbmRleEluZm8gdG8gYWxsb3cgZm9yIGNoZWNraW5nCisgKiBp ZiB0aGUgaW5kZXhlZCB2YWx1ZSBoYXMgY2hhbmdlZC4KKyAqCisgKiBEbyB0aGlzIHByb2Nlc3Np bmcgaGVyZSByYXRoZXIgdGhhbiBpbiBCdWlsZEluZGV4SW5mbygpIHRvIG5vdCBpbmN1ciB0aGUK KyAqIG92ZXJoZWFkIGluIHRoZSBjb21tb24gbm9uLWV4cHJlc3Npb24gY2FzZXMuCisgKiAtLS0t LS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK0J1aWxkVXBkYXRlSW5kZXhJbmZvKFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8pCit7CisJZm9yIChpbnQgaiA9IDA7IGogPCByZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzOyBqKyspCisJeworCQlpbnQJCQlpOworCQlpbnQJCQlpbmRuYXR0czsK KwkJQml0bWFwc2V0ICAqYXR0cnMgPSBOVUxMOworCQlJbmRleEluZm8gICppaSA9IHJlc3VsdFJl bEluZm8tPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCWluZG5hdHRzID0gaWktPmlpX051 bUluZGV4QXR0cnM7CisKKwkJLyogQ29sbGVjdCBrZXkgYXR0cmlidXRlcyB1c2VkIGJ5IHRoZSBp bmRleCwga2V5IGFuZCBpbmNsdWRpbmcgKi8KKwkJZm9yIChpID0gMDsgaSA8IGluZG5hdHRzOyBp KyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0gaWktPmlpX0luZGV4QXR0ck51bWJlcnNb aV07CisKKwkJCWlmIChhdHRudW0gIT0gMCkKKwkJCQlhdHRycyA9IGJtc19hZGRfbWVtYmVyKGF0 dHJzLCBhdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJfQor CisJCS8qIENvbGxlY3QgYXR0cmlidXRlcyB1c2VkIGluIHRoZSBleHByZXNzaW9uICovCisJCWlm IChpaS0+aWlfRXhwcmVzc2lvbnMpCisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlf RXhwcmVzc2lvbnMsCisJCQkJCQkgICByZXN1bHRSZWxJbmZvLT5yaV9SYW5nZVRhYmxlSW5kZXgs CisJCQkJCQkgICAmaWktPmlpX0V4cHJlc3Npb25zQXR0cnMpOworCisJCS8qIENvbGxlY3QgYXR0 cmlidXRlcyB1c2VkIGluIHRoZSBwcmVkaWNhdGUgKi8KKwkJaWYgKGlpLT5paV9QcmVkaWNhdGUp CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlfUHJlZGljYXRlLAorCQkJCQkJICAg cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4LAorCQkJCQkJICAgJmlpLT5paV9QcmVk aWNhdGVBdHRycyk7CisKKwkJLyoKKwkJICogQ29tYmluZSBrZXksIGluY2x1ZGluZywgYW5kIGV4 cHJlc3Npb24sIGJ1dCBub3QgcGFydGlhbCBpbmRleAorCQkgKiBwcmVkaWNhdGUgYXR0cmlidXRl cy4KKwkJICovCisJCWlpLT5paV9JbmRleGVkQXR0cnMgPSBibXNfdW5pb24oYXR0cnMsIGlpLT5p aV9FeHByZXNzaW9uc0F0dHJzKTsKKworCQkvKiBBbGwgaW5kZXhlcyBzaG91bGQgaW5kZXggKnNv bWV0aGluZyohICovCisJCUFzc2VydCghYm1zX2lzX2VtcHR5KGlpLT5paV9JbmRleGVkQXR0cnMp KTsKKwl9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlCdWlsZEluZGV4SW5mbwogICoJ CQlDb25zdHJ1Y3QgYW4gSW5kZXhJbmZvIHJlY29yZCBmb3IgYW4gb3BlbiBpbmRleApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleGluZy5jCmluZGV4IDBhMWE2OGUwNjQ0Li42OTBhMjUxMTAyMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYwpAQCAtMTAyLDcgKzEwMiw3IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRhbG9n SW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAkgKiBHZXQgaW5mb3Jt YXRpb24gZnJvbSB0aGUgc3RhdGUgc3RydWN0dXJlLiAgRmFsbCBvdXQgaWYgbm90aGluZyB0byBk by4KIAkgKi8KIAludW1JbmRleGVzID0gaW5kc3RhdGUtPnJpX051bUluZGljZXM7Ci0JaWYgKG51 bUluZGV4ZXMgPT0gMCkKKwlpZiAobnVtSW5kZXhlcyA9PSAwIHx8IHVwZGF0ZUluZGV4ZXMgPT0g VFVfTm9uZSkKIAkJcmV0dXJuOwogCXJlbGF0aW9uRGVzY3MgPSBpbmRzdGF0ZS0+cmlfSW5kZXhS ZWxhdGlvbkRlc2NzOwogCWluZGV4SW5mb0FycmF5ID0gaW5kc3RhdGUtPnJpX0luZGV4UmVsYXRp b25JbmZvOwpAQCAtMzE0LDE1ICszMTQsMTggQEAgQ2F0YWxvZ1R1cGxlVXBkYXRlKFJlbGF0aW9u IGhlYXBSZWwsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsK IAlDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZTsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUlu ZGV4ZXMgPSBUVV9BbGw7CisJQml0bWFwc2V0ICAqdXBkYXRlZEF0dHJzOwogCiAJQ2F0YWxvZ1R1 cGxlQ2hlY2tDb25zdHJhaW50cyhoZWFwUmVsLCB0dXApOwogCiAJaW5kc3RhdGUgPSBDYXRhbG9n T3BlbkluZGV4ZXMoaGVhcFJlbCk7CiAKLQlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3Rp ZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7Ci0KKwl1cGRhdGVkQXR0cnMgPSBzaW1wbGVfaGVhcF91 cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBkYXRlSW5kZXhlcyk7CisJKChSZXN1bHRSZWxJ bmZvICopIGluZHN0YXRlKS0+cmlfQ2hhbmdlZEluZGV4ZWRDb2xzID0gdXBkYXRlZEF0dHJzOwog CUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVJbmRleGVzKTsKKwogCUNh dGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOworCWJtc19mcmVlKHVwZGF0ZWRBdHRycyk7CiB9 CiAKIC8qCkBAIC0zMzgsMTIgKzM0MSwxNSBAQCBDYXRhbG9nVHVwbGVVcGRhdGVXaXRoSW5mbyhS ZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdQogCQkJ CQkJICAgQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUpCiB7CiAJVFVfVXBkYXRlSW5kZXhlcyB1 cGRhdGVJbmRleGVzID0gVFVfQWxsOworCUJpdG1hcHNldCAgKnVwZGF0ZWRBdHRyczsKIAogCUNh dGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMoaGVhcFJlbCwgdHVwKTsKIAotCXNpbXBsZV9oZWFw X3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRleGVzKTsKLQorCXVwZGF0ZWRB dHRycyA9IHNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1cGRhdGVJbmRl eGVzKTsKKwkoKFJlc3VsdFJlbEluZm8gKikgaW5kc3RhdGUpLT5yaV9DaGFuZ2VkSW5kZXhlZENv bHMgPSB1cGRhdGVkQXR0cnM7CiAJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHVw ZGF0ZUluZGV4ZXMpOworCSgoUmVzdWx0UmVsSW5mbyAqKSBpbmRzdGF0ZSktPnJpX0NoYW5nZWRJ bmRleGVkQ29scyA9IE5VTEw7CisJYm1zX2ZyZWUodXBkYXRlZEF0dHJzKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvdG9hc3RpbmcuYwppbmRleCBjNzhkY2VhOThjMS4uZmY4ZGE1YmU1ZjggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3RvYXN0aW5nLmMKQEAgLTI5Miw4ICsyOTIsMTIgQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJl bGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRleEluZm8t PmlpX0luZGV4QXR0ck51bWJlcnNbMV0gPSAyOwogCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMg PSBOSUw7CiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCWluZGV4SW5m by0+aWlfRXhwcmVzc2lvbnNBdHRycyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUg PSBOSUw7CiAJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisJaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVBdHRycyA9IE5VTEw7CisJaW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGlj YXRlID0gZmFsc2U7CisJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQgPSBmYWxzZTsK IAlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9FeGNs dXNpb25Qcm9jcyA9IE5VTEw7CiAJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHMgPSBOVUxM OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA2YWUwZjk1OTU5Mi4uMTI3NWZl ZmZhZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMDksMTEgKzEwOSwx NSBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2Fu LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0 ci5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAibm9kZXMvYml0bWFw c2V0LmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGls cy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCkBAIC0z MjQsOCArMzI4LDggQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCiAJUmVsYXRpb24JaGVhcFJlbGF0aW9uOwogCUluZGV4SW5mbyAqKmluZGV4SW5m b0FycmF5OwogCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlEYXR1bQkJdmFsdWVzW0lOREVYX01B WF9LRVlTXTsKLQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOworCURhdHVtCQlsb2NfdmFs dWVzW0lOREVYX01BWF9LRVlTXTsKKwlib29sCQlsb2NfaXNudWxsW0lOREVYX01BWF9LRVlTXTsK IAogCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQodHVwbGVpZCkpOwogCkBAIC0zNDksMTMgKzM1 MywxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNjYW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxl IHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwogCi0JLyoK LQkgKiBmb3IgZWFjaCBpbmRleCwgZm9ybSBhbmQgaW5zZXJ0IHRoZSBpbmRleCB0dXBsZQotCSAq LworCS8qIEluc2VydCBpbnRvIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB1cGRhdGluZyAqLwogCWZv ciAoaSA9IDA7IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewogCQlSZWxhdGlvbglpbmRleFJlbGF0 aW9uID0gcmVsYXRpb25EZXNjc1tpXTsKIAkJSW5kZXhJbmZvICAqaW5kZXhJbmZvOworCQlEYXR1 bQkgICAqdmFsdWVzOworCQlib29sCSAgICppc251bGw7CiAJCWJvb2wJCWFwcGx5Tm9EdXBFcnI7 CiAJCUluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWU7CiAJCWJvb2wJCWluZGV4VW5jaGFuZ2Vk OwpAQCAtMzcyLDcgKzM3Niw3IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCiAJCS8qCiAJCSAqIFNraXAgcHJvY2Vzc2luZyBvZiBub24tc3Vt bWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IHVwZGF0ZQotCQkgKiBzdW1tYXJpemluZyBpbmRl eGVzCisJCSAqIHN1bW1hcml6aW5nIGluZGV4ZXMgb3IgaWYgdGhpcyBpbmRleCBpcyB1bmNoYW5n ZWQuCiAJCSAqLwogCQlpZiAob25seVN1bW1hcml6aW5nICYmICFpbmRleEluZm8tPmlpX1N1bW1h cml6aW5nKQogCQkJY29udGludWU7CkBAIC0zOTMsOCArMzk3LDE1IEBAIEV4ZWNJbnNlcnRJbmRl eFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU3RhdGUgPSBwcmVkaWNhdGU7CiAJCQl9CiAKKwkJCS8qIENoZWNrIHRoZSBpbmRl eCBwcmVkaWNhdGUgaWYgd2UgaGF2ZW4ndCBkb25lIHNvIGVhcmxpZXIgb24gKi8KKwkJCWlmICgh aW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlKQorCQkJeworCQkJCWluZGV4SW5mby0+aWlf UHJlZGljYXRlU2F0aXNmaWVkID0gRXhlY1F1YWwocHJlZGljYXRlLCBlY29udGV4dCk7CisJCQkJ aW5kZXhJbmZvLT5paV9DaGVja2VkUHJlZGljYXRlID0gdHJ1ZTsKKwkJCX0KKwogCQkJLyogU2tp cCB0aGlzIGluZGV4LXVwZGF0ZSBpZiB0aGUgcHJlZGljYXRlIGlzbid0IHNhdGlzZmllZCAqLwot CQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKKwkJCWlmICghaW5kZXhJbmZv LT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQpCiAJCQkJY29udGludWU7CiAJCX0KIApAQCAtNDAyLDEx ICs0MTMsMTAgQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCSAqIEZvcm1JbmRleERhdHVtIGZpbGxzIGluIGl0cyB2YWx1ZXMgYW5kIGlzbnVs bCBwYXJhbWV0ZXJzIHdpdGggdGhlCiAJCSAqIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhlIGNv bHVtbihzKSBvZiB0aGUgaW5kZXguCiAJCSAqLwotCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8s Ci0JCQkJCSAgIHNsb3QsCi0JCQkJCSAgIGVzdGF0ZSwKLQkJCQkJICAgdmFsdWVzLAotCQkJCQkg ICBpc251bGwpOworCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sIHNsb3QsIGVzdGF0ZSwgbG9j X3ZhbHVlcywgbG9jX2lzbnVsbCk7CisKKwkJdmFsdWVzID0gbG9jX3ZhbHVlczsKKwkJaXNudWxs ID0gbG9jX2lzbnVsbDsKIAogCQkvKiBDaGVjayB3aGV0aGVyIHRvIGFwcGx5IG5vRHVwRXJyIHRv IHRoaXMgaW5kZXggKi8KIAkJYXBwbHlOb0R1cEVyciA9IG5vRHVwRXJyICYmCkBAIC02MTMsNyAr NjIzLDEyIEBAIEV4ZWNDaGVja0luZGV4Q29uc3RyYWludHMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCWNoZWNrZWRJbmRleCA9IHRydWU7CiAK IAkJLyogQ2hlY2sgZm9yIHBhcnRpYWwgaW5kZXggKi8KLQkJaWYgKGluZGV4SW5mby0+aWlfUHJl ZGljYXRlICE9IE5JTCkKKwkJaWYgKGluZGV4SW5mby0+aWlfQ2hlY2tlZFByZWRpY2F0ZSAmJiAh aW5kZXhJbmZvLT5paV9QcmVkaWNhdGVTYXRpc2ZpZWQpCisJCXsKKwkJCS8qIFdlJ3ZlIGFscmVh ZHkgY2hlY2tlZCBhbmQgdGhlIHByZWRpY2F0ZSB3YXNuJ3Qgc2F0aXNmaWVkLiAqLworCQkJY29u dGludWU7CisJCX0KKwkJZWxzZSBpZiAoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklMKQog CQl7CiAJCQlFeHByU3RhdGUgICpwcmVkaWNhdGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IGNhMTRjZGFiZGQwLi5mYzZmN2FhOGZhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC0xMjgyLDYgKzEyODIsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCS8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBzZXQgbGF0ZXIgaWYgbmVl ZGVkICovCiAJcmVzdWx0UmVsSW5mby0+cmlfUm93SWRBdHRObyA9IDA7CiAJcmVzdWx0UmVsSW5m by0+cmlfZXh0cmFVcGRhdGVkQ29scyA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+cmlfQ2hhbmdl ZEluZGV4ZWRDb2xzID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0TmV3ID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9uZXdUdXBsZVNsb3QgPSBOVUxMOwogCXJlc3VsdFJlbElu Zm8tPnJpX29sZFR1cGxlU2xvdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jCmluZGV4IDcyZjJiZmY3NzA4Li5jOGRiYmMyYTc4YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlw Y2FjaGUuaCIKQEAgLTkzNyw3ICs5MzgsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0 aXRpb24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRl LCB0cnVlKTsKIAorCQkvKgorCQkgKiBXZSdyZSBub3QgZ29pbmcgdG8gY2FsbCBFeGVjQ2hlY2tJ bmRleGVkQXR0cnNGb3JDaGFuZ2VzIGhlcmUKKwkJICogYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IGlk ZW50aWZpZWQgdGhlIGNoYW5nZXMgZWFybGllciBvbiB0aGFua3MgdG8KKwkJICogc2xvdF9tb2Rp ZnlfZGF0YS4KKwkJICovCiAJCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNs b3QsIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCSAgcmVzdWx0UmVsSW5mby0+cmlfQ2hh bmdlZEluZGV4ZWRDb2xzLAogCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CiAKIAkJY29uZmxp Y3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA0NmZmNmRhODI4OS4uYWIw YTM0M2JjZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xNyw2 ICsxNyw3IEBACiAgKgkJRXhlY01vZGlmeVRhYmxlCQktIHJldHJpZXZlIHRoZSBuZXh0IHR1cGxl IGZyb20gdGhlIG5vZGUKICAqCQlFeGVjRW5kTW9kaWZ5VGFibGUJLSBzaHV0IGRvd24gdGhlIE1v ZGlmeVRhYmxlIG5vZGUKICAqCQlFeGVjUmVTY2FuTW9kaWZ5VGFibGUgLSByZXNjYW4gdGhlIE1v ZGlmeVRhYmxlIG5vZGUKKyAqCQlFeGVjQ2hlY2tJbmRleGVkQXR0cnNGb3JDaGFuZ2VzIC0gZmlu ZCBzZXQgb2YgdXBkYXRlZCBpbmRleGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlUaGUg TW9kaWZ5VGFibGUgbm9kZSByZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNo IGlzCkBAIC01MiwxMyArNTMsMjAgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNs dWRlICJhY2Nlc3MvYW1hcGkuaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisj aW5jbHVkZSAiYWNjZXNzL2F0dG51bS5oIgorI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5o IgorI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK KyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgorI2lu Y2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mZHdhcGkuaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAg LTY4LDggKzc2LDExIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxz L2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRp bHMvcmVsY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIApAQCAtMTc2LDYg KzE4NywyMjQgQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRjaGVkKE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCSAgIGJvb2wgY2FuU2V0VGFnKTsKIAorLyoKKyAqIEV4 ZWNDaGVja0luZGV4ZWRBdHRyc0ZvckNoYW5nZXMKKyAqCisgKiBEZXRlcm1pbmUgd2hpY2ggaW5k ZXhlcyBuZWVkIHVwZGF0aW5nIGJ5IGZpbmRpbmcgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVk CisgKiBhdHRyaWJ1dGVzLgorICoKKyAqIEZvciB3aGljaCBpbXBsZW1lbnQgdGhlIGFtY29tcGFy ZWRhdHVtcygpIGluZGV4IEFNIEFQSSB3ZSdsbCBuZWVkIHRvIGZvcm0KKyAqIGluZGV4IGRhdHVt IGFuZCBjb21wYXJlIGVhY2ggYXR0cmlidXRlIHRvIHNlZSBpZiBhbnl0aGluZyBhY3R1YWxseSBj aGFuZ2VkLgorICoKKyAqIFRoZSBnb2FsIGlzIGZvciB0aGUgZXhlY3V0b3IgdG8ga25vdywgYWhl YWQgb2YgY2FsbGluZyBpbnRvIHRoZSB0YWJsZSBBTSB0bworICogcHJvY2VzcyB0aGUgdXBkYXRl IGFuZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBpbmRleCBBTSBmb3IgaW5zZXJ0aW5nIG5ldwor ICogaW5kZXggdHVwbGVzLCB3aGljaCBhdHRyaWJ1dGVzIGluIHRoZSBuZXcgVHVwbGVUYWJsZVNs b3QsIGlmIGFueSwgdHJ1ZWx5CisgKiBuZWNlc3NpdGF0ZSBhIG5ldyBpbmRleCB0dXBsZS4KKyAq CisgKiBSZXR1cm5zIGEgQml0bWFwc2V0IG9mIGF0dHJpYnV0ZXMgdGhhdCBpbnRlcnNlY3RzIHdp dGggaW5kZXhlcyB3aGljaCByZXF1aXJlCisgKiBhIG5ldyBpbmRleCB0dXBsZS4KKyAqLworQml0 bWFwc2V0ICoKK0V4ZWNDaGVja0luZGV4ZWRBdHRyc0ZvckNoYW5nZXMoUmVzdWx0UmVsSW5mbyAq cmVsaW5mbywKKwkJCQkJCQkJRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCVR1cGxlVGFibGVTbG90 ICpvbGRfdHRzLAorCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cykKK3sKKwlSZWxhdGlv bglyZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlUdXBsZURlc2MJdHVwZGVz YyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCUJpdG1hcHNldCAgKm1peF9hdHRycyA9 IE5VTEw7CS8qIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyAqLworCisJLyogSWYgbm8gaW5k ZXhlcywgd2UncmUgZG9uZSAqLworCWlmIChyZWxpbmZvLT5yaV9OdW1JbmRpY2VzID09IDApCisJ CXJldHVybiBOVUxMOworCisJLyogRmluZCB0aGUgaW5kZXhlcyB0aGF0IHJlZmVyZW5jZSB0aGlz IGF0dHJpYnV0ZSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgcmVsaW5mby0+cmlfTnVtSW5kaWNl czsgaSsrKQorCXsKKwkJUmVsYXRpb24JaW5kZXggPSByZWxpbmZvLT5yaV9JbmRleFJlbGF0aW9u RGVzY3NbaV07CisJCWNvbnN0IEluZGV4QW1Sb3V0aW5lICphbXJvdXRpbmUgPSBpbmRleC0+cmRf aW5kYW07CisJCUluZGV4SW5mbyAgKmluZGV4SW5mbyA9IHJlbGluZm8tPnJpX0luZGV4UmVsYXRp b25JbmZvW2ldOworCQlCaXRtYXBzZXQgICptX2F0dHJzID0gTlVMTDsgLyogKHBvc3NpYmx5KSBt b2RpZmllZCBpbmRleGVkIGF0dHJzICovCisJCUJpdG1hcHNldCAgKnBfYXR0cnMgPSBOVUxMOyAv KiAocG9zc2libHkpIG1vZGlmaWVkIHByZWRpY2F0ZSBhdHRycyAqLworCQlCaXRtYXBzZXQgICp1 X2F0dHJzID0gTlVMTDsgLyogdW5tb2RpZmllZCBpbmRleGVkIGF0dHJzICovCisJCWJvb2wJCWhh c19hbV9jb21wYXJlID0gKGFtcm91dGluZS0+YW1jb21wYXJlZGF0dW1zICE9IE5VTEwpOworCQli b29sCQlzdXBwb3J0c19pb3MgPSAoYW1yb3V0aW5lLT5hbWNhbnJldHVybiAhPSBOVUxMKTsKKwkJ Ym9vbAkJaXNfcGFydGlhbCA9IChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSAhPSBOSUwpOworCQlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJ CWludAkJCW51bV9kYXR1bXMgPSBzdXBwb3J0c19pb3MgPworCQkJaW5kZXhJbmZvLT5paV9OdW1J bmRleEF0dHJzIDogaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0dHJzOworCisJCS8qIElmIHdl J3ZlIHJldmlld2VkIGFsbCB0aGUgYXR0cmlidXRlcyBvbiB0aGlzIGluZGV4LCBtb3ZlIG9uICov CisJCWlmIChibXNfaXNfc3Vic2V0KGluZGV4SW5mby0+aWlfSW5kZXhlZEF0dHJzLCBtaXhfYXR0 cnMpKQorCQkJY29udGludWU7CisKKwkJLyogQWRkIHBhcnRpYWwgaW5kZXggYXR0cmlidXRlcyAq LworCQlpZiAoaXNfcGFydGlhbCkKKwkJCXBfYXR0cnMgPSBibXNfYWRkX21lbWJlcnMocF9hdHRy cywgaW5kZXhJbmZvLT5paV9QcmVkaWNhdGVBdHRycyk7CisKKwkJLyogQ29tcGFyZSB0aGUgaW5k ZXggZGF0dW1zIGZvciBlcXVhbGl0eSAqLworCQlmb3IgKGludCBqID0gMDsgaiA8IG51bV9kYXR1 bXM7IGorKykKKwkJeworCQkJQXR0ck51bWJlcglyZWxfYXR0cm51bSA9IGluZGV4SW5mby0+aWlf SW5kZXhBdHRyTnVtYmVyc1tqXTsKKwkJCWludAkJCXJlbF9hdHRyaWR4ID0gcmVsX2F0dHJudW0g LSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCQkJaW50CQkJbnRoX2V4cHIg PSAwOworCQkJaW50MTYJCXR5cGxlbjsKKwkJCWJvb2wJCXR5cGJ5dmFsOworCQkJRGF0dW0JCW9s ZF92YWx1ZTsKKwkJCURhdHVtCQluZXdfdmFsdWU7CisJCQlib29sCQlvbGRfbnVsbDsKKwkJCWJv b2wJCW5ld19udWxsOworCQkJYm9vbAkJdmFsdWVzX2VxdWFsID0gZmFsc2U7CisKKwkJCS8qIFN5 c3RlbSBhdHRyaWJ1dGVzICovCisJCQlpZiAocmVsX2F0dHJudW0gPCAwKQorCQkJeworCQkJCS8q IEV4dHJhY3Qgc3lzdGVtIHZhbHVlcyBmcm9tIGJvdGggc2xvdHMgZm9yIHRoaXMgYXR0cmlidXRl ICovCisJCQkJb2xkX3ZhbHVlID0gc2xvdF9nZXRzeXNhdHRyKG9sZF90dHMsIHJlbF9hdHRybnVt LCAmb2xkX251bGwpOworCQkJCW5ld192YWx1ZSA9IHNsb3RfZ2V0c3lzYXR0cihuZXdfdHRzLCBy ZWxfYXR0cm51bSwgJm5ld19udWxsKTsKKworCQkJCS8qIFRoZSBvbmx5IGFsbG93ZWQgc3lzdGVt IGNvbHVtbnMgYXJlIE9JRHMsIHNvIGRvIHRoaXMgKi8KKwkJCQl2YWx1ZXNfZXF1YWwgPSAoRGF0 dW1HZXRPYmplY3RJZChvbGRfdmFsdWUpID09IERhdHVtR2V0T2JqZWN0SWQobmV3X3ZhbHVlKSk7 CisJCQkJZ290byBlcXVhbGl0eV9kZXRlcm1pbmVkOworCQkJfQorCisJCQkvKgorCQkJICogVGhp cyBpcyBhbiBleHByZXNzaW9uIGF0dHJpYnV0ZSwgYnV0IGluIGFuIGVmZm9ydCB0byBhdm9pZCB0 aGUKKwkJCSAqIGV4cGVuc2Ugb2YgSW5kZXhGb3JtRGF0dW0gd2UncmUgbm93IGZhY2VkIHdpdGgg dGVzdGluZyBmb3IKKwkJCSAqIGVxdWFsaXR5IHNvIHdlJ2xsIGhhdmUgdG8gZXhlYyB0aGUgZXhw cmVzc2lvbnMgYW5kIHRlc3QgZm9yCisJCQkgKiBiaW5hcnkgZXF1YWxpdHkgb2YgdGhlIHJlc3Vs dHMuCisJCQkgKi8KKwkJCWVsc2UgaWYgKHJlbF9hdHRybnVtID09IDApCisJCQl7CisJCQkJVHVw bGVUYWJsZVNsb3QgKnNhdmVfc2NhbnR1cGxlID0gZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlOwor CQkJCU9pZAkJCWV4cHJfdHlwZV9vaWQ7CisJCQkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxp c3RfbnRoKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMsIG50aF9leHByKTsKKwkJCQlFeHByU3Rh dGUgICpzdGF0ZTsKKworCQkJCWlmIChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPT0g TklMKQorCQkJCXsKKwkJCQkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBzZXQgdXAgZXhwcmVzc2lv biBldmFsdWF0aW9uIHN0YXRlICovCisJCQkJCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0 ZSA9CisJCQkJCQlFeGVjUHJlcGFyZUV4cHJMaXN0KGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMs IGVzdGF0ZSk7CisJCQkJfQorCisJCQkJc3RhdGUgPSAoRXhwclN0YXRlICopIGxpc3RfbnRoKGlu ZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSwgbnRoX2V4cHIpOworCisJCQkJZWNvbnRleHQt PmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCQlvbGRfdmFsdWUgPSBFeGVjRXZhbEV4cHJT d2l0Y2hDb250ZXh0KHN0YXRlLAorCQkJCQkJCQkJCQkJCSAgR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpLAorCQkJCQkJCQkJCQkJCSAgJm9sZF9udWxsKTsKKworCQkJCWVjb250ZXh0LT5l Y3h0X3NjYW50dXBsZSA9IG5ld190dHM7CisJCQkJbmV3X3ZhbHVlID0gRXhlY0V2YWxFeHByU3dp dGNoQ29udGV4dChzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgIEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKSwKKwkJCQkJCQkJCQkJCQkgICZuZXdfbnVsbCk7CisKKwkJCQllY29udGV4dC0+ZWN4 dF9zY2FudHVwbGUgPSBzYXZlX3NjYW50dXBsZTsKKworCQkJCS8qCisJCQkJICogTk9URTogdGVz dCBmb3IgTlVMTCBjYXNlcyBoZXJlIHRvIHBvdGVudGlhbGx5IGF2b2lkIGxvb2tpbmcKKwkJCQkg KiB1cCB0aGUgdHlwZSBpbmZvcm1hdGlvbi4gIEl0J3MgYSB0YWQgcmVkdW5kYW50LCBidXQgd29y dGgKKwkJCQkgKiBpdC4KKwkJCQkgKi8KKworCQkJCS8qIEEgY2hhbmdlIHRvL2Zyb20gTlVMTCwg c28gbm90IGVxdWFsICovCisJCQkJaWYgKG9sZF9udWxsICE9IG5ld19udWxsKQorCQkJCXsKKwkJ CQkJdmFsdWVzX2VxdWFsID0gZmFsc2U7CisJCQkJCWdvdG8gZXF1YWxpdHlfZGV0ZXJtaW5lZDsK KwkJCQl9CisKKwkJCQkvKiBCb3RoIE5VTEwsIG5vIGNoYW5nZSByZWNvcmQgYXMgdW5tb2RpZmll ZCAqLworCQkJCWlmIChvbGRfbnVsbCkKKwkJCQl7CisJCQkJCXZhbHVlc19lcXVhbCA9IHRydWU7 CisJCQkJCWdvdG8gZXF1YWxpdHlfZGV0ZXJtaW5lZDsKKwkJCQl9CisKKwkJCQkvKiBHZXQgdHlw ZSBPSUQgZnJvbSB0aGUgZXhwcmVzc2lvbiAqLworCQkJCWV4cHJfdHlwZV9vaWQgPSBleHByVHlw ZSgoTm9kZSAqKSBleHByKTsKKworCQkJCS8qIEdldCB0eXBlIGluZm9ybWF0aW9uIGZyb20gdGhl IE9JRCAqLworCQkJCWdldF90eXBsZW5ieXZhbChleHByX3R5cGVfb2lkLCAmdHlwbGVuLCAmdHlw Ynl2YWwpOworCQkJfQorCQkJLyogTm90IGEgc3lzdGVtIG9yIGV4cHJlc3Npb24gYXR0cmlidXRl ICovCisJCQllbHNlCisJCQl7CisJCQkJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0ID0gVHVwbGVEZXNj Q29tcGFjdEF0dHIodHVwZGVzYywgcmVsX2F0dHJudW0gLSAxKTsKKworCQkJCS8qIEV4dHJhY3Qg dmFsdWVzIGZyb20gYm90aCBzbG90cyBmb3IgdGhpcyBhdHRyaWJ1dGUgKi8KKwkJCQlvbGRfdmFs dWUgPSBzbG90X2dldGF0dHIob2xkX3R0cywgcmVsX2F0dHJudW0sICZvbGRfbnVsbCk7CisJCQkJ bmV3X3ZhbHVlID0gc2xvdF9nZXRhdHRyKG5ld190dHMsIHJlbF9hdHRybnVtLCAmbmV3X251bGwp OworCisJCQkJdHlwbGVuID0gYXR0LT5hdHRsZW47CisJCQkJdHlwYnl2YWwgPSBhdHQtPmF0dGJ5 dmFsOworCQkJfQorCisJCQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEwsIHNvIG5vdCBlcXVhbCAq LworCQkJaWYgKG9sZF9udWxsICE9IG5ld19udWxsKQorCQkJeworCQkJCXZhbHVlc19lcXVhbCA9 IGZhbHNlOworCQkJCWdvdG8gZXF1YWxpdHlfZGV0ZXJtaW5lZDsKKwkJCX0KKworCQkJLyogQm90 aCBOVUxMLCBubyBjaGFuZ2UgcmVjb3JkIGFzIHVubW9kaWZpZWQgKi8KKwkJCWlmIChvbGRfbnVs bCkKKwkJCXsKKwkJCQl2YWx1ZXNfZXF1YWwgPSB0cnVlOworCQkJCWdvdG8gZXF1YWxpdHlfZGV0 ZXJtaW5lZDsKKwkJCX0KKworCQkJaWYgKGhhc19hbV9jb21wYXJlKQorCQkJeworCQkJCS8qCisJ CQkJICogTk9URTogRm9yIEFNIGNvbXBhcmlzb24sIHBhc3MgdGhlIDEtYmFzZWQgaW5kZXggYXR0 cmlidXRlCisJCQkJICogbnVtYmVyLiBUaGUgQU0ncyBjb21wYXJlIGZ1bmN0aW9uIGV4cGVjdHMg dGhlIHNhbWUKKwkJCQkgKiBudW1iZXJpbmcgYXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBBTS4K KwkJCQkgKi8KKwkJCQl2YWx1ZXNfZXF1YWwgPSBhbXJvdXRpbmUtPmFtY29tcGFyZWRhdHVtcyhp bmRleCwgaiArIDEsCisJCQkJCQkJCQkJCQkJCSAgb2xkX3ZhbHVlLCBvbGRfbnVsbCwKKwkJCQkJ CQkJCQkJCQkJICBuZXdfdmFsdWUsIG5ld19udWxsKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJ CQl2YWx1ZXNfZXF1YWwgPSBkYXR1bUlzRXF1YWwob2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHR5cGJ5 dmFsLCB0eXBsZW4pOworCQkJfQorCisJZXF1YWxpdHlfZGV0ZXJtaW5lZDo7CisJCQlpZiAoIXZh bHVlc19lcXVhbCkKKwkJCQlpZiAocmVsX2F0dHJudW0gPT0gMCkKKwkJCQl7CisJCQkJCUV4cHIJ ICAgKmV4cHIgPSAoRXhwciAqKSBsaXN0X250aChpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zLCBu dGhfZXhwcik7CisKKwkJCQkJcHVsbF92YXJhdHRub3MoKE5vZGUgKikgZXhwciwgcmVsaW5mby0+ cmlfUmFuZ2VUYWJsZUluZGV4LCAmbV9hdHRycyk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJbV9h dHRycyA9IGJtc19hZGRfbWVtYmVyKG1fYXR0cnMsIHJlbF9hdHRyaWR4KTsKKwkJCWVsc2UKKwkJ CQl1X2F0dHJzID0gYm1zX2FkZF9tZW1iZXIodV9hdHRycywgcmVsX2F0dHJpZHgpOworCisJCQlp ZiAocmVsX2F0dHJudW0gPT0gMCkKKwkJCQludGhfZXhwcisrOworCQl9CisKKwkJLyoKKwkJICog SGVyZSB3ZSBrbm93IGFsbCB0aGUgYXR0cmlidXRlcyB0aGF0IG1pZ2h0IGJlIG1vZGlmaWVkIGFu ZCBhbGwKKwkJICogdGhvc2Ugd2Uga25vdyBoYXZlbid0IGJlZW4gYWNyb3NzIGFsbCBpbmRleGVz LiAgVGFrZSB0aGUgZGlmZmVyZW5jZQorCQkgKiBhbmQgYWRkIGl0IHRvIHRoZSBtb2RpZmllZCBp bmRleGVkIGF0dHJpYnV0ZXMgc2V0LgorCQkgKi8KKwkJbV9hdHRycyA9IGJtc19kZWxfbWVtYmVy cyhtX2F0dHJzLCB1X2F0dHJzKTsKKwkJcF9hdHRycyA9IGJtc19kZWxfbWVtYmVycyhwX2F0dHJz LCB1X2F0dHJzKTsKKwkJbWl4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKG1peF9hdHRycywgbV9h dHRycyk7CisJCW1peF9hdHRycyA9IGJtc19hZGRfbWVtYmVycyhtaXhfYXR0cnMsIHBfYXR0cnMp OworCisJCWJtc19mcmVlKG1fYXR0cnMpOworCQlibXNfZnJlZSh1X2F0dHJzKTsKKwkJYm1zX2Zy ZWUocF9hdHRycyk7CisJfQorCisJcmV0dXJuIG1peF9hdHRyczsKK30KIAogLyoKICAqIFZlcmlm eSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVjZWQgYnkgSU5TRVJUIG1hdGNoIHRoZQpAQCAt MjE2OCwxNCArMjM5NywxNyBAQCBFeGVjVXBkYXRlUHJlcGFyZVNsb3QoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKICAqLwogc3RhdGljIFRNX1Jlc3VsdAogRXhlY1VwZGF0ZUFjdChNb2Rp ZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCi0J CQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNs b3QgKnNsb3QsCi0JCQkgIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQp CisJCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJs ZVNsb3QgKm9sZFNsb3QsCisJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBib29sIGNhblNldFRh ZywgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29u dGV4dC0+ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7 CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLworCUJpdG1hcHNldCAg Km1peF9hdHRycyA9IE5VTEw7CisKIAl1cGRhdGVDeHQtPmNyb3NzUGFydFVwZGF0ZSA9IGZhbHNl OwogCiAJLyoKQEAgLTIyOTIsOSArMjUyNCwzOCBAQCBscmVwbGFjZToKIAkJRXhlY0NvbnN0cmFp bnRzKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSk7CiAKIAkvKgotCSAqIHJlcGxhY2UgdGhl IGhlYXAgdHVwbGUKKwkgKiBJZGVudGlmeSB3aGljaCwgaWYgYW55LCBpbmRleGVkIGF0dHJpYnV0 ZXMgd2VyZSBtb2RpZmllZCBoZXJlIHNvIHRoYXQKKwkgKiB3ZSBtaWdodCByZXVzZSBpdCBpbiBh IGZldyBwbGFjZXMuCisJICovCisJYm1zX2ZyZWUocmVzdWx0UmVsSW5mby0+cmlfQ2hhbmdlZElu ZGV4ZWRDb2xzKTsKKwlyZXN1bHRSZWxJbmZvLT5yaV9DaGFuZ2VkSW5kZXhlZENvbHMgPSBOVUxM OworCisJLyoKKwkgKiBEdXJpbmcgdXBkYXRlcyB3ZSdsbCBuZWVkIGEgYml0IG1vcmUgaW5mb3Jt YXRpb24gaW4gSW5kZXhJbmZvIGJ1dCB3ZSd2ZQorCSAqIGRlbGF5ZWQgYWRkaW5nIGl0IHVudGls IGhlcmUuICBXZSBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUKKwkgKiBpbmRleGVzLCB0 aGF0IHNvbWV0aGluZyBoYXMgY2hhbmdlZCB0aGF0IGlzIGluZGV4ZWQsIGFuZCB0aGF0IHRoZSBm aXJzdAorCSAqIGluZGV4IGRvZXNuJ3QgeWV0IGhhdmUgaWlfSW5kZXhlZEF0dHJzIHNldCBhcyBh IHdheSB0byBlbnN1cmUgd2Ugb25seQorCSAqIGJ1aWxkIHRoaXMgd2hlbiBuZWVkZWQgYW5kIG9u bHkgb25jZS4gIFdlIGRvbid0IGJ1aWxkIHRoaXMgaW4KKwkgKiBFeGVjT3BlbkluZGljaWVzKCkg YXMgaXQgaXMgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQgd2hlbiBub3QgcGVyZm9ybWluZyBhbgorCSAq IHVwZGF0ZS4KKwkgKi8KKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYK KwkJYm1zX2lzX2VtcHR5KHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25JbmZvWzBdLT5p aV9JbmRleGVkQXR0cnMpKQorCQlCdWlsZFVwZGF0ZUluZGV4SW5mbyhyZXN1bHRSZWxJbmZvKTsK KworCS8qCisJICogTmV4dCB1cCB3ZSBuZWVkIHRvIGZpbmQgb3V0IHRoZSBzZXQgb2YgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoYXQgaGF2ZQorCSAqIGNoYW5nZWQgaW4gdmFsdWUgYW5kIHNob3VsZCB0 cmlnZ2VyIGEgbmV3IGluZGV4IHR1cGxlLiAgV2UgY291bGQgc3RhcnQKKwkgKiB3aXRoIHRoZSBz ZXQgb2YgdXBkYXRlZCBjb2x1bW5zIHZpYSBFeGVjR2V0VXBkYXRlZENvbHMoKSwgYnV0IGlmIHdl IGRvCisJICogd2Ugd2lsbCBvdmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5 IGhlYXBfbW9kaWZ5X3R1cGxlKCkKKwkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRV cGRhdGVkQ29scygpLgorCSAqLworCW1peF9hdHRycyA9IEV4ZWNDaGVja0luZGV4ZWRBdHRyc0Zv ckNoYW5nZXMocmVzdWx0UmVsSW5mbywgZXN0YXRlLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJ ICogQ2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoK LQkgKiBOb3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hv dCwgd2UgY2hlY2sgdGhhdAorCSAqIE5PVEU6IGlmIGVzX2Nyb3NzY2hlY2tfc25hcHNob3QgaXNu J3QgSW52YWxpZFNuYXBzaG90LCB3ZSBjaGVjayB0aGF0CiAJICogdGhlIHJvdyB0byBiZSB1cGRh dGVkIGlzIHZpc2libGUgdG8gdGhhdCBzbmFwc2hvdCwgYW5kIHRocm93IGEKIAkgKiBjYW4ndC1z ZXJpYWxpemUgZXJyb3IgaWYgbm90LiBUaGlzIGlzIGEgc3BlY2lhbC1jYXNlIGJlaGF2aW9yIG5l ZWRlZAogCSAqIGZvciByZWZlcmVudGlhbCBpbnRlZ3JpdHkgdXBkYXRlcyBpbiB0cmFuc2FjdGlv bi1zbmFwc2hvdCBtb2RlCkBAIC0yMzA2LDggKzI1NjcsMTIgQEAgbHJlcGxhY2U6CiAJCQkJCQkJ CWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZv ciBjb21taXQgKi8gLAogCQkJCQkJCQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21v ZGUsCisJCQkJCQkJCW1peF9hdHRycywKIAkJCQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhl cyk7CiAKKwlBc3NlcnQoYm1zX2lzX2VtcHR5KHJlc3VsdFJlbEluZm8tPnJpX0NoYW5nZWRJbmRl eGVkQ29scykpOworCXJlc3VsdFJlbEluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyA9IG1peF9h dHRyczsKKwogCXJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzMjUsNyArMjU5MCw3IEBAIEV4ZWNV cGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0ZUNvbnRleHQg KnVwZGF0ZUN4dCwKIAlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRzdGF0 ZTsKIAlMaXN0CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKIAotCS8qIGluc2VydCBpbmRleCBl bnRyaWVzIGZvciB0dXBsZSBpZiBuZWNlc3NhcnkgKi8KKwkvKiBJbnNlcnQgaW5kZXggZW50cmll cyBmb3IgdHVwbGUgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUlu ZGljZXMgPiAwICYmICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgIT0gVFVfTm9uZSkpCiAJCXJl Y2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJ CQkJCQkJCSAgIHNsb3QsIGNvbnRleHQtPmVzdGF0ZSwKQEAgLTI1MjQsOCArMjc4OSw5IEBAIEV4 ZWNVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkgKi8KIHJlZG9fYWN0OgogCQlsb2NrZWR0aWQgPSAqdHVwbGVpZDsKLQkJ cmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBv bGR0dXBsZSwgc2xvdCwKLQkJCQkJCQkgICBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOworCisJCXJl c3VsdCA9IEV4ZWNVcGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xk dHVwbGUsIG9sZFNsb3QsCisJCQkJCQkJICAgc2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsK IAogCQkvKgogCQkgKiBJZiBFeGVjVXBkYXRlQWN0IHJlcG9ydHMgdGhhdCBhIGNyb3NzLXBhcnRp dGlvbiB1cGRhdGUgd2FzIGRvbmUsCkBAIC0zMjIyLDggKzM0ODgsOCBAQCBsbWVyZ2VfbWF0Y2hl ZDoKIAkJCQkJQXNzZXJ0KG9sZHR1cGxlID09IE5VTEwpOwogCiAJCQkJCXJlc3VsdCA9IEV4ZWNV cGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwKLQkJCQkJCQkJCQkgICBO VUxMLCBuZXdzbG90LCBjYW5TZXRUYWcsCi0JCQkJCQkJCQkJICAgJnVwZGF0ZUN4dCk7CisJCQkJ CQkJCQkJICAgTlVMTCwgcmVzdWx0UmVsSW5mby0+cmlfb2xkVHVwbGVTbG90LAorCQkJCQkJCQkJ CSAgIG5ld3Nsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJCQkJLyoKIAkJCQkJICog QXMgaW4gRXhlY1VwZGF0ZSgpLCBpZiBFeGVjVXBkYXRlQWN0KCkgcmVwb3J0cyB0aGF0IGEKQEAg LTMyNDgsNiArMzUxNCw3IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJCQkJCQkJICAgdHVwbGVpZCwg TlVMTCwgbmV3c2xvdCk7CiAJCQkJCW10c3RhdGUtPm10X21lcmdlX3VwZGF0ZWQgKz0gMTsKIAkJ CQl9CisKIAkJCQlicmVhazsKIAogCQkJY2FzZSBDTURfREVMRVRFOgpAQCAtNDM1NCw3ICs0NjIx LDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiBGb3IgVVBEQVRF L0RFTEVURS9NRVJHRSwgZmV0Y2ggdGhlIHJvdyBpZGVudGl0eSBpbmZvIGZvciB0aGUgdHVwbGUK IAkJICogdG8gYmUgdXBkYXRlZC9kZWxldGVkL21lcmdlZC4gIEZvciBhIGhlYXAgcmVsYXRpb24s IHRoYXQncyBhIFRJRDsKIAkJICogb3RoZXJ3aXNlIHdlIG1heSBoYXZlIGEgd2hvbGVyb3cganVu ayBhdHRyIHRoYXQgY2FycmllcyB0aGUgb2xkCi0JCSAqIHR1cGxlIGluIHRvdG8uICBLZWVwIHRo aXMgaW4gc3RlcCB3aXRoIHRoZSBwYXJ0IG9mCisJCSAqIHR1cGxlIGluIHRvdGFsLiAgS2VlcCB0 aGlzIGluIHN0ZXAgd2l0aCB0aGUgcGFydCBvZgogCQkgKiBFeGVjSW5pdE1vZGlmeVRhYmxlIHRo YXQgc2V0cyB1cCByaV9Sb3dJZEF0dE5vLgogCQkgKi8KIAkJaWYgKG9wZXJhdGlvbiA9PSBDTURf VVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFIHx8CkBAIC00NTMwLDYgKzQ3OTcsNyBA QCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJLyogTm93IGFwcGx5IHRo ZSB1cGRhdGUuICovCiAJCQkJc2xvdCA9IEV4ZWNVcGRhdGUoJmNvbnRleHQsIHJlc3VsdFJlbElu Zm8sIHR1cGxlaWQsIG9sZHR1cGxlLAogCQkJCQkJCQkgIG9sZFNsb3QsIHNsb3QsIG5vZGUtPmNh blNldFRhZyk7CisKIAkJCQlpZiAodHVwbG9jaykKIAkJCQkJVW5sb2NrVHVwbGUocmVzdWx0UmVs SW5mby0+cmlfUmVsYXRpb25EZXNjLCB0dXBsZWlkLAogCQkJCQkJCQlJbnBsYWNlVXBkYXRlVHVw bGVMb2NrKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvYml0bWFwc2V0LmMKaW5kZXggYTQ3NjU4NzZjMzEuLjE3ZjVmNjZiMjVm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9iaXRtYXBzZXQuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9iaXRtYXBzZXQuYwpAQCAtMjM4LDYgKzIzOCwxMCBAQCBibXNfbWFrZV9zaW5n bGV0b24oaW50IHgpCiB2b2lkCiBibXNfZnJlZShCaXRtYXBzZXQgKmEpCiB7CisjaWYgVVNFX0FT U0VSVF9DSEVDS0lORworCUFzc2VydChibXNfaXNfdmFsaWRfc2V0KGEpKTsKKyNlbmRpZgorCiAJ aWYgKGEpCiAJCXBmcmVlKGEpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFr ZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCAyY2FlYzYyMWQ3 My4uZGQwOTJiYWNhZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NTcsMTAgKzg1NywxNCBA QCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQs IExpc3QgKmV4cHJlc3Npb25zLAogCS8qIGV4cHJlc3Npb25zICovCiAJbi0+aWlfRXhwcmVzc2lv bnMgPSBleHByZXNzaW9uczsKIAluLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOworCW4tPmlp X0V4cHJlc3Npb25zQXR0cnMgPSBOVUxMOwogCiAJLyogcHJlZGljYXRlcyAgKi8KIAluLT5paV9Q cmVkaWNhdGUgPSBwcmVkaWNhdGVzOwogCW4tPmlpX1ByZWRpY2F0ZVN0YXRlID0gTlVMTDsKKwlu LT5paV9QcmVkaWNhdGVBdHRycyA9IE5VTEw7CisJbi0+aWlfQ2hlY2tlZFByZWRpY2F0ZSA9IGZh bHNlOworCW4tPmlpX1ByZWRpY2F0ZVNhdGlzZmllZCA9IGZhbHNlOwogCiAJLyogZXhjbHVzaW9u IGNvbnN0cmFpbnRzICovCiAJbi0+aWlfRXhjbHVzaW9uT3BzID0gTlVMTDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGFkMjgxZTcwNjliLi45MGIwYzJjNDBl OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yNzUsNyAr Mjc1LDYgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24v b3JpZ2luLmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgpAQCAtMjg1LDEyICsy ODQsMTQgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInRjb3Av dGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1 bS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUg InV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtMTExMCwx NSArMTExMSwxOCBAQCBzbG90X3N0b3JlX2RhdGEoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsLAogICogInNsb3QiIGlzIGZpbGxlZCB3aXRoIGEgY29weSBv ZiB0aGUgdHVwbGUgaW4gInNyY3Nsb3QiLCByZXBsYWNpbmcKICAqIGNvbHVtbnMgcHJvdmlkZWQg aW4gInR1cGxlRGF0YSIgYW5kIGxlYXZpbmcgb3RoZXJzIGFzLWlzLgogICoKKyAqIFJldHVybnMg YSBiaXRtYXAgb2YgdGhlIG1vZGlmaWVkIGNvbHVtbnMuCisgKgogICogQ2F1dGlvbjogdW5yZXBs YWNlZCBwYXNzLWJ5LXJlZiBjb2x1bW5zIGluICJzbG90IiB3aWxsIHBvaW50IGludG8gdGhlCiAg KiBzdG9yYWdlIGZvciAic3Jjc2xvdCIuICBUaGlzIGlzIE9LIGZvciBjdXJyZW50IHVzYWdlLCBi dXQgc29tZWRheSB3ZSBtYXkKICAqIG5lZWQgdG8gbWF0ZXJpYWxpemUgInNsb3QiIGF0IHRoZSBl bmQgdG8gbWFrZSBpdCBpbmRlcGVuZGVudCBvZiAic3Jjc2xvdCIuCiAgKi8KLXN0YXRpYyB2b2lk CitzdGF0aWMgQml0bWFwc2V0ICoKIHNsb3RfbW9kaWZ5X2RhdGEoVHVwbGVUYWJsZVNsb3QgKnNs b3QsIFR1cGxlVGFibGVTbG90ICpzcmNzbG90LAogCQkJCSBMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbCwKIAkJCQkgTG9naWNhbFJlcFR1cGxlRGF0YSAqdHVwbGVEYXRhKQogeworCUJpdG1hcHNl dCAgKm1vZGlmaWVkID0gTlVMTDsKIAlpbnQJCQluYXR0cyA9IHNsb3QtPnR0c190dXBsZURlc2Ny aXB0b3ItPm5hdHRzOwogCWludAkJCWk7CiAKQEAgLTExOTUsNiArMTE5OSwyNyBAQCBzbG90X21v ZGlmeV9kYXRhKFR1cGxlVGFibGVTbG90ICpzbG90LCBUdXBsZVRhYmxlU2xvdCAqc3Jjc2xvdCwK IAkJCQlzbG90LT50dHNfaXNudWxsW2ldID0gdHJ1ZTsKIAkJCX0KIAorCQkJLyoKKwkJCSAqIERl dGVybWluZSBpZiB0aGUgcmVwbGljYXRlZCB2YWx1ZSBjaGFuZ2VkIHRoZSBsb2NhbCB2YWx1ZSBi eQorCQkJICogY29tcGFyaW5nIHNsb3RzLiAgVGhpcyBpcyBhIHN1YnNldCBvZgorCQkJICogRXhl Y0NoZWNrSW5kZXhlZEF0dHJzRm9yQ2hhbmdlcy4KKwkJCSAqLworCQkJaWYgKHNyY3Nsb3QtPnR0 c19pc251bGxbaV0gIT0gc2xvdC0+dHRzX2lzbnVsbFtpXSkKKwkJCXsKKwkJCQkvKiBPbmUgaXMg TlVMTCwgdGhlIG90aGVyIGlzIG5vdCBzbyB0aGUgdmFsdWUgY2hhbmdlZCAqLworCQkJCW1vZGlm aWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGkgKyAxIC0gRmlyc3RMb3dJbnZhbGlkSGVh cEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCQllbHNlIGlmICghc3Jjc2xvdC0+dHRzX2lzbnVs bFtpXSkKKwkJCXsKKwkJCQkvKiBCb3RoIGFyZSBub3QgTlVMTCwgY29tcGFyZSB0aGVpciB2YWx1 ZXMgKi8KKworCQkJCWlmICghZGF0dW1Jc0VxdWFsKHNyY3Nsb3QtPnR0c192YWx1ZXNbaV0sCisJ CQkJCQkJCSAgc2xvdC0+dHRzX3ZhbHVlc1tpXSwKKwkJCQkJCQkJICBhdHQtPmF0dGJ5dmFsLAor CQkJCQkJCQkgIGF0dC0+YXR0bGVuKSkKKwkJCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlciht b2RpZmllZCwgaSArIDEgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJ CX0KKwogCQkJLyogUmVzZXQgYXR0bnVtIGZvciBlcnJvciBjYWxsYmFjayAqLwogCQkJYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnLnJlbW90ZV9hdHRudW0gPSAtMTsKIAkJfQpAQCAtMTIwMiw2ICsx MjI3LDggQEAgc2xvdF9tb2RpZnlfZGF0YShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgVHVwbGVUYWJs ZVNsb3QgKnNyY3Nsb3QsCiAKIAkvKiBBbmQgZmluYWxseSwgZGVjbGFyZSB0aGF0ICJzbG90IiBj b250YWlucyBhIHZhbGlkIHZpcnR1YWwgdHVwbGUgKi8KIAlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUo c2xvdCk7CisKKwlyZXR1cm4gbW9kaWZpZWQ7CiB9CiAKIC8qCkBAIC0yOTE4LDYgKzI5NDUsNyBA QCBhcHBseV9oYW5kbGVfdXBkYXRlX2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEs CiAJQ29uZmxpY3RUdXBsZUluZm8gY29uZmxpY3R0dXBsZSA9IHswfTsKIAlib29sCQlmb3VuZDsK IAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlCaXRtYXBzZXQgICppbmRleGVkID0gTlVMTDsKIAog CUV2YWxQbGFuUXVhbEluaXQoJmVwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwgLTEsIE5JTCk7 CiAJRXhlY09wZW5JbmRpY2VzKHJlbGluZm8sIGZhbHNlKTsKQEAgLTI5MzQsNiArMjk2Miw4IEBA IGFwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwK IAkgKi8KIAlpZiAoZm91bmQpCiAJeworCQlCaXRtYXBzZXQgICptb2RpZmllZCA9IE5VTEw7CisK IAkJLyoKIAkJICogUmVwb3J0IHRoZSBjb25mbGljdCBpZiB0aGUgdHVwbGUgd2FzIG1vZGlmaWVk IGJ5IGEgZGlmZmVyZW50CiAJCSAqIG9yaWdpbi4KQEAgLTI5NTcsMTUgKzI5ODcsMjkgQEAgYXBw bHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCiAJ CS8qIFByb2Nlc3MgYW5kIHN0b3JlIHJlbW90ZSB0dXBsZSBpbiB0aGUgc2xvdCAqLwogCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0 ZSkpOwotCQlzbG90X21vZGlmeV9kYXRhKHJlbW90ZXNsb3QsIGxvY2Fsc2xvdCwgcmVsbWFwZW50 cnksIG5ld3R1cCk7CisJCW1vZGlmaWVkID0gc2xvdF9tb2RpZnlfZGF0YShyZW1vdGVzbG90LCBs b2NhbHNsb3QsIHJlbG1hcGVudHJ5LCBuZXd0dXApOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKIAorCQkvKgorCQkgKiBOb3JtYWxseSB3ZSdkIGNhbGwgRXhlY0NoZWNrSW5kZXhl ZEF0dHJGb3JDaGFuZ2VzIGJ1dCBoZXJlIHdlIGhhdmUKKwkJICogdGhlIHJlY29yZCBvZiBjaGFu Z2VkIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2F0aW9uIHN0YXRlLCBzbyBsZXQncworCQkgKiB1c2Ug dGhhdCBpbnN0ZWFkLgorCQkgKi8KKwkJaW5kZXhlZCA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJCQkJIElOREVYX0FUVFJfQklU TUFQX0lOREVYRUQpOworCisJCWJtc19mcmVlKHJlbGluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29s cyk7CisJCXJlbGluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyA9IGJtc19pbnRfbWVtYmVycyht b2RpZmllZCwgaW5kZXhlZCk7CisJCWJtc19mcmVlKGluZGV4ZWQpOworCiAJCUV2YWxQbGFuUXVh bFNldFNsb3QoJmVwcXN0YXRlLCByZW1vdGVzbG90KTsKIAogCQlJbml0Q29uZmxpY3RJbmRleGVz KHJlbGluZm8pOwogCi0JCS8qIERvIHRoZSBhY3R1YWwgdXBkYXRlLiAqLworCQkvKiBGaXJzdCBj aGVjayBwcml2aWxlZ2VzICovCiAJCVRhcmdldFByaXZpbGVnZXNDaGVjayhyZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2MsIEFDTF9VUERBVEUpOworCisJCS8qIFRoZW4gZG8gdGhlIGFjdHVhbCB1cGRh dGUuICovCiAJCUV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShyZWxpbmZvLCBlc3RhdGUsICZlcHFz dGF0ZSwgbG9jYWxzbG90LAogCQkJCQkJCQkgcmVtb3Rlc2xvdCk7CiAJfQpAQCAtMzQ1NSw2ICsz NDk5LDggQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICpl ZGF0YSwKIAkJCQlib29sCQlmb3VuZDsKIAkJCQlFUFFTdGF0ZQllcHFzdGF0ZTsKIAkJCQlDb25m bGljdFR1cGxlSW5mbyBjb25mbGljdHR1cGxlID0gezB9OworCQkJCUJpdG1hcHNldCAgKm1vZGlm aWVkID0gTlVMTDsKKwkJCQlCaXRtYXBzZXQgICppbmRleGVkOwogCiAJCQkJLyogR2V0IHRoZSBt YXRjaGluZyBsb2NhbCB0dXBsZSBmcm9tIHRoZSBwYXJ0aXRpb24uICovCiAJCQkJZm91bmQgPSBG aW5kUmVwbFR1cGxlSW5Mb2NhbFJlbChlZGF0YSwgcGFydHJlbCwKQEAgLTM1MjMsOCArMzU2OSw4 IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEs CiAJCQkJICogcmVtb3Rlc2xvdF9wYXJ0LgogCQkJCSAqLwogCQkJCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7Ci0JCQkJc2xv dF9tb2RpZnlfZGF0YShyZW1vdGVzbG90X3BhcnQsIGxvY2Fsc2xvdCwgcGFydF9lbnRyeSwKLQkJ CQkJCQkJIG5ld3R1cCk7CisJCQkJbW9kaWZpZWQgPSBzbG90X21vZGlmeV9kYXRhKHJlbW90ZXNs b3RfcGFydCwgbG9jYWxzbG90LCBwYXJ0X2VudHJ5LAorCQkJCQkJCQkJCQluZXd0dXApOwogCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCiAJCQkJRXZhbFBsYW5RdWFsSW5pdCgm ZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLCAtMSwgTklMKTsKQEAgLTM1NDksNiArMzU5NSwx OCBAQCBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZyhBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRh LAogCQkJCQlFdmFsUGxhblF1YWxTZXRTbG90KCZlcHFzdGF0ZSwgcmVtb3Rlc2xvdF9wYXJ0KTsK IAkJCQkJVGFyZ2V0UHJpdmlsZWdlc0NoZWNrKHBhcnRyZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2Ms CiAJCQkJCQkJCQkJICBBQ0xfVVBEQVRFKTsKKworCQkJCQkvKgorCQkJCQkgKiBOb3JtYWxseSB3 ZSdkIGNhbGwgRXhlY0NoZWNrSW5kZXhlZEF0dHJGb3JDaGFuZ2VzIGJ1dAorCQkJCQkgKiBoZXJl IHdlIGhhdmUgdGhlIHJlY29yZCBvZiBjaGFuZ2VkIGNvbHVtbnMgaW4gdGhlCisJCQkJCSAqIHJl cGxpY2F0aW9uIHN0YXRlLCBzbyBsZXQncyB1c2UgdGhhdCBpbnN0ZWFkLgorCQkJCQkgKi8KKwkJ CQkJaW5kZXhlZCA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHBhcnRyZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2MsCisJCQkJCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsK KwkJCQkJYm1zX2ZyZWUocGFydHJlbGluZm8tPnJpX0NoYW5nZWRJbmRleGVkQ29scyk7CisJCQkJ CXBhcnRyZWxpbmZvLT5yaV9DaGFuZ2VkSW5kZXhlZENvbHMgPSBibXNfaW50X21lbWJlcnMobW9k aWZpZWQsIGluZGV4ZWQpOworCQkJCQlibXNfZnJlZShpbmRleGVkKTsKKwogCQkJCQlFeGVjU2lt cGxlUmVsYXRpb25VcGRhdGUocGFydHJlbGluZm8sIGVzdGF0ZSwgJmVwcXN0YXRlLAogCQkJCQkJ CQkJCQkgbG9jYWxzbG90LCByZW1vdGVzbG90X3BhcnQpOwogCQkJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYxLi44Y2M5N2U0ZmJjYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0yNDc3LDYgKzI0NzcsNyBAQCBSZWxhdGlvbkRlc3Ryb3lS ZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19m cmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9ob3RibG9j a2luZ2F0dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJYm1z X2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAlpZiAocmVsYXRpb24tPnJkX3B1YmRl c2MpCiAJCXBmcmVlKHJlbGF0aW9uLT5yZF9wdWJkZXNjKTsKIAlpZiAocmVsYXRpb24tPnJkX29w dGlvbnMpCkBAIC01Mjc4LDYgKzUyNzksNyBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJl bGF0aW9uIHJlbGF0aW9uKQogICoJCQkJCQkJCQlpbmRleCAoZW1wdHkgaWYgRlVMTCkKICAqCUlO REVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORwlDb2x1bW5zIHRoYXQgYmxvY2sgdXBkYXRlcyBm cm9tIGJlaW5nIEhPVAogICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5zIGlu Y2x1ZGVkIGluIHN1bW1hcml6aW5nIGluZGV4ZXMKKyAqCUlOREVYX0FUVFJfQklUTUFQX0lOREVY RUQJCUNvbHVtbnMgcmVmZXJlbmNlZCBieSBpbmRleGVzCiAgKgogICogQXR0cmlidXRlIG51bWJl cnMgYXJlIG9mZnNldCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIHNvIHRo YXQKICAqIHdlIGNhbiBpbmNsdWRlIHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRo ZSBiaXRtYXAgcmVwcmVzZW50YXRpb24uCkBAIC01MzAyLDYgKzUzMDQsNyBAQCBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBh dHRyS2luZCkKIAlCaXRtYXBzZXQgICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJl cGxpY2EgaWRlbnRpdHkgKi8KIAlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1 bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpzdW1tYXJpemVk YXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0 ICAqaW5kZXhlZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwogCUxp c3QJICAgKmluZGV4b2lkbGlzdDsKIAlMaXN0CSAgICpuZXdpbmRleG9pZGxpc3Q7CiAJT2lkCQkJ cmVscGtpbmRleDsKQEAgLTUzMjQsNiArNTMyNyw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCQkJ CXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAkJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRp b24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhF RDoKKwkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAkJCWRl ZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7 CiAJCX0KQEAgLTUzNjgsNiArNTM3Myw3IEBAIHJlc3RhcnQ6CiAJaWRpbmRleGF0dHJzID0gTlVM TDsKIAlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOwor CWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9pZGxpc3QpCiAJewogCQlP aWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC01NTAwLDEwICs1NTA2LDE0IEBAIHJl c3RhcnQ6CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGhvdGJsb2NraW5n YXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVk YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKiBDb21iaW5lIGFsbCBpbmRleCBh dHRyaWJ1dGVzICovCisJaW5kZXhlZGF0dHJzID0gYm1zX3VuaW9uKGhvdGJsb2NraW5nYXR0cnMs IHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24ndCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRo ZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7 CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOwpAQCAtNTUxNiw2ICs1NTI2LDggQEAg cmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsKIAlibXNfZnJl ZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVk YXR0ciA9IE5VTEw7CisJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKKwlyZWxh dGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxseQpA QCAtNTUzMCw2ICs1NTQyLDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRyID0gYm1z X2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gYm1z X2NvcHkoaG90YmxvY2tpbmdhdHRycyk7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0g Ym1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsKKwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBi bXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gdHJ1ZTsK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIApAQCAtNTU0Niw2ICs1NTU5LDggQEAg cmVzdGFydDoKIAkJCXJldHVybiBob3RibG9ja2luZ2F0dHJzOwogCQljYXNlIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQ6CiAJCQlyZXR1cm4gc3VtbWFyaXplZGF0dHJzOworCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4gaW5kZXhlZGF0dHJzOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJ CQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKaW5kZXggZWNmYmQwMTdkNjYuLjJhMzZiN2U0YTE4 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvYW1hcGkuaApAQCAtMjExLDYgKzIxMSwzMyBAQCB0eXBlZGVmIHZvaWQgKCphbW1h cmtwb3NfZnVuY3Rpb24pIChJbmRleFNjYW5EZXNjIHNjYW4pOwogLyogcmVzdG9yZSBtYXJrZWQg c2NhbiBwb3NpdGlvbiAqLwogdHlwZWRlZiB2b2lkICgqYW1yZXN0cnBvc19mdW5jdGlvbikgKElu ZGV4U2NhbkRlc2Mgc2Nhbik7CiAKKy8qCisgKiBhbWNvbXBhcmVkYXR1bXMgLSBDb21wYXJlIGRh dHVtcyB0byBkZXRlcm1pbmUgaWYgaW5kZXggdXBkYXRlIGlzIG5lZWRlZAorICoKKyAqIFRoaXMg ZnVuY3Rpb24gY29tcGFyZXMgb2xkX2RhdHVtIGFuZCBuZXdfZGF0dW0gdG8gZGV0ZXJtaW5lIGlm IHRoZXkgd291bGQKKyAqIHByb2R1Y2UgZGlmZmVyZW50IGluZGV4IGVudHJpZXMuIEZvciBleHRy YWN0aW9uLWJhc2VkIGluZGV4ZXMgKEdJTiwgUlVNKSwKKyAqIHRoaXMgc2hvdWxkOgorICogIDEu IEV4dHJhY3Qga2V5cyBmcm9tIG9sZF9kYXR1bSB1c2luZyB0aGUgb3BjbGFzcydzIGV4dHJhY3RW YWx1ZSBmdW5jdGlvbgorICogIDIuIEV4dHJhY3Qga2V5cyBmcm9tIG5ld19kYXR1bSB1c2luZyB0 aGUgb3BjbGFzcydzIGV4dHJhY3RWYWx1ZSBmdW5jdGlvbgorICogIDMuIENvbXBhcmUgdGhlIHR3 byBzZXRzIG9mIGtleXMgdXNpbmcgYXBwcm9wcmlhdGUgZXF1YWxpdHkgb3BlcmF0b3JzCisgKiAg NC4gUmV0dXJuIHRydWUgaWYgdGhlIHNldHMgYXJlIGVxdWFsIChubyBpbmRleCB1cGRhdGUgbmVl ZGVkKQorICoKKyAqIFRoZSBjb21wYXJpc29uIHNob3VsZCBhY2NvdW50IGZvcjoKKyAqICAtIERp ZmZlcmVudCBudW1iZXJzIG9mIGV4dHJhY3RlZCBrZXlzCisgKiAgLSBOVUxMIHZhbHVlcworICog IC0gVHlwZS1zcGVjaWZpYyBlcXVhbGl0eSAobm90IGp1c3QgYmluYXJ5IGVxdWFsaXR5KQorICog IC0gT3BjbGFzcyBwYXJhbWV0ZXJzIChlLmcuLCBwYXRoIGluIGJzb25fcnVtX3NpbmdsZV9wYXRo X29wcykKKyAqCisgKiBGb3IgdGhlIERvY3VtZW50REIgZXhhbXBsZSB3aXRoIHBhdGg9J2EnLCB0 aGlzIHdvdWxkIGV4dHJhY3QgdmFsdWVzIGF0CisgKiBwYXRoICdhJyBmcm9tIGJvdGggb2xkIGFu ZCBuZXcgQlNPTiBkb2N1bWVudHMgYW5kIGNvbXBhcmUgdGhlbSB1c2luZworICogQlNPTidzIGVx dWFsaXR5IG9wZXJhdG9yLgorICovCisvKiBpZGVudGlmeSBpZiB1cGRhdGVkIGRhdHVtcyB3b3Vs ZCBwcm9kdWNlIG9uZSBvciBtb3JlIGluZGV4IGVudHJpZXMgKi8KK3R5cGVkZWYgYm9vbCAoKmFt Y29tcGFyZWRhdHVtc19mdW5jdGlvbikgKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCisJCQkJCQkJ CQkJICBpbnQgYXR0bm8sCisJCQkJCQkJCQkJICBEYXR1bSBvbGRfZGF0dW0sIGJvb2wgb2xkX2lz bnVsbCwKKwkJCQkJCQkJCQkgIERhdHVtIG5ld19kYXR1bSwgYm9vbCBuZXdfaXNudWxsKTsKKwog LyoKICAqIENhbGxiYWNrIGZ1bmN0aW9uIHNpZ25hdHVyZXMgLSBmb3IgcGFyYWxsZWwgaW5kZXgg c2NhbnMuCiAgKi8KQEAgLTMxMyw2ICszNDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEFtUm91 dGluZQogCWFtZW5kc2Nhbl9mdW5jdGlvbiBhbWVuZHNjYW47CiAJYW1tYXJrcG9zX2Z1bmN0aW9u IGFtbWFya3BvczsJLyogY2FuIGJlIE5VTEwgKi8KIAlhbXJlc3RycG9zX2Z1bmN0aW9uIGFtcmVz dHJwb3M7IC8qIGNhbiBiZSBOVUxMICovCisJYW1jb21wYXJlZGF0dW1zX2Z1bmN0aW9uIGFtY29t cGFyZWRhdHVtczsJLyogY2FuIGJlIE5VTEwgKi8KIAogCS8qIGludGVyZmFjZSBmdW5jdGlvbnMg dG8gc3VwcG9ydCBwYXJhbGxlbCBpbmRleCBzY2FucyAqLwogCWFtZXN0aW1hdGVwYXJhbGxlbHNj YW5fZnVuY3Rpb24gYW1lc3RpbWF0ZXBhcmFsbGVsc2NhbjsgLyogY2FuIGJlIE5VTEwgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9n aW4uaAppbmRleCBmYTFhM2IyMGUwOS4uNjk3NzFmZTk0N2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9naW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luLmgKQEAgLTEwMCw2 ICsxMDAsOSBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IGdpbl9wZW5kaW5nX2xpc3RfbGltaXQ7 CiBleHRlcm4gdm9pZCBnaW5HZXRTdGF0cyhSZWxhdGlvbiBpbmRleCwgR2luU3RhdHNEYXRhICpz dGF0cyk7CiBleHRlcm4gdm9pZCBnaW5VcGRhdGVTdGF0cyhSZWxhdGlvbiBpbmRleCwgY29uc3Qg R2luU3RhdHNEYXRhICpzdGF0cywKIAkJCQkJCSAgIGJvb2wgaXNfYnVpbGQpOworZXh0ZXJuIGJv b2wgZ2luY29tcGFyZWRhdHVtcyhSZWxhdGlvbiBpbmRleCwgaW50IGF0dG51bSwKKwkJCQkJCQkg RGF0dW0gb2xkX2RhdHVtLCBib29sIG9sZF9pc251bGwsCisJCQkJCQkJIERhdHVtIG5ld19kYXR1 bSwgYm9vbCBuZXdfaXNudWxsKTsKIAogZXh0ZXJuIHZvaWQgX2dpbl9wYXJhbGxlbF9idWlsZF9t YWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCAzOGY5NDQ3NzFkYi4uNDg4ODkxOGU0NzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM2OSw3ICsz NjksNyBAQCBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBI ZWFwVHVwbGVEYXRhICpvbGR0dXAsCiAJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkgUGFnZSBwYWdlLCBC bG9ja051bWJlciBibG9jaywgSXRlbUlkIGxwLCBCaXRtYXBzZXQgKmhvdF9hdHRycywKIAkJCQkJ CQkgQml0bWFwc2V0ICpzdW1fYXR0cnMsIEJpdG1hcHNldCAqcGtfYXR0cnMsIEJpdG1hcHNldCAq cmlkX2F0dHJzLAotCQkJCQkJCSBCaXRtYXBzZXQgKm1peF9hdHRycywgQnVmZmVyICp2bWJ1ZmZl ciwKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsIEJ1ZmZlciAqdm1idWZmZXIs CiAJCQkJCQkJIGJvb2wgcmVwX2lkX2tleV9yZXF1aXJlZCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tU dXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCkBAIC00MDQsOCArNDA0 LDggQEAgZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9uZWVkc19ldmVudHVhbF9mcmVlemUoSGVhcFR1 cGxlSGVhZGVyIHR1cGxlKTsKIAogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2Rl bGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwotZXh0 ZXJuIHZvaWQgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsCi0JCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworZXh0ZXJuIEJpdG1hcHNldCAqc2ltcGxlX2hlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsCisJCQkJ CQkJCQkgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwog CiBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJCQkgIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaAppbmRleCA3NzIyNDg1OTY4NS4uNTMyNjU2YTQ4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAg LTExNzksNiArMTE3OSwxMCBAQCBleHRlcm4gaW50CWJ0Z2V0dHJlZWhlaWdodChSZWxhdGlvbiBy ZWwpOwogCiBleHRlcm4gQ29tcGFyZVR5cGUgYnR0cmFuc2xhdGVzdHJhdGVneShTdHJhdGVneU51 bWJlciBzdHJhdGVneSwgT2lkIG9wZmFtaWx5KTsKIGV4dGVybiBTdHJhdGVneU51bWJlciBidHRy YW5zbGF0ZWNtcHR5cGUoQ29tcGFyZVR5cGUgY21wdHlwZSwgT2lkIG9wZmFtaWx5KTsKK2V4dGVy biBib29sIGJ0Y29tcGFyZWRhdHVtcyhSZWxhdGlvbiBpbmRleCwgaW50IGF0dG51bSwKKwkJCQkJ CQlEYXR1bSBvbGRfZGF0dW0sIGJvb2wgb2xkX2lzbnVsbCwKKwkJCQkJCQlEYXR1bSBuZXdfZGF0 dW0sIGJvb2wgbmV3X2lzbnVsbCk7CisKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGludGVybmFs IGZ1bmN0aW9ucyBpbiBuYnRyZWUuYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZTJlYzUyODlkNGQu LjRiZWQwZjhlNTZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTU0OSw2ICs1NDksNyBAQCB0eXBl ZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkgYm9vbCB3YWl0LAogCQkJCQkJCQkg VE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwK KwkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqdXBkYXRlZF9jb2xzLAogCQkJCQkJCQkgVFVfVXBk YXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogCiAJLyogc2VlIHRhYmxlX3R1cGxlX2xvY2so KSBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KQEAgLTE1MTIsMTIgKzE1MTMsMTIg QEAgc3RhdGljIGlubGluZSBUTV9SZXN1bHQKIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiBy ZWwsIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1h bmRJZCBjaWQsIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAg IGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCSAgIGNvbnN0 IEJpdG1hcHNldCAqbWl4X2NvbHMsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQog ewogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3Qs CiAJCQkJCQkJCQkJIGNpZCwgc25hcHNob3QsIGNyb3NzY2hlY2ssCi0JCQkJCQkJCQkJIHdhaXQs IHRtZmQsCi0JCQkJCQkJCQkJIGxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJ IHdhaXQsIHRtZmQsIGxvY2ttb2RlLAorCQkJCQkJCQkJCSBtaXhfY29scywgdXBkYXRlX2luZGV4 ZXMpOwogfQogCiAvKgpAQCAtMjAyMCw2ICsyMDIxLDcgQEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3Rh YmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJ CSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3Vw ZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCSAgY29uc3QgQml0bWFw c2V0ICptaXhfYXR0cnMsCiAJCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggYjI1OWM0MTQxZWQuLjE0YTM5YmVhYjZlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9pbmRleC5oCkBAIC0xMzIsNiArMTMyLDcgQEAgZXh0ZXJuIGJvb2wgQ29tcGFyZUlu ZGV4SW5mbyhjb25zdCBJbmRleEluZm8gKmluZm8xLCBjb25zdCBJbmRleEluZm8gKmluZm8yLAog CQkJCQkJCSBjb25zdCBBdHRyTWFwICphdHRtYXApOwogCiBleHRlcm4gdm9pZCBCdWlsZFNwZWN1 bGF0aXZlSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmlpKTsKK2V4dGVybiB2 b2lkIEJ1aWxkVXBkYXRlSW5kZXhJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOwog CiBleHRlcm4gdm9pZCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJ CSAgIFR1cGxlVGFibGVTbG90ICpzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggNTky OWFhYmMzNTMuLmI0Yzc1N2FmNjE4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTczOSw2 ICs3MzksMTEgQEAgZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0dldEFsbFVwZGF0ZWRDb2xzKFJlc3Vs dFJlbEluZm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRlKTsKICAqLwogZXh0ZXJuIHZvaWQgRXhl Y09wZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJvb2wgc3BlY3VsYXRp dmUpOwogZXh0ZXJuIHZvaWQgRXhlY0Nsb3NlSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvKTsKK2V4dGVybiBCaXRtYXBzZXQgKkV4ZWNXaGljaEluZGV4ZXNSZXF1aXJlVXBkYXRl cyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqbWl4X2F0 dHJzLAorCQkJCQkJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJCQkJIFR1cGxlVGFi bGVTbG90ICpvbGRfdHRzLAorCQkJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKTsK IGV4dGVybiBMaXN0ICpFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEVTdGF0ZSAqZXN0YXRl LAogCQkJCQkJCQkgICBib29sIHVwZGF0ZSwKQEAgLTgwMCw1ICs4MDUsOSBAQCBleHRlcm4gUmVz dWx0UmVsSW5mbyAqRXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5v ZGUsCiAJCQkJCQkJCQkJCSAgIE9pZCByZXN1bHRvaWQsCiAJCQkJCQkJCQkJCSAgIGJvb2wgbWlz c2luZ19vaywKIAkJCQkJCQkJCQkJICAgYm9vbCB1cGRhdGVfY2FjaGUpOworZXh0ZXJuIEJpdG1h cHNldCAqRXhlY0NoZWNrSW5kZXhlZEF0dHJzRm9yQ2hhbmdlcyhSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAorCQkJCQkJCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCQkJCSAgVHVwbGVU YWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRz KTsKIAogI2VuZGlmCQkJCQkJCS8qIEVYRUNVVE9SX0ggICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmlu ZGV4IGY4MDUzZDllNTcyLi44YTkwYWZlMzE1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE3 NiwxNSArMTc2LDI5IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCSAqLwogCUF0dHJOdW1i ZXIJaWlfSW5kZXhBdHRyTnVtYmVyc1tJTkRFWF9NQVhfS0VZU107CiAKKwkvKgorCSAqIEFsbCBr ZXksIGV4cHJlc3Npb24sIHN1bWFyaXppbmcsIGFuZCBwYXJ0aXRpb24gYXR0cmlidXRlcyByZWZl cmVuY2VkIGJ5CisJICogdGhpcyBpbmRleAorCSAqLworCUJpdG1hcHNldCAgKmlpX0luZGV4ZWRB dHRyczsKKwogCS8qIGV4cHIgdHJlZXMgZm9yIGV4cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlm IG5vbmUgKi8KIAlMaXN0CSAgICppaV9FeHByZXNzaW9uczsgLyogbGlzdCBvZiBFeHByICovCiAJ LyogZXhlYyBzdGF0ZSBmb3IgZXhwcmVzc2lvbnMsIG9yIE5JTCBpZiBub25lICovCiAJTGlzdAkg ICAqaWlfRXhwcmVzc2lvbnNTdGF0ZTsJLyogbGlzdCBvZiBFeHByU3RhdGUgKi8KKwkvKiBhdHRy aWJ1dGVzIGV4Y2x1c2l2ZWx5IHJlZmVyZW5jZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCisJ Qml0bWFwc2V0ICAqaWlfRXhwcmVzc2lvbnNBdHRyczsKIAogCS8qIHBhcnRpYWwtaW5kZXggcHJl ZGljYXRlLCBvciBOSUwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmlpX1ByZWRpY2F0ZTsJLyogbGlz dCBvZiBFeHByICovCiAJLyogZXhlYyBzdGF0ZSBmb3IgZXhwcmVzc2lvbnMsIG9yIE5JTCBpZiBu b25lICovCiAJRXhwclN0YXRlICAqaWlfUHJlZGljYXRlU3RhdGU7CisJLyogYXR0cmlidXRlcyBy ZWZlcmVuY2VkIGJ5IHRoZSBwcmVkaWNhdGUgKi8KKwlCaXRtYXBzZXQgICppaV9QcmVkaWNhdGVB dHRyczsKKwkvKiBwYXJ0aWFsIGluZGV4IHByZWRpY2F0ZSBkZXRlcm1pbmVkIHlldD8gKi8KKwli b29sCQlpaV9DaGVja2VkUHJlZGljYXRlOworCS8qIGFtdXBkYXRlIGhpbnQgdXNlZCB0byBhdm9p ZCByZWNoZWNraW5nIHByZWRpY2F0ZSAqLworCWJvb2wJCWlpX1ByZWRpY2F0ZVNhdGlzZmllZDsK IAogCS8qIFBlci1jb2x1bW4gZXhjbHVzaW9uIG9wZXJhdG9ycywgb3IgTlVMTCBpZiBub25lICov CiAJT2lkCQkgICAqaWlfRXhjbHVzaW9uT3BzOwkvKiBhcnJheSB3aXRoIG9uZSBlbnRyeSBwZXIg Y29sdW1uICovCkBAIC01MDEsNiArNTE1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbElu Zm8KIAkvKiB0cnVlIGlmIHRoZSBhYm92ZSBoYXMgYmVlbiBjb21wdXRlZCAqLwogCWJvb2wJCXJp X2V4dHJhVXBkYXRlZENvbHNfdmFsaWQ7CiAKKwkvKgorCSAqIEZvciBVUERBVEUgYSBCaXRtYXBz ZXQgb2YgdGhlIGF0dHJpYnV0ZXMgdGhhdCBhcmUgYm90aCBpbmRleGVkIGFuZCBoYXZlCisJICog Y2hhbmdlZCBpbiB2YWx1ZS4KKwkgKi8KKwlCaXRtYXBzZXQgICpyaV9DaGFuZ2VkSW5kZXhlZENv bHM7CisKIAkvKiBQcm9qZWN0aW9uIHRvIGdlbmVyYXRlIG5ldyB0dXBsZSBpbiBhbiBJTlNFUlQv VVBEQVRFICovCiAJUHJvamVjdGlvbkluZm8gKnJpX3Byb2plY3ROZXc7CiAJLyogU2xvdCB0byBo b2xkIHRoYXQgdHVwbGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggZDAzYWIyNDc3ODguLjk1YjM4YWJmZDg5IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9yZWwuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQog CUJpdG1hcHNldCAgKnJkX2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJlcGxpY2EgaWRlbnRpdHkg aW5kZXggKi8KIAlCaXRtYXBzZXQgICpyZF9ob3RibG9ja2luZ2F0dHI7IC8qIGNvbHMgYmxvY2tp bmcgSE9UIHVwZGF0ZSAqLwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6ZWRhdHRyOwkvKiBjb2xz IGluZGV4ZWQgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKnJkX2luZGV4 ZWRhdHRyOyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0 aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVMTCAq LwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmVsY2FjaGUuaAppbmRleCAyNzAwMjI0OTM5YS4uNTgzNGFiN2I5MDMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvcmVsY2FjaGUuaApAQCAtNzEsNiArNzEsNyBAQCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0 bWFwS2luZAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSwKIAlJTkRFWF9BVFRSX0JJ VE1BUF9IT1RfQkxPQ0tJTkcsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRF WF9BVFRSX0JJVE1BUF9JTkRFWEVELAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4g Qml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbnNlcnQtY29uZmxpY3Qt c3BlY2NvbmZsaWN0Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbnNlcnQtY29u ZmxpY3Qtc3BlY2NvbmZsaWN0Lm91dAppbmRleCBlMzRhODIxYzQwMy4uNTRiMzk4MTkxOGMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbnNlcnQtY29uZmxpY3Qtc3Bl Y2NvbmZsaWN0Lm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5zZXJ0LWNv bmZsaWN0LXNwZWNjb25mbGljdC5vdXQKQEAgLTgwLDYgKzgwLDEwIEBAIHBnX2Fkdmlzb3J5X3Vu bG9jawogdCAgICAgICAgICAgICAgICAgCiAoMSByb3cpCiAKK3MxOiBOT1RJQ0U6ICBibHVydF9h bmRfbG9ja18xMjMoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQorczE6IE5PVElDRTogIGFj cXVpcmluZyBhZHZpc29yeSBsb2NrIG9uIDIKK3MxOiBOT1RJQ0U6ICBibHVydF9hbmRfbG9ja18x MjMoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQorczE6IE5PVElDRTogIGFjcXVpcmluZyBh ZHZpc29yeSBsb2NrIG9uIDIKIHMxOiBOT1RJQ0U6ICBibHVydF9hbmRfbG9ja18xMjMoKSBjYWxs ZWQgZm9yIGsxIGluIHNlc3Npb24gMQogczE6IE5PVElDRTogIGFjcXVpcmluZyBhZHZpc29yeSBs b2NrIG9uIDIKIHMxOiBOT1RJQ0U6ICBibHVydF9hbmRfbG9ja18xMjMoKSBjYWxsZWQgZm9yIGsx IGluIHNlc3Npb24gMQpAQCAtMTcyLDYgKzE3NiwxMCBAQCBwZ19hZHZpc29yeV91bmxvY2sKIHQg ICAgICAgICAgICAgICAgIAogKDEgcm93KQogCitzMjogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tf MTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDIKK3MyOiBOT1RJQ0U6ICBhY3F1aXJpbmcg YWR2aXNvcnkgbG9jayBvbiAyCitzMjogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2Fs bGVkIGZvciBrMSBpbiBzZXNzaW9uIDIKK3MyOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkg bG9jayBvbiAyCiBzMjogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBr MSBpbiBzZXNzaW9uIDIKIHMyOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAy CiBzMjogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNz aW9uIDIKQEAgLTM2OSw2ICszNzcsMTAgQEAga2V5fGRhdGEKIHN0ZXAgczFfY29tbWl0OiBDT01N SVQ7CiBzMjogTk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBz ZXNzaW9uIDIKIHMyOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCitzMjog Tk9USUNFOiAgYmx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDIK K3MyOiBOT1RJQ0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCitzMjogTk9USUNFOiAg Ymx1cnRfYW5kX2xvY2tfMTIzKCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDIKK3MyOiBOT1RJ Q0U6ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiAyCiBzdGVwIHMyX3Vwc2VydDogPC4uLiBj b21wbGV0ZWQ+CiBzdGVwIGNvbnRyb2xsZXJfc2hvdzogU0VMRUNUICogRlJPTSB1cHNlcnR0ZXN0 Owoga2V5fGRhdGEgICAgICAgCkBAIC01MzAsNiArNTQyLDE0IEBAIGlzb2xhdGlvbi9pbnNlcnQt Y29uZmxpY3Qtc3BlY2NvbmZsaWN0L3MyfHRyYW5zYWN0aW9uaWR8RXhjbHVzaXZlTG9ja3x0CiBz dGVwIHMyX2NvbW1pdDogQ09NTUlUOwogczE6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygp IGNhbGxlZCBmb3IgazEgaW4gc2Vzc2lvbiAxCiBzMTogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlz b3J5IGxvY2sgb24gMgorczE6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBm b3IgazEgaW4gc2Vzc2lvbiAxCitzMTogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sg b24gMgorczE6IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzEyMygpIGNhbGxlZCBmb3IgazEgaW4g c2Vzc2lvbiAxCitzMTogTk9USUNFOiAgYWNxdWlyaW5nIGFkdmlzb3J5IGxvY2sgb24gMgorczE6 IE5PVElDRTogIGJsdXJ0X2FuZF9sb2NrXzQoKSBjYWxsZWQgZm9yIGsxIGluIHNlc3Npb24gMQor czE6IE5PVElDRTogIGFjcXVpcmluZyBhZHZpc29yeSBsb2NrIG9uIDQKK3MxOiBOT1RJQ0U6ICBi bHVydF9hbmRfbG9ja180KCkgY2FsbGVkIGZvciBrMSBpbiBzZXNzaW9uIDEKK3MxOiBOT1RJQ0U6 ICBhY3F1aXJpbmcgYWR2aXNvcnkgbG9jayBvbiA0CiBzdGVwIHMxX3Vwc2VydDogPC4uLiBjb21w bGV0ZWQ+CiBzdGVwIHMxX25vb3A6IAogc3RlcCBjb250cm9sbGVyX3Nob3c6IFNFTEVDVCAqIEZS T00gdXBzZXJ0dGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVh cF9ob3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hlYXBfaG90X3Vw ZGF0ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNDI3NmUz Y2JjYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9o b3RfdXBkYXRlcy5vdXQKQEAgLTAsMCArMSw2NTAgQEAKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgU3Vp dGUgZm9yIEhlYXAtb25seSAoSE9UKSBVcGRhdGVzCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTZXR1cDogQ3Jl YXRlIGZ1bmN0aW9uIHRvIG1lYXN1cmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBPUiBSRVBMQUNFIEZV TkNUSU9OIGNoZWNrX2hvdF91cGRhdGVzKAorICAgIGV4cGVjdGVkIElOVCwKKyAgICBwX3RhYmxl X25hbWUgVEVYVCBERUZBVUxUICd0JywKKyAgICBwX3NjaGVtYV9uYW1lIFRFWFQgREVGQVVMVCBj dXJyZW50X3NjaGVtYSgpCispCitSRVRVUk5TIFRBQkxFICgKKyAgICB0YWJsZV9uYW1lIFRFWFQs CisgICAgdG90YWxfdXBkYXRlcyBCSUdJTlQsCisgICAgaG90X3VwZGF0ZXMgQklHSU5ULAorICAg IGhvdF91cGRhdGVfcGVyY2VudGFnZSBOVU1FUklDLAorICAgIG1hdGNoZXNfZXhwZWN0ZWQgQk9P TEVBTgorKQorTEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0RFQ0xBUkUKKyAgICB2X3JlbGlkIG9p ZDsKKyAgICB2X3F1YWxpZmllZF9uYW1lIFRFWFQ7CisgICAgdl9ob3RfdXBkYXRlcyBCSUdJTlQ7 CisgICAgdl91cGRhdGVzIEJJR0lOVDsKKyAgICB2X3hhY3RfaG90X3VwZGF0ZXMgQklHSU5UOwor ICAgIHZfeGFjdF91cGRhdGVzIEJJR0lOVDsKK0JFR0lOCisgICAgLS0gRm9yY2Ugc3RhdGlzdGlj cyB1cGRhdGUKKyAgICBQRVJGT1JNIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCisgICAg LS0gR2V0IHRhYmxlIE9JRAorICAgIHZfcXVhbGlmaWVkX25hbWUgOj0gcXVvdGVfaWRlbnQocF9z Y2hlbWFfbmFtZSkgfHwgJy4nIHx8IHF1b3RlX2lkZW50KHBfdGFibGVfbmFtZSk7CisgICAgdl9y ZWxpZCA6PSB2X3F1YWxpZmllZF9uYW1lOjpyZWdjbGFzczsKKworICAgIElGIHZfcmVsaWQgSVMg TlVMTCBUSEVOCisJUkFJU0UgRVhDRVBUSU9OICdUYWJsZSAlLiUgbm90IGZvdW5kJywgcF9zY2hl bWFfbmFtZSwgcF90YWJsZV9uYW1lOworICAgIEVORCBJRjsKKworICAgIC0tIEdldCBjdW11bGF0 aXZlICsgdHJhbnNhY3Rpb24gc3RhdHMKKyAgICB2X2hvdF91cGRhdGVzIDo9IENPQUxFU0NFKHBn X3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCh2X3JlbGlkKSwgMCk7CisgICAgdl91cGRhdGVz IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHZfcmVsaWQpLCAwKTsKKyAg ICB2X3hhY3RfaG90X3VwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQodl9yZWxpZCksIDApOworICAgIHZfeGFjdF91cGRhdGVzIDo9IENPQUxFU0NF KHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQodl9yZWxpZCksIDApOworCisgICAgdl9o b3RfdXBkYXRlcyA6PSB2X2hvdF91cGRhdGVzICsgdl94YWN0X2hvdF91cGRhdGVzOworICAgIHZf dXBkYXRlcyA6PSB2X3VwZGF0ZXMgKyB2X3hhY3RfdXBkYXRlczsKKworICAgIFJFVFVSTiBRVUVS WQorICAgIFNFTEVDVAorCXBfdGFibGVfbmFtZTo6VEVYVCwKKwl2X3VwZGF0ZXM6OkJJR0lOVCwK Kwl2X2hvdF91cGRhdGVzOjpCSUdJTlQsCisJQ0FTRSBXSEVOIHZfdXBkYXRlcyA+IDAKKwkgICAg IFRIRU4gUk9VTkQoKHZfaG90X3VwZGF0ZXM6Om51bWVyaWMgLyB2X3VwZGF0ZXM6Om51bWVyaWMg KiAxMDApOjpudW1lcmljLCAyKQorCSAgICAgRUxTRSAwCisJRU5ELAorCSh2X2hvdF91cGRhdGVz ID0gZXhwZWN0ZWQpOjpCT09MRUFOOworRU5EOworJCQ7CitDUkVBVEUgQ09MTEFUSU9OIGNhc2Vf aW5zZW5zaXRpdmUgKAorICAgIHByb3ZpZGVyID0gbGliYywKKyAgICBsb2NhbGUgPSAnQycKKyk7 CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBHSU4gSW5kZXggb24gSlNPTkIKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBU QUJMRSB0KGlkIElOVCwgZGF0YSBKU09OQikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQg PSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9naW5faWR4IE9OIHQgVVNJ TkcgZ2luKGRhdGEpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICd7InRhZ3MiOiBbInBvc3Rn cmVzIiwgImRhdGFiYXNlIl19Jyk7CistLSBDaGFuZ2UgdGFncyAtIEdJTiBrZXlzIGNoYW5nZWQs IHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InRhZ3MiOiBbInBvc3Rn cmVzIiwgInNxbCJdfScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBk YXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90 X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAwIHwg ICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCistLSBDaGFuZ2UgdGFncyBhZ2Fp biAtIEdJTiBrZXlzIGNoYW5nZWQsIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0 YSA9ICd7InRhZ3MiOiBbIm15c3FsIiwgInNxbCJdfScgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8 IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAg MiB8ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCist LSBBZGQgZmllbGQgd2l0aG91dCBjaGFuZ2luZyBleGlzdGluZyBrZXlzIC0gR0lOIGtleXMgY2hh bmdlZCAoYWRkZWQgIm5vdGUiKSwgTk9UIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdz IjogWyJteXNxbCIsICJzcWwiXSwgIm5vdGUiOiAidGVzdCJ9JyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDApOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRh dGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVj dGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAg ICAgICAzIHwgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgIDAuMDAgfCB0CisoMSByb3cp CisKK0RST1AgVEFCTEUgdDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEdJTiBJbmRleCB3aXRoIFVuY2hhbmdl ZCBLZXlzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisg ICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworLS0g Q3JlYXRlIEdJTiBpbmRleCBvbiBzcGVjaWZpYyBwYXRoCitDUkVBVEUgSU5ERVggdF9naW5faWR4 IE9OIHQgVVNJTkcgZ2luKChkYXRhLT4ndGFncycpKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgx LCAneyJ0YWdzIjogWyJwb3N0Z3JlcyIsICJzcWwiXSwgInN0YXR1cyI6ICJhY3RpdmUifScpOwor LS0gQ2hhbmdlIG5vbi1pbmRleGVkIGZpZWxkIC0gR0lOIGtleXMgb24gJ3RhZ3MnIHVuY2hhbmdl ZCwgc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdzIjogWyJwb3N0Z3Jl cyIsICJzcWwiXSwgInN0YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVz IHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVk IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAg ICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cpCisK Ky0tIENoYW5nZSBpbmRleGVkIHRhZ3MgLSBHSU4ga2V5cyBjaGFuZ2VkLCBzaG91bGQgTk9UIGJl IEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdzIjogWyJteXNxbCIsICJzcWwiXSwgInN0 YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hv dF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMg fCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAyIHwgICAgICAgICAg IDEgfCAgICAgICAgICAgICAgICAgNTAuMDAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEdJTiB3aXRoIGpzb25iX3BhdGhfb3BzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFi bGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfZ2luX2lkeCBPTiB0 IFVTSU5HIGdpbihkYXRhIGpzb25iX3BhdGhfb3BzKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgx LCAneyJ1c2VyIjogeyJuYW1lIjogImFsaWNlIn0sICJ0YWdzIjogWyJhIiwgImIiXX0nKTsKKy0t IENoYW5nZSB2YWx1ZSBhdCBkaWZmZXJlbnQgcGF0aCAtIGtleXMgY2hhbmdlZCwgTk9UIEhPVAor VVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ1c2VyIjogeyJuYW1lIjogImJvYiJ9LCAidGFncyI6IFsi YSIsICJiIl19JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDApOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBk YXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDAgfCAgICAg ICAgICAgICAgICAgIDAuMDAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIE1peGVkIEluZGV4IFR5cGVzIChCUklOICsgRXhwcmVzc2lvbikKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K K0NSRUFURSBUQUJMRSB0KGlkIElOVCwgdmFsdWUgSU5ULCBkYXRhIEpTT05CKQorICAgIFdJVEgg KGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRF WCB0X2JyaW5faWR4IE9OIHQgVVNJTkcgYnJpbih2YWx1ZSk7CitDUkVBVEUgSU5ERVggdF9leHBy X2lkeCBPTiB0KChkYXRhLT4nc3RhdHVzJykpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsIDEw MCwgJ3sic3RhdHVzIjogImFjdGl2ZSJ9Jyk7CistLSBVcGRhdGUgb25seSBCUklOIGNvbHVtbiAt IHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91 cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4 cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAg ICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0CisoMSBy b3cpCisKKy0tIFVwZGF0ZSBvbmx5IGV4cHJlc3Npb24gY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3sic3RhdHVzIjogImluYWN0aXZlIn0nIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8 IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1h dGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAg ICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICA1MC4wMCB8 IHQKKygxIHJvdykKKworLS0gVXBkYXRlIGJvdGggLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRF IHQgU0VUIHZhbHVlID0gMzAwLCBkYXRhID0gJ3sic3RhdHVzIjogInBlbmRpbmcifScgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1l IHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwg bWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAg ICAgIHwgICAgICAgICAgICAgMyB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgIDMzLjMz IHwgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHQ7CistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHSU4gQXJyYXkg SW5kZXggLSBPcmRlciBJbnNlbnNpdGl2ZSBFeHRyYWN0aW9uCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUg VEFCTEUgdCgKKyAgICBpZCBJTlQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBKU09OQgorKSBXSVRI IChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CistLSBHSU4gaW5k ZXggb24gSlNPTkIgYXJyYXkgKGV4dHJhY3RzIGFsbCBlbGVtZW50cykKK0NSRUFURSBJTkRFWCB0 X2l0ZW1zX2dpbiBPTiB0IFVTSU5HIEdJTiAoKGRhdGEtPidpdGVtcycpKTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgxLCAneyJpdGVtcyI6IFsxLCAyLCAzXSwgInN0YXR1cyI6ICJhY3RpdmUifScp OworLS0gVXBkYXRlOiBSZW9yZGVyIGFycmF5IGVsZW1lbnRzCistLSBKU09OQiBlcXVhbGl0eTog Tk9UIGVxdWFsIChkaWZmZXJlbnQgYXJyYXlzKQorLS0gR0lOIGV4dHJhY3Rpb246IFNhbWUgZWxl bWVudHMgZXh0cmFjdGVkIChtaWdodCBhbGxvdyBIT1QgaWYgbm90IGNhcmVmdWwpCitVUERBVEUg dCBTRVQgZGF0YSA9ICd7Iml0ZW1zIjogWzMsIDIsIDFdLCAic3RhdHVzIjogImFjdGl2ZSJ9JyBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxl X25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRh Z2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQg ICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAx MDAuMDAgfCB0CisoMSByb3cpCisKKy0tIFVwZGF0ZTogQWRkL3JlbW92ZSBlbGVtZW50CitVUERB VEUgdCBTRVQgZGF0YSA9ICd7Iml0ZW1zIjogWzEsIDIsIDMsIDRdLCAic3RhdHVzIjogImFjdGl2 ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOwor IHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3Bl cmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAyIHwgICAgICAgICAgIDEgfCAgICAgICAgICAg ICAgICAgNTAuMDAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdDsKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFRFU1Q6IEdJTiB3aXRoIFRPQVNUZWQgVEVYVCAodHN2ZWN0b3IpCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVB VEUgVEFCTEUgdChpZCBJTlQsIGNvbnRlbnQgVEVYVCwgc2VhcmNoX3ZlYyB0c3ZlY3RvcikKKyAg ICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CistLSBD cmVhdGUgdHJpZ2dlciB0byBtYWludGFpbiB0c3ZlY3RvcgorQ1JFQVRFIFRSSUdHRVIgdHN2ZWN0 b3J1cGRhdGVfdG9hc3QKKyAgICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPTiB0CisgICAgRk9S IEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04KKyAgICB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcihz ZWFyY2hfdmVjLCAncGdfY2F0YWxvZy5lbmdsaXNoJywgY29udGVudCk7CitDUkVBVEUgSU5ERVgg dF9naW4gT04gdCBVU0lORyBnaW4oc2VhcmNoX3ZlYyk7CistLSBJbnNlcnQgd2l0aCBsYXJnZSBj b250ZW50ICh3aWxsIGJlIFRPQVNUZWQpCitJTlNFUlQgSU5UTyB0IChpZCwgY29udGVudCkgVkFM VUVTCisgICAgKDEsIHJlcGVhdCgnaW1wb3J0YW50IGtleXdvcmQgJywgMTAwMCkgfHwgcmVwZWF0 KCdmaWxsZXIgdGV4dCAnLCAxMDAwMCkpOworLS0gVmVyaWZ5IGluaXRpYWwgc3RhdGUKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgc2VhcmNoX3ZlYyBAQCB0b190c3F1ZXJ5KCdpbXBvcnRh bnQnKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSBFeHBlY3RlZDog MSByb3cKKy0tIElNUE9SVEFOVDogVGhlIEJFRk9SRSBVUERBVEUgdHJpZ2dlciBtb2RpZmllcyBz ZWFyY2hfdmVjLCBzbyBieSB0aGUgdGltZQorLS0gRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVVcGRh dGVzKCkgcnVucywgc2VhcmNoX3ZlYyBoYXMgYWxyZWFkeSBjaGFuZ2VkLgorLS0gVGhpcyBtZWFu cyB0aGUgY29tcGFyaXNvbiBzZWVzIG9sZCB0c3ZlY3RvciB2cy4gdHJpZ2dlci1tb2RpZmllZCB0 c3ZlY3RvciwKKy0tIG5vdCB0aGUgbmF0dXJhbCBwcm9ncmVzc2lvbi4gSE9UIHdvbid0IGhhcHBl biBiZWNhdXNlIHRoZSB0cmlnZ2VyIGNoYW5nZWQKKy0tIHRoZSBpbmRleGVkIGNvbHVtbi4KKy0t IFVwZGF0ZTogRXZlbiB0aG91Z2ggY29udGVudCBrZXl3b3JkcyB1bmNoYW5nZWQsIHRyaWdnZXIg c3RpbGwgZmlyZXMKK1VQREFURSB0CitTRVQgY29udGVudCA9IHJlcGVhdCgnaW1wb3J0YW50IGtl eXdvcmQgJywgMTAwMCkgfHwgcmVwZWF0KCdkaWZmZXJlbnQgZmlsbGVyICcsIDEwMDAwKQorV0hF UkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKyB0YWJsZV9u YW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdl IHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAg ICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAw LjAwIHwgdAorKDEgcm93KQorCistLSBFeHBlY3RlZDogMCBIT1QgKHRyaWdnZXIgbW9kaWZpZXMg c2VhcmNoX3ZlYywgYmxvY2tpbmcgSE9UKQorLS0gVGhpcyBpcyBhY3R1YWxseSBjb3JyZWN0IGJl aGF2aW9yIC0gdGhlIHRyaWdnZXIgdXBkYXRlZCBhbiBpbmRleGVkIGNvbHVtbgorLS0gVXBkYXRl OiBDaGFuZ2UgaW5kZXhlZCBrZXl3b3JkcworVVBEQVRFIHQKK1NFVCBjb250ZW50ID0gcmVwZWF0 KCdjcml0aWNhbCBrZXl3b3JkICcsIDEwMDApIHx8IHJlcGVhdCgnZGlmZmVyZW50IGZpbGxlciAn LCAxMDAwMCkKK1dIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMo MCk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRh dGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMCB8ICAgICAg ICAgICAgICAgICAgMC4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDAgSE9UIChpbmRl eCBrZXlzIGNoYW5nZWQpCistLSBWZXJpZnkgcXVlcnkgY29ycmVjdG5lc3MKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHQgV0hFUkUgc2VhcmNoX3ZlYyBAQCB0b190c3F1ZXJ5KCdjcml0aWNhbCcpOwor IGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKKy0tIEV4cGVjdGVkOiAxIHJvdwor RFJPUCBUQUJMRSB0IENBU0NBREU7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBURVNUOiBHSU4gd2l0aCBBcnJh eSBvZiBMYXJnZSBTdHJpbmdzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIHRh Z3MgVEVYVFtdKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3Rv ciA9IDcwKTsKK0NSRUFURSBJTkRFWCB0X2dpbiBPTiB0IFVTSU5HIGdpbih0YWdzKTsKKy0tIElu c2VydCB3aXRoIGxhcmdlIGFycmF5IGVsZW1lbnRzIChtaWdodCBiZSBUT0FTVGVkKQorSU5TRVJU IElOVE8gdCAoaWQsIHRhZ3MpIFZBTFVFUworICAgICgxLCBBUlJBWVtyZXBlYXQoJ3RhZzEnLCAx MDAwKSwgcmVwZWF0KCd0YWcyJywgMTAwMCldKTsKKy0tIFVwZGF0ZTogQ2hhbmdlIHRvIGRpZmZl cmVudCBsYXJnZSB2YWx1ZXMgLSBOT1QgSE9UCitVUERBVEUgdAorU0VUIHRhZ3MgPSBBUlJBWVty ZXBlYXQoJ3RhZzMnLCAxMDAwKSwgcmVwZWF0KCd0YWc0JywgMTAwMCldCitXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDApOworIHRhYmxlX25hbWUgfCB0b3Rh bF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVz X2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAg ICAgICAgICAgICAxIHwgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAgIDAuMDAgfCB0Ciso MSByb3cpCisKKy0tIEV4cGVjdGVkOiAwIEhPVCAoa2V5cyBhY3R1YWxseSBjaGFuZ2VkKQorLS0g VXBkYXRlOiBLZWVwIHNhbWUgdGFnIHZhbHVlcywganVzdCByZW9yZGVyIC0gU0hPVUxEIEJFIEhP VAorLS0gKEdJTiBpcyBvcmRlci1pbnNlbnNpdGl2ZTogYm90aCBbdGFnMyx0YWc0XSBhbmQgW3Rh ZzQsdGFnM10KKy0tIGV4dHJhY3QgdG8gdGhlIHNhbWUgc29ydGVkIGtleSBzZXQgWyd0YWczJywn dGFnNCddKQorVVBEQVRFIHQKK1NFVCB0YWdzID0gQVJSQVlbcmVwZWF0KCd0YWc0JywgMTAwMCks IHJlcGVhdCgndGFnMycsIDEwMDApXQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVj a19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRh dGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMiB8ICAgICAg ICAgICAxIHwgICAgICAgICAgICAgICAgIDUwLjAwIHwgdAorKDEgcm93KQorCistLSBFeHBlY3Rl ZDogMSBIT1QgKEdJTiBrZXlzIHNlbWFudGljYWxseSBpZGVudGljYWwpCistLSBVcGRhdGU6IFJl bW92ZSBhbiBlbGVtZW50IC0gTk9UIEhPVCAoa2V5cyBjaGFuZ2VkKQorVVBEQVRFIHQKK1NFVCB0 YWdzID0gQVJSQVlbcmVwZWF0KCd0YWc0JywgMTAwMCldCitXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVz IHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVk IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAg ICAzIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAgMzMuMzMgfCB0CisoMSByb3cpCisK Ky0tIEV4cGVjdGVkOiBTdGlsbCAxIEhPVCAobm90IHRoaXMgb25lKQorRFJPUCBUQUJMRSB0IENB U0NBREU7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBCUklOIEluZGV4IHdpdGggUGFydGlhbCBQcmVkaWNhdGUK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KAorICAgIGlkIElOVCBQUklNQVJZIEtFWSwKKyAg ICB2YWx1ZSBJTlQsCisgICAgZGVzY3JpcHRpb24gVEVYVAorKSBXSVRIIChhdXRvdmFjdXVtX2Vu YWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9icmluX3BhcnRp YWxfaWR4IE9OIHQgVVNJTkcgYnJpbih2YWx1ZSkgV0hFUkUgdmFsdWUgPiAxMDA7CitJTlNFUlQg SU5UTyB0IFZBTFVFUyAoMSwgNTAsICdiZWxvdyByYW5nZScpOworLS0gVGVzdCAxOiBPdXRzaWRl IHByZWRpY2F0ZQorVVBEQVRFIHQgU0VUIGRlc2NyaXB0aW9uID0gJ3VwZGF0ZWQnIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8 IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1h dGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAg ICB8ICAgICAgICAgICAgIDEgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgIDEwMC4wMCB8 IHQKKygxIHJvdykKKworLS0gVmFsaWRhdGU6IFByZWRpY2F0ZSBxdWVyeSByZXR1cm5zIDAgcm93 cworU0VMRUNUIENPVU5UKCopIGFzIGNudCBGUk9NIHQgV0hFUkUgdmFsdWUgPiAxMDA7CisgY250 IAorLS0tLS0KKyAgIDAKKygxIHJvdykKKworLS0gVGVzdCAyOiBUcmFuc2l0aW9uIGludG8gcHJl ZGljYXRlCitVUERBVEUgdCBTRVQgdmFsdWUgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8 IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAg MiB8ICAgICAgICAgICAyIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCist LSBWYWxpZGF0ZTogUHJlZGljYXRlIHF1ZXJ5IHJldHVybnMgMSByb3cgd2l0aCBjb3JyZWN0IHZh bHVlCitTRUxFQ1QgQ09VTlQoKikgYXMgY250LCBNQVgodmFsdWUpIGFzIG1heF92YWwgRlJPTSB0 IFdIRVJFIHZhbHVlID4gMTAwOworIGNudCB8IG1heF92YWwgCistLS0tLSstLS0tLS0tLS0KKyAg IDEgfCAgICAgMTUwCisoMSByb3cpCisKKy0tIFRlc3QgMzogSW5zaWRlIHByZWRpY2F0ZSwgdmFs dWUgY2hhbmdlcworVVBEQVRFIHQgU0VUIHZhbHVlID0gMTYwLCBkZXNjcmlwdGlvbiA9ICd1cGRh dGVkIGFnYWluJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDMpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBk YXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAzIHwgICAgICAgICAgIDMgfCAgICAg ICAgICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cpCisKKy0tIFZhbGlkYXRlOiBVcGRhdGVkIHZh bHVlICgxNjApIGlzIHJldHVybmVkCitTRUxFQ1QgQ09VTlQoKikgYXMgY250LCBNQVgodmFsdWUp IGFzIG1heF92YWwgRlJPTSB0IFdIRVJFIHZhbHVlID4gMTAwOworIGNudCB8IG1heF92YWwgCist LS0tLSstLS0tLS0tLS0KKyAgIDEgfCAgICAgMTYwCisoMSByb3cpCisKKy0tIFRlc3QgNDogVHJh bnNpdGlvbiBvdXQgb2YgcHJlZGljYXRlCitVUERBVEUgdCBTRVQgdmFsdWUgPSA1MCBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDQpOworIHRhYmxlX25hbWUg fCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBt YXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAg ICAgfCAgICAgICAgICAgICA0IHwgICAgICAgICAgIDQgfCAgICAgICAgICAgICAgICAxMDAuMDAg fCB0CisoMSByb3cpCisKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQgRlJPTSB0IFdIRVJFIHZhbHVl ID4gMTAwOworIGNudCAKKy0tLS0tCisgICAwCisoMSByb3cpCisKK1NFTEVDVCBpZCwgdmFsdWUs IGRlc2NyaXB0aW9uIEZST00gdDsKKyBpZCB8IHZhbHVlIHwgIGRlc2NyaXB0aW9uICAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgIDUwIHwgdXBkYXRlZCBhZ2FpbgorKDEg cm93KQorCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEhBU0ggSW5kZXgg KFNpbXBsZSBDb2x1bW4pCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGNvZGUg VkFSQ0hBUigyMCksIGRlc2NyaXB0aW9uIFRFWFQpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFi bGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfaGFzaF9pZHggT04g dCBVU0lORyBoYXNoKGNvZGUpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICdDT0RFMDAxJywg J2luaXRpYWwnKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9U CitVUERBVEUgdCBTRVQgZGVzY3JpcHRpb24gPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBk YXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBl Y3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAg ICAgICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93 KQorCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBIQVNIIGluZGV4IHJlcXVpcmVzIHVwZGF0 ZSwgTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNvZGUgPSAnQ09ERTAwMicgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxf dXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19l eHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAg ICAgICAgICAgMiB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgIDUwLjAwIHwgdAorKDEg cm93KQorCistLSBVcGRhdGUgYm90aCAtIE5PVCBIT1QKK1VQREFURSB0IFNFVCBjb2RlID0gJ0NP REUwMDMnLCBkZXNjcmlwdGlvbiA9ICdjaGFuZ2VkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBG Uk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwg aG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAor LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAz IHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAgMzMuMzMgfCB0CisoMSByb3cpCisKKy0t IEJhY2sgdG8gb3JpZ2luYWwgY29kZSAtIE5PVCBIT1QgKGRpZmZlcmVudCBoYXNoIGJ1Y2tldCBs b2NhdGlvbikKK1VQREFURSB0IFNFVCBjb2RlID0gJ0NPREUwMDEnIFdIRVJFIGlkID0gMTsKK1NF TEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3Vw ZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhw ZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAg ICAgICAgIDQgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgICAyNS4wMCB8IHQKKygxIHJv dykKKworRFJPUCBUQUJMRSB0IENBU0NBREU7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBIQVNIIEluZGV4IG9u IEV4cHJlc3Npb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgZW1haWwgVEVY VCwgZGF0YSBKU09OQikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxm YWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9oYXNoX2xvd2VyX2VtYWlsX2lkeCBPTiB0IFVT SU5HIEhBU0gobG93ZXIoZW1haWwpKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnQWxpY2VA RXhhbXBsZS5jb20nLCAneyJzdGF0dXMiOiAibmV3In0nKTsKKy0tIFVwZGF0ZSBub24taW5kZXhl ZCBmaWVsZCAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3sic3RhdHVzIjog ImFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBk YXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAg ICAgICAgICAgICAxMDAuMDAgfCB0CisoMSByb3cpCisKKy0tIFVwZGF0ZSBlbWFpbCB3aXRoIGNh c2UgY2hhbmdlIG9ubHkgKHNhbWUgbG93ZXJjYXNlKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0 IFNFVCBlbWFpbCA9ICdhbGljZUBleGFtcGxlLmNvbScgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8 IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAK Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAg MiB8ICAgICAgICAgICAyIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQorCist LSBVcGRhdGUgZW1haWwgdG8gZGlmZmVyZW50IGxvd2VyY2FzZSAtIE5PVCBIT1QKK1VQREFURSB0 IFNFVCBlbWFpbCA9ICdib2JAZXhhbXBsZS5jb20nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gY2hlY2tfaG90X3VwZGF0ZXMoMik7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBo b3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCist LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDMg fCAgICAgICAgICAgMiB8ICAgICAgICAgICAgICAgICA2Ni42NyB8IHQKKygxIHJvdykKKworRFJP UCBUQUJMRSB0IENBU0NBREU7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNdWx0aXBsZSBIQVNIIEluZGV4ZXMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgY2F0ZWdvcnkgVkFSQ0hBUiwgc3Rh dHVzIFZBUkNIQVIsIHZhbHVlIElOVCkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBv ZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9oYXNoX2NhdGVnb3J5X2lkeCBP TiB0IFVTSU5HIGhhc2goY2F0ZWdvcnkpOworQ1JFQVRFIElOREVYIHRfaGFzaF9zdGF0dXNfaWR4 IE9OIHQgVVNJTkcgaGFzaChzdGF0dXMpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICdlbGVj dHJvbmljcycsICdhY3RpdmUnLCAxMDApOworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAt IHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDE1MCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0b3RhbF91 cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRjaGVzX2V4 cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgfCAgICAg ICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0CisoMSBy b3cpCisKKy0tIFVwZGF0ZSBvbmUgaW5kZXhlZCBjb2x1bW4gLSBOT1QgSE9UCitVUERBVEUgdCBT RVQgY2F0ZWdvcnkgPSAnYm9va3MnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tf aG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRl cyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAg ICAgMSB8ICAgICAgICAgICAgICAgICA1MC4wMCB8IHQKKygxIHJvdykKKworLS0gVXBkYXRlIG90 aGVyIGluZGV4ZWQgY29sdW1uIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIHN0YXR1cyA9ICdpbmFj dGl2ZScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsK KyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9w ZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMyB8ICAgICAgICAgICAxIHwgICAgICAgICAg ICAgICAgIDMzLjMzIHwgdAorKDEgcm93KQorCistLSBVcGRhdGUgYm90aCBpbmRleGVkIGNvbHVt bnMgLSBOT1QgSE9UCitVUERBVEUgdCBTRVQgY2F0ZWdvcnkgPSAndmlkZW9zJywgc3RhdHVzID0g J3BlbmRpbmcnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMo MSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRh dGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDQgfCAgICAgICAgICAgMSB8ICAgICAg ICAgICAgICAgICAyNS4wMCB8IHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0IENBU0NBREU7Cist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBCUklOIHZzIEhBU0ggQ29tcGFyaXNvbgorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRF IFRBQkxFIHRfYnJpbihpZCBJTlQsIHZhbHVlIElOVCwgZGF0YSBURVhUKQorICAgIFdJVEggKGF1 dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBUQUJMRSB0 X2hhc2goaWQgSU5ULCB2YWx1ZSBJTlQsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRvdmFjdXVt X2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9icmluX3Zh bHVlX2lkeCBPTiB0X2JyaW4gVVNJTkcgYnJpbih2YWx1ZSk7CitDUkVBVEUgSU5ERVggdF9oYXNo X3ZhbHVlX2lkeCBPTiB0X2hhc2ggVVNJTkcgaGFzaCh2YWx1ZSk7CitJTlNFUlQgSU5UTyB0X2Jy aW4gVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyB0X2hhc2ggVkFMVUVT ICgxLCAxMDAsICdpbml0aWFsJyk7CistLSBTYW1lIHVwZGF0ZSBvbiBib3RoIC0gZGlmZmVyZW50 IEhPVCBiZWhhdmlvciBleHBlY3RlZAorLS0gQlJJTjogbWlnaHQgYWxsb3cgSE9UIChyYW5nZSBz dW1tYXJ5IHVuY2hhbmdlZCkKKy0tIEhBU0g6IGJsb2NrcyBIT1QgKGhhc2ggYnVja2V0IGNoYW5n ZWQpCitVUERBVEUgdF9icmluIFNFVCB2YWx1ZSA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEsICd0X2JyaW4nKTsKKyB0YWJsZV9uYW1lIHwgdG90 YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hl c19leHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0X2JyaW4gICAgIHwg ICAgICAgICAgICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAor KDEgcm93KQorCistLSBFeHBlY3RlZDogMSBIT1QgKEJSSU4gYWxsb3dzIGl0IGZvciBzaW5nbGUg cm93KQorVVBEQVRFIHRfaGFzaCBTRVQgdmFsdWUgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNU ICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwLCAndF9oYXNoJyk7CisgdGFibGVfbmFtZSB8IHRv dGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNo ZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdF9oYXNoICAgICB8 ICAgICAgICAgICAgIDEgfCAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMC4wMCB8IHQK KygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDAgSE9UIChIQVNIIGJsb2NrcyBpdCkKK0RST1AgVEFC TEUgdF9icmluIENBU0NBREU7CitEUk9QIFRBQkxFIHRfaGFzaCBDQVNDQURFOworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gSEFTSCBJbmRleCB3aXRoIE5VTEwgVmFsdWVzCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFC TEUgdChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRv dmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9o YXNoX2NhdGVnb3J5X2lkeCBPTiB0IFVTSU5HIGhhc2goY2F0ZWdvcnkpOworSU5TRVJUIElOVE8g dCBWQUxVRVMgKDEsICdlbGVjdHJvbmljcycsICdpbml0aWFsJyk7CistLSBVcGRhdGUgaW5kZXhl ZCBjb2x1bW4gdG8gTlVMTCAtIE5PVCBIT1QgKGhhc2ggdmFsdWUgY2hhbmdlZCkKK1VQREFURSB0 IFNFVCBjYXRlZ29yeSA9IE5VTEwgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19o b3RfdXBkYXRlcygwKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRlcyB8IGhvdF91cGRhdGVz IHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3RlZCAKKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAgICAgMSB8ICAgICAgICAg ICAwIHwgICAgICAgICAgICAgICAgICAwLjAwIHwgdAorKDEgcm93KQorCistLSBFeHBlY3RlZDog MCBIT1QKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBmcm9tIE5VTEwgdG8gdmFsdWUgLSBOT1Qg SE9UCitVUERBVEUgdCBTRVQgY2F0ZWdvcnkgPSAnYm9va3MnIFdIRVJFIGlkID0gMTsKK1NFTEVD VCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0 ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0 ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAg ICAgIDIgfCAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgMC4wMCB8IHQKKygxIHJvdykK KworLS0gRXhwZWN0ZWQ6IDAgSE9UCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hv dWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxf dXBkYXRlcyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19l eHBlY3RlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAg ICAgICAgICAgMyB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgIDMzLjMzIHwgdAorKDEg cm93KQorCistLSBFeHBlY3RlZDogMSBIT1QKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gQlJJTiBvbiBKU09OQiBGaWVsZAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQo aWQgSU5ULCBtZXRyaWNzIEpTT05CKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9m ZiwgZmlsbGZhY3RvciA9IDcwKTsKKy0tIEJSSU4gZG9lc24ndCBkaXJlY3RseSBzdXBwb3J0IEpT T05CLCBidXQgd2UgY2FuIHRlc3Qgb24gZXhwcmVzc2lvbgorQ1JFQVRFIElOREVYIHRfYnJpbl9j b3VudF9pZHggT04gdCBVU0lORyBicmluKAorICAgIENBU1QobWV0cmljcy0+Pidjb3VudCcgQVMg SU5URUdFUikKKyk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3siY291bnQiOiAiMTAwIiwg InRpbWVzdGFtcCI6ICIyMDI0LTAxLTAxIn0nKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O QiBmaWVsZCAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBtZXRyaWNzID0gJ3siY291bnQi OiAiMTAwIiwgInRpbWVzdGFtcCI6ICIyMDI0LTAxLTAyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVD VCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0 ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0 ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAg ICAgIDEgfCAgICAgICAgICAgMSB8ICAgICAgICAgICAgICAgIDEwMC4wMCB8IHQKKygxIHJvdykK KworLS0gRXhwZWN0ZWQ6IDEgSE9UCistLSBVcGRhdGUgaW5kZXhlZCBmaWVsZCAtIEJSSU4gYWxs b3dzIEhPVCBmb3Igc2luZ2xlIHJvdworVVBEQVRFIHQgU0VUIG1ldHJpY3MgPSAneyJjb3VudCI6 ICIxNTAiLCAidGltZXN0YW1wIjogIjIwMjQtMDEtMDIifScgV0hFUkUgaWQgPSAxOworU0VMRUNU ICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRl cyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3Rl ZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAg ICAgMiB8ICAgICAgICAgICAyIHwgICAgICAgICAgICAgICAgMTAwLjAwIHwgdAorKDEgcm93KQor CistLSBFeHBlY3RlZDogMiBIT1QgKEJSSU4gcGVybWl0cyBzaW5nbGUtcm93IHVwZGF0ZXMpCitE Uk9QIFRBQkxFIHQgQ0FTQ0FERTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1peGVkIEJSSU4gKyBIQVNIIG9u IFNhbWUgVGFibGUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgY2F0ZWdvcnkg VkFSQ0hBUiwgdGltZXN0YW1wIFRJTUVTVEFNUCwgcHJpY2UgTlVNRVJJQywgZGF0YSBURVhUKQor ICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NS RUFURSBJTkRFWCB0X2JyaW5fdGltZXN0YW1wX2lkeCBPTiB0IFVTSU5HIGJyaW4odGltZXN0YW1w KTsKK0NSRUFURSBJTkRFWCB0X2hhc2hfY2F0ZWdvcnlfaWR4IE9OIHQgVVNJTkcgaGFzaChjYXRl Z29yeSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ2Jvb2tzJywgJzIwMjQtMDEtMDEgMTA6 MDA6MDAnLCAyOS45OSwgJ2luaXRpYWwnKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworIHRhYmxlX25hbWUgfCB0 b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNlbnRhZ2UgfCBtYXRj aGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAg fCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDEgfCAgICAgICAgICAgICAgICAxMDAuMDAgfCB0 CisoMSByb3cpCisKKy0tIEV4cGVjdGVkOiAxIEhPVAorLS0gVXBkYXRlIEJSSU4gaW5kZXhlZCBj b2x1bW4gLSBhbGxvd3MgSE9UCitVUERBVEUgdCBTRVQgdGltZXN0YW1wID0gJzIwMjQtMDEtMDIg MTA6MDA6MDAnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMo Mik7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhvdF91cGRh dGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDIgfCAgICAgICAgICAgMiB8ICAgICAg ICAgICAgICAgIDEwMC4wMCB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDIgSE9UCistLSBV cGRhdGUgSEFTSCBpbmRleGVkIGNvbHVtbiAtIGJsb2NrcyBIT1QKK1VQREFURSB0IFNFVCBjYXRl Z29yeSA9ICd2aWRlb3MnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3Vw ZGF0ZXMoMik7CisgdGFibGVfbmFtZSB8IHRvdGFsX3VwZGF0ZXMgfCBob3RfdXBkYXRlcyB8IGhv dF91cGRhdGVfcGVyY2VudGFnZSB8IG1hdGNoZXNfZXhwZWN0ZWQgCistLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgdCAgICAgICAgICB8ICAgICAgICAgICAgIDMgfCAgICAgICAgICAgMiB8 ICAgICAgICAgICAgICAgICA2Ni42NyB8IHQKKygxIHJvdykKKworLS0gRXhwZWN0ZWQ6IDIgSE9U IChIQVNIIGJsb2NrcyBpdCkKKy0tIFVwZGF0ZSBwcmljZSAobm9uLWluZGV4ZWQpIC0gc2hvdWxk IGJlIEhPVAorVVBEQVRFIHQgU0VUIHByaWNlID0gMzkuOTkgV0hFUkUgaWQgPSAxOworU0VMRUNU ICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygzKTsKKyB0YWJsZV9uYW1lIHwgdG90YWxfdXBkYXRl cyB8IGhvdF91cGRhdGVzIHwgaG90X3VwZGF0ZV9wZXJjZW50YWdlIHwgbWF0Y2hlc19leHBlY3Rl ZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgIHwgICAgICAgICAg ICAgNCB8ICAgICAgICAgICAzIHwgICAgICAgICAgICAgICAgIDc1LjAwIHwgdAorKDEgcm93KQor CistLSBFeHBlY3RlZDogMyBIT1QKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gSW5kZXggYm90aCBvbiBhIGZpZWxkIGluIGEgSlNPTkIgZG9jdW1lbnQsIGFuZCB0aGUgZG9j dW1lbnQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCBQUklNQVJZIEtFWSwgZG9j cyBKU09OQikgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzAp OworQ1JFQVRFIElOREVYIHRfZG9jc19pZHggT04gdCgoZG9jcy0+J25hbWUnKSk7CitDUkVBVEUg SU5ERVggdF9kb2NzX2NvbF9pZHggT04gdChkb2NzKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgx LCAneyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworLS0gVXBkYXRlIGlt cGFjdHMgaW5kZXggb24gd2hvbGUgZG9jbWVudCBhdHRyaWJ1dGUsIGNhbid0IGdvIEhPVAorVVBE QVRFIHQgU0VUIGRvY3M9J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRh In0nIFdIRVJFIGlkPTE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDApOworIHRh YmxlX25hbWUgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCBob3RfdXBkYXRlX3BlcmNl bnRhZ2UgfCBtYXRjaGVzX2V4cGVjdGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICAgfCAgICAgICAgICAgICAxIHwgICAgICAgICAgIDAgfCAgICAgICAgICAgICAg ICAgIDAuMDAgfCB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworLS0gQ2xlYW51 cAorRFJPUCBGVU5DVElPTiBjaGVja19ob3RfdXBkYXRlcyhpbnQsIHRleHQsIHRleHQpOworRFJP UCBDT0xMQVRJT04gY2FzZV9pbnNlbnNpdGl2ZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDAyMWQ1N2Y2NmJiLi4yZDY2NDE5OTJlOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xMjUsNiArMTI1LDEyIEBAIHRlc3Q6IHBsYW5jYWNoZSBsaW1pdCBwbHBnc3Fs IGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSBjb252ZXJzaW9uIHRyCiAjIC0t LS0tLS0tLS0KIHRlc3Q6IHBhcnRpdGlvbl9tZXJnZSBwYXJ0aXRpb25fc3BsaXQgcGFydGl0aW9u X2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRp dGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Np b24gY29tcHJlc3Npb25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEgZWFnZXJfYWdn cmVnYXRlCiAKKworIyAtLS0tLS0tLS0tCisjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVz dHMsIHRoZXNlIGZvY3VzZWQgb24gaGVhcCBIT1QgdXBkYXRlcworIyAtLS0tLS0tLS0tCit0ZXN0 OiBoZWFwX2hvdF91cGRhdGVzCisKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0ZV9h bSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0IHJ1bnMg RERMCiAjIG9pZGpvaW5zIGlzIHJlYWQtb25seSwgdGhvdWdoLCBhbmQgc2hvdWxkIHJ1biBsYXRl IGZvciBiZXN0IGNvdmVyYWdlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9oZWFw X2hvdF91cGRhdGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMDQ3YmNkZGY1Ywot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMu c3FsCkBAIC0wLDAgKzEsNTEzIEBACistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IFN1aXRlIGZvciBIZWFw LW9ubHkgKEhPVCkgVXBkYXRlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBTZXR1cDogQ3JlYXRlIGZ1bmN0 aW9uIHRvIG1lYXN1cmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGNo ZWNrX2hvdF91cGRhdGVzKAorICAgIGV4cGVjdGVkIElOVCwKKyAgICBwX3RhYmxlX25hbWUgVEVY VCBERUZBVUxUICd0JywKKyAgICBwX3NjaGVtYV9uYW1lIFRFWFQgREVGQVVMVCBjdXJyZW50X3Nj aGVtYSgpCispCitSRVRVUk5TIFRBQkxFICgKKyAgICB0YWJsZV9uYW1lIFRFWFQsCisgICAgdG90 YWxfdXBkYXRlcyBCSUdJTlQsCisgICAgaG90X3VwZGF0ZXMgQklHSU5ULAorICAgIGhvdF91cGRh dGVfcGVyY2VudGFnZSBOVU1FUklDLAorICAgIG1hdGNoZXNfZXhwZWN0ZWQgQk9PTEVBTgorKQor TEFOR1VBR0UgcGxwZ3NxbAorQVMgJCQKK0RFQ0xBUkUKKyAgICB2X3JlbGlkIG9pZDsKKyAgICB2 X3F1YWxpZmllZF9uYW1lIFRFWFQ7CisgICAgdl9ob3RfdXBkYXRlcyBCSUdJTlQ7CisgICAgdl91 cGRhdGVzIEJJR0lOVDsKKyAgICB2X3hhY3RfaG90X3VwZGF0ZXMgQklHSU5UOworICAgIHZfeGFj dF91cGRhdGVzIEJJR0lOVDsKK0JFR0lOCisgICAgLS0gRm9yY2Ugc3RhdGlzdGljcyB1cGRhdGUK KyAgICBQRVJGT1JNIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworCisgICAgLS0gR2V0IHRh YmxlIE9JRAorICAgIHZfcXVhbGlmaWVkX25hbWUgOj0gcXVvdGVfaWRlbnQocF9zY2hlbWFfbmFt ZSkgfHwgJy4nIHx8IHF1b3RlX2lkZW50KHBfdGFibGVfbmFtZSk7CisgICAgdl9yZWxpZCA6PSB2 X3F1YWxpZmllZF9uYW1lOjpyZWdjbGFzczsKKworICAgIElGIHZfcmVsaWQgSVMgTlVMTCBUSEVO CisJUkFJU0UgRVhDRVBUSU9OICdUYWJsZSAlLiUgbm90IGZvdW5kJywgcF9zY2hlbWFfbmFtZSwg cF90YWJsZV9uYW1lOworICAgIEVORCBJRjsKKworICAgIC0tIEdldCBjdW11bGF0aXZlICsgdHJh bnNhY3Rpb24gc3RhdHMKKyAgICB2X2hvdF91cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0 X3R1cGxlc19ob3RfdXBkYXRlZCh2X3JlbGlkKSwgMCk7CisgICAgdl91cGRhdGVzIDo9IENPQUxF U0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHZfcmVsaWQpLCAwKTsKKyAgICB2X3hhY3Rf aG90X3VwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQodl9yZWxpZCksIDApOworICAgIHZfeGFjdF91cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQodl9yZWxpZCksIDApOworCisgICAgdl9ob3RfdXBkYXRl cyA6PSB2X2hvdF91cGRhdGVzICsgdl94YWN0X2hvdF91cGRhdGVzOworICAgIHZfdXBkYXRlcyA6 PSB2X3VwZGF0ZXMgKyB2X3hhY3RfdXBkYXRlczsKKworICAgIFJFVFVSTiBRVUVSWQorICAgIFNF TEVDVAorCXBfdGFibGVfbmFtZTo6VEVYVCwKKwl2X3VwZGF0ZXM6OkJJR0lOVCwKKwl2X2hvdF91 cGRhdGVzOjpCSUdJTlQsCisJQ0FTRSBXSEVOIHZfdXBkYXRlcyA+IDAKKwkgICAgIFRIRU4gUk9V TkQoKHZfaG90X3VwZGF0ZXM6Om51bWVyaWMgLyB2X3VwZGF0ZXM6Om51bWVyaWMgKiAxMDApOjpu dW1lcmljLCAyKQorCSAgICAgRUxTRSAwCisJRU5ELAorCSh2X2hvdF91cGRhdGVzID0gZXhwZWN0 ZWQpOjpCT09MRUFOOworRU5EOworJCQ7CisKK0NSRUFURSBDT0xMQVRJT04gY2FzZV9pbnNlbnNp dGl2ZSAoCisgICAgcHJvdmlkZXIgPSBsaWJjLAorICAgIGxvY2FsZSA9ICdDJworKTsKKworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBHSU4gSW5kZXggb24gSlNPTkIKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJM RSB0KGlkIElOVCwgZGF0YSBKU09OQikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBv ZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9naW5faWR4IE9OIHQgVVNJTkcg Z2luKGRhdGEpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICd7InRhZ3MiOiBbInBvc3RncmVz IiwgImRhdGFiYXNlIl19Jyk7CisKKy0tIENoYW5nZSB0YWdzIC0gR0lOIGtleXMgY2hhbmdlZCwg c2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3sidGFncyI6IFsicG9zdGdy ZXMiLCAic3FsIl19JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRh dGVzKDApOworCistLSBDaGFuZ2UgdGFncyBhZ2FpbiAtIEdJTiBrZXlzIGNoYW5nZWQsIHNob3Vs ZCBOT1QgYmUgSE9UCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InRhZ3MiOiBbIm15c3FsIiwgInNx bCJdfScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsK KworLS0gQWRkIGZpZWxkIHdpdGhvdXQgY2hhbmdpbmcgZXhpc3Rpbmcga2V5cyAtIEdJTiBrZXlz IGNoYW5nZWQgKGFkZGVkICJub3RlIiksIE5PVCBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3si dGFncyI6IFsibXlzcWwiLCAic3FsIl0sICJub3RlIjogInRlc3QifScgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKworRFJPUCBUQUJMRSB0OworCisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEdJTiBJbmRleCB3aXRoIFVuY2hhbmdlZCBLZXlzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGRhdGEgSlNPTkIpCisgICAgV0lUSCAoYXV0b3ZhY3V1 bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworLS0gQ3JlYXRlIEdJTiBpbmRleCBv biBzcGVjaWZpYyBwYXRoCitDUkVBVEUgSU5ERVggdF9naW5faWR4IE9OIHQgVVNJTkcgZ2luKChk YXRhLT4ndGFncycpKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAneyJ0YWdzIjogWyJwb3N0 Z3JlcyIsICJzcWwiXSwgInN0YXR1cyI6ICJhY3RpdmUifScpOworCistLSBDaGFuZ2Ugbm9uLWlu ZGV4ZWQgZmllbGQgLSBHSU4ga2V5cyBvbiAndGFncycgdW5jaGFuZ2VkLCBzaG91bGQgYmUgSE9U CitVUERBVEUgdCBTRVQgZGF0YSA9ICd7InRhZ3MiOiBbInBvc3RncmVzIiwgInNxbCJdLCAic3Rh dHVzIjogImluYWN0aXZlIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90 X3VwZGF0ZXMoMSk7CisKKy0tIENoYW5nZSBpbmRleGVkIHRhZ3MgLSBHSU4ga2V5cyBjaGFuZ2Vk LCBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIHQgU0VUIGRhdGEgPSAneyJ0YWdzIjogWyJteXNx bCIsICJzcWwiXSwgInN0YXR1cyI6ICJpbmFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gR0lOIHdpdGgganNvbmJfcGF0aF9vcHMKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJM RSB0KGlkIElOVCwgZGF0YSBKU09OQikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBv ZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9naW5faWR4IE9OIHQgVVNJTkcg Z2luKGRhdGEganNvbmJfcGF0aF9vcHMpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICd7InVz ZXIiOiB7Im5hbWUiOiAiYWxpY2UifSwgInRhZ3MiOiBbImEiLCAiYiJdfScpOworCistLSBDaGFu Z2UgdmFsdWUgYXQgZGlmZmVyZW50IHBhdGggLSBrZXlzIGNoYW5nZWQsIE5PVCBIT1QKK1VQREFU RSB0IFNFVCBkYXRhID0gJ3sidXNlciI6IHsibmFtZSI6ICJib2IifSwgInRhZ3MiOiBbImEiLCAi YiJdfScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsK KworRFJPUCBUQUJMRSB0OworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1peGVkIEluZGV4IFR5cGVzIChC UklOICsgRXhwcmVzc2lvbikKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgdmFs dWUgSU5ULCBkYXRhIEpTT05CKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwg ZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCB0X2JyaW5faWR4IE9OIHQgVVNJTkcgYnJp bih2YWx1ZSk7CitDUkVBVEUgSU5ERVggdF9leHByX2lkeCBPTiB0KChkYXRhLT4nc3RhdHVzJykp OworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsIDEwMCwgJ3sic3RhdHVzIjogImFjdGl2ZSJ9Jyk7 CisKKy0tIFVwZGF0ZSBvbmx5IEJSSU4gY29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQg U0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3Vw ZGF0ZXMoMSk7CisKKy0tIFVwZGF0ZSBvbmx5IGV4cHJlc3Npb24gY29sdW1uIC0gc2hvdWxkIE5P VCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRhID0gJ3sic3RhdHVzIjogImluYWN0aXZlIn0nIFdI RVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKKy0tIFVw ZGF0ZSBib3RoIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDMwMCwg ZGF0YSA9ICd7InN0YXR1cyI6ICJwZW5kaW5nIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBHSU4gQXJyYXkgSW5kZXggLSBPcmRlciBJbnNlbnNpdGl2ZSBFeHRyYWN0aW9uCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CitDUkVBVEUgVEFCTEUgdCgKKyAgICBpZCBJTlQgUFJJTUFSWSBLRVksCisgICAgZGF0 YSBKU09OQgorKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3 MCk7CisKKy0tIEdJTiBpbmRleCBvbiBKU09OQiBhcnJheSAoZXh0cmFjdHMgYWxsIGVsZW1lbnRz KQorQ1JFQVRFIElOREVYIHRfaXRlbXNfZ2luIE9OIHQgVVNJTkcgR0lOICgoZGF0YS0+J2l0ZW1z JykpOworCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ3siaXRlbXMiOiBbMSwgMiwgM10sICJz dGF0dXMiOiAiYWN0aXZlIn0nKTsKKworLS0gVXBkYXRlOiBSZW9yZGVyIGFycmF5IGVsZW1lbnRz CistLSBKU09OQiBlcXVhbGl0eTogTk9UIGVxdWFsIChkaWZmZXJlbnQgYXJyYXlzKQorLS0gR0lO IGV4dHJhY3Rpb246IFNhbWUgZWxlbWVudHMgZXh0cmFjdGVkIChtaWdodCBhbGxvdyBIT1QgaWYg bm90IGNhcmVmdWwpCitVUERBVEUgdCBTRVQgZGF0YSA9ICd7Iml0ZW1zIjogWzMsIDIsIDFdLCAi c3RhdHVzIjogImFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hv dF91cGRhdGVzKDEpOworCistLSBVcGRhdGU6IEFkZC9yZW1vdmUgZWxlbWVudAorVVBEQVRFIHQg U0VUIGRhdGEgPSAneyJpdGVtcyI6IFsxLCAyLCAzLCA0XSwgInN0YXR1cyI6ICJhY3RpdmUifScg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKworRFJP UCBUQUJMRSB0OworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRFU1Q6IEdJTiB3aXRoIFRPQVNUZWQgVEVY VCAodHN2ZWN0b3IpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGNvbnRlbnQg VEVYVCwgc2VhcmNoX3ZlYyB0c3ZlY3RvcikKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQg PSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CisKKy0tIENyZWF0ZSB0cmlnZ2VyIHRvIG1haW50YWlu IHRzdmVjdG9yCitDUkVBVEUgVFJJR0dFUiB0c3ZlY3RvcnVwZGF0ZV90b2FzdAorICAgIEJFRk9S RSBJTlNFUlQgT1IgVVBEQVRFIE9OIHQKKyAgICBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElP TgorICAgIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKHNlYXJjaF92ZWMsICdwZ19jYXRhbG9nLmVu Z2xpc2gnLCBjb250ZW50KTsKKworQ1JFQVRFIElOREVYIHRfZ2luIE9OIHQgVVNJTkcgZ2luKHNl YXJjaF92ZWMpOworCistLSBJbnNlcnQgd2l0aCBsYXJnZSBjb250ZW50ICh3aWxsIGJlIFRPQVNU ZWQpCitJTlNFUlQgSU5UTyB0IChpZCwgY29udGVudCkgVkFMVUVTCisgICAgKDEsIHJlcGVhdCgn aW1wb3J0YW50IGtleXdvcmQgJywgMTAwMCkgfHwgcmVwZWF0KCdmaWxsZXIgdGV4dCAnLCAxMDAw MCkpOworCistLSBWZXJpZnkgaW5pdGlhbCBzdGF0ZQorU0VMRUNUIGNvdW50KCopIEZST00gdCBX SEVSRSBzZWFyY2hfdmVjIEBAIHRvX3RzcXVlcnkoJ2ltcG9ydGFudCcpOworLS0gRXhwZWN0ZWQ6 IDEgcm93CisKKy0tIElNUE9SVEFOVDogVGhlIEJFRk9SRSBVUERBVEUgdHJpZ2dlciBtb2RpZmll cyBzZWFyY2hfdmVjLCBzbyBieSB0aGUgdGltZQorLS0gRXhlY1doaWNoSW5kZXhlc1JlcXVpcmVV cGRhdGVzKCkgcnVucywgc2VhcmNoX3ZlYyBoYXMgYWxyZWFkeSBjaGFuZ2VkLgorLS0gVGhpcyBt ZWFucyB0aGUgY29tcGFyaXNvbiBzZWVzIG9sZCB0c3ZlY3RvciB2cy4gdHJpZ2dlci1tb2RpZmll ZCB0c3ZlY3RvciwKKy0tIG5vdCB0aGUgbmF0dXJhbCBwcm9ncmVzc2lvbi4gSE9UIHdvbid0IGhh cHBlbiBiZWNhdXNlIHRoZSB0cmlnZ2VyIGNoYW5nZWQKKy0tIHRoZSBpbmRleGVkIGNvbHVtbi4K KworLS0gVXBkYXRlOiBFdmVuIHRob3VnaCBjb250ZW50IGtleXdvcmRzIHVuY2hhbmdlZCwgdHJp Z2dlciBzdGlsbCBmaXJlcworVVBEQVRFIHQKK1NFVCBjb250ZW50ID0gcmVwZWF0KCdpbXBvcnRh bnQga2V5d29yZCAnLCAxMDAwKSB8fCByZXBlYXQoJ2RpZmZlcmVudCBmaWxsZXIgJywgMTAwMDAp CitXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDApOworLS0g RXhwZWN0ZWQ6IDAgSE9UICh0cmlnZ2VyIG1vZGlmaWVzIHNlYXJjaF92ZWMsIGJsb2NraW5nIEhP VCkKKy0tIFRoaXMgaXMgYWN0dWFsbHkgY29ycmVjdCBiZWhhdmlvciAtIHRoZSB0cmlnZ2VyIHVw ZGF0ZWQgYW4gaW5kZXhlZCBjb2x1bW4KKworLS0gVXBkYXRlOiBDaGFuZ2UgaW5kZXhlZCBrZXl3 b3JkcworVVBEQVRFIHQKK1NFVCBjb250ZW50ID0gcmVwZWF0KCdjcml0aWNhbCBrZXl3b3JkICcs IDEwMDApIHx8IHJlcGVhdCgnZGlmZmVyZW50IGZpbGxlciAnLCAxMDAwMCkKK1dIRVJFIGlkID0g MTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CistLSBFeHBlY3RlZDogMCBI T1QgKGluZGV4IGtleXMgY2hhbmdlZCkKKworLS0gVmVyaWZ5IHF1ZXJ5IGNvcnJlY3RuZXNzCitT RUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIHNlYXJjaF92ZWMgQEAgdG9fdHNxdWVyeSgnY3Jp dGljYWwnKTsKKy0tIEV4cGVjdGVkOiAxIHJvdworCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBURVNUOiBHSU4gd2l0aCBBcnJheSBvZiBMYXJnZSBTdHJpbmdzCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIHRhZ3MgVEVYVFtdKQorICAgIFdJVEgg KGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRF WCB0X2dpbiBPTiB0IFVTSU5HIGdpbih0YWdzKTsKKworLS0gSW5zZXJ0IHdpdGggbGFyZ2UgYXJy YXkgZWxlbWVudHMgKG1pZ2h0IGJlIFRPQVNUZWQpCitJTlNFUlQgSU5UTyB0IChpZCwgdGFncykg VkFMVUVTCisgICAgKDEsIEFSUkFZW3JlcGVhdCgndGFnMScsIDEwMDApLCByZXBlYXQoJ3RhZzIn LCAxMDAwKV0pOworCistLSBVcGRhdGU6IENoYW5nZSB0byBkaWZmZXJlbnQgbGFyZ2UgdmFsdWVz IC0gTk9UIEhPVAorVVBEQVRFIHQKK1NFVCB0YWdzID0gQVJSQVlbcmVwZWF0KCd0YWczJywgMTAw MCksIHJlcGVhdCgndGFnNCcsIDEwMDApXQorV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBj aGVja19ob3RfdXBkYXRlcygwKTsKKy0tIEV4cGVjdGVkOiAwIEhPVCAoa2V5cyBhY3R1YWxseSBj aGFuZ2VkKQorCistLSBVcGRhdGU6IEtlZXAgc2FtZSB0YWcgdmFsdWVzLCBqdXN0IHJlb3JkZXIg LSBTSE9VTEQgQkUgSE9UCistLSAoR0lOIGlzIG9yZGVyLWluc2Vuc2l0aXZlOiBib3RoIFt0YWcz LHRhZzRdIGFuZCBbdGFnNCx0YWczXQorLS0gZXh0cmFjdCB0byB0aGUgc2FtZSBzb3J0ZWQga2V5 IHNldCBbJ3RhZzMnLCd0YWc0J10pCitVUERBVEUgdAorU0VUIHRhZ3MgPSBBUlJBWVtyZXBlYXQo J3RhZzQnLCAxMDAwKSwgcmVwZWF0KCd0YWczJywgMTAwMCldCitXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworLS0gRXhwZWN0ZWQ6IDEgSE9UIChHSU4g a2V5cyBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsKQorCistLSBVcGRhdGU6IFJlbW92ZSBhbiBlbGVt ZW50IC0gTk9UIEhPVCAoa2V5cyBjaGFuZ2VkKQorVVBEQVRFIHQKK1NFVCB0YWdzID0gQVJSQVlb cmVwZWF0KCd0YWc0JywgMTAwMCldCitXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNr X2hvdF91cGRhdGVzKDEpOworLS0gRXhwZWN0ZWQ6IFN0aWxsIDEgSE9UIChub3QgdGhpcyBvbmUp CisKK0RST1AgVEFCTEUgdCBDQVNDQURFOworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJSSU4gSW5kZXgg d2l0aCBQYXJ0aWFsIFByZWRpY2F0ZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHQoCisgICAg aWQgSU5UIFBSSU1BUlkgS0VZLAorICAgIHZhbHVlIElOVCwKKyAgICBkZXNjcmlwdGlvbiBURVhU CispIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKKwor Q1JFQVRFIElOREVYIHRfYnJpbl9wYXJ0aWFsX2lkeCBPTiB0IFVTSU5HIGJyaW4odmFsdWUpIFdI RVJFIHZhbHVlID4gMTAwOworCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgNTAsICdiZWxvdyBy YW5nZScpOworCistLSBUZXN0IDE6IE91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgdCBTRVQgZGVz Y3JpcHRpb24gPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19o b3RfdXBkYXRlcygxKTsKKworLS0gVmFsaWRhdGU6IFByZWRpY2F0ZSBxdWVyeSByZXR1cm5zIDAg cm93cworU0VMRUNUIENPVU5UKCopIGFzIGNudCBGUk9NIHQgV0hFUkUgdmFsdWUgPiAxMDA7CisK Ky0tIFRlc3QgMjogVHJhbnNpdGlvbiBpbnRvIHByZWRpY2F0ZQorVVBEQVRFIHQgU0VUIHZhbHVl ID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMik7 CisKKy0tIFZhbGlkYXRlOiBQcmVkaWNhdGUgcXVlcnkgcmV0dXJucyAxIHJvdyB3aXRoIGNvcnJl Y3QgdmFsdWUKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQsIE1BWCh2YWx1ZSkgYXMgbWF4X3ZhbCBG Uk9NIHQgV0hFUkUgdmFsdWUgPiAxMDA7CisKKy0tIFRlc3QgMzogSW5zaWRlIHByZWRpY2F0ZSwg dmFsdWUgY2hhbmdlcworVVBEQVRFIHQgU0VUIHZhbHVlID0gMTYwLCBkZXNjcmlwdGlvbiA9ICd1 cGRhdGVkIGFnYWluJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRh dGVzKDMpOworCistLSBWYWxpZGF0ZTogVXBkYXRlZCB2YWx1ZSAoMTYwKSBpcyByZXR1cm5lZAor U0VMRUNUIENPVU5UKCopIGFzIGNudCwgTUFYKHZhbHVlKSBhcyBtYXhfdmFsIEZST00gdCBXSEVS RSB2YWx1ZSA+IDEwMDsKKworLS0gVGVzdCA0OiBUcmFuc2l0aW9uIG91dCBvZiBwcmVkaWNhdGUK K1VQREFURSB0IFNFVCB2YWx1ZSA9IDUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hl Y2tfaG90X3VwZGF0ZXMoNCk7CisKK1NFTEVDVCBDT1VOVCgqKSBhcyBjbnQgRlJPTSB0IFdIRVJF IHZhbHVlID4gMTAwOworCitTRUxFQ1QgaWQsIHZhbHVlLCBkZXNjcmlwdGlvbiBGUk9NIHQ7CisK K0RST1AgVEFCTEUgdCBDQVNDQURFOworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEhBU0ggSW5kZXggKFNp bXBsZSBDb2x1bW4pCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGNvZGUgVkFS Q0hBUigyMCksIGRlc2NyaXB0aW9uIFRFWFQpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfaGFzaF9pZHggT04gdCBV U0lORyBoYXNoKGNvZGUpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICdDT0RFMDAxJywgJ2lu aXRpYWwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QK K1VQREFURSB0IFNFVCBkZXNjcmlwdGlvbiA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1 bW4gLSBIQVNIIGluZGV4IHJlcXVpcmVzIHVwZGF0ZSwgTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNv ZGUgPSAnQ09ERTAwMicgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBk YXRlcygxKTsKKworLS0gVXBkYXRlIGJvdGggLSBOT1QgSE9UCitVUERBVEUgdCBTRVQgY29kZSA9 ICdDT0RFMDAzJywgZGVzY3JpcHRpb24gPSAnY2hhbmdlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNU ICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygxKTsKKworLS0gQmFjayB0byBvcmlnaW5hbCBjb2Rl IC0gTk9UIEhPVCAoZGlmZmVyZW50IGhhc2ggYnVja2V0IGxvY2F0aW9uKQorVVBEQVRFIHQgU0VU IGNvZGUgPSAnQ09ERTAwMScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3Rf dXBkYXRlcygxKTsKKworRFJPUCBUQUJMRSB0IENBU0NBREU7CisKKworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g SEFTSCBJbmRleCBvbiBFeHByZXNzaW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJ TlQsIGVtYWlsIFRFWFQsIGRhdGEgSlNPTkIpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfaGFzaF9sb3dlcl9lbWFp bF9pZHggT04gdCBVU0lORyBIQVNIKGxvd2VyKGVtYWlsKSk7CitJTlNFUlQgSU5UTyB0IFZBTFVF UyAoMSwgJ0FsaWNlQEV4YW1wbGUuY29tJywgJ3sic3RhdHVzIjogIm5ldyJ9Jyk7CisKKy0tIFVw ZGF0ZSBub24taW5kZXhlZCBmaWVsZCAtIHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCBkYXRh ID0gJ3sic3RhdHVzIjogImFjdGl2ZSJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRhdGUgZW1haWwgd2l0aCBjYXNlIGNoYW5nZSBv bmx5IChzYW1lIGxvd2VyY2FzZSkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgZW1haWwg PSAnYWxpY2VAZXhhbXBsZS5jb20nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tf aG90X3VwZGF0ZXMoMik7CisKKy0tIFVwZGF0ZSBlbWFpbCB0byBkaWZmZXJlbnQgbG93ZXJjYXNl IC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGVtYWlsID0gJ2JvYkBleGFtcGxlLmNvbScgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKworRFJPUCBUQUJM RSB0IENBU0NBREU7CisKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTXVsdGlwbGUgSEFTSCBJbmRleGVzCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CitDUkVBVEUgVEFCTEUgdChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIHN0YXR1 cyBWQVJDSEFSLCB2YWx1ZSBJTlQpCisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2Zm LCBmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIHRfaGFzaF9jYXRlZ29yeV9pZHggT04g dCBVU0lORyBoYXNoKGNhdGVnb3J5KTsKK0NSRUFURSBJTkRFWCB0X2hhc2hfc3RhdHVzX2lkeCBP TiB0IFVTSU5HIGhhc2goc3RhdHVzKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnZWxlY3Ry b25pY3MnLCAnYWN0aXZlJywgMTAwKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAt IHNob3VsZCBiZSBIT1QKK1VQREFURSB0IFNFVCB2YWx1ZSA9IDE1MCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRhdGUgb25lIGluZGV4 ZWQgY29sdW1uIC0gTk9UIEhPVAorVVBEQVRFIHQgU0VUIGNhdGVnb3J5ID0gJ2Jvb2tzJyBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworCistLSBVcGRh dGUgb3RoZXIgaW5kZXhlZCBjb2x1bW4gLSBOT1QgSE9UCitVUERBVEUgdCBTRVQgc3RhdHVzID0g J2luYWN0aXZlJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDEpOworCistLSBVcGRhdGUgYm90aCBpbmRleGVkIGNvbHVtbnMgLSBOT1QgSE9UCitVUERBVEUg dCBTRVQgY2F0ZWdvcnkgPSAndmlkZW9zJywgc3RhdHVzID0gJ3BlbmRpbmcnIFdIRVJFIGlkID0g MTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSk7CisKK0RST1AgVEFCTEUgdCBD QVNDQURFOworCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJSSU4gdnMgSEFTSCBDb21wYXJpc29uCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CitDUkVBVEUgVEFCTEUgdF9icmluKGlkIElOVCwgdmFsdWUgSU5ULCBkYXRhIFRFWFQp CisgICAgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOwor Q1JFQVRFIFRBQkxFIHRfaGFzaChpZCBJTlQsIHZhbHVlIElOVCwgZGF0YSBURVhUKQorICAgIFdJ VEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZhY3RvciA9IDcwKTsKKworQ1JFQVRF IElOREVYIHRfYnJpbl92YWx1ZV9pZHggT04gdF9icmluIFVTSU5HIGJyaW4odmFsdWUpOworQ1JF QVRFIElOREVYIHRfaGFzaF92YWx1ZV9pZHggT04gdF9oYXNoIFVTSU5HIGhhc2godmFsdWUpOwor CitJTlNFUlQgSU5UTyB0X2JyaW4gVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQg SU5UTyB0X2hhc2ggVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CisKKy0tIFNhbWUgdXBkYXRl IG9uIGJvdGggLSBkaWZmZXJlbnQgSE9UIGJlaGF2aW9yIGV4cGVjdGVkCistLSBCUklOOiBtaWdo dCBhbGxvdyBIT1QgKHJhbmdlIHN1bW1hcnkgdW5jaGFuZ2VkKQorLS0gSEFTSDogYmxvY2tzIEhP VCAoaGFzaCBidWNrZXQgY2hhbmdlZCkKK1VQREFURSB0X2JyaW4gU0VUIHZhbHVlID0gMTUwIFdI RVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMSwgJ3RfYnJpbicp OworLS0gRXhwZWN0ZWQ6IDEgSE9UIChCUklOIGFsbG93cyBpdCBmb3Igc2luZ2xlIHJvdykKKwor VVBEQVRFIHRfaGFzaCBTRVQgdmFsdWUgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJP TSBjaGVja19ob3RfdXBkYXRlcygwLCAndF9oYXNoJyk7CistLSBFeHBlY3RlZDogMCBIT1QgKEhB U0ggYmxvY2tzIGl0KQorCitEUk9QIFRBQkxFIHRfYnJpbiBDQVNDQURFOworRFJPUCBUQUJMRSB0 X2hhc2ggQ0FTQ0FERTsKKworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBIQVNIIEluZGV4IHdpdGggTlVMTCBW YWx1ZXMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KK0NSRUFURSBUQUJMRSB0KGlkIElOVCwgY2F0ZWdvcnkgVkFSQ0hB UiwgZGF0YSBURVhUKQorICAgIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZiwgZmlsbGZh Y3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCB0X2hhc2hfY2F0ZWdvcnlfaWR4IE9OIHQgVVNJTkcg aGFzaChjYXRlZ29yeSk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMSwgJ2VsZWN0cm9uaWNzJywg J2luaXRpYWwnKTsKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIHRvIE5VTEwgLSBOT1QgSE9U IChoYXNoIHZhbHVlIGNoYW5nZWQpCitVUERBVEUgdCBTRVQgY2F0ZWdvcnkgPSBOVUxMIFdIRVJF IGlkID0gMTsKK1NFTEVDVCAqIEZST00gY2hlY2tfaG90X3VwZGF0ZXMoMCk7CistLSBFeHBlY3Rl ZDogMCBIT1QKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGZyb20gTlVMTCB0byB2YWx1ZSAt IE5PVCBIT1QKK1VQREFURSB0IFNFVCBjYXRlZ29yeSA9ICdib29rcycgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKy0tIEV4cGVjdGVkOiAwIEhPVAor CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIHQg U0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBjaGVja19o b3RfdXBkYXRlcygxKTsKKy0tIEV4cGVjdGVkOiAxIEhPVAorCitEUk9QIFRBQkxFIHQgQ0FTQ0FE RTsKKworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBCUklOIG9uIEpTT05CIEZpZWxkCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitD UkVBVEUgVEFCTEUgdChpZCBJTlQsIG1ldHJpY3MgSlNPTkIpCisgICAgV0lUSCAoYXV0b3ZhY3V1 bV9lbmFibGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworLS0gQlJJTiBkb2Vzbid0IGRpcmVj dGx5IHN1cHBvcnQgSlNPTkIsIGJ1dCB3ZSBjYW4gdGVzdCBvbiBleHByZXNzaW9uCitDUkVBVEUg SU5ERVggdF9icmluX2NvdW50X2lkeCBPTiB0IFVTSU5HIGJyaW4oCisgICAgQ0FTVChtZXRyaWNz LT4+J2NvdW50JyBBUyBJTlRFR0VSKQorKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAneyJj b3VudCI6ICIxMDAiLCAidGltZXN0YW1wIjogIjIwMjQtMDEtMDEifScpOworCistLSBVcGRhdGUg bm9uLWluZGV4ZWQgSlNPTkIgZmllbGQgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQgbWV0 cmljcyA9ICd7ImNvdW50IjogIjEwMCIsICJ0aW1lc3RhbXAiOiAiMjAyNC0wMS0wMiJ9JyBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVzKDEpOworLS0gRXhwZWN0 ZWQ6IDEgSE9UCisKKy0tIFVwZGF0ZSBpbmRleGVkIGZpZWxkIC0gQlJJTiBhbGxvd3MgSE9UIGZv ciBzaW5nbGUgcm93CitVUERBVEUgdCBTRVQgbWV0cmljcyA9ICd7ImNvdW50IjogIjE1MCIsICJ0 aW1lc3RhbXAiOiAiMjAyNC0wMS0wMiJ9JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNo ZWNrX2hvdF91cGRhdGVzKDIpOworLS0gRXhwZWN0ZWQ6IDIgSE9UIChCUklOIHBlcm1pdHMgc2lu Z2xlLXJvdyB1cGRhdGVzKQorCitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBNaXhlZCBCUklOICsgSEFTSCBvbiBTYW1lIFRhYmxlCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUg VEFCTEUgdChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIsIHRpbWVzdGFtcCBUSU1FU1RBTVAsIHBy aWNlIE5VTUVSSUMsIGRhdGEgVEVYVCkKKyAgICBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBv ZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVggdF9icmluX3RpbWVzdGFtcF9pZHgg T04gdCBVU0lORyBicmluKHRpbWVzdGFtcCk7CitDUkVBVEUgSU5ERVggdF9oYXNoX2NhdGVnb3J5 X2lkeCBPTiB0IFVTSU5HIGhhc2goY2F0ZWdvcnkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEs ICdib29rcycsICcyMDI0LTAxLTAxIDEwOjAwOjAwJywgMjkuOTksICdpbml0aWFsJyk7CisKKy0t IFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91 cGRhdGVzKDEpOworLS0gRXhwZWN0ZWQ6IDEgSE9UCisKKy0tIFVwZGF0ZSBCUklOIGluZGV4ZWQg Y29sdW1uIC0gYWxsb3dzIEhPVAorVVBEQVRFIHQgU0VUIHRpbWVzdGFtcCA9ICcyMDI0LTAxLTAy IDEwOjAwOjAwJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGNoZWNrX2hvdF91cGRhdGVz KDIpOworLS0gRXhwZWN0ZWQ6IDIgSE9UCisKKy0tIFVwZGF0ZSBIQVNIIGluZGV4ZWQgY29sdW1u IC0gYmxvY2tzIEhPVAorVVBEQVRFIHQgU0VUIGNhdGVnb3J5ID0gJ3ZpZGVvcycgV0hFUkUgaWQg PSAxOworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygyKTsKKy0tIEV4cGVjdGVkOiAy IEhPVCAoSEFTSCBibG9ja3MgaXQpCisKKy0tIFVwZGF0ZSBwcmljZSAobm9uLWluZGV4ZWQpIC0g c2hvdWxkIGJlIEhPVAorVVBEQVRFIHQgU0VUIHByaWNlID0gMzkuOTkgV0hFUkUgaWQgPSAxOwor U0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygzKTsKKy0tIEV4cGVjdGVkOiAzIEhPVAor CitEUk9QIFRBQkxFIHQgQ0FTQ0FERTsKKworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBJbmRleCBib3RoIG9u IGEgZmllbGQgaW4gYSBKU09OQiBkb2N1bWVudCwgYW5kIHRoZSBkb2N1bWVudAorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorQ1JFQVRFIFRBQkxFIHQoaWQgSU5UIFBSSU1BUlkgS0VZLCBkb2NzIEpTT05CKSBXSVRIIChh dXRvdmFjdXVtX2VuYWJsZWQgPSBvZmYsIGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVgg dF9kb2NzX2lkeCBPTiB0KChkb2NzLT4nbmFtZScpKTsKK0NSRUFURSBJTkRFWCB0X2RvY3NfY29s X2lkeCBPTiB0KGRvY3MpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDEsICd7Im5hbWUiOiAiam9o biIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CisKKy0tIFVwZGF0ZSBpbXBhY3RzIGluZGV4IG9u IHdob2xlIGRvY21lbnQgYXR0cmlidXRlLCBjYW4ndCBnbyBIT1QKK1VQREFURSB0IFNFVCBkb2Nz PSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9JyBXSEVSRSBpZD0x OworU0VMRUNUICogRlJPTSBjaGVja19ob3RfdXBkYXRlcygwKTsKKworRFJPUCBUQUJMRSB0IENB U0NBREU7CisKKworLS0gQ2xlYW51cAorRFJPUCBGVU5DVElPTiBjaGVja19ob3RfdXBkYXRlcyhp bnQsIHRleHQsIHRleHQpOworRFJPUCBDT0xMQVRJT04gY2FzZV9pbnNlbnNpdGl2ZTsKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMTRkZWMyZDQ5YzEuLmMzOGU3YjFlOWFkIDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDAwLDYgKzQwMCw3IEBAIENhY2hlZEZ1bmN0aW9uQ29t cGlsZUNhbGxiYWNrCiBDYWNoZWRGdW5jdGlvbkRlbGV0ZUNhbGxiYWNrCiBDYWNoZWRGdW5jdGlv bkhhc2hFbnRyeQogQ2FjaGVkRnVuY3Rpb25IYXNoS2V5CitDYWNoZWRJbmRleERhdHVtCiBDYWNo ZWRQbGFuCiBDYWNoZWRQbGFuU291cmNlCiBDYWxsQ29udGV4dAotLSAKMi41MS4yCgo= --69665c92_23ba1acf_1975--