Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWwwo-0006Zv-GA for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Feb 2023 10:11:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pWwwl-0001gn-PP for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Feb 2023 10:10:59 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWwwk-0001gW-O4 for pgsql-hackers@lists.postgresql.org; Tue, 28 Feb 2023 10:10:59 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pWwwc-0007Sk-OI for pgsql-hackers@lists.postgresql.org; Tue, 28 Feb 2023 10:10:57 +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) by mail.postgrespro.ru (Postfix) with ESMTPSA id 175A721CC853 for ; Tue, 28 Feb 2023 13:10:48 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1677579048; bh=d3Rk+vt4Ey4OZH0H91dEo0Vtf5iQaQ0+ATRGcgy8XNM=; h=Date:From:To:Subject; b=CGxBSIuA6kSL7M3G1nXpiDYnxmFFGU7GSMhykCOWXFDlKHIvslTD0F4I/sZWLGes9 9fvLg4RMKTeJFWdSSC58JJXzm0z5R6hCqa7sniGpqKG77Nir9IZ6DlMKgoCjtAMwdx B7Rw/85kgCoG7UMBYQ2ZUTp64eLPQh+oWbyYnl8U= MIME-Version: 1.0 Date: Tue, 28 Feb 2023 13:10:47 +0300 From: Kartyshov Ivan To: pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_9e5761af1f6bb1ab20188d68f4f13c41" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_9e5761af1f6bb1ab20188d68f4f13c41 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Intro========== The main purpose of the feature is to achieve read-your-writes-consistency, while using async replica for reads and primary for writes. In that case lsn of last modification is stored inside application. We cannot store this lsn inside database, since reads are distributed across all replicas and primary. https://www.postgresql.org/message-id/195e2d07ead315b1620f1a053313f490%40postgrespro.ru Suggestions ========== Lots of proposals were made how this feature may look like. I aggregate them into the following four types. 1) Classic (wait_classic_v1.patch) https://www.postgresql.org/message-id/3cc883048264c2e9af022033925ff8db%40postgrespro.ru ========== advantages: multiple events, standalone WAIT disadvantages: new words in grammar WAIT FOR  [ANY | ALL] event [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]     [ WAIT FOR [ANY | ALL] event [, ...]] where event is one of: LSN value TIMEOUT number_of_milliseconds timestamp 2) After style: Kyotaro and Freund (wait_after_within_v1.patch) https://www.postgresql.org/message-id/d3ff2e363af60b345f82396992595a03%40postgrespro.ru ========== advantages: no new words in grammar, standalone AFTER disadvantages: a little harder to understand 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 ]] 3) Procedure style: Tom Lane and Kyotaro (wait_proc_v1.patch) https://www.postgresql.org/message-id/27171.1586439221%40sss.pgh.pa.us https://www.postgresql.org/message-id/20210121.173009.235021120161403875.horikyota.ntt%40gmail.com ========== advantages: no new words in grammar,like it made in pg_last_wal_replay_lsn, no snapshots need disadvantages: a little harder to remember names SELECT pg_waitlsn(‘LSN’, timeout); SELECT pg_waitlsn_infinite(‘LSN’); SELECT pg_waitlsn_no_wait(‘LSN’); 4) Brackets style: Kondratov https://www.postgresql.org/message-id/a8bff0350a27e0a87a6eaf0905d6737f%40postgrespro.ru  ========== advantages: only one new word in grammar,like it made in VACUUM and REINDEX, ability to extend parameters without grammar fixes disadvantages:  WAIT (LSN '16/B374D848', TIMEOUT 100); BEGIN WAIT (LSN '16/B374D848' [, etc_options]); ... COMMIT; Consequence ========== Below I provide the implementation of patches for the first three types. I propose to discuss this feature again/ Regards -- Ivan Kartyshov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --=_9e5761af1f6bb1ab20188d68f4f13c41 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v1.patch Content-Disposition: attachment; filename=wait_after_within_v1.patch; size=28786 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA1NGI1ZjIyZDZlLi4xODY5NWUwMTNlIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmEyNzk0NzYzYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4KIAog PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25f bW9kZTwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIElTT0xBVElPTiBM RVZFTCB7IFNFUklBTElaQUJMRSB8IFJFUEVBVEFCTEUgUkVBRCB8IFJFQUQgQ09NTUlUVEVEIHwg UkVBRCBVTkNPTU1JVFRFRCB9CiAgICAgUkVBRCBXUklURSB8IFJFQUQgT05MWQogICAgIFsgTk9U IF0gREVGRVJSQUJMRQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53YWl0X2V2ZW50PC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisgICAgQUZURVIgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl92YWx1ZTwvcmVwbGFjZWFibGU+IFsgV0lU SElOIG51bWJlcl9vZl9taWxsaXNlY29uZHMgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKaW5kZXggNzRjY2Q3 ZTM0NS4uNDZhM2JjZjFhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFu c2FjdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dt bApAQCAtMjEsMTMgKzIxLDE2IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5 bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g XQorU1RBUlQgVFJBTlNBQ1RJT04gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJh bnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxl PiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFC TEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQg fQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKwor PHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwv cmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2ZfbWls bGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5z Z21sCmluZGV4IGUxMWI0YjYxMzAuLmE4M2ZmNDU1MWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTIx Niw2ICsyMTYsNyBAQAogICAgJnVwZGF0ZTsKICAgICZ2YWN1dW07CiAgICAmdmFsdWVzOworICAg JndhaXQ7CiAKICA8L3JlZmVyZW5jZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwppbmRleCBkYmU5Mzk0NzYyLi5lNGQyZDhkMGExIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUg ImJhY2t1cC9iYXNlYmFja3VwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKICNpbmNsdWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtMTc1Miw2ICsxNzUzLDE1IEBAIFBlcmZvcm1XYWxS ZWNvdmVyeSh2b2lkKQogCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKgorCQkJKiBJZiB3ZSByZXBs YXllZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSogc2V0IGxhdGNo ZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJheSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSovCisJ CQlpZiAoWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIgPj0gR2V0TWluV2Fp dCgpKQorCQkJeworCQkJCSBXYWl0U2V0TGF0Y2goWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5 ZWRFbmRSZWNQdHIpOworCQkJfQorCiAJCQkvKiBFbHNlLCB0cnkgdG8gZmV0Y2ggdGhlIG5leHQg V0FMIHJlY29yZCAqLwogCQkJcmVjb3JkID0gUmVhZFJlY29yZCh4bG9ncHJlZmV0Y2hlciwgTE9H LCBmYWxzZSwgcmVwbGF5VExJKTsKIAkJfSB3aGlsZSAocmVjb3JkICE9IE5VTEwpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQppbmRleCA0OGY3MzQ4ZjkxLi5kOGY2OTY1ZDhjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZQpAQCAtNjEsNiArNjEsNyBAQCBPQkpTID0gXAogCXZhY3V1bS5vIFwKIAl2YWN1dW1wYXJh bGxlbC5vIFwKIAl2YXJpYWJsZS5vIFwKLQl2aWV3Lm8KKwl2aWV3Lm8gXAorCXdhaXQubwogCiBp bmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOWEzYjgxOTJhNgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDMyOSBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJ VCBGT1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1l IHBhc3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2Yg UG9zdGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21t YW5kcy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8Zmxv YXQuaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0u aCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5o IgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCisjaW5jbHVkZSAiZnVuY2FwaS5o IgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYmFja2VuZGlkLmgi CisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisj aW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgor I2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgi CisjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5o IgorCisvKiBBZGQgdG8gLyBkZWxldGUgZnJvbSBzaGFyZWQgbWVtb3J5IGFycmF5ICovCitzdGF0 aWMgdm9pZCBBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KTsKK3N0YXRpYyB2b2lkIERl bGV0ZUV2ZW50KHZvaWQpOworCisvKiBTaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSAqLwordHlwZWRl ZiBzdHJ1Y3QKK3sKKwlpbnQJCQliYWNrZW5kX21heGlkOworCVhMb2dSZWNQdHIJbWluX2xzbjsK KwlzbG9ja190CQltdXRleDsKKwlYTG9nUmVjUHRyCXdhaXRlZF9sc25bRkxFWElCTEVfQVJSQVlf TUVNQkVSXTsKK30gV2FpdFN0YXRlOworCitzdGF0aWMgdm9sYXRpbGUgV2FpdFN0YXRlICpzdGF0 ZTsKKworLyogQWRkIHRoZSBldmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIHRvIHRoZSBzaGFy ZWQgbWVtb3J5IGFycmF5ICovCitzdGF0aWMgdm9pZAorQWRkRXZlbnQoWExvZ1JlY1B0ciBsc25f dG9fd2FpdCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJaWYgKHN0YXRl LT5iYWNrZW5kX21heGlkIDwgTXlCYWNrZW5kSWQpCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0g TXlCYWNrZW5kSWQ7CisKKwlzdGF0ZS0+d2FpdGVkX2xzbltNeUJhY2tlbmRJZF0gPSBsc25fdG9f d2FpdDsKKworCWlmIChsc25fdG9fd2FpdCA8IHN0YXRlLT5taW5fbHNuKQorCQlzdGF0ZS0+bWlu X2xzbiA9IGxzbl90b193YWl0OworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30K KworLyoKKyAqIERlbGV0ZSBldmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIGZyb20gdGhlIHNo YXJlZCBtZW1vcnkgYXJyYXkuCisgKgorICogVE9ETzogQ29uc2lkZXIgc3RhdGUgY2xlYW51cCBv biBiYWNrZW5kIGZhaWx1cmUuCisgKiBDaGVjazoKKyAqIDEpIG5vbWFsfHNtYXJ0fGZhc3R8aW1t ZWRpYXRlIHN0b3AKKyAqIDIpIFNJR0tJTEwgYW5kIFNJR1RFUk0KKyAqLworc3RhdGljIHZvaWQK K0RlbGV0ZUV2ZW50KHZvaWQpCit7CisJaW50CQkJaTsKKwlYTG9nUmVjUHRyCWxzbl90b19kZWxl dGUgPSBzdGF0ZS0+d2FpdGVkX2xzbltNeUJhY2tlbmRJZF07CisKKwlzdGF0ZS0+d2FpdGVkX2xz bltNeUJhY2tlbmRJZF0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCVNwaW5Mb2NrQWNxdWlyZSgm c3RhdGUtPm11dGV4KTsKKworCS8qIElmIHdlIG5lZWQgdG8gY2hvb3NlIHRoZSBuZXh0IG1pbl9s c24sIHVwZGF0ZSBzdGF0ZS0+bWluX2xzbiAqLworCWlmIChzdGF0ZS0+bWluX2xzbiA9PSBsc25f dG9fZGVsZXRlKQorCXsKKwkJc3RhdGUtPm1pbl9sc24gPSBQR19VSU5UNjRfTUFYOworCQlmb3Ig KGkgPSAyOyBpIDw9IHN0YXRlLT5iYWNrZW5kX21heGlkOyBpKyspCisJCQlpZiAoc3RhdGUtPndh aXRlZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJCQlzdGF0ZS0+d2FpdGVkX2xz bltpXSA8IHN0YXRlLT5taW5fbHNuKQorCQkJCXN0YXRlLT5taW5fbHNuID0gc3RhdGUtPndhaXRl ZF9sc25baV07CisJfQorCisJaWYgKHN0YXRlLT5iYWNrZW5kX21heGlkID09IE15QmFja2VuZElk KQorCQlmb3IgKGkgPSAoTXlCYWNrZW5kSWQpOyBpID49IDI7IGktLSkKKwkJCWlmIChzdGF0ZS0+ d2FpdGVkX2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJCXsKKwkJCQlzdGF0ZS0+YmFj a2VuZF9tYXhpZCA9IGk7CisJCQkJYnJlYWs7CisJCQl9CisKKwlTcGluTG9ja1JlbGVhc2UoJnN0 YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkg c3BhY2UgbmVlZGVkIGZvciBXYWl0U3RhdGUKKyAqLworU2l6ZQorV2FpdFNobWVtU2l6ZSh2b2lk KQoreworCVNpemUJCXNpemU7CisKKwlzaXplID0gb2Zmc2V0b2YoV2FpdFN0YXRlLCB3YWl0ZWRf bHNuKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTWF4QmFja2VuZHMgKyAxLCBz aXplb2YoWExvZ1JlY1B0cikpKTsKKwlyZXR1cm4gc2l6ZTsKK30KKworLyogSW5pdCBhcnJheSBv ZiBldmVudHMgaW4gc2hhcmVkIG1lbW9yeSAqLwordm9pZAorV2FpdFNobWVtSW5pdCh2b2lkKQor eworCWJvb2wJCWZvdW5kOworCXVpbnQzMgkJaTsKKworCXN0YXRlID0gKFdhaXRTdGF0ZSAqKSBT aG1lbUluaXRTdHJ1Y3QoInBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJCQkgIFdhaXRTaG1lbVNpemUo KSwKKwkJCQkJCQkJCQkgICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCVNwaW5Mb2NrSW5p dCgmc3RhdGUtPm11dGV4KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgKE1heEJhY2tlbmRzICsgMSk7 IGkrKykKKwkJCXN0YXRlLT53YWl0ZWRfbHNuW2ldID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkJ c3RhdGUtPmJhY2tlbmRfbWF4aWQgPSAwOworCQlzdGF0ZS0+bWluX2xzbiA9IFBHX1VJTlQ2NF9N QVg7CisJfQorfQorCisvKiBTZXQgYWxsIGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWdu YWwgdGhhdCBuZXcgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCit2b2lkCitXYWl0U2V0TGF0Y2go WExvZ1JlY1B0ciBjdXJfbHNuKQoreworCXVpbnQzMgkJaTsKKwlpbnQgCQliYWNrZW5kX21heGlk OworCVBHUFJPQwkgICAqYmFja2VuZDsKKworCVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4 KTsKKwliYWNrZW5kX21heGlkID0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7CisJU3BpbkxvY2tSZWxl YXNlKCZzdGF0ZS0+bXV0ZXgpOworCisJZm9yIChpID0gMjsgaSA8PSBiYWNrZW5kX21heGlkOyBp KyspCisJeworCQliYWNrZW5kID0gQmFja2VuZElkR2V0UHJvYyhpKTsKKwkJaWYgKHN0YXRlLT53 YWl0ZWRfbHNuW2ldICE9IDApCisJCXsKKwkJCWlmIChiYWNrZW5kICYmIHN0YXRlLT53YWl0ZWRf bHNuW2ldIDw9IGN1cl9sc24pCisJCQkJU2V0TGF0Y2goJmJhY2tlbmQtPnByb2NMYXRjaCk7CisJ CX0KKwl9Cit9CisKKy8qIEdldCBtaW5pbWFsIExTTiB0aGF0IHdpbGwgYmUgbmV4dCAqLworWExv Z1JlY1B0cgorR2V0TWluV2FpdCh2b2lkKQoreworCXJldHVybiBzdGF0ZS0+bWluX2xzbjsKK30K KworLyoKKyAqIE9uIFdBSVQgdXNlIE15TGF0Y2ggdG8gd2FpdCB0aWxsIExTTiBpcyByZXBsYXll ZCwKKyAqIHBvc3RtYXN0ZXIgZGllcyBvciB0aW1lb3V0IGhhcHBlbnMuCisgKi8KK2ludAorV2Fp dFV0aWxpdHkoWExvZ1JlY1B0ciBsc24sIGNvbnN0IGZsb2F0OCBzZWNzKQoreworCVhMb2dSZWNQ dHIJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJaW50CQkJbGF0Y2hfZXZl bnRzOworCWZsb2F0OAkJZW5kdGltZTsKKwl1aW50CQlyZXMgPSAwOworCisjZGVmaW5lIEdldE5v d0Zsb2F0KCkJKChmbG9hdDgpIEdldEN1cnJlbnRUaW1lc3RhbXAoKSAvIDEwMDAwMDAuMCkKKwll bmR0aW1lID0gR2V0Tm93RmxvYXQoKSArIHNlY3M7CisKK2xhdGNoX2V2ZW50cyA9IFdMX1RJTUVP VVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0 cikKKwl7CisJCS8qIEp1c3QgY2hlY2sgaWYgd2UgcmVhY2hlZCAqLworCQlpZiAobHNuIDwgY3Vy X2xzbiB8fCBzZWNzIDwgMCkKKwkJCXJldHVybiAobHNuIDwgY3VyX2xzbik7CisKKwkJbGF0Y2hf ZXZlbnRzIHw9IFdMX0xBVENIX1NFVDsKKwkJQWRkRXZlbnQobHNuKTsKKwl9CisJZWxzZSBpZiAo IXNlY3MpCisJCXJldHVybiAxOworCisJZm9yICg7OykKKwl7CisJCWludAkJCXJjOworCQlmbG9h dDgJCWRlbGF5ID0gMDsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJaWYgKHNlY3MgPiAwKQorCQkJ ZGVsYXkgPSBlbmR0aW1lIC0gR2V0Tm93RmxvYXQoKTsKKwkJZWxzZSBpZiAoc2VjcyA9PSAwKQor CQkJLyoKKwkJCSogSWYgd2Ugd2FpdCBmb3JldmVyLCB0aGVuIDEgbWludXRlIHRpbWVvdXQgdG8g Y2hlY2sKKwkJCSogZm9yIEludGVydXB0cy4KKwkJCSovCisJCQlkZWxheSA9IDYwOworCisJCWlm IChkZWxheSA+IDAuMCkKKwkJCWRlbGF5X21zID0gKGxvbmcpIGNlaWwoZGVsYXkgKiAxMDAwLjAp OworCQllbHNlCisJCQlicmVhazsKKworCQkvKgorCQkgKiBJZiByZWNlaXZlZCBhbiBpbnRlcnJ1 cHRpb24gZnJvbSBDSEVDS19GT1JfSU5URVJSVVBUUywKKwkJICogdGhlbiBkZWxldGUgdGhlIGN1 cnJlbnQgZXZlbnQgZnJvbSBhcnJheS4KKwkJICovCisJCWlmIChJbnRlcnJ1cHRQZW5kaW5nKQor CQl7CisJCQlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQkJCURlbGV0ZUV2ZW50KCk7 CisJCQlQcm9jZXNzSW50ZXJydXB0cygpOworCQl9CisKKwkJLyogSWYgcG9zdG1hc3RlciBkaWVz LCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYgKCFQb3N0bWFzdGVySXNBbGl2ZSgpKQorCQkJ YnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwgbGF0Y2hfZXZlbnRzLCBkZWxheV9t cywKKwkJCQkJICAgV0FJVF9FVkVOVF9DTElFTlRfUkVBRCk7CisKKwkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQlpZiAobHNuICYmIHJjICYgV0xf TEFUQ0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisKKwkJ LyogSWYgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCisJCWlmIChsc24gJiYgbHNuIDw9IGN1cl9s c24pCisJCQlicmVhazsKKwl9CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCQlE ZWxldGVFdmVudCgpOworCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJiBsc24gPiBj dXJfbHNuKQorCQllbG9nKE5PVElDRSwiTFNOIGlzIG5vdCByZWFjaGVkLiBUcnkgdG8gaW5jcmVh c2Ugd2FpdCB0aW1lLiIpOworCWVsc2UKKwkJcmVzID0gMTsKKworCXJldHVybiByZXM7Cit9CisK Ky8qCisgKiBHZXQgdGhlIGFtb3VudCBvZiBzZWNvbmRzIGxlZnQgdGlsbCB0aGUgc3BlY2lmaWVk IHRpbWUuCisgKi8KK2Zsb2F0OAorV2FpdFRpbWVSZXNvbHZlKENvbnN0ICp0aW1lKQoreworCWlu dAkJCXJldDsKKwlmbG9hdDgJCXZhbDsKKwlPaWQJCQl0eXBlc1tdID0geyB0aW1lLT5jb25zdHR5 cGUgfTsKKwlEYXR1bQkJdmFsdWVzW10gPSB7IHRpbWUtPmNvbnN0dmFsdWUgfTsKKwljaGFyCQlu dWxsc1tdID0geyAiICIgfTsKKwlEYXR1bQkJcmVzdWx0OworCWJvb2wJCWlzbnVsbDsKKworCVNQ SV9jb25uZWN0KCk7CisKKwlpZiAodGltZS0+Y29uc3R0eXBlID09IDEwODMpCisJCXJldCA9IFNQ SV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20gKCQxIC0gbm93 KCk6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwgMCk7 CisJZWxzZSBpZiAodGltZS0+Y29uc3R0eXBlID09IDEyNjYpCisJCXJldCA9IFNQSV9leGVjdXRl X3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20gKHRpbWV6b25lKCdVVEMnLCQx KTo6dGltZSAtIHRpbWV6b25lKCdVVEMnLCBub3coKTo6dGltZXR6KTo6dGltZSkpIiwKKwkJCQkJ CQkJCTEsIHR5cGVzLCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKwllbHNlCisJCXJldCA9IFNQ SV9leGVjdXRlX3dpdGhfYXJncygic2VsZWN0IGV4dHJhY3QgKGVwb2NoIGZyb20gKCQxIC0gbm93 KCkpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxscywgdHJ1ZSwgMCk7CisKKwlB c3NlcnQocmV0ID49IDApOworCXJlc3VsdCA9IFNQSV9nZXRiaW52YWwoU1BJX3R1cHRhYmxlLT52 YWxzWzBdLAorCQkJCQkJICAgU1BJX3R1cHRhYmxlLT50dXBkZXNjLAorCQkJCQkJICAgMSwgJmlz bnVsbCk7CisKKwlBc3NlcnQoIWlzbnVsbCk7CisJdmFsID0gRGF0dW1HZXRGbG9hdDgocmVzdWx0 KTsKKworCWVsb2coSU5GTywgInRpbWU6ICVmIiwgdmFsKTsKKworCVNQSV9maW5pc2goKTsKKwly ZXR1cm4gdmFsOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBXQUlUIEZPUiAqLworaW50CitX YWl0TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQoreworCVR1cGxlRGVz Ywl0dXBkZXNjOworCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7CisJWExvZ1JlY1B0cglsc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwlpbnQJCXJlcyA9IDA7CisKKwlsc24gPSBEYXR1bUdldExTTihE aXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQkJCQkJCSBDU3RyaW5nR2V0RGF0 dW0oc3RtdC0+bHNuKSkpOworCXJlcyA9IFdhaXRVdGlsaXR5KGxzbiwgc3RtdC0+ZGVsYXkpOwor CisJLyogTmVlZCBhIHR1cGxlIGRlc2NyaXB0b3IgcmVwcmVzZW50aW5nIGEgc2luZ2xlIFRFWFQg Y29sdW1uICovCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDEpOworCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIkxTTiByZWFjaGVkIiwgVEVY VE9JRCwgLTEsIDApOworCS8qIFByZXBhcmUgZm9yIHByb2plY3Rpb24gb2YgdHVwbGVzICovCisJ dHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNjKGRlc3QsIHR1cGRlc2MsICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCisJLyogU2VuZCBpdCAqLworCWRvX3RleHRfb3V0cHV0X29uZWxpbmUo dHN0YXRlLCByZXM/InQiOiJmIik7CisJZW5kX3R1cF9vdXRwdXQodHN0YXRlKTsKKwlyZXR1cm4g cmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggZTg5MmRmOTgxOS4uMzkwYmY5ZTI3YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCkBAIC0zOTksNyArMzk5LDYgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSkKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUNhbGxT dG10KHBzdGF0ZSwKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUpOwogCQkJYnJl YWs7Ci0KIAkJZGVmYXVsdDoKIAogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGEwMTM4MzgyYTEuLjI0 MTA1ZWNhNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2Rl ICpxdWVyeSk7CiAJCVNlY0xhYmVsU3RtdCBTZWxlY3RTdG10IFRyYW5zYWN0aW9uU3RtdCBUcmFu c2FjdGlvblN0bXRMZWdhY3kgVHJ1bmNhdGVTdG10CiAJCVVubGlzdGVuU3RtdCBVcGRhdGVTdG10 IFZhY3V1bVN0bXQKIAkJVmFyaWFibGVSZXNldFN0bXQgVmFyaWFibGVTZXRTdG10IFZhcmlhYmxl U2hvd1N0bXQKLQkJVmlld1N0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQK KwkJVmlld1N0bXQgV2FpdFN0bXQgQ2hlY2tQb2ludFN0bXQgQ3JlYXRlQ29udmVyc2lvblN0bXQK IAkJRGVhbGxvY2F0ZVN0bXQgUHJlcGFyZVN0bXQgRXhlY3V0ZVN0bXQKIAkJRHJvcE93bmVkU3Rt dCBSZWFzc2lnbk93bmVkU3RtdAogCQlBbHRlclRTQ29uZmlndXJhdGlvblN0bXQgQWx0ZXJUU0Rp Y3Rpb25hcnlTdG10CkBAIC02NDIsNiArNjQyLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK ICV0eXBlIDxwYXJ0Ym91bmRzcGVjPiBQYXJ0aXRpb25Cb3VuZFNwZWMKICV0eXBlIDxsaXN0PgkJ aGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCisldHlw ZSA8aXZhbD4JCXdhaXRfdGltZQorJXR5cGUgPG5vZGU+CQl3YWl0X2ZvcgogCiAKIC8qCkBAIC0x MDY0LDYgKzEwNjYsNyBAQCBzdG10OgogCQkJfCBWYXJpYWJsZVNldFN0bXQKIAkJCXwgVmFyaWFi bGVTaG93U3RtdAogCQkJfCBWaWV3U3RtdAorCQkJfCBXYWl0U3RtdAogCQkJfCAvKkVNUFRZKi8K IAkJCQl7ICQkID0gTlVMTDsgfQogCQk7CkBAIC0xMDgzOCwxMiArMTA4NDEsMTMgQEAgVHJhbnNh Y3Rpb25TdG10OgogCQkJCQluLT5jaGFpbiA9ICQzOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQotCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1w dHkKKwkJCXwgU1RBUlQgVFJBTlNBQ1RJT04gdHJhbnNhY3Rpb25fbW9kZV9saXN0X29yX2VtcHR5 IHdhaXRfZm9yCiAJCQkJewogCQkJCQlUcmFuc2FjdGlvblN0bXQgKm4gPSBtYWtlTm9kZShUcmFu c2FjdGlvblN0bXQpOwogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX1NUQVJUOwogCQkJCQlu LT5vcHRpb25zID0gJDM7CisJCQkJCW4tPndhaXQgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBu OwogCQkJCX0KIAkJCXwgQ09NTUlUIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJhbnNhY3Rpb25fY2hh aW4KQEAgLTEwOTMxLDEyICsxMDkzNSwxMyBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCTsKIAogVHJh bnNhY3Rpb25TdG10TGVnYWN5OgotCQkJQkVHSU5fUCBvcHRfdHJhbnNhY3Rpb24gdHJhbnNhY3Rp b25fbW9kZV9saXN0X29yX2VtcHR5CisJCQlCRUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2Fj dGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9u U3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CiAKIAkJCQkJbi0+a2luZCA9IFRS QU5TX1NUTVRfQkVHSU47CiAJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+d2FpdCA9ICQ0 OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQkJfCBFTkRfUCBvcHRfdHJhbnNhY3Rp b24gb3B0X3RyYW5zYWN0aW9uX2NoYWluCkBAIC0xNTYyMiw2ICsxNTYyNywzNyBAQCB4bWxfcGFz c2luZ19tZWNoOgogCQkJfCBCWSBWQUxVRV9QCiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICoJCVFVRVJZOgorICoJCQkJQUZURVIgTFNOX3ZhbHVlIFtXSVRISU4gZGVsYXkgdGlt ZXN0YW1wXQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dhaXRTdG10OgorCQkJQUZURVIg U2NvbnN0IHdhaXRfdGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0 U3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CisJCTsKK3dhaXRfZm9yOgorCQkJQUZURVIgU2NvbnN0IHdhaXRf dGltZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJ CW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsK KwkJCQl9CisJCQl8IC8qIEVNUFRZICovCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK3dhaXRfdGlt ZToKKwkJCVdJVEhJTiBJY29uc3QJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLyAgICAg ICAgICAgeyAkJCA9IDA7IH0KKwkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3JhdGlvbiBj bGF1c2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggOGYxZGVkNzMzOC4uYjc5NjNjYTlhMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImFjY2Vz cy94bG9ncHJlZmV0Y2hlci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNp bmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2F1dG92YWN1dW0uaCIKQEAgLTE0Miw2ICsxNDMsNyBAQCBDYWxjdWxhdGVTaG1lbVNp emUoaW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3luY1NjYW5T aG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEFzeW5jU2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBTdGF0c1NobWVtU2l6ZSgpKTsKKwlzaXplID0gYWRkX3Np emUoc2l6ZSwgV2FpdFNobWVtU2l6ZSgpKTsKICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgU2htZW1CYWNrZW5kQXJyYXlTaXplKCkpOwogI2VuZGlmCkBAIC0yOTUs NiArMjk3LDExIEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAlBc3lu Y1NobWVtSW5pdCgpOwogCVN0YXRzU2htZW1Jbml0KCk7CiAKKwkvKgorCSAqIEluaXQgYXJyYXkg b2YgTGF0Y2hlcyBpbiBzaGFyZWQgbWVtb3J5IGZvciB3YWl0IGxzbgorCSAqLworCVdhaXRTaG1l bUluaXQoKTsKKwogI2lmZGVmIEVYRUNfQkFDS0VORAogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXgg YzdkOWQ5NmI0NS4uYjJlZDdhOGIyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE1LDYgKzE1LDcgQEAK ICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl IDxmbG9hdC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy9yZWxvcHRpb25zLmgiCkBAIC01OSw2ICs2MCw3IEBACiAjaW5jbHVkZSAiY29tbWFu ZHMvdXNlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3ZpZXcuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2Jnd3JpdGVyLmgiCkBAIC03Miw2ICs3NCw5IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJv dG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMg dG8gZ2V0IGNvbnRyb2wgaW4gUHJvY2Vzc1V0aWxpdHkoKSAqLwogUHJvY2Vzc1V0aWxpdHlfaG9v a190eXBlIFByb2Nlc3NVdGlsaXR5X2hvb2sgPSBOVUxMOwpAQCAtMjcyLDYgKzI3Nyw3IEBAIENs YXNzaWZ5VXRpbGl0eUNvbW1hbmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBU X0xvYWRTdG10OgogCQljYXNlIFRfUHJlcGFyZVN0bXQ6CiAJCWNhc2UgVF9Vbmxpc3RlblN0bXQ6 CisJCWNhc2UgVF9XYWl0U3RtdDoKIAkJY2FzZSBUX1ZhcmlhYmxlU2V0U3RtdDoKIAkJCXsKIAkJ CQkvKgpAQCAtNjEyLDYgKzYxOCwxMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVk U3RtdCAqcHN0bXQsCiAJCQkJCWNhc2UgVFJBTlNfU1RNVF9TVEFSVDoKIAkJCQkJCXsKIAkJCQkJ CQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJCQlXYWl0U3RtdCAgICp3YWl0c3RtdCA9IChXYWl0U3Rt dCAqKSBzdG10LT53YWl0OworCisJCQkJCQkJLyogSWYgbmVlZGVkIHRvIFdBSVQgRk9SIHNvbWV0 aGluZyBidXQgZmFpbGVkICovCisJCQkJCQkJaWYgKHN0bXQtPndhaXQgJiYgV2FpdE1haW4od2Fp dHN0bXQsIGRlc3QpID09IDApCisJCQkJCQkJCWJyZWFrOwogCiAJCQkJCQkJQmVnaW5UcmFuc2Fj dGlvbkJsb2NrKCk7CiAJCQkJCQkJZm9yZWFjaChsYywgc3RtdC0+b3B0aW9ucykKQEAgLTEwNjks NiArMTA4MCwxMyBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQs CiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJeworCQkJCVdhaXRT dG10ICAgKnN0bXQgPSAoV2FpdFN0bXQgKikgcGFyc2V0cmVlOworCQkJCVdhaXRNYWluKHN0bXQs IGRlc3QpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIg c3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNz VXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0yODMzLDYgKzI4NTEs MTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBDTURUQUdf Tk9USUZZOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJdGFnID0gQ01EVEFH X1dBSVQ7CisJCQlicmVhazsKKwogCQljYXNlIFRfTGlzdGVuU3RtdDoKIAkJCXRhZyA9IENNRFRB R19MSVNURU47CiAJCQlicmVhazsKQEAgLTM0ODEsNiArMzUwMywxMCBAQCBHZXRDb21tYW5kTG9n TGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsK IAorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOwor CiAJCWNhc2UgVF9MaXN0ZW5TdG10OgogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3dhaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjcw MTYwZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBA IC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuaAorICoJICBw cm90b3R5cGVzIGZvciBjb21tYW5kcy93YWl0LmMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAxNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMjAxNiwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BSTworICoKKyAq IHNyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIFdBSVRfSAorI2RlZmluZSBXQUlUX0gKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgor I2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCitleHRlcm4gaW50IFdhaXRVdGlsaXR5KFhMb2dSZWNQ dHIgbHNuLCBjb25zdCBmbG9hdDggZGVsYXkpOworZXh0ZXJuIFNpemUgV2FpdFNobWVtU2l6ZSh2 b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTaG1lbUluaXQodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0 U2V0TGF0Y2goWExvZ1JlY1B0ciBjdXJfbHNuKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldE1pbldh aXQodm9pZCk7CitleHRlcm4gZmxvYXQ4IFdhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSk7Citl eHRlcm4gaW50IFdhaXRNYWluKFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpOwor CisjZW5kaWYgICAvKiBXQUlUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmN2Q3ZjEw ZjdkLi41ZTRjYzU0N2M1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zMzkzLDYgKzMzOTMs NyBAQCB0eXBlZGVmIHN0cnVjdCBUcmFuc2FjdGlvblN0bXQKIAljaGFyCSAgICpzYXZlcG9pbnRf bmFtZTsgLyogZm9yIHNhdmVwb2ludCBjb21tYW5kcyAqLwogCWNoYXIJICAgKmdpZDsJCQkvKiBm b3IgdHdvLXBoYXNlLWNvbW1pdCByZWxhdGVkIGNvbW1hbmRzICovCiAJYm9vbAkJY2hhaW47CQkJ LyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJCSp3YWl0OwkJCS8qIHdhaXQgbHNuIGNsYXVz ZSAqLwogfSBUcmFuc2FjdGlvblN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg LTM5MzgsNCArMzkzOSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBEcm9wU3Vic2NyaXB0aW9uU3RtdAog CURyb3BCZWhhdmlvciBiZWhhdmlvcjsJCS8qIFJFU1RSSUNUIG9yIENBU0NBREUgYmVoYXZpb3Ig Ki8KIH0gRHJvcFN1YnNjcmlwdGlvblN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCQlBRlRFUiBTdGF0ZW1lbnQgKyBBRlRFUiBjbGF1c2Ugb2YgQkVHSU4gc3RhdGVtZW50Cisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgV2FpdFN0bXQK K3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJICAgKmxzbjsJCS8qIExTTiAqLworCWludAkJCWRl bGF5OwkJLyogVElNRU9VVCAqLworfSBXYWl0U3RtdDsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNF Tk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9z cmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAppbmRleCBlNzM4YWMxYzA5Li5hOTU2NTdhMzJm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5j bHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAtMjE2LDMgKzIxNiw0IEBAIFBHX0NNRFRBRyhDTURU QUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FURSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CiBQR19DTURUQUcoQ01EVEFHX1VOTElTVEVOLCAiVU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQogUEdfQ01EVEFHKENNRFRBR19VUERBVEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRy dWUpCiBQR19DTURUQUcoQ01EVEFHX1ZBQ1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCitQR19DTURUQUcoQ01EVEFHX1dBSVQsICJBRlRFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9iZWdpbl9hZnRlci5wbCBiL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDM0X2JlZ2luX2FmdGVyLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLmIyMmU2MzYwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAzNF9iZWdpbl9hZnRlci5wbApAQCAtMCwwICsxLDg2IEBACisjIENoZWNr cyB3YWl0aW5nIGZvciBsc24gb24gc3RhbmRieSBBRlRFUgordXNlIHN0cmljdDsKK3VzZSB3YXJu aW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHByaW1hcnkgbm9k ZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJp bWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5v ZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1 cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3 YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7CitteSAkYmFj a3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25h bWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxh eSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3Rh bmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7 Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisKKyMgTWFrZSBzdXJlIHRoYXQgQUZURVIgd29y a3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQorIyBwcmltYXJ5J3Mg bmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFByb3ZlIHRo YXQgQUZURVIgaXMKKyMgYWJsZSB0byBzZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5k IGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRl X3NlcmllcygxMSwgMjApKSIpOworbXkgJGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRi eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJCRUdJTiBBRlRFUiAnJGxzbjEnIik7CisKKyMgR2V0 IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBh cyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworbXkg JGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfbHNuX2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19sc24p Iik7CitvaygkY29tcGFyZV9sc25zIGVxIDAsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNO IGFzIHByaW1hcnkgQUZURVIiKTsKKworCisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRP RE86IHJlbW92ZSB0aGlzIHRlc3QgaWYgd2UgcmVtb3ZlIHRoZSBzdGFuZGFsb25lICJBRlRFUiIg Y29tbWFuZAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0 IEFGVEVSIHdvcmtzIGZpbmUgaW5zaWRlIHRyYW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisj IGdldCB0d28gTFNOcyB0aGF0IHdpbGwgY29ycmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2 YWx1ZXMgaW4gb3VyIHRhYmxlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDAp KSIpOworbXkgJGxzbjMgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmll cyg0MSwgNTApKSIpOworbXkgJGxzbjQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGlu ZyB0cmFuc2FjdGlvbiwgQUZURVIgd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMg SW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgQUZURVIgdGhhdCBlbnN1cmVzIGEgbWF4IHZhbHVlIG9m IDUwLgorIyBEdWUgdG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRCwgd2Ugc2hvdWxk IE5PVCBzZWUgdGhlIG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1bHRzID0gJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUJFR0lOIFRSQU5TQUNUSU9O IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQgQUZURVIgJyRsc24zJzsKKwlTRUxFQ1Qg bWF4KGEpIEZST00gd2FpdF90ZXN0OworCUJFR0lOIEFGVEVSICckbHNuNCc7CisJU0VMRUNUIHBn X2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0Owor CUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5 J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRo YXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkg JGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFz dF9sc25fcmVhY2hlZCwgIkFGVEVSIHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0aW9uIik7CisKKyMg Q2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vzbid0IGJyZWFrIGFuZCBzaG93IHVzIHRoZSBuZXcg bWF4IHZhbHVlIGFmdGVyIEFGVEVSLgorIyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9s ZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3Vu dCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJh bnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gQUZURVIi KTsKKworJG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7Citkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X2FmdGVyLnBsIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfYWZ0ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uNDgwYmE2YjMzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X2FmdGVyLnBsCkBAIC0wLDAgKzEsOTkgQEAKKyMgQ2hlY2tzIHdhaXRpbmcg Zm9yIGxzbiBvbiBzdGFuZGJ5IEFGVEVSCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAkbm9k ZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Cisk bm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmltYXJ5 LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVzdCBB UyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFtZSA9 ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMg Q3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20gdGhl IGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDI7Ciskbm9kZV9zdGFuZGJ5LT5pbml0 X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFtaW5n ID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFx WworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2RlX3N0 YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBBRlRFUiB3b3JrczogYWRkIG5l dyBjb250ZW50IHRvIHByaW1hcnkgYW5kIG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0 aGVuIHdhaXQgZm9yIHByaW1hcnkncyBMU04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBBRlRFUiBp cworIyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQgZXhpdCBpdCBp ZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEx LCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkFGVEVSICckbHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNO IG9uIHN0YW5kYnkgYW5kIG1ha2Ugc3VyZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04K K215ICRsc25fc3RhbmRieSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0g JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21w KCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJl X2xzbnMgZXEgMCwgInN0YW5kYnkgcmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBBRlRF UiIpOworCisKKworIyBDaGVjayB0aGF0IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBs ZXQgdXMgd2FpdCBmb3Igc3BlY2lmaWVkIHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRu b2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAk b25lX3NlY29uZCA9IDEwMDA7ICMgaW4gbWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRp bWUoKTsKKworIyBOb3csIGNoZWNrIHRoYXQgdGltZW91dHMgd29yayBhcyBleHBlY3RlZCB3aGVu IHdhaXRpbmcgZm9yIExTTgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygyMSwgMzApKSIp OworbXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworbXkgJHJlYWNoZWRfbHNuID0gJG5vZGVfc3RhbmRi eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFGVEVSICckbHNuMicgV0lUSElOIDEiKTsKK29r KCRyZWFjaGVkX2xzbiBlcSAiZiIsICJBRlRFUiBkb2Vzbid0IHJlYWNoIExTTiBpZiBnaXZlbiB0 b28gbGl0dGxlIHdhaXQgdGltZSIpOworCisKKworIyBXZSBuZWVkIHRvIGNoZWNrIHRoYXQgV0FJ VCB3b3JrcyBmaW5lIGluc2lkZSB0cmFuc2FjdGlvbnMuIEZvciB0aGF0LCBsZXQncworIyBnZXQg dHdvIExTTnMgdGhhdCB3aWxsIGNvcnJlc3BvbmQgdG8gdHdvIGRpZmZlcmVudCBtYXggdmFsdWVz IGluIG91ciB0YWJsZS4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMzEsIDQwKSkiKTsK K215ICRsc24zID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNDEs IDUwKSkiKTsKK215ICRsc240ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKworIyBCZWZvcmUgc3RhcnRpbmcgdHJh bnNhY3Rpb24sIEFGVEVSIHdoaWNoIGVuc3VyZXMgYSBtYXggdmFsdWUgb2YgNDAuCisjIEluc2lk ZSB0aGUgdHJhbnNhY3Rpb24sIEFGVEVSIHRoYXQgZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4K KyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qg c2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlfcmVzdWx0cyA9ICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlBRlRFUiAnJGxzbjMnOworCUJFR0lO IFRSQU5TQUNUSU9OIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CisJU0VMRUNUIG1h eChhKSBGUk9NIHdhaXRfdGVzdDsKKwlBRlRFUiAnJGxzbjQnOworCVNFTEVDVCBwZ19sYXN0X3dh bF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlDT01NSVQ7 CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3ZSBpbmRlZWQgcmVhY2ggcHJpbWFyeSdzIGxhc3Qg TFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uCisjIEZvciB0aGF0LCBjaGVjayB0aGF0IGNhbGxp bmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiByZXR1cm5lZCB0aGF0IExTTi4KK215ICRsYXN0X2xz bl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvJGxzbjQvOworb2soJGxhc3RfbHNuX3Jl YWNoZWQsICJBRlRFUiB3b3JrcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRo YXQgdHJhbnNhY3Rpb24gZG9lc24ndCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1 ZSBhZnRlciBBRlRFUi4KKyMgRm9yIHRoYXQsIG1ha2Ugc3VyZSB0aGF0IHRoZSBvbGRlciBtYXgg dmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4gdGhlIHJlc3VsdHMuCitteSAkY291bnQgPSAoKSA9 ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7CitvaygkY291bnQgZXEgMiwgInRyYW5zYWN0aW9u IGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdldCBicm9rZW4gZHVlIHRvIEFGVEVSIik7CisKKyRu b2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7 Cg== --=_9e5761af1f6bb1ab20188d68f4f13c41 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v1.patch Content-Disposition: attachment; filename=wait_classic_v1.patch; size=47461 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA1NGI1ZjIyZDZlLi4xODY5NWUwMTNlIDEwMDY0NAot 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 cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggZTExYjRi NjEzMC4uYTgzZmY0NTUxZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IGRiZTkzOTQ3NjIuLjViM2UzYmFiMGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xNzUyLDYgKzE3NTMsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjBiYjQzZmViNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy93YWl0LmMKQEAgLTAsMCArMSwzOTQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHdhaXQuYworICoJICBJbXBsZW1lbnRzIFdBSVQgRk9SLCB3aGljaCBhbGxvd3Mgd2FpdGlu ZyBmb3IgZXZlbnRzIHN1Y2ggYXMKKyAqCSAgdGltZSBwYXNzaW5nIG9yIExTTiBoYXZpbmcgYmVl biByZXBsYXllZCBvbiByZXBsaWNhLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 Ni0yMDIwLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAyMDIwLCBSZWdlbnRzIG9mIFBvc3RncmVzUHJvCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgor I2luY2x1ZGUgInBvc3RncmVzLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAiZm1n ci5oIgorI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3Qu aCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3Jl Y292ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvd2FpdC5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRpZC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgi CisjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgi CisjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQu aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5o IgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5o IgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKworLyogQWRkIHRvIC8gZGVsZXRlIGZy b20gc2hhcmVkIG1lbW9yeSBhcnJheSAqLworc3RhdGljIHZvaWQgQWRkRXZlbnQoWExvZ1JlY1B0 ciBsc25fdG9fd2FpdCk7CitzdGF0aWMgdm9pZCBEZWxldGVFdmVudCh2b2lkKTsKKworLyogU2hh cmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisJaW50CQkJYmFja2Vu ZF9tYXhpZDsKKwlYTG9nUmVjUHRyCW1pbl9sc247CisJc2xvY2tfdAkJbXV0ZXg7CisJWExvZ1Jl Y1B0cgl3YWl0ZWRfbHNuW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07Cit9IFdhaXRTdGF0ZTsKKwor c3RhdGljIHZvbGF0aWxlIFdhaXRTdGF0ZSAqc3RhdGU7CisKKy8qIEFkZCB0aGUgZXZlbnQgb2Yg dGhlIGN1cnJlbnQgYmFja2VuZCB0byB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheSAqLworc3RhdGlj IHZvaWQKK0FkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3RvX3dhaXQpCit7CisJU3BpbkxvY2tBY3F1 aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA8IE15QmFja2Vu ZElkKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15QmFja2VuZElkOworCisJc3RhdGUtPndh aXRlZF9sc25bTXlCYWNrZW5kSWRdID0gbHNuX3RvX3dhaXQ7CisKKwlpZiAobHNuX3RvX3dhaXQg PCBzdGF0ZS0+bWluX2xzbikKKwkJc3RhdGUtPm1pbl9sc24gPSBsc25fdG9fd2FpdDsKKwlTcGlu TG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2Yg dGhlIGN1cnJlbnQgYmFja2VuZCBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAq IFRPRE86IENvbnNpZGVyIHN0YXRlIGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hl Y2s6CisgKiAxKSBub21hbHxzbWFydHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxM IGFuZCBTSUdURVJNCisgKi8KK3N0YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWlu dAkJCWk7CisJWExvZ1JlY1B0cglsc25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlC YWNrZW5kSWRdOworCisJc3RhdGUtPndhaXRlZF9sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhM b2dSZWNQdHI7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisKKwkvKiBJZiB3 ZSBuZWVkIHRvIGNob29zZSB0aGUgbmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUtPm1pbl9sc24g Ki8KKwlpZiAoc3RhdGUtPm1pbl9sc24gPT0gbHNuX3RvX2RlbGV0ZSkKKwl7CisJCXN0YXRlLT5t aW5fbHNuID0gUEdfVUlOVDY0X01BWDsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0ZS0+YmFja2Vu ZF9tYXhpZDsgaSsrKQorCQkJaWYgKHN0YXRlLT53YWl0ZWRfbHNuW2ldICE9IEludmFsaWRYTG9n UmVjUHRyICYmCisJCQkJc3RhdGUtPndhaXRlZF9sc25baV0gPCBzdGF0ZS0+bWluX2xzbikKKwkJ CQlzdGF0ZS0+bWluX2xzbiA9IHN0YXRlLT53YWl0ZWRfbHNuW2ldOworCX0KKworCWlmIChzdGF0 ZS0+YmFja2VuZF9tYXhpZCA9PSBNeUJhY2tlbmRJZCkKKwkJZm9yIChpID0gKE15QmFja2VuZElk KTsgaSA+PSAyOyBpLS0pCisJCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxpZFhM b2dSZWNQdHIpCisJCQl7CisJCQkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJyZWFr OworCQkJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICog UmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0YXRl CisgKi8KK1NpemUKK1dhaXRTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJc2l6 ZSA9IG9mZnNldG9mKFdhaXRTdGF0ZSwgd2FpdGVkX2xzbik7CisJc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFhMb2dSZWNQdHIpKSk7CisJcmV0 dXJuIHNpemU7Cit9CisKKy8qIEluaXQgYXJyYXkgb2YgZXZlbnRzIGluIHNoYXJlZCBtZW1vcnkg Ki8KK3ZvaWQKK1dhaXRTaG1lbUluaXQodm9pZCkKK3sKKwlib29sCQlmb3VuZDsKKwl1aW50MzIJ CWk7CisKKwlzdGF0ZSA9IChXYWl0U3RhdGUgKikgU2htZW1Jbml0U3RydWN0KCJwZ193YWl0X2xz biIsCisJCQkJCQkJCQkJICBXYWl0U2htZW1TaXplKCksCisJCQkJCQkJCQkJICAmZm91bmQpOwor CWlmICghZm91bmQpCisJeworCQlTcGluTG9ja0luaXQoJnN0YXRlLT5tdXRleCk7CisKKwkJZm9y IChpID0gMDsgaSA8IChNYXhCYWNrZW5kcyArIDEpOyBpKyspCisJCQlzdGF0ZS0+d2FpdGVkX2xz bltpXSA9IEludmFsaWRYTG9nUmVjUHRyOworCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gMDsK KwkJc3RhdGUtPm1pbl9sc24gPSBQR19VSU5UNjRfTUFYOworCX0KK30KKworLyogU2V0IGFsbCBs YXRjaGVzIGluIHNoYXJlZCBtZW1vcnkgdG8gc2lnbmFsIHRoYXQgbmV3IExTTiBoYXMgYmVlbiBy ZXBsYXllZCAqLwordm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xzbikKK3sKKwl1 aW50MzIJCWk7CisJaW50IAkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAgKmJhY2tlbmQ7CisK KwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9tYXhpZCA9IHN0YXRl LT5iYWNrZW5kX21heGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKKworCWZv ciAoaSA9IDI7IGkgPD0gYmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2VuZCA9IEJhY2tl bmRJZEdldFByb2MoaSk7CisJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltpXSAhPSAwKQorCQl7CisJ CQlpZiAoYmFja2VuZCAmJiBzdGF0ZS0+d2FpdGVkX2xzbltpXSA8PSBjdXJfbHNuKQorCQkJCVNl dExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOworCQl9CisJfQorfQorCisvKiBHZXQgbWluaW1h bCBMU04gdGhhdCB3aWxsIGJlIG5leHQgKi8KK1hMb2dSZWNQdHIKK0dldE1pbldhaXQodm9pZCkK K3sKKwlyZXR1cm4gc3RhdGUtPm1pbl9sc247Cit9CisKKy8qCisgKiBPbiBXQUlUIHVzZSBNeUxh dGNoIHRvIHdhaXQgdGlsbCBMU04gaXMgcmVwbGF5ZWQsCisgKiBwb3N0bWFzdGVyIGRpZXMgb3Ig dGltZW91dCBoYXBwZW5zLgorICovCitpbnQKK1dhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBj b25zdCBmbG9hdDggc2VjcykKK3sKKwlYTG9nUmVjUHRyCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5 UmVjUHRyKE5VTEwpOworCWludAkJCWxhdGNoX2V2ZW50czsKKwlmbG9hdDgJCWVuZHRpbWU7CisJ dWludAkJcmVzID0gMDsKKworI2RlZmluZSBHZXROb3dGbG9hdCgpCSgoZmxvYXQ4KSBHZXRDdXJy ZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCisJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyBz ZWNzOworCitsYXRjaF9ldmVudHMgPSBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSDsK KworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJeworCQkvKiBKdXN0IGNoZWNrIGlm IHdlIHJlYWNoZWQgKi8KKwkJaWYgKGxzbiA8IGN1cl9sc24gfHwgc2VjcyA8IDApCisJCQlyZXR1 cm4gKGxzbiA8IGN1cl9sc24pOworCisJCWxhdGNoX2V2ZW50cyB8PSBXTF9MQVRDSF9TRVQ7CisJ CUFkZEV2ZW50KGxzbik7CisJfQorCWVsc2UgaWYgKCFzZWNzKQorCQlyZXR1cm4gMTsKKworCWZv ciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4CQlkZWxheSA9IDA7CisJCWxvbmcJCWRl bGF5X21zOworCisJCWlmIChzZWNzID4gMCkKKwkJCWRlbGF5ID0gZW5kdGltZSAtIEdldE5vd0Zs b2F0KCk7CisJCWVsc2UgaWYgKHNlY3MgPT0gMCkKKwkJCS8qCisJCQkqIElmIHdlIHdhaXQgZm9y ZXZlciwgdGhlbiAxIG1pbnV0ZSB0aW1lb3V0IHRvIGNoZWNrCisJCQkqIGZvciBJbnRlcnVwdHMu CisJCQkqLworCQkJZGVsYXkgPSA2MDsKKworCQlpZiAoZGVsYXkgPiAwLjApCisJCQlkZWxheV9t cyA9IChsb25nKSBjZWlsKGRlbGF5ICogMTAwMC4wKTsKKwkJZWxzZQorCQkJYnJlYWs7CisKKwkJ LyoKKwkJICogSWYgcmVjZWl2ZWQgYW4gaW50ZXJydXB0aW9uIGZyb20gQ0hFQ0tfRk9SX0lOVEVS UlVQVFMsCisJCSAqIHRoZW4gZGVsZXRlIHRoZSBjdXJyZW50IGV2ZW50IGZyb20gYXJyYXkuCisJ CSAqLworCQlpZiAoSW50ZXJydXB0UGVuZGluZykKKwkJeworCQkJaWYgKGxzbiAhPSBJbnZhbGlk WExvZ1JlY1B0cikKKwkJCQlEZWxldGVFdmVudCgpOworCQkJUHJvY2Vzc0ludGVycnVwdHMoKTsK KwkJfQorCisJCS8qIElmIHBvc3RtYXN0ZXIgZGllcywgZmluaXNoIGltbWVkaWF0ZWx5ICovCisJ CWlmICghUG9zdG1hc3RlcklzQWxpdmUoKSkKKwkJCWJyZWFrOworCisJCXJjID0gV2FpdExhdGNo KE15TGF0Y2gsIGxhdGNoX2V2ZW50cywgZGVsYXlfbXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfQ0xJ RU5UX1JFQUQpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisKKwkJaWYgKGxzbiAmJiByYyAmIFdMX0xBVENIX1NFVCkKKwkJCWN1cl9sc24gPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBsYXll ZCAqLworCQlpZiAobHNuICYmIGxzbiA8PSBjdXJfbHNuKQorCQkJYnJlYWs7CisJfQorCisJaWYg KGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJRGVsZXRlRXZlbnQoKTsKKworCWlmIChsc24g IT0gSW52YWxpZFhMb2dSZWNQdHIgJiYgbHNuID4gY3VyX2xzbikKKwkJZWxvZyhOT1RJQ0UsIkxT TiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4iKTsKKwllbHNlCisJ CXJlcyA9IDE7CisKKwlyZXR1cm4gcmVzOworfQorCisvKgorICogR2V0IHRoZSBhbW91bnQgb2Yg c2Vjb25kcyBsZWZ0IHRpbGwgdGhlIHNwZWNpZmllZCB0aW1lLgorICovCitmbG9hdDgKK1dhaXRU aW1lUmVzb2x2ZShDb25zdCAqdGltZSkKK3sKKwlpbnQJCQlyZXQ7CisJZmxvYXQ4CQl2YWw7CisJ T2lkCQkJdHlwZXNbXSA9IHsgdGltZS0+Y29uc3R0eXBlIH07CisJRGF0dW0JCXZhbHVlc1tdID0g eyB0aW1lLT5jb25zdHZhbHVlIH07CisJY2hhcgkJbnVsbHNbXSA9IHsgIiAiIH07CisJRGF0dW0J CXJlc3VsdDsKKwlib29sCQlpc251bGw7CisKKwlTUElfY29ubmVjdCgpOworCisJaWYgKHRpbWUt PmNvbnN0dHlwZSA9PSAxMDgzKQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2FyZ3MoInNlbGVj dCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpOjp0aW1lKSkiLAorCQkJCQkJCQkJMSwg dHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVsc2UgaWYgKHRpbWUtPmNvbnN0dHlw ZSA9PSAxMjY2KQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2FyZ3MoInNlbGVjdCBleHRyYWN0 IChlcG9jaCBmcm9tICh0aW1lem9uZSgnVVRDJywkMSk6OnRpbWUgLSB0aW1lem9uZSgnVVRDJywg bm93KCk6OnRpbWV0eik6OnRpbWUpKSIsCisJCQkJCQkJCQkxLCB0eXBlcywgdmFsdWVzLCBudWxs cywgdHJ1ZSwgMCk7CisJZWxzZQorCQlyZXQgPSBTUElfZXhlY3V0ZV93aXRoX2FyZ3MoInNlbGVj dCBleHRyYWN0IChlcG9jaCBmcm9tICgkMSAtIG5vdygpKSkiLAorCQkJCQkJCQkJMSwgdHlwZXMs IHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCisJQXNzZXJ0KHJldCA+PSAwKTsKKwlyZXN1bHQg PSBTUElfZ2V0YmludmFsKFNQSV90dXB0YWJsZS0+dmFsc1swXSwKKwkJCQkJCSAgIFNQSV90dXB0 YWJsZS0+dHVwZGVzYywKKwkJCQkJCSAgIDEsICZpc251bGwpOworCisJQXNzZXJ0KCFpc251bGwp OworCXZhbCA9IERhdHVtR2V0RmxvYXQ4KHJlc3VsdCk7CisKKwllbG9nKElORk8sICJ0aW1lOiAl ZiIsIHZhbCk7CisKKwlTUElfZmluaXNoKCk7CisJcmV0dXJuIHZhbDsKK30KKworLyogSW1wbGVt ZW50YXRpb24gb2YgV0FJVCBGT1IgKi8KK2ludAorV2FpdE1haW4oV2FpdFN0bXQgKnN0bXQsIERl c3RSZWNlaXZlciAqZGVzdCkKK3sKKwlMaXN0Q2VsbCAgICpldmVudHM7CisJVHVwbGVEZXNjCXR1 cGRlc2M7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlmbG9hdDgJCWRlbGF5ID0gMDsKKwlm bG9hdDgJCWZpbmFsX2RlbGF5ID0gMDsKKwlYTG9nUmVjUHRyCWxzbiA9IEludmFsaWRYTG9nUmVj UHRyOworCVhMb2dSZWNQdHIJZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJYm9vbAkJ aGFzX2xzbiA9IGZhbHNlOworCWJvb2wJCXdhaXRfZm9yZXZlciA9IHRydWU7CisJaW50CQkJcmVz ID0gMDsKKworCWlmIChzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTlkpCisJeworCQkvKiBQ cmVwYXJlIHRvIGZpbmQgbWluaW11bSBMU04gYW5kIGRlbGF5ICovCisJCWZpbmFsX2RlbGF5ID0g REJMX01BWDsKKwkJZmluYWxfbHNuID0gUEdfVUlOVDY0X01BWDsKKwl9CisKKwkvKiBFeHRyYWN0 IG9wdGlvbnMgZnJvbSB0aGUgc3RhdGVtZW50IG5vZGUgdHJlZSAqLworCWZvcmVhY2goZXZlbnRz LCBzdG10LT5ldmVudHMpCisJeworCQlXYWl0U3RtdCAgICpldmVudCA9IChXYWl0U3RtdCAqKSBs Zmlyc3QoZXZlbnRzKTsKKworCQkvKiBMU04gdG8gd2FpdCBmb3IgKi8KKwkJaWYgKGV2ZW50LT5s c24pCisJCXsKKwkJCWhhc19sc24gPSB0cnVlOworCQkJbHNuID0gRGF0dW1HZXRMU04oCisJCQkJ CQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKKwkJCQkJCQlDU3RyaW5nR2V0RGF0dW0o ZXZlbnQtPmxzbikpKTsKKworCQkJLyoKKwkJCSAqIFdoZW4gd2FpdGluZyBmb3IgQUxMLCBzZWxl Y3QgbWF4IExTTiB0byB3YWl0IGZvci4KKwkJCSAqIFdoZW4gd2FpdGluZyBmb3IgQU5ZLCBzZWxl Y3QgbWluIExTTiB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5zdHJhdGVneSA9 PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfbHNuIDw9IGxzbikgfHwKKwkJCQkoc3RtdC0+c3RyYXRl Z3kgPT0gV0FJVF9GT1JfQU5ZICYmIGZpbmFsX2xzbiA+IGxzbikpCisJCQl7CisJCQkJZmluYWxf bHNuID0gbHNuOworCQkJfQorCQl9CisKKwkJLyogVGltZSBkZWxheSB0byB3YWl0IGZvciAqLwor CQlpZiAoZXZlbnQtPnRpbWUgfHwgZXZlbnQtPmRlbGF5KQorCQl7CisJCQl3YWl0X2ZvcmV2ZXIg PSBmYWxzZTsKKworCQkJaWYgKGV2ZW50LT5kZWxheSkKKwkJCQlkZWxheSA9IGV2ZW50LT5kZWxh eSAvIDEwMDAuMDsKKworCQkJaWYgKGV2ZW50LT50aW1lKQorCQkJeworCQkJCUNvbnN0ICp0aW1l ID0gKENvbnN0ICopIGV2ZW50LT50aW1lOworCQkJCWRlbGF5ID0gV2FpdFRpbWVSZXNvbHZlKHRp bWUpOworCQkJfQorCisJCQkvKgorCQkJICogV2hlbiB3YWl0aW5nIGZvciBBTEwsIHNlbGVjdCBt YXggZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdhaXRpbmcgZm9yIEFOWSwgc2VsZWN0 IG1pbiBkZWxheSB0byB3YWl0IGZvci4KKwkJCSAqLworCQkJaWYgKChzdG10LT5zdHJhdGVneSA9 PSBXQUlUX0ZPUl9BTEwgJiYgZmluYWxfZGVsYXkgPD0gZGVsYXkpIHx8CisJCQkJKHN0bXQtPnN0 cmF0ZWd5ID09IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9kZWxheSA+IGRlbGF5KSkKKwkJCXsKKwkJ CQlmaW5hbF9kZWxheSA9IGRlbGF5OworCQkJfQorCQl9CisJfQorCWlmICh3YWl0X2ZvcmV2ZXIp CisJCWZpbmFsX2RlbGF5ID0gMDsKKwlpZiAoIWhhc19sc24pCisJCWZpbmFsX2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCisJcmVzID0gV2FpdFV0aWxpdHkoZmluYWxfbHNuLCBmaW5hbF9kZWxh eSk7CisKKwkvKiBOZWVkIGEgdHVwbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcgYSBzaW5nbGUg VEVYVCBjb2x1bW4gKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CisJ VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAiTFNOIHJlYWNoZWQi LCBURVhUT0lELCAtMSwgMCk7CisJLyogUHJlcGFyZSBmb3IgcHJvamVjdGlvbiBvZiB0dXBsZXMg Ki8KKwl0c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVwZGVzYywgJlRU U09wc01pbmltYWxUdXBsZSk7CisKKwkvKiBTZW5kIGl0ICovCisJZG9fdGV4dF9vdXRwdXRfb25l bGluZSh0c3RhdGUsIHJlcz8idCI6ImYiKTsKKwllbmRfdHVwX291dHB1dCh0c3RhdGUpOworCXJl dHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBlODkyZGY5ODE5Li5jNGEzMDM3NDhl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTg0LDYgKzg0LDcgQEAgc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1DcmVhdGVUYWJsZUFzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJIENy ZWF0ZVRhYmxlQXNTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ2FsbFN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQlDYWxsU3RtdCAqc3RtdCk7CitzdGF0aWMgdm9p ZCB0cmFuc2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10 KTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUxvY2tpbmdDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRl LCBRdWVyeSAqcXJ5LAogCQkJCQkJCQkgICBMb2NraW5nQ2xhdXNlICpsYywgYm9vbCBwdXNoZWRE b3duKTsKICNpZmRlZiBSQVdfRVhQUkVTU0lPTl9DT1ZFUkFHRV9URVNUCkBAIC0zOTksNyArNDAw LDIwIEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUp CiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1DYWxsU3RtdChwc3RhdGUsCiAJCQkJCQkJCQkgICAoQ2Fs bFN0bXQgKikgcGFyc2VUcmVlKTsKIAkJCWJyZWFrOwotCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJ CXRyYW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0ZSwgKFdhaXRTdG10ICopIHBhcnNlVHJlZSk7CisJ CQlyZXN1bHQgPSBtYWtlTm9kZShRdWVyeSk7CisJCQlyZXN1bHQtPmNvbW1hbmRUeXBlID0gQ01E X1VUSUxJVFk7CisJCQlyZXN1bHQtPnV0aWxpdHlTdG10ID0gKE5vZGUgKikgcGFyc2VUcmVlOwor CQkJYnJlYWs7CisJCWNhc2UgVF9UcmFuc2FjdGlvblN0bXQ6CisJCQl7CisJCQkJVHJhbnNhY3Rp b25TdG10ICpzdG10ID0gKFRyYW5zYWN0aW9uU3RtdCAqKSBwYXJzZVRyZWU7CisJCQkJaWYgKChz dG10LT5raW5kID09IFRSQU5TX1NUTVRfQkVHSU4gfHwKKwkJCQkJCXN0bXQtPmtpbmQgPT0gVFJB TlNfU1RNVF9TVEFSVCkgJiYgc3RtdC0+d2FpdCkKKwkJCQkJdHJhbnNmb3JtV2FpdEZvclN0bXQo cHN0YXRlLCAoV2FpdFN0bXQgKikgc3RtdC0+d2FpdCk7CisJCQl9CisJCQkvKiBubyBicmVhayBo ZXJlIC0gd2Ugd2FudCB0byBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgKi8KIAkJZGVmYXVs dDoKIAogCQkJLyoKQEAgLTM0OTIsNiArMzUwNiwyMyBAQCBhcHBseUxvY2tpbmdDbGF1c2UoUXVl cnkgKnFyeSwgSW5kZXggcnRpbmRleCwKIAlxcnktPnJvd01hcmtzID0gbGFwcGVuZChxcnktPnJv d01hcmtzLCByYyk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1XYWl0Rm9yU3RtdCAtCisgKgl0cmFu c2Zvcm0gdGhlIFdBSVQgRk9SIGNsYXVzZSBvZiB0aGUgQkVHSU4gc3RhdGVtZW50CisgKgl0cmFu c2Zvcm0gdGhlIFdBSVQgRk9SIHN0YXRlbWVudCAoVE9ETzogcmVtb3ZlIHRoaXMgbGluZSBpZiB3 ZSBkb24ndCBrZWVwIGl0KQorICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtV2FpdEZvclN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCkKK3sKKwlMaXN0Q2VsbCAgICpldmVu dHM7CisKKwlmb3JlYWNoKGV2ZW50cywgc3RtdC0+ZXZlbnRzKQorCXsKKwkJV2FpdFN0bXQgICAq ZXZlbnQgPSAoV2FpdFN0bXQgKikgbGZpcnN0KGV2ZW50cyk7CisJCWV2ZW50LT50aW1lID0gdHJh bnNmb3JtRXhwcihwc3RhdGUsIGV2ZW50LT50aW1lLCBFWFBSX0tJTkRfT1RIRVIpOworCX0KK30K KwogLyoKICAqIENvdmVyYWdlIHRlc3RpbmcgZm9yIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2Vy KCkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTAxMzgzODJhMS4uMDM3MDhiNTIyMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJU2VjTGFi ZWxTdG10IFNlbGVjdFN0bXQgVHJhbnNhY3Rpb25TdG10IFRyYW5zYWN0aW9uU3RtdExlZ2FjeSBU cnVuY2F0ZVN0bXQKIAkJVW5saXN0ZW5TdG10IFVwZGF0ZVN0bXQgVmFjdXVtU3RtdAogCQlWYXJp YWJsZVJlc2V0U3RtdCBWYXJpYWJsZVNldFN0bXQgVmFyaWFibGVTaG93U3RtdAotCQlWaWV3U3Rt dCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAorCQlWaWV3U3RtdCBXYWl0U3Rt dCBDaGVja1BvaW50U3RtdCBDcmVhdGVDb252ZXJzaW9uU3RtdAogCQlEZWFsbG9jYXRlU3RtdCBQ cmVwYXJlU3RtdCBFeGVjdXRlU3RtdAogCQlEcm9wT3duZWRTdG10IFJlYXNzaWduT3duZWRTdG10 CiAJCUFsdGVyVFNDb25maWd1cmF0aW9uU3RtdCBBbHRlclRTRGljdGlvbmFyeVN0bXQKQEAgLTUz NCw3ICs1MzQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CWNhc2Vf ZXhwciBjYXNlX2FyZyB3aGVuX2NsYXVzZSBjYXNlX2RlZmF1bHQKICV0eXBlIDxsaXN0Pgl3aGVu X2NsYXVzZV9saXN0CiAldHlwZSA8bm9kZT4Jb3B0X3NlYXJjaF9jbGF1c2Ugb3B0X2N5Y2xlX2Ns YXVzZQotJXR5cGUgPGl2YWw+CXN1Yl90eXBlIG9wdF9tYXRlcmlhbGl6ZWQKKyV0eXBlIDxpdmFs PglzdWJfdHlwZSB3YWl0X3N0cmF0ZWd5IG9wdF9tYXRlcmlhbGl6ZWQKICV0eXBlIDxub2RlPglO dW1lcmljT25seQogJXR5cGUgPGxpc3Q+CU51bWVyaWNPbmx5X2xpc3QKICV0eXBlIDxhbGlhcz4J YWxpYXNfY2xhdXNlIG9wdF9hbGlhc19jbGF1c2Ugb3B0X2FsaWFzX2NsYXVzZV9mb3Jfam9pbl91 c2luZwpAQCAtNjQyLDYgKzY0Miw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8 cGFydGJvdW5kc3BlYz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4JCWhhc2hfcGFy dGJvdW5kCiAldHlwZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUgPGxpc3Q+ CQl3YWl0X2xpc3QKKyV0eXBlIDxub2RlPgkJV2FpdEV2ZW50IHdhaXRfZm9yCiAKIAogLyoKQEAg LTcxMiw3ICs3MTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hh ciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJTEFCRUwgTEFOR1VB R0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVG VCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCi0JTE9DQUxUSU1FIExPQ0FMVElN RVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VECisJTE9DQUxUSU1FIExPQ0FMVElN RVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VEIExTTgogCiAJTUFQUElORyBNQVRD SCBNQVRDSEVEIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVJHRSBNRVRIT0QKIAlNSU5VVEVfUCBN SU5WQUxVRSBNT0RFIE1PTlRIX1AgTU9WRQpAQCAtNzQ1LDcgKzc0Nyw3IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJU1VCU0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBT WVNJRCBTWVNURU1fUCBTWVNURU1fVVNFUgogCiAJVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRB QkxFU1BBQ0UgVEVNUCBURU1QTEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KLQlUSUVTIFRJTUUg VElNRVNUQU1QIFRPIFRSQUlMSU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQorCVRJRVMgVElNRSBU SU1FT1VUIFRJTUVTVEFNUCBUTyBUUkFJTElORyBUUkFOU0FDVElPTiBUUkFOU0ZPUk0KIAlUUkVB VCBUUklHR0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAog CkBAIC03NTUsNyArNzU3LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlWQUNVVU0gVkFM SUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFESUMgVkFS WUlORwogCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAotCVdIRU4gV0hF UkUgV0hJVEVTUEFDRV9QIFdJTkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBX UklURQorCVdBSVQgV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XCisJV0lUSCBXSVRISU4g V0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIAogCVhNTF9QIFhNTEFUVFJJQlVURVMgWE1MQ09O Q0FUIFhNTEVMRU1FTlQgWE1MRVhJU1RTIFhNTEZPUkVTVCBYTUxOQU1FU1BBQ0VTCiAJWE1MUEFS U0UgWE1MUEkgWE1MUk9PVCBYTUxTRVJJQUxJWkUgWE1MVEFCTEUKQEAgLTEwNjQsNiArMTA2Nyw3 IEBAIHN0bXQ6CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBWYXJpYWJsZVNob3dTdG10CiAJ CQl8IFZpZXdTdG10CisJCQl8IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsgJCQgPSBO VUxMOyB9CiAJCTsKQEAgLTEwODM4LDEyICsxMDg0MiwxMyBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJ CQkJCW4tPmNoYWluID0gJDM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFNU QVJUIFRSQU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQorCQkJfCBTVEFS VCBUUkFOU0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IKIAkJ CQl7CiAJCQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7 CiAKIAkJCQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJCQkJCW4tPm9wdGlvbnMgPSAk MzsKKwkJCQkJbi0+d2FpdCA9ICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQkJ fCBDT01NSVQgb3B0X3RyYW5zYWN0aW9uIG9wdF90cmFuc2FjdGlvbl9jaGFpbgpAQCAtMTA5MzEs MTIgKzEwOTM2LDEzIEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJOwogCiBUcmFuc2FjdGlvblN0bXRM ZWdhY3k6Ci0JCQlCRUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rf b3JfZW1wdHkKKwkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlz dF9vcl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25TdG10ICpuID0gbWFr ZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0gVFJBTlNfU1RNVF9CRUdJ TjsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0gJDQ7CiAJCQkJCSQkID0g KE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IEVORF9QIG9wdF90cmFuc2FjdGlvbiBvcHRfdHJhbnNh Y3Rpb25fY2hhaW4KQEAgLTE1NjIyLDYgKzE1NjI4LDc0IEBAIHhtbF9wYXNzaW5nX21lY2g6CiAJ CQl8IEJZIFZBTFVFX1AKIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVF Ulk6CisgKgkJCQlXQUlUIEZPUiA8ZXZlbnQ+IFssIDxldmVudD4gLi4uXQorICoJCQkJZXZlbnQg aXMgb25lIG9mOgorICoJCQkJCUxTTiB2YWx1ZQorICoJCQkJCVRJTUVPVVQgZGVsYXkKKyAqCQkJ CQl0aW1lc3RhbXAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXYWl0U3RtdDoKKwkJCVdB SVQgRk9SIHdhaXRfc3RyYXRlZ3kgd2FpdF9saXN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9 IG1ha2VOb2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+c3RyYXRlZ3kgPSAkMzsKKwkJCQkJbi0+ZXZl bnRzID0gJDQ7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCTsKK3dhaXRfZm9yOgor CQkJV0FJVCBGT1Igd2FpdF9zdHJhdGVneSB3YWl0X2xpc3QKKwkJCQl7CisJCQkJCVdhaXRTdG10 ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5zdHJhdGVneSA9ICQzOworCQkJCQlu LT5ldmVudHMgPSAkNDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCAvKiBFTVBU WSAqLwkJeyAkJCA9IE5VTEw7IH07CisKK3dhaXRfc3RyYXRlZ3k6CisJCQlBTEwJCQkJCXsgJCQg PSBXQUlUX0ZPUl9BTEw7IH0KKwkJCXwgQU5ZCQkJCXsgJCQgPSBXQUlUX0ZPUl9BTlk7IH0KKwkJ CXwgLyogRU1QVFkgKi8JCXsgJCQgPSBXQUlUX0ZPUl9BTEw7IH0KKwkJOworCit3YWl0X2xpc3Q6 CisJCQlXYWl0RXZlbnQJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCB3YWl0X2xp c3QgJywnIFdhaXRFdmVudAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCQl8IHdhaXRfbGlz dCBXYWl0RXZlbnQJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMik7IH0KKwkJOworCitXYWl0RXZlbnQ6 CisJCQlMU04gU2NvbnN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRT dG10KTsKKwkJCQkJbi0+bHNuID0gJDI7CisJCQkJCW4tPmRlbGF5ID0gMDsKKwkJCQkJbi0+dGlt ZSA9IE5VTEw7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgVElNRU9VVCBJY29u c3QKKwkJCQl7CisJCQkJCVdhaXRTdG10ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQlu LT5sc24gPSBOVUxMOworCQkJCQluLT5kZWxheSA9ICQyOworCQkJCQluLT50aW1lID0gTlVMTDsK KwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBDb25zdERhdGV0aW1lIFNjb25zdAor CQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPmxz biA9IE5VTEw7CisJCQkJCW4tPmRlbGF5ID0gMDsKKwkJCQkJbi0+dGltZSA9IG1ha2VTdHJpbmdD b25zdENhc3QoJDIsIEAyLCAkMSk7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCTsK KwogCiAvKgogICogQWdncmVnYXRlIGRlY29yYXRpb24gY2xhdXNlcwpAQCAtMTY4NTMsNiArMTY5 MjcsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IExPQ0tfUAogCQkJfCBMT0NLRUQKIAkJ CXwgTE9HR0VECisJCQl8IExTTgogCQkJfCBNQVBQSU5HCiAJCQl8IE1BVENICiAJCQl8IE1BVENI RUQKQEAgLTE2OTg0LDYgKzE3MDU5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBURU1Q T1JBUlkKIAkJCXwgVEVYVF9QCiAJCQl8IFRJRVMKKwkJCXwgVElNRU9VVAogCQkJfCBUUkFOU0FD VElPTgogCQkJfCBUUkFOU0ZPUk0KIAkJCXwgVFJJR0dFUgpAQCAtMTcwMTAsNiArMTcwODYsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJ TEUKKwkJCXwgV0FJVAogCQkJfCBXSElURVNQQUNFX1AKIAkJCXwgV0lUSElOCiAJCQl8IFdJVEhP VVQKQEAgLTE3NDI0LDYgKzE3NTAxLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBMT0NL X1AKIAkJCXwgTE9DS0VECiAJCQl8IExPR0dFRAorCQkJfCBMU04KIAkJCXwgTUFQUElORwogCQkJ fCBNQVRDSAogCQkJfCBNQVRDSEVECkBAIC0xNzU4NSw2ICsxNzY2Myw3IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgVEhFTgogCQkJfCBUSUVTCiAJCQl8IFRJTUUKKwkJCXwgVElNRU9VVAog CQkJfCBUSU1FU1RBTVAKIAkJCXwgVFJBSUxJTkcKIAkJCXwgVFJBTlNBQ1RJT04KQEAgLTE3NjIy LDYgKzE3NzAxLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBWSUVXCiAJCQl8IFZJRVdT CiAJCQl8IFZPTEFUSUxFCisJCQl8IFdBSVQKIAkJCXwgV0hFTgogCQkJfCBXSElURVNQQUNFX1AK IAkJCXwgV09SSwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDhmMWRlZDczMzguLjEwNmM2YWM1 OTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ3ByZWZldGNoZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5Lmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0Lmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCkBAIC0xNDIsNiArMTQzLDcgQEAgQ2FsY3VsYXRlU2ht ZW1TaXplKGludCAqbnVtX3NlbWFwaG9yZXMpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN5bmNT Y2FuU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBc3luY1NobWVtU2l6ZSgp KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RhdHNTaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5U2l6ZSgpKTsKICNlbmRpZgpAQCAt Mjk1LDYgKzI5NywxMSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJ QXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVtSW5pdCgpOwogCisJLyoKKwkgKiBJbml0IGFy cmF5IG9mIExhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSBmb3IgV0FJVAorCSAqLworCVdhaXRTaG1l bUluaXQoKTsKKwogI2lmZGVmIEVYRUNfQkFDS0VORAogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXgg YzdkOWQ5NmI0NS4uYjJlZDdhOGIyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGls aXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTE1LDYgKzE1LDcgQEAK ICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRl IDxmbG9hdC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy9yZWxvcHRpb25zLmgiCkBAIC01OSw2ICs2MCw3IEBACiAjaW5jbHVkZSAiY29tbWFu ZHMvdXNlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3ZpZXcuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2Jnd3JpdGVyLmgiCkBAIC03Miw2ICs3NCw5IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJv dG9zLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMg dG8gZ2V0IGNvbnRyb2wgaW4gUHJvY2Vzc1V0aWxpdHkoKSAqLwogUHJvY2Vzc1V0aWxpdHlfaG9v a190eXBlIFByb2Nlc3NVdGlsaXR5X2hvb2sgPSBOVUxMOwpAQCAtMjcyLDYgKzI3Nyw3IEBAIENs YXNzaWZ5VXRpbGl0eUNvbW1hbmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBU X0xvYWRTdG10OgogCQljYXNlIFRfUHJlcGFyZVN0bXQ6CiAJCWNhc2UgVF9Vbmxpc3RlblN0bXQ6 CisJCWNhc2UgVF9XYWl0U3RtdDoKIAkJY2FzZSBUX1ZhcmlhYmxlU2V0U3RtdDoKIAkJCXsKIAkJ CQkvKgpAQCAtNjEyLDYgKzYxOCwxMSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVk U3RtdCAqcHN0bXQsCiAJCQkJCWNhc2UgVFJBTlNfU1RNVF9TVEFSVDoKIAkJCQkJCXsKIAkJCQkJ CQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJCQlXYWl0U3RtdCAgICp3YWl0c3RtdCA9IChXYWl0U3Rt dCAqKSBzdG10LT53YWl0OworCisJCQkJCQkJLyogSWYgbmVlZGVkIHRvIFdBSVQgRk9SIHNvbWV0 aGluZyBidXQgZmFpbGVkICovCisJCQkJCQkJaWYgKHN0bXQtPndhaXQgJiYgV2FpdE1haW4od2Fp dHN0bXQsIGRlc3QpID09IDApCisJCQkJCQkJCWJyZWFrOwogCiAJCQkJCQkJQmVnaW5UcmFuc2Fj dGlvbkJsb2NrKCk7CiAJCQkJCQkJZm9yZWFjaChsYywgc3RtdC0+b3B0aW9ucykKQEAgLTEwNjks NiArMTA4MCwxMyBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQs CiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJeworCQkJCVdhaXRT dG10ICAgKnN0bXQgPSAoV2FpdFN0bXQgKikgcGFyc2V0cmVlOworCQkJCVdhaXRNYWluKHN0bXQs IGRlc3QpOworCQkJCWJyZWFrOworCQkJfQorCiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIg c3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNz VXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwgcXVlcnlTdHJpbmcsCkBAIC0yODMzLDYgKzI4NTEs MTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBDTURUQUdf Tk9USUZZOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1dhaXRTdG10OgorCQkJdGFnID0gQ01EVEFH X1dBSVQ7CisJCQlicmVhazsKKwogCQljYXNlIFRfTGlzdGVuU3RtdDoKIAkJCXRhZyA9IENNRFRB R19MSVNURU47CiAJCQlicmVhazsKQEAgLTM0ODEsNiArMzUwMywxMCBAQCBHZXRDb21tYW5kTG9n TGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsK IAorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQlsZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOwor CiAJCWNhc2UgVF9MaXN0ZW5TdG10OgogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3dhaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjcw MTYwZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBA IC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuaAorICoJICBw cm90b3R5cGVzIGZvciBjb21tYW5kcy93YWl0LmMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAxNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMjAxNiwgUmVnZW50cyBvZiBQb3N0Z3Jlc1BSTworICoKKyAq IHNyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIFdBSVRfSAorI2RlZmluZSBXQUlUX0gKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgor I2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCitleHRlcm4gaW50IFdhaXRVdGlsaXR5KFhMb2dSZWNQ dHIgbHNuLCBjb25zdCBmbG9hdDggZGVsYXkpOworZXh0ZXJuIFNpemUgV2FpdFNobWVtU2l6ZSh2 b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTaG1lbUluaXQodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0 U2V0TGF0Y2goWExvZ1JlY1B0ciBjdXJfbHNuKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldE1pbldh aXQodm9pZCk7CitleHRlcm4gZmxvYXQ4IFdhaXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSk7Citl eHRlcm4gaW50IFdhaXRNYWluKFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpOwor CisjZW5kaWYgICAvKiBXQUlUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmN2Q3ZjEw ZjdkLi4wYTFhYzcwOTkxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0zMzkzLDYgKzMzOTMs NyBAQCB0eXBlZGVmIHN0cnVjdCBUcmFuc2FjdGlvblN0bXQKIAljaGFyCSAgICpzYXZlcG9pbnRf bmFtZTsgLyogZm9yIHNhdmVwb2ludCBjb21tYW5kcyAqLwogCWNoYXIJICAgKmdpZDsJCQkvKiBm b3IgdHdvLXBoYXNlLWNvbW1pdCByZWxhdGVkIGNvbW1hbmRzICovCiAJYm9vbAkJY2hhaW47CQkJ LyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5vZGUJCSp3YWl0OwkJCS8qIFdBSVQgY2xhdXNlOiBs aXN0IG9mIGV2ZW50cyB0byB3YWl0IGZvciAqLwogfSBUcmFuc2FjdGlvblN0bXQ7CiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM5MzgsNCArMzkzOSwyNiBAQCB0eXBlZGVmIHN0cnVj dCBEcm9wU3Vic2NyaXB0aW9uU3RtdAogCURyb3BCZWhhdmlvciBiZWhhdmlvcjsJCS8qIFJFU1RS SUNUIG9yIENBU0NBREUgYmVoYXZpb3IgKi8KIH0gRHJvcFN1YnNjcmlwdGlvblN0bXQ7CiAKKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlXQUlUIEZPUiBTdGF0ZW1lbnQgKyBXQUlUIEZP UiBjbGF1c2Ugb2YgQkVHSU4gc3RhdGVtZW50CisgKgkJVE9ETzogaWYgd2Ugb25seSBwaWNrIG9u ZSwgcmVtb3ZlIHRoZSBvdGhlcgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3R5 cGVkZWYgZW51bSBXYWl0Rm9yU3RyYXRlZ3kKK3sKKwlXQUlUX0ZPUl9BTlkgPSAwLAorCVdBSVRf Rk9SX0FMTAorfSBXYWl0Rm9yU3RyYXRlZ3k7CisKK3R5cGVkZWYgc3RydWN0IFdhaXRTdG10Cit7 CisJTm9kZVRhZwkJdHlwZTsKKwlXYWl0Rm9yU3RyYXRlZ3kgc3RyYXRlZ3k7CisJTGlzdAkgICAq ZXZlbnRzOwkJLyogdXNlZCBhcyBhIHBvaW50ZXIgdG8gdGhlIG5leHQgV0FJVCBldmVudCAqLwor CWNoYXIJICAgKmxzbjsJCS8qIFdBSVQgRk9SIExTTiAqLworCWludAkJCWRlbGF5OwkJLyogV0FJ VCBGT1IgVElNRU9VVCAqLworCU5vZGUJICAgKnRpbWU7CQkvKiBXQUlUIEZPUiBUSU1FU1RBTVAg b3IgVElNRSAqLworfSBXYWl0U3RtdDsKKwogI2VuZGlmCQkJCQkJCS8qIFBBUlNFTk9ERVNfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCmluZGV4IGJiMzYyMTNlNmYuLjEzYjE2YzRkOTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKQEAgLTI0OSw2ICsyNDksNyBAQCBQR19LRVlXT1JEKCJsb2NhdGlvbiIsIExPQ0FUSU9O LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsb2NrIiwgTE9D S19QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsb2NrZWQi LCBMT0NLRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxv Z2dlZCIsIExPR0dFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgibHNuIiwgTFNOLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJtYXBwaW5nIiwgTUFQUElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgibWF0Y2giLCBNQVRDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgibWF0Y2hlZCIsIE1BVENIRUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKQEAgLTQyMSw2ICs0MjIsNyBAQCBQR19LRVlXT1JEKCJ0ZXh0IiwgVEVYVF9QLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0aGVuIiwgVEhFTiwgUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRpZXMiLCBUSUVTLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0aW1lIiwgVElNRSwgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInRpbWVvdXQiLCBUSU1FT1VU LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0aW1lc3RhbXAi LCBUSU1FU1RBTVAsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0 byIsIFRPLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoInRyYWlsaW5n IiwgVFJBSUxJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00NjEsNiArNDYz LDcgQEAgUEdfS0VZV09SRCgidmVyc2lvbiIsIFZFUlNJT05fUCwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmlldyIsIFZJRVcsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZpZXdzIiwgVklFV1MsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZvbGF0aWxlIiwgVk9MQVRJTEUsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoIndhaXQiLCBXQUlULCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ3aGVuIiwgV0hFTiwgUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIndoZXJlIiwgV0hFUkUsIFJF U0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgid2hpdGVzcGFjZSIsIFdISVRF U1BBQ0VfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3Qu aAppbmRleCBlNzM4YWMxYzA5Li5jNjk5Y2JiMTc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAt MjE2LDMgKzIxNiw0IEBAIFBHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FU RSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX1VOTElTVEVO LCAiVU5MSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19VUERB VEUsICJVUERBVEUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCiBQR19DTURUQUcoQ01EVEFHX1ZBQ1VV TSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1dBSVQs ICJXQUlUIEZPUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAzNF9iZWdpbl93YWl0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfYmVn aW5fd2FpdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mMWU1YjVi MjNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfYmVnaW5fd2Fp dC5wbApAQCAtMCwwICsxLDE0NiBAQAorIyBDaGVja3MgV0FJVCBGT1IKK3VzZSBzdHJpY3Q7Cit1 c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBwcmlt YXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAx KTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRlbnQgYW5kIHRha2Ug YSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOwor bXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJh Y2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3aXRoIGEgMSBzZWNv bmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAkbm9kZV9zdGFuZGJ5ID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVsYXkgICAgICAgID0gMTsKKyRu b2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1l LAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgcXFbCisJcmVjb3ZlcnlfbWluX2FwcGx5X2RlbGF5ID0gJyR7ZGVsYXl9 cycKK10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7CisKKworCisjIE1ha2Ugc3VyZSB0aGF0IFdB SVQgRk9SIExTTiB3b3JrczogYWRkIG5ldyBjb250ZW50IHRvIHByaW1hcnkgYW5kIG1lbW9yaXpl CisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdhaXQgZm9yIHByaW1hcnkncyBMU04gb24gc3Rh bmRieS4gUHJvdmUgdGhhdCBXQUlUIGlzCisjIGFibGUgdG8gc2V0dXAgYW4gaW5maW5pdGUgd2Fp dGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdhaXQgdGltZW91dC4KKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRsc24xID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK KyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQkVHSU4gV0FJVCBGT1IgTFNO ICckbHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNOIG9uIHN0YW5kYnkgYW5kIG1ha2Ug c3VyZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04KK215ICRsc25fc3RhbmRieSA9ICRu b2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxf cmVwbGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19s c24sICckbHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgMCwgInN0YW5kYnkg cmVhY2hlZCB0aGUgc2FtZSBMU04gYXMgcHJpbWFyeSBhZnRlciBXQUlUIik7CisKKworCisjIENo ZWNrIHRoYXQgdGltZW91dHMgd29yayBvbiB0aGVpciBvd24gYW5kIGxldCB1cyB3YWl0IGZvciBz cGVjaWZpZWQgdGltZSAoMXMpCitteSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qgbm93KCkiKTsKK215ICRvbmVfc2Vjb25kID0gMTAw MDsgIyBpbiBtaWxsaXNlY29uZHMKK215ICRzdGFydF90aW1lID0gdGltZSgpOworIyBXaGlsZSB3 ZSdyZSBhdCBpdCwgYWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUgc3ludGF4IHdpdGggY29tbWFzIHdv cmtzIGZpbmUgYW5kCisjIHRoYXQgYnkgZGVmYXVsdCB3ZSB1c2UgV0FJVCBGT1IgQUxMIHN0cmF0 ZWd5LCB3aGljaCBtZWFucyB3YWl0aW5nIGZvciBtYXggdGltZQorJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIFRJTUVPVVQgJG9uZV9zZWNvbmQsIFRJTUVT VEFNUCAnJGN1cnJlbnRfdGltZSciKTsKK215ICR0aW1lX3dhaXRlZCA9ICh0aW1lKCkgLSAkc3Rh cnRfdGltZSkgKiAxMDAwOyAjIGNvbnZlcnQgdG8gbWlsbGlzZWNvbmRzCitvaygkdGltZV93YWl0 ZWQgPj0gJG9uZV9zZWNvbmQsICJXQUlUIEZPUiBUSU1FT1VUIHdhaXRzIGZvciBlbm91Z2ggdGlt ZSIpOworCisjIE5vdywgY2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIGFzIGV4cGVjdGVkIHdoZW4g d2FpdGluZyBmb3IgTFNOCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDIxLCAzMCkpIik7 CitteSAkbHNuMiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAkcmVhY2hlZF9sc24gPSAkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQkVHSU4gV0FJVCBGT1IgTFNOICckbHNuMicgVElN RU9VVCAxIik7CitvaygkcmVhY2hlZF9sc24gZXEgImYiLCAiV0FJVCBkb2Vzbid0IHJlYWNoIExT TiBpZiBnaXZlbiB0b28gbGl0dGxlIHdhaXQgdGltZSIpOworCisKKyM9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIFRPRE86IHJlbW92ZSB0aGlzIHRlc3QgaWYgd2UgcmVtb3ZlIHRoZSBzdGFuZGFs b25lICJXQUlUIEZPUiIgY29tbWFuZAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV2UgbmVl ZCB0byBjaGVjayB0aGF0IFdBSVQgd29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3Ig dGhhdCwgbGV0J3MKKyMgZ2V0IHR3byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBk aWZmZXJlbnQgbWF4IHZhbHVlcyBpbiBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDMxLCA0MCkpIik7CitteSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAo Z2VuZXJhdGVfc2VyaWVzKDQxLCA1MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMg QmVmb3JlIHN0YXJ0aW5nIHRyYW5zYWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBh IG1heCB2YWx1ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNO IHRoYXQgZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgor bXkgJHN0YW5kYnlfcmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcVsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEIFdBSVQgRk9SIExTTiAnJGxzbjMnOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7 CisJQkVHSU4gV0FJVCBGT1IgTFNOICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxh eV9sc24oKTsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOwor CisjIE1ha2Ugc3VyZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5z aWRlIHRoZSB0cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19s YXN0X3dhbF9yZXBsYXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNo ZWQgPSAkc3RhbmRieV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwg IldBSVQgRk9SIExTTiB3b3JrcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRo YXQgdHJhbnNhY3Rpb24gZG9lc24ndCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1 ZSBhZnRlciBXQUlULgorIyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2 YWx1ZSBpcyByZXBlYXRlZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0g JHN0YW5kYnlfcmVzdWx0cyA9fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24g aXNvbGF0aW9uIGxldmVsIGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKwor IyBHZXQgbXVsdGlwbGUgTFNOcyBmb3IgdGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBB TEwKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3 YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0g JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93 YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsK K215ICRsc242ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEs IDgwMDAwMCkpIik7CitteSAkbHNuNyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlU IEZPUiBBTlkgd29ya3MgZmluZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkJFR0lOIFdBSVQgRk9SIEFOWSBMU04gJyRsc241JyBMU04gJyRsc242JyBMU04gJyRsc243 JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAo JyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc241Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVf bHNucyBnZSAwLAorCSJXQUlUIEZPUiBBTlkgbWFrZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1p bmltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRi eSc6OnBnX2xzbiwgJyRsc243Jzo6cGdfbHNuKSIpOworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVo b3cgZmFpbCBkdWUgdG8gdGhlIG1hY2hpbmUgYmVpbmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExT Tj8KK29rKCRjb21wYXJlX2xzbnMgbHQgMCwKKwkiV0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVz IHJlYWNoIHRoZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBX QUlUIEZPUiBBTEwgd29ya3MgZmluZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkJFR0lOIFdBSVQgRk9SIEFMTCBMU04gJyRsc241JywgTFNOICckbHNuNicsIExTTiAn JGxzbjcnIik7CiskbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworJGNvbXBhcmVfbHNu cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNu X2NtcCgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjcnOjpwZ19sc24pIik7CitvaygkY29t cGFyZV9sc25zIGVxIDAsCisJIldBSVQgRk9SIEFMTCBtYWtlcyB1cyByZWFjaCB0aGUgbWF4aW11 bSBMU04gZnJvbSB0aGUgbGlzdCIpOworCisKKworJG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2Rl X3ByaW1hcnktPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3dhaXQucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV93YWl0LnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZmOWQ1NDk0MTYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV93YWl0LnBsCkBAIC0wLDAgKzEsMTQ1 IEBACisjIENoZWNrcyBXQUlUIEZPUgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVf cHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5v ZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+ c3RhcnQ7CisKKyMgQW5kIHNvbWUgY29udGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMg U0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAn bXlfYmFja3VwJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENy ZWF0ZSBhIHN0cmVhbWluZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBi YWNrdXAKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3N0YW5kYnknKTsKK215ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9m cm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9 PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsK KwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFu ZGJ5LT5zdGFydDsKKworCisKKyMgTWFrZSBzdXJlIHRoYXQgV0FJVCBGT1IgTFNOIHdvcmtzOiBh ZGQgbmV3IGNvbnRlbnQgdG8gcHJpbWFyeSBhbmQgbWVtb3JpemUKKyMgcHJpbWFyeSdzIG5ldyBM U04sIHRoZW4gd2FpdCBmb3IgcHJpbWFyeSdzIExTTiBvbiBzdGFuZGJ5LiBQcm92ZSB0aGF0IFdB SVQgaXMKKyMgYWJsZSB0byBzZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQg aXQgaWYgZ2l2ZW4gbm8gd2FpdCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmll cygxMSwgMjApKSIpOworbXkgJGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJXQUlUIEZPUiBMU04gJyRsc24xJyIpOworCisjIEdldCB0aGUg Y3VycmVudCBMU04gb24gc3RhbmRieSBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMgcHJp bWFyeSdzIExTTgorbXkgJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRjb21w YXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOwor b2soJGNvbXBhcmVfbHNucyBlcSAwLCAic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExTTiBhcyBw cmltYXJ5IGFmdGVyIFdBSVQiKTsKKworCisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyB3b3JrIG9u IHRoZWlyIG93biBhbmQgbGV0IHVzIHdhaXQgZm9yIHNwZWNpZmllZCB0aW1lICgxcykKK215ICRj dXJyZW50X3RpbWUgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBub3coKSIpOworbXkgJG9uZV9zZWNvbmQgPSAxMDAwOyAjIGluIG1pbGxpc2Vjb25kcworbXkg JHN0YXJ0X3RpbWUgPSB0aW1lKCk7CisjIFdoaWxlIHdlJ3JlIGF0IGl0LCBhbHNvIG1ha2Ugc3Vy ZSB0aGF0IHRoZSBzeW50YXggd2l0aCBjb21tYXMgd29ya3MgZmluZSBhbmQKKyMgdGhhdCBieSBk ZWZhdWx0IHdlIHVzZSBXQUlUIEZPUiBBTEwgc3RyYXRlZ3ksIHdoaWNoIG1lYW5zIHdhaXRpbmcg Zm9yIG1heCB0aW1lCiskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiV0FJ VCBGT1IgVElNRU9VVCAkb25lX3NlY29uZCwgVElNRVNUQU1QICckY3VycmVudF90aW1lJyIpOwor bXkgJHRpbWVfd2FpdGVkID0gKHRpbWUoKSAtICRzdGFydF90aW1lKSAqIDEwMDA7ICMgY29udmVy dCB0byBtaWxsaXNlY29uZHMKK29rKCR0aW1lX3dhaXRlZCA+PSAkb25lX3NlY29uZCwgIldBSVQg Rk9SIFRJTUVPVVQgd2FpdHMgZm9yIGVub3VnaCB0aW1lIik7CisKKyMgTm93LCBjaGVjayB0aGF0 IHRpbWVvdXRzIHdvcmsgYXMgZXhwZWN0ZWQgd2hlbiB3YWl0aW5nIGZvciBMU04KKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoMjEsIDMwKSkiKTsKK215ICRsc24yID0gJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsK K215ICRyZWFjaGVkX2xzbiA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJXQUlUIEZPUiBMU04gJyRsc24yJyBUSU1FT1VUIDEiKTsKK29rKCRyZWFjaGVkX2xzbiBlcSAi ZiIsICJXQUlUIGRvZXNuJ3QgcmVhY2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1l Iik7CisKKworCisjIFdlIG5lZWQgdG8gY2hlY2sgdGhhdCBXQUlUIHdvcmtzIGZpbmUgaW5zaWRl IHRyYW5zYWN0aW9ucy4gRm9yIHRoYXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0aGF0IHdpbGwg Y29ycmVzcG9uZCB0byB0d28gZGlmZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRhYmxlLgorJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVz dCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygzMSwgNDApKSIpOworbXkgJGxzbjMgPSAkbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24o KSIpOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRP IHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkgJGxzbjQg PSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50 X3dhbF9sc24oKSIpOworCisjIEJlZm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwgd2FpdCBmb3Ig TFNOIHdoaWNoIGVuc3VyZXMgYSBtYXggdmFsdWUgb2YgNDAuCisjIEluc2lkZSB0aGUgdHJhbnNh Y3Rpb24sIHdhaXQgZm9yIExTTiB0aGF0IGVuc3VyZXMgYSBtYXggdmFsdWUgb2YgNTAuCisjIER1 ZSB0byBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFELCB3ZSBzaG91bGQgTk9UIHNlZSB0 aGUgbmV3IG1heCB2YWx1ZS4KK215ICRzdGFuZGJ5X3Jlc3VsdHMgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisJV0FJVCBGT1IgTFNOICckbHNuMyc7CisJQkVH SU4gVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKKwlTRUxFQ1Qg bWF4KGEpIEZST00gd2FpdF90ZXN0OworCVdBSVQgRk9SIExTTiAnJGxzbjQnOworCVNFTEVDVCBw Z19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsK KwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3ZSBpbmRlZWQgcmVhY2ggcHJpbWFy eSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uCisjIEZvciB0aGF0LCBjaGVjayB0 aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiByZXR1cm5lZCB0aGF0IExTTi4KK215 ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvJGxzbjQvOworb2soJGxh c3RfbHNuX3JlYWNoZWQsICJXQUlUIEZPUiBMU04gd29ya3MgaW5zaWRlIGEgdHJhbnNhY3Rpb24i KTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGRvZXNuJ3QgYnJlYWsgYW5kIHNob3cgdXMg dGhlIG5ldyBtYXggdmFsdWUgYWZ0ZXIgV0FJVC4KKyMgRm9yIHRoYXQsIG1ha2Ugc3VyZSB0aGF0 IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4gdGhlIHJlc3VsdHMuCitt eSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7CitvaygkY291bnQgZXEg MiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdldCBicm9rZW4gZHVlIHRv IFdBSVQiKTsKKworCisKKyMgR2V0IG11bHRpcGxlIExTTnMgZm9yIHRlc3RpbmcgV0FJVCBGT1Ig QU5ZIC8gV0FJVCBGT1IgQUxMCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDUxLCA2MCkp Iik7CitteSAkbHNuNSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVz KDYxLCA3MDAwMCkpIik7CitteSAkbHNuNiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2Vu ZXJhdGVfc2VyaWVzKDYxLCA4MDAwMDApKSIpOworbXkgJGxzbjcgPSAkbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworCisj IENoZWNrIHRoYXQgV0FJVCBGT1IgQU5ZIHdvcmtzIGZpbmUKKyRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBBTlkgTFNOICckbHNuNScgTFNOICckbHNuNicg TFNOICckbHNuNyciKTsKKyRsc25fc3RhbmRieSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIik7CiskY29tcGFy ZV9sc25zID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBw Z19sc25fY21wKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuNSc6OnBnX2xzbikiKTsKK29r KCRjb21wYXJlX2xzbnMgZ2UgMCwKKwkiV0FJVCBGT1IgQU5ZIG1ha2VzIHVzIHJlYWNoIGF0IGxl YXN0IHRoZSBtaW5pbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CiskY29tcGFyZV9sc25zID0gJG5v ZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21wKCck bHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuNyc6OnBnX2xzbikiKTsKKyMgVE9ETzogQ291bGQg dGhpcyBzb21laG93IGZhaWwgZHVlIHRvIHRoZSBtYWNoaW5lIGJlaW5nIHZlcnkgZmFzdCBhdCBh cHBseWluZyBMU04/CitvaygkY29tcGFyZV9sc25zIGx0IDAsCisJIldBSVQgRk9SIEFOWSBkaWRu J3QgbWFrZSB1cyByZWFjaCB0aGUgbWF4aW11bSBMU04gZnJvbSB0aGUgbGlzdCIpOworCisjIENo ZWNrIHRoYXQgV0FJVCBGT1IgQUxMIHdvcmtzIGZpbmUKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBBTEwgTFNOICckbHNuNScsIExTTiAnJGxzbjYnLCBM U04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJl X2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBn X2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc243Jzo6cGdfbHNuKSIpOworb2so JGNvbXBhcmVfbHNucyBlcSAwLAorCSJXQUlUIEZPUiBBTEwgbWFrZXMgdXMgcmVhY2ggdGhlIG1h eGltdW0gTFNOIGZyb20gdGhlIGxpc3QiKTsKKworCisKKyRub2RlX3N0YW5kYnktPnN0b3A7Cisk bm9kZV9wcmltYXJ5LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7Cg== --=_9e5761af1f6bb1ab20188d68f4f13c41 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_proc_v1.patch Content-Disposition: attachment; filename=wait_proc_v1.patch; size=16583 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggZGJlOTM5NDc2 Mi4uNDIyYmIxZWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJiYWNrdXAvYmFzZWJhY2t1cC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3Bh Y2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVf dXRpbHMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAg LTE3NTIsNiArMTc1MywxNSBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCQlicmVhazsK IAkJCX0KIAorCQkJLyoKKwkJCSAqIElmIHdlIHJlcGxheWVkIGFuIExTTiB0aGF0IHNvbWVvbmUg d2FzIHdhaXRpbmcgZm9yLAorCQkJICogc2V0IGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSBhcnJh eSB0byBub3RpZnkgdGhlIHdhaXRlci4KKwkJCSAqLworCQkJaWYgKFhMb2dSZWNvdmVyeUN0bC0+ bGFzdFJlcGxheWVkRW5kUmVjUHRyID49IEdldE1pbldhaXRlZExTTigpKQorCQkJeworCQkJCVdh aXRTZXRMYXRjaChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0cik7CisJCQl9 CisKIAkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwgcmVjb3JkICovCiAJCQly ZWNvcmQgPSBSZWFkUmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBMT0csIGZhbHNlLCByZXBsYXlUTEkp OwogCQl9IHdoaWxlIChyZWNvcmQgIT0gTlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDQ4 ZjczNDhmOTEuLmQ4ZjY5NjVkOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01h a2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCkBAIC02MSw2ICs2MSw3 IEBAIE9CSlMgPSBcCiAJdmFjdXVtLm8gXAogCXZhY3V1bXBhcmFsbGVsLm8gXAogCXZhcmlhYmxl Lm8gXAotCXZpZXcubworCXZpZXcubyBcCisJd2FpdC5vCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGly KS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3dhaXQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi4zZjk0ZWY0ZWMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvd2FpdC5jCkBAIC0wLDAgKzEsMjkxIEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiB3YWl0LmMKKyAqCSAgSW1wbGVtZW50cyB3YWl0bHNuLCB3aGljaCBhbGxvd3Mg d2FpdGluZyBmb3IgZXZlbnRzIHN1Y2ggYXMKKyAqCSAgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVk IG9uIHJlcGxpY2EuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9zdGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlIDxtYXRoLmg+CisKKyNpbmNs dWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNp bmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCisj aW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBn c3RhdC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYmFja2VuZGlkLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRp bHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisKKy8qIEFkZCB0byBz aGFyZWQgbWVtb3J5IGFycmF5ICovCitzdGF0aWMgdm9pZCBBZGRXYWl0ZWRMU04oWExvZ1JlY1B0 ciBsc25fdG9fd2FpdCk7CisKKy8qIFNoYXJlZCBtZW1vcnkgc3RydWN0dXJlICovCit0eXBlZGVm IHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7CisJcGdfYXRvbWljX3VpbnQ2NCBtaW5f bHNuOyAvKiBYTG9nUmVjUHRyIG9mIG1pbmltYWwgd2FpdGVkIGZvciBMU04gKi8KKwlzbG9ja190 CQltdXRleDsKKwkvKiBMU05zIHRoYXQgZGlmZmVyZW50IGJhY2tlbmRzIGFyZSB3YWl0aW5nICov CisJWExvZ1JlY1B0cglsc25bRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gV2FpdFN0YXRlOwor CitzdGF0aWMgV2FpdFN0YXRlICpzdGF0ZTsKKworLyoKKyAqIEFkZCB0aGUgd2FpdCBldmVudCBv ZiB0aGUgY3VycmVudCBiYWNrZW5kIHRvIHNoYXJlZCBtZW1vcnkgYXJyYXkKKyAqLworc3RhdGlj IHZvaWQKK0FkZFdhaXRlZExTTihYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2Nr QWNxdWlyZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeUJh Y2tlbmRJZCkKKwkJc3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBNeUJhY2tlbmRJZDsKKworCXN0YXRl LT5sc25bTXlCYWNrZW5kSWRdID0gbHNuX3RvX3dhaXQ7CisKKwlpZiAobHNuX3RvX3dhaXQgPCBz dGF0ZS0+bWluX2xzbi52YWx1ZSkKKwkJc3RhdGUtPm1pbl9sc24udmFsdWUgPSBsc25fdG9fd2Fp dDsKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUg d2FpdCBldmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIGZyb20gdGhlIHNoYXJlZCBtZW1vcnkg YXJyYXkuCisgKi8KK3ZvaWQKK0RlbGV0ZVdhaXRlZExTTih2b2lkKQoreworCWludAkJCWk7CisJ WExvZ1JlY1B0cglsc25fdG9fZGVsZXRlOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0 ZXgpOworCisJbHNuX3RvX2RlbGV0ZSA9IHN0YXRlLT5sc25bTXlCYWNrZW5kSWRdOworCXN0YXRl LT5sc25bTXlCYWNrZW5kSWRdID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkvKiBJZiB3ZSBhcmUg ZGVsZXRpbmcgdGhlIG1pbmltYWwgTFNOLCB0aGVuIGNob29zZSB0aGUgbmV4dCBtaW5fbHNuICov CisJaWYgKGxzbl90b19kZWxldGUgIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJbHNuX3RvX2Rl bGV0ZSA9PSBzdGF0ZS0+bWluX2xzbi52YWx1ZSkKKwl7CisJCXN0YXRlLT5taW5fbHNuLnZhbHVl ID0gUEdfVUlOVDY0X01BWDsKKwkJZm9yIChpID0gMjsgaSA8PSBzdGF0ZS0+YmFja2VuZF9tYXhp ZDsgaSsrKQorCQkJaWYgKHN0YXRlLT5sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIgJiYKKwkJ CQlzdGF0ZS0+bHNuW2ldIDwgc3RhdGUtPm1pbl9sc24udmFsdWUpCisJCQkJc3RhdGUtPm1pbl9s c24udmFsdWUgPSBzdGF0ZS0+bHNuW2ldOworCX0KKworCS8qIElmIGRlbGV0aW5nIGZyb20gdGhl IGVuZCBvZiB0aGUgYXJyYXksIHNob3J0ZW4gdGhlIGFycmF5J3MgdXNlZCBwYXJ0ICovCisJaWYg KHN0YXRlLT5iYWNrZW5kX21heGlkID09IE15QmFja2VuZElkKQorCQlmb3IgKGkgPSAoTXlCYWNr ZW5kSWQpOyBpID49IDI7IGktLSkKKwkJCWlmIChzdGF0ZS0+bHNuW2ldICE9IEludmFsaWRYTG9n UmVjUHRyKQorCQkJeworCQkJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gaTsKKwkJCQlicmVhazsK KwkJCX0KKworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIFJl cG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIFdhaXRTdGF0ZQor ICovCitTaXplCitXYWl0U2htZW1TaXplKHZvaWQpCit7CisJU2l6ZQkJc2l6ZTsKKworCXNpemUg PSBvZmZzZXRvZihXYWl0U3RhdGUsIGxzbik7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9z aXplKE1heEJhY2tlbmRzICsgMSwgc2l6ZW9mKFhMb2dSZWNQdHIpKSk7CisJcmV0dXJuIHNpemU7 Cit9CisKKy8qCisgKiBJbml0aWFsaXplIGFuIGFycmF5IG9mIGV2ZW50cyB0byB3YWl0IGZvciBp biBzaGFyZWQgbWVtb3J5CisgKi8KK3ZvaWQKK1dhaXRTaG1lbUluaXQodm9pZCkKK3sKKwlib29s CQlmb3VuZDsKKwl1aW50MzIJCWk7CisKKwlzdGF0ZSA9IChXYWl0U3RhdGUgKikgU2htZW1Jbml0 U3RydWN0KCJwZ193YWl0X2xzbiIsCisJCQkJCQkJCQkJICBXYWl0U2htZW1TaXplKCksCisJCQkJ CQkJCQkJICAmZm91bmQpOworCWlmICghZm91bmQpCisJeworCQlTcGluTG9ja0luaXQoJnN0YXRl LT5tdXRleCk7CisKKwkJZm9yIChpID0gMDsgaSA8IChNYXhCYWNrZW5kcyArIDEpOyBpKyspCisJ CQlzdGF0ZS0+bHNuW2ldID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkJc3RhdGUtPmJhY2tlbmRf bWF4aWQgPSAwOworCQlzdGF0ZS0+bWluX2xzbi52YWx1ZSA9IFBHX1VJTlQ2NF9NQVg7CisJfQor fQorCisvKgorICogU2V0IGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWduYWwgdGhhdCBu ZXcgTFNOIGhhcyBiZWVuIHJlcGxheWVkCisgKi8KK3ZvaWQKK1dhaXRTZXRMYXRjaChYTG9nUmVj UHRyIGN1cl9sc24pCit7CisJdWludDMyCQlpOworCWludAkJCWJhY2tlbmRfbWF4aWQ7CisJUEdQ Uk9DCSAgICpiYWNrZW5kOworCisJU3BpbkxvY2tBY3F1aXJlKCZzdGF0ZS0+bXV0ZXgpOworCWJh Y2tlbmRfbWF4aWQgPSBzdGF0ZS0+YmFja2VuZF9tYXhpZDsKKworCWZvciAoaSA9IDI7IGkgPD0g YmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2VuZCA9IEJhY2tlbmRJZEdldFByb2MoaSk7 CisKKwkJaWYgKGJhY2tlbmQgJiYgc3RhdGUtPmxzbltpXSAhPSAwICYmCisJCQlzdGF0ZS0+bHNu W2ldIDw9IGN1cl9sc24pCisJCXsKKwkJCVNldExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOwor CQl9CisJfQorCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKK30KKworLyoKKyAqIEdl dCBtaW5pbWFsIExTTiB0aGF0IHNvbWVvbmUgd2FpdHMgZm9yCisgKi8KK1hMb2dSZWNQdHIKK0dl dE1pbldhaXRlZExTTih2b2lkKQoreworCXJldHVybiBzdGF0ZS0+bWluX2xzbi52YWx1ZTsKK30K KworLyoKKyAqIE9uIFdBSVQgdXNlIGEgbGF0Y2ggdG8gd2FpdCB0aWxsIExTTiBpcyByZXBsYXll ZCwKKyAqIHBvc3RtYXN0ZXIgZGllcyBvciB0aW1lb3V0IGhhcHBlbnMuIFRpbWVvdXQgaXMgc3Bl Y2lmaWVkIGluIG1pbGxpc2Vjb25kcy4KKyAqIFJldHVybnMgdHJ1ZSBpZiBMU04gd2FzIHJlYWNo ZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbAorV2FpdFV0aWxpdHkoWExvZ1JlY1B0 ciB0YXJnZXRfbHNuLCBjb25zdCBpbnQgdGltZW91dF9tcykKK3sKKwlYTG9nUmVjUHRyCWN1cl9s c24gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWludAkJCWxhdGNoX2V2ZW50czsKKwlm bG9hdDgJCWVuZHRpbWU7CisJYm9vbAkJcmVzID0gZmFsc2U7CisJYm9vbAkJd2FpdF9mb3JldmVy ID0gKHRpbWVvdXRfbXMgPD0gMCk7CisKKwkvKgorCSAqIEluIHRyYW5zYWN0aW9ucywgdGhhdCBo YXZlIGlzb2xhdGlvbiBsZXZlbCByZXBlYXRhYmxlIHJlYWQgb3IgaGlnaGVyCisJICogd2FpdGxz biBjcmVhdGVzIGEgc25hcHNob3QgaWYgY2FsbGVkIGZpcnN0IGluIGEgYmxvY2ssIHdoaWNoIGNh bgorCSAqIGxlYWQgdGhlIHRyYW5zYWN0aW9uIHRvIHdvcmtpbmcgaW5jb3JyZWN0bHkKKwkgKi8K KworCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSAmJiBYYWN0SXNvTGV2ZWwgIT0gWEFDVF9SRUFE X0NPTU1JVFRFRCkgeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJZXJybXNnKCJXYWl0bHNuIG1h eSB3b3JrIGluY29ycmVjdGx5IGluIHRoaXMgaXNvbGF0aW9uIGxldmVsIiksCisJCQkJZXJyaGlu dCgiQ2FsbCB3YWl0bHNuIGJlZm9yZSBzdGFydGluZyB0aGUgdHJhbnNhY3Rpb24iKSk7CisJfQor CisJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyB0aW1lb3V0X21zIC8gMTAwMC4wOworCisJbGF0 Y2hfZXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVB VEg7CisKKwkvKiBDaGVjayBpZiB3ZSBhbHJlYWR5IHJlYWNoZWQgdGhlIG5lZWRlZCBMU04gKi8K KwlpZiAoY3VyX2xzbiA+PSB0YXJnZXRfbHNuKQorCQlyZXR1cm4gdHJ1ZTsKKworCUFkZFdhaXRl ZExTTih0YXJnZXRfbHNuKTsKKworCWZvciAoOzspCisJeworCQlpbnQJCQlyYzsKKwkJZmxvYXQ4 CQl0aW1lX2xlZnQgPSAwOworCQlsb25nCQl0aW1lX2xlZnRfbXMgPSAwOworCisJCXRpbWVfbGVm dCA9IGVuZHRpbWUgLSBHZXROb3dGbG9hdCgpOworCisJCS8qIFVzZSAxMDAgbXMgYXMgdGhlIGRl ZmF1bHQgdGltZW91dCB0byBjaGVjayBmb3IgaW50ZXJydXB0cyAqLworCQlpZiAod2FpdF9mb3Jl dmVyIHx8IHRpbWVfbGVmdCA8IDAgfHwgdGltZV9sZWZ0ID4gMC4xKQorCQkJdGltZV9sZWZ0X21z ID0gMTAwOworCQllbHNlCisJCQl0aW1lX2xlZnRfbXMgPSAobG9uZykgY2VpbCh0aW1lX2xlZnQg KiAxMDAwLjApOworCisJCS8qIElmIGludGVycnVwdCwgTG9ja0Vycm9yQ2xlYW51cCgpIHdpbGwg ZG8gRGVsZXRlV2FpdGVkTFNOKCkgZm9yIHVzICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisKKwkJLyogSWYgcG9zdG1hc3RlciBkaWVzLCBmaW5pc2ggaW1tZWRpYXRlbHkgKi8KKwkJaWYg KCFQb3N0bWFzdGVySXNBbGl2ZSgpKQorCQkJYnJlYWs7CisKKwkJcmMgPSBXYWl0TGF0Y2goTXlM YXRjaCwgbGF0Y2hfZXZlbnRzLCB0aW1lX2xlZnRfbXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfQ0xJ RU5UX1JFQUQpOworCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJaWYgKHJjICYgV0xfTEFU Q0hfU0VUKQorCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisKKwkJaWYg KHJjICYgV0xfVElNRU9VVCkKKwkJeworCQkJY3VyX2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIo TlVMTCk7CisJCQkvKiBJZiB0aGUgdGltZSBzcGVjaWZpZWQgYnkgdXNlciBoYXMgcGFzc2VkLCBz dG9wIHdhaXRpbmcgKi8KKwkJCXRpbWVfbGVmdCA9IGVuZHRpbWUgLSBHZXROb3dGbG9hdCgpOwor CQkJaWYgKCF3YWl0X2ZvcmV2ZXIgJiYgdGltZV9sZWZ0IDw9IDAuMCkKKwkJCQlicmVhazsKKwkJ fQorCisJCS8qIElmIExTTiBoYXMgYmVlbiByZXBsYXllZCAqLworCQlpZiAodGFyZ2V0X2xzbiA8 PSBjdXJfbHNuKQorCQkJYnJlYWs7CisJfQorCisJRGVsZXRlV2FpdGVkTFNOKCk7CisKKwlpZiAo Y3VyX2xzbiA8IHRhcmdldF9sc24pCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkgZXJybXNnKCJM U04gd2FzIG5vdCByZWFjaGVkIiksCisJCQkJIGVycmhpbnQoIlRyeSB0byBpbmNyZWFzZSB3YWl0 IHRpbWUuIikpOworCWVsc2UKKwkJcmVzID0gdHJ1ZTsKKworCXJldHVybiByZXM7Cit9CisKK0Rh dHVtCitwZ193YWl0bHNuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJWExvZ1JlY1B0cgkJdHJnX2xz biA9IFBHX0dFVEFSR19MU04oMCk7CisJdWludDY0X3QJCWRlbGF5ID0gUEdfR0VUQVJHX0lOVDMy KDEpOworCisJUEdfUkVUVVJOX0JPT0woV2FpdFV0aWxpdHkodHJnX2xzbiwgZGVsYXkpKTsKK30K KworRGF0dW0KK3BnX3dhaXRsc25faW5maW5pdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlYTG9n UmVjUHRyCQl0cmdfbHNuID0gUEdfR0VUQVJHX0xTTigwKTsKKworCVBHX1JFVFVSTl9CT09MKFdh aXRVdGlsaXR5KHRyZ19sc24sIDApKTsKK30KKworRGF0dW0KK3BnX3dhaXRsc25fbm9fd2FpdChQ R19GVU5DVElPTl9BUkdTKQoreworCVhMb2dSZWNQdHIJCXRyZ19sc24gPSBQR19HRVRBUkdfTFNO KDApOworCisJUEdfUkVUVVJOX0JPT0woV2FpdFV0aWxpdHkodHJnX2xzbiwgMSkpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggZjY0NDZkYTJkNi4uZTE0OGMwZWEy NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCkBAIC01OSw2ICs1OSw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf YXV0aGlkLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvd2FpdC5oIgogI2luY2x1ZGUgImNvbW1vbi9pcC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK ICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDhm MWRlZDczMzguLjc2MGQ3NjAzNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTI1LDYgKzI1 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3ByZWZldGNoZXIuaCIKICNpbmNsdWRlICJhY2Nl c3MveGxvZ3JlY292ZXJ5LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy93YWl0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCkBAIC0xNDIsNiArMTQz LDcgQEAgQ2FsY3VsYXRlU2htZW1TaXplKGludCAqbnVtX3NlbWFwaG9yZXMpCiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFN5bmNTY2FuU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RhdHNTaG1lbVNp emUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZkZWYg RVhFQ19CQUNLRU5ECiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5U2l6 ZSgpKTsKICNlbmRpZgpAQCAtMjk1LDYgKzI5NywxMSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRT ZW1hcGhvcmVzKHZvaWQpCiAJQXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVtSW5pdCgpOwog CisJLyoKKwkgKiBJbml0IGFycmF5IG9mIGV2ZW50cyBmb3IgdGhlIHdhaXQgY2xhdXNlIGluIHNo YXJlZCBtZW1vcnkKKwkgKi8KKwlXYWl0U2htZW1Jbml0KCk7CisKICNpZmRlZiBFWEVDX0JBQ0tF TkQKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCAyMmI0Mjc4NjEwLi4zMTNkYTBi MWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy93YWl0LmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1h c3Rlci9hdXRvdmFjdXVtLmgiCkBAIC03MDQsNiArNzA1LDkgQEAgTG9ja0Vycm9yQ2xlYW51cCh2 b2lkKQogCiAJQWJvcnRTdHJvbmdMb2NrQWNxdWlyZSgpOwogCisJLyogSWYgd2FpdGxzbiB3YXMg aW50ZXJydXB0ZWQsIHRoZW4gc3RvcCB3YWl0aW5nIGZvciB0aGF0IExTTiAqLworCURlbGV0ZVdh aXRlZExTTigpOworCiAJLyogTm90aGluZyB0byBkbyBpZiB3ZSB3ZXJlbid0IHdhaXRpbmcgZm9y IGEgbG9jayAqLwogCWlmIChsb2NrQXdhaXRlZCA9PSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9taXNjLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWlzYy5j CmluZGV4IDIyMGRkYjhjMDEuLmZkNzMxNTk1YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9taXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21pc2MuYwpAQCAtMzg0 LDggKzM4NCw2IEBAIHBnX3NsZWVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogbGVzcyB0aGFuIHRo ZSBzcGVjaWZpZWQgdGltZSB3aGVuIFdhaXRMYXRjaCBpcyB0ZXJtaW5hdGVkIGVhcmx5IGJ5IGEK IAkgKiBub24tcXVlcnktY2FuY2VsaW5nIHNpZ25hbCBzdWNoIGFzIFNJR0hVUC4KIAkgKi8KLSNk ZWZpbmUgR2V0Tm93RmxvYXQoKQkoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8gMTAw MDAwMC4wKQotCiAJZW5kdGltZSA9IEdldE5vd0Zsb2F0KCkgKyBzZWNzOwogCiAJZm9yICg7OykK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY2YjczYzM5MDAuLjk5YjBjMDJjMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTE5MjcsNCArMTE5MjcsMTkgQEAKICAgcHJvcmV0dHlw ZSA9PiAnYnl0ZWEnLCBwcm9hcmd0eXBlcyA9PiAncGdfYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFy eScsCiAgIHByb3NyYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfc3VtbWFyeV9zZW5kJyB9LAogCit7 IG9pZCA9PiAnMTYzODcnLCBkZXNjciA9PiAnd2FpdCBmb3IgTFNOIHVudGlsIHRpbWVvdXQnLAor ICBwcm9uYW1lID0+ICdwZ193YWl0bHNuJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5 cGVzID0+ICdwZ19sc24gaW50OCcsCisgIHByb2FyZ25hbWVzID0+ICd7dHJnX2xzbixkZWxheX0n LAorICBwcm9zcmMgPT4gJ3BnX3dhaXRsc24nIH0sCisKK3sgb2lkID0+ICcxNjM4OCcsIGRlc2Ny ID0+ICd3YWl0IGZvciBMU04gZm9yIGFuIGluZmluaXRlIHRpbWUnLAorICBwcm9uYW1lID0+ICdw Z193YWl0bHNuX2luZmluaXRlJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ ICdwZ19sc24nLAorICBwcm9hcmduYW1lcyA9PiAne3RyZ19sc259JywKKyAgcHJvc3JjID0+ICdw Z193YWl0bHNuX2luZmluaXRlJyB9LAorCit7IG9pZCA9PiAnMTYzODknLCBkZXNjciA9PiAnd2Fp dCBmb3IgTFNOIHdpdGggbm8gdGltZW91dCcsCisgIHByb25hbWUgPT4gJ3BnX3dhaXRsc25fbm9f d2FpdCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAncGdfbHNuJywKKyAg cHJvYXJnbmFtZXMgPT4gJ3t0cmdfbHNufScsCisgIHByb3NyYyA9PiAncGdfd2FpdGxzbl9ub193 YWl0JyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmggYi9z cmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uZmQyMWU0MzQxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3dhaXQuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3 YWl0LmgKKyAqCSAgcHJvdG90eXBlcyBmb3IgY29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjAsIFJlZ2VudHMgb2YgUG9zdGdy ZXNQcm8KKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2lmbmRlZiBXQUlUX0gKKyNkZWZpbmUgV0FJVF9ICisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKyNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJz ZW5vZGVzLmgiCisKK2V4dGVybiBib29sIFdhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25z dCBpbnQgdGltZW91dF9tcyk7CitleHRlcm4gU2l6ZSBXYWl0U2htZW1TaXplKHZvaWQpOworZXh0 ZXJuIHZvaWQgV2FpdFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTZXRMYXRjaChY TG9nUmVjUHRyIGN1cl9sc24pOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0TWluV2FpdGVkTFNOKHZv aWQpOworZXh0ZXJuIHZvaWQgRGVsZXRlV2FpdGVkTFNOKHZvaWQpOworCisjZW5kaWYJCQkJCQkJ LyogV0FJVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCmluZGV4IGVkZDU5ZGM0MzIuLmRiMjkyNmY5 NjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3RpbWVzdGFtcC5oCkBAIC0xNDAsNCArMTQwLDYgQEAgZXh0ZXJuIGludAlk YXRlMmlzb3llYXJkYXkoaW50IHllYXIsIGludCBtb24sIGludCBtZGF5KTsKIAogZXh0ZXJuIGJv b2wgVGltZXN0YW1wVGltZXN0YW1wVHpSZXF1aXJlc1Jld3JpdGUodm9pZCk7CiAKKyNkZWZpbmUg R2V0Tm93RmxvYXQoKSAoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8gMTAwMDAwMC4w KQorCiAjZW5kaWYJCQkJCQkJLyogVElNRVNUQU1QX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM0X3dhaXRsc24ucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF93YWl0 bHNuLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjU0YTIwZTA4OWMK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF93YWl0bHNuLnBsCkBA IC0wLDAgKzEsNzQgQEAKKyMgQ2hlY2tzIHdhaXRsc24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fybmlu Z3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUK K215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1h cnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxKTsKKyRub2Rl X3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21lIGNvbnRlbnQgYW5kIHRha2UgYSBiYWNrdXAK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgd2Fp dF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYSIpOworbXkgJGJhY2t1 cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1l KTsKKworIyBVc2luZyB0aGUgYmFja3VwLCBjcmVhdGUgYSBzdHJlYW1pbmcgc3RhbmRieSB3aXRo IGEgMSBzZWNvbmQgZGVsYXkKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxheSAgICAgICAgPSAxOworJG5vZGVfc3Rh bmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxheX1zJworXSk7 Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworIyBDaGVjayB0aGF0IHRpbWVvdXRzIG1ha2UgdXMg d2FpdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lICgxcyBoZXJlKQorbXkgJGN1cnJlbnRfdGltZSA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7Citt eSAkdHdvX3NlY29uZHMgPSAyMDAwOyAjIGluIG1pbGxpc2Vjb25kcworbXkgJHN0YXJ0X3RpbWUg PSB0aW1lKCk7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBnX3dhaXRsc24oJzAvRkZGRkZGRkYnLCAkdHdvX3NlY29uZHMpIik7CitteSAkdGltZV93YWl0 ZWQgPSAodGltZSgpIC0gJHN0YXJ0X3RpbWUpICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vj b25kcworb2soJHRpbWVfd2FpdGVkID49ICR0d29fc2Vjb25kcywgIndhaXRsc24gd2FpdHMgZm9y IGVub3VnaCB0aW1lIik7CisKKyMgQ2hlY2sgdGhhdCB0aW1lb3V0cyBsZXQgdXMgc3RvcCB3YWl0 aW5nIHJpZ2h0IGF3YXksIGJlZm9yZSByZWFjaGluZyB0YXJnZXQgTFNOCiskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAo Z2VuZXJhdGVfc2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAo JHJldCwgJG91dCwgJGVycikgPSAkbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwZ193YWl0bHNuKCckbHNuMScsIDEpIik7CisKK29rKCRyZXQgPT0gMCwgInplcm8gcmV0 dXJuIHZhbHVlIHdoZW4gZmFpbGVkIHRvIHdhaXRsc24gb24gc3RhbmRieSIpOworb2soJGVyciA9 fiAvV0FSTklORzogIExTTiB3YXMgbm90IHJlYWNoZWQvLAorCSJjb3JyZWN0IGVycm9yIG1lc3Nh Z2Ugd2hlbiBmYWlsZWQgdG8gd2FpdGxzbiBvbiBzdGFuZGJ5Iik7Citvaygkb3V0IGVxICJmIiwg ImlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lLCBXQUlUIGRvZXNuJ3QgcmVhY2ggdGFyZ2V0 IExTTiIpOworCisKKyMgQ2hlY2sgdGhhdCB3YWl0bHNuIHdvcmtzIGZpbmUgYW5kIHJlYWNoZXMg dGFyZ2V0IExTTiBpZiBnaXZlbiBubyB0aW1lb3V0CisKKyMgQWRkIGRhdGEgb24gcHJpbWFyeSwg bWVtb3JpemUgcHJpbWFyeSdzIGxhc3QgTFNOCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVz KDIxLCAzMCkpIik7CitteSAkbHNuMiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgV2FpdCBmb3IgaXQgdG8g YXBwZWFyIG9uIHJlcGxpY2EsIG1lbW9yaXplIHJlcGxpY2EncyBsYXN0IExTTgorJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ193YWl0bHNuX2luZmluaXRl KCckbHNuMicpIik7CitteSAkcmVhY2hlZF9sc24gPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworCisjIE1h a2Ugc3VyZSB0aGF0IHByaW1hcnkncyBhbmQgcmVwbGljYSdzIExTTnMgYXJlIHRoZSBzYW1lIGFm dGVyIFdBSVQKK215ICRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRyZWFjaGVkX2xzbic6OnBnX2xzbiwgJyRs c24yJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBlcSAwLAorCSJzdGFuZGJ5IHJlYWNo ZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgYmVmb3JlIHN0YXJ0aW5nIHRyYW5zYWN0aW9uIik7 CisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9wOworCitkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMjJlYTQyYzE2Yi4uNjQxM2E2 NjFjZiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTI5NjQsNiArMjk2NCw3IEBAIFdh aXRFdmVudElQQwogV2FpdEV2ZW50U2V0CiBXYWl0RXZlbnRUaW1lb3V0CiBXYWl0UE1SZXN1bHQK K1dhaXRTdGF0ZQogV2FsQ2xvc2VNZXRob2QKIFdhbENvbXByZXNzaW9uCiBXYWxMZXZlbAo= --=_9e5761af1f6bb1ab20188d68f4f13c41--