Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVecr-000Z4A-GA for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Feb 2024 21:29:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rVecq-007wZ1-Ab for pgsql-hackers@arkaria.postgresql.org; Thu, 01 Feb 2024 21:29:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVecp-007wYt-Mw for pgsql-hackers@lists.postgresql.org; Thu, 01 Feb 2024 21:29:36 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVeck-004xyn-7A for pgsql-hackers@lists.postgresql.org; Thu, 01 Feb 2024 21:29:34 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: i.kartyshov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 81696E21127; Fri, 2 Feb 2024 00:29:28 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1706822968; bh=AXy8UU07VqSQqOZUbEFwkYZwaMIqnLcG51H6PmT88Ss=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=t00TNuYi2QjeMP/orcnfELvdQ67k58XU+OJkktamfHIBjhzFdUN6JXSUcUmZSp48r slb3mz/Z+6oP4Q9jcpfbsnQuJrDj57JmPkoN+LZvuDbfb+n4sJTM4Z1NAS0cP6X7xU uqpIf2kkwqwDFPMXyxZis437rNq92YwiEfSseyQyzRGzAyK5RnUiQu7rhPdE4qCT8U EFiVQFap2w8u8qkc7DtPmnzHWJKG5dBozC98AMcuUMXy2spF0GBNd5P83BuviDOQas u/HPi89SSn5hnPbIFaYnL2/Kqf05I9jiVMWvJdYjbZNhBjWW9qkDMzLZ+Pw+kjEnfd GiPeFBcsPEtpQ== MIME-Version: 1.0 Date: Fri, 02 Feb 2024 00:29:28 +0300 From: Kartyshov Ivan To: dilipbalaut@gmail.com, smithpb2250@gmail.com Cc: pgsql-hackers@lists.postgresql.org Subject: Fwd: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: References: <22f122-655b3e80-3-688b3700@97587957> User-Agent: Roundcube Webmail/1.6.5 Message-ID: <4953563546cb8c8851f84c7debf723ef@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_8ff1b9414c7204d8b0eaa0768f9bc543" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_8ff1b9414c7204d8b0eaa0768f9bc543 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Updated, rebased, fixed Ci and added documentation. We left two different solutions. Help me please to choose the best. 1) Classic (wait_classic_v6.patch) https://www.postgresql.org/message-id/3cc883048264c2e9af022033925ff8db%40postgrespro.ru ========== advantages: multiple wait events, separate WAIT FOR statement disadvantages: new words in grammar WAIT FOR [ANY | ALL] event [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ WAIT FOR [ANY | ALL] event [, ...]] event: LSN value TIMEOUT number_of_milliseconds timestamp 2) After style: Kyotaro and Freund (wait_after_within_v5.patch) https://www.postgresql.org/message-id/d3ff2e363af60b345f82396992595a03%40postgrespro.ru ========== advantages: no new words in grammar disadvantages: a little harder to understand, fewer events to wait AFTER lsn_event [ WITHIN delay_milliseconds ] [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] START [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] Regards -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_8ff1b9414c7204d8b0eaa0768f9bc543 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v5.patch Content-Disposition: attachment; filename=wait_after_within_v5.patch; size=32763 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWZ0ZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvYWZ0ZXIuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kZWYw ZWM2YmUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hZnRlci5zZ21sCkBA IC0wLDAgKzEsMTE4IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FmdGVyLnNnbWwKK1Bvc3Rn cmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLXdhaXQiPgorIDxp bmRleHRlcm0gem9uZT0ic3FsLXdhaXQiPgorICA8cHJpbWFyeT5BRlRFUjwvcHJpbWFyeT4KKyA8 L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BRlRFUjwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+QUZURVI8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPkFGVEVS IHRoZSB0YXJnZXQgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiB0byBiZSByZXBsYXllZCBhbmQgZm9y IHNwZWNpZmllZCB0aW1lIHRvIHRpbWVvdXQ8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2Pgor CisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUZURVIgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+IFtXSVRISU4gdGltZW91dF9pbl9taWxsaXNl Y29uZHNdCisKK0FGVEVSIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicKK0FGVEVSIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicgV0lUSElOIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8 L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3Rp dGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+QUZURVI8L2NvbW1hbmQ+IHByb3ZpZGVzIGEg c2ltcGxlIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBm b3IgdGhlIHRhcmdldCBsb2cgc2VxdWVuY2UgbnVtYmVyIAorICAgKDxhY3JvbnltPkxTTjwvYWNy b255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJlcGxpY2F0 aW9uLiA8Y29tbWFuZD5BRlRFUjwvY29tbWFuZD4KKyAgIGNvbW1hbmQgd2FpdHMgZm9yIHRoZSBz cGVjaWZpZWQgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiB0byBiZSByZXBsYXllZC4KKyAgIElmIG5v IHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2FpdCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRp bmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5nIDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9y CisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2Vy dmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+ UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRo ZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3Rp bWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2YWwgdG8gQUZURVIgdGhlIExTTiB0byBiZSByZXBs YXllZC4KKyAgICAgIFRoZSBzcGVjaWZpZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVw bGFjZWFibGU+IG11c3QgYmUgYW4gaW50ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1p bGxpc2Vjb25kcy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgor ICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUnVuIDxsaXRlcmFsPkFG VEVSPC9saXRlcmFsPiBmcm9tIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4sCisgICBs aW1pdGluZyB3YWl0IHRpbWUgdG8gMTAwMDAgbWlsbGlzZWNvbmRzOgorCis8c2NyZWVuPgorQUZU RVIgJzAvM0YwN0E2QjEnIFdJVEhJTiAxMDAwMDsKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hl ZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4KK0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0t CisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQg dW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgor PHNjcmVlbj4KK0FGVEVSICcwLzNGMDdBNjExJzsKK0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorPC9zY3JlZW4+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIExpbWl0 IDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FpdCB0aW1lIHRvIDUwMDAwMCBtaWxsaXNlY29uZHMs CisgICBhbmQgdGhlbiBjYW5jZWwgdGhlIGNvbW1hbmQgaWYgPGFjcm9ueW0+TFNOPC9hY3Jvbnlt PiB3YXMgbm90IHJlYWNoZWQ6Cis8c2NyZWVuPgorQUZURVIgTFNOICcwLzNGMEZGNzkxJyBXSVRI SU4gNTAwMDAwOworXkNDYW5jZWwgcmVxdWVzdCBzZW50CitOT1RJQ0U6ICBMU04gaXMgbm90IHJl YWNoZWQuIFRyeSB0byBpbmNyZWFzZSB3YWl0IHRpbWUuCitFUlJPUjogIGNhbmNlbGluZyBzdGF0 ZW1lbnQgZHVlIHRvIHVzZXIgcmVxdWVzdAorIExTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisg ZgorKDEgcm93KQorPC9zY3JlZW4+Cis8L3BhcmE+Cis8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDRhNDI5OTliMTguLmZmMmU2ZTBmM2YgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTYsNiArNiw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxl IHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogCiA8IS0tIFNRTCBjb21tYW5k cyAtLT4KIDwhRU5USVRZIGFib3J0ICAgICAgICAgICAgICBTWVNURU0gImFib3J0LnNnbWwiPgor PCFFTlRJVFkgYWJvcnQgICAgICAgICAgICAgIFNZU1RFTSAiYWZ0ZXIuc2dtbCI+CiA8IUVOVElU WSBhbHRlckFnZ3JlZ2F0ZSAgICAgU1lTVEVNICJhbHRlcl9hZ2dyZWdhdGUuc2dtbCI+CiA8IUVO VElUWSBhbHRlckNvbGxhdGlvbiAgICAgU1lTVEVNICJhbHRlcl9jb2xsYXRpb24uc2dtbCI+CiA8 IUVOVElUWSBhbHRlckNvbnZlcnNpb24gICAgU1lTVEVNICJhbHRlcl9jb252ZXJzaW9uLnNnbWwi PgpAQCAtMTg4LDYgKzE4OSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNl IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgdXBkYXRlICAgICAgICAgICAgIFNZ U1RFTSAidXBkYXRlLnNnbWwiPgogPCFFTlRJVFkgdmFjdXVtICAgICAgICAgICAgIFNZU1RFTSAi dmFjdXVtLnNnbWwiPgogPCFFTlRJVFkgdmFsdWVzICAgICAgICAgICAgIFNZU1RFTSAidmFsdWVz LnNnbWwiPgorPCFFTlRJVFkgd2FpdCAgICAgICAgICAgICAgIFNZU1RFTSAid2FpdC5zZ21sIj4K IAogPCEtLSBhcHBsaWNhdGlvbnMgYW5kIHV0aWxpdGllcyAtLT4KIDwhRU5USVRZIGNsdXN0ZXJk YiAgICAgICAgICBTWVNURU0gImNsdXN0ZXJkYi5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYmVnaW4uc2dtbAppbmRleCAw MTZiMDIxNDg3Li5hMjc5NDc2M2IxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2lu LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sCkBAIC0yMSwxMyArMjEsMTYg QEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3Bz aXM+Ci1CRUdJTiBbIFdPUksgfCBUUkFOU0FDVElPTiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KK0JFR0lO IFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2Vh YmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJ WkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRU RUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUK KworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVu dDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2Zf bWlsbGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCmluZGV4IDc0Y2NkN2UzNDUuLjQ2YTNiY2Yx YTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKQEAgLTIxLDEzICsy MSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxz eW5vcHNpcz4KLVNUQVJUIFRSQU5TQUNUSU9OIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KK1NUQVJUIFRSQU5T QUNUSU9OIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndh aXRfZXZlbnQ8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwv cGhyYXNlPgogCiAgICAgSVNPTEFUSU9OIExFVkVMIHsgU0VSSUFMSVpBQkxFIHwgUkVQRUFUQUJM RSBSRUFEIHwgUkVBRCBDT01NSVRURUQgfCBSRUFEIFVOQ09NTUlUVEVEIH0KICAgICBSRUFEIFdS SVRFIHwgUkVBRCBPTkxZCiAgICAgWyBOT1QgXSBERUZFUlJBQkxFCisKKzxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBBRlRFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNu X3ZhbHVlPC9yZXBsYWNlYWJsZT4gWyBXSVRISU4gbnVtYmVyX29mX21pbGxpc2Vjb25kcyBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAppbmRleCBhYTk0 ZjZhZGY2Li43Yzk0Y2Y5ZGUxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCkBAIC0zNCw2ICszNCw3IEBACiAg IDwvcGFydGludHJvPgogCiAgICAmYWJvcnQ7CisgICAmYWZ0ZXI7CiAgICAmYWx0ZXJBZ2dyZWdh dGU7CiAgICAmYWx0ZXJDb2xsYXRpb247CiAgICAmYWx0ZXJDb252ZXJzaW9uOwpAQCAtMjE2LDYg KzIxNyw3IEBACiAgICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2Fp dDsKIAogIDwvcmVmZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jCmluZGV4IDBiYjQ3MmRhMjcuLjRkMzlhMjRjNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFj a3VwL2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgog I2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xODEwLDYgKzE4MTEsMTUgQEAgUGVyZm9ybVdhbFJlY292 ZXJ5KHZvaWQpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkqIElmIHdlIHJlcGxheWVk IGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLAorCQkJKiBzZXQgbGF0Y2hlcyBp biBzaGFyZWQgbWVtb3J5IGFycmF5IHRvIG5vdGlmeSB0aGUgd2FpdGVyLgorCQkJKi8KKwkJCWlm IChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkp CisJCQl7CisJCQkJIFdhaXRTZXRMYXRjaChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVu ZFJlY1B0cik7CisJCQl9CisKIAkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwg cmVjb3JkICovCiAJCQlyZWNvcmQgPSBSZWFkUmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBMT0csIGZh bHNlLCByZXBsYXlUTEkpOwogCQl9IHdoaWxlIChyZWNvcmQgIT0gTlVMTCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01h a2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEuLmQ4ZjY5NjVkOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxl CkBAIC02MSw2ICs2MSw3IEBAIE9CSlMgPSBcCiAJdmFjdXVtLm8gXAogCXZhY3V1bXBhcmFsbGVs Lm8gXAogCXZhcmlhYmxlLm8gXAotCXZpZXcubworCXZpZXcubyBcCisJd2FpdC5vCiAKIGluY2x1 ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQKaW5kZXggNmRkMDBhNGFiZC4uM2YwNmRjNTM0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQKQEAgLTUwLDQgKzUwLDUgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAndmFj dXVtcGFyYWxsZWwuYycsCiAgICd2YXJpYWJsZS5jJywKICAgJ3ZpZXcuYycsCisgICd3YWl0LmMn LAogKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvd2FpdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmRhMTZkNzJkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0 LmMKQEAgLTAsMCArMSwyOTggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuYwor ICoJICBJbXBsZW1lbnRzIFdBSVQgRk9SLCB3aGljaCBhbGxvd3Mgd2FpdGluZyBmb3IgZXZlbnRz IHN1Y2ggYXMKKyAqCSAgdGltZSBwYXNzaW5nIG9yIExTTiBoYXZpbmcgYmVlbiByZXBsYXllZCBv biByZXBsaWNhLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIwLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAyMDIwLCBSZWdlbnRzIG9mIFBvc3RncmVzUHJvCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKworI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgInBv c3RncmVzLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1 ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUg ImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNp bmNsdWRlICJjb21tYW5kcy93YWl0LmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYmFja2VuZGlkLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NpbnZhbGFkdC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorCisvKiBBZGQg dG8gLyBkZWxldGUgZnJvbSBzaGFyZWQgbWVtb3J5IGFycmF5ICovCitzdGF0aWMgdm9pZCBBZGRF dmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KTsKK3N0YXRpYyB2b2lkIERlbGV0ZUV2ZW50KHZv aWQpOworCisvKiBTaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sK KwlpbnQJCQliYWNrZW5kX21heGlkOworCXBnX2F0b21pY191aW50NjQJbWluX2xzbjsKKwlzbG9j a190CQltdXRleDsKKwlYTG9nUmVjUHRyCXdhaXRlZF9sc25bRkxFWElCTEVfQVJSQVlfTUVNQkVS XTsKK30gV2FpdFN0YXRlOworCitzdGF0aWMgdm9sYXRpbGUgV2FpdFN0YXRlICpzdGF0ZTsKKwor LyogQWRkIHRoZSBldmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIHRvIHRoZSBzaGFyZWQgbWVt b3J5IGFycmF5ICovCitzdGF0aWMgdm9pZAorQWRkRXZlbnQoWExvZ1JlY1B0ciBsc25fdG9fd2Fp dCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJaWYgKHN0YXRlLT5iYWNr ZW5kX21heGlkIDwgTXlCYWNrZW5kSWQpCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gTXlCYWNr ZW5kSWQ7CisKKwlzdGF0ZS0+d2FpdGVkX2xzbltNeUJhY2tlbmRJZF0gPSBsc25fdG9fd2FpdDsK KworCWlmIChsc25fdG9fd2FpdCA8IHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24p KQorCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZzdGF0ZS0+bWluX2xzbixsc25fdG9fd2FpdCk7CisJ U3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogRGVsZXRlIGV2ZW50 IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheS4KKyAq CisgKiBUT0RPOiBDb25zaWRlciBzdGF0ZSBjbGVhbnVwIG9uIGJhY2tlbmQgZmFpbHVyZS4KKyAq IENoZWNrOgorICogMSkgbm9tYWx8c21hcnR8ZmFzdHxpbW1lZGlhdGUgc3RvcAorICogMikgU0lH S0lMTCBhbmQgU0lHVEVSTQorICovCitzdGF0aWMgdm9pZAorRGVsZXRlRXZlbnQodm9pZCkKK3sK KwlpbnQJCQlpOworCVhMb2dSZWNQdHIJbHNuX3RvX2RlbGV0ZSA9IHN0YXRlLT53YWl0ZWRfbHNu W015QmFja2VuZElkXTsKKworCXN0YXRlLT53YWl0ZWRfbHNuW015QmFja2VuZElkXSA9IEludmFs aWRYTG9nUmVjUHRyOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCisJLyog SWYgd2UgbmVlZCB0byBjaG9vc2UgdGhlIG5leHQgbWluX2xzbiwgdXBkYXRlIHN0YXRlLT5taW5f bHNuICovCisJaWYgKHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pID09IGxzbl90 b19kZWxldGUpCisJeworCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZzdGF0ZS0+bWluX2xzbixQR19V SU5UNjRfTUFYKTsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsgaSsr KQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9nUmVjUHRyICYmCisJ CQkJc3RhdGUtPndhaXRlZF9sc25baV0gPCBwZ19hdG9taWNfcmVhZF91NjQoJnN0YXRlLT5taW5f bHNuKSkKKwkJCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZzdGF0ZS0+bWluX2xzbixzdGF0ZS0+d2Fp dGVkX2xzbltpXSk7CisJfQorCisJaWYgKHN0YXRlLT5iYWNrZW5kX21heGlkID09IE15QmFja2Vu ZElkKQorCQlmb3IgKGkgPSAoTXlCYWNrZW5kSWQpOyBpID49IDI7IGktLSkKKwkJCWlmIChzdGF0 ZS0+d2FpdGVkX2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJCXsKKwkJCQlzdGF0ZS0+ YmFja2VuZF9tYXhpZCA9IGk7CisJCQkJYnJlYWs7CisJCQl9CisKKwlTcGluTG9ja1JlbGVhc2Uo JnN0YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1v cnkgc3BhY2UgbmVlZGVkIGZvciBXYWl0U3RhdGUKKyAqLworU2l6ZQorV2FpdFNobWVtU2l6ZSh2 b2lkKQoreworCVNpemUJCXNpemU7CisKKwlzaXplID0gb2Zmc2V0b2YoV2FpdFN0YXRlLCB3YWl0 ZWRfbHNuKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTWF4QmFja2VuZHMgKyAx LCBzaXplb2YoWExvZ1JlY1B0cikpKTsKKwlyZXR1cm4gc2l6ZTsKK30KKworLyogSW5pdCBhcnJh eSBvZiBldmVudHMgaW4gc2hhcmVkIG1lbW9yeSAqLwordm9pZAorV2FpdFNobWVtSW5pdCh2b2lk KQoreworCWJvb2wJCWZvdW5kOworCXVpbnQzMgkJaTsKKworCXN0YXRlID0gKFdhaXRTdGF0ZSAq KSBTaG1lbUluaXRTdHJ1Y3QoInBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJCQkgIFdhaXRTaG1lbVNp emUoKSwKKwkJCQkJCQkJCQkgICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCVNwaW5Mb2Nr SW5pdCgmc3RhdGUtPm11dGV4KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgKE1heEJhY2tlbmRzICsg MSk7IGkrKykKKwkJCXN0YXRlLT53YWl0ZWRfbHNuW2ldID0gSW52YWxpZFhMb2dSZWNQdHI7CisK KwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSAwOworCQlwZ19hdG9taWNfaW5pdF91NjQoJnN0YXRl LT5taW5fbHNuLFBHX1VJTlQ2NF9NQVgpOworCX0KK30KKworLyogU2V0IGFsbCBsYXRjaGVzIGlu IHNoYXJlZCBtZW1vcnkgdG8gc2lnbmFsIHRoYXQgbmV3IExTTiBoYXMgYmVlbiByZXBsYXllZCAq Lwordm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xzbikKK3sKKwl1aW50MzIJCWk7 CisJaW50IAkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAgKmJhY2tlbmQ7CisKKwlTcGluTG9j a0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9tYXhpZCA9IHN0YXRlLT5iYWNrZW5k X21heGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKKworCWZvciAoaSA9IDI7 IGkgPD0gYmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2VuZCA9IEJhY2tlbmRJZEdldFBy b2MoaSk7CisJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltpXSAhPSAwKQorCQl7CisJCQlpZiAoYmFj a2VuZCAmJiBzdGF0ZS0+d2FpdGVkX2xzbltpXSA8PSBjdXJfbHNuKQorCQkJCVNldExhdGNoKCZi YWNrZW5kLT5wcm9jTGF0Y2gpOworCQl9CisJfQorfQorCisvKiBHZXQgbWluaW1hbCBMU04gdGhh dCB3aWxsIGJlIG5leHQgKi8KK1hMb2dSZWNQdHIKK0dldE1pbldhaXQodm9pZCkKK3sKKwlyZXR1 cm4gc3RhdGUgPyBwZ19hdG9taWNfcmVhZF91NjQoJnN0YXRlLT5taW5fbHNuKSA6IFBHX1VJTlQ2 NF9NQVg7Cit9CisKKy8qCisgKiBPbiBXQUlUIHVzZSBNeUxhdGNoIHRvIHdhaXQgdGlsbCBMU04g aXMgcmVwbGF5ZWQsCisgKiBwb3N0bWFzdGVyIGRpZXMgb3IgdGltZW91dCBoYXBwZW5zLgorICov CitpbnQKK1dhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBmbG9hdDggc2VjcykKK3sK KwlYTG9nUmVjUHRyCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWludAkJ CWxhdGNoX2V2ZW50czsKKwlmbG9hdDgJCWVuZHRpbWU7CisJdWludDMyCQlyZXMgPSAwOworCisJ aWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJy bXNnKCJXb3JrIG9ubHkgaW4gc3RhbmRieSBtb2RlIikpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworI2RlZmluZSBHZXROb3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkg LyAxMDAwMDAwLjApCisJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyBzZWNzOworCisJbGF0Y2hf ZXZlbnRzID0gV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEg7CisKKwlpZiAobHNuICE9 IEludmFsaWRYTG9nUmVjUHRyKQorCXsKKwkJLyogSnVzdCBjaGVjayBpZiB3ZSByZWFjaGVkICov CisJCWlmIChsc24gPCBjdXJfbHNuIHx8IHNlY3MgPCAwKQorCQkJcmV0dXJuIChsc24gPCBjdXJf bHNuKTsKKworCQlsYXRjaF9ldmVudHMgfD0gV0xfTEFUQ0hfU0VUOworCQlBZGRFdmVudChsc24p OworCX0KKwllbHNlIGlmICghc2VjcykKKwkJcmV0dXJuIDE7CisKKwlmb3IgKDs7KQorCXsKKwkJ aW50CQkJcmM7CisJCWZsb2F0OAkJZGVsYXkgPSAwOworCQlsb25nCQlkZWxheV9tczsKKworCQkv KiBJZiBMU04gaGFzIGJlZW4gcmVwbGF5ZWQgKi8KKwkJaWYgKGxzbiAmJiBsc24gPD0gY3VyX2xz bikKKwkJCWJyZWFrOworCisJCWlmIChzZWNzID4gMCkKKwkJCWRlbGF5ID0gZW5kdGltZSAtIEdl dE5vd0Zsb2F0KCk7CisJCWVsc2UgaWYgKHNlY3MgPT0gMCkKKwkJCS8qCisJCQkqIElmIHdlIHdh aXQgZm9yZXZlciwgdGhlbiAxIG1pbnV0ZSB0aW1lb3V0IHRvIGNoZWNrCisJCQkqIGZvciBJbnRl cnVwdHMuCisJCQkqLworCQkJZGVsYXkgPSA2MDsKKworCQlpZiAoZGVsYXkgPiAwLjApCisJCQlk ZWxheV9tcyA9IChsb25nKSBjZWlsKGRlbGF5ICogMTAwMC4wKTsKKwkJZWxzZQorCQkJYnJlYWs7 CisKKwkJLyoKKwkJICogSWYgcmVjZWl2ZWQgYW4gaW50ZXJydXB0aW9uIGZyb20gQ0hFQ0tfRk9S X0lOVEVSUlVQVFMsCisJCSAqIHRoZW4gZGVsZXRlIHRoZSBjdXJyZW50IGV2ZW50IGZyb20gYXJy YXkuCisJCSAqLworCQlpZiAoSW50ZXJydXB0UGVuZGluZykKKwkJeworCQkJaWYgKGxzbiAhPSBJ bnZhbGlkWExvZ1JlY1B0cikKKwkJCQlEZWxldGVFdmVudCgpOworCQkJUHJvY2Vzc0ludGVycnVw dHMoKTsKKwkJfQorCisJCS8qIElmIHBvc3RtYXN0ZXIgZGllcywgZmluaXNoIGltbWVkaWF0ZWx5 ICovCisJCWlmICghUG9zdG1hc3RlcklzQWxpdmUoKSkKKwkJCWJyZWFrOworCisJCXJjID0gV2Fp dExhdGNoKE15TGF0Y2gsIGxhdGNoX2V2ZW50cywgZGVsYXlfbXMsCisJCQkJCSAgIFdBSVRfRVZF TlRfQ0xJRU5UX1JFQUQpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisKKwkJaWYgKGxzbiAmJiByYyAmIFdMX0xBVENIX1NFVCkKKwkJCWN1cl9s c24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCX0KKworCWlmIChsc24gIT0gSW52YWxp ZFhMb2dSZWNQdHIpCisJCURlbGV0ZUV2ZW50KCk7CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9n UmVjUHRyICYmIGxzbiA+IGN1cl9sc24pCisJCWVsb2coTk9USUNFLCJMU04gaXMgbm90IHJlYWNo ZWQuIFRyeSB0byBpbmNyZWFzZSB3YWl0IHRpbWUuIik7CisJZWxzZQorCQlyZXMgPSAxOworCisJ cmV0dXJuIHJlczsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAor V2FpdE1haW4oV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK3sKKwlUdXBsZURl c2MJdHVwZGVzYzsKKwlUdXBPdXRwdXRTdGF0ZSAqdHN0YXRlOworCVhMb2dSZWNQdHIJbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisJaW50CQlyZXMgPSAwOworCisJbHNuID0gRGF0dW1HZXRMU04o RGlyZWN0RnVuY3Rpb25DYWxsMShwZ19sc25faW4sCisJCQkJCQkJCQkJCQkgQ1N0cmluZ0dldERh dHVtKHN0bXQtPmxzbikpKTsKKwlyZXMgPSBXYWl0VXRpbGl0eShsc24sIHN0bXQtPmRlbGF5KTsK KworCS8qIE5lZWQgYSB0dXBsZSBkZXNjcmlwdG9yIHJlcHJlc2VudGluZyBhIHNpbmdsZSBURVhU IGNvbHVtbiAqLworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYygxKTsKKwlUdXBs ZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJMU04gcmVhY2hlZCIsIFRF WFRPSUQsIC0xLCAwKTsKKwkvKiBQcmVwYXJlIGZvciBwcm9qZWN0aW9uIG9mIHR1cGxlcyAqLwor CXRzdGF0ZSA9IGJlZ2luX3R1cF9vdXRwdXRfdHVwZGVzYyhkZXN0LCB0dXBkZXNjLCAmVFRTT3Bz TWluaW1hbFR1cGxlKTsKKworCS8qIFNlbmQgaXQgKi8KKwlkb190ZXh0X291dHB1dF9vbmVsaW5l KHRzdGF0ZSwgcmVzPyJ0IjoiZiIpOworCWVuZF90dXBfb3V0cHV0KHRzdGF0ZSk7CisJcmV0dXJu IHJlczsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IGRiZGY2YmY4OTYuLmEyNWI3Y2QyY2YgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYwpAQCAtNDA1LDcgKzQwNSw2IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxs U3RtdChwc3RhdGUsCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJy ZWFrOwotCiAJCWRlZmF1bHQ6CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAxMzBmN2ZjN2MzLi4z N2M0MjVkYmU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgTm9kZSAq bWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogCQlTZWNMYWJlbFN0bXQgU2VsZWN0U3RtdCBUcmFuc2FjdGlvblN0bXQgVHJh bnNhY3Rpb25TdG10TGVnYWN5IFRydW5jYXRlU3RtdAogCQlVbmxpc3RlblN0bXQgVXBkYXRlU3Rt dCBWYWN1dW1TdG10CiAJCVZhcmlhYmxlUmVzZXRTdG10IFZhcmlhYmxlU2V0U3RtdCBWYXJpYWJs ZVNob3dTdG10Ci0JCVZpZXdTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10 CisJCVZpZXdTdG10IFdhaXRTdG10IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10 CiAJCURlYWxsb2NhdGVTdG10IFByZXBhcmVTdG10IEV4ZWN1dGVTdG10CiAJCURyb3BPd25lZFN0 bXQgUmVhc3NpZ25Pd25lZFN0bXQKIAkJQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10IEFsdGVyVFNE aWN0aW9uYXJ5U3RtdApAQCAtNjQ1LDYgKzY0NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAldHlwZSA8cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4J CWhhc2hfcGFydGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5 cGUgPGl2YWw+CQl3YWl0X3RpbWUKKyV0eXBlIDxub2RlPgkJd2FpdF9mb3IKIAogJXR5cGUgPG5v ZGU+CWpzb25fZm9ybWF0X2NsYXVzZQogCQkJCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKQEAgLTEx MDMsNiArMTEwNSw3IEBAIHN0bXQ6CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBWYXJpYWJs ZVNob3dTdG10CiAJCQl8IFZpZXdTdG10CisJCQl8IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkqLwog CQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsKQEAgLTEwOTM0LDEyICsxMDkzNywxMyBAQCBUcmFuc2Fj dGlvblN0bXQ6CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9Ci0JCQl8IFNUQVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9l bXB0eQorCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1w dHkgd2FpdF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRy YW5zYWN0aW9uU3RtdCk7CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJCQkJ CW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9 IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTEwMzgsMTIgKzExMDQyLDEz IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJOwogCiBUcmFuc2FjdGlvblN0bXRMZWdhY3k6Ci0JCQlC RUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKwkJ CUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSB3 YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNh Y3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKIAkJCQkJbi0+ b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xNTg3NSw2ICsxNTg4MCwzNyBAQCB4 bWxfcGFzc2luZ19tZWNoOgogCQkJfCBCWSBWQUxVRV9QCiAJCTsKIAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJQUZURVIgTFNOX3ZhbHVlIFtXSVRISU4gZGVs YXkgdGltZXN0YW1wXQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dhaXRTdG10OgorCQkJ QUZURVIgU2NvbnN0IHdhaXRfdGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9k ZShXYWl0U3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJ CQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCTsKK3dhaXRfZm9yOgorCQkJQUZURVIgU2NvbnN0 IHdhaXRfdGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7 CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9IChOb2Rl ICopbjsKKwkJCQl9CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK3dh aXRfdGltZToKKwkJCVdJVEhJTiBJY29uc3QJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAq LyAgICAgICAgICAgeyAkJCA9IDA7IH0KKwkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3Jh dGlvbiBjbGF1c2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggNzA4NGUxODg2MS4uOWRmNjE5 N2RmMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3Zlcnku aCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE1Myw2ICsxNTQsNyBAQCBDYWxjdWxhdGVT aG1lbVNpemUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3Rh dHNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEV4dGVuc2lv blNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgSW5qZWN0aW9uUG9pbnRTaG1l bVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZk ZWYgRVhFQ19CQUNLRU5ECiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5 U2l6ZSgpKTsKICNlbmRpZgpAQCAtMjQ1LDYgKzI0NywxMSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlB bmRTZW1hcGhvcmVzKHZvaWQpCiAJLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCiAJQ3JlYXRl T3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKIAorCS8qCisJICogSW5pdCBhcnJheSBvZiBMYXRjaGVz IGluIHNoYXJlZCBtZW1vcnkgZm9yIHdhaXQgbHNuCisJICovCisJV2FpdFNobWVtSW5pdCgpOwor CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA4ZGU4MjFmOTYw Li5lODg0ODI4MDExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTUsNiArMTUsNyBAQAogICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgPGZsb2F0Lmg+ CiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Jl bG9wdGlvbnMuaCIKQEAgLTU5LDYgKzYwLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy91c2VyLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmlldy5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3 cml0ZXIuaCIKQEAgLTcyLDYgKzc0LDkgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNp bmNsdWRlICJ1dGlscy9wZ19sc24uaCIKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29u dHJvbCBpbiBQcm9jZXNzVXRpbGl0eSgpICovCiBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgUHJv Y2Vzc1V0aWxpdHlfaG9vayA9IE5VTEw7CkBAIC0yNzIsNiArMjc3LDcgQEAgQ2xhc3NpZnlVdGls aXR5Q29tbWFuZEFzUmVhZE9ubHkoTm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfTG9hZFN0bXQ6 CiAJCWNhc2UgVF9QcmVwYXJlU3RtdDoKIAkJY2FzZSBUX1VubGlzdGVuU3RtdDoKKwkJY2FzZSBU X1dhaXRTdG10OgogCQljYXNlIFRfVmFyaWFibGVTZXRTdG10OgogCQkJewogCQkJCS8qCkBAIC02 MTIsNiArNjE4LDExIEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3Rt dCwKIAkJCQkJY2FzZSBUUkFOU19TVE1UX1NUQVJUOgogCQkJCQkJewogCQkJCQkJCUxpc3RDZWxs ICAgKmxjOworCQkJCQkJCVdhaXRTdG10ICAgKndhaXRzdG10ID0gKFdhaXRTdG10ICopIHN0bXQt PndhaXQ7CisKKwkJCQkJCQkvKiBJZiBuZWVkZWQgdG8gV0FJVCBGT1Igc29tZXRoaW5nIGJ1dCBm YWlsZWQgKi8KKwkJCQkJCQlpZiAoc3RtdC0+d2FpdCAmJiBXYWl0TWFpbih3YWl0c3RtdCwgZGVz dCkgPT0gMCkKKwkJCQkJCQkJYnJlYWs7CiAKIAkJCQkJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2so KTsKIAkJCQkJCQlmb3JlYWNoKGxjLCBzdG10LT5vcHRpb25zKQpAQCAtMTA2OSw2ICsxMDgwLDEz IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQlicmVh azsKIAkJCX0KIAorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQl7CisJCQkJV2FpdFN0bXQgICAqc3Rt dCA9IChXYWl0U3RtdCAqKSBwYXJzZXRyZWU7CisJCQkJV2FpdE1haW4oc3RtdCwgZGVzdCk7CisJ CQkJYnJlYWs7CisJCQl9CisKIAkJZGVmYXVsdDoKIAkJCS8qIEFsbCBvdGhlciBzdGF0ZW1lbnQg dHlwZXMgaGF2ZSBldmVudCB0cmlnZ2VyIHN1cHBvcnQgKi8KIAkJCVByb2Nlc3NVdGlsaXR5U2xv dyhwc3RhdGUsIHBzdG10LCBxdWVyeVN0cmluZywKQEAgLTI4NDcsNiArMjg2NSwxMCBAQCBDcmVh dGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9IENNRFRBR19OT1RJRlk7CiAJ CQlicmVhazsKIAorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQl0YWcgPSBDTURUQUdfV0FJVDsKKwkJ CWJyZWFrOworCiAJCWNhc2UgVF9MaXN0ZW5TdG10OgogCQkJdGFnID0gQ01EVEFHX0xJU1RFTjsK IAkJCWJyZWFrOwpAQCAtMzQ5NSw2ICszNTE3LDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2Rl ICpwYXJzZXRyZWUpCiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwogCisJCWNhc2Ug VF9XYWl0U3RtdDoKKwkJCWxldiA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJY2FzZSBU X0xpc3RlblN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2Fp dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAyNzAxNjBkNDQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKQEAgLTAsMCArMSwy NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5oCisgKgkgIHByb3RvdHlwZXMg Zm9yIGNvbW1hbmRzL3dhaXQuYworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDE2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAyMDE2LCBSZWdlbnRzIG9mIFBvc3RncmVzUFJPCisgKgorICogc3JjL2luY2x1 ZGUvY29tbWFuZHMvd2FpdC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYg V0FJVF9ICisjZGVmaW5lIFdBSVRfSAorI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAi dGNvcC9kZXN0LmgiCisKK2V4dGVybiBpbnQgV2FpdFV0aWxpdHkoWExvZ1JlY1B0ciBsc24sIGNv bnN0IGZsb2F0OCBkZWxheSk7CitleHRlcm4gU2l6ZSBXYWl0U2htZW1TaXplKHZvaWQpOworZXh0 ZXJuIHZvaWQgV2FpdFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTZXRMYXRjaChY TG9nUmVjUHRyIGN1cl9sc24pOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdCh2b2lkKTsK K2V4dGVybiBmbG9hdDggV2FpdFRpbWVSZXNvbHZlKENvbnN0ICp0aW1lKTsKK2V4dGVybiBpbnQg V2FpdE1haW4oV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCk7CisKKyNlbmRpZiAg IC8qIFdBSVRfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ3NmQ1NWRkMjQuLjc1M2Yz YzRmYjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM1MjcsNiArMzUyNyw3IEBAIHR5cGVk ZWYgc3RydWN0IFRyYW5zYWN0aW9uU3RtdAogCS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0 ZWQgY29tbWFuZHMgKi8KIAljaGFyCSAgICpnaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9p Z25vcmUpOwogCWJvb2wJCWNoYWluOwkJCS8qIEFORCBDSEFJTiBvcHRpb24gKi8KKwlOb2RlCQkq d2FpdDsJCQkvKiB3YWl0IGxzbiBjbGF1c2UgKi8KIAkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogCWludAkJCWxvY2F0aW9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVf bG9jYXRpb24pOwogfSBUcmFuc2FjdGlvblN0bXQ7CkBAIC00MDc4LDQgKzQwNzksMTYgQEAgdHlw ZWRlZiBzdHJ1Y3QgRHJvcFN1YnNjcmlwdGlvblN0bXQKIAlEcm9wQmVoYXZpb3IgYmVoYXZpb3I7 CQkvKiBSRVNUUklDVCBvciBDQVNDQURFIGJlaGF2aW9yICovCiB9IERyb3BTdWJzY3JpcHRpb25T dG10OwogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJQUZURVIgU3RhdGVtZW50ICsg QUZURVIgY2xhdXNlIG9mIEJFR0lOIHN0YXRlbWVudAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICovCisKK3R5cGVkZWYgc3RydWN0IFdhaXRTdG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlj aGFyCSAgICpsc247CQkvKiBMU04gKi8KKwlpbnQJCQlkZWxheTsJCS8qIFRJTUVPVVQgKi8KK30g V2FpdFN0bXQ7CisKICNlbmRpZgkJCQkJCQkvKiBQQVJTRU5PREVTX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWds aXN0LmgKaW5kZXggN2ZkY2VjNmRkOS4uNTY3MTM5OTYzYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgK QEAgLTIxNywzICsyMTcsNCBAQCBQR19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJV TkNBVEUgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19VTkxJ U1RFTiwgIlVOTElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdf VVBEQVRFLCAiVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQogUEdfQ01EVEFHKENNRFRBR19W QUNVVU0sICJWQUNVVU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19X QUlULCAiQUZURVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRl eCBiZjA4N2FjMmE5Li40N2UzNmFiNmYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9t ZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZApAQCAtNDYsNiAr NDYsOCBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMzhfc2F2ZV9sb2dpY2FsX3Nsb3RzX3NodXRk b3duLnBsJywKICAgICAgICd0LzAzOV9lbmRfb2Zfd2FsLnBsJywKICAgICAgICd0LzA0MF9zdGFu ZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwnLAorICAgICAgJ3QvMDQxX2JlZ2luX2FmdGVyLnBs JywKKyAgICAgICd0LzA0Ml9hZnRlci5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX2FmdGVyLnBsIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDBfYmVnaW5fYWZ0ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYjIyZTYzNjAzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDQwX2JlZ2luX2FmdGVyLnBsCkBAIC0wLDAgKzEsODYgQEAKKyMgQ2hlY2tzIHdhaXRpbmcgZm9y IGxzbiBvbiBzdGFuZGJ5IEFGVEVSCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK K3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9kZV9w cmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9k ZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5z dGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBBUyBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9ICdt eV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3Jl YXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhlIGJh Y2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn c3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDE7Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zy b21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5nID0+ IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxWwor CXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0YW5k YnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBBRlRFUiB3b3JrczogYWRkIG5ldyBj b250ZW50IHRvIHByaW1hcnkgYW5kIG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVu IHdhaXQgZm9yIHByaW1hcnkncyBMU04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBBRlRFUiBpcwor IyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBn aXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAy MCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkJFR0lOIEFGVEVSICckbHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQg TFNOIG9uIHN0YW5kYnkgYW5kIG1ha2Ugc3VyZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBM U04KK215ICRsc25fc3RhbmRieSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25z ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25f Y21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21w YXJlX2xzbnMgZXEgMCwgInN0YW5kYnkgcmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBB RlRFUiIpOworCisKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVE9ETzogcmVtb3ZlIHRo aXMgdGVzdCBpZiB3ZSByZW1vdmUgdGhlIHN0YW5kYWxvbmUgIkFGVEVSIiBjb21tYW5kCisjPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgQUZURVIgd29ya3Mg ZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3IgdGhhdCwgbGV0J3MKKyMgZ2V0IHR3byBMU05z IHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBkaWZmZXJlbnQgbWF4IHZhbHVlcyBpbiBvdXIg dGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkpIik7CitteSAkbHNu MyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDQxLCA1MCkpIik7 CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQmVmb3JlIHN0YXJ0aW5nIHRyYW5zYWN0aW9u LCBBRlRFUiB3aGljaCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDQwLgorIyBJbnNpZGUgdGhlIHRy YW5zYWN0aW9uLCBBRlRFUiB0aGF0IGVuc3VyZXMgYSBtYXggdmFsdWUgb2YgNTAuCisjIER1ZSB0 byBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFELCB3ZSBzaG91bGQgTk9UIHNlZSB0aGUg bmV3IG1heCB2YWx1ZS4KK215ICRzdGFuZGJ5X3Jlc3VsdHMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJQkVHSU4gVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRCBBRlRFUiAnJGxzbjMnOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3 YWl0X3Rlc3Q7CisJQkVHSU4gQUZURVIgJyRsc240JzsKKwlTRUxFQ1QgcGdfbGFzdF93YWxfcmVw bGF5X2xzbigpOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJQ09NTUlUOworXSk7 CisKKyMgTWFrZSBzdXJlIHRoYXQgd2UgaW5kZWVkIHJlYWNoIHByaW1hcnkncyBsYXN0IExTTiBp bnNpZGUgdGhlIHRyYW5zYWN0aW9uLgorIyBGb3IgdGhhdCwgY2hlY2sgdGhhdCBjYWxsaW5nIHBn X2xhc3Rfd2FsX3JlcGxheV9sc24gcmV0dXJuZWQgdGhhdCBMU04uCitteSAkbGFzdF9sc25fcmVh Y2hlZCA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLyRsc240LzsKK29rKCRsYXN0X2xzbl9yZWFjaGVk LCAiQUZURVIgd29ya3MgaW5zaWRlIGEgdHJhbnNhY3Rpb24iKTsKKworIyBDaGVjayB0aGF0IHRy YW5zYWN0aW9uIGRvZXNuJ3QgYnJlYWsgYW5kIHNob3cgdXMgdGhlIG5ldyBtYXggdmFsdWUgYWZ0 ZXIgQUZURVIuCisjIEZvciB0aGF0LCBtYWtlIHN1cmUgdGhhdCB0aGUgb2xkZXIgbWF4IHZhbHVl IGlzIHJlcGVhdGVkIHR3aWNlIGluIHRoZSByZXN1bHRzLgorbXkgJGNvdW50ID0gKCkgPSAkc3Rh bmRieV9yZXN1bHRzID1+IC80MC9nOworb2soJGNvdW50IGVxIDIsICJ0cmFuc2FjdGlvbiBpc29s YXRpb24gbGV2ZWwgZG9lc24ndCBnZXQgYnJva2VuIGR1ZSB0byBBRlRFUiIpOworCiskbm9kZV9z dGFuZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfYWZ0ZXIucGwgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MV9hZnRlci5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li40ODBiYTZiMzNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFf YWZ0ZXIucGwKQEAgLTAsMCArMSw5OSBAQAorIyBDaGVja3Mgd2FpdGluZyBmb3IgbHNuIG9uIHN0 YW5kYnkgQUZURVIKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6 Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnkt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisj IEFuZCBzb21lIGNvbnRlbnQgYW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7 Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJl YW1pbmcgc3RhbmRieSB3aXRoIGEgMSBzZWNvbmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAk bm9kZV9zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7 CitteSAkZGVsYXkgICAgICAgID0gMjsKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAo JG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9k ZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCisJcmVjb3Zlcnlf bWluX2FwcGx5X2RlbGF5ID0gJyR7ZGVsYXl9cycKK10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7 CisKKworCisjIE1ha2Ugc3VyZSB0aGF0IEFGVEVSIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQgdG8g cHJpbWFyeSBhbmQgbWVtb3JpemUKKyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBmb3Ig cHJpbWFyeSdzIExTTiBvbiBzdGFuZGJ5LiBQcm92ZSB0aGF0IEFGVEVSIGlzCisjIGFibGUgdG8g c2V0dXAgYW4gaW5maW5pdGUgd2FpdGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdh aXQgdGltZW91dC4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215 ICRsc24xID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf Y3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQUZURVIgJyRsc24xJyIpOworCisjIEdldCB0aGUgY3VycmVudCBMU04gb24gc3RhbmRieSBh bmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExTTgorbXkgJGxzbl9zdGFu ZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19s YXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRi eSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBlcSAwLCAi c3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IEFGVEVSIik7CisKKworCisj IENoZWNrIHRoYXQgdGltZW91dHMgd29yayBvbiB0aGVpciBvd24gYW5kIGxldCB1cyB3YWl0IGZv ciBzcGVjaWZpZWQgdGltZSAoMXMpCitteSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgbm93KCkiKTsKK215ICRvbmVfc2Vjb25kID0g MTAwMDsgIyBpbiBtaWxsaXNlY29uZHMKK215ICRzdGFydF90aW1lID0gdGltZSgpOworCisjIE5v dywgY2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gd2FpdGluZyBmb3Ig TFNOCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g d2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDIxLCAzMCkpIik7CitteSAkbHNuMiA9 ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRf d2FsX2xzbigpIik7CitteSAkcmVhY2hlZF9sc24gPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUZURVIgJyRsc24yJyBXSVRISU4gMSIpOworb2soJHJlYWNoZWRfbHNu IGVxICJmIiwgIkFGVEVSIGRvZXNuJ3QgcmVhY2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2Fp dCB0aW1lIik7CisKKworCisjIFdlIG5lZWQgdG8gY2hlY2sgdGhhdCBXQUlUIHdvcmtzIGZpbmUg aW5zaWRlIHRyYW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0aGF0 IHdpbGwgY29ycmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRhYmxl LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdh aXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbjMgPSAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dh bF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkg JGxzbjQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19j dXJyZW50X3dhbF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwgQUZU RVIgd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2Fj dGlvbiwgQUZURVIgdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgorIyBEdWUgdG8gSVNP TEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhlIG5ldyBt YXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxWworCUFGVEVSICckbHNuMyc7CisJQkVHSU4gVFJBTlNBQ1RJT04g SVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2Fp dF90ZXN0OworCUFGVEVSICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24o KTsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1h a2Ugc3VyZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRo ZSB0cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dh bF9yZXBsYXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAk c3RhbmRieV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIkFGVEVS IHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlv biBkb2Vzbid0IGJyZWFrIGFuZCBzaG93IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIEFGVEVS LgorIyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBl YXRlZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVz dWx0cyA9fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxl dmVsIGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gQUZURVIiKTsKKworJG5vZGVfc3RhbmRieS0+ c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsK --=_8ff1b9414c7204d8b0eaa0768f9bc543 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v6.patch Content-Disposition: attachment; filename=wait_classic_v6.patch; size=48681 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA0YTQyOTk5YjE4Li42NTdhMjE3ZTI3IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmIzYWYxNmMwOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwyMSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9ldmVudDwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0 aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJ T04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRF RCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBb IE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKyAgICBX QUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZlbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKyAgICBM U04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGlt ZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv c3RhcnRfdHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li4xYjU0ZWQyMDg0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMjEgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ Ci1TVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9l dmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJh c2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJF QUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUg fCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBXQUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXZlbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KKyAgICBMU04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWls bGlzZWNvbmRzCisgICAgdGltZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi93YWl0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjZj YWUzYWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sCkBA IC0wLDAgKzEsMTQ2IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL3dhaXQuc2dtbAorUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtd2FpdCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtd2FpdCI+CisgIDxwcmltYXJ5PldBSVQgRk9SPC9wcmltYXJ5Pgor IDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPldBSVQgRk9SPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUIEZPUjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+d2FpdCBmb3IgdGhlIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJlcGxh eWVkIG9yIGZvciBzcGVjaWZpZWQgdGltZSB0byBwYXNzPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFt ZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK1dBSVQgRk9SIFtBTlkgfCBB TExdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IFss IC4uLl0KKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZl bnQ8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisgICAgTFNOIHZhbHVlCisgICAg VElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGltZXN0YW1wCisKK1dBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2Vh YmxlPicKK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicgVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+d2FpdF90aW1lb3V0PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicsIFRJTUVTVEFNUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1lPC9yZXBsYWNlYWJsZT4KK1dB SVQgRk9SIFRJTUVTVEFNUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1l PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIEFMTCBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sc25fbnVtYmVyPC9yZXBsYWNlYWJsZT4nIFRJTUVPVVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+LCBUSU1FU1RBTVAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+CitXQUlU IEZPUiBBTlkgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX251bWJlcjwv cmVwbGFjZWFibGU+JywgVElNRVNUQU1QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53 YWl0X3RpbWU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2Pgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHByb3ZpZGVzIGEgc2ltcGxlIGludGVycHJv Y2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBmb3IgdGltZXN0YW1wLCB0 aW1lb3V0IG9yIHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlcgorICAgKDxhY3JvbnltPkxT TjwvYWNyb255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLiBXaGVuIHJ1biB3aXRoIHRoZQorICAgPHJlcGxhY2VhYmxlPkxTTjwvcmVwbGFj ZWFibGU+IG9wdGlvbiwgdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPgorICAgY29tbWFu ZCB3YWl0cyBmb3IgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJl cGxheWVkLgorICAgSWYgbm8gdGltZXN0YW1wIG9yIHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2Fp dCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRpbmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5n IDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9yCisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8 bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2VydmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZh cmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJl ciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2 YWwgdG8gd2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZC4KKyAgICAgIFRoZSBzcGVjaWZp ZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgYW4gaW50 ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1pbGxpc2Vjb25kcy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT5VTlRJTCBUSU1FU1RBTVAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBMaW1pdCB0aGUgdGltZSB0byB3YWl0IGZvciB0aGUgTFNOIHRvIGJlIHJl cGxheWVkLgorICAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+d2FpdF90aW1lPC9yZXBs YWNlYWJsZT4gbXVzdCBiZSB0aW1lc3RhbXAuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFJ1biA8bGl0ZXJhbD5XQUlUIEZPUjwvbGl0ZXJhbD4gZnJvbSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+LAorICAgbGltaXRpbmcgd2FpdCB0aW1lIHRvIDEwMDAwIG1pbGxpc2Vjb25k czoKKworPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3QTZCMScgVElNRU9VVCAxMDAwMDsK K05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4K K0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5M U048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgorPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3 QTYxMSc7CitMU04gcmVhY2hlZAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvc2NyZWVu PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBMaW1pdCA8YWNyb255bT5MU048L2Fjcm9ueW0+ IHdhaXQgdGltZSB0byA1MDAwMDAgbWlsbGlzZWNvbmRzLAorICAgYW5kIHRoZW4gY2FuY2VsIHRo ZSBjb21tYW5kIGlmIDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FzIG5vdCByZWFjaGVkOgorPHNj cmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjBGRjc5MScgVElNRU9VVCA1MDAwMDA7CiteQ0NhbmNl bCByZXF1ZXN0IHNlbnQKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3Jl YXNlIHdhaXQgdGltZS4KK0VSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciBy ZXF1ZXN0CisgTFNOIHJlYWNoZWQKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVl bj4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gc3RhdGVtZW50IGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggYWE5NGY2 YWRmNi4uMDRlMTc2MjBkZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IDBiYjQ3MmRhMjcuLjk0MTVlYzFmMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xODEwLDYgKzE4MTEsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA2ZGQwMGE0YWJk Li4zZjA2ZGM1MzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCArNTAsNSBA QCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywKICAgJ3Zh cmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXQuYycsCiApCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTc0ZWFlYjJiYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDQwMyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJVCBG T1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1lIHBh c3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9z dGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5k cy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9iYWNrZW5kaWQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbGF0Y2guaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0byAvIGRlbGV0ZSBmcm9tIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpOworc3RhdGljIHZvaWQgRGVsZXRlRXZlbnQodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1v cnkgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7 CisJcGdfYXRvbWljX3VpbnQ2NAltaW5fbHNuOworCXNsb2NrX3QJCW11dGV4OworCVhMb2dSZWNQ dHIJd2FpdGVkX2xzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0 YXRpYyB2b2xhdGlsZSBXYWl0U3RhdGUgKnN0YXRlOworCisvKiBBZGQgdGhlIGV2ZW50IG9mIHRo ZSBjdXJyZW50IGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2 b2lkCitBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2NrQWNxdWly ZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeUJhY2tlbmRJ ZCkKKwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBNeUJhY2tlbmRJZDsKKworCXN0YXRlLT53YWl0 ZWRfbHNuW015QmFja2VuZElkXSA9IGxzbl90b193YWl0OworCisJaWYgKGxzbl90b193YWl0IDwg cGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikpCisJCXBnX2F0b21pY193cml0ZV91 NjQoJnN0YXRlLT5taW5fbHNuLGxzbl90b193YWl0KTsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRl LT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFja2Vu ZCBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAqIFRPRE86IENvbnNpZGVyIHN0 YXRlIGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hlY2s6CisgKiAxKSBub21hbHxz bWFydHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxMIGFuZCBTSUdURVJNCisgKi8K K3N0YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWludAkJCWk7CisJWExvZ1JlY1B0 cglsc25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdOworCisJc3Rh dGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlTcGlu TG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisKKwkvKiBJZiB3ZSBuZWVkIHRvIGNob29zZSB0 aGUgbmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUtPm1pbl9sc24gKi8KKwlpZiAocGdfYXRvbWlj X3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikgPT0gbHNuX3RvX2RlbGV0ZSkKKwl7CisJCXBnX2F0 b21pY193cml0ZV91NjQoJnN0YXRlLT5taW5fbHNuLFBHX1VJTlQ2NF9NQVgpOworCQlmb3IgKGkg PSAyOyBpIDw9IHN0YXRlLT5iYWNrZW5kX21heGlkOyBpKyspCisJCQlpZiAoc3RhdGUtPndhaXRl ZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlzdGF0ZS0+d2FpdGVkX2xzbltp XSA8IHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pKQorCQkJCXBnX2F0b21pY193 cml0ZV91NjQoJnN0YXRlLT5taW5fbHNuLHN0YXRlLT53YWl0ZWRfbHNuW2ldKTsKKwl9CisKKwlp ZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlCYWNrZW5kSWQpCisJCWZvciAoaSA9IChNeUJh Y2tlbmRJZCk7IGkgPj0gMjsgaS0tKQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IElu dmFsaWRYTG9nUmVjUHRyKQorCQkJeworCQkJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gaTsKKwkJ CQlicmVhazsKKwkJCX0KKworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKwor LyoKKyAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdh aXRTdGF0ZQorICovCitTaXplCitXYWl0U2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsK KworCXNpemUgPSBvZmZzZXRvZihXYWl0U3RhdGUsIHdhaXRlZF9sc24pOworCXNpemUgPSBhZGRf c2l6ZShzaXplLCBtdWxfc2l6ZShNYXhCYWNrZW5kcyArIDEsIHNpemVvZihYTG9nUmVjUHRyKSkp OworCXJldHVybiBzaXplOworfQorCisvKiBJbml0IGFycmF5IG9mIGV2ZW50cyBpbiBzaGFyZWQg bWVtb3J5ICovCit2b2lkCitXYWl0U2htZW1Jbml0KHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisJ dWludDMyCQlpOworCisJc3RhdGUgPSAoV2FpdFN0YXRlICopIFNobWVtSW5pdFN0cnVjdCgicGdf d2FpdF9sc24iLAorCQkJCQkJCQkJCSAgV2FpdFNobWVtU2l6ZSgpLAorCQkJCQkJCQkJCSAgJmZv dW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJU3BpbkxvY2tJbml0KCZzdGF0ZS0+bXV0ZXgpOwor CisJCWZvciAoaSA9IDA7IGkgPCAoTWF4QmFja2VuZHMgKyAxKTsgaSsrKQorCQkJc3RhdGUtPndh aXRlZF9sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhp ZCA9IDA7CisJCXBnX2F0b21pY19pbml0X3U2NCgmc3RhdGUtPm1pbl9sc24sUEdfVUlOVDY0X01B WCk7CisJfQorfQorCisvKiBTZXQgYWxsIGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWdu YWwgdGhhdCBuZXcgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCit2b2lkCitXYWl0U2V0TGF0Y2go WExvZ1JlY1B0ciBjdXJfbHNuKQoreworCXVpbnQzMgkJaTsKKwlpbnQgCQliYWNrZW5kX21heGlk OworCVBHUFJPQwkgICAqYmFja2VuZDsKKworCVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4 KTsKKwliYWNrZW5kX21heGlkID0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7CisJU3BpbkxvY2tSZWxl YXNlKCZzdGF0ZS0+bXV0ZXgpOworCisJZm9yIChpID0gMjsgaSA8PSBiYWNrZW5kX21heGlkOyBp KyspCisJeworCQliYWNrZW5kID0gQmFja2VuZElkR2V0UHJvYyhpKTsKKwkJaWYgKHN0YXRlLT53 YWl0ZWRfbHNuW2ldICE9IDApCisJCXsKKwkJCWlmIChiYWNrZW5kICYmIHN0YXRlLT53YWl0ZWRf bHNuW2ldIDw9IGN1cl9sc24pCisJCQkJU2V0TGF0Y2goJmJhY2tlbmQtPnByb2NMYXRjaCk7CisJ CX0KKwl9Cit9CisKKy8qIEdldCBtaW5pbWFsIExTTiB0aGF0IHdpbGwgYmUgbmV4dCAqLworWExv Z1JlY1B0cgorR2V0TWluV2FpdCh2b2lkKQoreworCXJldHVybiBzdGF0ZSA/IHBnX2F0b21pY19y ZWFkX3U2NCgmc3RhdGUtPm1pbl9sc24pIDogUEdfVUlOVDY0X01BWDsKK30KKworLyoKKyAqIE9u IFdBSVQgdXNlIE15TGF0Y2ggdG8gd2FpdCB0aWxsIExTTiBpcyByZXBsYXllZCwKKyAqIHBvc3Rt YXN0ZXIgZGllcyBvciB0aW1lb3V0IGhhcHBlbnMuCisgKi8KK2ludAorV2FpdFV0aWxpdHkoWExv Z1JlY1B0ciBsc24sIGNvbnN0IGZsb2F0OCBzZWNzKQoreworCVhMb2dSZWNQdHIJY3VyX2xzbiA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJaW50CQkJbGF0Y2hfZXZlbnRzOworCWZsb2F0 OAkJZW5kdGltZTsKKwl1aW50MzIJCXJlcyA9IDA7CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coIldvcmsgb25seSBpbiBzdGFu ZGJ5IG1vZGUiKSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisjZGVmaW5lIEdldE5vd0Zsb2F0 KCkJKChmbG9hdDgpIEdldEN1cnJlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwllbmR0aW1l ID0gR2V0Tm93RmxvYXQoKSArIHNlY3M7CisKKwlsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwg V0xfRVhJVF9PTl9QTV9ERUFUSDsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJ eworCQkvKiBKdXN0IGNoZWNrIGlmIHdlIHJlYWNoZWQgKi8KKwkJaWYgKGxzbiA8IGN1cl9sc24g fHwgc2VjcyA8IDApCisJCQlyZXR1cm4gKGxzbiA8IGN1cl9sc24pOworCisJCWxhdGNoX2V2ZW50 cyB8PSBXTF9MQVRDSF9TRVQ7CisJCUFkZEV2ZW50KGxzbik7CisJfQorCWVsc2UgaWYgKCFzZWNz KQorCQlyZXR1cm4gMTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4CQlk ZWxheSA9IDA7CisJCWxvbmcJCWRlbGF5X21zOworCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBs YXllZCAqLworCQlpZiAobHNuICYmIGxzbiA8PSBjdXJfbHNuKQorCQkJYnJlYWs7CisKKwkJaWYg KHNlY3MgPiAwKQorCQkJZGVsYXkgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJZWxzZSBp ZiAoc2VjcyA9PSAwKQorCQkJLyoKKwkJCSogSWYgd2Ugd2FpdCBmb3JldmVyLCB0aGVuIDEgbWlu dXRlIHRpbWVvdXQgdG8gY2hlY2sKKwkJCSogZm9yIEludGVydXB0cy4KKwkJCSovCisJCQlkZWxh eSA9IDYwOworCisJCWlmIChkZWxheSA+IDAuMCkKKwkJCWRlbGF5X21zID0gKGxvbmcpIGNlaWwo ZGVsYXkgKiAxMDAwLjApOworCQllbHNlCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNl aXZlZCBhbiBpbnRlcnJ1cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywKKwkJICogdGhl biBkZWxldGUgdGhlIGN1cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCWlmIChJbnRl cnJ1cHRQZW5kaW5nKQorCQl7CisJCQlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJ CURlbGV0ZUV2ZW50KCk7CisJCQlQcm9jZXNzSW50ZXJydXB0cygpOworCQl9CisKKwkJLyogSWYg cG9zdG1hc3RlciBkaWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVy SXNBbGl2ZSgpKQorCQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgbGF0Y2hf ZXZlbnRzLCBkZWxheV9tcywKKwkJCQkJICAgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CisKKwkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlpZiAo bHNuICYmIHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCk7CisJfQorCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJRGVsZXRl RXZlbnQoKTsKKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgbHNuID4gY3VyX2xz bikKKwkJZWxvZyhOT1RJQ0UsIkxTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdh aXQgdGltZS4iKTsKKwllbHNlCisJCXJlcyA9IDE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgor ICogR2V0IHRoZSBhbW91bnQgb2Ygc2Vjb25kcyBsZWZ0IHRpbGwgdGhlIHNwZWNpZmllZCB0aW1l LgorICovCitmbG9hdDgKK1dhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSkKK3sKKwlpbnQJCQly ZXQ7CisJZmxvYXQ4CQl2YWw7CisJT2lkCQkJdHlwZXNbXSA9IHsgdGltZS0+Y29uc3R0eXBlIH07 CisJRGF0dW0JCXZhbHVlc1tdID0geyB0aW1lLT5jb25zdHZhbHVlIH07CisJY2hhcgkJbnVsbHNb XSA9IHsgIiAiIH07CisJRGF0dW0JCXJlc3VsdDsKKwlib29sCQlpc251bGw7CisKKwlTUElfY29u bmVjdCgpOworCisJaWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMDgzKQorCQlyZXQgPSBTUElfZXhl Y3V0ZV93aXRoX2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpOjp0 aW1lKSkiLAorCQkJCQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVs c2UgaWYgKHRpbWUtPmNvbnN0dHlwZSA9PSAxMjY2KQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRo X2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICh0aW1lem9uZSgnVVRDJywkMSk6OnRp bWUgLSB0aW1lem9uZSgnVVRDJywgbm93KCk6OnRpbWV0eik6OnRpbWUpKSIsCisJCQkJCQkJCQkx LCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwgMCk7CisJZWxzZQorCQlyZXQgPSBTUElfZXhl Y3V0ZV93aXRoX2FyZ3MoInNlbGVjdCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpKSki LAorCQkJCQkJCQkJMSwgdHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCisJQXNzZXJ0 KHJldCA+PSAwKTsKKwlyZXN1bHQgPSBTUElfZ2V0YmludmFsKFNQSV90dXB0YWJsZS0+dmFsc1sw XSwKKwkJCQkJCSAgIFNQSV90dXB0YWJsZS0+dHVwZGVzYywKKwkJCQkJCSAgIDEsICZpc251bGwp OworCisJQXNzZXJ0KCFpc251bGwpOworCXZhbCA9IERhdHVtR2V0RmxvYXQ4KHJlc3VsdCk7CisK KwllbG9nKElORk8sICJ0aW1lOiAlZiIsIHZhbCk7CisKKwlTUElfZmluaXNoKCk7CisJcmV0dXJu IHZhbDsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAorV2FpdE1h aW4oV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkKK3sKKwlMaXN0Q2VsbCAgICpl dmVudHM7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlm bG9hdDgJCWRlbGF5ID0gMDsKKwlmbG9hdDgJCWZpbmFsX2RlbGF5ID0gMDsKKwlYTG9nUmVjUHRy CWxzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCVhMb2dSZWNQdHIJZmluYWxfbHNuID0gSW52YWxp ZFhMb2dSZWNQdHI7CisJYm9vbAkJaGFzX2xzbiA9IGZhbHNlOworCWJvb2wJCXdhaXRfZm9yZXZl ciA9IHRydWU7CisJaW50CQkJcmVzID0gMDsKKworCWlmIChzdG10LT5zdHJhdGVneSA9PSBXQUlU X0ZPUl9BTlkpCisJeworCQkvKiBQcmVwYXJlIHRvIGZpbmQgbWluaW11bSBMU04gYW5kIGRlbGF5 ICovCisJCWZpbmFsX2RlbGF5ID0gREJMX01BWDsKKwkJZmluYWxfbHNuID0gUEdfVUlOVDY0X01B WDsKKwl9CisKKwkvKiBFeHRyYWN0IG9wdGlvbnMgZnJvbSB0aGUgc3RhdGVtZW50IG5vZGUgdHJl ZSAqLworCWZvcmVhY2goZXZlbnRzLCBzdG10LT5ldmVudHMpCisJeworCQlXYWl0U3RtdCAgICpl dmVudCA9IChXYWl0U3RtdCAqKSBsZmlyc3QoZXZlbnRzKTsKKworCQkvKiBMU04gdG8gd2FpdCBm b3IgKi8KKwkJaWYgKGV2ZW50LT5sc24pCisJCXsKKwkJCWhhc19sc24gPSB0cnVlOworCQkJbHNu ID0gRGF0dW1HZXRMU04oCisJCQkJCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJ CQkJCQlDU3RyaW5nR2V0RGF0dW0oZXZlbnQtPmxzbikpKTsKKworCQkJLyoKKwkJCSAqIFdoZW4g d2FpdGluZyBmb3IgQUxMLCBzZWxlY3QgbWF4IExTTiB0byB3YWl0IGZvci4KKwkJCSAqIFdoZW4g d2FpdGluZyBmb3IgQU5ZLCBzZWxlY3QgbWluIExTTiB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJ aWYgKChzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfbHNuIDw9IGxzbikg fHwKKwkJCQkoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQU5ZICYmIGZpbmFsX2xzbiA+IGxz bikpCisJCQl7CisJCQkJZmluYWxfbHNuID0gbHNuOworCQkJfQorCQl9CisKKwkJLyogVGltZSBk ZWxheSB0byB3YWl0IGZvciAqLworCQlpZiAoZXZlbnQtPnRpbWUgfHwgZXZlbnQtPmRlbGF5KQor CQl7CisJCQl3YWl0X2ZvcmV2ZXIgPSBmYWxzZTsKKworCQkJaWYgKGV2ZW50LT5kZWxheSkKKwkJ CQlkZWxheSA9IGV2ZW50LT5kZWxheSAvIDEwMDAuMDsKKworCQkJaWYgKGV2ZW50LT50aW1lKQor CQkJeworCQkJCUNvbnN0ICp0aW1lID0gKENvbnN0ICopIGV2ZW50LT50aW1lOworCQkJCWRlbGF5 ID0gV2FpdFRpbWVSZXNvbHZlKHRpbWUpOworCQkJfQorCisJCQkvKgorCQkJICogV2hlbiB3YWl0 aW5nIGZvciBBTEwsIHNlbGVjdCBtYXggZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdh aXRpbmcgZm9yIEFOWSwgc2VsZWN0IG1pbiBkZWxheSB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJ aWYgKChzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfZGVsYXkgPD0gZGVs YXkpIHx8CisJCQkJKHN0bXQtPnN0cmF0ZWd5ID09IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9kZWxh eSA+IGRlbGF5KSkKKwkJCXsKKwkJCQlmaW5hbF9kZWxheSA9IGRlbGF5OworCQkJfQorCQl9CisJ fQorCWlmICh3YWl0X2ZvcmV2ZXIpCisJCWZpbmFsX2RlbGF5ID0gMDsKKwlpZiAoIWhhc19sc24p CisJCWZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCisJcmVzID0gV2FpdFV0aWxpdHko ZmluYWxfbHNuLCBmaW5hbF9kZWxheSk7CisKKwkvKiBOZWVkIGEgdHVwbGUgZGVzY3JpcHRvciBy ZXByZXNlbnRpbmcgYSBzaW5nbGUgVEVYVCBjb2x1bW4gKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVt cGxhdGVUdXBsZURlc2MoMSk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSAxLCAiTFNOIHJlYWNoZWQiLCBURVhUT0lELCAtMSwgMCk7CisJLyogUHJlcGFyZSBmb3Ig cHJvamVjdGlvbiBvZiB0dXBsZXMgKi8KKwl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRl c2MoZGVzdCwgdHVwZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisKKwkvKiBTZW5kIGl0ICov CisJZG9fdGV4dF9vdXRwdXRfb25lbGluZSh0c3RhdGUsIHJlcz8idCI6ImYiKTsKKwllbmRfdHVw X291dHB1dCh0c3RhdGUpOworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBk YmRmNmJmODk2Li5hM2IzMDQ3MDE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTg1LDYgKzg1LDcg QEAgc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkJIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVy eSAqdHJhbnNmb3JtQ2FsbFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlDYWxsU3Rt dCAqc3RtdCk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpw c3RhdGUsIFdhaXRTdG10ICpzdG10KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1 c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xh dXNlICpsYywgYm9vbCBwdXNoZWREb3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFH RV9URVNUCkBAIC00MDUsNyArNDA2LDIxIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpwYXJzZVRyZWUpCiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxsU3RtdChwc3Rh dGUsCiAJCQkJCQkJCQkgICAoQ2FsbFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFrOwotCisJ CWNhc2UgVF9XYWl0U3RtdDoKKwkJCXRyYW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0ZSwgKFdhaXRT dG10ICopIHBhcnNlVHJlZSk7CisJCQlyZXN1bHQgPSBtYWtlTm9kZShRdWVyeSk7CisJCQlyZXN1 bHQtPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7CisJCQlyZXN1bHQtPnV0aWxpdHlTdG10ID0g KE5vZGUgKikgcGFyc2VUcmVlOworCQkJYnJlYWs7CisJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6 CisJCQl7CisJCQkJVHJhbnNhY3Rpb25TdG10ICpzdG10ID0gKFRyYW5zYWN0aW9uU3RtdCAqKSBw YXJzZVRyZWU7CisJCQkJaWYgKChzdG10LT5raW5kID09IFRSQU5TX1NUTVRfQkVHSU4gfHwKKwkJ CQkJCXN0bXQtPmtpbmQgPT0gVFJBTlNfU1RNVF9TVEFSVCkgJiYgc3RtdC0+d2FpdCkKKwkJCQkJ dHJhbnNmb3JtV2FpdEZvclN0bXQocHN0YXRlLCAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdCk7CisJ CQl9CisJCQkvKiBubyBicmVhayBoZXJlIC0gd2Ugd2FudCB0byBmYWxsIHRocm91Z2ggdG8gdGhl IGRlZmF1bHQgKi8KKwkJCS8qIEZBTExUSFJPVUdIICovCiAJCWRlZmF1bHQ6CiAKIAkJCS8qCkBA IC0zNTYyLDYgKzM1NzcsMjMgQEAgYXBwbHlMb2NraW5nQ2xhdXNlKFF1ZXJ5ICpxcnksIEluZGV4 IHJ0aW5kZXgsCiAJcXJ5LT5yb3dNYXJrcyA9IGxhcHBlbmQocXJ5LT5yb3dNYXJrcywgcmMpOwog fQogCisvKgorICogdHJhbnNmb3JtV2FpdEZvclN0bXQgLQorICoJdHJhbnNmb3JtIHRoZSBXQUlU IEZPUiBjbGF1c2Ugb2YgdGhlIEJFR0lOIHN0YXRlbWVudAorICoJdHJhbnNmb3JtIHRoZSBXQUlU IEZPUiBzdGF0ZW1lbnQgKFRPRE86IHJlbW92ZSB0aGlzIGxpbmUgaWYgd2UgZG9uJ3Qga2VlcCBp dCkKKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybVdhaXRGb3JTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgV2FpdFN0bXQgKnN0bXQpCit7CisJTGlzdENlbGwgICAqZXZlbnRzOworCisJZm9yZWFj aChldmVudHMsIHN0bXQtPmV2ZW50cykKKwl7CisJCVdhaXRTdG10ICAgKmV2ZW50ID0gKFdhaXRT dG10ICopIGxmaXJzdChldmVudHMpOworCQlldmVudC0+dGltZSA9IHRyYW5zZm9ybUV4cHIocHN0 YXRlLCBldmVudC0+dGltZSwgRVhQUl9LSU5EX09USEVSKTsKKwl9Cit9CisKIC8qCiAgKiBDb3Zl cmFnZSB0ZXN0aW5nIGZvciByYXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcigpLgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDEzMGY3ZmM3YzMuLmRmZGY2ZDJkNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzEyLDcg KzMxMiw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCVNlY0xhYmVsU3RtdCBTZWxlY3RT dG10IFRyYW5zYWN0aW9uU3RtdCBUcmFuc2FjdGlvblN0bXRMZWdhY3kgVHJ1bmNhdGVTdG10CiAJ CVVubGlzdGVuU3RtdCBVcGRhdGVTdG10IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNldFN0bXQg VmFyaWFibGVTZXRTdG10IFZhcmlhYmxlU2hvd1N0bXQKLQkJVmlld1N0bXQgQ2hlY2tQb2ludFN0 bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQKKwkJVmlld1N0bXQgV2FpdFN0bXQgQ2hlY2tQb2ludFN0 bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQKIAkJRGVhbGxvY2F0ZVN0bXQgUHJlcGFyZVN0bXQgRXhl Y3V0ZVN0bXQKIAkJRHJvcE93bmVkU3RtdCBSZWFzc2lnbk93bmVkU3RtdAogCQlBbHRlclRTQ29u ZmlndXJhdGlvblN0bXQgQWx0ZXJUU0RpY3Rpb25hcnlTdG10CkBAIC01MzcsNyArNTM3LDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgljYXNlX2V4cHIgY2FzZV9hcmcg d2hlbl9jbGF1c2UgY2FzZV9kZWZhdWx0CiAldHlwZSA8bGlzdD4Jd2hlbl9jbGF1c2VfbGlzdAog JXR5cGUgPG5vZGU+CW9wdF9zZWFyY2hfY2xhdXNlIG9wdF9jeWNsZV9jbGF1c2UKLSV0eXBlIDxp dmFsPglzdWJfdHlwZSBvcHRfbWF0ZXJpYWxpemVkCisldHlwZSA8aXZhbD4Jc3ViX3R5cGUgd2Fp dF9zdHJhdGVneSBvcHRfbWF0ZXJpYWxpemVkCiAldHlwZSA8bm9kZT4JTnVtZXJpY09ubHkKICV0 eXBlIDxsaXN0PglOdW1lcmljT25seV9saXN0CiAldHlwZSA8YWxpYXM+CWFsaWFzX2NsYXVzZSBv cHRfYWxpYXNfY2xhdXNlIG9wdF9hbGlhc19jbGF1c2VfZm9yX2pvaW5fdXNpbmcKQEAgLTY0NSw2 ICs2NDUsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRib3VuZHNwZWM+ IFBhcnRpdGlvbkJvdW5kU3BlYwogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUg PGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2VsZW0KKyV0eXBlIDxsaXN0PgkJd2FpdF9saXN0Cisl dHlwZSA8bm9kZT4JCVdhaXRFdmVudCB3YWl0X2ZvcgogCiAldHlwZSA8bm9kZT4JanNvbl9mb3Jt YXRfY2xhdXNlCiAJCQkJanNvbl9mb3JtYXRfY2xhdXNlX29wdApAQCAtNzMwLDcgKzczMiw3IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKIAlMQUJFTCBMQU5HVUFHRSBMQVJHRV9QIExBU1Rf UCBMQVRFUkFMX1AKIAlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBMRUZUIExFVkVMIExJS0UgTElN SVQgTElTVEVOIExPQUQgTE9DQUwKLQlMT0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04g TE9DS19QIExPQ0tFRCBMT0dHRUQKKwlMT0NBTFRJTUUgTE9DQUxUSU1FU1RBTVAgTE9DQVRJT04g TE9DS19QIExPQ0tFRCBMT0dHRUQgTFNOCiAKIAlNQVBQSU5HIE1BVENIIE1BVENIRUQgTUFURVJJ QUxJWkVEIE1BWFZBTFVFIE1FUkdFIE1FVEhPRAogCU1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9O VEhfUCBNT1ZFCkBAIC03NjQsNyArNzY2LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlT VUJTQ1JJUFRJT04gU1VCU1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QIFNZ U1RFTV9VU0VSCiAKIAlUQUJMRSBUQUJMRVMgVEFCTEVTQU1QTEUgVEFCTEVTUEFDRSBURU1QIFRF TVBMQVRFIFRFTVBPUkFSWSBURVhUX1AgVEhFTgotCVRJRVMgVElNRSBUSU1FU1RBTVAgVE8gVFJB SUxJTkcgVFJBTlNBQ1RJT04gVFJBTlNGT1JNCisJVElFUyBUSU1FIFRJTUVPVVQgVElNRVNUQU1Q IFRPIFRSQUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQogCVRSRUFUIFRSSUdHRVIgVFJJTSBU UlVFX1AKIAlUUlVOQ0FURSBUUlVTVEVEIFRZUEVfUCBUWVBFU19QCiAKQEAgLTc3NCw3ICs3NzYs OCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwg TGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJ REFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCiAJVkVSQk9TRSBW RVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQogCi0JV0hFTiBXSEVSRSBXSElURVNQQUNFX1Ag V0lORE9XIFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRFCisJV0FJVCBXSEVO IFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cKKwlXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JB UFBFUiBXUklURQogCiAJWE1MX1AgWE1MQVRUUklCVVRFUyBYTUxDT05DQVQgWE1MRUxFTUVOVCBY TUxFWElTVFMgWE1MRk9SRVNUIFhNTE5BTUVTUEFDRVMKIAlYTUxQQVJTRSBYTUxQSSBYTUxST09U IFhNTFNFUklBTElaRSBYTUxUQUJMRQpAQCAtMTEwMyw2ICsxMTA2LDcgQEAgc3RtdDoKIAkJCXwg VmFyaWFibGVTZXRTdG10CiAJCQl8IFZhcmlhYmxlU2hvd1N0bXQKIAkJCXwgVmlld1N0bXQKKwkJ CXwgV2FpdFN0bXQKIAkJCXwgLypFTVBUWSovCiAJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwpAQCAt MTA5MzQsMTIgKzEwOTM4LDEzIEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJCQkJbi0+bG9jYXRpb24g PSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgU1RBUlQgVFJBTlNBQ1RJ T04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5CisJCQl8IFNUQVJUIFRSQU5TQUNUSU9O IHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJh bnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5r aW5kID0gVFJBTlNfU1RNVF9TVEFSVDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53 YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CkBAIC0xMTAzOCwxMiArMTEwNDMsMTMgQEAgVHJhbnNhY3Rpb25TdG10OgogCQk7CiAK IFRyYW5zYWN0aW9uU3RtdExlZ2FjeToKLQkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5z YWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQorCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJh bnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5IHdhaXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2Fj dGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFuc2FjdGlvblN0bXQpOwogCiAJCQkJCW4tPmtpbmQg PSBUUkFOU19TVE1UX0JFR0lOOwogCQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQg PSAkNDsKIAkJCQkJbi0+bG9jYXRpb24gPSAtMTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJ CX0KQEAgLTE1ODc1LDYgKzE1ODgxLDc0IEBAIHhtbF9wYXNzaW5nX21lY2g6CiAJCQl8IEJZIFZB TFVFX1AKIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6CisgKgkJ CQlXQUlUIEZPUiA8ZXZlbnQ+IFssIDxldmVudD4gLi4uXQorICoJCQkJZXZlbnQgaXMgb25lIG9m OgorICoJCQkJCUxTTiB2YWx1ZQorICoJCQkJCVRJTUVPVVQgZGVsYXkKKyAqCQkJCQl0aW1lc3Rh bXAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXYWl0U3RtdDoKKwkJCVdBSVQgRk9SIHdh aXRfc3RyYXRlZ3kgd2FpdF9saXN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2Rl KFdhaXRTdG10KTsKKwkJCQkJbi0+c3RyYXRlZ3kgPSAkMzsKKwkJCQkJbi0+ZXZlbnRzID0gJDQ7 CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCTsKK3dhaXRfZm9yOgorCQkJV0FJVCBG T1Igd2FpdF9zdHJhdGVneSB3YWl0X2xpc3QKKwkJCQl7CisJCQkJCVdhaXRTdG10ICpuID0gbWFr ZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5zdHJhdGVneSA9ICQzOworCQkJCQluLT5ldmVudHMg PSAkNDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCAvKiBFTVBUWSAqLwkJeyAk JCA9IE5VTEw7IH07CisKK3dhaXRfc3RyYXRlZ3k6CisJCQlBTEwJCQkJCXsgJCQgPSBXQUlUX0ZP Ul9BTEw7IH0KKwkJCXwgQU5ZCQkJCXsgJCQgPSBXQUlUX0ZPUl9BTlk7IH0KKwkJCXwgLyogRU1Q VFkgKi8JCXsgJCQgPSBXQUlUX0ZPUl9BTEw7IH0KKwkJOworCit3YWl0X2xpc3Q6CisJCQlXYWl0 RXZlbnQJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCB3YWl0X2xpc3QgJywnIFdh aXRFdmVudAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCQl8IHdhaXRfbGlzdCBXYWl0RXZl bnQJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMik7IH0KKwkJOworCitXYWl0RXZlbnQ6CisJCQlMU04g U2NvbnN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRTdG10KTsKKwkJ CQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0gMDsKKwkJCQkJbi0+dGltZSA9IE5VTEw7 CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgVElNRU9VVCBJY29uc3QKKwkJCQl7 CisJCQkJCVdhaXRTdG10ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5sc24gPSBO VUxMOworCQkJCQluLT5kZWxheSA9ICQyOworCQkJCQluLT50aW1lID0gTlVMTDsKKwkJCQkJJCQg PSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBDb25zdERhdGV0aW1lIFNjb25zdAorCQkJCXsKKwkJ CQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPmxzbiA9IE5VTEw7 CisJCQkJCW4tPmRlbGF5ID0gMDsKKwkJCQkJbi0+dGltZSA9IG1ha2VTdHJpbmdDb25zdENhc3Qo JDIsIEAyLCAkMSk7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCTsKKwogCiAvKgog ICogQWdncmVnYXRlIGRlY29yYXRpb24gY2xhdXNlcwpAQCAtMTcyNzksNiArMTczNTMsNyBAQCB1 bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IExPQ0tfUAogCQkJfCBMT0NLRUQKIAkJCXwgTE9HR0VE CisJCQl8IExTTgogCQkJfCBNQVBQSU5HCiAJCQl8IE1BVENICiAJCQl8IE1BVENIRUQKQEAgLTE3 NDExLDYgKzE3NDg2LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBURU1QT1JBUlkKIAkJ CXwgVEVYVF9QCiAJCQl8IFRJRVMKKwkJCXwgVElNRU9VVAogCQkJfCBUUkFOU0FDVElPTgogCQkJ fCBUUkFOU0ZPUk0KIAkJCXwgVFJJR0dFUgpAQCAtMTc0MzcsNiArMTc1MTMsNyBAQCB1bnJlc2Vy dmVkX2tleXdvcmQ6CiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJTEUKKwkJCXwg V0FJVAogCQkJfCBXSElURVNQQUNFX1AKIAkJCXwgV0lUSElOCiAJCQl8IFdJVEhPVVQKQEAgLTE3 ODY5LDYgKzE3OTQ2LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBMT0NLX1AKIAkJCXwg TE9DS0VECiAJCQl8IExPR0dFRAorCQkJfCBMU04KIAkJCXwgTUFQUElORwogCQkJfCBNQVRDSAog CQkJfCBNQVRDSEVECkBAIC0xODAzMSw2ICsxODEwOSw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgVEhFTgogCQkJfCBUSUVTCiAJCQl8IFRJTUUKKwkJCXwgVElNRU9VVAogCQkJfCBUSU1F U1RBTVAKIAkJCXwgVFJBSUxJTkcKIAkJCXwgVFJBTlNBQ1RJT04KQEAgLTE4MDY4LDYgKzE4MTQ3 LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBWSUVXCiAJCQl8IFZJRVdTCiAJCQl8IFZP TEFUSUxFCisJCQl8IFdBSVQKIAkJCXwgV0hFTgogCQkJfCBXSElURVNQQUNFX1AKIAkJCXwgV09S SwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDcwODRlMTg4NjEuLjkxMTMwNzA5YjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pcGNpLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3ByZWZldGNoZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmgiCkBAIC0xNTMsNiArMTU0LDcgQEAgQ2FsY3VsYXRlU2htZW1TaXplKGlu dCAqbnVtX3NlbWFwaG9yZXMpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN0YXRzU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbVNpemUo KSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50U2htZW1TaXplKCkpOwor CXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0U2htZW1TaXplKCkpOwogI2lmZGVmIEVYRUNfQkFD S0VORAogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaG1lbUJhY2tlbmRBcnJheVNpemUoKSk7CiAj ZW5kaWYKQEAgLTM1Nyw2ICszNTksMTEgQEAgQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9p ZCkKIAlTdGF0c1NobWVtSW5pdCgpOwogCVdhaXRFdmVudEV4dGVuc2lvblNobWVtSW5pdCgpOwog CUluamVjdGlvblBvaW50U2htZW1Jbml0KCk7CisKKwkvKgorCSAqIEluaXQgYXJyYXkgb2YgTGF0 Y2hlcyBpbiBzaGFyZWQgbWVtb3J5IGZvciBXQUlUCisJICovCisJV2FpdFNobWVtSW5pdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA4ZGU4MjFmOTYwLi5lODg0ODI4MDExIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwpAQCAtMTUsNiArMTUsNyBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgPGZsb2F0Lmg+CiAKICNpbmNsdWRlICJhY2Nlc3Mv aHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKQEAgLTU5LDYg KzYwLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy91c2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv dmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmlldy5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf dXRpbGNtZC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKQEAgLTcyLDYgKzc0 LDkgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5o IgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24u aCIKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBQcm9jZXNzVXRpbGl0 eSgpICovCiBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgUHJvY2Vzc1V0aWxpdHlfaG9vayA9IE5V TEw7CkBAIC0yNzIsNiArMjc3LDcgQEAgQ2xhc3NpZnlVdGlsaXR5Q29tbWFuZEFzUmVhZE9ubHko Tm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfTG9hZFN0bXQ6CiAJCWNhc2UgVF9QcmVwYXJlU3Rt dDoKIAkJY2FzZSBUX1VubGlzdGVuU3RtdDoKKwkJY2FzZSBUX1dhaXRTdG10OgogCQljYXNlIFRf VmFyaWFibGVTZXRTdG10OgogCQkJewogCQkJCS8qCkBAIC02MTIsNiArNjE4LDExIEBAIHN0YW5k YXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQkJY2FzZSBUUkFOU19T VE1UX1NUQVJUOgogCQkJCQkJewogCQkJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQkJCVdhaXRT dG10ICAgKndhaXRzdG10ID0gKFdhaXRTdG10ICopIHN0bXQtPndhaXQ7CisKKwkJCQkJCQkvKiBJ ZiBuZWVkZWQgdG8gV0FJVCBGT1Igc29tZXRoaW5nIGJ1dCBmYWlsZWQgKi8KKwkJCQkJCQlpZiAo c3RtdC0+d2FpdCAmJiBXYWl0TWFpbih3YWl0c3RtdCwgZGVzdCkgPT0gMCkKKwkJCQkJCQkJYnJl YWs7CiAKIAkJCQkJCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKIAkJCQkJCQlmb3JlYWNoKGxj LCBzdG10LT5vcHRpb25zKQpAQCAtMTA2OSw2ICsxMDgwLDEzIEBAIHN0YW5kYXJkX1Byb2Nlc3NV dGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRf V2FpdFN0bXQ6CisJCQl7CisJCQkJV2FpdFN0bXQgICAqc3RtdCA9IChXYWl0U3RtdCAqKSBwYXJz ZXRyZWU7CisJCQkJV2FpdE1haW4oc3RtdCwgZGVzdCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJ ZGVmYXVsdDoKIAkJCS8qIEFsbCBvdGhlciBzdGF0ZW1lbnQgdHlwZXMgaGF2ZSBldmVudCB0cmln Z2VyIHN1cHBvcnQgKi8KIAkJCVByb2Nlc3NVdGlsaXR5U2xvdyhwc3RhdGUsIHBzdG10LCBxdWVy eVN0cmluZywKQEAgLTI4NDcsNiArMjg2NSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBh cnNldHJlZSkKIAkJCXRhZyA9IENNRFRBR19OT1RJRlk7CiAJCQlicmVhazsKIAorCQljYXNlIFRf V2FpdFN0bXQ6CisJCQl0YWcgPSBDTURUQUdfV0FJVDsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9M aXN0ZW5TdG10OgogCQkJdGFnID0gQ01EVEFHX0xJU1RFTjsKIAkJCWJyZWFrOwpAQCAtMzQ5NSw2 ICszNTE3LDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQlsZXYg PSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCWxldiA9 IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJCQlsZXYg PSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvd2FpdC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAyNzAxNjBkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy93YWl0LmgKQEAgLTAsMCArMSwyNiBAQAorLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogd2FpdC5oCisgKgkgIHByb3RvdHlwZXMgZm9yIGNvbW1hbmRzL3dhaXQuYwor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE2LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDE2LCBSZWdl bnRzIG9mIFBvc3RncmVzUFJPCisgKgorICogc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgV0FJVF9ICisjZGVmaW5lIFdBSVRf SAorI2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAidGNvcC9kZXN0LmgiCisKK2V4dGVy biBpbnQgV2FpdFV0aWxpdHkoWExvZ1JlY1B0ciBsc24sIGNvbnN0IGZsb2F0OCBkZWxheSk7Citl eHRlcm4gU2l6ZSBXYWl0U2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNobWVtSW5p dCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTZXRMYXRjaChYTG9nUmVjUHRyIGN1cl9sc24pOwor ZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdCh2b2lkKTsKK2V4dGVybiBmbG9hdDggV2FpdFRp bWVSZXNvbHZlKENvbnN0ICp0aW1lKTsKK2V4dGVybiBpbnQgV2FpdE1haW4oV2FpdFN0bXQgKnN0 bXQsIERlc3RSZWNlaXZlciAqZGVzdCk7CisKKyNlbmRpZiAgIC8qIFdBSVRfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDQ3NmQ1NWRkMjQuLmZkMjQ2MzY1ZWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKQEAgLTM1MjcsNiArMzUyNyw3IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5zYWN0aW9u U3RtdAogCS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0ZWQgY29tbWFuZHMgKi8KIAljaGFy CSAgICpnaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCWJvb2wJCWNoYWlu OwkJCS8qIEFORCBDSEFJTiBvcHRpb24gKi8KKwlOb2RlCSAgICp3YWl0OwkJCS8qIFdBSVQgY2xh dXNlOiBsaXN0IG9mIGV2ZW50cyB0byB3YWl0IGZvciAqLwogCS8qIHRva2VuIGxvY2F0aW9uLCBv ciAtMSBpZiB1bmtub3duICovCiAJaW50CQkJbG9jYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9sb2NhdGlvbik7CiB9IFRyYW5zYWN0aW9uU3RtdDsKQEAgLTQwNzgsNCArNDA3OSwyNiBA QCB0eXBlZGVmIHN0cnVjdCBEcm9wU3Vic2NyaXB0aW9uU3RtdAogCURyb3BCZWhhdmlvciBiZWhh dmlvcjsJCS8qIFJFU1RSSUNUIG9yIENBU0NBREUgYmVoYXZpb3IgKi8KIH0gRHJvcFN1YnNjcmlw dGlvblN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlXQUlUIEZPUiBTdGF0 ZW1lbnQgKyBXQUlUIEZPUiBjbGF1c2Ugb2YgQkVHSU4gc3RhdGVtZW50CisgKgkJVE9ETzogaWYg d2Ugb25seSBwaWNrIG9uZSwgcmVtb3ZlIHRoZSBvdGhlcgorICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisKK3R5cGVkZWYgZW51bSBXYWl0Rm9yU3RyYXRlZ3kKK3sKKwlXQUlUX0ZPUl9B TlkgPSAwLAorCVdBSVRfRk9SX0FMTAorfSBXYWl0Rm9yU3RyYXRlZ3k7CisKK3R5cGVkZWYgc3Ry dWN0IFdhaXRTdG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlXYWl0Rm9yU3RyYXRlZ3kgc3RyYXRl Z3k7CisJTGlzdAkgICAqZXZlbnRzOwkJLyogdXNlZCBhcyBhIHBvaW50ZXIgdG8gdGhlIG5leHQg V0FJVCBldmVudCAqLworCWNoYXIJICAgKmxzbjsJCS8qIFdBSVQgRk9SIExTTiAqLworCWludAkJ CWRlbGF5OwkJLyogV0FJVCBGT1IgVElNRU9VVCAqLworCU5vZGUJICAgKnRpbWU7CQkvKiBXQUlU IEZPUiBUSU1FU1RBTVAgb3IgVElNRSAqLworfSBXYWl0U3RtdDsKKwogI2VuZGlmCQkJCQkJCS8q IFBBUlNFTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkuLmFlN2I2NTUy NmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTI2MCw2ICsyNjAsNyBAQCBQR19LRVlXT1JEKCJsb2Nh dGlvbiIsIExPQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJsb2NrIiwgTE9DS19QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJsb2NrZWQiLCBMT0NLRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImxvZ2dlZCIsIExPR0dFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgibHNuIiwgTFNOLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJtYXBwaW5nIiwgTUFQUElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgibWF0Y2giLCBNQVRDSCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibWF0Y2hlZCIsIE1BVENIRUQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQzMyw2ICs0MzQsNyBAQCBQR19LRVlXT1JEKCJ0ZXh0 IiwgVEVYVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0 aGVuIiwgVEhFTiwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRp ZXMiLCBUSUVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0 aW1lIiwgVElNRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInRp bWVvdXQiLCBUSU1FT1VULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJ0aW1lc3RhbXAiLCBUSU1FU1RBTVAsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJ0byIsIFRPLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tF WVdPUkQoInRyYWlsaW5nIiwgVFJBSUxJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CkBAIC00NzMsNiArNDc1LDcgQEAgUEdfS0VZV09SRCgidmVyc2lvbiIsIFZFUlNJT05fUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmlldyIsIFZJRVcsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZpZXdzIiwgVklFV1Ms IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZvbGF0aWxlIiwg Vk9MQVRJTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoIndh aXQiLCBXQUlULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ3 aGVuIiwgV0hFTiwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIndo ZXJlIiwgV0hFUkUsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgid2hp dGVzcGFjZSIsIFdISVRFU1BBQ0VfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaAppbmRleCA3ZmRjZWM2ZGQ5Li4yOTVjZDZmZjNhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2Nt ZHRhZ2xpc3QuaApAQCAtMjE3LDMgKzIxNyw0IEBAIFBHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVf VEFCTEUsICJUUlVOQ0FURSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUco Q01EVEFHX1VOTElTVEVOLCAiVU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01E VEFHKENNRFRBR19VUERBVEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCiBQR19DTURU QUcoQ01EVEFHX1ZBQ1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX1dBSVQsICJXQUlUIEZPUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21l c29uLmJ1aWxkCmluZGV4IGJmMDg3YWMyYTkuLjZmNWYyNjAzYTEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1 aWxkCkBAIC00Niw2ICs0Niw4IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzOF9zYXZlX2xvZ2lj YWxfc2xvdHNfc2h1dGRvd24ucGwnLAogICAgICAgJ3QvMDM5X2VuZF9vZl93YWwucGwnLAogICAg ICAgJ3QvMDQwX3N0YW5kYnlfZmFpbG92ZXJfc2xvdHNfc3luYy5wbCcsCisgICAgICAndC8wNDFf YmVnaW5fd2FpdC5wbCcsCisgICAgICAndC8wNDJfd2FpdC5wbCcsCiAgICAgXSwKICAgfSwKIH0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQwX2JlZ2luX3dhaXQucGwgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA0MF9iZWdpbl93YWl0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmYxZTViNWIyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MF9iZWdpbl93YWl0LnBsCkBAIC0wLDAgKzEsMTQ2IEBACisjIENoZWNrcyBX QUlUIEZPUgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9y ZTsKKworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5k IHNvbWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRu b2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWlu ZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2Rl X3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215 ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9k ZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0 YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5f YXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKwor CisKKyMgTWFrZSBzdXJlIHRoYXQgV0FJVCBGT1IgTFNOIHdvcmtzOiBhZGQgbmV3IGNvbnRlbnQg dG8gcHJpbWFyeSBhbmQgbWVtb3JpemUKKyMgcHJpbWFyeSdzIG5ldyBMU04sIHRoZW4gd2FpdCBm b3IgcHJpbWFyeSdzIExTTiBvbiBzdGFuZGJ5LiBQcm92ZSB0aGF0IFdBSVQgaXMKKyMgYWJsZSB0 byBzZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8g d2FpdCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOwor bXkgJGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBw Z19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJCRUdJTiBXQUlUIEZPUiBMU04gJyRsc24xJyIpOworCisjIEdldCB0aGUgY3VycmVudCBM U04gb24gc3RhbmRieSBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJpbWFyeSdzIExT TgorbXkgJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRjb21wYXJlX2xzbnMg PSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9j bXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBh cmVfbHNucyBlcSAwLCAic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IGFm dGVyIFdBSVQiKTsKKworCisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIG9uIHRoZWlyIG93 biBhbmQgbGV0IHVzIHdhaXQgZm9yIHNwZWNpZmllZCB0aW1lICgxcykKK215ICRjdXJyZW50X3Rp bWUgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBub3coKSIp OworbXkgJG9uZV9zZWNvbmQgPSAxMDAwOyAjIGluIG1pbGxpc2Vjb25kcworbXkgJHN0YXJ0X3Rp bWUgPSB0aW1lKCk7CisjIFdoaWxlIHdlJ3JlIGF0IGl0LCBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRo ZSBzeW50YXggd2l0aCBjb21tYXMgd29ya3MgZmluZSBhbmQKKyMgdGhhdCBieSBkZWZhdWx0IHdl IHVzZSBXQUlUIEZPUiBBTEwgc3RyYXRlZ3ksIHdoaWNoIG1lYW5zIHdhaXRpbmcgZm9yIG1heCB0 aW1lCiskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJVCBGT1IgVElN RU9VVCAkb25lX3NlY29uZCwgVElNRVNUQU1QICckY3VycmVudF90aW1lJyIpOworbXkgJHRpbWVf d2FpdGVkID0gKHRpbWUoKSAtICRzdGFydF90aW1lKSAqIDEwMDA7ICMgY29udmVydCB0byBtaWxs aXNlY29uZHMKK29rKCR0aW1lX3dhaXRlZCA+PSAkb25lX3NlY29uZCwgIldBSVQgRk9SIFRJTUVP VVQgd2FpdHMgZm9yIGVub3VnaCB0aW1lIik7CisKKyMgTm93LCBjaGVjayB0aGF0IHRpbWVvdXRz IHdvcmsgYXMgZXhwZWN0ZWQgd2hlbiB3YWl0aW5nIGZvciBMU04KKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoMjEsIDMwKSkiKTsKK215ICRsc24yID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKK215ICRyZWFj aGVkX2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJCRUdJTiBX QUlUIEZPUiBMU04gJyRsc24yJyBUSU1FT1VUIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAiZiIs ICJXQUlUIGRvZXNuJ3QgcmVhY2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lIik7 CisKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVE9ETzogcmVtb3ZlIHRoaXMgdGVzdCBp ZiB3ZSByZW1vdmUgdGhlIHN0YW5kYWxvbmUgIldBSVQgRk9SIiBjb21tYW5kCisjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJVCB3b3JrcyBmaW5lIGlu c2lkZSB0cmFuc2FjdGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3 aWxsIGNvcnJlc3BvbmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4K KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0 X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxf bHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRs c240ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3Vy cmVudF93YWxfbHNuKCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIHdhaXQg Zm9yIExTTiB3aGljaCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDQwLgorIyBJbnNpZGUgdGhlIHRy YW5zYWN0aW9uLCB3YWl0IGZvciBMU04gdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9mIDUwLgor IyBEdWUgdG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxkIE5PVCBz ZWUgdGhlIG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVfc3RhbmRi eS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9OIElTT0xB VElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQgV0FJVCBGT1IgTFNOICckbHNuMyc7CisJU0VMRUNU IG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlCRUdJTiBXQUlUIEZPUiBMU04gJyRsc240JzsKKwlT RUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0 X3Rlc3Q7CisJQ09NTUlUOworXSk7CisKKyMgTWFrZSBzdXJlIHRoYXQgd2UgaW5kZWVkIHJlYWNo IHByaW1hcnkncyBsYXN0IExTTiBpbnNpZGUgdGhlIHRyYW5zYWN0aW9uLgorIyBGb3IgdGhhdCwg Y2hlY2sgdGhhdCBjYWxsaW5nIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24gcmV0dXJuZWQgdGhhdCBM U04uCitteSAkbGFzdF9sc25fcmVhY2hlZCA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLyRsc240LzsK K29rKCRsYXN0X2xzbl9yZWFjaGVkLCAiV0FJVCBGT1IgTFNOIHdvcmtzIGluc2lkZSBhIHRyYW5z YWN0aW9uIik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vzbid0IGJyZWFrIGFuZCBz aG93IHVzIHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIFdBSVQuCisjIEZvciB0aGF0LCBtYWtlIHN1 cmUgdGhhdCB0aGUgb2xkZXIgbWF4IHZhbHVlIGlzIHJlcGVhdGVkIHR3aWNlIGluIHRoZSByZXN1 bHRzLgorbXkgJGNvdW50ID0gKCkgPSAkc3RhbmRieV9yZXN1bHRzID1+IC80MC9nOworb2soJGNv dW50IGVxIDIsICJ0cmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgZG9lc24ndCBnZXQgYnJva2Vu IGR1ZSB0byBXQUlUIik7CisKKworCisjIEdldCBtdWx0aXBsZSBMU05zIGZvciB0ZXN0aW5nIFdB SVQgRk9SIEFOWSAvIFdBSVQgRk9SIEFMTAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg1 MSwgNjApKSIpOworbXkgJGxzbjUgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRl X3Nlcmllcyg2MSwgNzAwMDApKSIpOworbXkgJGxzbjYgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxV RVMgKGdlbmVyYXRlX3Nlcmllcyg2MSwgODAwMDAwKSkiKTsKK215ICRsc243ID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCki KTsKKworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFOWSB3b3JrcyBmaW5lCiskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQU5ZIExTTiAnJGxzbjUn IExTTiAnJGxzbjYnIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24o KSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjUnOjpw Z19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGdlIDAsCisJIldBSVQgRk9SIEFOWSBtYWtlcyB1 cyByZWFjaCBhdCBsZWFzdCB0aGUgbWluaW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworJGNvbXBh cmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcnOjpwZ19sc24pIik7Cisj IFRPRE86IENvdWxkIHRoaXMgc29tZWhvdyBmYWlsIGR1ZSB0byB0aGUgbWFjaGluZSBiZWluZyB2 ZXJ5IGZhc3QgYXQgYXBwbHlpbmcgTFNOPworb2soJGNvbXBhcmVfbHNucyBsdCAwLAorCSJXQUlU IEZPUiBBTlkgZGlkbid0IG1ha2UgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhlIGxp c3QiKTsKKworIyBDaGVjayB0aGF0IFdBSVQgRk9SIEFMTCB3b3JrcyBmaW5lCiskbm9kZV9zdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgQUxMIExTTiAnJGxz bjUnLCBMU04gJyRsc242JywgTFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9ICRub2RlX3N0 YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5 X2xzbigpIik7CiskY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNu Nyc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwKKwkiV0FJVCBGT1IgQUxMIG1h a2VzIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisKKworCiskbm9k ZV9zdGFuZGJ5LT5zdG9wOworJG5vZGVfcHJpbWFyeS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfd2FpdC5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQxX3dhaXQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNmY5ZDU0OTQxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQx X3dhaXQucGwKQEAgLTAsMCArMSwxNDUgQEAKKyMgQ2hlY2tzIFdBSVQgRk9SCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUg cHJpbWFyeSBub2RlCitteSAkbm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gMSk7Ciskbm9kZV9wcmltYXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0 YWtlIGEgYmFja3VwCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFRBQkxFIHdhaXRfdGVzdCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEi KTsKK215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3Vw KCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEg c2Vjb25kIGRlbGF5IGZyb20gdGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDE7 Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBf bmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsIHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2Rl bGF5fXMnCitdKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhh dCBXQUlUIEZPUiBMU04gd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1v cml6ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9u IHN0YW5kYnkuIFByb3ZlIHRoYXQgV0FJVCBpcworIyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRl IHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0 IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigp Iik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIldBSVQgRk9SIExTTiAn JGxzbjEnIik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1 cmUgaXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3Jl cGxheV9sc24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNu LCAnJGxzbjEnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJl YWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgYWZ0ZXIgV0FJVCIpOworCisKKworIyBDaGVj ayB0aGF0IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQgdXMgd2FpdCBmb3Igc3Bl Y2lmaWVkIHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25lX3NlY29uZCA9IDEwMDA7 ICMgaW4gbWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUoKTsKKyMgV2hpbGUgd2Un cmUgYXQgaXQsIGFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIHN5bnRheCB3aXRoIGNvbW1hcyB3b3Jr cyBmaW5lIGFuZAorIyB0aGF0IGJ5IGRlZmF1bHQgd2UgdXNlIFdBSVQgRk9SIEFMTCBzdHJhdGVn eSwgd2hpY2ggbWVhbnMgd2FpdGluZyBmb3IgbWF4IHRpbWUKKyRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBUSU1FT1VUICRvbmVfc2Vjb25kLCBUSU1FU1RB TVAgJyRjdXJyZW50X3RpbWUnIik7CitteSAkdGltZV93YWl0ZWQgPSAodGltZSgpIC0gJHN0YXJ0 X3RpbWUpICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcworb2soJHRpbWVfd2FpdGVk ID49ICRvbmVfc2Vjb25kLCAiV0FJVCBGT1IgVElNRU9VVCB3YWl0cyBmb3IgZW5vdWdoIHRpbWUi KTsKKworIyBOb3csIGNoZWNrIHRoYXQgdGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVuIHdh aXRpbmcgZm9yIExTTgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIpOwor bXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBw Z19jdXJyZW50X3dhbF9sc24oKSIpOworbXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRieS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIExTTiAnJGxzbjInIFRJTUVPVVQgMSIp Oworb2soJHJlYWNoZWRfbHNuIGVxICJmIiwgIldBSVQgZG9lc24ndCByZWFjaCBMU04gaWYgZ2l2 ZW4gdG9vIGxpdHRsZSB3YWl0IHRpbWUiKTsKKworCisKKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0 IFdBSVQgd29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3IgdGhhdCwgbGV0J3MKKyMg Z2V0IHR3byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBkaWZmZXJlbnQgbWF4IHZh bHVlcyBpbiBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkp Iik7CitteSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVz KDQxLCA1MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQmVmb3JlIHN0YXJ0aW5n IHRyYW5zYWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0 MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNOIHRoYXQgZW5zdXJlcyBh IG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlfcmVz dWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlXQUlU IEZPUiBMU04gJyRsc24zJzsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJV0FJVCBGT1Ig TFNOICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1Qg bWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0 IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlv bi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNu IHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1 bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIldBSVQgRk9SIExTTiB3b3Jr cyBpbnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9l c24ndCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBXQUlULgorIyBG b3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0 d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9 fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRv ZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKworIyBHZXQgbXVsdGlwbGUgTFNO cyBmb3IgdGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBBTEwKKyRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChn ZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0gJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2Rl X3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3Qg VkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsKK215ICRsc242ID0gJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNu KCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5U TyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDgwMDAwMCkpIik7CitteSAk bHNuNyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1 cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTlkgd29ya3MgZmlu ZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFOWSBM U04gJyRsc241JyBMU04gJyRsc242JyBMU04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9y ZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwg JyRsc241Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBnZSAwLAorCSJXQUlUIEZPUiBB TlkgbWFrZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1pbmltdW0gTFNOIGZyb20gdGhlIGxpc3Qi KTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc243Jzo6cGdf bHNuKSIpOworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVob3cgZmFpbCBkdWUgdG8gdGhlIG1hY2hp bmUgYmVpbmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExTTj8KK29rKCRjb21wYXJlX2xzbnMgbHQg MCwKKwkiV0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExTTiBm cm9tIHRoZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTEwgd29ya3MgZmluZQor JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIEFMTCBMU04g JyRsc241JywgTFNOICckbHNuNicsIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3Jl cGxheV9sc24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAn JGxzbjcnOjpwZ19sc24pIik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsCisJIldBSVQgRk9SIEFM TCBtYWtlcyB1cyByZWFjaCB0aGUgbWF4aW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworCisKKwor JG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3Rpbmco KTsK --=_8ff1b9414c7204d8b0eaa0768f9bc543--