From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from conssluserg-01.nifty.com (conssluserg-01.nifty.com [210.131.2.80]) by sourceware.org (Postfix) with ESMTPS id E84843858D3C for ; Tue, 30 Nov 2021 21:17:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E84843858D3C Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=nifty.ne.jp Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=nifty.ne.jp Received: from Express5800-S70 (z221123.dynamic.ppp.asahi-net.or.jp [110.4.221.123]) (authenticated) by conssluserg-01.nifty.com with ESMTP id 1AULHKfI007464 for ; Wed, 1 Dec 2021 06:17:20 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-01.nifty.com 1AULHKfI007464 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1638307040; bh=reYQhojpLZeh4AL7RNX3nGCwwYWPpxtuE2iddsi/GbA=; h=Date:From:To:Subject:In-Reply-To:References:From; b=QE7/PCIokp3x87bX8UTkzGZxBuxHBOSL5UqoL5/sasDT93jkp+UABIesX5OpcC/nD KKPdAy9/meA1ye9rH+QZ/FHBwHy8Ap3YBZqyKtpFod/nQxELmnuTgaGHhaDZvuhos+ kbAeKAOMW6U291nVsqK1PrIXfTQ1CvRMN7NzwZCd84idWXflcyVz2Nc6uvaTXU/Gxm ClfEu+g7m6QXq1163yd9kJWIFNuJ36nu5cfdN5o/0G7vYfmF6eicNmnrfn/2xJpMgC 8QEJze4x9ugEHBOk9TpnD3ikQCvOybmZLJ+pUVnlRybBfoaf/DOBeICCKdENdoI4rF Nm6VxxNyuBWMQ== X-Nifty-SrcIP: [110.4.221.123] Date: Wed, 1 Dec 2021 06:17:27 +0900 From: Takashi Yano To: newlib@sourceware.org Subject: Re: gcc 11.1.0: printf("%.43f\n", 0x1.52f8a8e32e982p-140): printed value is incorrectly rounded Message-Id: <20211201061727.5842ffeba05694aa077a4fe0@nifty.ne.jp> In-Reply-To: <20211201053801.8da6ce82c350129c6e351669@nifty.ne.jp> References: <20211128164311.c405014bdf153aec8de46c6e@nifty.ne.jp> <20211128213839.90567fce0606267eb0362cc3@nifty.ne.jp> <20211128221646.4c6f751029f31af953565702@nifty.ne.jp> <20211129195646.c4f66449ff164a0c6bad4d2e@nifty.ne.jp> <20211129232439.ea273a79602b671f8b76383c@nifty.ne.jp> <20211130195156.4d8c0cec184743241c3c3146@nifty.ne.jp> <20211201053801.8da6ce82c350129c6e351669@nifty.ne.jp> X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__1_Dec_2021_06_17_27_+0900_1B+.8lZOz8IeHJ4x" X-Spam-Status: No, score=-5.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Nov 2021 21:18:00 -0000 This is a multi-part message in MIME format. --Multipart=_Wed__1_Dec_2021_06_17_27_+0900_1B+.8lZOz8IeHJ4x Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 1 Dec 2021 05:38:01 +0900 Takashi Yano wrote: > On Tue, 30 Nov 2021 16:09:26 +0100 > Corinna Vinschen wrote: > > On Nov 30 19:51, Takashi Yano wrote: > > > On Mon, 29 Nov 2021 16:55:32 +0100 > > > Corinna Vinschen wrote: > > > > On Nov 29 23:24, Takashi Yano wrote: > > > > > [...] > > > > > > > > > I have tried to import gdtoa into newlib from OpenBSD. > > > > > > > > > [...] > > > > [...struct __reent stuff...] > > > Thanks for checking and advice. I have done these. > > > > > > > As for the allocations, how big are those? If they are comparable with > > > > the allocation we now perform in _ldtoa_r, it might not be worth to keep > > > > both functions. Some users of smaller targets might also complain that > > > > > > I saw max 16404 byte malloc(). > > > > > > > using printf now always pulls in both variants of ldtoa, thus raising > > > > code size unnecessarily. It might be better to keep the calls separate > > > > and only use one or the other, per target or per code size constraints, > > > > perhaps as a configure option. > > > > > > I have added --enable-newlib-use-gdtoa option, which defaults > > > to 'yes', into newlib/configure.ac. Is this the right thing? > > > > That patch looks good to me, at least as far as Cygwin is concerned. > > Thanks for reviewing. > > > This isn't essential, but it might make sense to rename __ldtoa to > > _ldtoa_r to avoid an extra function call, which could be time consuming > > and add stack pressure. I. e., in gdtoa-ldtoa.c > > > > #ifdef _USE_GDTOA > > // all code in gdtoa-ldtoa.c > > #endif > > > > and in ldtoa.c: > > > > #ifndef _USE_GDTOA > > // all code in ldtoa.c > > #endif > > > > AFAICS, __ldtoa could easily be changed to take the long double argument > > by value because it's used in only two places, one of which just checks > > the value anyway. But, as I said, not essential. We can keep in mind > > for the time being. > > Done. Removed gdtoa-dtoa.c, which almost duplicates dtoa.c. > > Could some people with other targets than Cygwin give this patch a try? > > RTEMS, anybody? > > I would appreciate it. -- Takashi Yano --Multipart=_Wed__1_Dec_2021_06_17_27_+0900_1B+.8lZOz8IeHJ4x Content-Type: application/octet-stream; name="v4-0001-ldtoa-Import-gdtoa-from-OpenBSD.patch" Content-Disposition: attachment; filename="v4-0001-ldtoa-Import-gdtoa-from-OpenBSD.patch" Content-Transfer-Encoding: base64 RnJvbSBiZDRhMjA5ZDM1YWE1ZTNhN2RiNjUxYThmZDNhZDI3NjdmM2FkODkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8gPHRha2FzaGkueWFub0BuaWZ0eS5uZS5q cD4KRGF0ZTogV2VkLCAxIERlYyAyMDIxIDA2OjExOjMyICswOTAwClN1YmplY3Q6IFtQQVRDSCB2 NF0gbGR0b2E6IEltcG9ydCBnZHRvYSBmcm9tIE9wZW5CU0QuCgotIFRoaXMgcGF0Y2ggdXNlcyBn ZHRvYSBpbXBvcnRlZCBmcm9tIE9wZW5CU0QgaWYgbmV3bGliIGNvbmZpZ3VyZQogIG9wdGlvbiAi LS1lbmFibGUtbmV3bGliLXVzZS1nZHRvYT1ubyIgaXMgTk9UIHNwZWNpZmllZC4gIGdkdG9hCiAg cHJvdmlkZXMgbW9yZSBhY2N1cmF0ZSBvdXRwdXQgYW5kIGZhc3RlciBjb252ZXJzaW9uIHRoYW4g bGVnYWN5CiAgbGR0b2EsIHdoaWxlIGl0IHJlcXVpcmVzIG1vcmUgaGVhcCBtZW1vcnkuCi0tLQog bmV3bGliL1JFQURNRSAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArCiBuZXdsaWIvY29uZmln dXJlICAgICAgICAgICAgICAgICAgIHwgMzE3ICsrKysrKy0tLS0tCiBuZXdsaWIvY29uZmlndXJl LmFjICAgICAgICAgICAgICAgIHwgIDE1ICsKIG5ld2xpYi9saWJjL2luY2x1ZGUvbWFjaGluZS9p ZWVlLmggfCAxMjcgKysrKysKIG5ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oICAgfCAg IDYgKwogbmV3bGliL2xpYmMvc3RkbGliL01ha2VmaWxlLmFtICAgICB8ICAxMCArLQogbmV3bGli L2xpYmMvc3RkbGliL01ha2VmaWxlLmluICAgICB8ICA1MSArLQogbmV3bGliL2xpYmMvc3RkbGli L2dkdG9hLWRtaXNjLmMgICB8IDIzMCArKysrKysrKwogbmV3bGliL2xpYmMvc3RkbGliL2dkdG9h LWdkdG9hLmMgICB8IDgzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbmV3bGliL2xp YmMvc3RkbGliL2dkdG9hLWdtaXNjLmMgICB8ICA5MSArKysrCiBuZXdsaWIvbGliYy9zdGRsaWIv Z2R0b2EtbGR0b2EuYyAgIHwgMTU5ICsrKysrKwogbmV3bGliL2xpYmMvc3RkbGliL2dkdG9hLmgg ICAgICAgICB8IDEzMCArKysrLQogbmV3bGliL2xpYmMvc3RkbGliL2dkdG9haW1wLmggICAgICB8 IDIwNiArKysrKysrCiBuZXdsaWIvbGliYy9zdGRsaWIvbGR0b2EuYyAgICAgICAgIHwgICA2ICsK IG5ld2xpYi9saWJjL3N0ZGxpYi9tcHJlYy5oICAgICAgICAgfCAgIDIgKy0KIG5ld2xpYi9uZXds aWIuaGluICAgICAgICAgICAgICAgICAgfCAgIDMgKwogMTYgZmlsZXMgY2hhbmdlZCwgMjAzNCBp bnNlcnRpb25zKCspLCAxNjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGli L2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9s aWJjL3N0ZGxpYi9nZHRvYS1kbWlzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMv c3RkbGliL2dkdG9hLWdkdG9hLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGliYy9zdGRs aWIvZ2R0b2EtZ21pc2MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJjL3N0ZGxpYi9n ZHRvYS1sZHRvYS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvc3RkbGliL2dkdG9h aW1wLmgKCmRpZmYgLS1naXQgYS9uZXdsaWIvUkVBRE1FIGIvbmV3bGliL1JFQURNRQppbmRleCAw NjRjNTc4NGMuLmM4MmJmOGI4YyAxMDA2NDQKLS0tIGEvbmV3bGliL1JFQURNRQorKysgYi9uZXds aWIvUkVBRE1FCkBAIC0zNTIsNiArMzUyLDE2IEBAIE9uZSBmZWF0dXJlIGNhbiBiZSBlbmFibGVk IGJ5IHNwZWNpZnlpbmcgYC0tZW5hYmxlLUZFQVRVUkU9eWVzJyBvcgogICAgICA2NC1iaXQgaW50 ZWdlciBvbiBtb3N0IHN5c3RlbXMuCiAgICAgIERpc2FibGVkIGJ5IGRlZmF1bHQuCiAKK2AtLWVu YWJsZS1uZXdsaWItdXNlLWdkdG9hJworICAgICBVc2UgZ2R0b2EgcmF0aGVyIHRoYW4gbGVnYWN5 IGxkdG9hLiAgZ2R0b2EgcHJpdmlkZXMgbW9yZSBhY2N1cmF0ZQorICAgICBvdXRwdXQgYW5kIGZh c3RlciBjb252ZXJzaW9uIHRoYW4gbGVnYWN5IGxkdG9hLCB3aGlsZSBpdCByZXF1aXJlcworICAg ICBtb3JlIGhlYXAgbWVtb3J5LiAgZ2R0b2Egc29tZXRpbWVzIHJlcXVpcmVzIDE2S0IgaGVhcCBt ZW1vcnksIHNvCisgICAgIGlmIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIGVub3VnaCBoZWFw IG1lbW9yeSwgY29uc2lkZXIgZGlzYWJsaW5nCisgICAgIHRoaXMgb3B0aW9uLiBMZWdhY3kgbGR0 b2EgYWxzbyB1c2UgaGVhcCwgaG93ZXZlciwgb25seSAxS0IgbWVtb3J5CisgICAgIGlzIG1hbGxv YydlZC4gIEluIGFkZGl0aW9uLCBpZiBtYWxsb2MgZmFpbHMsIGl0IHN0aWxsIHdvcmtzLCB3aXRo CisgICAgIGxlc3MgY29udmVyc2lvbiBhY2N1cmFjeS4KKyAgICAgRW5hYmxlZCBieSBkZWZhdWx0 LgorCiBgLS1lbmFibGUtbXVsdGlsaWInCiAgICAgIEJ1aWxkIG1hbnkgbGlicmFyeSB2ZXJzaW9u cy4KICAgICAgRW5hYmxlZCBieSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvbmV3bGliL2NvbmZpZ3Vy ZSBiL25ld2xpYi9jb25maWd1cmUKaW5kZXggY2UyZmI1NWQyLi43YWI2ZTM0MjMgMTAwNzU1Ci0t LSBhL25ld2xpYi9jb25maWd1cmUKKysrIGIvbmV3bGliL2NvbmZpZ3VyZQpAQCAtMSwxMSArMSw5 IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJp YWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYg Mi42OCBmb3IgbmV3bGliIDQuMS4wLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkg Zm9yIG5ld2xpYiA0LjEuMC4KICMKICMKLSMgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0 LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotIyAyMDAyLCAyMDAzLCAyMDA0 LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUKLSMgRm91 bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTItMTk5NiwgMTk5OC0yMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIwogIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQg aXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgpAQCAtMTM0LDYg KzEzMiwzMSBAQCBleHBvcnQgTEFOR1VBR0UKICMgQ0RQQVRILgogKHVuc2V0IENEUEFUSCkgPi9k ZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAogCisjIFVzZSBhIHByb3BlciBpbnRlcm5hbCBl bnZpcm9ubWVudCB2YXJpYWJsZSB0byBlbnN1cmUgd2UgZG9uJ3QgZmFsbAorICAjIGludG8gYW4g aW5maW5pdGUgbG9vcCwgY29udGludW91c2x5IHJlLWV4ZWN1dGluZyBvdXJzZWx2ZXMuCisgIGlm IHRlc3QgeCIke19hc19jYW5fcmVleGVjfSIgIT0geG5vICYmIHRlc3QgIngkQ09ORklHX1NIRUxM IiAhPSB4OyB0aGVuCisgICAgX2FzX2Nhbl9yZWV4ZWM9bm87IGV4cG9ydCBfYXNfY2FuX3JlZXhl YzsKKyAgICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZl IHRvIHByb3ZpZGUgYQorIyBuZXV0cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQg dW5zZXQ7IGFuZCB0aGlzIGFsc28KKyMgd29ya3MgYXJvdW5kIHNoZWxscyB0aGF0IGNhbm5vdCB1 bnNldCBub25leGlzdGVudCB2YXJpYWJsZXMuCisjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUg cmVwbGFjZW1lbnQgc2hlbGwuCitCQVNIX0VOVj0vZGV2L251bGwKK0VOVj0vZGV2L251bGwKKyh1 bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorY2Fz ZSAkLSBpbiAjICgoKCgKKyAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CisgICp2KiAp IGFzX29wdHM9LXYgOzsKKyAgKngqICkgYXNfb3B0cz0teCA7OworICAqICkgYXNfb3B0cz0gOzsK K2VzYWMKK2V4ZWMgJENPTkZJR19TSEVMTCAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9 CisjIEFkbWl0dGVkbHksIHRoaXMgaXMgcXVpdGUgcGFyYW5vaWQsIHNpbmNlIGFsbCB0aGUga25v d24gc2hlbGxzIGJhaWwKKyMgb3V0IGFmdGVyIGEgZmFpbGVkIGBleGVjJy4KKyRhc19lY2hvICIk MDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMIiA+JjIKK2FzX2ZuX2V4 aXQgMjU1CisgIGZpCisgICMgV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIHByb3BhZ2F0ZSB0byBvdGhl ciBzdWJwcm9jZXNzZXMuCisgICAgICAgICAgeyBfYXNfY2FuX3JlZXhlYz07IHVuc2V0IF9hc19j YW5fcmVleGVjO30KIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiA9IHg7IHRoZW4KICAgYXNfYm91 cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVt dWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgIGVtdWxhdGUgc2gKQEAgLTE2Nyw3 ICsxOTAsOCBAQCBpZiAoIHNldCB4OyBhc19mbl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwi XCQxXCIgKTsgdGhlbiA6CiBlbHNlCiAgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25hbCBwYXJh bWV0ZXJzIHdlcmUgbm90IHNhdmVkLgogZmkKLXRlc3QgeFwkZXhpdGNvZGUgPSB4MCB8fCBleGl0 IDEiCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxCit0ZXN0IC14IC8gfHwgZXhpdCAx IgogICBhc19zdWdnZXN0ZWQ9IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dl c3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJ TkVOTwogICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzth c19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCiAgIGV2YWwg J3Rlc3QgXCJ4XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wk YXNfcnVuJ1wiICYmCkBAIC0yMjAsMjEgKzI0NCwyNSBAQCBJRlM9JGFzX3NhdmVfSUZTCiAKIAog ICAgICAgaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9IHg7IHRoZW4gOgotICAjIFdlIGNhbm5v dCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQotCSMg bmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBh bHNvCi0JIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50 IHZhcmlhYmxlcy4KLQkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hl bGwuCi0JQkFTSF9FTlY9L2Rldi9udWxsCi0JRU5WPS9kZXYvbnVsbAotCSh1bnNldCBCQVNIX0VO VikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgotCWV4cG9ydCBDT05GSUdf U0hFTEwKLQljYXNlICQtIGluICMgKCgoKAotCSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4 IDs7Ci0JICAqdiogKSBhc19vcHRzPS12IDs7Ci0JICAqeCogKSBhc19vcHRzPS14IDs7Ci0JICAq ICkgYXNfb3B0cz0gOzsKLQllc2FjCi0JZXhlYyAiJENPTkZJR19TSEVMTCIgJGFzX29wdHMgIiRh c19teXNlbGYiICR7MSsiJEAifQorICBleHBvcnQgQ09ORklHX1NIRUxMCisgICAgICAgICAgICAg IyBXZSBjYW5ub3QgeWV0IGFzc3VtZSBhIGRlY2VudCBzaGVsbCwgc28gd2UgaGF2ZSB0byBwcm92 aWRlIGEKKyMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBh bmQgdGhpcyBhbHNvCisjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9u ZXhpc3RlbnQgdmFyaWFibGVzLgorIyBQcmVzZXJ2ZSAtdiBhbmQgLXggdG8gdGhlIHJlcGxhY2Vt ZW50IHNoZWxsLgorQkFTSF9FTlY9L2Rldi9udWxsCitFTlY9L2Rldi9udWxsCisodW5zZXQgQkFT SF9FTlYpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBCQVNIX0VOViBFTlYKK2Nhc2UgJC0gaW4g IyAoKCgoCisgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OworICAqdiogKSBhc19vcHRz PS12IDs7CisgICp4KiApIGFzX29wdHM9LXggOzsKKyAgKiApIGFzX29wdHM9IDs7Citlc2FjCitl eGVjICRDT05GSUdfU0hFTEwgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQorIyBBZG1p dHRlZGx5LCB0aGlzIGlzIHF1aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxs cyBiYWlsCisjIG91dCBhZnRlciBhIGZhaWxlZCBgZXhlYycuCiskYXNfZWNobyAiJDA6IGNvdWxk IG5vdCByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCIgPiYyCitleGl0IDI1NQogZmkKIAog ICAgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKQEAgLTMzNiw2ICsz NjQsMTQgQEAgJGFzX2VjaG8gWCIkYXNfZGlyIiB8CiAKIAogfSAjIGFzX2ZuX21rZGlyX3AKKwor IyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU ZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCithc19mbl9leGVjdXRh YmxlX3AgKCkKK3sKKyAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorfSAjIGFzX2ZuX2V4 ZWN1dGFibGVfcAogIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCiAjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmlu aXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQpAQCAtNDU3LDYgKzQ5MywxMCBAQCBhc19jcl9h bG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKICAgY2htb2QgK3ggIiRhc19tZS5saW5l bm8iIHx8CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNf bWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjsgYXNfZm5fZXhpdCAxOyB9 CiAKKyAgIyBJZiB3ZSBoYWQgdG8gcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwsIHdlJ3Jl IGVuc3VyZWQgdG8gaGF2ZQorICAjIGFscmVhZHkgZG9uZSB0aGF0LCBzbyBlbnN1cmUgd2UgZG9u J3QgdHJ5IHRvIGRvIHNvIGFnYWluIGFuZCBmYWxsCisgICMgaW4gYW4gaW5maW5pdGUgbG9vcC4g IFRoaXMgaGFzIGFscmVhZHkgaGFwcGVuZWQgaW4gcHJhY3RpY2UuCisgIF9hc19jYW5fcmVleGVj PW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWMKICAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBj aGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMKICAgIyAodGhlIGRpcm5h bWUgb2YgJFswXSBpcyBub3QgdGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCiAgICMg b3JpZ2luYWwgYW5kIHNvIG9uLiAgQXV0b2NvbmYgaXMgZXNwZWNpYWxseSBzZW5zaXRpdmUgdG8g dGhpcykuCkBAIC00OTEsMTYgKzUzMSwxNiBAQCBpZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rl di9udWxsOyB0aGVuCiAgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKICAgICAj IDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWls LgogICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVz IGEgd3JhcHBlciBleGVjdXRhYmxlLgotICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBk ZWZhdWx0IHRvIGBjcCAtcCcuCisgICAgIyBJbiBib3RoIGNhc2VzLCB3ZSBoYXZlIHRvIGRlZmF1 bHQgdG8gYGNwIC1wUicuCiAgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYv bnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAotICAgICAgYXNfbG5fcz0nY3AgLXAnCisg ICAgICBhc19sbl9zPSdjcCAtcFInCiAgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rl di9udWxsOyB0aGVuCiAgICAgYXNfbG5fcz1sbgogICBlbHNlCi0gICAgYXNfbG5fcz0nY3AgLXAn CisgICAgYXNfbG5fcz0nY3AgLXBSJwogICBmaQogZWxzZQotICBhc19sbl9zPSdjcCAtcCcKKyAg YXNfbG5fcz0nY3AgLXBSJwogZmkKIHJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIv Y29uZiQkLmZpbGUgY29uZiQkLmZpbGUKIHJtZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKQEAg LTUxMiwyOCArNTUyLDggQEAgZWxzZQogICBhc19ta2Rpcl9wPWZhbHNlCiBmaQogCi1pZiB0ZXN0 IC14IC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIGFzX3Rlc3RfeD0ndGVzdCAteCcKLWVsc2UK LSAgaWYgbHMgLWRMIC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgYXNfbHNfTF9vcHRpb249 TAotICBlbHNlCi0gICAgYXNfbHNfTF9vcHRpb249Ci0gIGZpCi0gIGFzX3Rlc3RfeD0nCi0gICAg ZXZhbCBzaCAtYyAnXCcnCi0gICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4KLQl0ZXN0IC1kICIk MS8uIjsKLSAgICAgIGVsc2UKLQljYXNlICQxIGluICMoCi0JLSopc2V0ICIuLyQxIjs7Ci0JZXNh YzsKLQljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEiIDI+L2Rldi9udWxsYCBpbiAj KCgKLQk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2FjO2ZpCi0gICAgJ1wnJyBzaAotICAnCi1maQot YXNfZXhlY3V0YWJsZV9wPSRhc190ZXN0X3gKK2FzX3Rlc3RfeD0ndGVzdCAteCcKK2FzX2V4ZWN1 dGFibGVfcD1hc19mbl9leGVjdXRhYmxlX3AKIAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBz dHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgogYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFz X2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKQEAg LTc2Miw2ICs3ODIsNyBAQCBpbmZvZGlyCiBkb2NkaXIKIG9sZGluY2x1ZGVkaXIKIGluY2x1ZGVk aXIKK3J1bnN0YXRlZGlyCiBsb2NhbHN0YXRlZGlyCiBzaGFyZWRzdGF0ZWRpcgogc3lzY29uZmRp cgpAQCAtODA4LDYgKzgyOSw3IEBAIGVuYWJsZV9saXRlX2V4aXQKIGVuYWJsZV9uZXdsaWJfbmFu b19mb3JtYXR0ZWRfaW8KIGVuYWJsZV9uZXdsaWJfcmV0YXJnZXRhYmxlX2xvY2tpbmcKIGVuYWJs ZV9uZXdsaWJfbG9uZ190aW1lX3QKK2VuYWJsZV9uZXdsaWJfdXNlX2dkdG9hCiBlbmFibGVfbXVs dGlsaWIKIGVuYWJsZV90YXJnZXRfb3B0c3BhY2UKIGVuYWJsZV9tYWxsb2NfZGVidWdnaW5nCkBA IC04NzcsNiArODk5LDcgQEAgZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCiBzeXNjb25mZGlyPSck e3ByZWZpeH0vZXRjJwogc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCiBsb2NhbHN0YXRl ZGlyPScke3ByZWZpeH0vdmFyJworcnVuc3RhdGVkaXI9JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJwog aW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCiBvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1 ZGUnCiBkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCkBAIC0x MTI5LDYgKzExNTIsMTUgQEAgZG8KICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwg LS1zaWxlIHwgLS1zaWwpCiAgICAgc2lsZW50PXllcyA7OwogCisgIC1ydW5zdGF0ZWRpciB8IC0t cnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGkgfCAtLXJ1bnN0YXRlZCBcCisgIHwgLS1ydW5zdGF0 ZSB8IC0tcnVuc3RhdCB8IC0tcnVuc3RhIHwgLS1ydW5zdCB8IC0tcnVucyBcCisgIHwgLS1ydW4g fCAtLXJ1IHwgLS1yKQorICAgIGFjX3ByZXY9cnVuc3RhdGVkaXIgOzsKKyAgLXJ1bnN0YXRlZGly PSogfCAtLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGk9KiB8IC0tcnVuc3RhdGVkPSogXAor ICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8 IC0tcnVucz0qIFwKKyAgfCAtLXJ1bj0qIHwgLS1ydT0qIHwgLS1yPSopCisgICAgcnVuc3RhdGVk aXI9JGFjX29wdGFyZyA7OworCiAgIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAt LXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQogICAgIGFjX3ByZXY9c2JpbmRpciA7Owog ICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1z YmluPSogXApAQCAtMTI2Niw3ICsxMjk4LDcgQEAgZmkKIGZvciBhY192YXIgaW4JZXhlY19wcmVm aXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAogCQlkYXRh ZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwK IAkJb2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNk aXIgXAotCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcgorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRp ciBydW5zdGF0ZWRpcgogZG8KICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCiAgICMgUmVtb3ZlIHRy YWlsaW5nIHNsYXNoZXMuCkBAIC0xMjk0LDggKzEzMjYsNiBAQCB0YXJnZXQ9JHRhcmdldF9hbGlh cwogaWYgdGVzdCAieCRob3N0X2FsaWFzIiAhPSB4OyB0aGVuCiAgIGlmIHRlc3QgIngkYnVpbGRf YWxpYXMiID0geDsgdGhlbgogICAgIGNyb3NzX2NvbXBpbGluZz1tYXliZQotICAgICRhc19lY2hv ICIkYXNfbWU6IFdBUk5JTkc6IGlmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUs IGRvbid0IHVzZSAtLWhvc3QuCi0gICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0 aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQiID4mMgogICBlbGlmIHRlc3QgIngk YnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCiAgICAgY3Jvc3NfY29tcGlsaW5n PXllcwogICBmaQpAQCAtMTQyMSw2ICsxNDUxLDcgQEAgRmluZSB0dW5pbmcgb2YgdGhlIGluc3Rh bGxhdGlvbiBkaXJlY3RvcmllczoKICAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5 IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCiAgIC0tc2hhcmVkc3RhdGVkaXI9RElS ICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21d CiAgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0 YSBbUFJFRklYL3Zhcl0KKyAgLS1ydW5zdGF0ZWRpcj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXIt cHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1bl0KICAgLS1saWJkaXI9RElSICAgICAgICAg ICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KICAgLS1pbmNsdWRlZGlyPURJ UiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQogICAtLW9sZGluY2x1ZGVk aXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQpAQCAt MTQ4Myw2ICsxNTE0LDcgQEAgT3B0aW9uYWwgRmVhdHVyZXM6CiAgIC0tZW5hYmxlLW5ld2xpYi1u YW5vLWZvcm1hdHRlZC1pbyAgICBVc2UgbmFubyB2ZXJzaW9uIGZvcm1hdHRlZCBJTwogICAtLWVu YWJsZS1uZXdsaWItcmV0YXJnZXRhYmxlLWxvY2tpbmcgICAgQWxsb3cgbG9ja2luZyByb3V0aW5l cyB0byBiZSByZXRhcmdldGVkIGF0IGxpbmsgdGltZQogICAtLWVuYWJsZS1uZXdsaWItbG9uZy10 aW1lX3QgICBkZWZpbmUgdGltZV90IHRvIGxvbmcKKyAgLS1lbmFibGUtbmV3bGliLXVzZS1nZHRv YSAgIFVzZSBnZHRvYSByYXRoZXIgdGhhbiBsZWdhY3kgbGR0b2EKICAgLS1lbmFibGUtbXVsdGls aWIgICAgICAgICBidWlsZCBtYW55IGxpYnJhcnkgdmVyc2lvbnMgKGRlZmF1bHQpCiAgIC0tZW5h YmxlLXRhcmdldC1vcHRzcGFjZSAgb3B0aW1pemUgZm9yIHNwYWNlCiAgIC0tZW5hYmxlLW1hbGxv Yy1kZWJ1Z2dpbmcgaW5kaWNhdGUgbWFsbG9jIGRlYnVnZ2luZyByZXF1ZXN0ZWQKQEAgLTE1ODgs OSArMTYyMCw5IEBAIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwog aWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCiBuZXdsaWIgY29uZmln dXJlIDQuMS4wCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgKK2dlbmVyYXRlZCBieSBH TlUgQXV0b2NvbmYgMi42OQogCi1Db3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbgogZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwg ZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgogX0FDRU9GCkBAIC0xNjY2LDcgKzE2OTgsNyBAQCAk YXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKIAkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgog ICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQgJiYgewogCSB0ZXN0ICIkY3Jv c3NfY29tcGlsaW5nIiA9IHllcyB8fAotCSAkYXNfdGVzdF94IGNvbmZ0ZXN0JGFjX2V4ZWV4dAor CSB0ZXN0IC14IGNvbmZ0ZXN0JGFjX2V4ZWV4dAogICAgICAgIH07IHRoZW4gOgogICBhY19yZXR2 YWw9MAogZWxzZQpAQCAtMTg2Niw3ICsxODk4LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBt ZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0 byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKIEl0IHdhcyBj cmVhdGVkIGJ5IG5ld2xpYiAkYXNfbWUgNC4xLjAsIHdoaWNoIHdhcwotZ2VuZXJhdGVkIGJ5IEdO VSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCitnZW5lcmF0ZWQg YnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAk ICQwICRACiAKQEAgLTI1MzIsNiArMjU2NCwxOSBAQCBlbHNlCiAgIG5ld2xpYl9sb25nX3RpbWVf dD1ubwogZmkKIAorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5ld2xpYi11c2UtZ2R0b2Egd2Fz IGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfbmV3bGliX3VzZV9nZHRvYStzZXR9IiA9IHNldDsg dGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX25ld2xpYl91c2VfZ2R0b2E7IGlmIHRlc3QgIiR7 bmV3bGliX3VzZV9nZHRvYStzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgY2FzZSAiJHtlbmFibGV2YWx9 IiBpbgorICAgIHllcykgbmV3bGliX3VzZV9nZHRvYT15ZXMgOzsKKyAgICBubykgIG5ld2xpYl91 c2VfZ2R0b2E9bm8gIDs7CisgICAgKikgICBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5h YmxldmFsfSBmb3IgbmV3bGliLXVzZS1nZHRvYSBvcHRpb24iICIkTElORU5PIiA1IDs7CisgIGVz YWMKKyBmaQorZWxzZQorICBuZXdsaWJfdXNlX2dkdG9hPXllcworZmkKKwogCiAjIE1ha2Ugc3Vy ZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCiAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIi IHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8CkBAIC0yNjQzLDcgKzI2ODgsNyBAQCBjYXNlICRhc19k aXIvIGluICMoKAogICAgICMgYnkgZGVmYXVsdC4KICAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFs bCBzY29pbnN0IGluc3RhbGw7IGRvCiAgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4 ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLQlpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3Byb2ck YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQi OyB9OyB0aGVuCisJaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4 ZWNfZXh0IjsgdGhlbgogCSAgaWYgdGVzdCAkYWNfcHJvZyA9IGluc3RhbGwgJiYKIAkgICAgZ3Jl cCBkc3Btc2cgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiID4vZGV2L251bGwgMj4mMTsg dGhlbgogCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5n IGNvbnZlbnRpb24uCkBAIC0yODEyLDcgKzI4NTcsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZT CiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3Byb2dfU1RSSVA9IiR7YWNfdG9v bF9wcmVmaXh9c3RyaXAiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpA QCAtMjg1Miw3ICsyODk3LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0 YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9 OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X1NUUklQPSJzdHJpcCIKICAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC0yOTAzLDcgKzI5NDgsNyBAQCBkbwog ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19wcm9nIGluIG1rZGly IGdta2RpcjsgZG8KIAkgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu c2lvbnM7IGRvCi0JICAgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IiAm JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgfSB8fCBjb250aW51 ZQorCSAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIg fHwgY29udGludWUKIAkgICBjYXNlIGAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgLS12 ZXJzaW9uIDI+JjFgIGluICMoCiAJICAgICAnbWtkaXIgKEdOVSBjb3JldXRpbHMpICcqIHwgXAog CSAgICAgJ21rZGlyIChjb3JldXRpbHMpICcqIHwgXApAQCAtMjk1Niw3ICszMDAxLDcgQEAgZG8K ICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAg IGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBp ZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3gg IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1 dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9w cm9nX0FXSz0iJGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsg MgpAQCAtMzI5Niw3ICszMzQxLDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX0NDPSJnY2MiCiAgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtMzQ2NCw3ICszNTA5LDcgQEAgZG8KICAgSUZTPSRh c19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3Qg LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBpZiB0ZXN0ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KICAgICAgICBhY19w cm9nX3JlamVjdGVkPXllcwogICAgICAgIGNvbnRpbnVlCkBAIC0zNjQyLDcgKzM2ODcsNyBAQCBk bwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0g IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2 X3Byb2dfQVM9IiR7YWNfdG9vbF9wcmVmaXh9YXMiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1 CiAgICAgYnJlYWsgMgpAQCAtMzY4Miw3ICszNzI3LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lG UwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X0FTPSJhcyIK ICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC0zNzM0LDcgKzM3Nzks NyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNf Zm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAg IGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiAgICAgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtMzc3NCw3ICszODE5LDcgQEAgZG8KICAgSUZTPSRhc19z YXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVj X2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYg IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X0FS PSJhciIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC0zODI2LDcg KzM4NzEsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYm IGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVu c2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIg JiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAg aWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhl bgogICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKICAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC0zODY2LDcgKzM5MTEsNyBAQCBk bwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0g IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2 X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAg ICAgYnJlYWsgMgpAQCAtMzkxOCw3ICszOTYzLDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwog ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX1JFQURFTEY9IiR7YWNfdG9v bF9wcmVmaXh9cmVhZGVsZiIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAy CkBAIC0zOTU4LDcgKzQwMDMsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXog IiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRh Y19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7 IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRj0icmVhZGVsZiIKICAg ICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC00MTQ2LDcgKzQxOTEsNyBA QCBkbwogICAgIGZvciBhY19wcm9nIGluIHNlZCBnc2VkOyBkbwogICAgIGZvciBhY19leGVjX2V4 dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICAgICAgYWNfcGF0aF9TRUQ9 IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCi0gICAgICB7IHRlc3QgLWYgIiRhY19wYXRo X1NFRCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfU0VEIjsgfSB8fCBjb250aW51ZQorICAgICAg YXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9TRUQiIHx8IGNvbnRpbnVlCiAjIENoZWNrIGZv ciBHTlUgYWNfcGF0aF9TRUQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KICAgIyBDaGVj ayBmb3IgR05VICRhY19wYXRoX1NFRAogY2FzZSBgIiRhY19wYXRoX1NFRCIgLS12ZXJzaW9uIDI+ JjFgIGluCkBAIC00Mjc2LDcgKzQzMjEsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRl c3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3Byb2dfQVdLPSIkYWNfcHJvZyIKICAgICAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC00MzIyLDcgKzQzNjcsNyBAQCBk bwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0g IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2 X3Byb2dfQVM9IiR7YWNfdG9vbF9wcmVmaXh9YXMiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1 CiAgICAgYnJlYWsgMgpAQCAtNDM2Miw3ICs0NDA3LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lG UwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X0FTPSJhcyIK ICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC00NDE0LDcgKzQ0NTks NyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFz X3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNf Zm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAg IGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogICAgICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTQ0NTQsNyArNDQ5OSw3IEBAIGRvCiAg IElGUz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBm b3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYg eyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRh YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJv Z19hY19jdF9ETExUT09MPSJkbGx0b29sIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAg IGJyZWFrIDIKQEAgLTQ1MDYsNyArNDU1MSw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19PQkpEVU1QPSIke2FjX3Rvb2xf cHJlZml4fW9iamR1bXAiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpA QCAtNDU0Niw3ICs0NTkxLDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIk YXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0 YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9 OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X09CSkRVTVA9Im9iamR1bXAiCiAgICAg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtNDY2OCw3ICs0NzEzLDcgQEAg ZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9Lgog ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwot ICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0 X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4 ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19j dl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUKICAgICBicmVhayAyCkBAIC00NzA4LDcgKzQ3NTMsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVf SUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9Imdj YyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC00NzYxLDcgKzQ4 MDYsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYg JGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYg YXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgog ICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCiAgICAgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtNDgwMiw3ICs0ODQ3LDcgQEAgZG8KICAgSUZTPSRh c19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3Qg LWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBpZiB0ZXN0ICIkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KICAgICAgICBhY19w cm9nX3JlamVjdGVkPXllcwogICAgICAgIGNvbnRpbnVlCkBAIC00ODYwLDcgKzQ5MDUsNyBAQCBk bwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAg ICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0g IGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3Rf eCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2 X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQogICAgIGJyZWFrIDIKQEAgLTQ5MDQsNyArNDk0OSw3IEBAIGRvCiAgIElGUz0kYXNfc2F2 ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIk YXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0i JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtNTM1 MCw4ICs1Mzk1LDcgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUg PHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4K K3N0cnVjdCBzdGF0OwogLyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4g ZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYuc2guICAqLwogc3RydWN0IGJ1ZiB7IGludCB4OyB9Owog RklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKQEAg LTU1ODAsNyArNTYyNCw3IEBAIGRvCiAgICAgZm9yIGFjX3Byb2cgaW4gZ3JlcCBnZ3JlcDsgZG8K ICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8K ICAgICAgIGFjX3BhdGhfR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAg IHsgdGVzdCAtZiAiJGFjX3BhdGhfR1JFUCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfR1JFUCI7 IH0gfHwgY29udGludWUKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfR1JFUCIg fHwgY29udGludWUKICMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0dSRVAgYW5kIHNlbGVjdCBpdCBp ZiBpdCBpcyBmb3VuZC4KICAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0dSRVAKIGNhc2UgYCIk YWNfcGF0aF9HUkVQIiAtLXZlcnNpb24gMj4mMWAgaW4KQEAgLTU2NDYsNyArNTY5MCw3IEBAIGRv CiAgICAgZm9yIGFjX3Byb2cgaW4gZWdyZXA7IGRvCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgICAgICBhY19wYXRoX0VHUkVQPSIkYXNf ZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgotICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9FR1JF UCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfRUdSRVAiOyB9IHx8IGNvbnRpbnVlCisgICAgICBh c19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX0VHUkVQIiB8fCBjb250aW51ZQogIyBDaGVjayBm b3IgR05VIGFjX3BhdGhfRUdSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KICAgIyBD aGVjayBmb3IgR05VICRhY19wYXRoX0VHUkVQCiBjYXNlIGAiJGFjX3BhdGhfRUdSRVAiIC0tdmVy c2lvbiAyPiYxYCBpbgpAQCAtNTcxMyw3ICs1NzU3LDcgQEAgZG8KICAgICBmb3IgYWNfcHJvZyBp biBmZ3JlcDsgZG8KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0 ZW5zaW9uczsgZG8KICAgICAgIGFjX3BhdGhfRkdSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhl Y19leHQiCi0gICAgICB7IHRlc3QgLWYgIiRhY19wYXRoX0ZHUkVQIiAmJiAkYXNfdGVzdF94ICIk YWNfcGF0aF9GR1JFUCI7IH0gfHwgY29udGludWUKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFjX3BhdGhfRkdSRVAiIHx8IGNvbnRpbnVlCiAjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9GR1JF UCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgogICAjIENoZWNrIGZvciBHTlUgJGFjX3Bh dGhfRkdSRVAKIGNhc2UgYCIkYWNfcGF0aF9GR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCkBAIC01 OTY5LDcgKzYwMTMsNyBAQCBkbwogICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19k aXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxl X2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRo ZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0 IjsgdGhlbgogICAgIGFjX2N2X3Byb2dfRFVNUEJJTj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ci CiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rp ci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtNjAxMyw3ICs2MDU3 LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19k aXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z OyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRh c190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFz X2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAg ICBhY19jdl9wcm9nX2FjX2N0X0RVTVBCSU49IiRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTYzNTMsNyArNjM5Nyw3IEBAIGRvCiAgIElGUz0kYXNf c2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhl Y19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1m ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19PQkpEVU1Q PSIke2FjX3Rvb2xfcHJlZml4fW9iamR1bXAiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAg ICAgYnJlYWsgMgpAQCAtNjM5Myw3ICs2NDM3LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwog ICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAn JyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X09CSkRVTVA9Im9i amR1bXAiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQg JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtNjY3MCw3 ICs2NzE0LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNfZGlyIiAm JiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRl bnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisg IGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRo ZW4KICAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgogICAgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTY3MTAsNyArNjc1NCw3IEBAIGRvCiAgIElG Uz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3Ig YWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0 ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxl X3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19h Y19jdF9BUj0iYXIiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAt Njc3NSw3ICs2ODE5LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0 aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX1NUUklQPSIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIgog ICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTY4MTUsNyArNjg1OSw3 IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGly PS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsg ZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNf dGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19m bl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAg YWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0ic3RyaXAiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1 CiAgICAgYnJlYWsgMgpAQCAtNjg3NCw3ICs2OTE4LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lG UwogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX1JBTkxJQj0iJHthY190 b29sX3ByZWZpeH1yYW5saWIiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsg MgpAQCAtNjkxNCw3ICs2OTU4LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16 ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhl Y3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB9OyB0aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X1JBTkxJQj0icmFubGliIgogICAg ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFj X3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTc1MDQsNyArNzU0OCw3IEBA IGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4K ICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8K LSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVz dF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9l eGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNf Y3ZfcHJvZ19EU1lNVVRJTD0iJHthY190b29sX3ByZWZpeH1kc3ltdXRpbCIKICAgICAkYXNfZWNo byAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC03NTQ0LDcgKzc1ODgsNyBAQCBkbwogICBJ RlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9y IGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIHsg dGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0YWJs ZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3Byb2df YWNfY3RfRFNZTVVUSUw9ImRzeW11dGlsIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAg IGJyZWFrIDIKQEAgLTc1OTYsNyArNzY0MCw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAg dGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycg JGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19OTUVESVQ9IiR7YWNfdG9vbF9w cmVmaXh9bm1lZGl0IgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAg LTc2MzYsNyArNzY4MCw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFz X2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFi bGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsg dGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19l eHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19hY19jdF9OTUVESVQ9Im5tZWRpdCIKICAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC03Njg4LDcgKzc3MzIsNyBAQCBkbwog ICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlm IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0 YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3By b2dfTElQTz0iJHthY190b29sX3ByZWZpeH1saXBvIgogICAgICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4m NQogICAgIGJyZWFrIDIKQEAgLTc3MjgsNyArNzc3Miw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9J RlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQg aW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNf ZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIv JGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19hY19jdF9MSVBPPSJs aXBvIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRh c19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKQEAgLTc3ODAsNyAr NzgyNCw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAm JiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICBp ZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVu CiAgICAgYWNfY3ZfcHJvZ19PVE9PTD0iJHthY190b29sX3ByZWZpeH1vdG9vbCIKICAgICAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3Jk JGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCkBAIC03ODIwLDcgKzc4NjQsNyBAQCBkbwog ICBJRlM9JGFzX3NhdmVfSUZTCiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAg Zm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlm IHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgaWYgYXNfZm5fZXhlY3V0 YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogICAgIGFjX2N2X3By b2dfYWNfY3RfT1RPT0w9Im90b29sIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJy ZWFrIDIKQEAgLTc4NzIsNyArNzkxNiw3IEBAIGRvCiAgIElGUz0kYXNfc2F2ZV9JRlMKICAgdGVz dCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193 b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IjsgfTsgdGhlbgorICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB0aGVuCiAgICAgYWNfY3ZfcHJvZ19PVE9PTDY0PSIke2FjX3Rvb2xfcHJl Zml4fW90b29sNjQiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAt NzkxMiw3ICs3OTU2LDcgQEAgZG8KICAgSUZTPSRhc19zYXZlX0lGUwogICB0ZXN0IC16ICIkYXNf ZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbwotICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhl Y19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0 aGVuCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KICAgICBhY19jdl9wcm9nX2FjX2N0X09UT09MNjQ9Im90b29sNjQiCiAgICAgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgpAQCAtMTE4NTUsNyArMTE4OTksNyBAQCBl bHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3Jl PTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8 PF9MVF9FT0YKLSNsaW5lIDExODU4ICJjb25maWd1cmUiCisjbGluZSAxMTkwMiAiY29uZmlndXJl IgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTExOTYxLDcg KzEyMDA1LDcgQEAgZWxzZQogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRf ZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0 ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0jbGluZSAxMTk2NCAiY29uZmlndXJlIgorI2xpbmUgMTIw MDggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9I CkBAIC0xMjU4Niw2ICsxMjYzMCwxMyBAQCBfQUNFT0YKIAogZmkKIAoraWYgdGVzdCAiJHtuZXds aWJfdXNlX2dkdG9hfSIgPSAieWVzIjsgdGhlbgorY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgor I2RlZmluZSBfV0FOVF9VU0VfR0RUT0EgMQorX0FDRU9GCisKK2ZpCisKIAogaWYgdGVzdCAieCR7 aWNvbnZfZW5jb2RpbmdzfSIgIT0gIngiIFwKICAgIHx8IHRlc3QgIngke2ljb252X3RvX2VuY29k aW5nc30iICE9ICJ4IiBcCkBAIC0xMzMwMiwxNiArMTMzNTMsMTYgQEAgaWYgKGVjaG8gPmNvbmYk JC5maWxlKSAyPi9kZXYvbnVsbDsgdGhlbgogICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdv dGNoYXM6CiAgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBm aWxlIGRpcicgZmFpbC4KICAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBs biAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KLSAgICAjIEluIGJvdGggY2FzZXMs IHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLgorICAgICMgSW4gYm90aCBjYXNlcywgd2Ug aGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgogICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYk JC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKLSAgICAgIGFzX2xu X3M9J2NwIC1wJworICAgICAgYXNfbG5fcz0nY3AgLXBSJwogICBlbGlmIGxuIGNvbmYkJC5maWxl IGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgogICAgIGFzX2xuX3M9bG4KICAgZWxzZQotICAgIGFz X2xuX3M9J2NwIC1wJworICAgIGFzX2xuX3M9J2NwIC1wUicKICAgZmkKIGVsc2UKLSAgYXNfbG5f cz0nY3AgLXAnCisgIGFzX2xuX3M9J2NwIC1wUicKIGZpCiBybSAtZiBjb25mJCQgY29uZiQkLmV4 ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCiBybWRpciBjb25mJCQuZGlyIDI+ L2Rldi9udWxsCkBAIC0xMzM3MSwyOCArMTM0MjIsMTYgQEAgZWxzZQogICBhc19ta2Rpcl9wPWZh bHNlCiBmaQogCi1pZiB0ZXN0IC14IC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gIGFzX3Rlc3Rf eD0ndGVzdCAteCcKLWVsc2UKLSAgaWYgbHMgLWRMIC8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0g ICAgYXNfbHNfTF9vcHRpb249TAotICBlbHNlCi0gICAgYXNfbHNfTF9vcHRpb249Ci0gIGZpCi0g IGFzX3Rlc3RfeD0nCi0gICAgZXZhbCBzaCAtYyAnXCcnCi0gICAgICBpZiB0ZXN0IC1kICIkMSI7 IHRoZW4KLQl0ZXN0IC1kICIkMS8uIjsKLSAgICAgIGVsc2UKLQljYXNlICQxIGluICMoCi0JLSop c2V0ICIuLyQxIjs7Ci0JZXNhYzsKLQljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEi IDI+L2Rldi9udWxsYCBpbiAjKCgKLQk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2FjO2ZpCi0gICAg J1wnJyBzaAotICAnCi1maQotYXNfZXhlY3V0YWJsZV9wPSRhc190ZXN0X3gKKworIyBhc19mbl9l eGVjdXRhYmxlX3AgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGlmIEZJ TEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCithc19mbl9leGVjdXRhYmxlX3AgKCkK K3sKKyAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorfSAjIGFzX2ZuX2V4ZWN1dGFibGVf cAorYXNfdGVzdF94PSd0ZXN0IC14JworYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1dGFibGVf cAogCiAjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5h bWUuCiBhc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRF UlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgpAQCAtMTM0MTQsNyArMTM0NTMsNyBAQCBjYXQg Pj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiAjIHZhbHVlcyBh ZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKIFRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQg YnkgbmV3bGliICRhc19tZSA0LjEuMCwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9j b25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK2dlbmVyYXRlZCBieSBHTlUg QXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19G SUxFUyAgICA9ICRDT05GSUdfRklMRVMKICAgQ09ORklHX0hFQURFUlMgID0gJENPTkZJR19IRUFE RVJTCkBAIC0xMzQ4MCwxMCArMTM1MTksMTAgQEAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNF T0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZp Z3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3Nf dmVyc2lvbj0iXFwKIG5ld2xpYiBjb25maWcuc3RhdHVzIDQuMS4wCi1jb25maWd1cmVkIGJ5ICQw LCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCitjb25maWd1cmVkIGJ5ICQwLCBnZW5l cmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2Nv bmZpZ1xcIgogCi1Db3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCitDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBU aGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3Ry aWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTEzNTc0LDcgKzEzNjEzLDcgQEAgZmkKIF9BQ0VP RgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBpZiBc JGFjX2NzX3JlY2hlY2s7IHRoZW4KLSAgc2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJl X2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lv bgorICBzZXQgWCAkU0hFTEwgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVf ZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgogICBzaGlmdAogICBcJGFzX2Vj aG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgogICBDT05GSUdfU0hFTEw9 JyRTSEVMTCcKZGlmZiAtLWdpdCBhL25ld2xpYi9jb25maWd1cmUuYWMgYi9uZXdsaWIvY29uZmln dXJlLmFjCmluZGV4IDQ5YTFiNWZkZC4uMjVmNmQwN2VkIDEwMDY0NAotLS0gYS9uZXdsaWIvY29u ZmlndXJlLmFjCisrKyBiL25ld2xpYi9jb25maWd1cmUuYWMKQEAgLTI1OSw2ICsyNTksMTcgQEAg QUNfQVJHX0VOQUJMRShuZXdsaWItbG9uZy10aW1lX3QsCiAgIGVzYWMKICBmaV0sIFtuZXdsaWJf bG9uZ190aW1lX3Q9bm9dKWRubAogCitkbmwgU3VwcG9ydCAtLWVuYWJsZS1uZXdsaWItdXNlLWdk dG9hCitBQ19BUkdfRU5BQkxFKG5ld2xpYi11c2UtZ2R0b2EsCitbICAtLWVuYWJsZS1uZXdsaWIt dXNlLWdkdG9hICAgVXNlIGdkdG9hIHJhdGhlciB0aGFuIGxlZ2FjeSBsZHRvYV0sCitbaWYgdGVz dCAiJHtuZXdsaWJfdXNlX2dkdG9hK3NldH0iICE9IHNldDsgdGhlbgorICBjYXNlICIke2VuYWJs ZXZhbH0iIGluCisgICAgeWVzKSBuZXdsaWJfdXNlX2dkdG9hPXllcyA7OworICAgIG5vKSAgbmV3 bGliX3VzZV9nZHRvYT1ubyAgOzsKKyAgICAqKSAgIEFDX01TR19FUlJPUihiYWQgdmFsdWUgJHtl bmFibGV2YWx9IGZvciBuZXdsaWItdXNlLWdkdG9hIG9wdGlvbikgOzsKKyAgZXNhYworIGZpXSwg W25ld2xpYl91c2VfZ2R0b2E9eWVzXSlkbmwKKwogTkVXTElCX0NPTkZJR1VSRSguKQogCiBkbmwg V2UgaGF2ZSB0byBlbmFibGUgbGlidG9vbCBhZnRlciBORVdMSUJfQ09ORklHVVJFIGJlY2F1c2Ug aWYgd2UgdHJ5IGFuZApAQCAtNTM3LDYgKzU0OCwxMCBAQCBpZiB0ZXN0ICIke25ld2xpYl9sb25n X3RpbWVfdH0iID0gInllcyI7IHRoZW4KIEFDX0RFRklORV9VTlFVT1RFRChfV0FOVF9VU0VfTE9O R19USU1FX1QpCiBmaQogCitpZiB0ZXN0ICIke25ld2xpYl91c2VfZ2R0b2F9IiA9ICJ5ZXMiOyB0 aGVuCitBQ19ERUZJTkVfVU5RVU9URUQoX1dBTlRfVVNFX0dEVE9BKQorZmkKKwogZG5sCiBkbmwg UGFyc2UgLS1lbmFibGUtbmV3bGliLWljb252LWVuY29kaW5ncyBvcHRpb24gYXJndW1lbnQKIGRu bApkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvaW5jbHVkZS9tYWNoaW5lL2llZWUuaCBiL25ld2xp Yi9saWJjL2luY2x1ZGUvbWFjaGluZS9pZWVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi4wNjU2OTA5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9uZXdsaWIvbGliYy9pbmNs dWRlL21hY2hpbmUvaWVlZS5oCkBAIC0wLDAgKzEsMTI3IEBACisjaWZuZGVmIF9NQUNISU5FX0lF RUVfSF8KKyNkZWZpbmUgX01BQ0hJTkVfSUVFRV9IXworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgor I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvaWVlZWZwLmg+CisjaW5j bHVkZSA8ZmxvYXQuaD4KKworI2lmIExEQkxfTUFOVF9ESUcgPT0gMjQKKyNkZWZpbmUgRVhUX0lN UExJQ0lUX05CSVQKKyNkZWZpbmUgRVhUX1RPX0FSUkFZMzIocCwgYSkgZG8geyAgICAgIFwKKyAg ICAoYSlbMF0gPSAocCktPmV4dF9mcmFjOyAgXAorfSB3aGlsZSAoMCkKKyNpZmRlZiBfX0lFRUVf TElUVExFX0VORElBTgorc3RydWN0IGllZWVfZXh0IHsKKyAgICB1aW50MzJfdCAgIGV4dF9mcmFj OjIzOworICAgIHVpbnQzMl90ICAgZXh0X2V4cDo4OworICAgIHVpbnQzMl90ICAgZXh0X3NpZ246 MTsKK307CisjZW5kaWYKKyNpZmRlZiBfX0lFRUVfQklHX0VORElBTgorc3RydWN0IGllZWVfZXh0 IHsKKyNpZm5kZWYgX19fSUVFRV9CWVRFU19MSVRUTEVfRU5ESUFOCisgICAgdWludDMyX3QgICBl eHRfc2lnbjoxOworICAgIHVpbnQzMl90ICAgZXh0X2V4cDo4OworICAgIHVpbnQzMl90ICAgZXh0 X2ZyYWM6MjM7CisjZWxzZSAvKiBBUk1FTCB3aXRob3V0IF9fVkZQX0ZQX18gKi8KKyAgICB1aW50 MzJfdCAgIGV4dF9mcmFjOjIzOworICAgIHVpbnQzMl90ICAgZXh0X2V4cDo4OworICAgIHVpbnQz Ml90ICAgZXh0X3NpZ246MTsKKyNlbmRpZgorfTsKKyNlbmRpZgorI2VsaWYgTERCTF9NQU5UX0RJ RyA9PSA1MworI2RlZmluZSBFWFRfSU1QTElDSVRfTkJJVAorI2RlZmluZSBFWFRfVE9fQVJSQVkz MihwLCBhKSBkbyB7ICAgICAgIFwKKyAgICAoYSlbMF0gPSAocCktPmV4dF9mcmFjbDsgIFwKKyAg ICAoYSlbMV0gPSAocCktPmV4dF9mcmFjaDsgIFwKK30gd2hpbGUgKDApCisjaWZkZWYgX19JRUVF X0xJVFRMRV9FTkRJQU4KK3N0cnVjdCBpZWVlX2V4dCB7CisgICAgdWludDMyX3QgICBleHRfZnJh Y2w7CisgICAgdWludDMyX3QgICBleHRfZnJhY2g6MjA7CisgICAgdWludDMyX3QgICBleHRfZXhw OjExOworICAgIHVpbnQzMl90ICAgZXh0X3NpZ246MTsKK307CisjZW5kaWYKKyNpZmRlZiBfX0lF RUVfQklHX0VORElBTgorc3RydWN0IGllZWVfZXh0IHsKKyNpZm5kZWYgX19fSUVFRV9CWVRFU19M SVRUTEVfRU5ESUFOCisgICAgdWludDMyX3QgICBleHRfc2lnbjoxOworICAgIHVpbnQzMl90ICAg ZXh0X2V4cDoxMTsKKyAgICB1aW50MzJfdCAgIGV4dF9mcmFjaDoyMDsKKyNlbHNlIC8qIEFSTUVM IHdpdGhvdXQgX19WRlBfRlBfXyAqLworICAgIHVpbnQzMl90ICAgZXh0X2ZyYWNoOjIwOworICAg IHVpbnQzMl90ICAgZXh0X2V4cDoxMTsKKyAgICB1aW50MzJfdCAgIGV4dF9zaWduOjE7CisjZW5k aWYKKyAgICB1aW50MzJfdCAgIGV4dF9mcmFjbDsKK307CisjZW5kaWYKKyNlbGlmIExEQkxfTUFO VF9ESUcgPT0gNjQKKyNkZWZpbmUgRVhUX1RPX0FSUkFZMzIocCwgYSkgZG8geyAgICAgICBcCisg ICAgKGEpWzBdID0gKHApLT5leHRfZnJhY2w7ICBcCisgICAgKGEpWzFdID0gKHApLT5leHRfZnJh Y2g7ICBcCit9IHdoaWxlICgwKQorI2lmZGVmIF9fSUVFRV9MSVRUTEVfRU5ESUFOIC8qIGZvciBJ bnRlbCBDUFUgKi8KK3N0cnVjdCBpZWVlX2V4dCB7CisgICAgdWludDMyX3QgICBleHRfZnJhY2w7 CisgICAgdWludDMyX3QgICBleHRfZnJhY2g7CisgICAgdWludDMyX3QgICBleHRfZXhwOjE1Owor ICAgIHVpbnQzMl90ICAgZXh0X3NpZ246MTsKKyAgICB1aW50MzJfdCAgIGV4dF9wYWRsOjE2Owor ICAgIHVpbnQzMl90ICAgZXh0X3BhZGg7Cit9OworI2VuZGlmCisjaWZkZWYgX19JRUVFX0JJR19F TkRJQU4KK3N0cnVjdCBpZWVlX2V4dCB7CisjaWZuZGVmIF9fX0lFRUVfQllURVNfTElUVExFX0VO RElBTiAvKiBmb3IgbTY4ayAqLworICAgIHVpbnQzMl90ICAgZXh0X3NpZ246MTsKKyAgICB1aW50 MzJfdCAgIGV4dF9leHA6MTU7CisgICAgdWludDMyX3QgICBleHRfcGFkOjE2OworI2Vsc2UgLyog QVJNIEZQQTEwIG1hdGggY29wcm9jZXNzb3IgKi8KKyAgICB1aW50MzJfdCAgIGV4dF9leHA6MTU7 CisgICAgdWludDMyX3QgICBleHRfcGFkOjE2OworICAgIHVpbnQzMl90ICAgZXh0X3NpZ246MTsK KyNlbmRpZgorICAgIHVpbnQzMl90ICAgZXh0X2ZyYWNoOworICAgIHVpbnQzMl90ICAgZXh0X2Zy YWNsOworfTsKKyNlbmRpZgorI2VsaWYgTERCTF9NQU5UX0RJRyA9PSAxMTMKKyNkZWZpbmUgRVhU X0lNUExJQ0lUX05CSVQKKyNkZWZpbmUgRVhUX1RPX0FSUkFZMzIocCwgYSkgZG8geyAgICAgICAg XAorICAgIChhKVswXSA9IChwKS0+ZXh0X2ZyYWNsOyAgIFwKKyAgICAoYSlbMV0gPSAocCktPmV4 dF9mcmFjbG07ICBcCisgICAgKGEpWzJdID0gKHApLT5leHRfZnJhY2htOyAgXAorICAgIChhKVsz XSA9IChwKS0+ZXh0X2ZyYWNoOyAgIFwKK30gd2hpbGUgKDApCisjaWZkZWYgX19JRUVFX0xJVFRM RV9FTkRJQU4KK3N0cnVjdCBpZWVlX2V4dCB7CisgICAgdWludDMyX3QgICBleHRfZnJhY2w7Cisg ICAgdWludDMyX3QgICBleHRfZnJhY2xtOworICAgIHVpbnQzMl90ICAgZXh0X2ZyYWNobTsKKyAg ICB1aW50MzJfdCAgIGV4dF9mcmFjaDoxNjsKKyAgICB1aW50MzJfdCAgIGV4dF9leHA6MTU7Cisg ICAgdWludDMyX3QgICBleHRfc2lnbjoxOworfTsKKyNlbmRpZgorI2lmZGVmIF9fSUVFRV9CSUdf RU5ESUFOCitzdHJ1Y3QgaWVlZV9leHQgeworI2lmbmRlZiBfX19JRUVFX0JZVEVTX0xJVFRMRV9F TkRJQU4KKyAgICB1aW50MzJfdCAgIGV4dF9zaWduOjE7CisgICAgdWludDMyX3QgICBleHRfZXhw OjE1OworICAgIHVpbnQzMl90ICAgZXh0X2ZyYWNoOjE2OworI2Vsc2UgLyogQVJNRUwgd2l0aG91 dCBfX1ZGUF9GUF9fICovCisgICAgdWludDMyX3QgICBleHRfZnJhY2g6MTY7CisgICAgdWludDMy X3QgICBleHRfZXhwOjE1OworICAgIHVpbnQzMl90ICAgZXh0X3NpZ246MTsKKyNlbmRpZgorICAg IHVpbnQzMl90ICAgZXh0X2ZyYWNobTsKKyAgICB1aW50MzJfdCAgIGV4dF9mcmFjbG07CisgICAg dWludDMyX3QgICBleHRfZnJhY2w7Cit9OworI2VuZGlmCisjZW5kaWYKKworI2VuZGlmIC8qIF9N QUNISU5FX0lFRUVfSF8gKi8KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2Nv bmZpZy5oIGIvbmV3bGliL2xpYmMvaW5jbHVkZS9zeXMvY29uZmlnLmgKaW5kZXggYjlkZmY4OGZm Li42MWE2Zjk1ZDggMTAwNjQ0Ci0tLSBhL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5o CisrKyBiL25ld2xpYi9saWJjL2luY2x1ZGUvc3lzL2NvbmZpZy5oCkBAIC0yOTMsNiArMjkzLDEy IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZkZWYgX1dBTlRfVVNFX0dEVE9BCisjaWZuZGVmIF9V U0VfR0RUT0EKKyNkZWZpbmUgX1VTRV9HRFRPQQorI2VuZGlmCisjZW5kaWYKKwogLyogSWYgX01C X0VYVEVOREVEX0NIQVJTRVRTX0FMTCBpcyBzZXQsIHdlIHdhbnQgYWxsIG9mIHRoZSBleHRlbmRl ZAogICAgY2hhcnNldHMuICBUaGUgZXh0ZW5kZWQgY2hhcnNldHMgYWRkIGEgZmV3IGZ1bmN0aW9u cyBhbmQgYSBjb3VwbGUKICAgIG9mIHRhYmxlcyBvZiBhIGZldyBLIGVhY2guICovCmRpZmYgLS1n aXQgYS9uZXdsaWIvbGliYy9zdGRsaWIvTWFrZWZpbGUuYW0gYi9uZXdsaWIvbGliYy9zdGRsaWIv TWFrZWZpbGUuYW0KaW5kZXggMzU3ZTM3YmViLi4yZjQ2YzgzN2MgMTAwNjQ0Ci0tLSBhL25ld2xp Yi9saWJjL3N0ZGxpYi9NYWtlZmlsZS5hbQorKysgYi9uZXdsaWIvbGliYy9zdGRsaWIvTWFrZWZp bGUuYW0KQEAgLTM4LDYgKzM4LDEwIEBAIEdFTkVSQUxfU09VUkNFUyA9IFwKIAlsYWJzLmMgCQlc CiAJbGRpdi5jICAJXAogCWxkdG9hLmMJCVwKKwlnZHRvYS1sZHRvYS5jCVwKKwlnZHRvYS1nZHRv YS5jCVwKKwlnZHRvYS1kbWlzYy5jCVwKKwlnZHRvYS1nbWlzYy5jCVwKIAltYWxsb2MuYyAgCVwK IAltYmxlbi5jCQlcCiAJbWJsZW5fci5jCVwKQEAgLTMxMSw3ICszMTUsMTEgQEAgQ0hFV09VVF9G SUxFUz0gXAogQ0hBUFRFUlMgPSBzdGRsaWIudGV4CiAKICQobHBmeClkdG9hLiQob2V4dCk6IGR0 b2EuYyBtcHJlYy5oCi0kKGxwZngpbGR0b2EuJChvZXh0KTogbGR0b2EuYyBtcHJlYy5oCiskKGxw ZngpbGR0b2EuJChvZXh0KTogbGR0b2EuYyBtcHJlYy5oIGdkdG9hLmgKKyQobHBmeClnZHRvYS1s ZHRvYS4kKG9leHQpOiBnZHRvYS1sZHRvYS5jIG1wcmVjLmggZ2R0b2FpbXAuaCBnZHRvYS5oCisk KGxwZngpZ2R0b2EtZ2R0b2EuJChvZXh0KTogZ2R0b2EtZ2R0b2EuYyBtcHJlYy5oIGdkdG9haW1w LmggZ2R0b2EuaAorJChscGZ4KWdkdG9hLWRtaXNjLiQob2V4dCk6IGdkdG9hLWRtaXNjLmMgbXBy ZWMuaCBnZHRvYWltcC5oIGdkdG9hLmgKKyQobHBmeClnZHRvYS1nbWlzYy4kKG9leHQpOiBnZHRv YS1nbWlzYy5jIG1wcmVjLmggZ2R0b2FpbXAuaCBnZHRvYS5oCiAkKGxwZngpZWN2dGJ1Zi4kKG9l eHQpOiBlY3Z0YnVmLmMgbXByZWMuaAogJChscGZ4KW1idG93Y19yLiQob2V4dCk6IG1idG93Y19y LmMgbWJjdHlwZS5oCiAkKGxwZngpbXByZWMuJChvZXh0KTogbXByZWMuYyBtcHJlYy5oCmRpZmYg LS1naXQgYS9uZXdsaWIvbGliYy9zdGRsaWIvTWFrZWZpbGUuaW4gYi9uZXdsaWIvbGliYy9zdGRs aWIvTWFrZWZpbGUuaW4KaW5kZXggYTgxMmI2YTk1Li43ZDMzNDJhNjcgMTAwNjQ0Ci0tLSBhL25l d2xpYi9saWJjL3N0ZGxpYi9NYWtlZmlsZS5pbgorKysgYi9uZXdsaWIvbGliYy9zdGRsaWIvTWFr ZWZpbGUuaW4KQEAgLTEwMSw3ICsxMDEsOSBAQCBhbV9fb2JqZWN0c18yID0gbGliX2EtX19hZGp1 c3QuJChPQkpFWFQpIGxpYl9hLV9fYXRleGl0LiQoT0JKRVhUKSBcCiAJbGliX2EtZ2V0ZW52X3Iu JChPQkpFWFQpIGxpYl9hLWltYXhhYnMuJChPQkpFWFQpIFwKIAlsaWJfYS1pbWF4ZGl2LiQoT0JK RVhUKSBsaWJfYS1pdG9hLiQoT0JKRVhUKSBcCiAJbGliX2EtbGFicy4kKE9CSkVYVCkgbGliX2Et bGRpdi4kKE9CSkVYVCkgXAotCWxpYl9hLWxkdG9hLiQoT0JKRVhUKSBsaWJfYS1tYWxsb2MuJChP QkpFWFQpIFwKKwlsaWJfYS1sZHRvYS4kKE9CSkVYVCkgbGliX2EtZ2R0b2EtbGR0b2EuJChPQkpF WFQpIFwKKwlsaWJfYS1nZHRvYS1nZHRvYS4kKE9CSkVYVCkgbGliX2EtZ2R0b2EtZG1pc2MuJChP QkpFWFQpIFwKKwlsaWJfYS1nZHRvYS1nbWlzYy4kKE9CSkVYVCkgbGliX2EtbWFsbG9jLiQoT0JK RVhUKSBcCiAJbGliX2EtbWJsZW4uJChPQkpFWFQpIGxpYl9hLW1ibGVuX3IuJChPQkpFWFQpIFwK IAlsaWJfYS1tYnN0b3djcy4kKE9CSkVYVCkgbGliX2EtbWJzdG93Y3Nfci4kKE9CSkVYVCkgXAog CWxpYl9hLW1idG93Yy4kKE9CSkVYVCkgbGliX2EtbWJ0b3djX3IuJChPQkpFWFQpIFwKQEAgLTE2 NSw2ICsxNjcsNyBAQCBhbV9fb2JqZWN0c185ID0gX19hZGp1c3QubG8gX19hdGV4aXQubG8gX19j YWxsX2F0ZXhpdC5sbyBfX2V4cDEwLmxvIFwKIAlkaXYubG8gZHRvYS5sbyBkdG9hc3R1Yi5sbyBl bnZpcm9uLmxvIGVudmxvY2subG8gZXByaW50Zi5sbyBcCiAJZXhpdC5sbyBnZHRvYS1nZXRoZXgu bG8gZ2R0b2EtaGV4bmFuLmxvIGdldGVudi5sbyBnZXRlbnZfci5sbyBcCiAJaW1heGFicy5sbyBp bWF4ZGl2LmxvIGl0b2EubG8gbGFicy5sbyBsZGl2LmxvIGxkdG9hLmxvIFwKKwlnZHRvYS1sZHRv YS5sbyBnZHRvYS1nZHRvYS5sbyBnZHRvYS1kbWlzYy5sbyBnZHRvYS1nbWlzYy5sbyBcCiAJbWFs bG9jLmxvIG1ibGVuLmxvIG1ibGVuX3IubG8gbWJzdG93Y3MubG8gbWJzdG93Y3Nfci5sbyBcCiAJ bWJ0b3djLmxvIG1idG93Y19yLmxvIG1sb2NrLmxvIG1wcmVjLmxvIG1zdGF0cy5sbyBcCiAJb25f ZXhpdF9hcmdzLmxvIHF1aWNrX2V4aXQubG8gcmFuZC5sbyByYW5kX3IubG8gcmFuZG9tLmxvIFwK QEAgLTM1NCw2ICszNTcsNyBAQCBwZGZkaXIgPSBAcGRmZGlyQAogcHJlZml4ID0gQHByZWZpeEAK IHByb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKIHBzZGly ID0gQHBzZGlyQAorcnVuc3RhdGVkaXIgPSBAcnVuc3RhdGVkaXJACiBzYmluZGlyID0gQHNiaW5k aXJACiBzaGFyZWRfbWFjaGluZV9kaXIgPSBAc2hhcmVkX21hY2hpbmVfZGlyQAogc2hhcmVkc3Rh dGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACkBAIC0zNzIsMTMgKzM3NiwxNCBAQCBHRU5FUkFMX1NP VVJDRVMgPSBfX2FkanVzdC5jIF9fYXRleGl0LmMgX19jYWxsX2F0ZXhpdC5jIF9fZXhwMTAuYyBc CiAJYXRleGl0LmMgYXRvZi5jIGF0b2ZmLmMgYXRvaS5jIGF0b2wuYyBjYWxsb2MuYyBkaXYuYyBk dG9hLmMgXAogCWR0b2FzdHViLmMgZW52aXJvbi5jIGVudmxvY2suYyBlcHJpbnRmLmMgZXhpdC5j IGdkdG9hLWdldGhleC5jIFwKIAlnZHRvYS1oZXhuYW4uYyBnZXRlbnYuYyBnZXRlbnZfci5jIGlt YXhhYnMuYyBpbWF4ZGl2LmMgaXRvYS5jIFwKLQlsYWJzLmMgbGRpdi5jIGxkdG9hLmMgbWFsbG9j LmMgbWJsZW4uYyBtYmxlbl9yLmMgbWJzdG93Y3MuYyBcCi0JbWJzdG93Y3Nfci5jIG1idG93Yy5j IG1idG93Y19yLmMgbWxvY2suYyBtcHJlYy5jIG1zdGF0cy5jIFwKLQlvbl9leGl0X2FyZ3MuYyBx dWlja19leGl0LmMgcmFuZC5jIHJhbmRfci5jIHJhbmRvbS5jIHJlYWxsb2MuYyBcCi0JcmVhbGxv Y2FycmF5LmMgcmVhbGxvY2YuYyBzYl9jaGFyc2V0cy5jIHN0cnRvZC5jIHN0cnRvaW1heC5jIFwK LQlzdHJ0b2wuYyBzdHJ0b3VsLmMgc3RydG91bWF4LmMgdXRvYS5jIHdjc3RvZC5jIHdjc3RvaW1h eC5jIFwKLQl3Y3N0b2wuYyB3Y3N0b3VsLmMgd2NzdG91bWF4LmMgd2NzdG9tYnMuYyB3Y3N0b21i c19yLmMgXAotCXdjdG9tYi5jIHdjdG9tYl9yLmMgJChhbV9fYXBwZW5kXzEpCisJbGFicy5jIGxk aXYuYyBsZHRvYS5jIGdkdG9hLWxkdG9hLmMgZ2R0b2EtZ2R0b2EuYyBcCisJZ2R0b2EtZG1pc2Mu YyBnZHRvYS1nbWlzYy5jIG1hbGxvYy5jIG1ibGVuLmMgbWJsZW5fci5jIFwKKwltYnN0b3djcy5j IG1ic3Rvd2NzX3IuYyBtYnRvd2MuYyBtYnRvd2Nfci5jIG1sb2NrLmMgbXByZWMuYyBcCisJbXN0 YXRzLmMgb25fZXhpdF9hcmdzLmMgcXVpY2tfZXhpdC5jIHJhbmQuYyByYW5kX3IuYyByYW5kb20u YyBcCisJcmVhbGxvYy5jIHJlYWxsb2NhcnJheS5jIHJlYWxsb2NmLmMgc2JfY2hhcnNldHMuYyBz dHJ0b2QuYyBcCisJc3RydG9pbWF4LmMgc3RydG9sLmMgc3RydG91bC5jIHN0cnRvdW1heC5jIHV0 b2EuYyB3Y3N0b2QuYyBcCisJd2NzdG9pbWF4LmMgd2NzdG9sLmMgd2NzdG91bC5jIHdjc3RvdW1h eC5jIHdjc3RvbWJzLmMgXAorCXdjc3RvbWJzX3IuYyB3Y3RvbWIuYyB3Y3RvbWJfci5jICQoYW1f X2FwcGVuZF8xKQogQE5FV0xJQl9OQU5PX01BTExPQ19GQUxTRUBNQUxJR05SID0gbWFsaWducgog QE5FV0xJQl9OQU5PX01BTExPQ19UUlVFQE1BTElHTlIgPSBuYW5vLW1hbGlnbnIKIEBORVdMSUJf TkFOT19NQUxMT0NfRkFMU0VATUFMTE9QVFIgPSBtYWxsb3B0cgpAQCAtODI3LDYgKzgzMiwzMCBA QCBsaWJfYS1sZHRvYS5vOiBsZHRvYS5jCiBsaWJfYS1sZHRvYS5vYmo6IGxkdG9hLmMKIAkkKEND KSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykg JChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1sZHRvYS5v YmogYGlmIHRlc3QgLWYgJ2xkdG9hLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGR0b2EuYyc7IGVs c2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGR0b2EuYyc7IGZpYAogCitsaWJfYS1nZHRvYS1s ZHRvYS5vOiBnZHRvYS1sZHRvYS5jCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMp ICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAk KENGTEFHUykgLWMgLW8gbGliX2EtZ2R0b2EtbGR0b2EubyBgdGVzdCAtZiAnZ2R0b2EtbGR0b2Eu YycgfHwgZWNobyAnJChzcmNkaXIpLydgZ2R0b2EtbGR0b2EuYworCitsaWJfYS1nZHRvYS1sZHRv YS5vYmo6IGdkdG9hLWxkdG9hLmMKKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykg JChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQo Q0ZMQUdTKSAtYyAtbyBsaWJfYS1nZHRvYS1sZHRvYS5vYmogYGlmIHRlc3QgLWYgJ2dkdG9hLWxk dG9hLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZ2R0b2EtbGR0b2EuYyc7IGVsc2UgJChDWUdQQVRI X1cpICckKHNyY2RpcikvZ2R0b2EtbGR0b2EuYyc7IGZpYAorCitsaWJfYS1nZHRvYS1nZHRvYS5v OiBnZHRvYS1nZHRvYS5jCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5D TFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFH UykgLWMgLW8gbGliX2EtZ2R0b2EtZ2R0b2EubyBgdGVzdCAtZiAnZ2R0b2EtZ2R0b2EuYycgfHwg ZWNobyAnJChzcmNkaXIpLydgZ2R0b2EtZ2R0b2EuYworCitsaWJfYS1nZHRvYS1nZHRvYS5vYmo6 IGdkdG9hLWdkdG9hLmMKKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNM VURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdT KSAtYyAtbyBsaWJfYS1nZHRvYS1nZHRvYS5vYmogYGlmIHRlc3QgLWYgJ2dkdG9hLWdkdG9hLmMn OyB0aGVuICQoQ1lHUEFUSF9XKSAnZ2R0b2EtZ2R0b2EuYyc7IGVsc2UgJChDWUdQQVRIX1cpICck KHNyY2RpcikvZ2R0b2EtZ2R0b2EuYyc7IGZpYAorCitsaWJfYS1nZHRvYS1kbWlzYy5vOiBnZHRv YS1kbWlzYy5jCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMp ICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMg LW8gbGliX2EtZ2R0b2EtZG1pc2MubyBgdGVzdCAtZiAnZ2R0b2EtZG1pc2MuYycgfHwgZWNobyAn JChzcmNkaXIpLydgZ2R0b2EtZG1pc2MuYworCitsaWJfYS1nZHRvYS1kbWlzYy5vYmo6IGdkdG9h LWRtaXNjLmMKKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykg JChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAt byBsaWJfYS1nZHRvYS1kbWlzYy5vYmogYGlmIHRlc3QgLWYgJ2dkdG9hLWRtaXNjLmMnOyB0aGVu ICQoQ1lHUEFUSF9XKSAnZ2R0b2EtZG1pc2MuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2Rp cikvZ2R0b2EtZG1pc2MuYyc7IGZpYAorCitsaWJfYS1nZHRvYS1nbWlzYy5vOiBnZHRvYS1nbWlz Yy5jCisJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1f Q1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGli X2EtZ2R0b2EtZ21pc2MubyBgdGVzdCAtZiAnZ2R0b2EtZ21pc2MuYycgfHwgZWNobyAnJChzcmNk aXIpLydgZ2R0b2EtZ21pc2MuYworCitsaWJfYS1nZHRvYS1nbWlzYy5vYmo6IGdkdG9hLWdtaXNj LmMKKwkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9D UFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJf YS1nZHRvYS1nbWlzYy5vYmogYGlmIHRlc3QgLWYgJ2dkdG9hLWdtaXNjLmMnOyB0aGVuICQoQ1lH UEFUSF9XKSAnZ2R0b2EtZ21pc2MuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZ2R0 b2EtZ21pc2MuYyc7IGZpYAorCiBsaWJfYS1tYWxsb2MubzogbWFsbG9jLmMKIAkkKENDKSAkKERF RlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBG TEFHUykgJChsaWJfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJfYS1tYWxsb2MubyBgdGVz dCAtZiAnbWFsbG9jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1hbGxvYy5jCiAKQEAgLTE2MTAs NyArMTYzOSwxMSBAQCAkKGxwZngpJChNQUxMT1BUUikuJChvZXh0KTogJChNQUxMT0NSKS5jCiAJ JChNQUxMT0NfQ09NUElMRSkgLURERUZJTkVfTUFMTE9QVCAtYyAkKHNyY2RpcikvJChNQUxMT0NS KS5jIC1vICRACiAKICQobHBmeClkdG9hLiQob2V4dCk6IGR0b2EuYyBtcHJlYy5oCi0kKGxwZngp bGR0b2EuJChvZXh0KTogbGR0b2EuYyBtcHJlYy5oCiskKGxwZngpbGR0b2EuJChvZXh0KTogbGR0 b2EuYyBtcHJlYy5oIGdkdG9hLmgKKyQobHBmeClnZHRvYS1sZHRvYS4kKG9leHQpOiBnZHRvYS1s ZHRvYS5jIG1wcmVjLmggZ2R0b2FpbXAuaCBnZHRvYS5oCiskKGxwZngpZ2R0b2EtZ2R0b2EuJChv ZXh0KTogZ2R0b2EtZ2R0b2EuYyBtcHJlYy5oIGdkdG9haW1wLmggZ2R0b2EuaAorJChscGZ4KWdk dG9hLWRtaXNjLiQob2V4dCk6IGdkdG9hLWRtaXNjLmMgbXByZWMuaCBnZHRvYWltcC5oIGdkdG9h LmgKKyQobHBmeClnZHRvYS1nbWlzYy4kKG9leHQpOiBnZHRvYS1nbWlzYy5jIG1wcmVjLmggZ2R0 b2FpbXAuaCBnZHRvYS5oCiAkKGxwZngpZWN2dGJ1Zi4kKG9leHQpOiBlY3Z0YnVmLmMgbXByZWMu aAogJChscGZ4KW1idG93Y19yLiQob2V4dCk6IG1idG93Y19yLmMgbWJjdHlwZS5oCiAkKGxwZngp bXByZWMuJChvZXh0KTogbXByZWMuYyBtcHJlYy5oCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9z dGRsaWIvZ2R0b2EtZG1pc2MuYyBiL25ld2xpYi9saWJjL3N0ZGxpYi9nZHRvYS1kbWlzYy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMzMyMDIzZGFlCi0tLSAvZGV2L251 bGwKKysrIGIvbmV3bGliL2xpYmMvc3RkbGliL2dkdG9hLWRtaXNjLmMKQEAgLTAsMCArMSwyMzAg QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisKK1RoZSBhdXRob3Igb2YgdGhpcyBzb2Z0d2FyZSBpcyBEYXZpZCBNLiBH YXkuCisKK0NvcHlyaWdodCAoQykgMTk5OCBieSBMdWNlbnQgVGVjaG5vbG9naWVzCitBbGwgUmln aHRzIFJlc2VydmVkCisKK1Blcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0 cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCitpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBv c2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQorZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsCitjb3BpZXMgYW5kIHRoYXQgYm90 aCB0aGF0IHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzCitwZXJtaXNzaW9uIG5vdGljZSBh bmQgd2FycmFudHkgZGlzY2xhaW1lciBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlv biwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTHVjZW50IG9yIGFueSBvZiBpdHMgZW50aXRpZXMKK25v dCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCitkaXN0 cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IK K3Blcm1pc3Npb24uCisKK0xVQ0VOVCBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdB UkQgVE8gVEhJUyBTT0ZUV0FSRSwKK0lOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KK0lOIE5PIEVWRU5UIFNIQUxMIExVQ0VOVCBP UiBBTlkgT0YgSVRTIEVOVElUSUVTIEJFIExJQUJMRSBGT1IgQU5ZCitTUEVDSUFMLCBJTkRJUkVD VCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKK1dIQVRTT0VWRVIgUkVT VUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUgorSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwK K0FSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1B TkNFIE9GCitUSElTIFNPRlRXQVJFLgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBQbGVhc2Ugc2VuZCBidWcg cmVwb3J0cyB0byBEYXZpZCBNLiBHYXkgKGRtZyBhdCBhY20gZG90IG9yZywKKyAqIHdpdGggIiBh dCAiIGNoYW5nZWQgYXQgIkAiIGFuZCAiIGRvdCAiIGNoYW5nZWQgdG8gIi4iKS4JKi8KKworI2lu Y2x1ZGUgPG5ld2xpYi5oPgorI2luY2x1ZGUgPHN5cy9jb25maWcuaD4KKworI2lmZGVmIF9VU0Vf R0RUT0EKKyNpbmNsdWRlICJnZHRvYWltcC5oIgorCisjaWZuZGVmIE1VTFRJUExFX1RIUkVBRFMK KyBjaGFyICpkdG9hX3Jlc3VsdDsKKyNlbmRpZgorCisgY2hhciAqCisjaWZkZWYgS1JfaGVhZGVy cworcnZfYWxsb2MocHRyLCBpKSBzdHJ1Y3QgX3JlZW50ICpwdHIsIGludCBpOworI2Vsc2UKK3J2 X2FsbG9jKHN0cnVjdCBfcmVlbnQgKnB0ciwgaW50IGkpCisjZW5kaWYKK3sKKwlpbnQgaiwgaywg KnI7CisKKwlqID0gc2l6ZW9mKFVMb25nKTsKKwlmb3IoayA9IDA7CisJCXNpemVvZihCaWdpbnQp IC0gc2l6ZW9mKFVMb25nKSAtIHNpemVvZihpbnQpICsgaiA8PSBpOworCQlqIDw8PSAxKQorCQkJ aysrOworCXIgPSAoaW50KilCYWxsb2MocHRyLCBrKTsKKwlpZiAociA9PSBOVUxMKQorCQlyZXR1 cm4gKAorI2lmbmRlZiBNVUxUSVBMRV9USFJFQURTCisJCWR0b2FfcmVzdWx0ID0KKyNlbmRpZgor CQkJTlVMTCk7CisJKnIgPSBrOworCXJldHVybgorI2lmbmRlZiBNVUxUSVBMRV9USFJFQURTCisJ ZHRvYV9yZXN1bHQgPQorI2VuZGlmCisJCShjaGFyICopKHIrMSk7CisJfQorCisgY2hhciAqCisj aWZkZWYgS1JfaGVhZGVycworbnJ2X2FsbG9jKHB0ciwgcywgcnZlLCBuKSBzdHJ1Y3QgX3JlZW50 ICpwdHIsIGNoYXIgKnMsICoqcnZlOyBpbnQgbjsKKyNlbHNlCitucnZfYWxsb2Moc3RydWN0IF9y ZWVudCAqcHRyLCBjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKKyNlbmRpZgoreworCWNoYXIg KnJ2LCAqdDsKKworCXQgPSBydiA9IHJ2X2FsbG9jKHB0ciwgbik7CisJaWYgKHQgPT0gTlVMTCkK KwkJcmV0dXJuIChOVUxMKTsKKwl3aGlsZSgoKnQgPSAqcysrKSAhPTApCisJCXQrKzsKKwlpZiAo cnZlKQorCQkqcnZlID0gdDsKKwlyZXR1cm4gcnY7CisJfQorCisvKiBmcmVlZHRvYShzKSBtdXN0 IGJlIHVzZWQgdG8gZnJlZSB2YWx1ZXMgcyByZXR1cm5lZCBieSBkdG9hCisgKiB3aGVuIE1VTFRJ UExFX1RIUkVBRFMgaXMgI2RlZmluZWQuICBJdCBzaG91bGQgYmUgdXNlZCBpbiBhbGwgY2FzZXMs CisgKiBidXQgZm9yIGNvbnNpc3RlbmN5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBkdG9hLCBp dCBpcyBvcHRpb25hbAorICogd2hlbiBNVUxUSVBMRV9USFJFQURTIGlzIG5vdCBkZWZpbmVkLgor ICovCisKKyB2b2lkCisjaWZkZWYgS1JfaGVhZGVycworZnJlZWR0b2EocHRyLCBzKSBzdHJ1Y3Qg X3JlZW50ICpwdHIsIGNoYXIgKnM7CisjZWxzZQorZnJlZWR0b2Eoc3RydWN0IF9yZWVudCAqcHRy LCBjaGFyICpzKQorI2VuZGlmCit7CisJQmlnaW50ICpiID0gKEJpZ2ludCAqKSgoaW50ICopcyAt IDEpOworCWItPl9tYXh3ZHMgPSAxIDw8IChiLT5fayA9ICooaW50KiliKTsKKwlCZnJlZShwdHIs IGIpOworI2lmbmRlZiBNVUxUSVBMRV9USFJFQURTCisJaWYgKHMgPT0gZHRvYV9yZXN1bHQpCisJ CWR0b2FfcmVzdWx0ID0gMDsKKyNlbmRpZgorCX0KK0RFRl9TVFJPTkcoZnJlZWR0b2EpOworCisg aW50CitxdW9yZW0KKyNpZmRlZiBLUl9oZWFkZXJzCisJKGIsIFMpIEJpZ2ludCAqYiwgKlM7Cisj ZWxzZQorCShCaWdpbnQgKmIsIEJpZ2ludCAqUykKKyNlbmRpZgoreworCWludCBuOworCVVMb25n ICpieCwgKmJ4ZSwgcSwgKnN4LCAqc3hlOworI2lmZGVmIFVMTG9uZworCVVMTG9uZyBib3Jyb3cs IGNhcnJ5LCB5LCB5czsKKyNlbHNlCisJVUxvbmcgYm9ycm93LCBjYXJyeSwgeSwgeXM7CisjaWZk ZWYgUGFja18zMgorCVVMb25nIHNpLCB6LCB6czsKKyNlbmRpZgorI2VuZGlmCisKKwluID0gUy0+ X3dkczsKKyNpZmRlZiBERUJVRworCS8qZGVidWcqLyBpZiAoYi0+X3dkcyA+IG4pCisJLypkZWJ1 ZyovCUJ1Zygib3ZlcnNpemUgYiBpbiBxdW9yZW0iKTsKKyNlbmRpZgorCWlmIChiLT5fd2RzIDwg bikKKwkJcmV0dXJuIDA7CisJc3ggPSBTLT5feDsKKwlzeGUgPSBzeCArIC0tbjsKKwlieCA9IGIt Pl94OworCWJ4ZSA9IGJ4ICsgbjsKKwlxID0gKmJ4ZSAvICgqc3hlICsgMSk7CS8qIGVuc3VyZSBx IDw9IHRydWUgcXVvdGllbnQgKi8KKyNpZmRlZiBERUJVRworCS8qZGVidWcqLyBpZiAocSA+IDkp CisJLypkZWJ1ZyovCUJ1Zygib3ZlcnNpemVkIHF1b3RpZW50IGluIHF1b3JlbSIpOworI2VuZGlm CisJaWYgKHEpIHsKKwkJYm9ycm93ID0gMDsKKwkJY2FycnkgPSAwOworCQlkbyB7CisjaWZkZWYg VUxMb25nCisJCQl5cyA9ICpzeCsrICogKFVMTG9uZylxICsgY2Fycnk7CisJCQljYXJyeSA9IHlz ID4+IDMyOworCQkJeSA9ICpieCAtICh5cyAmIDB4ZmZmZmZmZmZVTCkgLSBib3Jyb3c7CisJCQli b3Jyb3cgPSB5ID4+IDMyICYgMVVMOworCQkJKmJ4KysgPSB5ICYgMHhmZmZmZmZmZlVMOworI2Vs c2UKKyNpZmRlZiBQYWNrXzMyCisJCQlzaSA9ICpzeCsrOworCQkJeXMgPSAoc2kgJiAweGZmZmYp ICogcSArIGNhcnJ5OworCQkJenMgPSAoc2kgPj4gMTYpICogcSArICh5cyA+PiAxNik7CisJCQlj YXJyeSA9IHpzID4+IDE2OworCQkJeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAt IGJvcnJvdzsKKwkJCWJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7CisJCQl6ID0gKCpieCA+ PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OworCQkJYm9ycm93ID0gKHogJiAweDEwMDAw KSA+PiAxNjsKKwkJCVN0b3JlaW5jKGJ4LCB6LCB5KTsKKyNlbHNlCisJCQl5cyA9ICpzeCsrICog cSArIGNhcnJ5OworCQkJY2FycnkgPSB5cyA+PiAxNjsKKwkJCXkgPSAqYnggLSAoeXMgJiAweGZm ZmYpIC0gYm9ycm93OworCQkJYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKKwkJCSpieCsr ID0geSAmIDB4ZmZmZjsKKyNlbmRpZgorI2VuZGlmCisJCQl9CisJCQl3aGlsZShzeCA8PSBzeGUp OworCQlpZiAoISpieGUpIHsKKwkJCWJ4ID0gYi0+X3g7CisJCQl3aGlsZSgtLWJ4ZSA+IGJ4ICYm ICEqYnhlKQorCQkJCS0tbjsKKwkJCWItPl93ZHMgPSBuOworCQkJfQorCQl9CisJaWYgKGNtcChi LCBTKSA+PSAwKSB7CisJCXErKzsKKwkJYm9ycm93ID0gMDsKKwkJY2FycnkgPSAwOworCQlieCA9 IGItPl94OworCQlzeCA9IFMtPl94OworCQlkbyB7CisjaWZkZWYgVUxMb25nCisJCQl5cyA9ICpz eCsrICsgY2Fycnk7CisJCQljYXJyeSA9IHlzID4+IDMyOworCQkJeSA9ICpieCAtICh5cyAmIDB4 ZmZmZmZmZmZVTCkgLSBib3Jyb3c7CisJCQlib3Jyb3cgPSB5ID4+IDMyICYgMVVMOworCQkJKmJ4 KysgPSB5ICYgMHhmZmZmZmZmZlVMOworI2Vsc2UKKyNpZmRlZiBQYWNrXzMyCisJCQlzaSA9ICpz eCsrOworCQkJeXMgPSAoc2kgJiAweGZmZmYpICsgY2Fycnk7CisJCQl6cyA9IChzaSA+PiAxNikg KyAoeXMgPj4gMTYpOworCQkJY2FycnkgPSB6cyA+PiAxNjsKKwkJCXkgPSAoKmJ4ICYgMHhmZmZm KSAtICh5cyAmIDB4ZmZmZikgLSBib3Jyb3c7CisJCQlib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+ IDE2OworCQkJeiA9ICgqYnggPj4gMTYpIC0gKHpzICYgMHhmZmZmKSAtIGJvcnJvdzsKKwkJCWJv cnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7CisJCQlTdG9yZWluYyhieCwgeiwgeSk7CisjZWxz ZQorCQkJeXMgPSAqc3grKyArIGNhcnJ5OworCQkJY2FycnkgPSB5cyA+PiAxNjsKKwkJCXkgPSAq YnggLSAoeXMgJiAweGZmZmYpIC0gYm9ycm93OworCQkJYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+ PiAxNjsKKwkJCSpieCsrID0geSAmIDB4ZmZmZjsKKyNlbmRpZgorI2VuZGlmCisJCQl9CisJCQl3 aGlsZShzeCA8PSBzeGUpOworCQlieCA9IGItPl94OworCQlieGUgPSBieCArIG47CisJCWlmICgh KmJ4ZSkgeworCQkJd2hpbGUoLS1ieGUgPiBieCAmJiAhKmJ4ZSkKKwkJCQktLW47CisJCQliLT5f d2RzID0gbjsKKwkJCX0KKwkJfQorCXJldHVybiBxOworCX0KKyNlbmRpZiAvKiBfVVNFX0dEVE9B ICovCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zdGRsaWIvZ2R0b2EtZ2R0b2EuYyBiL25ld2xp Yi9saWJjL3N0ZGxpYi9nZHRvYS1nZHRvYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uZGEyMzM4YzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbmV3bGliL2xpYmMvc3RkbGli L2dkdG9hLWdkdG9hLmMKQEAgLTAsMCArMSw4MzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBhdXRob3Ig b2YgdGhpcyBzb2Z0d2FyZSBpcyBEYXZpZCBNLiBHYXkuCisKK0NvcHlyaWdodCAoQykgMTk5OCwg MTk5OSBieSBMdWNlbnQgVGVjaG5vbG9naWVzCitBbGwgUmlnaHRzIFJlc2VydmVkCisKK1Blcm1p c3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUg YW5kCitpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlz IGhlcmVieQorZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhcHBlYXIgaW4gYWxsCitjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IHRoZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzCitwZXJtaXNzaW9uIG5vdGljZSBhbmQgd2FycmFudHkgZGlzY2xhaW1l ciBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUg b2YgTHVjZW50IG9yIGFueSBvZiBpdHMgZW50aXRpZXMKK25vdCBiZSB1c2VkIGluIGFkdmVydGlz aW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCitkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3 YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKK3Blcm1pc3Npb24uCisKK0xVQ0VO VCBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwK K0lOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg RklUTkVTUy4KK0lOIE5PIEVWRU5UIFNIQUxMIExVQ0VOVCBPUiBBTlkgT0YgSVRTIEVOVElUSUVT IEJFIExJQUJMRSBGT1IgQU5ZCitTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERB TUFHRVMgT1IgQU5ZIERBTUFHRVMKK1dIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBV U0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUgorSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBO RUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKK0FSSVNJTkcgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCitUSElTIFNPRlRXQVJF LgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisvKiBQbGVhc2Ugc2VuZCBidWcgcmVwb3J0cyB0byBEYXZpZCBNLiBH YXkgKGRtZyBhdCBhY20gZG90IG9yZywKKyAqIHdpdGggIiBhdCAiIGNoYW5nZWQgYXQgIkAiIGFu ZCAiIGRvdCAiIGNoYW5nZWQgdG8gIi4iKS4JKi8KKworI2luY2x1ZGUgPG5ld2xpYi5oPgorI2lu Y2x1ZGUgPHN5cy9jb25maWcuaD4KKworI2lmZGVmIF9VU0VfR0RUT0EKKyNpbmNsdWRlICJnZHRv YWltcC5oIgorCisgc3RhdGljIEJpZ2ludCAqCisjaWZkZWYgS1JfaGVhZGVycworYml0c3RvYihw dHIsIGJpdHMsIG5iaXRzLCBiYml0cykgVUxvbmcgKmJpdHM7CitzdHJ1Y3QgX3JlZW50IHB0ciwg aW50IG5iaXRzOyBpbnQgKmJiaXRzOworI2Vsc2UKK2JpdHN0b2Ioc3RydWN0IF9yZWVudCAqcHRy LCBVTG9uZyAqYml0cywgaW50IG5iaXRzLCBpbnQgKmJiaXRzKQorI2VuZGlmCit7CisJaW50IGks IGs7CisJQmlnaW50ICpiOworCVVMb25nICpiZSwgKngsICp4MDsKKworCWkgPSBVTGJpdHM7CisJ ayA9IDA7CisJd2hpbGUoaSA8IG5iaXRzKSB7CisJCWkgPDw9IDE7CisJCWsrKzsKKwkJfQorI2lm bmRlZiBQYWNrXzMyCisJaWYgKCFrKQorCQlrID0gMTsKKyNlbmRpZgorCWIgPSBCYWxsb2MocHRy LCBrKTsKKwlpZiAoYiA9PSBOVUxMKQorCQlyZXR1cm4gKE5VTEwpOworCWJlID0gYml0cyArICgo bmJpdHMgLSAxKSA+PiBrc2hpZnQpOworCXggPSB4MCA9IGItPl94OworCWRvIHsKKwkJKngrKyA9 ICpiaXRzICYgQUxMX09OOworI2lmZGVmIFBhY2tfMTYKKwkJKngrKyA9ICgqYml0cyA+PiAxNikg JiBBTExfT047CisjZW5kaWYKKwkJfSB3aGlsZSgrK2JpdHMgPD0gYmUpOworCWkgPSB4IC0geDA7 CisJd2hpbGUoIXgwWy0taV0pCisJCWlmICghaSkgeworCQkJYi0+X3dkcyA9IDA7CisJCQkqYmJp dHMgPSAwOworCQkJZ290byByZXQ7CisJCQl9CisJYi0+X3dkcyA9IGkgKyAxOworCSpiYml0cyA9 IGkqVUxiaXRzICsgMzIgLSBoaTBiaXRzKGItPl94W2ldKTsKKyByZXQ6CisJcmV0dXJuIGI7CisJ fQorCisvKiBkdG9hIGZvciBJRUVFIGFyaXRobWV0aWMgKGRtZyk6IGNvbnZlcnQgZG91YmxlIHRv IEFTQ0lJIHN0cmluZy4KKyAqCisgKiBJbnNwaXJlZCBieSAiSG93IHRvIFByaW50IEZsb2F0aW5n LVBvaW50IE51bWJlcnMgQWNjdXJhdGVseSIgYnkKKyAqIEd1eSBMLiBTdGVlbGUsIEpyLiBhbmQg Sm9uIEwuIFdoaXRlIFtQcm9jLiBBQ00gU0lHUExBTiAnOTAsIHBwLiAxMTItMTI2XS4KKyAqCisg KiBNb2RpZmljYXRpb25zOgorICoJMS4gUmF0aGVyIHRoYW4gaXRlcmF0aW5nLCB3ZSB1c2UgYSBz aW1wbGUgbnVtZXJpYyBvdmVyZXN0aW1hdGUKKyAqCSAgIHRvIGRldGVybWluZSBrID0gZmxvb3Io bG9nMTAoZCkpLiAgV2Ugc2NhbGUgcmVsZXZhbnQKKyAqCSAgIHF1YW50aXRpZXMgdXNpbmcgTyhs b2cyKGspKSByYXRoZXIgdGhhbiBPKGspIG11bHRpcGxpY2F0aW9ucy4KKyAqCTIuIEZvciBzb21l IG1vZGVzID4gMiAoY29ycmVzcG9uZGluZyB0byBlY3Z0IGFuZCBmY3Z0KSwgd2UgZG9uJ3QKKyAq CSAgIHRyeSB0byBnZW5lcmF0ZSBkaWdpdHMgc3RyaWN0bHkgbGVmdCB0byByaWdodC4gIEluc3Rl YWQsIHdlCisgKgkgICBjb21wdXRlIHdpdGggZmV3ZXIgYml0cyBhbmQgcHJvcGFnYXRlIHRoZSBj YXJyeSBpZiBuZWNlc3NhcnkKKyAqCSAgIHdoZW4gcm91bmRpbmcgdGhlIGZpbmFsIGRpZ2l0IHVw LiAgVGhpcyBpcyBvZnRlbiBmYXN0ZXIuCisgKgkzLiBVbmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0 IGlucHV0IHdpbGwgYmUgcm91bmRlZCBuZWFyZXN0LAorICoJICAgbW9kZSAwIHJlbmRlcnMgMWUy MyBhcyAxZTIzIHJhdGhlciB0aGFuIDkuOTk5OTk5OTk5OTk5OTk5ZTIyLgorICoJICAgVGhhdCBp cywgd2UgYWxsb3cgZXF1YWxpdHkgaW4gc3RvcHBpbmcgdGVzdHMgd2hlbiB0aGUKKyAqCSAgIHJv dW5kLW5lYXJlc3QgcnVsZSB3aWxsIGdpdmUgdGhlIHNhbWUgZmxvYXRpbmctcG9pbnQgdmFsdWUK KyAqCSAgIGFzIHdvdWxkIHNhdGlzZmFjdGlvbiBvZiB0aGUgc3RvcHBpbmcgdGVzdCB3aXRoIHN0 cmljdAorICoJICAgaW5lcXVhbGl0eS4KKyAqCTQuIFdlIHJlbW92ZSBjb21tb24gZmFjdG9ycyBv ZiBwb3dlcnMgb2YgMiBmcm9tIHJlbGV2YW50CisgKgkgICBxdWFudGl0aWVzLgorICoJNS4gV2hl biBjb252ZXJ0aW5nIGZsb2F0aW5nLXBvaW50IGludGVnZXJzIGxlc3MgdGhhbiAxZTE2LAorICoJ ICAgd2UgdXNlIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgcmF0aGVyIHRoYW4gcmVzb3J0aW5n CisgKgkgICB0byBtdWx0aXBsZS1wcmVjaXNpb24gaW50ZWdlcnMuCisgKgk2LiBXaGVuIGFza2Vk IHRvIHByb2R1Y2UgZmV3ZXIgdGhhbiAxNSBkaWdpdHMsIHdlIGZpcnN0IHRyeQorICoJICAgdG8g Z2V0IGJ5IHdpdGggZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpYzsgd2UgcmVzb3J0IHRvCisgKgkg ICBtdWx0aXBsZS1wcmVjaXNpb24gaW50ZWdlciBhcml0aG1ldGljIG9ubHkgaWYgd2UgY2Fubm90 CisgKgkgICBndWFyYW50ZWUgdGhhdCB0aGUgZmxvYXRpbmctcG9pbnQgY2FsY3VsYXRpb24gaGFz IGdpdmVuCisgKgkgICB0aGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0LiAgRm9yIGsgcmVxdWVz dGVkIGRpZ2l0cyBhbmQKKyAqCSAgICJ1bmlmb3JtbHkiIGRpc3RyaWJ1dGVkIGlucHV0LCB0aGUg cHJvYmFiaWxpdHkgaXMKKyAqCSAgIHNvbWV0aGluZyBsaWtlIDEwXihrLTE1KSB0aGF0IHdlIG11 c3QgcmVzb3J0IHRvIHRoZSBMb25nCisgKgkgICBjYWxjdWxhdGlvbi4KKyAqLworCisgY2hhciAq CitnZHRvYQorI2lmZGVmIEtSX2hlYWRlcnMKKwkocHRyLCBmcGksIGJlLCBiaXRzLCBraW5kcCwg bW9kZSwgbmRpZ2l0cywgZGVjcHQsIHJ2ZSkKKwlzdHJ1Y3QgX3JlZW50ICpwdHIsIEZQSSAqZnBp OyBpbnQgYmU7IFVMb25nICpiaXRzOworCWludCAqa2luZHAsIG1vZGUsIG5kaWdpdHMsICpkZWNw dDsgY2hhciAqKnJ2ZTsKKyNlbHNlCisJKHN0cnVjdCBfcmVlbnQgKnB0ciwgRlBJICpmcGksIGlu dCBiZSwgVUxvbmcgKmJpdHMsIGludCAqa2luZHAsCisJIGludCBtb2RlLCBpbnQgbmRpZ2l0cywg aW50ICpkZWNwdCwgY2hhciAqKnJ2ZSkKKyNlbmRpZgoreworIC8qCUFyZ3VtZW50cyBuZGlnaXRz IGFuZCBkZWNwdCBhcmUgc2ltaWxhciB0byB0aGUgc2Vjb25kIGFuZCB0aGlyZAorCWFyZ3VtZW50 cyBvZiBlY3Z0IGFuZCBmY3Z0OyB0cmFpbGluZyB6ZXJvcyBhcmUgc3VwcHJlc3NlZCBmcm9tCisJ dGhlIHJldHVybmVkIHN0cmluZy4gIElmIG5vdCBudWxsLCAqcnZlIGlzIHNldCB0byBwb2ludAor CXRvIHRoZSBlbmQgb2YgdGhlIHJldHVybiB2YWx1ZS4gIElmIGQgaXMgKy1JbmZpbml0eSBvciBO YU4sCisJdGhlbiAqZGVjcHQgaXMgc2V0IHRvIDk5OTkuCisJYmUgPSBleHBvbmVudDogdmFsdWUg PSAoaW50ZWdlciByZXByZXNlbnRlZCBieSBiaXRzKSAqICgyIHRvIHRoZSBwb3dlciBvZiBiZSku CisKKwltb2RlOgorCQkwID09PiBzaG9ydGVzdCBzdHJpbmcgdGhhdCB5aWVsZHMgZCB3aGVuIHJl YWQgaW4KKwkJCWFuZCByb3VuZGVkIHRvIG5lYXJlc3QuCisJCTEgPT0+IGxpa2UgMCwgYnV0IHdp dGggU3RlZWxlICYgV2hpdGUgc3RvcHBpbmcgcnVsZTsKKwkJCWUuZy4gd2l0aCBJRUVFIFA3NTQg YXJpdGhtZXRpYyAsIG1vZGUgMCBnaXZlcworCQkJMWUyMyB3aGVyZWFzIG1vZGUgMSBnaXZlcyA5 Ljk5OTk5OTk5OTk5OTk5OWUyMi4KKwkJMiA9PT4gbWF4KDEsbmRpZ2l0cykgc2lnbmlmaWNhbnQg ZGlnaXRzLiAgVGhpcyBnaXZlcyBhCisJCQlyZXR1cm4gdmFsdWUgc2ltaWxhciB0byB0aGF0IG9m IGVjdnQsIGV4Y2VwdAorCQkJdGhhdCB0cmFpbGluZyB6ZXJvcyBhcmUgc3VwcHJlc3NlZC4KKwkJ MyA9PT4gdGhyb3VnaCBuZGlnaXRzIHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuICBUaGlzCisJCQln aXZlcyBhIHJldHVybiB2YWx1ZSBzaW1pbGFyIHRvIHRoYXQgZnJvbSBmY3Z0LAorCQkJZXhjZXB0 IHRoYXQgdHJhaWxpbmcgemVyb3MgYXJlIHN1cHByZXNzZWQsIGFuZAorCQkJbmRpZ2l0cyBjYW4g YmUgbmVnYXRpdmUuCisJCTQtOSBzaG91bGQgZ2l2ZSB0aGUgc2FtZSByZXR1cm4gdmFsdWVzIGFz IDItMywgaS5lLiwKKwkJCTQgPD0gbW9kZSA8PSA5ID09PiBzYW1lIHJldHVybiBhcyBtb2RlCisJ CQkyICsgKG1vZGUgJiAxKS4gIFRoZXNlIG1vZGVzIGFyZSBtYWlubHkgZm9yCisJCQlkZWJ1Z2dp bmc7IG9mdGVuIHRoZXkgcnVuIHNsb3dlciBidXQgc29tZXRpbWVzCisJCQlmYXN0ZXIgdGhhbiBt b2RlcyAyLTMuCisJCTQsNSw4LDkgPT0+IGxlZnQtdG8tcmlnaHQgZGlnaXQgZ2VuZXJhdGlvbi4K KwkJNi05ID09PiBkb24ndCB0cnkgZmFzdCBmbG9hdGluZy1wb2ludCBlc3RpbWF0ZQorCQkJKGlm IGFwcGxpY2FibGUpLgorCisJCVZhbHVlcyBvZiBtb2RlIG90aGVyIHRoYW4gMC05IGFyZSB0cmVh dGVkIGFzIG1vZGUgMC4KKworCQlTdWZmaWNpZW50IHNwYWNlIGlzIGFsbG9jYXRlZCB0byB0aGUg cmV0dXJuIHZhbHVlCisJCXRvIGhvbGQgdGhlIHN1cHByZXNzZWQgdHJhaWxpbmcgemVyb3MuCisJ Ki8KKworCWludCBiYml0cywgYjIsIGI1LCBiZTAsIGRpZywgaSwgaWVwcywgaWxpbSwgaWxpbTAs IGlsaW0xLCBpbmV4OworCWludCBqLCBqMSwgaywgazAsIGtfY2hlY2ssIGtpbmQsIGxlZnRyaWdo dCwgbTIsIG01LCBuYml0czsKKwlpbnQgcmRpciwgczIsIHM1LCBzcGVjX2Nhc2UsIHRyeV9xdWlj azsKKwlMb25nIEw7CisJQmlnaW50ICpiLCAqYjEsICpkZWx0YSwgKm1sbywgKm1oaSwgKm1oaTEs ICpTOworCWRvdWJsZSBkMiwgZHM7CisJY2hhciAqcywgKnMwOworCVUgZCwgZXBzOworCisjaWZu ZGVmIE1VTFRJUExFX1RIUkVBRFMKKwlpZiAoZHRvYV9yZXN1bHQpIHsKKwkJZnJlZWR0b2EocHRy LCBkdG9hX3Jlc3VsdCk7CisJCWR0b2FfcmVzdWx0ID0gMDsKKwkJfQorI2VuZGlmCisJaW5leCA9 IDA7CisJa2luZCA9ICpraW5kcCAmPSB+U1RSVE9HX0luZXhhY3Q7CisJc3dpdGNoKGtpbmQgJiBT VFJUT0dfUmV0bWFzaykgeworCSAgY2FzZSBTVFJUT0dfWmVybzoKKwkJZ290byByZXRfemVybzsK KwkgIGNhc2UgU1RSVE9HX05vcm1hbDoKKwkgIGNhc2UgU1RSVE9HX0Rlbm9ybWFsOgorCQlicmVh azsKKwkgIGNhc2UgU1RSVE9HX0luZmluaXRlOgorCQkqZGVjcHQgPSAtMzI3Njg7CisJCXJldHVy biBucnZfYWxsb2MocHRyLCAiSW5maW5pdHkiLCBydmUsIDgpOworCSAgY2FzZSBTVFJUT0dfTmFO OgorCQkqZGVjcHQgPSAtMzI3Njg7CisJCXJldHVybiBucnZfYWxsb2MocHRyLCAiTmFOIiwgcnZl LCAzKTsKKwkgIGRlZmF1bHQ6CisJCXJldHVybiAwOworCSAgfQorCWIgPSBiaXRzdG9iKHB0ciwg Yml0cywgbmJpdHMgPSBmcGktPm5iaXRzLCAmYmJpdHMpOworCWlmIChiID09IE5VTEwpCisJCXJl dHVybiAoTlVMTCk7CisJYmUwID0gYmU7CisJaWYgKCAoaSA9IHRyYWlseihiKSkgIT0wKSB7CisJ CXJzaGlmdChiLCBpKTsKKwkJYmUgKz0gaTsKKwkJYmJpdHMgLT0gaTsKKwkJfQorCWlmICghYi0+ X3dkcykgeworCQlCZnJlZShwdHIsIGIpOworIHJldF96ZXJvOgorCQkqZGVjcHQgPSAxOworCQly ZXR1cm4gbnJ2X2FsbG9jKHB0ciwgIjAiLCBydmUsIDEpOworCQl9CisKKwlkdmFsKGQpID0gYjJk KGIsICZpKTsKKwlpID0gYmUgKyBiYml0cyAtIDE7CisJd29yZDAoZCkgJj0gRnJhY19tYXNrMTsK Kwl3b3JkMChkKSB8PSBFeHBfMTE7CisjaWZkZWYgSUJNCisJaWYgKCAoaiA9IDExIC0gaGkwYml0 cyh3b3JkMChkKSAmIEZyYWNfbWFzaykpICE9MCkKKwkJZHZhbChkKSAvPSAxIDw8IGo7CisjZW5k aWYKKworCS8qIGxvZyh4KQl+PX4gbG9nKDEuNSkgKyAoeC0xLjUpLzEuNQorCSAqIGxvZzEwKHgp CSA9ICBsb2coeCkgLyBsb2coMTApCisJICoJCX49fiBsb2coMS41KS9sb2coMTApICsgKHgtMS41 KS8oMS41KmxvZygxMCkpCisJICogbG9nMTAoJmQpID0gKGktQmlhcykqbG9nKDIpL2xvZygxMCkg KyBsb2cxMChkMikKKwkgKgorCSAqIFRoaXMgc3VnZ2VzdHMgY29tcHV0aW5nIGFuIGFwcHJveGlt YXRpb24gayB0byBsb2cxMCgmZCkgYnkKKwkgKgorCSAqIGsgPSAoaSAtIEJpYXMpKjAuMzAxMDI5 OTk1NjYzOTgxCisJICoJKyAoIChkMi0xLjUpKjAuMjg5NTI5NjU0NjAyMTY4ICsgMC4xNzYwOTEy NTkwNTU2ODEgKTsKKwkgKgorCSAqIFdlIHdhbnQgayB0byBiZSB0b28gbGFyZ2UgcmF0aGVyIHRo YW4gdG9vIHNtYWxsLgorCSAqIFRoZSBlcnJvciBpbiB0aGUgZmlyc3Qtb3JkZXIgVGF5bG9yIHNl cmllcyBhcHByb3hpbWF0aW9uCisJICogaXMgaW4gb3VyIGZhdm9yLCBzbyB3ZSBqdXN0IHJvdW5k IHVwIHRoZSBjb25zdGFudCBlbm91Z2gKKwkgKiB0byBjb21wZW5zYXRlIGZvciBhbnkgZXJyb3Ig aW4gdGhlIG11bHRpcGxpY2F0aW9uIG9mCisJICogKGkgLSBCaWFzKSBieSAwLjMwMTAyOTk5NTY2 Mzk4MTsgc2luY2UgfGkgLSBCaWFzfCA8PSAxMDc3LAorCSAqIGFuZCAxMDc3ICogMC4zMDEwMyAq IDJeLTUyIH49fiA3LjJlLTE0LAorCSAqIGFkZGluZyAxZS0xMyB0byB0aGUgY29uc3RhbnQgdGVy bSBtb3JlIHRoYW4gc3VmZmljZXMuCisJICogSGVuY2Ugd2UgYWRqdXN0IHRoZSBjb25zdGFudCB0 ZXJtIHRvIDAuMTc2MDkxMjU5MDU1OC4KKwkgKiAoV2UgY291bGQgZ2V0IGEgbW9yZSBhY2N1cmF0 ZSBrIGJ5IGludm9raW5nIGxvZzEwLAorCSAqICBidXQgdGhpcyBpcyBwcm9iYWJseSBub3Qgd29y dGh3aGlsZS4pCisJICovCisjaWZkZWYgSUJNCisJaSA8PD0gMjsKKwlpICs9IGo7CisjZW5kaWYK KwlkcyA9IChkdmFsKGQpLTEuNSkqMC4yODk1Mjk2NTQ2MDIxNjggKyAwLjE3NjA5MTI1OTA1NTgg KyBpKjAuMzAxMDI5OTk1NjYzOTgxOworCisJLyogY29ycmVjdCBhc3N1bXB0aW9uIGFib3V0IGV4 cG9uZW50IHJhbmdlICovCisJaWYgKChqID0gaSkgPCAwKQorCQlqID0gLWo7CisJaWYgKChqIC09 IDEwNzcpID4gMCkKKwkJZHMgKz0gaiAqIDdlLTE3OworCisJayA9IChpbnQpZHM7CisJaWYgKGRz IDwgMC4gJiYgZHMgIT0gaykKKwkJay0tOwkvKiB3YW50IGsgPSBmbG9vcihkcykgKi8KKwlrX2No ZWNrID0gMTsKKyNpZmRlZiBJQk0KKwlqID0gYmUgKyBiYml0cyAtIDE7CisJaWYgKCAoajEgPSBq ICYgMykgIT0wKQorCQlkdmFsKGQpICo9IDEgPDwgajE7CisJd29yZDAoZCkgKz0gaiA8PCBFeHBf c2hpZnQgLSAyICYgRXhwX21hc2s7CisjZWxzZQorCXdvcmQwKGQpICs9IChiZSArIGJiaXRzIC0g MSkgPDwgRXhwX3NoaWZ0OworI2VuZGlmCisJaWYgKGsgPj0gMCAmJiBrIDw9IFRlbl9wbWF4KSB7 CisJCWlmIChkdmFsKGQpIDwgdGVuc1trXSkKKwkJCWstLTsKKwkJa19jaGVjayA9IDA7CisJCX0K KwlqID0gYmJpdHMgLSBpIC0gMTsKKwlpZiAoaiA+PSAwKSB7CisJCWIyID0gMDsKKwkJczIgPSBq OworCQl9CisJZWxzZSB7CisJCWIyID0gLWo7CisJCXMyID0gMDsKKwkJfQorCWlmIChrID49IDAp IHsKKwkJYjUgPSAwOworCQlzNSA9IGs7CisJCXMyICs9IGs7CisJCX0KKwllbHNlIHsKKwkJYjIg LT0gazsKKwkJYjUgPSAtazsKKwkJczUgPSAwOworCQl9CisJaWYgKG1vZGUgPCAwIHx8IG1vZGUg PiA5KQorCQltb2RlID0gMDsKKwl0cnlfcXVpY2sgPSAxOworCWlmIChtb2RlID4gNSkgeworCQlt b2RlIC09IDQ7CisJCXRyeV9xdWljayA9IDA7CisJCX0KKwllbHNlIGlmIChpID49IC00IC0gRW1p biB8fCBpIDwgRW1pbikKKwkJdHJ5X3F1aWNrID0gMDsKKwlsZWZ0cmlnaHQgPSAxOworCWlsaW0g PSBpbGltMSA9IC0xOwkvKiBWYWx1ZXMgZm9yIGNhc2VzIDAgYW5kIDE7IGRvbmUgaGVyZSB0byAq LworCQkJCS8qIHNpbGVuY2UgZXJyb25lb3VzICJnY2MgLVdhbGwiIHdhcm5pbmcuICovCisJc3dp dGNoKG1vZGUpIHsKKwkJY2FzZSAwOgorCQljYXNlIDE6CisJCQlpID0gKGludCkobmJpdHMgKiAu MzAxMDMpICsgMzsKKwkJCW5kaWdpdHMgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgMjoKKwkJCWxl ZnRyaWdodCA9IDA7CisJCQkvKiBubyBicmVhayAqLworCQljYXNlIDQ6CisJCQlpZiAobmRpZ2l0 cyA8PSAwKQorCQkJCW5kaWdpdHMgPSAxOworCQkJaWxpbSA9IGlsaW0xID0gaSA9IG5kaWdpdHM7 CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJbGVmdHJpZ2h0ID0gMDsKKwkJCS8qIG5vIGJyZWFr ICovCisJCWNhc2UgNToKKwkJCWkgPSBuZGlnaXRzICsgayArIDE7CisJCQlpbGltID0gaTsKKwkJ CWlsaW0xID0gaSAtIDE7CisJCQlpZiAoaSA8PSAwKQorCQkJCWkgPSAxOworCQl9CisJcyA9IHMw ID0gcnZfYWxsb2MocHRyLCBpKTsKKwlpZiAocyA9PSBOVUxMKQorCQlyZXR1cm4gKE5VTEwpOwor CisJaWYgKCAocmRpciA9IGZwaS0+cm91bmRpbmcgLSAxKSAhPTApIHsKKwkJaWYgKHJkaXIgPCAw KQorCQkJcmRpciA9IDI7CisJCWlmIChraW5kICYgU1RSVE9HX05lZykKKwkJCXJkaXIgPSAzIC0g cmRpcjsKKwkJfQorCisJLyogTm93IHJkaXIgPSAwID09PiByb3VuZCBuZWFyLCAxID09PiByb3Vu ZCB1cCwgMiA9PT4gcm91bmQgZG93bi4gKi8KKworCWlmIChpbGltID49IDAgJiYgaWxpbSA8PSBR dWlja19tYXggJiYgdHJ5X3F1aWNrICYmICFyZGlyCisjaWZuZGVmIElNUFJFQ0lTRV9JTkVYQUNU CisJCSYmIGsgPT0gMAorI2VuZGlmCisJCQkJCQkJCSkgeworCisJCS8qIFRyeSB0byBnZXQgYnkg d2l0aCBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljLiAqLworCisJCWkgPSAwOworCQlkMiA9IGR2 YWwoZCk7CisjaWZkZWYgSUJNCisJCWlmICggKGogPSAxMSAtIGhpMGJpdHMod29yZDAoZCkgJiBG cmFjX21hc2spKSAhPTApCisJCQlkdmFsKGQpIC89IDEgPDwgajsKKyNlbmRpZgorCQlrMCA9IGs7 CisJCWlsaW0wID0gaWxpbTsKKwkJaWVwcyA9IDI7IC8qIGNvbnNlcnZhdGl2ZSAqLworCQlpZiAo ayA+IDApIHsKKwkJCWRzID0gdGVuc1trJjB4Zl07CisJCQlqID0gayA+PiA0OworCQkJaWYgKGog JiBCbGV0Y2gpIHsKKwkJCQkvKiBwcmV2ZW50IG92ZXJmbG93cyAqLworCQkJCWogJj0gQmxldGNo IC0gMTsKKwkJCQlkdmFsKGQpIC89IGJpZ3RlbnNbbl9iaWd0ZW5zLTFdOworCQkJCWllcHMrKzsK KwkJCQl9CisJCQlmb3IoOyBqOyBqID4+PSAxLCBpKyspCisJCQkJaWYgKGogJiAxKSB7CisJCQkJ CWllcHMrKzsKKwkJCQkJZHMgKj0gYmlndGVuc1tpXTsKKwkJCQkJfQorCQkJfQorCQllbHNlICB7 CisJCQlkcyA9IDEuOworCQkJaWYgKCAoajEgPSAtaykgIT0wKSB7CisJCQkJZHZhbChkKSAqPSB0 ZW5zW2oxICYgMHhmXTsKKwkJCQlmb3IoaiA9IGoxID4+IDQ7IGo7IGogPj49IDEsIGkrKykKKwkJ CQkJaWYgKGogJiAxKSB7CisJCQkJCQlpZXBzKys7CisJCQkJCQlkdmFsKGQpICo9IGJpZ3RlbnNb aV07CisJCQkJCQl9CisJCQkJfQorCQkJfQorCQlpZiAoa19jaGVjayAmJiBkdmFsKGQpIDwgMS4g JiYgaWxpbSA+IDApIHsKKwkJCWlmIChpbGltMSA8PSAwKQorCQkJCWdvdG8gZmFzdF9mYWlsZWQ7 CisJCQlpbGltID0gaWxpbTE7CisJCQlrLS07CisJCQlkdmFsKGQpICo9IDEwLjsKKwkJCWllcHMr KzsKKwkJCX0KKwkJZHZhbChlcHMpID0gaWVwcypkdmFsKGQpICsgNy47CisJCXdvcmQwKGVwcykg LT0gKFAtMSkqRXhwX21zazE7CisJCWlmIChpbGltID09IDApIHsKKwkJCVMgPSBtaGkgPSAwOwor CQkJZHZhbChkKSAtPSA1LjsKKwkJCWlmIChkdmFsKGQpID4gZHZhbChlcHMpKQorCQkJCWdvdG8g b25lX2RpZ2l0OworCQkJaWYgKGR2YWwoZCkgPCAtZHZhbChlcHMpKQorCQkJCWdvdG8gbm9fZGln aXRzOworCQkJZ290byBmYXN0X2ZhaWxlZDsKKwkJCX0KKyNpZm5kZWYgTm9fbGVmdHJpZ2h0CisJ CWlmIChsZWZ0cmlnaHQpIHsKKwkJCS8qIFVzZSBTdGVlbGUgJiBXaGl0ZSBtZXRob2Qgb2Ygb25s eQorCQkJICogZ2VuZXJhdGluZyBkaWdpdHMgbmVlZGVkLgorCQkJICovCisJCQlkdmFsKGVwcykg PSBkcyowLjUvdGVuc1tpbGltLTFdIC0gZHZhbChlcHMpOworCQkJZm9yKGkgPSAwOzspIHsKKwkJ CQlMID0gKExvbmcpKGR2YWwoZCkvZHMpOworCQkJCWR2YWwoZCkgLT0gTCpkczsKKwkJCQkqcysr ID0gJzAnICsgKGludClMOworCQkJCWlmIChkdmFsKGQpIDwgZHZhbChlcHMpKSB7CisJCQkJCWlm IChkdmFsKGQpKQorCQkJCQkJaW5leCA9IFNUUlRPR19JbmV4bG87CisJCQkJCWdvdG8gcmV0MTsK KwkJCQkJfQorCQkJCWlmIChkcyAtIGR2YWwoZCkgPCBkdmFsKGVwcykpCisJCQkJCWdvdG8gYnVt cF91cDsKKwkJCQlpZiAoKytpID49IGlsaW0pCisJCQkJCWJyZWFrOworCQkJCWR2YWwoZXBzKSAq PSAxMC47CisJCQkJZHZhbChkKSAqPSAxMC47CisJCQkJfQorCQkJfQorCQllbHNlIHsKKyNlbmRp ZgorCQkJLyogR2VuZXJhdGUgaWxpbSBkaWdpdHMsIHRoZW4gZml4IHRoZW0gdXAuICovCisJCQlk dmFsKGVwcykgKj0gdGVuc1tpbGltLTFdOworCQkJZm9yKGkgPSAxOzsgaSsrLCBkdmFsKGQpICo9 IDEwLikgeworCQkJCWlmICggKEwgPSAoTG9uZykoZHZhbChkKS9kcykpICE9MCkKKwkJCQkJZHZh bChkKSAtPSBMKmRzOworCQkJCSpzKysgPSAnMCcgKyAoaW50KUw7CisJCQkJaWYgKGkgPT0gaWxp bSkgeworCQkJCQlkcyAqPSAwLjU7CisJCQkJCWlmIChkdmFsKGQpID4gZHMgKyBkdmFsKGVwcykp CisJCQkJCQlnb3RvIGJ1bXBfdXA7CisJCQkJCWVsc2UgaWYgKGR2YWwoZCkgPCBkcyAtIGR2YWwo ZXBzKSkgeworCQkJCQkJaWYgKGR2YWwoZCkpCisJCQkJCQkJaW5leCA9IFNUUlRPR19JbmV4bG87 CisJCQkJCQlnb3RvIGNsZWFyX3RyYWlsaW5nMDsKKwkJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJ CX0KKwkJCQl9CisjaWZuZGVmIE5vX2xlZnRyaWdodAorCQkJfQorI2VuZGlmCisgZmFzdF9mYWls ZWQ6CisJCXMgPSBzMDsKKwkJZHZhbChkKSA9IGQyOworCQlrID0gazA7CisJCWlsaW0gPSBpbGlt MDsKKwkJfQorCisJLyogRG8gd2UgaGF2ZSBhICJzbWFsbCIgaW50ZWdlcj8gKi8KKworCWlmIChi ZSA+PSAwICYmIGsgPD0gSW50X21heCkgeworCQkvKiBZZXMuICovCisJCWRzID0gdGVuc1trXTsK KwkJaWYgKG5kaWdpdHMgPCAwICYmIGlsaW0gPD0gMCkgeworCQkJUyA9IG1oaSA9IDA7CisJCQlp ZiAoaWxpbSA8IDAgfHwgZHZhbChkKSA8PSA1KmRzKQorCQkJCWdvdG8gbm9fZGlnaXRzOworCQkJ Z290byBvbmVfZGlnaXQ7CisJCQl9CisJCWZvcihpID0gMTs7IGkrKywgZHZhbChkKSAqPSAxMC4p IHsKKwkJCUwgPSBkdmFsKGQpIC8gZHM7CisJCQlkdmFsKGQpIC09IEwqZHM7CisjaWZkZWYgQ2hl Y2tfRkxUX1JPVU5EUworCQkJLyogSWYgRkxUX1JPVU5EUyA9PSAyLCBMIHdpbGwgdXN1YWxseSBi ZSBoaWdoIGJ5IDEgKi8KKwkJCWlmIChkdmFsKGQpIDwgMCkgeworCQkJCUwtLTsKKwkJCQlkdmFs KGQpICs9IGRzOworCQkJCX0KKyNlbmRpZgorCQkJKnMrKyA9ICcwJyArIChpbnQpTDsKKwkJCWlm IChkdmFsKGQpID09IDAuKQorCQkJCWJyZWFrOworCQkJaWYgKGkgPT0gaWxpbSkgeworCQkJCWlm IChyZGlyKSB7CisJCQkJCWlmIChyZGlyID09IDEpCisJCQkJCQlnb3RvIGJ1bXBfdXA7CisJCQkJ CWluZXggPSBTVFJUT0dfSW5leGxvOworCQkJCQlnb3RvIHJldDE7CisJCQkJCX0KKwkJCQlkdmFs KGQpICs9IGR2YWwoZCk7CisjaWZkZWYgUk9VTkRfQklBU0VECisJCQkJaWYgKGR2YWwoZCkgPj0g ZHMpCisjZWxzZQorCQkJCWlmIChkdmFsKGQpID4gZHMgfHwgKGR2YWwoZCkgPT0gZHMgJiYgTCAm IDEpKQorI2VuZGlmCisJCQkJCXsKKyBidW1wX3VwOgorCQkJCQlpbmV4ID0gU1RSVE9HX0luZXho aTsKKwkJCQkJd2hpbGUoKi0tcyA9PSAnOScpCisJCQkJCQlpZiAocyA9PSBzMCkgeworCQkJCQkJ CWsrKzsKKwkJCQkJCQkqcyA9ICcwJzsKKwkJCQkJCQlicmVhazsKKwkJCQkJCQl9CisJCQkJCSsr KnMrKzsKKwkJCQkJfQorCQkJCWVsc2UgeworCQkJCQlpbmV4ID0gU1RSVE9HX0luZXhsbzsKKyBj bGVhcl90cmFpbGluZzA6CisJCQkJCXdoaWxlKCotLXMgPT0gJzAnKXt9CisJCQkJCSsrczsKKwkJ CQkJfQorCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJZ290byByZXQxOworCQl9CisKKwltMiA9 IGIyOworCW01ID0gYjU7CisJbWhpID0gbWxvID0gMDsKKwlpZiAobGVmdHJpZ2h0KSB7CisJCWkg PSBuYml0cyAtIGJiaXRzOworCQlpZiAoYmUgLSBpKysgPCBmcGktPmVtaW4gJiYgbW9kZSAhPSAz ICYmIG1vZGUgIT0gNSkgeworCQkJLyogZGVub3JtYWwgKi8KKwkJCWkgPSBiZSAtIGZwaS0+ZW1p biArIDE7CisJCQlpZiAobW9kZSA+PSAyICYmIGlsaW0gPiAwICYmIGlsaW0gPCBpKQorCQkJCWdv dG8gc21hbGxfaWxpbTsKKwkJCX0KKwkJZWxzZSBpZiAobW9kZSA+PSAyKSB7Cisgc21hbGxfaWxp bToKKwkJCWogPSBpbGltIC0gMTsKKwkJCWlmIChtNSA+PSBqKQorCQkJCW01IC09IGo7CisJCQll bHNlIHsKKwkJCQlzNSArPSBqIC09IG01OworCQkJCWI1ICs9IGo7CisJCQkJbTUgPSAwOworCQkJ CX0KKwkJCWlmICgoaSA9IGlsaW0pIDwgMCkgeworCQkJCW0yIC09IGk7CisJCQkJaSA9IDA7CisJ CQkJfQorCQkJfQorCQliMiArPSBpOworCQlzMiArPSBpOworCQltaGkgPSBpMmIocHRyLCAxKTsK KwkJaWYgKG1oaSA9PSBOVUxMKQorCQkJcmV0dXJuIChOVUxMKTsKKwkJfQorCWlmIChtMiA+IDAg JiYgczIgPiAwKSB7CisJCWkgPSBtMiA8IHMyID8gbTIgOiBzMjsKKwkJYjIgLT0gaTsKKwkJbTIg LT0gaTsKKwkJczIgLT0gaTsKKwkJfQorCWlmIChiNSA+IDApIHsKKwkJaWYgKGxlZnRyaWdodCkg eworCQkJaWYgKG01ID4gMCkgeworCQkJCW1oaSA9IHBvdzVtdWx0KHB0ciwgbWhpLCBtNSk7CisJ CQkJaWYgKG1oaSA9PSBOVUxMKQorCQkJCQlyZXR1cm4gKE5VTEwpOworCQkJCWIxID0gbXVsdChw dHIsIG1oaSwgYik7CisJCQkJaWYgKGIxID09IE5VTEwpCisJCQkJCXJldHVybiAoTlVMTCk7CisJ CQkJQmZyZWUocHRyLCBiKTsKKwkJCQliID0gYjE7CisJCQkJfQorCQkJaWYgKCAoaiA9IGI1IC0g bTUpICE9MCkgeworCQkJCWIgPSBwb3c1bXVsdChwdHIsIGIsIGopOworCQkJCWlmIChiID09IE5V TEwpCisJCQkJCXJldHVybiAoTlVMTCk7CisJCQkJfQorCQkJfQorCQllbHNlIHsKKwkJCWIgPSBw b3c1bXVsdChwdHIsIGIsIGI1KTsKKwkJCWlmIChiID09IE5VTEwpCisJCQkJcmV0dXJuIChOVUxM KTsKKwkJCX0KKwkJfQorCVMgPSBpMmIocHRyLCAxKTsKKwlpZiAoUyA9PSBOVUxMKQorCQlyZXR1 cm4gKE5VTEwpOworCWlmIChzNSA+IDApIHsKKwkJUyA9IHBvdzVtdWx0KHB0ciwgUywgczUpOwor CQlpZiAoUyA9PSBOVUxMKQorCQkJcmV0dXJuIChOVUxMKTsKKwkJfQorCisJLyogQ2hlY2sgZm9y IHNwZWNpYWwgY2FzZSB0aGF0IGQgaXMgYSBub3JtYWxpemVkIHBvd2VyIG9mIDIuICovCisKKwlz cGVjX2Nhc2UgPSAwOworCWlmIChtb2RlIDwgMikgeworCQlpZiAoYmJpdHMgPT0gMSAmJiBiZTAg PiBmcGktPmVtaW4gKyAxKSB7CisJCQkvKiBUaGUgc3BlY2lhbCBjYXNlICovCisJCQliMisrOwor CQkJczIrKzsKKwkJCXNwZWNfY2FzZSA9IDE7CisJCQl9CisJCX0KKworCS8qIEFycmFuZ2UgZm9y IGNvbnZlbmllbnQgY29tcHV0YXRpb24gb2YgcXVvdGllbnRzOgorCSAqIHNoaWZ0IGxlZnQgaWYg bmVjZXNzYXJ5IHNvIGRpdmlzb3IgaGFzIDQgbGVhZGluZyAwIGJpdHMuCisJICoKKwkgKiBQZXJo YXBzIHdlIHNob3VsZCBqdXN0IGNvbXB1dGUgbGVhZGluZyAyOCBiaXRzIG9mIFMgb25jZQorCSAq IGFuZCBmb3IgYWxsIGFuZCBwYXNzIHRoZW0gYW5kIGEgc2hpZnQgdG8gcXVvcmVtLCBzbyBpdAor CSAqIGNhbiBkbyBzaGlmdHMgYW5kIG9ycyB0byBjb21wdXRlIHRoZSBudW1lcmF0b3IgZm9yIHEu CisJICovCisJaSA9ICgoczUgPyBoaTBiaXRzKFMtPl94W1MtPl93ZHMtMV0pIDogVUxiaXRzIC0g MSkgLSBzMiAtIDQpICYga21hc2s7CisJbTIgKz0gaTsKKwlpZiAoKGIyICs9IGkpID4gMCkgewor CQliID0gbHNoaWZ0KHB0ciwgYiwgYjIpOworCQlpZiAoYiA9PSBOVUxMKQorCQkJcmV0dXJuIChO VUxMKTsKKwkJfQorCWlmICgoczIgKz0gaSkgPiAwKSB7CisJCVMgPSBsc2hpZnQocHRyLCBTLCBz Mik7CisJCWlmIChTID09IE5VTEwpCisJCQlyZXR1cm4gKE5VTEwpOworCQl9CisJaWYgKGtfY2hl Y2spIHsKKwkJaWYgKGNtcChiLFMpIDwgMCkgeworCQkJay0tOworCQkJYiA9IG11bHRhZGQocHRy LCBiLCAxMCwgMCk7IC8qIHdlIGJvdGNoZWQgdGhlIGsgZXN0aW1hdGUgKi8KKwkJCWlmIChiID09 IE5VTEwpCisJCQkJcmV0dXJuIChOVUxMKTsKKwkJCWlmIChsZWZ0cmlnaHQpIHsKKwkJCQltaGkg PSBtdWx0YWRkKHB0ciwgbWhpLCAxMCwgMCk7CisJCQkJaWYgKG1oaSA9PSBOVUxMKQorCQkJCQly ZXR1cm4gKE5VTEwpOworCQkJCX0KKwkJCWlsaW0gPSBpbGltMTsKKwkJCX0KKwkJfQorCWlmIChp bGltIDw9IDAgJiYgbW9kZSA+IDIpIHsKKwkJUyA9IG11bHRhZGQocHRyLCBTLDUsMCk7CisJCWlm IChTID09IE5VTEwpCisJCQlyZXR1cm4gKE5VTEwpOworCQlpZiAoaWxpbSA8IDAgfHwgY21wKGIs UykgPD0gMCkgeworCQkJLyogbm8gZGlnaXRzLCBmY3Z0IHN0eWxlICovCisgbm9fZGlnaXRzOgor CQkJayA9IC0xIC0gbmRpZ2l0czsKKwkJCWluZXggPSBTVFJUT0dfSW5leGxvOworCQkJZ290byBy ZXQ7CisJCQl9Cisgb25lX2RpZ2l0OgorCQlpbmV4ID0gU1RSVE9HX0luZXhoaTsKKwkJKnMrKyA9 ICcxJzsKKwkJaysrOworCQlnb3RvIHJldDsKKwkJfQorCWlmIChsZWZ0cmlnaHQpIHsKKwkJaWYg KG0yID4gMCkgeworCQkJbWhpID0gbHNoaWZ0KHB0ciwgbWhpLCBtMik7CisJCQlpZiAobWhpID09 IE5VTEwpCisJCQkJcmV0dXJuIChOVUxMKTsKKwkJCX0KKworCQkvKiBDb21wdXRlIG1sbyAtLSBj aGVjayBmb3Igc3BlY2lhbCBjYXNlCisJCSAqIHRoYXQgZCBpcyBhIG5vcm1hbGl6ZWQgcG93ZXIg b2YgMi4KKwkJICovCisKKwkJbWxvID0gbWhpOworCQlpZiAoc3BlY19jYXNlKSB7CisJCQltaGkg PSBCYWxsb2MocHRyLCBtaGktPl9rKTsKKwkJCWlmIChtaGkgPT0gTlVMTCkKKwkJCQlyZXR1cm4g KE5VTEwpOworCQkJQmNvcHkobWhpLCBtbG8pOworCQkJbWhpID0gbHNoaWZ0KHB0ciwgbWhpLCAx KTsKKwkJCWlmIChtaGkgPT0gTlVMTCkKKwkJCQlyZXR1cm4gKE5VTEwpOworCQkJfQorCisJCWZv cihpID0gMTs7aSsrKSB7CisJCQlkaWcgPSBxdW9yZW0oYixTKSArICcwJzsKKwkJCS8qIERvIHdl IHlldCBoYXZlIHRoZSBzaG9ydGVzdCBkZWNpbWFsIHN0cmluZworCQkJICogdGhhdCB3aWxsIHJv dW5kIHRvIGQ/CisJCQkgKi8KKwkJCWogPSBjbXAoYiwgbWxvKTsKKwkJCWRlbHRhID0gZGlmZihw dHIsIFMsIG1oaSk7CisJCQlpZiAoZGVsdGEgPT0gTlVMTCkKKwkJCQlyZXR1cm4gKE5VTEwpOwor CQkJajEgPSBkZWx0YS0+X3NpZ24gPyAxIDogY21wKGIsIGRlbHRhKTsKKwkJCUJmcmVlKHB0ciwg ZGVsdGEpOworI2lmbmRlZiBST1VORF9CSUFTRUQKKwkJCWlmIChqMSA9PSAwICYmICFtb2RlICYm ICEoYml0c1swXSAmIDEpICYmICFyZGlyKSB7CisJCQkJaWYgKGRpZyA9PSAnOScpCisJCQkJCWdv dG8gcm91bmRfOV91cDsKKwkJCQlpZiAoaiA8PSAwKSB7CisJCQkJCWlmIChiLT5fd2RzID4gMSB8 fCBiLT5feFswXSkKKwkJCQkJCWluZXggPSBTVFJUT0dfSW5leGxvOworCQkJCQl9CisJCQkJZWxz ZSB7CisJCQkJCWRpZysrOworCQkJCQlpbmV4ID0gU1RSVE9HX0luZXhoaTsKKwkJCQkJfQorCQkJ CSpzKysgPSBkaWc7CisJCQkJZ290byByZXQ7CisJCQkJfQorI2VuZGlmCisJCQlpZiAoaiA8IDAg fHwgKGogPT0gMCAmJiAhbW9kZQorI2lmbmRlZiBST1VORF9CSUFTRUQKKwkJCQkJCQkmJiAhKGJp dHNbMF0gJiAxKQorI2VuZGlmCisJCQkJCSkpIHsKKwkJCQlpZiAocmRpciAmJiAoYi0+X3dkcyA+ IDEgfHwgYi0+X3hbMF0pKSB7CisJCQkJCWlmIChyZGlyID09IDIpIHsKKwkJCQkJCWluZXggPSBT VFJUT0dfSW5leGxvOworCQkJCQkJZ290byBhY2NlcHQ7CisJCQkJCQl9CisJCQkJCXdoaWxlIChj bXAoUyxtaGkpID4gMCkgeworCQkJCQkJKnMrKyA9IGRpZzsKKwkJCQkJCW1oaTEgPSBtdWx0YWRk KHB0ciwgbWhpLCAxMCwgMCk7CisJCQkJCQlpZiAobWhpMSA9PSBOVUxMKQorCQkJCQkJCXJldHVy biAoTlVMTCk7CisJCQkJCQlpZiAobWxvID09IG1oaSkKKwkJCQkJCQltbG8gPSBtaGkxOworCQkJ CQkJbWhpID0gbWhpMTsKKwkJCQkJCWIgPSBtdWx0YWRkKHB0ciwgYiwgMTAsIDApOworCQkJCQkJ aWYgKGIgPT0gTlVMTCkKKwkJCQkJCQlyZXR1cm4gKE5VTEwpOworCQkJCQkJZGlnID0gcXVvcmVt KGIsUykgKyAnMCc7CisJCQkJCQl9CisJCQkJCWlmIChkaWcrKyA9PSAnOScpCisJCQkJCQlnb3Rv IHJvdW5kXzlfdXA7CisJCQkJCWluZXggPSBTVFJUT0dfSW5leGhpOworCQkJCQlnb3RvIGFjY2Vw dDsKKwkJCQkJfQorCQkJCWlmIChqMSA+IDApIHsKKwkJCQkJYiA9IGxzaGlmdChwdHIsIGIsIDEp OworCQkJCQlpZiAoYiA9PSBOVUxMKQorCQkJCQkJcmV0dXJuIChOVUxMKTsKKwkJCQkJajEgPSBj bXAoYiwgUyk7CisjaWZkZWYgUk9VTkRfQklBU0VECisJCQkJCWlmIChqMSA+PSAwIC8qKSovCisj ZWxzZQorCQkJCQlpZiAoKGoxID4gMCB8fCAoajEgPT0gMCAmJiBkaWcgJiAxKSkKKyNlbmRpZgor CQkJCQkmJiBkaWcrKyA9PSAnOScpCisJCQkJCQlnb3RvIHJvdW5kXzlfdXA7CisJCQkJCWluZXgg PSBTVFJUT0dfSW5leGhpOworCQkJCQl9CisJCQkJaWYgKGItPl93ZHMgPiAxIHx8IGItPl94WzBd KQorCQkJCQlpbmV4ID0gU1RSVE9HX0luZXhsbzsKKyBhY2NlcHQ6CisJCQkJKnMrKyA9IGRpZzsK KwkJCQlnb3RvIHJldDsKKwkJCQl9CisJCQlpZiAoajEgPiAwICYmIHJkaXIgIT0gMikgeworCQkJ CWlmIChkaWcgPT0gJzknKSB7IC8qIHBvc3NpYmxlIGlmIGkgPT0gMSAqLworIHJvdW5kXzlfdXA6 CisJCQkJCSpzKysgPSAnOSc7CisJCQkJCWluZXggPSBTVFJUT0dfSW5leGhpOworCQkJCQlnb3Rv IHJvdW5kb2ZmOworCQkJCQl9CisJCQkJaW5leCA9IFNUUlRPR19JbmV4aGk7CisJCQkJKnMrKyA9 IGRpZyArIDE7CisJCQkJZ290byByZXQ7CisJCQkJfQorCQkJKnMrKyA9IGRpZzsKKwkJCWlmIChp ID09IGlsaW0pCisJCQkJYnJlYWs7CisJCQliID0gbXVsdGFkZChwdHIsIGIsIDEwLCAwKTsKKwkJ CWlmIChiID09IE5VTEwpCisJCQkJcmV0dXJuIChOVUxMKTsKKwkJCWlmIChtbG8gPT0gbWhpKSB7 CisJCQkJbWxvID0gbWhpID0gbXVsdGFkZChwdHIsIG1oaSwgMTAsIDApOworCQkJCWlmIChtbG8g PT0gTlVMTCkKKwkJCQkJcmV0dXJuIChOVUxMKTsKKwkJCQl9CisJCQllbHNlIHsKKwkJCQltbG8g PSBtdWx0YWRkKHB0ciwgbWxvLCAxMCwgMCk7CisJCQkJaWYgKG1sbyA9PSBOVUxMKQorCQkJCQly ZXR1cm4gKE5VTEwpOworCQkJCW1oaSA9IG11bHRhZGQocHRyLCBtaGksIDEwLCAwKTsKKwkJCQlp ZiAobWhpID09IE5VTEwpCisJCQkJCXJldHVybiAoTlVMTCk7CisJCQkJfQorCQkJfQorCQl9CisJ ZWxzZQorCQlmb3IoaSA9IDE7OyBpKyspIHsKKwkJCSpzKysgPSBkaWcgPSBxdW9yZW0oYixTKSAr ICcwJzsKKwkJCWlmIChpID49IGlsaW0pCisJCQkJYnJlYWs7CisJCQliID0gbXVsdGFkZChwdHIs IGIsIDEwLCAwKTsKKwkJCWlmIChiID09IE5VTEwpCisJCQkJcmV0dXJuIChOVUxMKTsKKwkJCX0K KworCS8qIFJvdW5kIG9mZiBsYXN0IGRpZ2l0ICovCisKKwlpZiAocmRpcikgeworCQlpZiAocmRp ciA9PSAyIHx8IChiLT5fd2RzIDw9IDEgJiYgIWItPl94WzBdKSkKKwkJCWdvdG8gY2hvcHplcm9z OworCQlnb3RvIHJvdW5kb2ZmOworCQl9CisJYiA9IGxzaGlmdChwdHIsIGIsIDEpOworCWlmIChi ID09IE5VTEwpCisJCXJldHVybiAoTlVMTCk7CisJaiA9IGNtcChiLCBTKTsKKyNpZmRlZiBST1VO RF9CSUFTRUQKKwlpZiAoaiA+PSAwKQorI2Vsc2UKKwlpZiAoaiA+IDAgfHwgKGogPT0gMCAmJiBk aWcgJiAxKSkKKyNlbmRpZgorCQl7Cisgcm91bmRvZmY6CisJCWluZXggPSBTVFJUT0dfSW5leGhp OworCQl3aGlsZSgqLS1zID09ICc5JykKKwkJCWlmIChzID09IHMwKSB7CisJCQkJaysrOworCQkJ CSpzKysgPSAnMSc7CisJCQkJZ290byByZXQ7CisJCQkJfQorCQkrKypzKys7CisJCX0KKwllbHNl IHsKKyBjaG9wemVyb3M6CisJCWlmIChiLT5fd2RzID4gMSB8fCBiLT5feFswXSkKKwkJCWluZXgg PSBTVFJUT0dfSW5leGxvOworCQl3aGlsZSgqLS1zID09ICcwJyl7fQorCQkrK3M7CisJCX0KKyBy ZXQ6CisJQmZyZWUocHRyLCBTKTsKKwlpZiAobWhpKSB7CisJCWlmIChtbG8gJiYgbWxvICE9IG1o aSkKKwkJCUJmcmVlKHB0ciwgbWxvKTsKKwkJQmZyZWUocHRyLCBtaGkpOworCQl9CisgcmV0MToK KwlCZnJlZShwdHIsIGIpOworCSpzID0gMDsKKwkqZGVjcHQgPSBrICsgMTsKKwlpZiAocnZlKQor CQkqcnZlID0gczsKKwkqa2luZHAgfD0gaW5leDsKKwlyZXR1cm4gczA7CisJfQorREVGX1NUUk9O RyhnZHRvYSk7CisjZW5kaWYgLyogX1VTRV9HRFRPQSAqLwpkaWZmIC0tZ2l0IGEvbmV3bGliL2xp YmMvc3RkbGliL2dkdG9hLWdtaXNjLmMgYi9uZXdsaWIvbGliYy9zdGRsaWIvZ2R0b2EtZ21pc2Mu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQwYzNjMmQxMwotLS0gL2Rl di9udWxsCisrKyBiL25ld2xpYi9saWJjL3N0ZGxpYi9nZHRvYS1nbWlzYy5jCkBAIC0wLDAgKzEs OTEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisKK1RoZSBhdXRob3Igb2YgdGhpcyBzb2Z0d2FyZSBpcyBEYXZpZCBN LiBHYXkuCisKK0NvcHlyaWdodCAoQykgMTk5OCBieSBMdWNlbnQgVGVjaG5vbG9naWVzCitBbGwg UmlnaHRzIFJlc2VydmVkCisKK1Blcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBk aXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCitpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1 cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQorZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0 aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsCitjb3BpZXMgYW5kIHRoYXQg Ym90aCB0aGF0IHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzCitwZXJtaXNzaW9uIG5vdGlj ZSBhbmQgd2FycmFudHkgZGlzY2xhaW1lciBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRh dGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTHVjZW50IG9yIGFueSBvZiBpdHMgZW50aXRpZXMK K25vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCitk aXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJp b3IKK3Blcm1pc3Npb24uCisKK0xVQ0VOVCBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBS RUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKK0lOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KK0lOIE5PIEVWRU5UIFNIQUxMIExVQ0VO VCBPUiBBTlkgT0YgSVRTIEVOVElUSUVTIEJFIExJQUJMRSBGT1IgQU5ZCitTUEVDSUFMLCBJTkRJ UkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKK1dIQVRTT0VWRVIg UkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUgorSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElP TiwKK0FSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZP Uk1BTkNFIE9GCitUSElTIFNPRlRXQVJFLgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBQbGVhc2Ugc2VuZCBi dWcgcmVwb3J0cyB0byBEYXZpZCBNLiBHYXkgKGRtZyBhdCBhY20gZG90IG9yZywKKyAqIHdpdGgg IiBhdCAiIGNoYW5nZWQgYXQgIkAiIGFuZCAiIGRvdCAiIGNoYW5nZWQgdG8gIi4iKS4JKi8KKwor I2luY2x1ZGUgPG5ld2xpYi5oPgorI2luY2x1ZGUgPHN5cy9jb25maWcuaD4KKworI2lmZGVmIF9V U0VfR0RUT0EKKyNpbmNsdWRlICJnZHRvYWltcC5oIgorCisgdm9pZAorI2lmZGVmIEtSX2hlYWRl cnMKK3JzaGlmdChiLCBrKSBCaWdpbnQgKmI7IGludCBrOworI2Vsc2UKK3JzaGlmdChCaWdpbnQg KmIsIGludCBrKQorI2VuZGlmCit7CisJVUxvbmcgKngsICp4MSwgKnhlLCB5OworCWludCBuOwor CisJeCA9IHgxID0gYi0+X3g7CisJbiA9IGsgPj4ga3NoaWZ0OworCWlmIChuIDwgYi0+X3dkcykg eworCQl4ZSA9IHggKyBiLT5fd2RzOworCQl4ICs9IG47CisJCWlmIChrICY9IGttYXNrKSB7CisJ CQluID0gVUxiaXRzIC0gazsKKwkJCXkgPSAqeCsrID4+IGs7CisJCQl3aGlsZSh4IDwgeGUpIHsK KwkJCQkqeDErKyA9ICh5IHwgKCp4IDw8IG4pKSAmIEFMTF9PTjsKKwkJCQl5ID0gKngrKyA+PiBr OworCQkJCX0KKwkJCWlmICgoKngxID0geSkgIT0wKQorCQkJCXgxKys7CisJCQl9CisJCWVsc2UK KwkJCXdoaWxlKHggPCB4ZSkKKwkJCQkqeDErKyA9ICp4Kys7CisJCX0KKwlpZiAoKGItPl93ZHMg PSB4MSAtIGItPl94KSA9PSAwKQorCQliLT5feFswXSA9IDA7CisJfQorCisgaW50CisjaWZkZWYg S1JfaGVhZGVycwordHJhaWx6KGIpIEJpZ2ludCAqYjsKKyNlbHNlCit0cmFpbHooQmlnaW50ICpi KQorI2VuZGlmCit7CisJVUxvbmcgTCwgKngsICp4ZTsKKwlpbnQgbiA9IDA7CisKKwl4ID0gYi0+ X3g7CisJeGUgPSB4ICsgYi0+X3dkczsKKwlmb3IobiA9IDA7IHggPCB4ZSAmJiAhKng7IHgrKykK KwkJbiArPSBVTGJpdHM7CisJaWYgKHggPCB4ZSkgeworCQlMID0gKng7CisJCW4gKz0gbG8wYml0 cygmTCk7CisJCX0KKwlyZXR1cm4gbjsKKwl9CisjZW5kaWYgLyogX1VTRV9HRFRPQSAqLwpkaWZm IC0tZ2l0IGEvbmV3bGliL2xpYmMvc3RkbGliL2dkdG9hLWxkdG9hLmMgYi9uZXdsaWIvbGliYy9z dGRsaWIvZ2R0b2EtbGR0b2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjE0Yjk5MDQyYwotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJjL3N0ZGxpYi9nZHRvYS1s ZHRvYS5jCkBAIC0wLDAgKzEsMTU5IEBACisvKgkkT3BlbkJTRDogbGR0b2EuYyx2IDEuNCAyMDE2 LzAzLzA5IDE2OjI4OjQ3IGRlcmFhZHQgRXhwICQJKi8KKy8qLQorICogQ29weXJpZ2h0IChjKSAy MDAzIERhdmlkIFNjaHVsdHogPGRhc0BGcmVlQlNELk9SRz4KKyAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD VAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu CisgKi8KKworI2luY2x1ZGUgPG5ld2xpYi5oPgorI2luY2x1ZGUgPHN5cy9jb25maWcuaD4KKwor I2lmZGVmIF9VU0VfR0RUT0EKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxtYWNo aW5lL2llZWUuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2lu Y2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlICJnZHRvYWltcC5oIgorCisjaWYgKExEQkxfTUFOVF9ESUcgPiBEQkxfTUFOVF9E SUcpCisKKy8qCisgKiBsZHRvYSgpIGlzIGEgd3JhcHBlciBmb3IgZ2R0b2EoKSB0aGF0IG1ha2Vz IGl0IHNtZWxsIGxpa2UgZHRvYSgpLAorICogZXhjZXB0IHRoYXQgdGhlIGZsb2F0aW5nIHBvaW50 IGFyZ3VtZW50IGlzIHBhc3NlZCBieSByZWZlcmVuY2UuCisgKiBXaGVuIGR0b2EoKSBpcyBwYXNz ZWQgYSBOYU4gb3IgaW5maW5pdHksIGl0IHNldHMgZXhwdCB0byA5OTk5LgorICogSG93ZXZlciwg YSBsb25nIGRvdWJsZSBjb3VsZCBoYXZlIGEgdmFsaWQgZXhwb25lbnQgb2YgOTk5OSwgc28gd2UK KyAqIHVzZSBJTlRfTUFYIGluIGxkdG9hKCkgaW5zdGVhZC4KKyAqLworY2hhciAqCitfbGR0b2Ff cihzdHJ1Y3QgX3JlZW50ICpwdHIsCisgICAgbG9uZyBkb3VibGUgbGQsIGludCBtb2RlLCBpbnQg bmRpZ2l0cywgaW50ICpkZWNwdCwgaW50ICpzaWduLCBjaGFyICoqcnZlKQoreworCUZQSSBmcGkg PSB7CisJCUxEQkxfTUFOVF9ESUcsCQkJLyogbmJpdHMgKi8KKwkJTERCTF9NSU5fRVhQIC0gTERC TF9NQU5UX0RJRywJLyogZW1pbiAqLworCQlMREJMX01BWF9FWFAgLSBMREJMX01BTlRfRElHLAkv KiBlbWF4ICovCisJCUZMVF9ST1VORFMsCSAgICAgICAJCS8qIHJvdW5kaW5nICovCisjaWZkZWYg U3VkZGVuX1VuZGVyZmxvdwkvKiB1bnVzZWQsIGJ1dCBjb3JyZWN0IGFueXdheSAqLworCQkxCisj ZWxzZQorCQkwCisjZW5kaWYKKwl9OworCWludCBiZSwga2luZDsKKwljaGFyICpyZXQ7CisJc3Ry dWN0IGllZWVfZXh0ICpwID0gKHN0cnVjdCBpZWVlX2V4dCAqKSZsZDsKKwl1aW50MzJfdCBiaXRz WyhMREJMX01BTlRfRElHICsgMzEpIC8gMzJdOworCXZvaWQgKnZiaXRzID0gYml0czsKKworCV9S RUVOVF9DSEVDS19NUCAocHRyKTsKKworCS8qIHJlZW50cmFuY3kgYWRkaXRpb24gdG8gdXNlIG1w cmVjIHN0b3JhZ2UgcG9vbCAqLworCWlmIChfUkVFTlRfTVBfUkVTVUxUIChwdHIpKSB7CisJCV9S RUVOVF9NUF9SRVNVTFQgKHB0ciktPl9rID0gX1JFRU5UX01QX1JFU1VMVF9LIChwdHIpOworCQlf UkVFTlRfTVBfUkVTVUxUIChwdHIpLT5fbWF4d2RzID0gMSA8PCBfUkVFTlRfTVBfUkVTVUxUX0sg KHB0cik7CisJCUJmcmVlIChwdHIsIF9SRUVOVF9NUF9SRVNVTFQgKHB0cikpOworCQlfUkVFTlRf TVBfUkVTVUxUIChwdHIpID0gMDsKKwl9CisKKwkvKgorCSAqIGdkdG9hIGRvZXNuJ3Qga25vdyBh bnl0aGluZyBhYm91dCB0aGUgc2lnbiBvZiB0aGUgbnVtYmVyLCBzbworCSAqIGlmIHRoZSBudW1i ZXIgaXMgbmVnYXRpdmUsIHdlIG5lZWQgdG8gc3dhcCByb3VuZGluZyBtb2RlcyBvZgorCSAqIDIg KHVwd2FyZHMpIGFuZCAzIChkb3dud2FyZHMpLgorCSAqLworCSpzaWduID0gcC0+ZXh0X3NpZ247 CisJZnBpLnJvdW5kaW5nIF49IChmcGkucm91bmRpbmcgPj4gMSkgJiBwLT5leHRfc2lnbjsKKwor CWJlID0gcC0+ZXh0X2V4cCAtIChMREJMX01BWF9FWFAgLSAxKSAtIChMREJMX01BTlRfRElHIC0g MSk7CisJRVhUX1RPX0FSUkFZMzIocCwgYml0cyk7CisKKwlzd2l0Y2ggKGZwY2xhc3NpZnkobGQp KSB7CisJY2FzZSBGUF9OT1JNQUw6CisJCWtpbmQgPSBTVFJUT0dfTm9ybWFsOworI2lmZGVmIEVY VF9JTVBMSUNJVF9OQklUCisJCWJpdHNbTERCTF9NQU5UX0RJRyAvIDMyXSB8PSAxIDw8ICgoTERC TF9NQU5UX0RJRyAtIDEpICUgMzIpOworI2VuZGlmIC8qIEVYVF9JTVBMSUNJVF9OQklUICovCisJ CWJyZWFrOworCWNhc2UgRlBfWkVSTzoKKwkJa2luZCA9IFNUUlRPR19aZXJvOworCQlicmVhazsK KwljYXNlIEZQX1NVQk5PUk1BTDoKKwkJa2luZCA9IFNUUlRPR19EZW5vcm1hbDsKKwkJYmUrKzsK KwkJYnJlYWs7CisJY2FzZSBGUF9JTkZJTklURToKKwkJa2luZCA9IFNUUlRPR19JbmZpbml0ZTsK KwkJYnJlYWs7CisJY2FzZSBGUF9OQU46CisJCWtpbmQgPSBTVFJUT0dfTmFOOworCQlicmVhazsK KwlkZWZhdWx0OgorCQlhYm9ydCgpOworCX0KKworCXJldCA9IGdkdG9hKHB0ciwgJmZwaSwgYmUs IHZiaXRzLCAma2luZCwgbW9kZSwgbmRpZ2l0cywgZGVjcHQsIHJ2ZSk7CisJaWYgKCpkZWNwdCA9 PSAtMzI3NjgpCisJCSpkZWNwdCA9IElOVF9NQVg7CisJcmV0dXJuIHJldDsKK30KK0RFRl9TVFJP TkcoX2xkdG9hX3IpOworCisjZWxzZSAgIC8qIChMREJMX01BTlRfRElHID09IERCTF9NQU5UX0RJ RykgKi8KKworY2hhciAqCitfbGR0b2FfcihzdHJ1Y3QgX3JlZW50ICpwdHIsCisgICAgbG9uZyBk b3VibGUgbGQsIGludCBtb2RlLCBpbnQgbmRpZ2l0cywgaW50ICpkZWNwdCwgaW50ICpzaWduLAor ICAgIGNoYXIgKipydmUpCit7CisJY2hhciAqcmV0OworCisJcmV0ID0gX2R0b2FfcihwdHIsIChk b3VibGUpbGQsIG1vZGUsIG5kaWdpdHMsIGRlY3B0LCBzaWduLCBydmUpOworCWlmICgqZGVjcHQg PT0gOTk5OSkKKwkJKmRlY3B0ID0gSU5UX01BWDsKKwlyZXR1cm4gcmV0OworfQorREVGX1NUUk9O RyhfbGR0b2Ffcik7CisKKyNlbmRpZiAgLyogKExEQkxfTUFOVF9ESUcgPT0gREJMX01BTlRfRElH KSAqLworCisvKiBSb3V0aW5lIHVzZWQgdG8gdGVsbCBpZiBsb25nIGRvdWJsZSBpcyBOYU4gb3Ig SW5maW5pdHkgb3IgcmVndWxhciBudW1iZXIuCisgICBSZXR1cm5zOiAgMCA9IHJlZ3VsYXIgbnVt YmVyCisgICAgICAgICAgICAgMSA9IE5hbgorICAgICAgICAgICAgIDIgPSBJbmZpbml0eQorKi8K K2ludAorX2xkY2hlY2sgKGxvbmcgZG91YmxlICpkKQoreworCXN3aXRjaCAoZnBjbGFzc2lmeSgq ZCkpIHsKKwljYXNlIEZQX05BTjoKKwkJcmV0dXJuIDE7CisJY2FzZSBGUF9JTkZJTklURToKKwkJ cmV0dXJuIDI7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorfQorCisjZW5kaWYgLyogX1VT RV9HRFRPQSAqLwpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3RkbGliL2dkdG9hLmggYi9uZXds aWIvbGliYy9zdGRsaWIvZ2R0b2EuaAppbmRleCAwNzUwNmFhYzEuLmY0ZDJhNTZkYiAxMDA2NDQK LS0tIGEvbmV3bGliL2xpYmMvc3RkbGliL2dkdG9hLmgKKysrIGIvbmV3bGliL2xpYmMvc3RkbGli L2dkdG9hLmgKQEAgLTMyLDI1ICszMiw1NSBAQCBUSElTIFNPRlRXQVJFLgogI2lmbmRlZiBHRFRP QV9IX0lOQ0xVREVECiAjZGVmaW5lIEdEVE9BX0hfSU5DTFVERUQKIAorI2luY2x1ZGUgPHN0ZGRl Zi5oPiAvKiBmb3Igc2l6ZV90ICovCisjaW5jbHVkZSA8cmVlbnQuaD4KKworI2RlZmluZSBQUk9U T19OT1JNQUwoeCkKKyNkZWZpbmUgX19CRUdJTl9ISURERU5fREVDTFMKKyNkZWZpbmUgX19FTkRf SElEREVOX0RFQ0xTCisjZGVmaW5lIERFRl9TVFJPTkcoeCkKKworI2lmbmRlZiBVTG9uZworI2Rl ZmluZSBVTG9uZyBfX1VMb25nCisjZW5kaWYKKworI2lmbmRlZiBBTlNJCisjaWZkZWYgS1JfaGVh ZGVycworI2RlZmluZSBBTlNJKHgpICgpCisjZGVmaW5lIFZvaWQgLypub3RoaW5nKi8KKyNlbHNl CisjZGVmaW5lIEFOU0koeCkgeAorI2RlZmluZSBWb2lkIHZvaWQKKyNlbmRpZgorI2VuZGlmIC8q IEFOU0kgKi8KKworI2lmbmRlZiBDT05TVAorI2lmZGVmIEtSX2hlYWRlcnMKKyNkZWZpbmUgQ09O U1QgLyogYmxhbmsgKi8KKyNlbHNlCisjZGVmaW5lIENPTlNUIGNvbnN0CisjZW5kaWYKKyNlbmRp ZiAvKiBDT05TVCAqLwogCiAgZW51bSB7CS8qIHJldHVybiB2YWx1ZXMgZnJvbSBzdHJ0b2RnICov Ci0JU1RSVE9HX1plcm8JPSAwLAotCVNUUlRPR19Ob3JtYWwJPSAxLAotCVNUUlRPR19EZW5vcm1h bAk9IDIsCi0JU1RSVE9HX0luZmluaXRlCT0gMywKLQlTVFJUT0dfTmFOCT0gNCwKLQlTVFJUT0df TmFOYml0cwk9IDUsCi0JU1RSVE9HX05vTnVtYmVyCT0gNiwKLQlTVFJUT0dfUmV0bWFzawk9IDcs CisJU1RSVE9HX1plcm8JPSAweDAwMCwKKwlTVFJUT0dfTm9ybWFsCT0gMHgwMDEsCisJU1RSVE9H X0Rlbm9ybWFsCT0gMHgwMDIsCisJU1RSVE9HX0luZmluaXRlCT0gMHgwMDMsCisJU1RSVE9HX05h Tgk9IDB4MDA0LAorCVNUUlRPR19OYU5iaXRzCT0gMHgwMDUsCisJU1RSVE9HX05vTnVtYmVyCT0g MHgwMDYsCisJU1RSVE9HX05vTWVtb3J5ID0gMHgwMDcsCisJU1RSVE9HX1JldG1hc2sJPSAweDAw ZiwKIAogCS8qIFRoZSBmb2xsb3dpbmcgbWF5IGJlIG9yLWVkIGludG8gb25lIG9mIHRoZSBhYm92 ZSB2YWx1ZXMuICovCiAKLQlTVFJUT0dfTmVnCT0gMHgwOCwKLQlTVFJUT0dfSW5leGxvCT0gMHgx MCwKLQlTVFJUT0dfSW5leGhpCT0gMHgyMCwKLQlTVFJUT0dfSW5leGFjdAk9IDB4MzAsCi0JU1RS VE9HX1VuZGVyZmxvdz0gMHg0MCwKLQlTVFJUT0dfT3ZlcmZsb3cJPSAweDgwCisJU1RSVE9HX0lu ZXhsbwk9IDB4MDEwLCAvKiByZXR1cm5lZCByZXN1bHQgcm91bmRlZCB0b3dhcmQgemVybyAqLwor CVNUUlRPR19JbmV4aGkJPSAweDAyMCwgLyogcmV0dXJuZWQgcmVzdWx0IHJvdW5kZWQgYXdheSBm cm9tIHplcm8gKi8KKwlTVFJUT0dfSW5leGFjdAk9IDB4MDMwLAorCVNUUlRPR19VbmRlcmZsb3c9 IDB4MDQwLAorCVNUUlRPR19PdmVyZmxvdwk9IDB4MDgwLAorCVNUUlRPR19OZWcJPSAweDEwMCAv KiBkb2VzIG5vdCBhZmZlY3QgU1RSVE9HX0luZXhsbyBvciBTVFJUT0dfSW5leGhpICovCiAJfTsK IAogIHR5cGVkZWYgc3RydWN0CkBAIC02OSw2ICs5OSw3NCBAQCBlbnVtIHsJLyogRlBJLnJvdW5k aW5nIHZhbHVlczogc2FtZSBhcyBGTFRfUk9VTkRTICovCiAJRlBJX1JvdW5kX2Rvd24gPSAzCiAJ fTsKIAotI2VuZGlmIC8qIEdEVE9BX0hfSU5DTFVERUQgKi8KLQogdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCBfX1VTaG9ydDsKK3R5cGVkZWYgc3RydWN0IF9CaWdpbnQgQmlnaW50OworCisjaWZkZWYg X19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiBjaGFyKiBfX2R0b2Eg IEFOU0koKHN0cnVjdCBfcmVlbnQgKnB0ciwKKwkJCWRvdWJsZSBkLCBpbnQgbW9kZSwgaW50IG5k aWdpdHMsIGludCAqZGVjcHQsCisJCQlpbnQgKnNpZ24sIGNoYXIgKipydmUpKTsKK2V4dGVybiBj aGFyKiBfX2dkdG9hIEFOU0koKHN0cnVjdCBfcmVlbnQgKnB0ciwKKwkJCUZQSSAqZnBpLCBpbnQg YmUsIFVMb25nICpiaXRzLCBpbnQgKmtpbmRwLAorCQkJaW50IG1vZGUsIGludCBuZGlnaXRzLCBp bnQgKmRlY3B0LCBjaGFyICoqcnZlKSk7CitleHRlcm4gdm9pZCBfX2ZyZWVkdG9hIEFOU0koKHN0 cnVjdCBfcmVlbnQgKiwgY2hhciopKTsKK2V4dGVybiBmbG9hdCAgc3RydG9mIEFOU0koKENPTlNU IGNoYXIgKiwgY2hhciAqKikpOworZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgQU5TSSgoQ09OU1QgY2hh ciAqLCBjaGFyICoqKSk7CitleHRlcm4gaW50IF9fc3RydG9kZyBBTlNJKChDT05TVCBjaGFyKiwg Y2hhcioqLCBGUEkqLCBMb25nKiwgVUxvbmcqKSk7CitjaGFyCSpfX2hkdG9hKGRvdWJsZSwgY29u c3QgY2hhciAqLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKik7CitjaGFyCSpfX2hsZHRvYShs b25nIGRvdWJsZSwgY29uc3QgY2hhciAqLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKik7Citj aGFyCSpfX2xkdG9hKHN0cnVjdCBfcmVlbnQgKnB0ciwKKwkJIGxvbmcgZG91YmxlICosIGludCwg aW50LCBpbnQgKiwgaW50ICosIGNoYXIgKiopOworCitQUk9UT19OT1JNQUwoX19kdG9hKTsKK1BS T1RPX05PUk1BTChfX2dkdG9hKTsKK1BST1RPX05PUk1BTChfX2ZyZWVkdG9hKTsKK1BST1RPX05P Uk1BTChfX2hkdG9hKTsKK1BST1RPX05PUk1BTChfX2hsZHRvYSk7CitQUk9UT19OT1JNQUwoX19s ZHRvYSk7CisKK19fQkVHSU5fSElEREVOX0RFQ0xTCitleHRlcm4gY2hhcioJX19nX2RkZm10ICBB TlNJKChjaGFyKiwgZG91YmxlKiwgaW50LCBzaXplX3QpKTsKK2V4dGVybiBjaGFyKglfX2dfZGZt dCAgIEFOU0koKGNoYXIqLCBkb3VibGUqLCBpbnQsIHNpemVfdCkpOworZXh0ZXJuIGNoYXIqCV9f Z19mZm10ICAgQU5TSSgoY2hhciosIGZsb2F0KiwgIGludCwgc2l6ZV90KSk7CitleHRlcm4gY2hh cioJX19nX1FmbXQgICBBTlNJKChjaGFyKiwgdm9pZCosICAgaW50LCBzaXplX3QpKTsKK2V4dGVy biBjaGFyKglfX2dfeGZtdCAgIEFOU0koKGNoYXIqLCB2b2lkKiwgICBpbnQsIHNpemVfdCkpOwor ZXh0ZXJuIGNoYXIqCV9fZ194TGZtdCAgQU5TSSgoY2hhciosIHZvaWQqLCAgIGludCwgc2l6ZV90 KSk7CisKK2V4dGVybiBpbnQJX19zdHJ0b0lkICBBTlNJKChDT05TVCBjaGFyKiwgY2hhcioqLCBk b3VibGUqLCBkb3VibGUqKSk7CitleHRlcm4gaW50CV9fc3RydG9JZGQgQU5TSSgoQ09OU1QgY2hh ciosIGNoYXIqKiwgZG91YmxlKiwgZG91YmxlKikpOworZXh0ZXJuIGludAlfX3N0cnRvSWYgIEFO U0koKENPTlNUIGNoYXIqLCBjaGFyKiosIGZsb2F0KiwgZmxvYXQqKSk7CitleHRlcm4gaW50CV9f c3RydG9JUSAgQU5TSSgoQ09OU1QgY2hhciosIGNoYXIqKiwgdm9pZCosIHZvaWQqKSk7CitleHRl cm4gaW50CV9fc3RydG9JeCAgQU5TSSgoQ09OU1QgY2hhciosIGNoYXIqKiwgdm9pZCosIHZvaWQq KSk7CitleHRlcm4gaW50CV9fc3RydG9JeEwgQU5TSSgoQ09OU1QgY2hhciosIGNoYXIqKiwgdm9p ZCosIHZvaWQqKSk7CitleHRlcm4gaW50CV9fc3RydG9yZCAgQU5TSSgoQ09OU1QgY2hhciosIGNo YXIqKiwgaW50LCBkb3VibGUqKSk7CitleHRlcm4gaW50CV9fc3RydG9yZGQgQU5TSSgoQ09OU1Qg Y2hhciosIGNoYXIqKiwgaW50LCBkb3VibGUqKSk7CitleHRlcm4gaW50CV9fc3RydG9yZiAgQU5T SSgoQ09OU1QgY2hhciosIGNoYXIqKiwgaW50LCBmbG9hdCopKTsKK2V4dGVybiBpbnQJX19zdHJ0 b3JRICBBTlNJKChDT05TVCBjaGFyKiwgY2hhcioqLCBpbnQsIHZvaWQqKSk7CitleHRlcm4gaW50 CV9fc3RydG9yeCAgQU5TSSgoQ09OU1QgY2hhciosIGNoYXIqKiwgaW50LCB2b2lkKikpOworZXh0 ZXJuIGludAlfX3N0cnRvcnhMIEFOU0koKENPTlNUIGNoYXIqLCBjaGFyKiosIGludCwgdm9pZCop KTsKKyNpZiAxCitleHRlcm4gaW50CV9fc3RydG9kSSAgQU5TSSgoQ09OU1QgY2hhciosIGNoYXIq KiwgZG91YmxlKikpOworZXh0ZXJuIGludAlfX3N0cnRvcGQgIEFOU0koKENPTlNUIGNoYXIqLCBj aGFyKiosIGRvdWJsZSopKTsKK2V4dGVybiBpbnQJX19zdHJ0b3BkZCBBTlNJKChDT05TVCBjaGFy KiwgY2hhcioqLCBkb3VibGUqKSk7CitleHRlcm4gaW50CV9fc3RydG9wZiAgQU5TSSgoQ09OU1Qg Y2hhciosIGNoYXIqKiwgZmxvYXQqKSk7CitleHRlcm4gaW50CV9fc3RydG9wUSAgQU5TSSgoQ09O U1QgY2hhciosIGNoYXIqKiwgdm9pZCopKTsKK2V4dGVybiBpbnQJX19zdHJ0b3B4ICBBTlNJKChD T05TVCBjaGFyKiwgY2hhcioqLCB2b2lkKikpOworZXh0ZXJuIGludAlfX3N0cnRvcHhMIEFOU0ko KENPTlNUIGNoYXIqLCBjaGFyKiosIHZvaWQqKSk7CisjZWxzZQorI2RlZmluZSBfX3N0cnRvcGQo cyxzZSx4KSBzdHJ0b3JkKHMsc2UsMSx4KQorI2RlZmluZSBfX3N0cnRvcGRkKHMsc2UseCkgc3Ry dG9yZGQocyxzZSwxLHgpCisjZGVmaW5lIF9fc3RydG9wZihzLHNlLHgpIHN0cnRvcmYocyxzZSwx LHgpCisjZGVmaW5lIF9fc3RydG9wUShzLHNlLHgpIHN0cnRvclEocyxzZSwxLHgpCisjZGVmaW5l IF9fc3RydG9weChzLHNlLHgpIHN0cnRvcngocyxzZSwxLHgpCisjZGVmaW5lIF9fc3RydG9weEwo cyxzZSx4KSBzdHJ0b3J4TChzLHNlLDEseCkKKyNlbmRpZgorX19FTkRfSElEREVOX0RFQ0xTCisK KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogR0RUT0FfSF9JTkNMVURF RCAqLwpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYmMvc3RkbGliL2dkdG9haW1wLmggYi9uZXdsaWIv bGliYy9zdGRsaWIvZ2R0b2FpbXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmYyZGEzZmM2NwotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJjL3N0ZGxpYi9nZHRv YWltcC5oCkBAIC0wLDAgKzEsMjA2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUaGUgYXV0aG9yIG9mIHRoaXMg c29mdHdhcmUgaXMgRGF2aWQgTS4gR2F5LgorCitDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCBieSBM dWNlbnQgVGVjaG5vbG9naWVzCitBbGwgUmlnaHRzIFJlc2VydmVkCisKK1Blcm1pc3Npb24gdG8g dXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCitpdHMg ZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQor Z3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIg aW4gYWxsCitjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0IHRoZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzCitwZXJtaXNzaW9uIG5vdGljZSBhbmQgd2FycmFudHkgZGlzY2xhaW1lciBhcHBlYXIg aW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTHVjZW50 IG9yIGFueSBvZiBpdHMgZW50aXRpZXMKK25vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1 YmxpY2l0eSBwZXJ0YWluaW5nIHRvCitkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKK3Blcm1pc3Npb24uCisKK0xVQ0VOVCBESVNDTEFJ TVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKK0lOQ0xVRElO RyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4K K0lOIE5PIEVWRU5UIFNIQUxMIExVQ0VOVCBPUiBBTlkgT0YgSVRTIEVOVElUSUVTIEJFIExJQUJM RSBGT1IgQU5ZCitTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1Ig QU5ZIERBTUFHRVMKK1dIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEg T1IgUFJPRklUUywgV0hFVEhFUgorSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNF IE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKK0FSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GCitUSElTIFNPRlRXQVJFLgorCisqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisvKiBUaGlzIGlzIGEgdmFyaWF0aW9uIG9uIGR0b2EuYyB0aGF0IGNvbnZlcnRzIGFy Yml0YXJ5IGJpbmFyeQorICAgZmxvYXRpbmctcG9pbnQgZm9ybWF0cyB0byBhbmQgZnJvbSBkZWNp bWFsIG5vdGF0aW9uLiAgSXQgdXNlcworICAgZG91YmxlLXByZWNpc2lvbiBhcml0aG1ldGljIGlu dGVybmFsbHksIHNvIHRoZXJlIGFyZSBzdGlsbAorICAgdmFyaW91cyAjaWZkZWZzIHRoYXQgYWRh cHQgdGhlIGNhbGN1bGF0aW9ucyB0byB0aGUgbmF0aXZlCisgICBkb3VibGUtcHJlY2lzaW9uIGFy aXRobWV0aWMgKGFueSBvZiBJRUVFLCBWQVggRF9mbG9hdGluZywKKyAgIG9yIElCTSBtYWluZnJh bWUgYXJpdGhtZXRpYykuCisKKyAgIFBsZWFzZSBzZW5kIGJ1ZyByZXBvcnRzIHRvIERhdmlkIE0u IEdheSAoZG1nIGF0IGFjbSBkb3Qgb3JnLAorICAgd2l0aCAiIGF0ICIgY2hhbmdlZCBhdCAiQCIg YW5kICIgZG90ICIgY2hhbmdlZCB0byAiLiIpLgorICovCisKKy8qIE9uIGEgbWFjaGluZSB3aXRo IElFRUUgZXh0ZW5kZWQtcHJlY2lzaW9uIHJlZ2lzdGVycywgaXQgaXMKKyAqIG5lY2Vzc2FyeSB0 byBzcGVjaWZ5IGRvdWJsZS1wcmVjaXNpb24gKDUzLWJpdCkgcm91bmRpbmcgcHJlY2lzaW9uCisg KiBiZWZvcmUgaW52b2tpbmcgc3RydG9kIG9yIGR0b2EuICBJZiB0aGUgbWFjaGluZSB1c2VzICh0 aGUgZXF1aXZhbGVudAorICogb2YpIEludGVsIDgweDg3IGFyaXRobWV0aWMsIHRoZSBjYWxsCisg KglfY29udHJvbDg3KFBDXzUzLCBNQ1dfUEMpOworICogZG9lcyB0aGlzIHdpdGggbWFueSBjb21w aWxlcnMuICBXaGV0aGVyIHRoaXMgb3IgYW5vdGhlciBjYWxsIGlzCisgKiBhcHByb3ByaWF0ZSBk ZXBlbmRzIG9uIHRoZSBjb21waWxlcjsgZm9yIHRoaXMgdG8gd29yaywgaXQgbWF5IGJlCisgKiBu ZWNlc3NhcnkgdG8gI2luY2x1ZGUgImZsb2F0LmgiIG9yIGFub3RoZXIgc3lzdGVtLWRlcGVuZGVu dCBoZWFkZXIKKyAqIGZpbGUuCisgKi8KKworLyogc3RydG9kIGZvciBJRUVFLSwgVkFYLSwgYW5k IElCTS1hcml0aG1ldGljIG1hY2hpbmVzLgorICoKKyAqIFRoaXMgc3RydG9kIHJldHVybnMgYSBu ZWFyZXN0IG1hY2hpbmUgbnVtYmVyIHRvIHRoZSBpbnB1dCBkZWNpbWFsCisgKiBzdHJpbmcgKG9y IHNldHMgZXJybm8gdG8gRVJBTkdFKS4gIFdpdGggSUVFRSBhcml0aG1ldGljLCB0aWVzIGFyZQor ICogYnJva2VuIGJ5IHRoZSBJRUVFIHJvdW5kLWV2ZW4gcnVsZS4gIE90aGVyd2lzZSB0aWVzIGFy ZSBicm9rZW4gYnkKKyAqIGJpYXNlZCByb3VuZGluZyAoYWRkIGhhbGYgYW5kIGNob3ApLgorICoK KyAqIEluc3BpcmVkIGxvb3NlbHkgYnkgV2lsbGlhbSBELiBDbGluZ2VyJ3MgcGFwZXIgIkhvdyB0 byBSZWFkIEZsb2F0aW5nCisgKiBQb2ludCBOdW1iZXJzIEFjY3VyYXRlbHkiIFtQcm9jLiBBQ00g U0lHUExBTiAnOTAsIHBwLiAxMTItMTI2XS4KKyAqCisgKiBNb2RpZmljYXRpb25zOgorICoKKyAq CTEuIFdlIG9ubHkgcmVxdWlyZSBJRUVFLCBJQk0sIG9yIFZBWCBkb3VibGUtcHJlY2lzaW9uCisg KgkJYXJpdGhtZXRpYyAobm90IElFRUUgZG91YmxlLWV4dGVuZGVkKS4KKyAqCTIuIFdlIGdldCBi eSB3aXRoIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgaW4gYSBjYXNlIHRoYXQKKyAqCQlDbGlu Z2VyIG1pc3NlZCAtLSB3aGVuIHdlJ3JlIGNvbXB1dGluZyBkICogMTBebgorICoJCWZvciBhIHNt YWxsIGludGVnZXIgZCBhbmQgdGhlIGludGVnZXIgbiBpcyBub3QgdG9vCisgKgkJbXVjaCBsYXJn ZXIgdGhhbiAyMiAodGhlIG1heGltdW0gaW50ZWdlciBrIGZvciB3aGljaAorICoJCXdlIGNhbiBy ZXByZXNlbnQgMTBeayBleGFjdGx5KSwgd2UgbWF5IGJlIGFibGUgdG8KKyAqCQljb21wdXRlIChk KjEwXmspICogMTBeKGUtaykgd2l0aCBqdXN0IG9uZSByb3VuZG9mZi4KKyAqCTMuIFJhdGhlciB0 aGFuIGEgYml0LWF0LWEtdGltZSBhZGp1c3RtZW50IG9mIHRoZSBiaW5hcnkKKyAqCQlyZXN1bHQg aW4gdGhlIGhhcmQgY2FzZSwgd2UgdXNlIGZsb2F0aW5nLXBvaW50CisgKgkJYXJpdGhtZXRpYyB0 byBkZXRlcm1pbmUgdGhlIGFkanVzdG1lbnQgdG8gd2l0aGluCisgKgkJb25lIGJpdDsgb25seSBp biByZWFsbHkgaGFyZCBjYXNlcyBkbyB3ZSBuZWVkIHRvCisgKgkJY29tcHV0ZSBhIHNlY29uZCBy ZXNpZHVhbC4KKyAqCTQuIEJlY2F1c2Ugb2YgMy4sIHdlIGRvbid0IG5lZWQgYSBsYXJnZSB0YWJs ZSBvZiBwb3dlcnMgb2YgMTAKKyAqCQlmb3IgdGVuLXRvLWUgKGp1c3Qgc29tZSBzbWFsbCB0YWJs ZXMsIGUuZy4gb2YgMTBeaworICoJCWZvciAwIDw9IGsgPD0gMjIpLgorICovCisKKy8qCisgKiAj ZGVmaW5lIElFRUVfODA4NyBmb3IgSUVFRS1hcml0aG1ldGljIG1hY2hpbmVzIHdoZXJlIHRoZSBs ZWFzdAorICoJc2lnbmlmaWNhbnQgYnl0ZSBoYXMgdGhlIGxvd2VzdCBhZGRyZXNzLgorICogI2Rl ZmluZSBJRUVFX01DNjhrIGZvciBJRUVFLWFyaXRobWV0aWMgbWFjaGluZXMgd2hlcmUgdGhlIG1v c3QKKyAqCXNpZ25pZmljYW50IGJ5dGUgaGFzIHRoZSBsb3dlc3QgYWRkcmVzcy4KKyAqICNkZWZp bmUgTG9uZyBpbnQgb24gbWFjaGluZXMgd2l0aCAzMi1iaXQgaW50cyBhbmQgNjQtYml0IGxvbmdz LgorICogI2RlZmluZSBTdWRkZW5fVW5kZXJmbG93IGZvciBJRUVFLWZvcm1hdCBtYWNoaW5lcyB3 aXRob3V0IGdyYWR1YWwKKyAqCXVuZGVyZmxvdyAoaS5lLiwgdGhhdCBmbHVzaCB0byB6ZXJvIG9u IHVuZGVyZmxvdykuCisgKiAjZGVmaW5lIElCTSBmb3IgSUJNIG1haW5mcmFtZS1zdHlsZSBmbG9h dGluZy1wb2ludCBhcml0aG1ldGljLgorICogI2RlZmluZSBWQVggZm9yIFZBWC1zdHlsZSBmbG9h dGluZy1wb2ludCBhcml0aG1ldGljIChEX2Zsb2F0aW5nKS4KKyAqICNkZWZpbmUgTm9fbGVmdHJp Z2h0IHRvIG9taXQgbGVmdC1yaWdodCBsb2dpYyBpbiBmYXN0IGZsb2F0aW5nLXBvaW50CisgKglj b21wdXRhdGlvbiBvZiBkdG9hIGFuZCBnZHRvYS4gIFRoaXMgd2lsbCBjYXVzZSBtb2RlcyA0IGFu ZCA1IHRvIGJlCisgKgl0cmVhdGVkIHRoZSBzYW1lIGFzIG1vZGVzIDIgYW5kIDMgZm9yIHNvbWUg aW5wdXRzLgorICogI2RlZmluZSBDaGVja19GTFRfUk9VTkRTIGlmIEZMVF9ST1VORFMgY2FuIGFz c3VtZSB0aGUgdmFsdWVzIDIgb3IgMy4KKyAqICNkZWZpbmUgUk5EX1BST0RRVU9UIHRvIHVzZSBy bmRfcHJvZCBhbmQgcm5kX3F1b3QgKGFzc2VtYmx5IHJvdXRpbmVzCisgKgl0aGF0IHVzZSBleHRl bmRlZC1wcmVjaXNpb24gaW5zdHJ1Y3Rpb25zIHRvIGNvbXB1dGUgcm91bmRlZAorICoJcHJvZHVj dHMgYW5kIHF1b3RpZW50cykgd2l0aCBJQk0uCisgKiAjZGVmaW5lIFJPVU5EX0JJQVNFRCBmb3Ig SUVFRS1mb3JtYXQgd2l0aCBiaWFzZWQgcm91bmRpbmcgYW5kIGFyaXRobWV0aWMKKyAqCXRoYXQg cm91bmRzIHRvd2FyZCArSW5maW5pdHkuCisgKiAjZGVmaW5lIFJPVU5EX0JJQVNFRF93aXRob3V0 X1JvdW5kX1VwIGZvciBJRUVFLWZvcm1hdCB3aXRoIGJpYXNlZAorICoJcm91bmRpbmcgd2hlbiB0 aGUgdW5kZXJseWluZyBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIHVzZXMKKyAqCXVuYmlhc2Vk IHJvdW5kaW5nLiAgVGhpcyBwcmV2ZW50IHVzaW5nIG9yZGluYXJ5IGZsb2F0aW5nLXBvaW50Cisg Kglhcml0aG1ldGljIHdoZW4gdGhlIHJlc3VsdCBjb3VsZCBiZSBjb21wdXRlZCB3aXRoIG9uZSBy b3VuZGluZyBlcnJvci4KKyAqICNkZWZpbmUgSW5hY2N1cmF0ZV9EaXZpZGUgZm9yIElFRUUtZm9y bWF0IHdpdGggY29ycmVjdGx5IHJvdW5kZWQKKyAqCXByb2R1Y3RzIGJ1dCBpbmFjY3VyYXRlIHF1 b3RpZW50cywgZS5nLiwgZm9yIEludGVsIGk4NjAuCisgKiAjZGVmaW5lIE5PX0xPTkdfTE9ORyBv biBtYWNoaW5lcyB0aGF0IGRvIG5vdCBoYXZlIGEgImxvbmcgbG9uZyIKKyAqCWludGVnZXIgdHlw ZSAob2YgPj0gNjQgYml0cykuICBPbiBzdWNoIG1hY2hpbmVzLCB5b3UgY2FuCisgKgkjZGVmaW5l IEp1c3RfMTYgdG8gc3RvcmUgMTYgYml0cyBwZXIgMzItYml0IExvbmcgd2hlbiBkb2luZworICoJ aGlnaC1wcmVjaXNpb24gaW50ZWdlciBhcml0aG1ldGljLiAgV2hldGhlciB0aGlzIHNwZWVkcyB0 aGluZ3MKKyAqCXVwIG9yIHNsb3dzIHRoaW5ncyBkb3duIGRlcGVuZHMgb24gdGhlIG1hY2hpbmUg YW5kIHRoZSBudW1iZXIKKyAqCWJlaW5nIGNvbnZlcnRlZC4gIElmIGxvbmcgbG9uZyBpcyBhdmFp bGFibGUgYW5kIHRoZSBuYW1lIGlzCisgKglzb21ldGhpbmcgb3RoZXIgdGhhbiAibG9uZyBsb25n IiwgI2RlZmluZSBMbG9uZyB0byBiZSB0aGUgbmFtZSwKKyAqCWFuZCBpZiAidW5zaWduZWQgTGxv bmciIGRvZXMgbm90IHdvcmsgYXMgYW4gdW5zaWduZWQgdmVyc2lvbiBvZgorICoJTGxvbmcsICNk ZWZpbmUgI1VMTG9uZyB0byBiZSB0aGUgY29ycmVzcG9uZGluZyB1bnNpZ25lZCB0eXBlLgorICog I2RlZmluZSBLUl9oZWFkZXJzIGZvciBvbGQtc3R5bGUgQyBmdW5jdGlvbiBoZWFkZXJzLgorICog I2RlZmluZSBCYWRfZmxvYXRfaCBpZiB5b3VyIHN5c3RlbSBsYWNrcyBhIGZsb2F0Lmggb3IgaWYg aXQgZG9lcyBub3QKKyAqCWRlZmluZSBzb21lIG9yIGFsbCBvZiBEQkxfRElHLCBEQkxfTUFYXzEw X0VYUCwgREJMX01BWF9FWFAsCisgKglGTFRfUkFESVgsIEZMVF9ST1VORFMsIGFuZCBEQkxfTUFY LgorICogI2RlZmluZSBNQUxMT0MgeW91cl9tYWxsb2MsIHdoZXJlIHlvdXJfbWFsbG9jKG4pIGFj dHMgbGlrZSBtYWxsb2MobikKKyAqCWlmIG1lbW9yeSBpcyBhdmFpbGFibGUgYW5kIG90aGVyd2lz ZSBkb2VzIHNvbWV0aGluZyB5b3UgZGVlbQorICoJYXBwcm9wcmlhdGUuICBJZiBNQUxMT0MgaXMg dW5kZWZpbmVkLCBtYWxsb2Mgd2lsbCBiZSBpbnZva2VkCisgKglkaXJlY3RseSAtLSBhbmQgYXNz dW1lZCBhbHdheXMgdG8gc3VjY2VlZC4gIFNpbWlsYXJseSwgaWYgeW91CisgKgl3YW50IHNvbWV0 aGluZyBvdGhlciB0aGFuIHRoZSBzeXN0ZW0ncyBmcmVlKCkgdG8gYmUgY2FsbGVkIHRvCisgKgly ZWN5Y2xlIG1lbW9yeSBhY3F1aXJlZCBmcm9tIE1BTExPQywgI2RlZmluZSBGUkVFIHRvIGJlIHRo ZQorICoJbmFtZSBvZiB0aGUgYWx0ZXJuYXRlIHJvdXRpbmUuICAoRlJFRSBvciBmcmVlIGlzIG9u bHkgY2FsbGVkIGluCisgKglwYXRob2xvZ2ljYWwgY2FzZXMsIGUuZy4sIGluIGEgZ2R0b2EgY2Fs bCBhZnRlciBhIGdkdG9hIHJldHVybiBpbgorICoJbW9kZSAzIHdpdGggdGhvdXNhbmRzIG9mIGRp Z2l0cyByZXF1ZXN0ZWQuKQorICogI2RlZmluZSBPbWl0X1ByaXZhdGVfTWVtb3J5IHRvIG9taXQg bG9naWMgKGFkZGVkIEphbi4gMTk5OCkgZm9yIG1ha2luZworICoJbWVtb3J5IGFsbG9jYXRpb25z IGZyb20gYSBwcml2YXRlIHBvb2wgb2YgbWVtb3J5IHdoZW4gcG9zc2libGUuCisgKglXaGVuIHVz ZWQsIHRoZSBwcml2YXRlIHBvb2wgaXMgUFJJVkFURV9NRU0gYnl0ZXMgbG9uZzogIDIzMDQgYnl0 ZXMsCisgKgl1bmxlc3MgI2RlZmluZWQgdG8gYmUgYSBkaWZmZXJlbnQgbGVuZ3RoLiAgVGhpcyBk ZWZhdWx0IGxlbmd0aAorICoJc3VmZmljZXMgdG8gZ2V0IHJpZCBvZiBNQUxMT0MgY2FsbHMgZXhj ZXB0IGZvciB1bnVzdWFsIGNhc2VzLAorICoJc3VjaCBhcyBkZWNpbWFsLXRvLWJpbmFyeSBjb252 ZXJzaW9uIG9mIGEgdmVyeSBsb25nIHN0cmluZyBvZgorICoJZGlnaXRzLiAgV2hlbiBjb252ZXJ0 aW5nIElFRUUgZG91YmxlIHByZWNpc2lvbiB2YWx1ZXMsIHRoZQorICoJbG9uZ2VzdCBzdHJpbmcg Z2R0b2EgY2FuIHJldHVybiBpcyBhYm91dCA3NTEgYnl0ZXMgbG9uZy4gIEZvcgorICoJY29udmVy c2lvbnMgYnkgc3RydG9kIG9mIHN0cmluZ3Mgb2YgODAwIGRpZ2l0cyBhbmQgYWxsIGdkdG9hCisg Kgljb252ZXJzaW9ucyBvZiBJRUVFIGRvdWJsZXMgaW4gc2luZ2xlLXRocmVhZGVkIGV4ZWN1dGlv bnMgd2l0aAorICoJOC1ieXRlIHBvaW50ZXJzLCBQUklWQVRFX01FTSA+PSA3NDAwIGFwcGVhcnMg dG8gc3VmZmljZTsgd2l0aAorICoJNC1ieXRlIHBvaW50ZXJzLCBQUklWQVRFX01FTSA+PSA3MTEy IGFwcGVhcnMgYWRlcXVhdGUuCisgKiAjZGVmaW5lIE5PX0lORk5BTl9DSEVDSyBpZiB5b3UgZG8g bm90IHdpc2ggdG8gaGF2ZSBJTkZOQU5fQ0hFQ0sKKyAqCSNkZWZpbmVkIGF1dG9tYXRpY2FsbHkg b24gSUVFRSBzeXN0ZW1zLiAgT24gc3VjaCBzeXN0ZW1zLAorICoJd2hlbiBJTkZOQU5fQ0hFQ0sg aXMgI2RlZmluZWQsIHN0cnRvZCBjaGVja3MKKyAqCWZvciBJbmZpbml0eSBhbmQgTmFOIChjYXNl IGluc2Vuc2l0aXZlbHkpLgorICoJV2hlbiBJTkZOQU5fQ0hFQ0sgaXMgI2RlZmluZWQgYW5kIE5v X0hleF9OYU4gaXMgbm90ICNkZWZpbmVkLAorICoJc3RydG9kZyBhbHNvIGFjY2VwdHMgKGNhc2Ug aW5zZW5zaXRpdmVseSkgc3RyaW5ncyBvZiB0aGUgZm9ybQorICoJTmFOKHgpLCB3aGVyZSB4IGlz IGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cyAob3B0aW9uYWxseQorICoJcHJlY2VkZWQg YnkgMHggb3IgMFgpIGFuZCBzcGFjZXM7IGlmIHRoZXJlIGlzIG9ubHkgb25lIHN0cmluZworICoJ b2YgaGV4YWRlY2ltYWwgZGlnaXRzLCBpdCBpcyB0YWtlbiBmb3IgdGhlIGZyYWN0aW9uIGJpdHMg b2YgdGhlCisgKglyZXN1bHRpbmcgTmFOOyBpZiB0aGVyZSBhcmUgdHdvIG9yIG1vcmUgc3RyaW5n cyBvZiBoZXhhZGVjaW1hbAorICoJZGlnaXRzLCBlYWNoIHN0cmluZyBpcyBhc3NpZ25lZCB0byB0 aGUgbmV4dCBhdmFpbGFibGUgc2VxdWVuY2UKKyAqCW9mIDMyLWJpdCB3b3JkcyBvZiBmcmFjdGlv bnMgYml0cyAoc3RhcnRpbmcgd2l0aCB0aGUgbW9zdAorICoJc2lnbmlmaWNhbnQpLCByaWdodC1h bGlnbmVkIGluIGVhY2ggc2VxdWVuY2UuCisgKglVbmxlc3MgR0RUT0FfTk9OX1BFREFOVElDX05B TkNIRUNLIGlzICNkZWZpbmVkLCBpbnB1dCAiTmFOKC4uLikiCisgKglpcyBjb25zdW1lZCBldmVu IHdoZW4gLi4uIGhhcyB0aGUgd3JvbmcgZm9ybSAoaW4gd2hpY2ggY2FzZSB0aGUKKyAqCSIoLi4u KSIgaXMgY29uc3VtZWQgYnV0IGlnbm9yZWQpLgorICogI2RlZmluZSBNVUxUSVBMRV9USFJFQURT IGlmIHRoZSBzeXN0ZW0gb2ZmZXJzIHByZWVtcHRpdmVseSBzY2hlZHVsZWQKKyAqCW11bHRpcGxl IHRocmVhZHMuICBJbiB0aGlzIGNhc2UsIHlvdSBtdXN0IHByb3ZpZGUgKG9yIHN1aXRhYmx5Cisg KgkjZGVmaW5lKSB0d28gbG9ja3MsIGFjcXVpcmVkIGJ5IEFDUVVJUkVfRFRPQV9MT0NLKG4pIGFu ZCBmcmVlZAorICoJYnkgRlJFRV9EVE9BX0xPQ0sobikgZm9yIG4gPSAwIG9yIDEuICAoVGhlIHNl Y29uZCBsb2NrLCBhY2Nlc3NlZAorICoJaW4gcG93NW11bHQsIGVuc3VyZXMgbGF6eSBldmFsdWF0 aW9uIG9mIG9ubHkgb25lIGNvcHkgb2YgaGlnaAorICoJcG93ZXJzIG9mIDU7IG9taXR0aW5nIHRo aXMgbG9jayB3b3VsZCBpbnRyb2R1Y2UgYSBzbWFsbAorICoJcHJvYmFiaWxpdHkgb2Ygd2FzdGlu ZyBtZW1vcnksIGJ1dCB3b3VsZCBvdGhlcndpc2UgYmUgaGFybWxlc3MuKQorICoJWW91IG11c3Qg YWxzbyBpbnZva2UgZnJlZWR0b2EocykgdG8gZnJlZSB0aGUgdmFsdWUgcyByZXR1cm5lZCBieQor ICoJZHRvYS4gIFlvdSBtYXkgZG8gc28gd2hldGhlciBvciBub3QgTVVMVElQTEVfVEhSRUFEUyBp cyAjZGVmaW5lZC4KKyAqICNkZWZpbmUgSU1QUkVDSVNFX0lORVhBQ1QgaWYgeW91IGRvIG5vdCBj YXJlIGFib3V0IHRoZSBzZXR0aW5nIG9mCisgKgl0aGUgU1RSVE9HX0luZXhhY3QgYml0cyBpbiB0 aGUgc3BlY2lhbCBjYXNlIG9mIGRvaW5nIElFRUUgZG91YmxlCisgKglwcmVjaXNpb24gY29udmVy c2lvbnMgKHdoaWNoIGNvdWxkIGFsc28gYmUgZG9uZSBieSB0aGUgc3RydG9kIGluCisgKglkdG9h LmMpLgorICogI2RlZmluZSBOT19IRVhfRlAgdG8gZGlzYWJsZSByZWNvZ25pdGlvbiBvZiBDOXgn cyBoZXhhZGVjaW1hbAorICoJZmxvYXRpbmctcG9pbnQgY29uc3RhbnRzLgorICogI2RlZmluZSAt RE5PX0VSUk5PIHRvIHN1cHByZXNzIHNldHRpbmcgZXJybm8gKGluIHN0cnRvZC5jIGFuZAorICoJ c3RydG9kZy5jKS4KKyAqICNkZWZpbmUgTk9fU1RSSU5HX0ggdG8gdXNlIHByaXZhdGUgdmVyc2lv bnMgb2YgbWVtY3B5LgorICoJT24gc29tZSBLJlIgc3lzdGVtcywgaXQgbWF5IGFsc28gYmUgbmVj ZXNzYXJ5IHRvCisgKgkjZGVmaW5lIERFQ0xBUkVfU0laRV9UIGluIHRoaXMgY2FzZS4KKyAqICNk ZWZpbmUgVVNFX0xPQ0FMRSB0byB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgZGVjaW1hbF9wb2lu dCB2YWx1ZS4KKyAqLworCisjaWZuZGVmIEdEVE9BSU1QX0hfSU5DTFVERUQKKyNkZWZpbmUgR0RU T0FJTVBfSF9JTkNMVURFRAorI2luY2x1ZGUgIm1wcmVjLmgiCisjaW5jbHVkZSAiZ2R0b2EuaCIK KworI2lmbmRlZiBfX1NJTkdMRV9USFJFQURfXworI2RlZmluZSBNVUxUSVBMRV9USFJFQURTCisj ZW5kaWYKKworI2RlZmluZSBkdG9hIF9fZHRvYQorI2RlZmluZSBnZHRvYSBfX2dkdG9hCisjZGVm aW5lIGZyZWVkdG9hIF9fZnJlZWR0b2EKKworI2RlZmluZSBkdG9hX3Jlc3VsdCBfX2R0b2FfcmVz dWx0X0QyQQorI2RlZmluZSBucnZfYWxsb2MgX19ucnZfYWxsb2NfRDJBCisjZGVmaW5lIHF1b3Jl bSBfX3F1b3JlbV9EMkEKKyNkZWZpbmUgcnNoaWZ0IF9fcnNoaWZ0X0QyQQorI2RlZmluZSBydl9h bGxvYyBfX3J2X2FsbG9jX0QyQQorI2RlZmluZSB0cmFpbHogX190cmFpbHpfRDJBCisKK2V4dGVy biBjaGFyICpkdG9hX3Jlc3VsdDsKK2V4dGVybiBjaGFyICpucnZfYWxsb2MgQU5TSSgoc3RydWN0 IF9yZWVudCAqLCBjaGFyKiwgY2hhciAqKiwgaW50KSk7CitleHRlcm4gaW50IHF1b3JlbSBBTlNJ KChCaWdpbnQqLCBCaWdpbnQqKSk7CitleHRlcm4gdm9pZCByc2hpZnQgQU5TSSgoQmlnaW50Kiwg aW50KSk7CitleHRlcm4gY2hhciAqcnZfYWxsb2MgQU5TSSgoc3RydWN0IF9yZWVudCAqLCBpbnQp KTsKK2V4dGVybiBpbnQgdHJhaWx6IEFOU0koKEJpZ2ludCopKTsKKworI2VuZGlmIC8qIEdEVE9B SU1QX0hfSU5DTFVERUQgKi8KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJjL3N0ZGxpYi9sZHRvYS5j IGIvbmV3bGliL2xpYmMvc3RkbGliL2xkdG9hLmMKaW5kZXggMjZjNjE5NDhiLi4zNjYxM2ZhYWQg MTAwNjQ0Ci0tLSBhL25ld2xpYi9saWJjL3N0ZGxpYi9sZHRvYS5jCisrKyBiL25ld2xpYi9saWJj L3N0ZGxpYi9sZHRvYS5jCkBAIC0yLDYgKzIsMTAgQEAKICAgKiBUaGlzIHByb2dyYW0gaGFzIGJl ZW4gcGxhY2VkIGluIHRoZSBwdWJsaWMgZG9tYWluLgogICAqLwogCisjaW5jbHVkZSA8bmV3bGli Lmg+CisjaW5jbHVkZSA8c3lzL2NvbmZpZy5oPgorCisjaWZuZGVmIF9VU0VfR0RUT0EKICNpbmNs dWRlIDxfYW5zaS5oPgogI2luY2x1ZGUgPHJlZW50Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBA IC0zOTAwLDMgKzM5MDQsNSBAQCBlbmFuIChzaG9ydCB1bnNpZ25lZCBpbnQgKm5hbiwgaW50IHNp emUpCiAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgKm5hbisrID0gKnArKzsKIH0KKwor I2VuZGlmIC8qICFfVVNFX0dEVE9BICovCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9zdGRsaWIv bXByZWMuaCBiL25ld2xpYi9saWJjL3N0ZGxpYi9tcHJlYy5oCmluZGV4IGExNDkyYWEzOC4uODNk ZTkzMmMyIDEwMDY0NAotLS0gYS9uZXdsaWIvbGliYy9zdGRsaWIvbXByZWMuaAorKysgYi9uZXds aWIvbGliYy9zdGRsaWIvbXByZWMuaApAQCAtMjYsNyArMjYsNyBAQAogCWRtZ0ByZXNlYXJjaC5h dHQuY29tIG9yIHJlc2VhcmNoIWRtZwogICovCiAKLSNpbmNsdWRlIDxpZWVlZnAuaD4KKyNpbmNs dWRlIDxtYWNoaW5lL2llZWVmcC5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxmbG9h dC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CmRpZmYgLS1naXQgYS9uZXdsaWIvbmV3bGliLmhpbiBi L25ld2xpYi9uZXdsaWIuaGluCmluZGV4IDQxNmQwYzYyOS4uYTA5OTk1MTJjIDEwMDY0NAotLS0g YS9uZXdsaWIvbmV3bGliLmhpbgorKysgYi9uZXdsaWIvbmV3bGliLmhpbgpAQCAtOTYsNiArOTYs OSBAQAogLyogRGVmaW5lIHRvIHVzZSB0eXBlIGxvbmcgZm9yIHRpbWVfdC4gICovCiAjdW5kZWYg X1dBTlRfVVNFX0xPTkdfVElNRV9UCiAKKy8qIERlZmluZSBpZiB1c2luZyBnZHRvYSByYXRoZXIg dGhhbiBsZWdhY3kgbGR0b2EuICAqLworI3VuZGVmIF9XQU5UX1VTRV9HRFRPQQorCiAvKgogICog SWNvbnYgZW5jb2RpbmdzIGVuYWJsZWQgKCJ0byIgZGlyZWN0aW9uKQogICovCi0tIAoyLjMzLjAK Cg== --Multipart=_Wed__1_Dec_2021_06_17_27_+0900_1B+.8lZOz8IeHJ4x--