Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wNU6o-000qak-37 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2026 11:20:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wNU6m-00BuO6-28 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 May 2026 11:20:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wNU6m-00BuNx-0a for pgsql-hackers@lists.postgresql.org; Thu, 14 May 2026 11:20:04 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wNU6i-00000000YrY-3Sjr for pgsql-hackers@postgresql.org; Thu, 14 May 2026 11:20:03 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-835b78c3797so3388686b3a.2 for ; Thu, 14 May 2026 04:20:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778757599; cv=none; d=google.com; s=arc-20240605; b=FB2OUuMYi3Jnrc61wE2Z2bQbF14/VMXGI8cTz4/lCxqtqwU3xg5BpDj/aCG7Nqtd3c e6Rk24yXOvXS2n3iYJaiIzdibBsN7cnjk2eHnE0N3MajqX7HBaGBfBJcJ55wA+Fbr4yq P84RH9lP6jx/VQdid9p8CaofWgVxnt9EtxPyivs+CgcgUCD3cx5+zXtN1WPeNjUXwCRr Zw3mGZlWgykanqVOQ1BI4GAUISffv1n+YUhpJr9YvYaPp2oY2wzgOGXeh0D4EbHzt/WQ MpFfbyBp6Gz+Fxdhphi/p3OxxvnI2MSwsV6QIQ75BtjSx4/P6rhhSmzrrE+vhgtr8O5J L8Uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=qPMKmFtwnYo1RPLKM7KPanHCVsaUwCttiROIIeYnQUc=; fh=TrITgBU1GuoWNFvRISu4yJ8U3wtMgr+P8au5j1T1uB4=; b=K5wEF1bW1oGMtaCXmWRTw1GyIcPYjiVPj9YEloxPEXs4yxpyDAML77VkkfLsWFKPKB G28eQn+ky+A4EHySlNQY2jlNYVa52fVsVMkx6dQ4J+iU2vR6L/BZlWOnM7KwScRWdS5A 1OobqzJpMq3h0rJGw5XIXe96g1k0eTNQB8ygHukZJxQFjJE6S4c1rt1fViiWF3ucY4bj qTJKq1Q7V0/EvGLiflMt6R5u0f96bYEwSNyGxjHqTlP60BQYsco5GYLy8GspqT5sOYYf VGLXRZ+zy8dcjUFYZRZ4kfwx7cb2UyN3kMcrq3+799+wH9KZcAULo901zULhCFN2YYBZ uUtg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778757599; x=1779362399; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qPMKmFtwnYo1RPLKM7KPanHCVsaUwCttiROIIeYnQUc=; b=VnIThag0hIp0Ppu3yr/XEb6i+2TtqbUyc4V62o0F0qPyns85MSarrgvfSkWtA8/BzF 0JYNtFL7jIXEfFmKV/JGebVFYItLmGX9L9yqMv7F4fO6fnrBeB1LAlasitjn3AjQBMIT EFyczDYrHLIxbKGmRclMqGxP/aP22MbYcDvwyz6EjjhZGujeUrq4+vYwbNQotLG/40Z0 nSe2MuN4pJVX6MB81eAxMXn6i6Xgeeo/XZ9CibcMzQd8+JCaW/riCmleWArP86idjEQs ElH4t8ih3/ukSd1OEFcc699HZxRLHyUMeyS5bfKYPiFswSjs/wo48sq6EpGvqb2aCc1M juuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778757599; x=1779362399; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qPMKmFtwnYo1RPLKM7KPanHCVsaUwCttiROIIeYnQUc=; b=HUHMVHpwsh3wjBQifuU3dKShk9ZJjYxoaaH364xeFy0mhKGQaP0IiUnfYuVWlz6HV2 zHTr9NRT2mw0CJbBVpAlHiykHwqo7xnDVREkTqsxgiTSE3CkaolulSemiFYN38zXaVki /xZYjeyuFh1X5CcdsU+srxaWTfCkrHjxHXkasdOlsIGyJb1U9I3K9TectfJqaODe56Pv 1H6wgVCEfSi0KHKZ3cPL22VAUQKV/sn8hAVVAkDiNDd6BgkLfKoVKLkXoKRg9MBpHjqG GtODU6xOwBXC9UsDyOrdwO4d6gqQggiUd/8SndStgEW9IVCTy9lKvtdjSQFRedP5iu4H hhUA== X-Gm-Message-State: AOJu0YyrUgPpLYMnjtEgra22JdMffC7PFwrds7GkxBad5kI/81Z3DL9c RXp3dfrPLIWQgBFlCwFG3PwovQowPUzcmiclHZnI0pMOFXXtLG2an+pnebMayEarxIwyp9AgP2C iGRz1esimvBoTrChcaQILWzMxeaw5Q9k= X-Gm-Gg: Acq92OGki6RGemqacdzlYrkT90hWFGpYqDlD94try4zgRp3bTZ0KfpF526MZJVuNgDX EXvyMmPd7cLsD1kxcMoF/fyYYwdJCObI8QBfFom2O3rD6G34YZs2VlWsV99Zjs35EmUnFzTILy3 a+GuAXrycyB01EhM+xssEm2Gliw/0E8i/WOQLdKZISvxGGOBYZhXu/sh9AmQG3zQNUhcjqH9tiW SdXEWYEo76NTyO8BvDLV7KxfBe2Vs6X06ntg5OpWghSj/pgVqnua8uGPy0onelmt9TUvBDjKVW6 wSrTGL305J24tBsX3bGce/V0q8BwtNFJKqUAGoU= X-Received: by 2002:a05:6a00:3a1d:b0:82c:e09b:3f76 with SMTP id d2e1a72fcca58-83f042d1561mr7532000b3a.41.1778757598197; Thu, 14 May 2026 04:19:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: r314tive Date: Thu, 14 May 2026 16:19:45 +0500 X-Gm-Features: AVHnY4JLFxuMg44tXZZ57KZQt089Pi--iBx3iwGQMwxMFzwpkI3CcdfOOTotCsU Message-ID: Subject: [RFC PATCH v1] Add EXPLAIN ANALYZE wait event reporting To: Michael Paquier Cc: pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000c8721f0651c546d9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c8721f0651c546d9 Content-Type: multipart/alternative; boundary="000000000000c8721d0651c546d7" --000000000000c8721d0651c546d7 Content-Type: text/plain; charset="UTF-8" Following Michael Paquier's note about PostgreSQL list practice, this v1 resends the same patch content as v0 as a single email with the patch series attached. No code changes from v0. v0 thread: https://www.postgresql.org/message-id/cover.1778280923.git.tanswis42%40gmail.com This RFC prototype adds EXPLAIN (ANALYZE, WAITS), which reports completed wait intervals observed through pgstat_report_wait_start/end(). Statement-level wait events are counted once per active statement collector. Plan-node wait events use inclusive attribution, similar to EXPLAIN ANALYZE timing: a completed wait is attributed to every active plan node captured when the wait begins. Per-node wait times therefore must not be summed across plan nodes. The patch series is split as follows: 1. Add statement-level EXPLAIN WAITS reporting. 2. Aggregate statement-level EXPLAIN WAITS from parallel workers. 3. Attribute EXPLAIN WAITS to plan nodes. 4. Refine attribution semantics, documentation, and regression coverage. 5. Harden accumulator handling with fixed-size, allocation-free storage. 6. Hide accumulator internals from public headers. 7. Keep psql EXPLAIN option completion current. The main review questions are: - whether the option should be named WAITS or WAIT_EVENTS; - whether inclusive per-node attribution is the right initial semantics; - whether the fixed accumulator limit and overflow reporting are acceptable; - whether the disabled/enabled hot-path overhead is acceptable. Regards, Ilmar --000000000000c8721d0651c546d7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Following Michael Paquier's note about PostgreSQL list= practice, this v1
resends the same patch content as v0 as a single emai= l with the patch series
attached.

No code changes from v0.
v0 thread:
https://www.postgresql.org/message-id/cove= r.1778280923.git.tanswis42%40gmail.com

This RFC prototype adds E= XPLAIN (ANALYZE, WAITS), which reports completed wait
intervals observed= through pgstat_report_wait_start/end().

Statement-level wait events= are counted once per active statement collector.
Plan-node wait events = use inclusive attribution, similar to EXPLAIN ANALYZE
timing: a complete= d wait is attributed to every active plan node captured when
the wait be= gins.=C2=A0 Per-node wait times therefore must not be summed across plannodes.

The patch series is split as follows:

1. Add statemen= t-level EXPLAIN WAITS reporting.
2. Aggregate statement-level EXPLAIN WA= ITS from parallel workers.
3. Attribute EXPLAIN WAITS to plan nodes.
= 4. Refine attribution semantics, documentation, and regression coverage.5. Harden accumulator handling with fixed-size, allocation-free storage.6. Hide accumulator internals from public headers.
7. Keep psql EXPLAI= N option completion current.

The main review questions are:

-= whether the option should be named WAITS or WAIT_EVENTS;
- whether incl= usive per-node attribution is the right initial semantics;
- whether the= fixed accumulator limit and overflow reporting are acceptable;
- whethe= r the disabled/enabled hot-path overhead is acceptable.

Regards,
= Ilmar
--000000000000c8721d0651c546d7-- --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0001-Add-EXPLAIN-WAITS-statement-reporting.patch" Content-Disposition: attachment; filename="0001-Add-EXPLAIN-WAITS-statement-reporting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaylq0 RnJvbSA2ZmMwNDA0YWNiNjk3NjUwNjdjY2JmMWNhM2VlMGZkMzkyNDBmOWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MTAgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSAxLzddIEFkZCBFWFBMQUlOIFdBSVRTIHN0YXRlbWVudCByZXBvcnRpbmcKCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9leHBsYWluLnNnbWwgICAgICAgICAgIHwgIDE0ICsrKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgMTI5ICsrKysrKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3N0YXRlLmMgICAgfCAgIDggKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyB8IDE0OSArKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgfCAgMjkgKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgICB8ICAxNyArKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICB8ICAgNSArCiA4IGZpbGVzIGNoYW5nZWQsIDM0 OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvZXhwbGFpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKaW5kZXgg ZTk1ZTE5MDgxZTEuLjU0NjA1NjhhZjFkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2V4 cGxhaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbApAQCAtNDcsNiAr NDcsNyBAQCBFWFBMQUlOIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gPHJlcAogICAgIFNVTU1BUlkgWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBNRU1PUlkg WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0K ICAgICBJTyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNl YWJsZT4gXQorICAgIFdBSVRTIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xl YW48L3JlcGxhY2VhYmxlPiBdCiAgICAgRk9STUFUIHsgVEVYVCB8IFhNTCB8IEpTT04gfCBZQU1M IH0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTMxMCw2ICszMTEsMTkgQEAg Uk9MTEJBQ0s7CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPldBSVRTPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSW5jbHVkZSBleGFjdCBiYWNrZW5kLWxv Y2FsIHdhaXQgZXZlbnQgdGltaW5nIG9ic2VydmVkIGR1cmluZyBxdWVyeQorICAgICAgZXhlY3V0 aW9uLiAgV2FpdCBldmVudHMgYXJlIGdyb3VwZWQgYnkgd2FpdCBldmVudCB0eXBlIGFuZCB3YWl0 IGV2ZW50CisgICAgICBuYW1lLCBhbmQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHdhaXRzIGFuZCB0 b3RhbCB0aW1lIHNwZW50IHdhaXRpbmcuCisgICAgICBUaGlzIHBhcmFtZXRlciBtYXkgb25seSBi ZSB1c2VkIHdoZW4gPGxpdGVyYWw+QU5BTFlaRTwvbGl0ZXJhbD4gaXMgYWxzbworICAgICAgZW5h YmxlZC4gIEl0IGRlZmF1bHRzIHRvIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPi4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAxMTJjMTdiMGQ2NC4uMGI3Y2M1YzE1 YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJ1 dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdHlwY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAjaW5j bHVkZSAidXRpbHMveG1sLmgiCiAKIApAQCAtMTQ5LDYgKzE1MCw5IEBAIHN0YXRpYyBjb25zdCBj aGFyICpleHBsYWluX2dldF9pbmRleF9uYW1lKE9pZCBpbmRleElkKTsKIHN0YXRpYyBib29sIHBl ZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2Fn ZSk7CiBzdGF0aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBCdWZmZXJVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd193YWxfdXNhZ2UoRXhwbGFp blN0YXRlICplcywgY29uc3QgV2FsVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyBpbnQJd2FpdF9ldmVu dF91c2FnZV9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CitzdGF0aWMgdm9pZCBz aG93X3dhaXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywKKwkJCQkJCQkJICBjb25zdCBX YWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMo RXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAq bWVtX2NvdW50ZXJzKTsKIHN0YXRpYyB2b2lkIHNob3dfcmVzdWx0X3JlcGxhY2VtZW50X2luZm8o UmVzdWx0ICpyZXN1bHQsIEV4cGxhaW5TdGF0ZSAqZXMpOwpAQCAtNTEwLDYgKzUxNCw4IEBAIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAlpbnQJCQllZmxhZ3M7CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRp b24gPSAwOwogCVNlcmlhbGl6ZU1ldHJpY3Mgc2VyaWFsaXplTWV0cmljcyA9IHswfTsKKwlXYWl0 RXZlbnRVc2FnZSB3YWl0RXZlbnRVc2FnZTsKKwlXYWl0RXZlbnRVc2FnZSAqd2FpdEV2ZW50VXNh Z2VQdHIgPSBOVUxMOwogCiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURf VVRJTElUWSk7CiAKQEAgLTU4MywxMSArNTg5LDI3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ ZWxzZQogCQkJZGlyID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAKKwkJaWYgKGVzLT53YWl0cykK KwkJeworCQkJd2FpdEV2ZW50VXNhZ2VQdHIgPSAmd2FpdEV2ZW50VXNhZ2U7CisJCQlwZ3N0YXRf YmVnaW5fd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0ciwKKwkJCQkJCQkJCQkgIHF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCQl9CisKIAkJLyogcnVuIHRoZSBwbGFu ICovCi0JCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyLCAwKTsKKwkJUEdfVFJZKCk7CisJCXsK KwkJCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgZGlyLCAwKTsKIAotCQkvKiBydW4gY2xlYW51cCB0 b28gKi8KLQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwkJCS8qIHJ1biBjbGVhbnVwIHRv byAqLworCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKKwkJfQorCQlQR19GSU5BTExZKCk7 CisJCXsKKwkJCWlmICh3YWl0RXZlbnRVc2FnZVB0cikKKwkJCQlwZ3N0YXRfZW5kX3dhaXRfZXZl bnRfdXNhZ2Uod2FpdEV2ZW50VXNhZ2VQdHIpOworCQl9CisJCVBHX0VORF9UUlkoKTsKIAogCQkv KiBXZSBjYW4ndCBydW4gRXhlY3V0b3JFbmQgJ3RpbGwgd2UncmUgZG9uZSBwcmludGluZyB0aGUg c3RhdHMuLi4gKi8KIAkJdG90YWx0aW1lICs9IGVsYXBzZWRfdGltZSgmc3RhcnR0aW1lKTsKQEAg LTYwNSw2ICs2MjcsOSBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJLyogQ3JlYXRlIHRleHR1YWwg ZHVtcCBvZiBwbGFuIHRyZWUgKi8KIAlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURlc2MpOwog CisJaWYgKHdhaXRFdmVudFVzYWdlUHRyKQorCQlzaG93X3dhaXRfZXZlbnRfdXNhZ2UoZXMsIHdh aXRFdmVudFVzYWdlUHRyKTsKKwogCS8qIFNob3cgYnVmZmVyIGFuZC9vciBtZW1vcnkgdXNhZ2Ug aW4gcGxhbm5pbmcgKi8KIAlpZiAocGVla19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKSB8fCBt ZW1fY291bnRlcnMpCiAJewpAQCAtNDUwMyw2ICs0NTI4LDEwNCBAQCBzaG93X3dhbF91c2FnZShF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNhZ2UpCiAJfQogfQogCitzdGF0aWMg aW50Cit3YWl0X2V2ZW50X3VzYWdlX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQor eworCWNvbnN0IFdhaXRFdmVudFVzYWdlRW50cnkgKmVhID0gKGNvbnN0IFdhaXRFdmVudFVzYWdl RW50cnkgKikgYTsKKwljb25zdCBXYWl0RXZlbnRVc2FnZUVudHJ5ICplYiA9IChjb25zdCBXYWl0 RXZlbnRVc2FnZUVudHJ5ICopIGI7CisJaW50NjQJCXRhID0gSU5TVFJfVElNRV9HRVRfTUlDUk9T RUMoZWEtPnRpbWUpOworCWludDY0CQl0YiA9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKGViLT50 aW1lKTsKKworCWlmICh0YSA8IHRiKQorCQlyZXR1cm4gMTsKKwlpZiAodGEgPiB0YikKKwkJcmV0 dXJuIC0xOworCWlmIChlYS0+d2FpdF9ldmVudF9pbmZvIDwgZWItPndhaXRfZXZlbnRfaW5mbykK KwkJcmV0dXJuIC0xOworCWlmIChlYS0+d2FpdF9ldmVudF9pbmZvID4gZWItPndhaXRfZXZlbnRf aW5mbykKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzaG93X3dh aXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVz YWdlKQoreworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CisKKwlpZiAodXNhZ2UgPT0g TlVMTCkKKwkJcmV0dXJuOworCisJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVY VCAmJiB1c2FnZS0+bmVudHJpZXMgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKHVzYWdlLT5uZW50 cmllcyA+IDApCisJeworCQllbnRyaWVzID0gcGFsbG9jX2FycmF5KFdhaXRFdmVudFVzYWdlRW50 cnksIHVzYWdlLT5uZW50cmllcyk7CisJCW1lbWNweShlbnRyaWVzLCB1c2FnZS0+ZW50cmllcywK KwkJCSAgIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAqIHVzYWdlLT5uZW50cmllcyk7CisJ CXFzb3J0KGVudHJpZXMsIHVzYWdlLT5uZW50cmllcywgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50 cnkpLAorCQkJICB3YWl0X2V2ZW50X3VzYWdlX2NtcCk7CisJfQorCWVsc2UKKwkJZW50cmllcyA9 IE5VTEw7CisKKwlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCXsKKwkJ RXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIs ICJXYWl0IEV2ZW50czpcbiIpOworCQllcy0+aW5kZW50Kys7CisKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCB1c2FnZS0+bmVudHJpZXM7IGkrKykKKwkJeworCQkJY29uc3QgY2hhciAqZXZlbnRfdHlw ZTsKKwkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7CisKKwkJCWV2ZW50X3R5cGUgPSBwZ3N0YXRf Z2V0X3dhaXRfZXZlbnRfdHlwZShlbnRyaWVzW2ldLndhaXRfZXZlbnRfaW5mbyk7CisJCQlldmVu dF9uYW1lID0gcGdzdGF0X2dldF93YWl0X2V2ZW50KGVudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZv KTsKKworCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+ c3RyLCAiJXM6JXMgY2FsbHM9JSIgUFJJdTY0ICIgdGltZT0lMC4zZiBtc1xuIiwKKwkJCQkJCQkg ZXZlbnRfdHlwZSA/IGV2ZW50X3R5cGUgOiAiVW5rbm93biIsCisJCQkJCQkJIGV2ZW50X25hbWUg PyBldmVudF9uYW1lIDogInVua25vd24iLAorCQkJCQkJCSBlbnRyaWVzW2ldLmNhbGxzLAorCQkJ CQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpKTsKKwkJfQorCisJ CWVzLT5pbmRlbnQtLTsKKwl9CisJZWxzZQorCXsKKwkJRXhwbGFpbk9wZW5Hcm91cCgiV2FpdC1F dmVudHMiLCAiV2FpdCBFdmVudHMiLCBmYWxzZSwgZXMpOworCisJCWZvciAoaW50IGkgPSAwOyBp IDwgdXNhZ2UtPm5lbnRyaWVzOyBpKyspCisJCXsKKwkJCWNvbnN0IGNoYXIgKmV2ZW50X3R5cGU7 CisJCQljb25zdCBjaGFyICpldmVudF9uYW1lOworCisJCQlldmVudF90eXBlID0gcGdzdGF0X2dl dF93YWl0X2V2ZW50X3R5cGUoZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8pOworCQkJZXZlbnRf bmFtZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudChlbnRyaWVzW2ldLndhaXRfZXZlbnRfaW5mbyk7 CisKKwkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJ CQlFeHBsYWluUHJvcGVydHlUZXh0KCJXYWl0IEV2ZW50IFR5cGUiLAorCQkJCQkJCQlldmVudF90 eXBlID8gZXZlbnRfdHlwZSA6ICJVbmtub3duIiwKKwkJCQkJCQkJZXMpOworCQkJRXhwbGFpblBy b3BlcnR5VGV4dCgiV2FpdCBFdmVudCIsCisJCQkJCQkJCWV2ZW50X25hbWUgPyBldmVudF9uYW1l IDogInVua25vd24iLAorCQkJCQkJCQllcyk7CisJCQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigi Q2FsbHMiLCBOVUxMLCBlbnRyaWVzW2ldLmNhbGxzLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlG bG9hdCgiVGltZSIsICJtcyIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRy aWVzW2ldLnRpbWUpLAorCQkJCQkJCQkgMywgZXMpOworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldh aXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJCX0KKworCQlFeHBsYWluQ2xvc2VHcm91cCgi V2FpdC1FdmVudHMiLCAiV2FpdCBFdmVudHMiLCBmYWxzZSwgZXMpOworCX0KKworCWlmIChlbnRy aWVzKQorCQlwZnJlZShlbnRyaWVzKTsKK30KKwogLyoKICAqIFNob3cgbWVtb3J5IHVzYWdlIGRl dGFpbHMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3Rh dGUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuYwppbmRleCBhMGVlMGE2 NjRiZS4uMmFiY2I2NGNjOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW5fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3N0YXRlLmMKQEAg LTE2NCw2ICsxNjQsOCBAQCBQYXJzZUV4cGxhaW5PcHRpb25MaXN0KEV4cGxhaW5TdGF0ZSAqZXMs IExpc3QgKm9wdGlvbnMsIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIAkJfQogCQllbHNlIGlmIChzdHJj bXAob3B0LT5kZWZuYW1lLCAiaW8iKSA9PSAwKQogCQkJZXMtPmlvID0gZGVmR2V0Qm9vbGVhbihv cHQpOworCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAid2FpdHMiKSA9PSAwKQorCQkJ ZXMtPndhaXRzID0gZGVmR2V0Qm9vbGVhbihvcHQpOwogCQllbHNlIGlmICghQXBwbHlFeHRlbnNp b25FeHBsYWluT3B0aW9uKGVzLCBvcHQsIHBzdGF0ZSkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC0xOTYsNiArMTk4LDEyIEBAIFBh cnNlRXhwbGFpbk9wdGlvbkxpc3QoRXhwbGFpblN0YXRlICplcywgTGlzdCAqb3B0aW9ucywgUGFy c2VTdGF0ZSAqcHN0YXRlKQogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAogCQkJCSBlcnJtc2coIkVYUExBSU4gb3B0aW9uICVzIHJlcXVpcmVzIEFOQUxZWkUi LCAiSU8iKSkpOwogCisJLyogY2hlY2sgdGhhdCBXQUlUUyBpcyB1c2VkIHdpdGggRVhQTEFJTiBB TkFMWVpFICovCisJaWYgKGVzLT53YWl0cyAmJiAhZXMtPmFuYWx5emUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ IGVycm1zZygiRVhQTEFJTiBvcHRpb24gJXMgcmVxdWlyZXMgQU5BTFlaRSIsICJXQUlUUyIpKSk7 CisKIAkvKiBjaGVjayB0aGF0IHNlcmlhbGl6ZSBpcyB1c2VkIHdpdGggRVhQTEFJTiBBTkFMWVpF ICovCiAJaWYgKGVzLT5zZXJpYWxpemUgIT0gRVhQTEFJTl9TRVJJQUxJWkVfTk9ORSAmJiAhZXMt PmFuYWx5emUpCiAJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKaW5kZXggOTU2MzVjN2Y1NmMuLjYwZDM3Y2NiYjczIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0zNiwxMSArMzYsMjAgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9jbGllbnQoV2FpdEV2ZW50Q2xpZW50IHcpOwogc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpOwogc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1lb3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7 CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2lvKFdhaXRFdmVudElPIHcpOwor c3RhdGljIHZvaWQgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvLAorCQkJCQkJCSAgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCk7 CiAKIAogc3RhdGljIHVpbnQzMiBsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiB1aW50MzIJICAg Km15X3dhaXRfZXZlbnRfaW5mbyA9ICZsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiAKKyNkZWZp bmUgV0FJVF9FVkVOVF9VU0FHRV9JTklUSUFMX0VWRU5UUwkxNgorCitpbnQJCQlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZV9kZXB0aCA9IDA7CitzdGF0aWMgV2FpdEV2ZW50VXNhZ2UgKnBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKK3N0YXRpYyB1aW50MzIgcGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2VfY3VycmVudCA9IDA7CitzdGF0aWMgaW5zdHJfdGltZSBwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZV9zdGFydDsKKwogI2RlZmluZSBXQUlUX0VWRU5UX0NMQVNTX01BU0sJMHhGRjAwMDAwMAog I2RlZmluZSBXQUlUX0VWRU5UX0lEX01BU0sJCTB4MDAwMEZGRkYKIApAQCAtMzQ5LDYgKzM1OCwx NDYgQEAgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKQogCW15X3dhaXRfZXZl bnRfaW5mbyA9ICZsb2NhbF9teV93YWl0X2V2ZW50X2luZm87CiB9CiAKKy8qCisgKiBTdGFydCBj b2xsZWN0aW5nIGV4YWN0IHdhaXQgZXZlbnQgdGltaW5ncyBpbiB0aGlzIGJhY2tlbmQuCisgKgor ICogVGhpcyBpcyBpbnRlbmRlZCBmb3Igc2hvcnQtbGl2ZWQgaW5zdHJ1bWVudGF0aW9uIHN1Y2gg YXMgRVhQTEFJTiBBTkFMWVpFLgorICogSXQgcmVjb3JkcyB3YWl0cyBvYnNlcnZlZCB0aHJvdWdo IHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydC9lbmQgaW4gYmFja2VuZAorICogbG9jYWwgbWVtb3J5 LiAgTmVzdGVkIGNvbGxlY3Rpb24gaXMgZGVsaWJlcmF0ZWx5IHRyZWF0ZWQgYXMgcGFydCBvZiB0 aGUKKyAqIG91dGVyIGNvbGxlY3Rpb24gZm9yIG5vdzsgY2FsbGVycyB0aGF0IHdhbnQgaW5kZXBl bmRlbnQgbmVzdGVkIGFjY291bnRpbmcKKyAqIG5lZWQgYSBzdGFjayBvZiBXYWl0RXZlbnRVc2Fn ZSBjb250ZXh0cy4KKyAqLwordm9pZAorcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCit7CisJQXNzZXJ0 KHVzYWdlICE9IE5VTEwpOworCUFzc2VydChtZW1jb250ZXh0ICE9IE5VTEwpOworCisJaWYgKHBn c3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoKysgPT0gMCkKKwl7CisJCW1lbXNldCh1c2FnZSwg MCwgc2l6ZW9mKFdhaXRFdmVudFVzYWdlKSk7CisJCXVzYWdlLT5tZW1jb250ZXh0ID0gbWVtY29u dGV4dDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSB1c2FnZTsKKwkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CisJCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dh aXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOworCX0KK30KKworLyoKKyAqIFN0b3AgY29sbGVjdGluZyB3 YWl0IGV2ZW50IHRpbWluZ3MuCisgKi8KK3ZvaWQKK3Bnc3RhdF9lbmRfd2FpdF9ldmVudF91c2Fn ZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCit7CisJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOworCUFz c2VydChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA+IDApOworCisJaWYgKC0tcGdzdGF0 X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPT0gMCkKKwl7CisJCWlmIChwZ3N0YXRfd2FpdF9ldmVu dF91c2FnZV9jdXJyZW50ICE9IDApCisJCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQoKTsK KworCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlX2N1cnJlbnQgPSAwOworCQlJTlNUUl9USU1FX1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2 ZW50X3VzYWdlX3N0YXJ0KTsKKwl9Cit9CisKKy8qCisgKiBSZWNvcmQgdGhlIGJlZ2lubmluZyBv ZiBhIHdhaXQgZXZlbnQgZm9yIGV4YWN0IEVYUExBSU4tc3R5bGUgYWNjb3VudGluZy4KKyAqLwor dm9pZAorcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5m bykKK3sKKwlpZiAocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPT0gTlVMTCkKKwkJcmV0dXJuOwor CisJLyoKKwkgKiBXYWl0cyBhcmUgbm90IGV4cGVjdGVkIHRvIG5lc3QuICBJZiB0aGV5IGRvLCBm aW5pc2ggdGhlIHByZXZpb3VzIHdhaXQKKwkgKiBhdCB0aGUgYm91bmRhcnkgc28gYWNjb3VudGlu ZyByZW1haW5zIGludGVybmFsbHkgY29uc2lzdGVudC4KKwkgKi8KKwlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCAhPSAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQo KTsKKworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSB3YWl0X2V2ZW50X2luZm87 CisJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9zdGFydCk7 Cit9CisKKy8qCisgKiBSZWNvcmQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCB3YWl0IGV2ZW50Lgor ICovCit2b2lkCitwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQodm9pZCkKK3sKKwlpbnN0cl90 aW1lCWVuZDsKKwlpbnN0cl90aW1lCWVsYXBzZWQ7CisKKwlpZiAocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2UgPT0gTlVMTCB8fAorCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID09IDAp CisJCXJldHVybjsKKworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kKTsKKwllbGFwc2VkID0g ZW5kOworCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZWxhcHNlZCwgcGdzdGF0X3dhaXRfZXZlbnRfdXNh Z2Vfc3RhcnQpOworCisJV2FpdEV2ZW50VXNhZ2VBZGQocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Us CisJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCwKKwkJCQkJICAmZWxhcHNl ZCk7CisKKwlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsKKwlJTlNUUl9USU1F X1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKK30KKworc3RhdGljIHZv aWQKK1dhaXRFdmVudFVzYWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDMyIHdhaXRf ZXZlbnRfaW5mbywKKwkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpCit7CisJV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqZW50cnkgPSBOVUxMOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCB1c2Fn ZS0+bmVudHJpZXM7IGkrKykKKwl7CisJCWlmICh1c2FnZS0+ZW50cmllc1tpXS53YWl0X2V2ZW50 X2luZm8gPT0gd2FpdF9ldmVudF9pbmZvKQorCQl7CisJCQllbnRyeSA9ICZ1c2FnZS0+ZW50cmll c1tpXTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKGVudHJ5ID09IE5VTEwpCisJeworCQlp ZiAodXNhZ2UtPm5lbnRyaWVzID49IHVzYWdlLT5tYXhlbnRyaWVzKQorCQl7CisJCQlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CisJCQlpbnQJCQluZXdtYXhlbnRyaWVzOworCisJCQlpZiAodXNh Z2UtPm1heGVudHJpZXMgPiAwKQorCQkJCW5ld21heGVudHJpZXMgPSB1c2FnZS0+bWF4ZW50cmll cyAqIDI7CisJCQllbHNlCisJCQkJbmV3bWF4ZW50cmllcyA9IFdBSVRfRVZFTlRfVVNBR0VfSU5J VElBTF9FVkVOVFM7CisKKwkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odXNh Z2UtPm1lbWNvbnRleHQpOworCQkJaWYgKHVzYWdlLT5lbnRyaWVzKQorCQkJCXVzYWdlLT5lbnRy aWVzID0gcmVwYWxsb2NfYXJyYXkodXNhZ2UtPmVudHJpZXMsCisJCQkJCQkJCQkJCQlXYWl0RXZl bnRVc2FnZUVudHJ5LAorCQkJCQkJCQkJCQkJbmV3bWF4ZW50cmllcyk7CisJCQllbHNlCisJCQkJ dXNhZ2UtPmVudHJpZXMgPSBwYWxsb2NfYXJyYXkoV2FpdEV2ZW50VXNhZ2VFbnRyeSwKKwkJCQkJ CQkJCQkJICBuZXdtYXhlbnRyaWVzKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCQkJdXNhZ2UtPm1heGVudHJpZXMgPSBuZXdtYXhlbnRyaWVzOworCQl9CisKKwkJ ZW50cnkgPSAmdXNhZ2UtPmVudHJpZXNbdXNhZ2UtPm5lbnRyaWVzKytdOworCQllbnRyeS0+d2Fp dF9ldmVudF9pbmZvID0gd2FpdF9ldmVudF9pbmZvOworCQllbnRyeS0+Y2FsbHMgPSAwOworCQlJ TlNUUl9USU1FX1NFVF9aRVJPKGVudHJ5LT50aW1lKTsKKwl9CisKKwllbnRyeS0+Y2FsbHMrKzsK KwlJTlNUUl9USU1FX0FERChlbnRyeS0+dGltZSwgKmVsYXBzZWQpOworfQorCiAvKiAtLS0tLS0t LS0tCiAgKiBwZ3N0YXRfZ2V0X3dhaXRfZXZlbnRfdHlwZSgpIC0KICAqCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9leHBsYWluX3N0YXRlLmgKaW5kZXggOTdiYzdlZDQ5ZjYuLjRmMGQwZDQ5NWQ0IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXhwbGFpbl9zdGF0ZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYgc3Ry dWN0IEV4cGxhaW5TdGF0ZQogCWJvb2wJCW1lbW9yeTsJCQkvKiBwcmludCBwbGFubmVyJ3MgbWVt b3J5IHVzYWdlIGluZm9ybWF0aW9uICovCiAJYm9vbAkJc2V0dGluZ3M7CQkvKiBwcmludCBtb2Rp ZmllZCBzZXR0aW5ncyAqLwogCWJvb2wJCWlvOwkJCQkvKiBwcmludCBpbmZvIGFib3V0IElPIChw cmVmZXRjaCwgLi4uKSAqLworCWJvb2wJCXdhaXRzOwkJCS8qIHByaW50IHdhaXQgZXZlbnQgdXNh Z2UgKi8KIAlib29sCQlnZW5lcmljOwkJLyogZ2VuZXJhdGUgYSBnZW5lcmljIHBsYW4gKi8KIAlF eHBsYWluU2VyaWFsaXplT3B0aW9uIHNlcmlhbGl6ZTsJLyogc2VyaWFsaXplIHRoZSBxdWVyeSdz IG91dHB1dD8gKi8KIAlFeHBsYWluRm9ybWF0IGZvcm1hdDsJCS8qIG91dHB1dCBmb3JtYXQgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA4NmVlMzQ4MjIwZC4uZjdmYWI1NzM2YmIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKQEAgLTExLDE2ICsxMSwzOSBAQAogI2RlZmluZSBXQUlUX0VWRU5U X0gKIAogLyogZW51bXMgZm9yIHdhaXQgZXZlbnRzICovCisjaW5jbHVkZSAicG9ydGFiaWxpdHkv aW5zdHJfdGltZS5oIgorI2luY2x1ZGUgInV0aWxzL3BhbGxvYy5oIgogI2luY2x1ZGUgInV0aWxz L3dhaXRfZXZlbnRfdHlwZXMuaCIKIAordHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2VFbnRy eQoreworCXVpbnQzMgkJd2FpdF9ldmVudF9pbmZvOworCXVpbnQ2NAkJY2FsbHM7CisJaW5zdHJf dGltZQl0aW1lOworfSBXYWl0RXZlbnRVc2FnZUVudHJ5OworCit0eXBlZGVmIHN0cnVjdCBXYWl0 RXZlbnRVc2FnZQoreworCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKKwlpbnQJCQluZW50cmll czsKKwlpbnQJCQltYXhlbnRyaWVzOworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7Cit9 IFdhaXRFdmVudFVzYWdlOworCiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2V2 ZW50KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnBnc3RhdF9n ZXRfd2FpdF9ldmVudF90eXBlKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogc3RhdGljIGlubGlu ZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsK IHN0YXRpYyBpbmxpbmUgdm9pZCBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKHZvaWQpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UodWludDMyICp3YWl0X2V2ZW50X2lu Zm8pOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdl ICp1c2FnZSwKKwkJCQkJCQkJCQkgIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CitleHRlcm4g dm9pZCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHVpbnQzMiB3YWl0X2V2 ZW50X2luZm8pOworZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKHZvaWQp OwogCiBleHRlcm4gUEdETExJTVBPUlQgdWludDMyICpteV93YWl0X2V2ZW50X2luZm87CitleHRl cm4gUEdETExJTVBPUlQgaW50IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoOwogCiAKIC8q CkBAIC02Niw2ICs4OSw5IEBAIGV4dGVybiBjaGFyICoqR2V0V2FpdEV2ZW50Q3VzdG9tTmFtZXMo dWludDMyIGNsYXNzSWQsIGludCAqbndhaXRldmVudHMpOwogc3RhdGljIGlubGluZSB2b2lkCiBw Z3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbykKIHsKKwlpZiAo cGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPiAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9l dmVudF9zdGFydCh3YWl0X2V2ZW50X2luZm8pOworCiAJLyoKIAkgKiBTaW5jZSB0aGlzIGlzIGEg Zm91ci1ieXRlIGZpZWxkIHdoaWNoIGlzIGFsd2F5cyByZWFkIGFuZCB3cml0dGVuIGFzCiAJICog Zm91ci1ieXRlcywgdXBkYXRlcyBhcmUgYXRvbWljLgpAQCAtODIsNiArMTA4LDkgQEAgcGdzdGF0 X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiBzdGF0aWMgaW5saW5l IHZvaWQKIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCkKIHsKKwlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfZGVwdGggPiAwKQorCQlwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQoKTsK KwogCS8qIHNlZSBwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQoKSAqLwogCSoodm9sYXRpbGUgdWlu dDMyICopIG15X3dhaXRfZXZlbnRfaW5mbyA9IDA7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dAppbmRleCA3NGE0ZDg3ODAxZS4uMmM3YTdlMWQ0YzYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtOTksNiArOTksMjMgQEAgc2VsZWN0IGV4cGxhaW5f ZmlsdGVyKCdleHBsYWluIChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4 X3RibCBpOCcKICBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1O IHdpZHRoPU4pCiAoMSByb3cpCiAKKy0tIFdBSVRTIG9wdGlvbgorc2VsZWN0IGV4cGxhaW5fZmls dGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGlt aW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOworICAgICAgICAg ICAgZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBSZXN1bHQgKGFjdHVhbCByb3dzPU4uTiBsb29wcz1OKQorIFdhaXQg RXZlbnRzOgorICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMKKygzIHJvd3Mp CisKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0 cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1h dCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMsMH0nOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsi VGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2 ZW50IFR5cGUiOiAiVGltZW91dCJ9CisoMSByb3cpCisKK2V4cGxhaW4gKHdhaXRzKSBzZWxlY3Qg MTsKK0VSUk9SOiAgRVhQTEFJTiBvcHRpb24gV0FJVFMgcmVxdWlyZXMgQU5BTFlaRQogXGEKIHNl bGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgaW8sIGZvcm1h dCB4bWwpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnKTsKIGV4cGxhaW5fZmlsdGVyCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2V4cGxhaW4uc3FsCmluZGV4IDJmMTYzYzY0YmY2Li5mZTAyNWRkZWFjNSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZXhwbGFpbi5zcWwKQEAgLTY4LDYgKzY4LDExIEBAIHNlbGVjdCBleHBsYWluX2Zp bHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycyBvZmYsIHZlcmJvc2UpIHNlbGVjdCAqIGZy b20gaW50CiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1ZmZlcnMs IGZvcm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiBzZWxlY3QgZXhwbGFp bl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0KSBzZWxlY3QgKiBmcm9tIGlu dDhfdGJsIGk4Jyk7CiAKKy0tIFdBSVRTIG9wdGlvbgorc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdl eHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9m ZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOworc2VsZWN0IGV4cGxhaW5f ZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1h cnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19z bGVlcCgwLjAxKScpICM+ICd7MCxXYWl0IEV2ZW50cywwfSc7CitleHBsYWluICh3YWl0cykgc2Vs ZWN0IDE7CisKIFxhCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIGJ1 ZmZlcnMsIGlvLCBmb3JtYXQgeG1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiBzZWxl Y3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHNlcmlhbGl6ZSwgYnVmZmVycywg aW8sIGZvcm1hdCB5YW1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7Ci0tIAoyLjUyLjAK Cg== --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0002-Aggregate-EXPLAIN-WAITS-from-parallel-workers.patch" Content-Disposition: attachment; filename="0002-Aggregate-EXPLAIN-WAITS-from-parallel-workers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaylx1 RnJvbSBlYjVmOWM4M2EwZjI0OGYyZGVmNjBmZjZlOTNlOTk4MTQ5MDQ3ZjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MjQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSAyLzddIEFnZ3JlZ2F0ZSBFWFBMQUlOIFdBSVRTIGZyb20gcGFyYWxsZWwgd29ya2VycwoKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8IDEyOSArKysrKysrKysrKysrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFj a2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgfCAgMjIgKysrLQogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggICAgICAgICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91 dCAgIHwgIDE3ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgICB8 ICAxMiArKysKIDEwIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAwYjdjYzVjMTVjNi4uOWQ3MzcyZjU0MTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTU5NCw2ICs1OTQsNyBAQCBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJCQl3YWl0RXZlbnRVc2FnZVB0ciA9ICZ3YWl0RXZlbnRVc2FnZTsKIAkJCXBnc3Rh dF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKHdhaXRFdmVudFVzYWdlUHRyLAogCQkJCQkJCQkJCSAg cXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisJCQlxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfd2FpdF9ldmVudF91c2FnZSA9IHdhaXRFdmVudFVzYWdlUHRyOwogCQl9CiAKIAkJLyogcnVu IHRoZSBwbGFuICovCkBAIC02MDcsNyArNjA4LDEwIEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ UEdfRklOQUxMWSgpOwogCQl7CiAJCQlpZiAod2FpdEV2ZW50VXNhZ2VQdHIpCisJCQl7CiAJCQkJ cGdzdGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKHdhaXRFdmVudFVzYWdlUHRyKTsKKwkJCQlxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisJCQl9CiAJCX0KIAkJ UEdfRU5EX1RSWSgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YjMwZjc2ODY4MC4u ODZhYjEyNGMxYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMzA2Niw2ICszMDY2LDcg QEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkK IAkvKiBlc190cmlnX3RhcmdldF9yZWxhdGlvbnMgbXVzdCBOT1QgYmUgY29waWVkICovCiAJcmNl c3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSBwYXJlbnRlc3RhdGUtPmVzX3RvcF9lZmxhZ3M7CiAJcmNl c3RhdGUtPmVzX2luc3RydW1lbnQgPSBwYXJlbnRlc3RhdGUtPmVzX2luc3RydW1lbnQ7CisJcmNl c3RhdGUtPmVzX3dhaXRfZXZlbnRfdXNhZ2UgPSBwYXJlbnRlc3RhdGUtPmVzX3dhaXRfZXZlbnRf dXNhZ2U7CiAJLyogZXNfYXV4bW9kaWZ5dGFibGVzIG11c3QgTk9UIGJlIGNvcGllZCAqLwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggODFiODdkODJmYWIuLjgyMTM1 NjVhNzA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtNTEsNiArNTEsNyBA QAogI2luY2x1ZGUgInV0aWxzL2RzYS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CiAKIC8qCiAgKiBNYWdpYyBudW1iZXJzIGZvciBwYXJhbGxlbCBleGVjdXRvciBjb21tdW5pY2F0 aW9uLiAgV2UgdXNlIGNvbnN0YW50cwpAQCAtNjcsNiArNjgsNyBAQAogI2RlZmluZSBQQVJBTExF TF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDA4KQogI2RlZmlu ZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAw MDAwMDAwMDkpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgw eEUwMDAwMDAwMDAwMDAwMEEpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUlUX0VWRU5UX1VTQUdF CVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwQikKIAogI2RlZmluZSBQQVJBTExFTF9UVVBM RV9RVUVVRV9TSVpFCQk2NTUzNgogCkBAIC0xMTQsNiArMTE2LDE4IEBAIHN0cnVjdCBTaGFyZWRF eGVjdXRvckluc3RydW1lbnRhdGlvbgogCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFj cm8oc2VpLCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAogCSAoTm9kZUluc3Ry dW1lbnRhdGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmluc3RydW1lbnRfb2Zmc2V0KSkK IAordHlwZWRlZiBzdHJ1Y3QgU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIKK3sKKwlpbnQJCQlu ZW50cmllczsKKwlkc2FfcG9pbnRlciBlbnRyaWVzOworfSBTaGFyZWRXYWl0RXZlbnRVc2FnZVdv cmtlcjsKKworc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlCit7CisJaW50CQkJbnVtX3dvcmtl cnM7CisJU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgd29ya2VyX3VzYWdlW0ZMRVhJQkxFX0FS UkFZX01FTUJFUl07Cit9OworCiAvKiBDb250ZXh0IG9iamVjdCBmb3IgRXhlY1BhcmFsbGVsRXN0 aW1hdGUuICovCiB0eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxFc3RpbWF0ZUNvbnRleHQKIHsK QEAgLTE0MSw2ICsxNTUsMTAgQEAgc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsUmVJbml0aWFsaXpl RFNNKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCVBhcmFsbGVsQ29udGV4dCAqcGN4 dCk7CiBzdGF0aWMgYm9vbCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50YXRpb24pOworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsUmV0cmlldmVX YWl0RXZlbnRVc2FnZShQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKTsKK3N0YXRpYyB2b2lkIEV4 ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlKFNoYXJlZFdhaXRFdmVudFVzYWdlICpzaGFy ZWQsCisJCQkJCQkJCQkJCSBkc2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJCQkJIGNvbnN0IFdhaXRF dmVudFVzYWdlICp1c2FnZSk7CiAKIC8qIEhlbHBlciBmdW5jdGlvbiB0aGF0IHJ1bnMgaW4gdGhl IHBhcmFsbGVsIHdvcmtlci4gKi8KIHN0YXRpYyBEZXN0UmVjZWl2ZXIgKkV4ZWNQYXJhbGxlbEdl dFJlY2VpdmVyKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYyk7CkBAIC02NjQsMTAgKzY4 MiwxMiBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRl ICplc3RhdGUsCiAJY2hhcgkgICAqcGFyYW1saXN0aW5mb19zcGFjZTsKIAlCdWZmZXJVc2FnZSAq YnVmdXNhZ2Vfc3BhY2U7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2Vfc3BhY2U7CisJU2hhcmVkV2Fp dEV2ZW50VXNhZ2UgKndhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOwogCVNoYXJlZEV4ZWN1dG9ySW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1l bnRhdGlvbiAqaml0X2luc3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwog CWludAkJCXBhcmFtbGlzdGluZm9fbGVuOworCWludAkJCXdhaXRfZXZlbnRfdXNhZ2VfbGVuID0g MDsKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVu dGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9vZmZzZXQgPSAwOwpAQCAtNzQ0LDYg Kzc2NCwxNiBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0 YXRlICplc3RhdGUsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsK IAorCS8qIEVzdGltYXRlIHNwYWNlIGZvciBwZXItd29ya2VyIHdhaXQgZXZlbnQgdXNhZ2UgbWV0 YWRhdGEuICovCisJaWYgKGVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSAhPSBOVUxMKQorCXsK KwkJd2FpdF9ldmVudF91c2FnZV9sZW4gPQorCQkJb2Zmc2V0b2YoU2hhcmVkV2FpdEV2ZW50VXNh Z2UsIHdvcmtlcl91c2FnZSkgKworCQkJbXVsX3NpemUoc2l6ZW9mKFNoYXJlZFdhaXRFdmVudFVz YWdlV29ya2VyKSwgcGN4dC0+bndvcmtlcnMpOworCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZw Y3h0LT5lc3RpbWF0b3IsIHdhaXRfZXZlbnRfdXNhZ2VfbGVuKTsKKwkJc2htX3RvY19lc3RpbWF0 ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCX0KKwogCS8qIEVzdGltYXRlIHNwYWNlIGZv ciB0dXBsZSBxdWV1ZXMuICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1h dG9yLAogCQkJCQkJICAgbXVsX3NpemUoUEFSQUxMRUxfVFVQTEVfUVVFVUVfU0laRSwgcGN4dC0+ bndvcmtlcnMpKTsKQEAgLTgzOSw2ICs4NjksMjEgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQt PnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Vfc3BhY2UpOwogCXBlaS0+d2Fs X3VzYWdlID0gd2FsdXNhZ2Vfc3BhY2U7CiAKKwkvKiBBbGxvY2F0ZSBtZXRhZGF0YSBmb3IgZWFj aCB3b3JrZXIncyB3YWl0IGV2ZW50IHVzYWdlLCBpZiByZXF1ZXN0ZWQuICovCisJaWYgKGVzdGF0 ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSAhPSBOVUxMKQorCXsKKwkJd2FpdF9ldmVudF91c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCB3YWl0X2V2ZW50X3VzYWdlX2xlbik7CisJCXdh aXRfZXZlbnRfdXNhZ2UtPm51bV93b3JrZXJzID0gbndvcmtlcnM7CisJCWZvciAoaW50IGkgPSAw OyBpIDwgbndvcmtlcnM7IGkrKykKKwkJeworCQkJd2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3Vz YWdlW2ldLm5lbnRyaWVzID0gMDsKKwkJCXdhaXRfZXZlbnRfdXNhZ2UtPndvcmtlcl91c2FnZVtp XS5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50ZXI7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FJVF9FVkVOVF9VU0FHRSwKKwkJCQkJICAgd2FpdF9ldmVu dF91c2FnZSk7CisJCXBlaS0+d2FpdF9ldmVudF91c2FnZSA9IHdhaXRfZXZlbnRfdXNhZ2U7CisJ fQorCiAJLyogU2V0IHVwIHRoZSB0dXBsZSBxdWV1ZXMgdGhhdCB0aGUgd29ya2VycyB3aWxsIHdy aXRlIGludG8uICovCiAJcGVpLT50cXVldWUgPSBFeGVjUGFyYWxsZWxTZXR1cFR1cGxlUXVldWVz KHBjeHQsIGZhbHNlKTsKIApAQCAtMTIxMyw2ICsxMjU4LDY4IEBAIEV4ZWNQYXJhbGxlbFJldHJp ZXZlSml0SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCW1lbWNweShwbGFu c3RhdGUtPndvcmtlcl9qaXRfaW5zdHJ1bWVudCwgc2hhcmVkX2ppdCwgaWJ5dGVzKTsKIH0KIAor c3RhdGljIHZvaWQKK0V4ZWNQYXJhbGxlbFJldHJpZXZlV2FpdEV2ZW50VXNhZ2UoUGFyYWxsZWxF eGVjdXRvckluZm8gKnBlaSkKK3sKKwlTaGFyZWRXYWl0RXZlbnRVc2FnZSAqc2hhcmVkID0gcGVp LT53YWl0X2V2ZW50X3VzYWdlOworCVdhaXRFdmVudFVzYWdlICp1c2FnZTsKKworCWlmIChzaGFy ZWQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJdXNhZ2UgPSBwZWktPnBsYW5zdGF0ZS0+c3RhdGUt PmVzX3dhaXRfZXZlbnRfdXNhZ2U7CisJaWYgKHVzYWdlID09IE5VTEwpCisJCXJldHVybjsKKwor CWZvciAoaW50IGkgPSAwOyBpIDwgc2hhcmVkLT5udW1fd29ya2VyczsgaSsrKQorCXsKKwkJU2hh cmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlciA9ICZzaGFyZWQtPndvcmtlcl91c2FnZVtp XTsKKwkJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKKworCQlpZiAod29ya2VyLT5uZW50 cmllcyA8PSAwIHx8ICFEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMpKQorCQkJY29u dGludWU7CisKKwkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhwZWktPmFyZWEsIHdvcmtlci0+ ZW50cmllcyk7CisJCXBnc3RhdF9hY2N1bXVsYXRlX3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsCisJ CQkJCQkJCQkJICAgZW50cmllcywKKwkJCQkJCQkJCQkgICB3b3JrZXItPm5lbnRyaWVzKTsKKwkJ ZHNhX2ZyZWUocGVpLT5hcmVhLCB3b3JrZXItPmVudHJpZXMpOworCQl3b3JrZXItPm5lbnRyaWVz ID0gMDsKKwkJd29ya2VyLT5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50ZXI7CisJfQorfQorCitz dGF0aWMgdm9pZAorRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2UoU2hhcmVkV2FpdEV2 ZW50VXNhZ2UgKnNoYXJlZCwKKwkJCQkJCQkJIGRzYV9hcmVhICphcmVhLAorCQkJCQkJCQkgY29u c3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQoreworCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2Vy ICp3b3JrZXI7CisJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKKwlkc2FfcG9pbnRlciBl bnRyaWVzX2RzYTsKKwlTaXplCQllbnRyaWVzX3NpemU7CisKKwlBc3NlcnQoc2hhcmVkICE9IE5V TEwpOworCUFzc2VydChhcmVhICE9IE5VTEwpOworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlB c3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwlBc3NlcnQoUGFyYWxsZWxXb3JrZXJOdW1iZXIg PCBzaGFyZWQtPm51bV93b3JrZXJzKTsKKworCWlmICh1c2FnZS0+bmVudHJpZXMgPD0gMCkKKwkJ cmV0dXJuOworCisJd29ya2VyID0gJnNoYXJlZC0+d29ya2VyX3VzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXTsKKwllbnRyaWVzX3NpemUgPSBtdWxfc2l6ZShzaXplb2YoV2FpdEV2ZW50VXNhZ2VF bnRyeSksIHVzYWdlLT5uZW50cmllcyk7CisJZW50cmllc19kc2EgPSBkc2FfYWxsb2NhdGUoYXJl YSwgZW50cmllc19zaXplKTsKKwllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEsIGVudHJp ZXNfZHNhKTsKKwltZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsIGVudHJpZXNfc2l6ZSk7 CisKKwlpZiAoRHNhUG9pbnRlcklzVmFsaWQod29ya2VyLT5lbnRyaWVzKSkKKwkJZHNhX2ZyZWUo YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwl3b3JrZXItPm5lbnRyaWVzID0gdXNhZ2UtPm5lbnRy aWVzOworCXdvcmtlci0+ZW50cmllcyA9IGVudHJpZXNfZHNhOworfQorCiAvKgogICogRmluaXNo IHBhcmFsbGVsIGV4ZWN1dGlvbi4gIFdlIHdhaXQgZm9yIHBhcmFsbGVsIHdvcmtlcnMgdG8gZmlu aXNoLCBhbmQKICAqIGFjY3VtdWxhdGUgdGhlaXIgYnVmZmVyL1dBTCB1c2FnZS4KQEAgLTEyNjEs NiArMTM2OCw5IEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVp KQogCWZvciAoaSA9IDA7IGkgPCBud29ya2VyczsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeSgmcGVpLT5idWZmZXJfdXNhZ2VbaV0sICZwZWktPndhbF91c2FnZVtpXSk7CiAKKwkvKiBB Y2N1bXVsYXRlIHdhaXQgZXZlbnQgdXNhZ2UsIGlmIHJlcXVlc3RlZC4gKi8KKwlFeGVjUGFyYWxs ZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdlKHBlaSk7CisKIAlwZWktPmZpbmlzaGVkID0gdHJ1ZTsK IH0KIApAQCAtMTUxNiwxMCArMTYyNiwxMyBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUgKmZwZXM7 CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CisJ U2hhcmVkV2FpdEV2ZW50VXNhZ2UgKndhaXRfZXZlbnRfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpy ZWNlaXZlcjsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJU2hhcmVkRXhlY3V0b3JJbnN0cnVt ZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsKIAlTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmpp dF9pbnN0cnVtZW50YXRpb247CisJV2FpdEV2ZW50VXNhZ2Ugd2FpdEV2ZW50VXNhZ2U7CisJV2Fp dEV2ZW50VXNhZ2UgKndhaXRFdmVudFVzYWdlUHRyID0gTlVMTDsKIAlpbnQJCQlpbnN0cnVtZW50 X29wdGlvbnMgPSAwOwogCXZvaWQJICAgKmFyZWFfc3BhY2U7CiAJZHNhX2FyZWEgICAqYXJlYTsK QEAgLTE1MzUsNiArMTY0OCw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAkJaW5zdHJ1bWVudF9vcHRpb25zID0gaW5zdHJ1bWVudGF0aW9uLT5p bnN0cnVtZW50X29wdGlvbnM7CiAJaml0X2luc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04sCiAJCQkJCQkJCQkJIHRydWUp OworCXdhaXRfZXZlbnRfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9X QUlUX0VWRU5UX1VTQUdFLCB0cnVlKTsKIAlxdWVyeURlc2MgPSBFeGVjUGFyYWxsZWxHZXRRdWVy eURlc2ModG9jLCByZWNlaXZlciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKIAogCS8qIFNldHRpbmcg ZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgKi8KQEAgLTE1NzYsNiAr MTY5MCwxMyBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0 b2MpCiAJICovCiAJSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKIAorCWlmICh3YWl0X2V2ZW50 X3VzYWdlICE9IE5VTEwpCisJeworCQl3YWl0RXZlbnRVc2FnZVB0ciA9ICZ3YWl0RXZlbnRVc2Fn ZTsKKwkJcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uod2FpdEV2ZW50VXNhZ2VQdHIsCisJ CQkJCQkJCQkgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCX0KKwogCS8qCiAJ ICogUnVuIHRoZSBwbGFuLiAgSWYgd2Ugc3BlY2lmaWVkIGEgdHVwbGUgYm91bmQsIGJlIGNhcmVm dWwgbm90IHRvIGRlbWFuZAogCSAqIG1vcmUgdHVwbGVzIHRoYW4gdGhhdC4KQEAgLTE1ODcsNiAr MTcwOCwxNCBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0 b2MpCiAJLyogU2h1dCBkb3duIHRoZSBleGVjdXRvciAqLwogCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5 RGVzYyk7CiAKKwlpZiAod2FpdEV2ZW50VXNhZ2VQdHIgIT0gTlVMTCkKKwl7CisJCXBnc3RhdF9l bmRfd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0cik7CisJCUV4ZWNQYXJhbGxlbFJl cG9ydFdhaXRFdmVudFVzYWdlKHdhaXRfZXZlbnRfdXNhZ2UsCisJCQkJCQkJCQkJIGFyZWEsCisJ CQkJCQkJCQkJIHdhaXRFdmVudFVzYWdlUHRyKTsKKwl9CisKIAkvKiBSZXBvcnQgYnVmZmVyL1dB TCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNo bV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdh bF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFs c2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCAxZWI2YjlmMWY0MC4uODBlYTc3NzYz MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNTEsNiArMTUxLDcgQEAgQ3JlYXRl RXhlY3V0b3JTdGF0ZSh2b2lkKQogCiAJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3Rh dGUtPmVzX2luc3RydW1lbnQgPSAwOworCWVzdGF0ZS0+ZXNfd2FpdF9ldmVudF91c2FnZSA9IE5V TEw7CiAJZXN0YXRlLT5lc19maW5pc2hlZCA9IGZhbHNlOwogCiAJZXN0YXRlLT5lc19leHByY29u dGV4dHMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXgg NjBkMzdjY2JiNzMuLmViMDFiYzNkODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0 X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KTsKIHN0YXRpYyBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0 X3dhaXRfdGltZW91dChXYWl0RXZlbnRUaW1lb3V0IHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBn c3RhdF9nZXRfd2FpdF9pbyhXYWl0RXZlbnRJTyB3KTsKIHN0YXRpYyB2b2lkIFdhaXRFdmVudFVz YWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKLQkJ CQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpOworCQkJCQkJCSAgdWludDY0IGNhbGxz LCBjb25zdCBpbnN0cl90aW1lICplbGFwc2VkKTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215 X3dhaXRfZXZlbnRfaW5mbzsKQEAgLTQ0MiwxNSArNDQyLDMxIEBAIHBnc3RhdF9jb3VudF93YWl0 X2V2ZW50X2VuZCh2b2lkKQogCiAJV2FpdEV2ZW50VXNhZ2VBZGQocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2UsCiAJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCwKKwkJCQkJICAx LAogCQkJCQkgICZlbGFwc2VkKTsKIAogCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQg PSAwOwogCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQp OwogfQogCit2b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVu dFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50 cmllcywKKwkJCQkJCQkJICAgaW50IG5lbnRyaWVzKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxM KTsKKwlBc3NlcnQobmVudHJpZXMgPT0gMCB8fCBlbnRyaWVzICE9IE5VTEwpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBuZW50cmllczsgaSsrKQorCQlXYWl0RXZlbnRVc2FnZUFkZCh1c2FnZSwK KwkJCQkJCSAgZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8sCisJCQkJCQkgIGVudHJpZXNbaV0u Y2FsbHMsCisJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOworfQorCiBzdGF0aWMgdm9pZAogV2Fp dEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIgd2FpdF9ldmVudF9p bmZvLAotCQkJCSAgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCkKKwkJCQkgIHVpbnQ2NCBjYWxs cywgY29uc3QgaW5zdHJfdGltZSAqZWxhcHNlZCkKIHsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICpl bnRyeSA9IE5VTEw7CiAKQEAgLTQ5NCw3ICs1MTAsNyBAQCBXYWl0RXZlbnRVc2FnZUFkZChXYWl0 RXZlbnRVc2FnZSAqdXNhZ2UsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sCiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8oZW50cnktPnRpbWUpOwogCX0KIAotCWVudHJ5LT5jYWxscysrOworCWVudHJ5LT5j YWxscyArPSBjYWxsczsKIAlJTlNUUl9USU1FX0FERChlbnRyeS0+dGltZSwgKmVsYXBzZWQpOwog fQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFyYWxsZWwuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCmluZGV4IDVhMjAzNDgxMWQ1Li43MWRm MmMyNTExYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgK KysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgKQEAgLTIwLDYgKzIwLDcg QEAKICNpbmNsdWRlICJ1dGlscy9kc2EuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgU2hhcmVkRXhlY3V0 b3JJbnN0cnVtZW50YXRpb24gU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb247Cit0eXBlZGVm IHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZSBTaGFyZWRXYWl0RXZlbnRVc2FnZTsKIAogdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRvckluZm8KIHsKQEAgLTI3LDYgKzI4LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRvckluZm8KIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7 CQkvKiBwYXJhbGxlbCBjb250ZXh0IHdlJ3JlIHVzaW5nICovCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZl cl91c2FnZTsJLyogcG9pbnRzIHRvIGJ1ZnVzYWdlIGFyZWEgaW4gRFNNICovCiAJV2FsVXNhZ2Ug ICAqd2FsX3VzYWdlOwkJLyogd2FsdXNhZ2UgYXJlYSBpbiBEU00gKi8KKwlTaGFyZWRXYWl0RXZl bnRVc2FnZSAqd2FpdF9ldmVudF91c2FnZTsJLyogb3B0aW9uYWwgKi8KIAlTaGFyZWRFeGVjdXRv ckluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uOyAvKiBvcHRpb25hbCAqLwogCXN0cnVj dCBTaGFyZWRKaXRJbnN0cnVtZW50YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb247CS8qIG9wdGlv bmFsICovCiAJZHNhX2FyZWEgICAqYXJlYTsJCQkvKiBwb2ludHMgdG8gRFNBIGFyZWEgaW4gRFNN ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li43ODFjOGM3OTEzMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTY5LDYgKzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHVwbGVz dG9yZXN0YXRlIFR1cGxlc3RvcmVzdGF0ZTsKIHR5cGVkZWYgc3RydWN0IFR1cGxlVGFibGVTbG90 IFR1cGxlVGFibGVTbG90OwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3RPcHMgVHVwbGVU YWJsZVNsb3RPcHM7CiB0eXBlZGVmIHN0cnVjdCBXYWxVc2FnZSBXYWxVc2FnZTsKK3R5cGVkZWYg c3RydWN0IFdhaXRFdmVudFVzYWdlIFdhaXRFdmVudFVzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgV29y a2VyTm9kZUluc3RydW1lbnRhdGlvbiBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0aW9uOwogCiAKQEAg LTc1NCw2ICs3NTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAogCWludAkJCWVzX3RvcF9l ZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWludAkJCWVzX2lu c3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KKwlXYWl0RXZlbnRV c2FnZSAqZXNfd2FpdF9ldmVudF91c2FnZTsJLyogRVhQTEFJTiBXQUlUUyBhY2N1bXVsYXRvciAq LwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4gRXhlY3V0b3JGaW5pc2ggaXMgZG9u ZSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0 cyB3aXRoaW4gRVN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2 ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggZjdmYWI1NzM2YmIu LjYzOTkyMTM3ZWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0zOSw2ICszOSw5IEBAIGV4 dGVybiB2b2lkIHBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2Uodm9pZCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2Us CiAJCQkJCQkJCQkJICBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgcGdz dGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CitleHRlcm4g dm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1 c2FnZSwKKwkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllcywK KwkJCQkJCQkJCQkJICAgaW50IG5lbnRyaWVzKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93 YWl0X2V2ZW50X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIHZvaWQgcGdz dGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9l eHBsYWluLm91dAppbmRleCAyYzdhN2UxZDRjNi4uZTM4NDdlMjIyYmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9leHBsYWluLm91dApAQCAtMTE0LDYgKzExNCwyMyBAQCBzZWxlY3QgZXhwbGFp bl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3Vt bWFyeSBvZmYsCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1Ns ZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAorYmVnaW47Citj cmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMg dm9pZAorICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19z bGVlcCc7CitzZXQgbG9jYWwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvbjsKK3NldCBsb2NhbCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFs bGVsX3BnX3NsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3 aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxXYWl0IEV2ZW50c30nLAorICAnJFsqXSA/IChALiJX YWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IlRpbWUiOiAwLjAsICJDYWxscyI6IDAsICJX YWl0IEV2ZW50IjogIlBnU2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVvdXQifQorKDEg cm93KQorCityb2xsYmFjazsKIGV4cGxhaW4gKHdhaXRzKSBzZWxlY3QgMTsKIEVSUk9SOiAgRVhQ TEFJTiBvcHRpb24gV0FJVFMgcmVxdWlyZXMgQU5BTFlaRQogXGEKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFp bi5zcWwKaW5kZXggZmUwMjVkZGVhYzUuLjg4MjEyNTBiY2VmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBs YWluLnNxbApAQCAtNzEsNiArNzEsMTggQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKIC0tIFdB SVRTIG9wdGlvbgogc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0 cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVj dCBwZ19zbGVlcCgwLjAxKScpOwogc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxh aW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBi dWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxX YWl0IEV2ZW50cywwfSc7CitiZWdpbjsKK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLnBhcmFsbGVs X3BnX3NsZWVwKGZsb2F0OCkgcmV0dXJucyB2b2lkCisgIGxhbmd1YWdlIGludGVybmFsIHZvbGF0 aWxlIHBhcmFsbGVsIHNhZmUgYXMgJ3BnX3NsZWVwJzsKK3NldCBsb2NhbCBkZWJ1Z19wYXJhbGxl bF9xdWVyeSA9IG9uOworc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIg PSAxOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3Rv X2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0 aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pCisgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZWN0IHBnX3RlbXAucGFyYWxsZWxfcGdfc2xlZXAoMC4wMSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIHRlbmsxIHdoZXJlIHVuaXF1ZTEgPSAxJykgIz4gJ3swLFdhaXQg RXZlbnRzfScsCisgICckWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwor cm9sbGJhY2s7CiBleHBsYWluICh3YWl0cykgc2VsZWN0IDE7CiAKIFxhCi0tIAoyLjUyLjAKCg== --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0003-Attribute-EXPLAIN-WAITS-to-plan-nodes.patch" Content-Disposition: attachment; filename="0003-Attribute-EXPLAIN-WAITS-to-plan-nodes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaym12 RnJvbSBjYjI2YWE0ODZkNDJmMjI3MjA5YzI3ZGY0YWVmNGIwN2YxM2UzMzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MzUgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSAzLzddIEF0dHJpYnV0ZSBFWFBMQUlOIFdBSVRTIHRvIHBsYW4gbm9kZXMKCi0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjQXN5bmMuYyAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgIHwgMTMxICsrKysrKysrKysrKysrKysrKy0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgIHwgIDMxICsrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICAgICAgICAgfCAgIDcgKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyAgICAgICB8ICAgNyArKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIHwgICA3ICsrCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyAgICAgICAgfCAgIDcgKysKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICAgNyArKwogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudC5jICAgIHwgIDQ5ICsrKysrKystCiBzcmMvaW5jbHVkZS9leGVj dXRvci9pbnN0cnVtZW50LmggICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaCAgICAgICAgICAgICB8ICAgNCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxh aW4ub3V0ICAgICAgfCAgNTIgKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsICAgICAgICAgICB8ICAyOSArKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgMzMzIGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA5ZDczNzJm NTQxNS4uMDU3NWFlODM2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUzMCw2ICs1MzAs OCBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1F TlRfV0FMOwogCWlmIChlcy0+aW8pCiAJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRf SU87CisJaWYgKGVzLT53YWl0cykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9X QUlUUzsKIAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZvciB0aGUgZW50aXJl IHN0YXRlbWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTIzMzIsNiArMjMzNCw4IEBAIEV4 cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJCXNob3df YnVmZmVyX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5pbnN0ci5idWZ1c2FnZSk7 CiAJaWYgKGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQogCQlzaG93X3dhbF91c2Fn ZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOworCWlmIChlcy0+ d2FpdHMpCisJCXNob3dfd2FpdF9ldmVudF91c2FnZShlcywgcGxhbnN0YXRlLT53YWl0X2V2ZW50 X3VzYWdlKTsKIAogCS8qIFByZXBhcmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdlICovCiAJ aWYgKGVzLT53b3JrZXJzX3N0YXRlICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAmJiBlcy0+ dmVyYm9zZSkKQEAgLTQ1NTksNyArNDU2Myw3IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCiAJaWYgKHVzYWdlID09 IE5VTEwpCiAJCXJldHVybjsKIAotCWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RF WFQgJiYgdXNhZ2UtPm5lbnRyaWVzID09IDApCisJaWYgKHVzYWdlLT5uZW50cmllcyA9PSAwKQog CQlyZXR1cm47CiAKIAlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNBc3luYy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0Fz eW5jLmMKaW5kZXggY2Y3ZGRiYjAxZjQuLmU3M2VhNTVjZjkyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjQXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj QXN5bmMuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQu aCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQXBwZW5kLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZUZvcmVpZ25zY2FuLmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiAvKgog ICogQXN5bmNocm9ub3VzbHkgcmVxdWVzdCBhIHR1cGxlIGZyb20gYSBkZXNpZ25lZCBhc3luYy1j YXBhYmxlIG5vZGUuCkBAIC0yNiwxMiArMjcsMTcgQEAKIHZvaWQKIEV4ZWNBc3luY1JlcXVlc3Qo QXN5bmNSZXF1ZXN0ICphcmVxKQogeworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193YWl0X2V2 ZW50X3VzYWdlID0gTlVMTDsKKwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmNoZ1BhcmFtICE9IE5V TEwpCS8qIHNvbWV0aGluZyBjaGFuZ2VkPyAqLwogCQlFeGVjUmVTY2FuKGFyZXEtPnJlcXVlc3Rl ZSk7CS8qIGxldCBSZVNjYW4gaGFuZGxlIHRoaXMgKi8KIAogCS8qIG11c3QgcHJvdmlkZSBvdXIg b3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKGFyZXEtPnJlcXVlc3RlZS0+aW5z dHJ1bWVudCkKIAkJSW5zdHJTdGFydE5vZGUoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50KTsK KwlpZiAoYXJlcS0+cmVxdWVzdGVlLT53YWl0X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193YWl0 X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93YWl0X2V2ZW50X3VzYWdlKGFyZXEtPnJl cXVlc3RlZS0+d2FpdF9ldmVudF91c2FnZSk7CiAKIAlzd2l0Y2ggKG5vZGVUYWcoYXJlcS0+cmVx dWVzdGVlKSkKIAl7CkBAIC00Nyw2ICs1Myw4IEBAIEV4ZWNBc3luY1JlcXVlc3QoQXN5bmNSZXF1 ZXN0ICphcmVxKQogCUV4ZWNBc3luY1Jlc3BvbnNlKGFyZXEpOwogCiAJLyogbXVzdCBwcm92aWRl IG91ciBvd24gaW5zdHJ1bWVudGF0aW9uIHN1cHBvcnQgKi8KKwlpZiAoYXJlcS0+cmVxdWVzdGVl LT53YWl0X2V2ZW50X3VzYWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHBy ZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UpOwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1l bnQpCiAJCUluc3RyU3RvcE5vZGUoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50LAogCQkJCQkg IFR1cElzTnVsbChhcmVxLT5yZXN1bHQpID8gMC4wIDogMS4wKTsKQEAgLTYyLDkgKzcwLDE0IEBA IEV4ZWNBc3luY1JlcXVlc3QoQXN5bmNSZXF1ZXN0ICphcmVxKQogdm9pZAogRXhlY0FzeW5jQ29u ZmlndXJlV2FpdChBc3luY1JlcXVlc3QgKmFyZXEpCiB7CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZp b3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworCiAJLyogbXVzdCBwcm92aWRlIG91ciBvd24g aW5zdHJ1bWVudGF0aW9uIHN1cHBvcnQgKi8KIAlpZiAoYXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVt ZW50KQogCQlJbnN0clN0YXJ0Tm9kZShhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQpOworCWlm IChhcmVxLT5yZXF1ZXN0ZWUtPndhaXRfZXZlbnRfdXNhZ2UpCisJCXByZXZpb3VzX3dhaXRfZXZl bnRfdXNhZ2UgPQorCQkJcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoYXJlcS0+cmVxdWVz dGVlLT53YWl0X2V2ZW50X3VzYWdlKTsKIAogCXN3aXRjaCAobm9kZVRhZyhhcmVxLT5yZXF1ZXN0 ZWUpKQogCXsKQEAgLTc4LDYgKzkxLDggQEAgRXhlY0FzeW5jQ29uZmlndXJlV2FpdChBc3luY1Jl cXVlc3QgKmFyZXEpCiAJfQogCiAJLyogbXVzdCBwcm92aWRlIG91ciBvd24gaW5zdHJ1bWVudGF0 aW9uIHN1cHBvcnQgKi8KKwlpZiAoYXJlcS0+cmVxdWVzdGVlLT53YWl0X2V2ZW50X3VzYWdlKQor CQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZlbnRfdXNh Z2UpOwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUo YXJlcS0+cmVxdWVzdGVlLT5pbnN0cnVtZW50LCAwLjApOwogfQpAQCAtODgsOSArMTAzLDE0IEBA IEV4ZWNBc3luY0NvbmZpZ3VyZVdhaXQoQXN5bmNSZXF1ZXN0ICphcmVxKQogdm9pZAogRXhlY0Fz eW5jTm90aWZ5KEFzeW5jUmVxdWVzdCAqYXJlcSkKIHsKKwlXYWl0RXZlbnRVc2FnZSAqcHJldmlv dXNfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7CisKIAkvKiBtdXN0IHByb3ZpZGUgb3VyIG93biBp bnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLwogCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1l bnQpCiAJCUluc3RyU3RhcnROb2RlKGFyZXEtPnJlcXVlc3RlZS0+aW5zdHJ1bWVudCk7CisJaWYg KGFyZXEtPnJlcXVlc3RlZS0+d2FpdF9ldmVudF91c2FnZSkKKwkJcHJldmlvdXNfd2FpdF9ldmVu dF91c2FnZSA9CisJCQlwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShhcmVxLT5yZXF1ZXN0 ZWUtPndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJc3dpdGNoIChub2RlVGFnKGFyZXEtPnJlcXVlc3Rl ZSkpCiAJewpAQCAtMTA2LDYgKzEyNiw4IEBAIEV4ZWNBc3luY05vdGlmeShBc3luY1JlcXVlc3Qg KmFyZXEpCiAJRXhlY0FzeW5jUmVzcG9uc2UoYXJlcSk7CiAKIAkvKiBtdXN0IHByb3ZpZGUgb3Vy IG93biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChhcmVxLT5yZXF1ZXN0ZWUtPndh aXRfZXZlbnRfdXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlv dXNfd2FpdF9ldmVudF91c2FnZSk7CiAJaWYgKGFyZXEtPnJlcXVlc3RlZS0+aW5zdHJ1bWVudCkK IAkJSW5zdHJTdG9wTm9kZShhcmVxLT5yZXF1ZXN0ZWUtPmluc3RydW1lbnQsCiAJCQkJCSAgVHVw SXNOdWxsKGFyZXEtPnJlc3VsdCkgPyAwLjAgOiAxLjApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwppbmRleCA4MjEzNTY1YTcwOC4uZjc3ZjUzOWRkMjcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jCkBAIC04Myw2ICs4MywxMiBAQCB0eXBlZGVmIHN0cnVjdCBGaXhlZFBh cmFsbGVsRXhlY3V0b3JTdGF0ZQogCWludAkJCWppdF9mbGFnczsKIH0gRml4ZWRQYXJhbGxlbEV4 ZWN1dG9yU3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2Vy Cit7CisJaW50CQkJbmVudHJpZXM7CisJZHNhX3BvaW50ZXIgZW50cmllczsKK30gU2hhcmVkV2Fp dEV2ZW50VXNhZ2VXb3JrZXI7CisKIC8qCiAgKiBEU00gc3RydWN0dXJlIGZvciBhY2N1bXVsYXRp bmcgcGVyLVBsYW5TdGF0ZSBpbnN0cnVtZW50YXRpb24uCiAgKgpAQCAtOTIsNiArOTgsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgRml4ZWRQYXJhbGxlbEV4ZWN1dG9yU3RhdGUKICAqIG9mIHRoZSBmaXJz dCBOb2RlSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMgd2lsbCBkZXBlbmQgb24gdGhlIGxl bmd0aCBvZgogICogdGhlIHBsYW5fbm9kZV9pZCBhcnJheS4KICAqCisgKiB3YWl0X2V2ZW50X3Vz YWdlX29mZnNldDogT2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBzdHJ1Y3R1 cmUsCisgKiBvZiB0aGUgZmlyc3QgU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgb2JqZWN0LCBv ciAwIGlmIHdhaXQgZXZlbnQgdXNhZ2UgaXMKKyAqIG5vdCBiZWluZyBjb2xsZWN0ZWQuCisgKgog ICogbnVtX3dvcmtlcnM6IE51bWJlciBvZiB3b3JrZXJzLgogICoKICAqIG51bV9wbGFuX25vZGVz OiBOdW1iZXIgb2YgcGxhbiBub2Rlcy4KQEAgLTEwMyw2ICsxMTMsNyBAQCBzdHJ1Y3QgU2hhcmVk RXhlY3V0b3JJbnN0cnVtZW50YXRpb24KIHsKIAlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnM7CiAJ aW50CQkJaW5zdHJ1bWVudF9vZmZzZXQ7CisJaW50CQkJd2FpdF9ldmVudF91c2FnZV9vZmZzZXQ7 CiAJaW50CQkJbnVtX3dvcmtlcnM7CiAJaW50CQkJbnVtX3BsYW5fbm9kZXM7CiAJaW50CQkJcGxh bl9ub2RlX2lkW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CkBAIC0xMTAsMTcgKzEyMSwxNyBAQCBz dHJ1Y3QgU2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24KIAkvKgogCSAqIEFycmF5IG9mIG51 bV9wbGFuX25vZGVzICogbnVtX3dvcmtlcnMgTm9kZUluc3RydW1lbnRhdGlvbiBvYmplY3RzCiAJ ICogZm9sbG93cy4KKwkgKgorCSAqIElmIHdhaXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0IGlzIG5vbi16 ZXJvLCBhbiBhcnJheSBvZiBudW1fcGxhbl9ub2RlcyAqCisJICogbnVtX3dvcmtlcnMgU2hhcmVk V2FpdEV2ZW50VXNhZ2VXb3JrZXIgb2JqZWN0cyBmb2xsb3dzLgogCSAqLwogfTsKICNkZWZpbmUg R2V0SW5zdHJ1bWVudGF0aW9uQXJyYXkoc2VpKSBcCiAJKFN0YXRpY0Fzc2VydFZhcmlhYmxlSXNP ZlR5cGVNYWNybyhzZWksIFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICopLCBcCiAJIChO b2RlSW5zdHJ1bWVudGF0aW9uICopICgoKGNoYXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9v ZmZzZXQpKQotCi10eXBlZGVmIHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlcgotewot CWludAkJCW5lbnRyaWVzOwotCWRzYV9wb2ludGVyIGVudHJpZXM7Ci19IFNoYXJlZFdhaXRFdmVu dFVzYWdlV29ya2VyOworI2RlZmluZSBHZXRJbnN0cnVtZW50YXRpb25XYWl0RXZlbnRVc2FnZUFy cmF5KHNlaSkgXAorCShTdGF0aWNBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFjcm8oc2VpLCBTaGFy ZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAorCSAoU2hhcmVkV2FpdEV2ZW50VXNhZ2VX b3JrZXIgKikgKCgoY2hhciAqKSBzZWkpICsgc2VpLT53YWl0X2V2ZW50X3VzYWdlX29mZnNldCkp CiAKIHN0cnVjdCBTaGFyZWRXYWl0RXZlbnRVc2FnZQogewpAQCAtMTQzLDYgKzE1NCwxMiBAQCB0 eXBlZGVmIHN0cnVjdCBFeGVjUGFyYWxsZWxJbml0aWFsaXplRFNNQ29udGV4dAogCWludAkJCW5u b2RlczsKIH0gRXhlY1BhcmFsbGVsSW5pdGlhbGl6ZURTTUNvbnRleHQ7CiAKK3R5cGVkZWYgc3Ry dWN0IEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uQ29udGV4dAoreworCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb247CisJZHNhX2FyZWEgICAq YXJlYTsKK30gRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb25Db250ZXh0OworCiAv KiBIZWxwZXIgZnVuY3Rpb25zIHRoYXQgcnVuIGluIHRoZSBwYXJhbGxlbCBsZWFkZXIuICovCiBz dGF0aWMgY2hhciAqRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUp Owogc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsRXN0aW1hdGUoUGxhblN0YXRlICpwbGFuc3RhdGUs CkBAIC0xNTQsOCArMTcxLDExIEBAIHN0YXRpYyBzaG1fbXFfaGFuZGxlICoqRXhlY1BhcmFsbGVs U2V0dXBUdXBsZVF1ZXVlcyhQYXJhbGxlbENvbnRleHQgKnBjeHQsCiBzdGF0aWMgYm9vbCBFeGVj UGFyYWxsZWxSZUluaXRpYWxpemVEU00oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJ UGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIHN0YXRpYyBib29sIEV4ZWNQYXJhbGxlbFJldHJpZXZl SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJCQkJCQkJCQkJU2hhcmVk RXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbik7CisJCQkJCQkJCQkJCQlF eGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbkNvbnRleHQgKnIpOwogc3RhdGljIHZv aWQgRXhlY1BhcmFsbGVsUmV0cmlldmVXYWl0RXZlbnRVc2FnZShQYXJhbGxlbEV4ZWN1dG9ySW5m byAqcGVpKTsKK3N0YXRpYyB2b2lkIEV4ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlV29y a2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIsCisJCQkJCQkJCQkJCQkgICBk c2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2Fn ZSk7CiBzdGF0aWMgdm9pZCBFeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZShTaGFyZWRX YWl0RXZlbnRVc2FnZSAqc2hhcmVkLAogCQkJCQkJCQkJCQkgZHNhX2FyZWEgKmFyZWEsCiAJCQkJ CQkJCQkJCSBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwpAQCAtNjkxLDYgKzcxMSw3IEBA IEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAlpbnQJCQlpbnN0cnVtZW50YXRpb25fbGVuID0gMDsKIAlpbnQJCQlqaXRfaW5zdHJ1bWVu dGF0aW9uX2xlbiA9IDA7CiAJaW50CQkJaW5zdHJ1bWVudF9vZmZzZXQgPSAwOworCWludAkJCXdh aXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0ID0gMDsKIAlTaXplCQlkc2FfbWluc2l6ZSA9IGRzYV9taW5p bXVtX3NpemUoKTsKIAljaGFyCSAgICpxdWVyeV9zdHJpbmc7CiAJaW50CQkJcXVlcnlfbGVuOwpA QCAtNzk4LDYgKzgxOSwxNCBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbl9sZW4gKz0KIAkJCW11bF9z aXplKHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSwKIAkJCQkJIG11bF9zaXplKGUubm5vZGVz LCBud29ya2VycykpOworCQlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9X QUlUUykKKwkJeworCQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9IE1BWEFMSUdOKGluc3RydW1lbnRh dGlvbl9sZW4pOworCQkJd2FpdF9ldmVudF91c2FnZV9vZmZzZXQgPSBpbnN0cnVtZW50YXRpb25f bGVuOworCQkJaW5zdHJ1bWVudGF0aW9uX2xlbiArPQorCQkJCW11bF9zaXplKHNpemVvZihTaGFy ZWRXYWl0RXZlbnRVc2FnZVdvcmtlciksCisJCQkJCQkgbXVsX3NpemUoZS5ubm9kZXMsIG53b3Jr ZXJzKSk7CisJCX0KIAkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOwogCkBAIC05MDMsMTEgKzkzMiwyMyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbiA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKIAkJaW5z dHJ1bWVudGF0aW9uLT5pbnN0cnVtZW50X29wdGlvbnMgPSBlc3RhdGUtPmVzX2luc3RydW1lbnQ7 CiAJCWluc3RydW1lbnRhdGlvbi0+aW5zdHJ1bWVudF9vZmZzZXQgPSBpbnN0cnVtZW50X29mZnNl dDsKKwkJaW5zdHJ1bWVudGF0aW9uLT53YWl0X2V2ZW50X3VzYWdlX29mZnNldCA9IHdhaXRfZXZl bnRfdXNhZ2Vfb2Zmc2V0OwogCQlpbnN0cnVtZW50YXRpb24tPm51bV93b3JrZXJzID0gbndvcmtl cnM7CiAJCWluc3RydW1lbnRhdGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBlLm5ub2RlczsKIAkJaW5z dHJ1bWVudCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZv ciAoaSA9IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2Rl KCZpbnN0cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQsIGZhbHNlKTsKKwkJaWYgKHdh aXRfZXZlbnRfdXNhZ2Vfb2Zmc2V0ICE9IDApCisJCXsKKwkJCVNoYXJlZFdhaXRFdmVudFVzYWdl V29ya2VyICp3b3JrZXJfdXNhZ2U7CisKKwkJCXdvcmtlcl91c2FnZSA9IEdldEluc3RydW1lbnRh dGlvbldhaXRFdmVudFVzYWdlQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKKwkJCWZvciAoaSA9IDA7 IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCisJCQl7CisJCQkJd29ya2VyX3VzYWdlW2ld Lm5lbnRyaWVzID0gMDsKKwkJCQl3b3JrZXJfdXNhZ2VbaV0uZW50cmllcyA9IEludmFsaWREc2FQ b2ludGVyOworCQkJfQorCQl9CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxf S0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKIAkJcGVpLT5p bnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CkBAIC0xMTM3LDkgKzExNzgsMTEgQEAg RXhlY1BhcmFsbGVsUmVJbml0aWFsaXplRFNNKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogICovCiBz dGF0aWMgYm9vbAogRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpwbGFuc3RhdGUsCi0JCQkJCQkJCQlTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudGF0aW9uKQorCQkJCQkJCQkJRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRp b25Db250ZXh0ICpyKQogeworCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVt ZW50YXRpb24gPSByLT5pbnN0cnVtZW50YXRpb247CiAJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5z dHJ1bWVudDsKKwlTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd2FpdF9ldmVudF91c2FnZSA9 IE5VTEw7CiAJaW50CQkJaTsKIAlpbnQJCQluOwogCWludAkJCWlieXRlczsKQEAgLTExNTksNiAr MTIwMiwzMCBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKIAlmb3IgKG4gPSAwOyBuIDwgaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2Vy czsgKytuKQogCQlJbnN0ckFnZ05vZGUocGxhbnN0YXRlLT5pbnN0cnVtZW50LCAmaW5zdHJ1bWVu dFtuXSk7CiAKKwkvKiBBY2N1bXVsYXRlIHRoZSB3YWl0IGV2ZW50IHVzYWdlIGZyb20gYWxsIHdv cmtlcnMuICovCisJaWYgKGluc3RydW1lbnRhdGlvbi0+d2FpdF9ldmVudF91c2FnZV9vZmZzZXQg IT0gMCAmJgorCQlwbGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UgIT0gTlVMTCkKKwl7CisJCXdh aXRfZXZlbnRfdXNhZ2UgPSBHZXRJbnN0cnVtZW50YXRpb25XYWl0RXZlbnRVc2FnZUFycmF5KGlu c3RydW1lbnRhdGlvbik7CisJCXdhaXRfZXZlbnRfdXNhZ2UgKz0gaSAqIGluc3RydW1lbnRhdGlv bi0+bnVtX3dvcmtlcnM7CisJCWZvciAobiA9IDA7IG4gPCBpbnN0cnVtZW50YXRpb24tPm51bV93 b3JrZXJzOyArK24pCisJCXsKKwkJCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIg PSAmd2FpdF9ldmVudF91c2FnZVtuXTsKKwkJCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7 CisKKwkJCWlmICh3b3JrZXItPm5lbnRyaWVzIDw9IDAgfHwgIURzYVBvaW50ZXJJc1ZhbGlkKHdv cmtlci0+ZW50cmllcykpCisJCQkJY29udGludWU7CisKKwkJCWVudHJpZXMgPSBkc2FfZ2V0X2Fk ZHJlc3Moci0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJCXBnc3RhdF9hY2N1bXVsYXRlX3dh aXRfZXZlbnRfdXNhZ2UocGxhbnN0YXRlLT53YWl0X2V2ZW50X3VzYWdlLAorCQkJCQkJCQkJCQkg ICBlbnRyaWVzLAorCQkJCQkJCQkJCQkgICB3b3JrZXItPm5lbnRyaWVzKTsKKwkJCWRzYV9mcmVl KHItPmFyZWEsIHdvcmtlci0+ZW50cmllcyk7CisJCQl3b3JrZXItPm5lbnRyaWVzID0gMDsKKwkJ CXdvcmtlci0+ZW50cmllcyA9IEludmFsaWREc2FQb2ludGVyOworCQl9CisJfQorCiAJLyoKIAkg KiBBbHNvIHN0b3JlIHRoZSBwZXItd29ya2VyIGRldGFpbC4KIAkgKgpAQCAtMTIxNiw3ICsxMjgz LDcgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJfQogCiAJcmV0dXJuIHBsYW5zdGF0ZV90cmVlX3dhbGtlcihwbGFuc3RhdGUsIEV4 ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uLAotCQkJCQkJCQkgaW5zdHJ1bWVudGF0 aW9uKTsKKwkJCQkJCQkJIHIpOwogfQogCiAvKgpAQCAtMTI5MCwyNSArMTM1NywyMSBAQCBFeGVj UGFyYWxsZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdlKFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkp CiB9CiAKIHN0YXRpYyB2b2lkCi1FeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZShTaGFy ZWRXYWl0RXZlbnRVc2FnZSAqc2hhcmVkLAotCQkJCQkJCQkgZHNhX2FyZWEgKmFyZWEsCi0JCQkJ CQkJCSBjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCitFeGVjUGFyYWxsZWxSZXBvcnRXYWl0 RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29ya2VyLAorCQkJ CQkJCQkJICAgZHNhX2FyZWEgKmFyZWEsCisJCQkJCQkJCQkgICBjb25zdCBXYWl0RXZlbnRVc2Fn ZSAqdXNhZ2UpCiB7Ci0JU2hhcmVkV2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlcjsKIAlXYWl0 RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOwogCWRzYV9wb2ludGVyIGVudHJpZXNfZHNhOwogCVNp emUJCWVudHJpZXNfc2l6ZTsKIAotCUFzc2VydChzaGFyZWQgIT0gTlVMTCk7CisJQXNzZXJ0KHdv cmtlciAhPSBOVUxMKTsKIAlBc3NlcnQoYXJlYSAhPSBOVUxMKTsKIAlBc3NlcnQodXNhZ2UgIT0g TlVMTCk7Ci0JQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7Ci0JQXNzZXJ0KFBhcmFsbGVsV29y a2VyTnVtYmVyIDwgc2hhcmVkLT5udW1fd29ya2Vycyk7CiAKIAlpZiAodXNhZ2UtPm5lbnRyaWVz IDw9IDApCiAJCXJldHVybjsKIAotCXdvcmtlciA9ICZzaGFyZWQtPndvcmtlcl91c2FnZVtQYXJh bGxlbFdvcmtlck51bWJlcl07CiAJZW50cmllc19zaXplID0gbXVsX3NpemUoc2l6ZW9mKFdhaXRF dmVudFVzYWdlRW50cnkpLCB1c2FnZS0+bmVudHJpZXMpOwogCWVudHJpZXNfZHNhID0gZHNhX2Fs bG9jYXRlKGFyZWEsIGVudHJpZXNfc2l6ZSk7CiAJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhh cmVhLCBlbnRyaWVzX2RzYSk7CkBAIC0xMzIwLDYgKzEzODMsMjAgQEAgRXhlY1BhcmFsbGVsUmVw b3J0V2FpdEV2ZW50VXNhZ2UoU2hhcmVkV2FpdEV2ZW50VXNhZ2UgKnNoYXJlZCwKIAl3b3JrZXIt PmVudHJpZXMgPSBlbnRyaWVzX2RzYTsKIH0KIAorc3RhdGljIHZvaWQKK0V4ZWNQYXJhbGxlbFJl cG9ydFdhaXRFdmVudFVzYWdlKFNoYXJlZFdhaXRFdmVudFVzYWdlICpzaGFyZWQsCisJCQkJCQkJ CSBkc2FfYXJlYSAqYXJlYSwKKwkJCQkJCQkJIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSkK K3sKKwlBc3NlcnQoc2hhcmVkICE9IE5VTEwpOworCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkp OworCUFzc2VydChQYXJhbGxlbFdvcmtlck51bWJlciA8IHNoYXJlZC0+bnVtX3dvcmtlcnMpOwor CisJRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoJnNoYXJlZC0+d29ya2Vy X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKKwkJCQkJCQkJCQkgICBhcmVhLAorCQkJCQkJ CQkJCSAgIHVzYWdlKTsKK30KKwogLyoKICAqIEZpbmlzaCBwYXJhbGxlbCBleGVjdXRpb24uICBX ZSB3YWl0IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIGZpbmlzaCwgYW5kCiAgKiBhY2N1bXVsYXRl IHRoZWlyIGJ1ZmZlci9XQUwgdXNhZ2UuCkBAIC0xMzg1LDggKzE0NjIsMTMgQEAgRXhlY1BhcmFs bGVsQ2xlYW51cChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVpKQogewogCS8qIEFjY3VtdWxhdGUg aW5zdHJ1bWVudGF0aW9uLCBpZiBhbnkuICovCiAJaWYgKHBlaS0+aW5zdHJ1bWVudGF0aW9uKQot CQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSwKLQkJ CQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOworCXsKKwkJRXhlY1BhcmFsbGVsUmV0cmll dmVJbnN0cnVtZW50YXRpb25Db250ZXh0IHI7CisKKwkJci5pbnN0cnVtZW50YXRpb24gPSBwZWkt Pmluc3RydW1lbnRhdGlvbjsKKwkJci5hcmVhID0gcGVpLT5hcmVhOworCQlFeGVjUGFyYWxsZWxS ZXRyaWV2ZUluc3RydW1lbnRhdGlvbihwZWktPnBsYW5zdGF0ZSwgJnIpOworCX0KIAogCS8qIEFj Y3VtdWxhdGUgSklUIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmppdF9p bnN0cnVtZW50YXRpb24pCkBAIC0xNDk1LDYgKzE1NzcsMTcgQEAgRXhlY1BhcmFsbGVsUmVwb3J0 SW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCUFzc2VydChJc1BhcmFsbGVs V29ya2VyKCkpOwogCUFzc2VydChQYXJhbGxlbFdvcmtlck51bWJlciA8IGluc3RydW1lbnRhdGlv bi0+bnVtX3dvcmtlcnMpOwogCUluc3RyQWdnTm9kZSgmaW5zdHJ1bWVudFtQYXJhbGxlbFdvcmtl ck51bWJlcl0sIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CisJaWYgKGluc3RydW1lbnRhdGlvbi0+ d2FpdF9ldmVudF91c2FnZV9vZmZzZXQgIT0gMCAmJgorCQlwbGFuc3RhdGUtPndhaXRfZXZlbnRf dXNhZ2UgIT0gTlVMTCkKKwl7CisJCVNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3YWl0X2V2 ZW50X3VzYWdlOworCisJCXdhaXRfZXZlbnRfdXNhZ2UgPSBHZXRJbnN0cnVtZW50YXRpb25XYWl0 RXZlbnRVc2FnZUFycmF5KGluc3RydW1lbnRhdGlvbik7CisJCXdhaXRfZXZlbnRfdXNhZ2UgKz0g aSAqIGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7CisJCUV4ZWNQYXJhbGxlbFJlcG9ydFdh aXRFdmVudFVzYWdlV29ya2VyKCZ3YWl0X2V2ZW50X3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSwKKwkJCQkJCQkJCQkJICAgcGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhLAorCQkJCQkJ CQkJCQkgICBwbGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UpOworCX0KIAogCXJldHVybiBwbGFu c3RhdGVfdHJlZV93YWxrZXIocGxhbnN0YXRlLCBFeGVjUGFyYWxsZWxSZXBvcnRJbnN0cnVtZW50 YXRpb24sCiAJCQkJCQkJCSBpbnN0cnVtZW50YXRpb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJv Y25vZGUuYwppbmRleCA3YzRjNjZlMzIzZi4uMDgxODU1YjNmZWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCkBAIC0xMTgsNiArMTE4LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9u b2RlV2luZG93QWdnLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVdvcmt0YWJsZXNjYW4uaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAj aW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhl Y1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKQEAgLTQxNSw2ICs0MTYsMTYgQEAgRXhl Y0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChl c3RhdGUtPmVzX2luc3RydW1lbnQpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NO b2RlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKIAkJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19jYXBh YmxlKTsKKwlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50ICYgSU5TVFJVTUVOVF9XQUlUUykKKwl7 CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJcmVzdWx0LT53YWl0X2V2ZW50 X3VzYWdlID0gcGFsbG9jX29iamVjdChXYWl0RXZlbnRVc2FnZSk7CisJCXBnc3RhdF9pbml0X3dh aXRfZXZlbnRfdXNhZ2UocmVzdWx0LT53YWl0X2V2ZW50X3VzYWdlLAorCQkJCQkJCQkJIGVzdGF0 ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CX0KIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC00ODEsNyArNDkyLDggQEAgRXhlY1Byb2NOb2Rl Rmlyc3QoUGxhblN0YXRlICpub2RlKQogICogVGhpcyBoYXMgZXNzZW50aWFsbHkgdGhlIHNhbWUg cmVzcG9uc2liaWxpdGllcyBhcyBFeGVjUHJvY05vZGUsCiAgKiBidXQgaXQgZG9lcyBub3QgZG8g SW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSAobWFpbmx5IGJlY2F1c2UKICAqIGl0IGNhbid0 IHRlbGwgaG93IG1hbnkgcmV0dXJuZWQgdHVwbGVzIHRvIGNvdW50KS4gIEVhY2ggcGVyLW5vZGUK LSAqIGZ1bmN0aW9uIG11c3QgcHJvdmlkZSBpdHMgb3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0 LgorICogZnVuY3Rpb24gbXVzdCBwcm92aWRlIGl0cyBvd24gaW5zdHJ1bWVudGF0aW9uIHN1cHBv cnQsIGluY2x1ZGluZworICogd2FpdCBldmVudCBhdHRyaWJ1dGlvbiB3aGVuIGVuYWJsZWQuCiAg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKi8KIE5vZGUgKgpAQCAtNzU4LDYgKzc3MCw5IEBAIEV4ZWNTaHV0ZG93bk5v ZGUoUGxhblN0YXRlICpub2RlKQogc3RhdGljIGJvb2wKIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2Vy KFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIHsKKwlib29sCQlub2RlX3J1bm5pbmc7 CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworCiAJ aWYgKG5vZGUgPT0gTlVMTCkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC03NzMsOCArNzg4LDE0IEBA IEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkK IAkgKiBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwgc28gYXMgdG8gYXZvaWQgaW5jb3JyZWN0bHkg bWFraW5nIGl0IGFwcGVhcgogCSAqIHRoYXQgaXQgaGFzLgogCSAqLwotCWlmIChub2RlLT5pbnN0 cnVtZW50ICYmIG5vZGUtPmluc3RydW1lbnQtPnJ1bm5pbmcpCisJbm9kZV9ydW5uaW5nID0gbm9k ZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5nOworCWlmIChub2RlX3J1 bm5pbmcpCisJewogCQlJbnN0clN0YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKKwkJaWYgKG5v ZGUtPndhaXRfZXZlbnRfdXNhZ2UpCisJCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJ CQlwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShub2RlLT53YWl0X2V2ZW50X3VzYWdlKTsK Kwl9CiAKIAlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwgRXhlY1NodXRkb3duTm9kZV93YWxr ZXIsIGNvbnRleHQpOwogCkBAIC04MDMsOCArODI0LDEyIEBAIEV4ZWNTaHV0ZG93bk5vZGVfd2Fs a2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAl9CiAKIAkvKiBTdG9wIHRoZSBu b2RlIGlmIHdlIHN0YXJ0ZWQgaXQgYWJvdmUsIHJlcG9ydGluZyAwIHR1cGxlcy4gKi8KLQlpZiAo bm9kZS0+aW5zdHJ1bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5ydW5uaW5nKQorCWlmIChub2Rl X3J1bm5pbmcpCisJeworCQlpZiAobm9kZS0+d2FpdF9ldmVudF91c2FnZSkKKwkJCXBnc3RhdF9y ZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9ldmVudF91c2FnZSk7CiAJCUlu c3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgMCk7CisJfQogCiAJcmV0dXJuIGZhbHNlOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGZmYmNkNTcyMTMzLi5hMWYyMjE4MGY4 MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1 ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L2luc3RyX3RpbWUu aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2 ZW50LmgiCiAKIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBzdGF0aWMgQnVmZmVyVXNhZ2Ug c2F2ZV9wZ0J1ZmZlclVzYWdlOwpAQCAtMTgxLDExICsxODIsMTcgQEAgVHVwbGVUYWJsZVNsb3Qg KgogRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKQogewogCVR1cGxlVGFibGVTbG90 ICpyZXN1bHQ7CisJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPSBO VUxMOwogCiAJSW5zdHJTdGFydE5vZGUobm9kZS0+aW5zdHJ1bWVudCk7CisJaWYgKG5vZGUtPndh aXRfZXZlbnRfdXNhZ2UpCisJCXByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UgPQorCQkJcGdzdGF0 X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2Uobm9kZS0+d2FpdF9ldmVudF91c2FnZSk7CiAKIAlyZXN1 bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOwogCisJaWYgKG5vZGUtPndhaXRfZXZl bnRfdXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2Fp dF9ldmVudF91c2FnZSk7CiAJSW5zdHJTdG9wTm9kZShub2RlLT5pbnN0cnVtZW50LCBUdXBJc051 bGwocmVzdWx0KSA/IDAuMCA6IDEuMCk7CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDkwMDdkZGEzODAyLi5lMmI0NDJiZDM3OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg ImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwQW5k LmgiCiAjaW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCisjaW5jbHVkZSAidXRpbHMvd2FpdF9l dmVudC5oIgogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNSwxMCArMTE2LDE0IEBAIE11bHRpRXhlY0Jp dG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAlpbnQJCQlucGxhbnM7CiAJaW50CQkJaTsK IAlUSURCaXRtYXAgICpyZXN1bHQgPSBOVUxMOworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3Ry dW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3Ry U3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50 X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93 YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQpAQCAtMTYyLDYgKzE2Nyw4IEBAIE11bHRpRXhl Y0JpdG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAkJZWxvZyhFUlJPUiwgIkJpdG1hcEFu ZCBkb2Vzbid0IHN1cHBvcnQgemVybyBpbnB1dHMiKTsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIg b3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCisJaWYgKG5vZGUtPnBzLndhaXRfZXZlbnRf dXNhZ2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9l dmVudF91c2FnZSk7CiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUo bm9kZS0+cHMuaW5zdHJ1bWVudCwgMCAvKiBYWFggKi8gKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCmluZGV4IDc5Nzg1MTRlMWJjLi5jMjc5OGE4MWU5NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMjgsNiAr MjgsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVJbmRleHNjYW4uaCIKICNpbmNsdWRlICJt aXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy90aWRiaXRtYXAuaCIKKyNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQsMTAgKzU1LDE0IEBAIE11bHRp RXhlY0JpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlJbmRleFNj YW5EZXNjIHNjYW5kZXNjOwogCWRvdWJsZQkJblR1cGxlcyA9IDA7CiAJYm9vbAkJZG9zY2FuOwor CVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8q IG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5v ZGUtPnNzLnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RhcnROb2RlKG5vZGUtPnNzLnBzLmluc3Ry dW1lbnQpOworCWlmIChub2RlLT5zcy5wcy53YWl0X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93YWl0X2V2ZW50X3VzYWdlKG5vZGUt PnNzLnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBleHRyYWN0IG5lY2Vzc2FyeSBp bmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtMTE2LDYgKzEyMSw4IEBAIE11bHRp RXhlY0JpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAl9CiAKIAkv KiBtdXN0IHByb3ZpZGUgb3VyIG93biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChu b2RlLT5zcy5wcy53YWl0X2V2ZW50X3VzYWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50 X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZlbnRfdXNhZ2UpOwogCWlmIChub2RlLT5zcy5wcy5pbnN0 cnVtZW50KQogCQlJbnN0clN0b3BOb2RlKG5vZGUtPnNzLnBzLmluc3RydW1lbnQsIG5UdXBsZXMp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCmluZGV4IDE0OGM4MGZkYWU2Li5lOWVl OTM0YTZmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTMzLDYgKzMzLDcg QEAKICNpbmNsdWRlICJleGVjdXRvci9ub2RlQml0bWFwT3IuaCIKICNpbmNsdWRlICJub2Rlcy90 aWRiaXRtYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0 X2V2ZW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE2LDEwICsxMTcsMTQgQEAgTXVsdGlFeGVj Qml0bWFwT3IoQml0bWFwT3JTdGF0ZSAqbm9kZSkKIAlpbnQJCQlucGxhbnM7CiAJaW50CQkJaTsK IAlUSURCaXRtYXAgICpyZXN1bHQgPSBOVUxMOworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91c193 YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3duIGluc3Ry dW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3Ry U3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50 X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9lbnRlcl93 YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyoKIAkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQpAQCAtMTgwLDYgKzE4NSw4IEBAIE11bHRpRXhl Y0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiAJCWVsb2coRVJST1IsICJCaXRtYXBPciBk b2Vzbid0IHN1cHBvcnQgemVybyBpbnB1dHMiKTsKIAogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3du IGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCisJaWYgKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNh Z2UpCisJCXBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UocHJldmlvdXNfd2FpdF9ldmVu dF91c2FnZSk7CiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJCUluc3RyU3RvcE5vZGUobm9k ZS0+cHMuaW5zdHJ1bWVudCwgMCAvKiBYWFggKi8gKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMK aW5kZXggODgyNWJiNmZhMjMuLjZlOWU0YjQyMThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMK QEAgLTEwNSw5ICsxMDUsMTQgQEAgRXhlY0hhc2goUGxhblN0YXRlICpwc3RhdGUpCiBOb2RlICoK IE11bHRpRXhlY0hhc2goSGFzaFN0YXRlICpub2RlKQogeworCVdhaXRFdmVudFVzYWdlICpwcmV2 aW91c193YWl0X2V2ZW50X3VzYWdlID0gTlVMTDsKKwogCS8qIG11c3QgcHJvdmlkZSBvdXIgb3du IGluc3RydW1lbnRhdGlvbiBzdXBwb3J0ICovCiAJaWYgKG5vZGUtPnBzLmluc3RydW1lbnQpCiAJ CUluc3RyU3RhcnROb2RlKG5vZGUtPnBzLmluc3RydW1lbnQpOworCWlmIChub2RlLT5wcy53YWl0 X2V2ZW50X3VzYWdlKQorCQlwcmV2aW91c193YWl0X2V2ZW50X3VzYWdlID0KKwkJCXBnc3RhdF9l bnRlcl93YWl0X2V2ZW50X3VzYWdlKG5vZGUtPnBzLndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJaWYg KG5vZGUtPnBhcmFsbGVsX3N0YXRlICE9IE5VTEwpCiAJCU11bHRpRXhlY1BhcmFsbGVsSGFzaChu b2RlKTsKQEAgLTExNSw2ICsxMjAsOCBAQCBNdWx0aUV4ZWNIYXNoKEhhc2hTdGF0ZSAqbm9kZSkK IAkJTXVsdGlFeGVjUHJpdmF0ZUhhc2gobm9kZSk7CiAKIAkvKiBtdXN0IHByb3ZpZGUgb3VyIG93 biBpbnN0cnVtZW50YXRpb24gc3VwcG9ydCAqLworCWlmIChub2RlLT5wcy53YWl0X2V2ZW50X3Vz YWdlKQorCQlwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3VzYWdlKHByZXZpb3VzX3dhaXRfZXZl bnRfdXNhZ2UpOwogCWlmIChub2RlLT5wcy5pbnN0cnVtZW50KQogCQlJbnN0clN0b3BOb2RlKG5v ZGUtPnBzLmluc3RydW1lbnQsIG5vZGUtPmhhc2h0YWJsZS0+cmVwb3J0VHVwbGVzKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGViMDFiYzNkODhjLi4zZDVh MTBiNDRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjcs NiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdl L3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCkBAIC00Nyw2 ICs0OCw3IEBAIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2FsX215X3dhaXRf ZXZlbnRfaW5mbzsKIAogaW50CQkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPSAwOwog c3RhdGljIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IE5VTEw7Citz dGF0aWMgV2FpdEV2ZW50VXNhZ2UgKnBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UgPSBOVUxM Owogc3RhdGljIHVpbnQzMiBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsKIHN0 YXRpYyBpbnN0cl90aW1lIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0OwogCkBAIC0zNTgs NiArMzYwLDI4IEBAIHBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2Uodm9pZCkKIAlteV93 YWl0X2V2ZW50X2luZm8gPSAmbG9jYWxfbXlfd2FpdF9ldmVudF9pbmZvOwogfQogCisvKgorICog SW5pdGlhbGl6ZSBhIHdhaXQgZXZlbnQgdXNhZ2UgYWNjdW11bGF0b3IuCisgKi8KK3ZvaWQKK3Bn c3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlD b250ZXh0IG1lbWNvbnRleHQpCit7CisJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOworCUFzc2VydCht ZW1jb250ZXh0ICE9IE5VTEwpOworCisJbWVtc2V0KHVzYWdlLCAwLCBzaXplb2YoV2FpdEV2ZW50 VXNhZ2UpKTsKKworCS8qCisJICogV2FpdCBldmVudHMgbWF5IGVuZCBpbnNpZGUgY3JpdGljYWwg c2VjdGlvbnMsIGZvciBleGFtcGxlIHdoaWxlCisJICogcGVyZm9ybWluZyBzeW5jaHJvbm91cyBJ L08uICBLZWVwIHVzYWdlIGVudHJpZXMgaW4gYSBkZWRpY2F0ZWQgY29udGV4dAorCSAqIHdoZXJl IHRoZSBtZW1vcnkgbWFuYWdlciBwZXJtaXRzIHRoYXQgYWNjb3VudGluZyBwYXRoIHRvIGdyb3cu CisJICovCisJdXNhZ2UtPm1lbWNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUobWVtY29u dGV4dCwKKwkJCQkJCQkJCQkJICAiV2FpdCBFdmVudCBVc2FnZSIsCisJCQkJCQkJCQkJCSAgQUxM T0NTRVRfU01BTExfU0laRVMpOworCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9u KHVzYWdlLT5tZW1jb250ZXh0LCB0cnVlKTsKK30KKwogLyoKICAqIFN0YXJ0IGNvbGxlY3Rpbmcg ZXhhY3Qgd2FpdCBldmVudCB0aW1pbmdzIGluIHRoaXMgYmFja2VuZC4KICAqCkBAIC0zNzUsOSAr Mzk5LDkgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVz YWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAKIAlpZiAocGdzdGF0X3dhaXRfZXZlbnRf dXNhZ2VfZGVwdGgrKyA9PSAwKQogCXsKLQkJbWVtc2V0KHVzYWdlLCAwLCBzaXplb2YoV2FpdEV2 ZW50VXNhZ2UpKTsKLQkJdXNhZ2UtPm1lbWNvbnRleHQgPSBtZW1jb250ZXh0OworCQlwZ3N0YXRf aW5pdF93YWl0X2V2ZW50X3VzYWdlKHVzYWdlLCBtZW1jb250ZXh0KTsKIAkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2UgPSB1c2FnZTsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IE5V TEw7CiAJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSAwOwogCQlJTlNUUl9USU1F X1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKIAl9CkBAIC0zOTgsMTEg KzQyMiwyNyBAQCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVz YWdlKQogCQkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAkJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2UgPSBOVUxMOworCQlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlID0gTlVM TDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KIH0KIAorV2FpdEV2 ZW50VXNhZ2UgKgorcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2Ug KnVzYWdlKQoreworCVdhaXRFdmVudFVzYWdlICpwcmV2aW91cyA9IHBnc3RhdF93YWl0X2V2ZW50 X25vZGVfdXNhZ2U7CisKKwlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlID0gdXNhZ2U7CisJ cmV0dXJuIHByZXZpb3VzOworfQorCit2b2lkCitwZ3N0YXRfcmVzdG9yZV93YWl0X2V2ZW50X3Vz YWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSkKK3sKKwlwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3Vz YWdlID0gdXNhZ2U7Cit9CisKIC8qCiAgKiBSZWNvcmQgdGhlIGJlZ2lubmluZyBvZiBhIHdhaXQg ZXZlbnQgZm9yIGV4YWN0IEVYUExBSU4tc3R5bGUgYWNjb3VudGluZy4KICAqLwpAQCAtNDQ0LDYg KzQ4NCwxMSBAQCBwZ3N0YXRfY291bnRfd2FpdF9ldmVudF9lbmQodm9pZCkKIAkJCQkJICBwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAogCQkJCQkgIDEsCiAJCQkJCSAgJmVsYXBzZWQp OworCWlmIChwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlICE9IE5VTEwpCisJCVdhaXRFdmVu dFVzYWdlQWRkKHBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UsCisJCQkJCQkgIHBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQsCisJCQkJCQkgIDEsCisJCQkJCQkgICZlbGFwc2VkKTsK IAogCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJlbnQgPSAwOwogCUlOU1RSX1RJTUVfU0VU X1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oCmluZGV4IGYwOTNhNTJhYWUwLi5mNDZlZTAzZDJjMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2lu c3RydW1lbnQuaApAQCAtNjUsNiArNjUsNyBAQCB0eXBlZGVmIGVudW0gSW5zdHJ1bWVudE9wdGlv bgogCUlOU1RSVU1FTlRfUk9XUyA9IDEgPDwgMiwJLyogbmVlZHMgcm93IGNvdW50ICovCiAJSU5T VFJVTUVOVF9XQUwgPSAxIDw8IDMsCS8qIG5lZWRzIFdBTCB1c2FnZSAqLwogCUlOU1RSVU1FTlRf SU8gPSAxIDw8IDQsCQkvKiBuZWVkcyBJTyB1c2FnZSAqLworCUlOU1RSVU1FTlRfV0FJVFMgPSAx IDw8IDUsCS8qIG5lZWRzIHdhaXQgZXZlbnQgdXNhZ2UgKi8KIAlJTlNUUlVNRU5UX0FMTCA9IFBH X0lOVDMyX01BWAogfSBJbnN0cnVtZW50T3B0aW9uOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IDc4MWM4Yzc5MTMyLi41NmY5ZGNiZWY4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEyMTIs NiArMTIxMiw3IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZQogCiAJTm9kZUluc3RydW1lbnRh dGlvbiAqaW5zdHJ1bWVudDsJLyogT3B0aW9uYWwgcnVudGltZSBzdGF0cyBmb3IgdGhpcwogCQkJ CQkJCQkJCSAqIG5vZGUgKi8KKwlXYWl0RXZlbnRVc2FnZSAqd2FpdF9ldmVudF91c2FnZTsgLyog T3B0aW9uYWwgd2FpdCBldmVudCB1c2FnZSAqLwogCVdvcmtlck5vZGVJbnN0cnVtZW50YXRpb24g Kndvcmtlcl9pbnN0cnVtZW50OwkvKiBwZXItd29ya2VyCiAJCQkJCQkJCQkJCQkJICogaW5zdHJ1 bWVudGF0aW9uICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Mzk5MjEzN2VlNy4uNjQ0 MTEyODg0MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTM2LDEyICszNiwxNiBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50 X2luZm8pOwogc3RhdGljIGlubGluZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCk7 CiBleHRlcm4gdm9pZCBwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh1aW50MzIgKndhaXRf ZXZlbnRfaW5mbyk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdl KHZvaWQpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2luaXRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZl bnRVc2FnZSAqdXNhZ2UsCisJCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAq dXNhZ2UsCiAJCQkJCQkJCQkJICBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X2VuZF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVz YWdlICp1c2FnZSwKIAkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50 cmllcywKIAkJCQkJCQkJCQkJICAgaW50IG5lbnRyaWVzKTsKK2V4dGVybiBXYWl0RXZlbnRVc2Fn ZSAqcGdzdGF0X2VudGVyX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKTsK K2V4dGVybiB2b2lkIHBnc3RhdF9yZXN0b3JlX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNh Z2UgKnVzYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHVp bnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3dhaXRfZXZl bnRfZW5kKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4 cGxhaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dAppbmRleCBl Mzg0N2UyMjJiZS4uYzA4NmZhNDhkODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWlu Lm91dApAQCAtMTAxLDEyICsxMDEsMTQgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChidWZmZXJzLCBmb3JtYXQgdGV4dCkgc2VsZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcKIAogLS0g V0FJVFMgb3B0aW9uCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2Vs ZWN0IHBnX3NsZWVwKDAuMDEpJyk7Ci0gICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgUmVzdWx0IChhY3R1YWwgcm93cz1OLk4gbG9vcHM9TikKKyAg IFdhaXQgRXZlbnRzOgorICAgICBUaW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBtcwog IFdhaXQgRXZlbnRzOgogICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMKLSgz IHJvd3MpCisoNSByb3dzKQogCiBzZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFp biAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1 ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFdh aXQgRXZlbnRzLDB9JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Y29s dW1uPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTExNCw2ICsxMTYs MTIgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwg IldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAo MSByb3cpCiAKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXpl LCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYs IGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsUGxhbixXYWl0IEV2 ZW50cywwfSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVw IiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KKygxIHJvdykKKwogYmVnaW47CiBjcmVh dGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9p ZAogICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19zbGVl cCc7CkBAIC0xMzAsNiArMTM4LDQ0IEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAog IHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0 IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK3NlbGVjdCBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFs bGVsX3BnX3NsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3 aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxQbGFufScsCisgICckLioqLiJXYWl0IEV2ZW50cyJb Kl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2Fs bHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1l b3V0In0KKygxIHJvdykKKworcm9sbGJhY2s7CitiZWdpbjsKKy0tIFRoaXMgdGVzdCBkZWxpYmVy YXRlbHkgY3JlYXRlcyBhIEJpdG1hcCBJbmRleCBTY2FuIHJ1bnRpbWUta2V5IHdhaXQuCistLSBU aGUgU1RBQkxFIFBML3BnU1FMIHdyYXBwZXIgaXMgdGVzdCBzY2FmZm9sZGluZzogU1RBQkxFIGxl dHMgdGhlCistLSBleHByZXNzaW9uIGJlIHVzZWQgYXMgYW4gaW5kZXggcnVudGltZSBrZXksIHdo aWxlIFBML3BnU1FMIHByZXZlbnRzIFNRTAorLS0gaW5saW5pbmcgZnJvbSBtb3ZpbmcgcGdfc2xl ZXAoKSBvdXQgb2YgdGhlIEJpdG1hcCBJbmRleCBTY2FuIGJvdW5kYXJ5LgorLS0gVGhlIHBsYW5u ZXIgR1VDcyBiZWxvdyBhcmUgbGlrZXdpc2UgdGVzdC1vbmx5IHNjYWZmb2xkaW5nIHRvIG1ha2Ug dGhlCistLSBub2RlIHNoYXBlIGRldGVybWluaXN0aWMuCitjcmVhdGUgZnVuY3Rpb24gcGdfdGVt cC5leHBsYWluX3dhaXRzX3NsZWVwX2ludChpbnQpIHJldHVybnMgaW50CisgIGxhbmd1YWdlIHBs cGdzcWwgc3RhYmxlIGFzICQkYmVnaW4gcGVyZm9ybSBwZ19zbGVlcCgwLjAxKTsgcmV0dXJuICQx OyBlbmQkJDsKK2NyZWF0ZSB0ZW1wIHRhYmxlIGV4cGxhaW5fd2FpdHNfYml0bWFwIChhIGludCk7 CitpbnNlcnQgaW50byBleHBsYWluX3dhaXRzX2JpdG1hcCBzZWxlY3QgZyBmcm9tIGdlbmVyYXRl X3NlcmllcygxLCAxMCkgZzsKK2NyZWF0ZSBpbmRleCBleHBsYWluX3dhaXRzX2JpdG1hcF9hX2lk eCBvbiBleHBsYWluX3dhaXRzX2JpdG1hcChhKTsKK2FuYWx5emUgZXhwbGFpbl93YWl0c19iaXRt YXA7CitzZXQgbG9jYWwgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX2lu ZGV4c2NhbiA9IG9mZjsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWlu X2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1t YXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGVjdCAqIGZyb20gZXhwbGFpbl93YWl0c19iaXRtYXAKKyAgICAg ICAgICAgICAgICAgICAgICAgICB3aGVyZSBhID0gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVw X2ludCgxKScpICM+ICd7MCxQbGFufScsCisgICckLioqID8gKEAuIk5vZGUgVHlwZSIgPT0gIkJp dG1hcCBJbmRleCBTY2FuIikuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAi UGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25iX3BhdGhf cXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7IlRpbWUiOiAwLjAsICJDYWxscyI6IDAsICJXYWl0IEV2ZW50IjogIlBn U2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVvdXQifQorKDEgcm93KQorCiByb2xsYmFj azsKIGV4cGxhaW4gKHdhaXRzKSBzZWxlY3QgMTsKIEVSUk9SOiAgRVhQTEFJTiBvcHRpb24gV0FJ VFMgcmVxdWlyZXMgQU5BTFlaRQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhw bGFpbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAppbmRleCA4ODIxMjUw YmNlZi4uYmQxOTZmMjQ4ZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxh aW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCkBAIC03MSw2ICs3 MSw3IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYnVmZmVycywgZm9ybWF0IHRl eHQpIHNlbGVjdCAqIGZyb20gaW50OF90YmwgaTgnCiAtLSBXQUlUUyBvcHRpb24KIHNlbGVjdCBl eHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKTsK IHNlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBq c29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMsMH0nOworc2Vs ZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0 cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24p IHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKIGJl Z2luOwogY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAucGFyYWxsZWxfcGdfc2xlZXAoZmxvYXQ4KSBy ZXR1cm5zIHZvaWQKICAgbGFuZ3VhZ2UgaW50ZXJuYWwgdm9sYXRpbGUgcGFyYWxsZWwgc2FmZSBh cyAncGdfc2xlZXAnOwpAQCAtODIsNiArODMsMzQgQEAgc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlf Zmlyc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUx ID0gMScpICM+ICd7MCxXYWl0IEV2ZW50c30nLAogICAnJFsqXSA/IChALiJXYWl0IEV2ZW50IiA9 PSAiUGdTbGVlcCIpJwogKTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBs YWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGVjdCBwZ190ZW1wLnBhcmFsbGVsX3BnX3NsZWVwKDAuMDEp CisgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMScp ICM+ICd7MCxQbGFufScsCisgICckLioqLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVu dCIgPT0gIlBnU2xlZXAiKScKKyk7Cityb2xsYmFjazsKK2JlZ2luOworLS0gVGhpcyB0ZXN0IGRl bGliZXJhdGVseSBjcmVhdGVzIGEgQml0bWFwIEluZGV4IFNjYW4gcnVudGltZS1rZXkgd2FpdC4K Ky0tIFRoZSBTVEFCTEUgUEwvcGdTUUwgd3JhcHBlciBpcyB0ZXN0IHNjYWZmb2xkaW5nOiBTVEFC TEUgbGV0cyB0aGUKKy0tIGV4cHJlc3Npb24gYmUgdXNlZCBhcyBhbiBpbmRleCBydW50aW1lIGtl eSwgd2hpbGUgUEwvcGdTUUwgcHJldmVudHMgU1FMCistLSBpbmxpbmluZyBmcm9tIG1vdmluZyBw Z19zbGVlcCgpIG91dCBvZiB0aGUgQml0bWFwIEluZGV4IFNjYW4gYm91bmRhcnkuCistLSBUaGUg cGxhbm5lciBHVUNzIGJlbG93IGFyZSBsaWtld2lzZSB0ZXN0LW9ubHkgc2NhZmZvbGRpbmcgdG8g bWFrZSB0aGUKKy0tIG5vZGUgc2hhcGUgZGV0ZXJtaW5pc3RpYy4KK2NyZWF0ZSBmdW5jdGlvbiBw Z190ZW1wLmV4cGxhaW5fd2FpdHNfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKKyAgbGFuZ3Vh Z2UgcGxwZ3NxbCBzdGFibGUgYXMgJCRiZWdpbiBwZXJmb3JtIHBnX3NsZWVwKDAuMDEpOyByZXR1 cm4gJDE7IGVuZCQkOworY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl93YWl0c19iaXRtYXAgKGEg aW50KTsKK2luc2VydCBpbnRvIGV4cGxhaW5fd2FpdHNfYml0bWFwIHNlbGVjdCBnIGZyb20gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnOworY3JlYXRlIGluZGV4IGV4cGxhaW5fd2FpdHNfYml0bWFw X2FfaWR4IG9uIGV4cGxhaW5fd2FpdHNfYml0bWFwKGEpOworYW5hbHl6ZSBleHBsYWluX3dhaXRz X2JpdG1hcDsKK3NldCBsb2NhbCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3NldCBsb2NhbCBlbmFi bGVfaW5kZXhzY2FuID0gb2ZmOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4 cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYs IHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pCisgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICogZnJvbSBleHBsYWluX3dhaXRzX2JpdG1hcAor ICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGEgPSBwZ190ZW1wLmV4cGxhaW5fd2FpdHNf c2xlZXBfaW50KDEpJykgIz4gJ3swLFBsYW59JywKKyAgJyQuKiogPyAoQC4iTm9kZSBUeXBlIiA9 PSAiQml0bWFwIEluZGV4IFNjYW4iKS4iV2FpdCBFdmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQi ID09ICJQZ1NsZWVwIiknCispOwogcm9sbGJhY2s7CiBleHBsYWluICh3YWl0cykgc2VsZWN0IDE7 CiAKLS0gCjIuNTIuMAoK --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0004-Refine-EXPLAIN-WAITS-attribution-semantics.patch" Content-Disposition: attachment; filename="0004-Refine-EXPLAIN-WAITS-attribution-semantics.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaym53 RnJvbSAxZWE1MWVlNWY1NWRjY2FkN2Y3NjkyMjQ0NjQwMTcxZjRlNDJmY2JmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6NDkgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSA0LzddIFJlZmluZSBFWFBMQUlOIFdBSVRTIGF0dHJpYnV0aW9uIHNlbWFudGljcwoKLS0tCiBk b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCAgICAgICAgICAgfCAgNTIgKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgIDgyICsrKysrKystLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgfCAxMjEgKysrKysrKysrKyst LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIHwgMTg0ICsrKysr KysrKysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAg ICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dCAgIHwgMTI4ICsrKysr KysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAgfCAx MDIgKysrKysrKysrKysrLQogOCBmaWxlcyBjaGFuZ2VkLCA1NzQgaW5zZXJ0aW9ucygrKSwgMTA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwKaW5kZXggNTQ2MDU2OGFmMWQuLmQ2OTli MjE1MTIwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbApAQCAtMzE1LDkgKzMxNSw0NiBAQCBST0xMQkFD SzsKICAgICA8dGVybT48bGl0ZXJhbD5XQUlUUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3Rp dGVtPgogICAgICA8cGFyYT4KLSAgICAgIEluY2x1ZGUgZXhhY3QgYmFja2VuZC1sb2NhbCB3YWl0 IGV2ZW50IHRpbWluZyBvYnNlcnZlZCBkdXJpbmcgcXVlcnkKLSAgICAgIGV4ZWN1dGlvbi4gIFdh aXQgZXZlbnRzIGFyZSBncm91cGVkIGJ5IHdhaXQgZXZlbnQgdHlwZSBhbmQgd2FpdCBldmVudAot ICAgICAgbmFtZSwgYW5kIGluY2x1ZGUgdGhlIG51bWJlciBvZiB3YWl0cyBhbmQgdG90YWwgdGlt ZSBzcGVudCB3YWl0aW5nLgorICAgICAgSW5jbHVkZSB3YWl0IGV2ZW50IHRpbWluZyBvYnNlcnZl ZCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLiAgV2FpdAorICAgICAgZXZlbnRzIGFyZSBncm91cGVk IGJ5IHdhaXQgZXZlbnQgdHlwZSBhbmQgd2FpdCBldmVudCBuYW1lLCB1c2luZyB0aGUKKyAgICAg IHNhbWUgd2FpdCBldmVudCBpZGVudGlmaWVycyByZXBvcnRlZCBieQorICAgICAgPHN0cnVjdG5h bWU+cGdfc3RhdF9hY3Rpdml0eTwvc3RydWN0bmFtZT47IHNlZQorICAgICAgPHhyZWYgbGlua2Vu ZD0id2FpdC1ldmVudC10YWJsZSIvPi4gIEVhY2ggZW50cnkgaW5jbHVkZXMgdGhlIG51bWJlcgor ICAgICAgb2YgY29tcGxldGVkIHdhaXRzIGFuZCB0aGUgdG90YWwgdGltZSBzcGVudCB3YWl0aW5n LiAgV2FpdCB0aW1pbmcgaXMKKyAgICAgIGNvbGxlY3RlZCB3aGVuIHRoaXMgb3B0aW9uIGlzIGVu YWJsZWQgZXZlbiBpZiA8bGl0ZXJhbD5USU1JTkc8L2xpdGVyYWw+CisgICAgICBpcyBkaXNhYmxl ZC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYgPGNvbW1hbmQ+RVhQTEFJ TjwvY29tbWFuZD4gY2Fubm90IGdyb3cgaXRzIHBlci1xdWVyeSBvciBwZXItbm9kZSB3YWl0Cisg ICAgICBldmVudCBzdG9yYWdlIHdpdGhvdXQgcmlza2luZyBhbiBlcnJvciB3aGlsZSBhIHdhaXQg aXMgZW5kaW5nLCB3YWl0cworICAgICAgd2hvc2UgZXhhY3QgZXZlbnQgaWRlbnRpZmllciBjb3Vs ZCBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRlZCBpbiBhbgorICAgICAgPGxpdGVyYWw+VW5y ZWNvcmRlZCBXYWl0IEV2ZW50IENhbGxzPC9saXRlcmFsPiBjb3VudGVyIGFuZAorICAgICAgPGxp dGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IFRpbWU8L2xpdGVyYWw+IHRvdGFsLiAgVGhpcyBp cyBhCisgICAgICByZXBvcnRpbmcgZmFsbGJhY2sgdW5kZXIgbWVtb3J5IHByZXNzdXJlLCBub3Qg YSB3YWl0IGV2ZW50IGVtaXR0ZWQgYnkKKyAgICAgIHNlcnZlciBpbnN0cnVtZW50YXRpb24uCisg ICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB0b3AtbGV2ZWwgPGxpdGVyYWw+ U3RhdGVtZW50IFdhaXQgRXZlbnRzPC9saXRlcmFsPiBzdW1tYXJ5IGNvdW50cworICAgICAgZWFj aCB3YWl0IG9uY2UgZm9yIHRoZSBzdGF0ZW1lbnQsIGluY2x1ZGluZyB3YWl0cyByZXBvcnRlZCBi eSBwYXJhbGxlbAorICAgICAgd29ya2Vycy4gIE5lc3RlZCA8Y29tbWFuZD5FWFBMQUlOIChBTkFM WVpFLCBXQUlUUyk8L2NvbW1hbmQ+IGNvbW1hbmRzCisgICAgICBtYWludGFpbiBzZXBhcmF0ZSBz dGF0ZW1lbnQtbGV2ZWwgc3VtbWFyaWVzOyBhIHdhaXQgaXMgY291bnRlZCBvbmNlIGluCisgICAg ICBlYWNoIGFjdGl2ZSBzdW1tYXJ5LiAgUGxhbiBub2RlcyBjYW4gYWxzbyBzaG93IDxsaXRlcmFs PldhaXQKKyAgICAgIEV2ZW50czwvbGl0ZXJhbD4uICBOb2RlLWxldmVsIHdhaXQgZXZlbnRzIGFy ZSBpbmNsdXNpdmUsIGxpa2UgcGxhbiBub2RlCisgICAgICB0aW1pbmcgaW4KKyAgICAgIDxjb21t YW5kPkVYUExBSU4gQU5BTFlaRTwvY29tbWFuZD46IGEgd2FpdCBpcyBhdHRyaWJ1dGVkIHRvIGV2 ZXJ5CisgICAgICBhY3RpdmUgcGxhbiBub2RlIHdoZW4gdGhlIHdhaXQgYmVnaW5zLiAgVGhlcmVm b3JlIG5vZGUtbGV2ZWwgd2FpdCBldmVudAorICAgICAgdGltZXMgc2hvdWxkIG5vdCBiZSBzdW1t ZWQgdG8gY29tcHV0ZSB0aGUgc3RhdGVtZW50IHRvdGFsLgorICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBUaGUgb3ZlcmhlYWQgb2YgdGhpcyBvcHRpb24gZGVwZW5kcyBvbiB0aGUg bnVtYmVyIG9mIHdhaXRzIG9ic2VydmVkIGFuZCwKKyAgICAgIGZvciBub2RlLWxldmVsIG91dHB1 dCwgb24gdGhlIG51bWJlciBvZiBhY3RpdmUgcGxhbiBub2RlcyB3aGVuIGVhY2ggd2FpdAorICAg ICAgYmVnaW5zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CiAgICAgICBUaGlzIHBhcmFt ZXRlciBtYXkgb25seSBiZSB1c2VkIHdoZW4gPGxpdGVyYWw+QU5BTFlaRTwvbGl0ZXJhbD4gaXMg YWxzbwogICAgICAgZW5hYmxlZC4gIEl0IGRlZmF1bHRzIHRvIDxsaXRlcmFsPkZBTFNFPC9saXRl cmFsPi4KICAgICAgPC9wYXJhPgpAQCAtNDA1LDYgKzQ0MiwxNSBAQCBST0xMQkFDSzsKICAgIGV4 ZWN1dGlvbiwgYW5kIG9uIG1hY2hpbmVzIHRoYXQgaGF2ZSByZWxhdGl2ZWx5IHNsb3cgb3BlcmF0 aW5nCiAgICBzeXN0ZW0gY2FsbHMgZm9yIG9idGFpbmluZyB0aGUgdGltZSBvZiBkYXkuCiAgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5XQUlUUzwvbGl0ZXJhbD4gb3B0aW9u IGFsc28gYWRkcyBwcm9maWxpbmcgb3ZlcmhlYWQgd2hlbgorICAgPGxpdGVyYWw+QU5BTFlaRTwv bGl0ZXJhbD4gaXMgdXNlZC4gIEl0IG1lYXN1cmVzIHdhaXQgaW50ZXJ2YWxzIHJlcG9ydGVkCisg ICBieSBzZXJ2ZXIgaW5zdHJ1bWVudGF0aW9uIGFuZCBtYWludGFpbnMgcGVyLXN0YXRlbWVudCBh bmQgcGVyLW5vZGUgd2FpdAorICAgZXZlbnQgY291bnRlcnMgd2hpbGUgdGhlIHN0YXRlbWVudCBl eGVjdXRlcy4gIFRoZSBvdmVyaGVhZCBkZXBlbmRzIG9uIHRoZQorICAgbnVtYmVyIG9mIHJlcG9y dGVkIHdhaXRzLCB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHdhaXQgZXZlbnRzLCBhbmQgdGhlIGRl cHRoCisgICBvZiB0aGUgYWN0aXZlIGV4ZWN1dG9yIHBsYW4gbm9kZSBzdGFjay4KKyAgPC9wYXJh PgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXgg MDU3NWFlODM2OGIuLjljMTk4ZjhlNTk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xNTEs NyArMTUxLDcgQEAgc3RhdGljIGJvb2wgcGVla19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKTsKIHN0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3Vz YWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSk7CiBzdGF0aWMg dm9pZCBzaG93X3dhbF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBXYWxVc2FnZSAqdXNh Z2UpOwogc3RhdGljIGludAl3YWl0X2V2ZW50X3VzYWdlX2NtcChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKTsKLXN0YXRpYyB2b2lkIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3Rh dGUgKmVzLAorc3RhdGljIHZvaWQgc2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJCQkJICBjb25zdCBXYWl0RXZlbnRVc2Fn ZSAqdXNhZ2UpOwogc3RhdGljIHZvaWQgc2hvd19tZW1vcnlfY291bnRlcnMoRXhwbGFpblN0YXRl ICplcywKIAkJCQkJCQkJIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJz KTsKQEAgLTIxOSw3ICsyMTksNyBAQCBFeHBsYWluUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBF eHBsYWluU3RtdCAqc3RtdCwKIAkJICogSW4gdGhlIGNhc2Ugb2YgYW4gSU5TVEVBRCBOT1RISU5H LCB0ZWxsIGF0IGxlYXN0IHRoYXQuICBCdXQgaW4KIAkJICogbm9uLXRleHQgZm9ybWF0LCB0aGUg b3V0cHV0IGlzIGRlbGltaXRlZCwgc28gdGhpcyBpc24ndCBuZWNlc3NhcnkuCiAJCSAqLwotCQlp ZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCWlmIChlcy0+Zm9ybWF0ID09 IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIs ICJRdWVyeSByZXdyaXRlcyB0byBub3RoaW5nXG4iKTsKIAl9CiAJZWxzZQpAQCAtNjM0LDcgKzYz NCw3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlFeHBsYWluUHJpbnRQbGFuKGVzLCBxdWVyeURl c2MpOwogCiAJaWYgKHdhaXRFdmVudFVzYWdlUHRyKQotCQlzaG93X3dhaXRfZXZlbnRfdXNhZ2Uo ZXMsIHdhaXRFdmVudFVzYWdlUHRyKTsKKwkJc2hvd193YWl0X2V2ZW50X3VzYWdlKGVzLCAiU3Rh dGVtZW50IFdhaXQgRXZlbnRzIiwgd2FpdEV2ZW50VXNhZ2VQdHIpOwogCiAJLyogU2hvdyBidWZm ZXIgYW5kL29yIG1lbW9yeSB1c2FnZSBpbiBwbGFubmluZyAqLwogCWlmIChwZWVrX2J1ZmZlcl91 c2FnZShlcywgYnVmdXNhZ2UpIHx8IG1lbV9jb3VudGVycykKQEAgLTIzMzUsNyArMjMzNSw3IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAJaWYg KGVzLT53YWwgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQogCQlzaG93X3dhbF91c2FnZShlcywg JnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIud2FsdXNhZ2UpOwogCWlmIChlcy0+d2FpdHMp Ci0JCXNob3dfd2FpdF9ldmVudF91c2FnZShlcywgcGxhbnN0YXRlLT53YWl0X2V2ZW50X3VzYWdl KTsKKwkJc2hvd193YWl0X2V2ZW50X3VzYWdlKGVzLCAiV2FpdCBFdmVudHMiLCBwbGFuc3RhdGUt PndhaXRfZXZlbnRfdXNhZ2UpOwogCiAJLyogUHJlcGFyZSBwZXItd29ya2VyIGJ1ZmZlci9XQUwg dXNhZ2UgKi8KIAlpZiAoZXMtPndvcmtlcnNfc3RhdGUgJiYgKGVzLT5idWZmZXJzIHx8IGVzLT53 YWwpICYmIGVzLT52ZXJib3NlKQpAQCAtNDU1NiwxNCArNDU1NiwxNSBAQCB3YWl0X2V2ZW50X3Vz YWdlX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogfQogCiBzdGF0aWMgdm9pZAot c2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVz YWdlICp1c2FnZSkKK3Nob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBjaGFyICpsYWJlbG5hbWUsCisJCQkJCSAgY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQog ewogCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CiAKIAlpZiAodXNhZ2UgPT0gTlVMTCkK IAkJcmV0dXJuOwogCi0JaWYgKHVzYWdlLT5uZW50cmllcyA9PSAwKQorCWlmICh1c2FnZS0+bmVu dHJpZXMgPT0gMCAmJiB1c2FnZS0+b3ZlcmZsb3dlZF9jYWxscyA9PSAwKQogCQlyZXR1cm47CiAK IAlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKQEAgLTQ1NzcsMTAgKzQ1NzgsMTAgQEAgc2hvd193 YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1 c2FnZSkKIAllbHNlCiAJCWVudHJpZXMgPSBOVUxMOwogCi0JaWYgKGVzLT5mb3JtYXQgPT0gRVhQ TEFJTl9GT1JNQVRfVEVYVCkKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVY VCkKIAl7CiAJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKLQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu Zyhlcy0+c3RyLCAiV2FpdCBFdmVudHM6XG4iKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3Ry LCAiJXM6XG4iLCBsYWJlbG5hbWUpOwogCQllcy0+aW5kZW50Kys7CiAKIAkJZm9yIChpbnQgaSA9 IDA7IGkgPCB1c2FnZS0+bmVudHJpZXM7IGkrKykKQEAgLTQ1OTksMzUgKzQ2MDAsNjAgQEAgc2hv d193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhaXRFdmVudFVzYWdl ICp1c2FnZSkKIAkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZW50cmllc1tpXS50aW1l KSk7CiAJCX0KIAorCQlpZiAodXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgPiAwKQorCQl7CisJCQlF eHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCisJCQkJ CQkJICJVbnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHM6IGNhbGxzPSUiIFBSSXU2NCAiIHRpbWU9 JTAuM2YgbXNcbiIsCisJCQkJCQkJIHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzLAorCQkJCQkJCSBJ TlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSk7CisJCX0KKwog CQllcy0+aW5kZW50LS07CiAJfQogCWVsc2UKIAl7Ci0JCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnRzIiwgIldhaXQgRXZlbnRzIiwgZmFsc2UsIGVzKTsKLQotCQlmb3IgKGludCBpID0gMDsg aSA8IHVzYWdlLT5uZW50cmllczsgaSsrKQorCQlpZiAodXNhZ2UtPm5lbnRyaWVzID4gMCkKIAkJ ewotCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKLQkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7 CisJCQlFeHBsYWluT3Blbkdyb3VwKCJXYWl0LUV2ZW50cyIsIGxhYmVsbmFtZSwgZmFsc2UsIGVz KTsKIAotCQkJZXZlbnRfdHlwZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF90eXBlKGVudHJpZXNb aV0ud2FpdF9ldmVudF9pbmZvKTsKLQkJCWV2ZW50X25hbWUgPSBwZ3N0YXRfZ2V0X3dhaXRfZXZl bnQoZW50cmllc1tpXS53YWl0X2V2ZW50X2luZm8pOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCB1 c2FnZS0+bmVudHJpZXM7IGkrKykKKwkJCXsKKwkJCQljb25zdCBjaGFyICpldmVudF90eXBlOwor CQkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7CiAKLQkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlUZXh0KCJXYWl0IEV2 ZW50IFR5cGUiLAotCQkJCQkJCQlldmVudF90eXBlID8gZXZlbnRfdHlwZSA6ICJVbmtub3duIiwK LQkJCQkJCQkJZXMpOwotCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiV2FpdCBFdmVudCIsCi0JCQkJ CQkJCWV2ZW50X25hbWUgPyBldmVudF9uYW1lIDogInVua25vd24iLAotCQkJCQkJCQllcyk7Ci0J CQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigiQ2FsbHMiLCBOVUxMLCBlbnRyaWVzW2ldLmNhbGxz LCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiVGltZSIsICJtcyIsCi0JCQkJCQkJCSBJ TlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpLAotCQkJCQkJCQkgMywgZXMp OwotCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJ CQkJZXZlbnRfdHlwZSA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF90eXBlKGVudHJpZXNbaV0ud2Fp dF9ldmVudF9pbmZvKTsKKwkJCQlldmVudF9uYW1lID0gcGdzdGF0X2dldF93YWl0X2V2ZW50KGVu dHJpZXNbaV0ud2FpdF9ldmVudF9pbmZvKTsKKworCQkJCUV4cGxhaW5PcGVuR3JvdXAoIldhaXQt RXZlbnQiLCBOVUxMLCB0cnVlLCBlcyk7CisJCQkJRXhwbGFpblByb3BlcnR5VGV4dCgiV2FpdCBF dmVudCBUeXBlIiwKKwkJCQkJCQkJCWV2ZW50X3R5cGUgPyBldmVudF90eXBlIDogIlVua25vd24i LAorCQkJCQkJCQkJZXMpOworCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIldhaXQgRXZlbnQiLAor CQkJCQkJCQkJZXZlbnRfbmFtZSA/IGV2ZW50X25hbWUgOiAidW5rbm93biIsCisJCQkJCQkJCQll cyk7CisJCQkJRXhwbGFpblByb3BlcnR5VUludGVnZXIoIkNhbGxzIiwgTlVMTCwgZW50cmllc1tp XS5jYWxscywgZXMpOworCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUaW1lIiwgIm1zIiwKKwkJ CQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhlbnRyaWVzW2ldLnRpbWUpLAorCQkJCQkJ CQkJIDMsIGVzKTsKKwkJCQlFeHBsYWluQ2xvc2VHcm91cCgiV2FpdC1FdmVudCIsIE5VTEwsIHRy dWUsIGVzKTsKKwkJCX0KKworCQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnRzIiwgbGFi ZWxuYW1lLCBmYWxzZSwgZXMpOwogCQl9CiAKLQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZl bnRzIiwgIldhaXQgRXZlbnRzIiwgZmFsc2UsIGVzKTsKKwkJaWYgKHVzYWdlLT5vdmVyZmxvd2Vk X2NhbGxzID4gMCkKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgaXMgbm90IGEgd2FpdCBldmVudCBp ZGVudGl0eSwgc28ga2VlcCBpdCBvdXRzaWRlIHRoZQorCQkJICogV2FpdCBFdmVudHMgYXJyYXkg aW4gc3RydWN0dXJlZCBvdXRwdXQuCisJCQkgKi8KKwkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRlZ2Vy KCJVbnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHMiLCBOVUxMLAorCQkJCQkJCQkJdXNhZ2UtPm92 ZXJmbG93ZWRfY2FsbHMsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJVbnJlY29yZGVk IFdhaXQgRXZlbnQgVGltZSIsICJtcyIsCisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF Qyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSwKKwkJCQkJCQkJIDMsIGVzKTsKKwkJfQogCX0KIAog CWlmIChlbnRyaWVzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBmNzdmNTM5 ZGQyNy4uNTIwYjRiODQ4NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04 Nyw2ICs4Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyCiB7 CiAJaW50CQkJbmVudHJpZXM7CiAJZHNhX3BvaW50ZXIgZW50cmllczsKKwl1aW50NjQJCW92ZXJm bG93ZWRfY2FsbHM7CisJaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7CiB9IFNoYXJlZFdhaXRF dmVudFVzYWdlV29ya2VyOwogCiAvKgpAQCAtMTczLDYgKzE3NSwxMCBAQCBzdGF0aWMgYm9vbCBF eGVjUGFyYWxsZWxSZUluaXRpYWxpemVEU00oUGxhblN0YXRlICpwbGFuc3RhdGUsCiBzdGF0aWMg Ym9vbCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKIAkJCQkJCQkJCQkJCUV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uQ29u dGV4dCAqcik7CiBzdGF0aWMgdm9pZCBFeGVjUGFyYWxsZWxSZXRyaWV2ZVdhaXRFdmVudFVzYWdl KFBhcmFsbGVsRXhlY3V0b3JJbmZvICpwZWkpOworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsSW5p dFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIp Oworc3RhdGljIHZvaWQgRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdhaXRFdmVudFVzYWdlV29ya2Vy KFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJCQkgICBTaGFyZWRXYWl0RXZlbnRV c2FnZVdvcmtlciAqd29ya2VyLAorCQkJCQkJCQkJCQkJCSAgIGRzYV9hcmVhICphcmVhKTsKIHN0 YXRpYyB2b2lkIEV4ZWNQYXJhbGxlbFJlcG9ydFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdh aXRFdmVudFVzYWdlV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJCQkJCQkgICBkc2FfYXJlYSAqYXJl YSwKIAkJCQkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSk7CkBAIC05MDQs MTAgKzkxMCw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBF U3RhdGUgKmVzdGF0ZSwKIAkJd2FpdF9ldmVudF91c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLCB3YWl0X2V2ZW50X3VzYWdlX2xlbik7CiAJCXdhaXRfZXZlbnRfdXNhZ2UtPm51bV93 b3JrZXJzID0gbndvcmtlcnM7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgbndvcmtlcnM7IGkrKykK LQkJewotCQkJd2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3VzYWdlW2ldLm5lbnRyaWVzID0gMDsK LQkJCXdhaXRfZXZlbnRfdXNhZ2UtPndvcmtlcl91c2FnZVtpXS5lbnRyaWVzID0gSW52YWxpZERz YVBvaW50ZXI7Ci0JCX0KKwkJCUV4ZWNQYXJhbGxlbEluaXRXYWl0RXZlbnRVc2FnZVdvcmtlcigm d2FpdF9ldmVudF91c2FnZS0+d29ya2VyX3VzYWdlW2ldKTsKIAkJc2htX3RvY19pbnNlcnQocGN4 dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FJVF9FVkVOVF9VU0FHRSwKIAkJCQkJICAgd2FpdF9ldmVu dF91c2FnZSk7CiAJCXBlaS0+d2FpdF9ldmVudF91c2FnZSA9IHdhaXRfZXZlbnRfdXNhZ2U7CkBA IC05NDQsMTAgKzk0Nyw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAogCQkJd29ya2VyX3VzYWdlID0gR2V0SW5zdHJ1bWVudGF0 aW9uV2FpdEV2ZW50VXNhZ2VBcnJheShpbnN0cnVtZW50YXRpb24pOwogCQkJZm9yIChpID0gMDsg aSA8IG53b3JrZXJzICogZS5ubm9kZXM7ICsraSkKLQkJCXsKLQkJCQl3b3JrZXJfdXNhZ2VbaV0u bmVudHJpZXMgPSAwOwotCQkJCXdvcmtlcl91c2FnZVtpXS5lbnRyaWVzID0gSW52YWxpZERzYVBv aW50ZXI7Ci0JCQl9CisJCQkJRXhlY1BhcmFsbGVsSW5pdFdhaXRFdmVudFVzYWdlV29ya2VyKCZ3 b3JrZXJfdXNhZ2VbaV0pOwogCQl9CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJICAgaW5zdHJ1bWVudGF0aW9uKTsKQEAgLTEy MDksMjEgKzEyMDksOSBAQCBFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkJd2FpdF9ldmVudF91c2FnZSA9IEdldEluc3RydW1lbnRhdGlv bldhaXRFdmVudFVzYWdlQXJyYXkoaW5zdHJ1bWVudGF0aW9uKTsKIAkJd2FpdF9ldmVudF91c2Fn ZSArPSBpICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAkJZm9yIChuID0gMDsgbiA8 IGluc3RydW1lbnRhdGlvbi0+bnVtX3dvcmtlcnM7ICsrbikKLQkJewotCQkJU2hhcmVkV2FpdEV2 ZW50VXNhZ2VXb3JrZXIgKndvcmtlciA9ICZ3YWl0X2V2ZW50X3VzYWdlW25dOwotCQkJV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKLQotCQkJaWYgKHdvcmtlci0+bmVudHJpZXMgPD0gMCB8 fCAhRHNhUG9pbnRlcklzVmFsaWQod29ya2VyLT5lbnRyaWVzKSkKLQkJCQljb250aW51ZTsKLQot CQkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVzcyhyLT5hcmVhLCB3b3JrZXItPmVudHJpZXMpOwot CQkJcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91c2FnZShwbGFuc3RhdGUtPndhaXRfZXZl bnRfdXNhZ2UsCi0JCQkJCQkJCQkJCSAgIGVudHJpZXMsCi0JCQkJCQkJCQkJCSAgIHdvcmtlci0+ bmVudHJpZXMpOwotCQkJZHNhX2ZyZWUoci0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKLQkJCXdv cmtlci0+bmVudHJpZXMgPSAwOwotCQkJd29ya2VyLT5lbnRyaWVzID0gSW52YWxpZERzYVBvaW50 ZXI7Ci0JCX0KKwkJCUV4ZWNQYXJhbGxlbEFjY3VtdWxhdGVXYWl0RXZlbnRVc2FnZVdvcmtlcihw bGFuc3RhdGUtPndhaXRfZXZlbnRfdXNhZ2UsCisJCQkJCQkJCQkJCQkJICAgJndhaXRfZXZlbnRf dXNhZ2Vbbl0sCisJCQkJCQkJCQkJCQkJICAgci0+YXJlYSk7CiAJfQogCiAJLyoKQEAgLTEzMzks MTggKzEzMjcsNDYgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVXYWl0RXZlbnRVc2FnZShQYXJhbGxl bEV4ZWN1dG9ySW5mbyAqcGVpKQogCQlyZXR1cm47CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHNo YXJlZC0+bnVtX3dvcmtlcnM7IGkrKykKKwkJRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdhaXRFdmVu dFVzYWdlV29ya2VyKHVzYWdlLAorCQkJCQkJCQkJCQkJICAgJnNoYXJlZC0+d29ya2VyX3VzYWdl W2ldLAorCQkJCQkJCQkJCQkJICAgcGVpLT5hcmVhKTsKK30KKworc3RhdGljIHZvaWQKK0V4ZWNQ YXJhbGxlbEluaXRXYWl0RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtl ciAqd29ya2VyKQoreworCXdvcmtlci0+bmVudHJpZXMgPSAwOworCXdvcmtlci0+ZW50cmllcyA9 IEludmFsaWREc2FQb2ludGVyOworCXdvcmtlci0+b3ZlcmZsb3dlZF9jYWxscyA9IDA7CisJSU5T VFJfVElNRV9TRVRfWkVSTyh3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7Cit9CisKK3N0YXRpYyB2 b2lkCitFeGVjUGFyYWxsZWxBY2N1bXVsYXRlV2FpdEV2ZW50VXNhZ2VXb3JrZXIoV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLAorCQkJCQkJCQkJCSAgIFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3 b3JrZXIsCisJCQkJCQkJCQkJICAgZHNhX2FyZWEgKmFyZWEpCit7CisJQXNzZXJ0KHVzYWdlICE9 IE5VTEwpOworCUFzc2VydCh3b3JrZXIgIT0gTlVMTCk7CisJQXNzZXJ0KGFyZWEgIT0gTlVMTCk7 CisKKwlpZiAod29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzID4gMCkKIAl7Ci0JCVNoYXJlZFdhaXRF dmVudFVzYWdlV29ya2VyICp3b3JrZXIgPSAmc2hhcmVkLT53b3JrZXJfdXNhZ2VbaV07Ci0JCVdh aXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7CisJCXVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzICs9 IHdvcmtlci0+b3ZlcmZsb3dlZF9jYWxsczsKKwkJSU5TVFJfVElNRV9BREQodXNhZ2UtPm92ZXJm bG93ZWRfdGltZSwgd29ya2VyLT5vdmVyZmxvd2VkX3RpbWUpOworCQl3b3JrZXItPm92ZXJmbG93 ZWRfY2FsbHMgPSAwOworCQlJTlNUUl9USU1FX1NFVF9aRVJPKHdvcmtlci0+b3ZlcmZsb3dlZF90 aW1lKTsKKwl9CiAKLQkJaWYgKHdvcmtlci0+bmVudHJpZXMgPD0gMCB8fCAhRHNhUG9pbnRlcklz VmFsaWQod29ya2VyLT5lbnRyaWVzKSkKLQkJCWNvbnRpbnVlOworCWlmICh3b3JrZXItPm5lbnRy aWVzID4gMCAmJiBEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMpKQorCXsKKwkJV2Fp dEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKIAotCQllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNz KHBlaS0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJZW50cmllcyA9IGRzYV9nZXRfYWRkcmVz cyhhcmVhLCB3b3JrZXItPmVudHJpZXMpOwogCQlwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50 X3VzYWdlKHVzYWdlLAogCQkJCQkJCQkJCSAgIGVudHJpZXMsCiAJCQkJCQkJCQkJICAgd29ya2Vy LT5uZW50cmllcyk7Ci0JCWRzYV9mcmVlKHBlaS0+YXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKKwkJ ZHNhX2ZyZWUoYXJlYSwgd29ya2VyLT5lbnRyaWVzKTsKIAkJd29ya2VyLT5uZW50cmllcyA9IDA7 CiAJCXdvcmtlci0+ZW50cmllcyA9IEludmFsaWREc2FQb2ludGVyOwogCX0KQEAgLTEzNjIsMjQg KzEzNzgsNjUgQEAgRXhlY1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoU2hhcmVk V2FpdEV2ZW50VXNhZ2VXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkJCSAgIGNvbnN0IFdhaXRFdmVu dFVzYWdlICp1c2FnZSkKIHsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOworCVdhaXRF dmVudFVzYWdlRW50cnkgKm9sZF9lbnRyaWVzID0gTlVMTDsKIAlkc2FfcG9pbnRlciBlbnRyaWVz X2RzYTsKIAlTaXplCQllbnRyaWVzX3NpemU7CisJaW50CQkJb2xkX25lbnRyaWVzID0gMDsKKwlp bnQJCQluZXdfbmVudHJpZXMgPSAwOworCWludAkJCWkgPSAwOworCWludAkJCWogPSAwOwogCiAJ QXNzZXJ0KHdvcmtlciAhPSBOVUxMKTsKIAlBc3NlcnQoYXJlYSAhPSBOVUxMKTsKIAlBc3NlcnQo dXNhZ2UgIT0gTlVMTCk7CiAKKwl3b3JrZXItPm92ZXJmbG93ZWRfY2FsbHMgKz0gdXNhZ2UtPm92 ZXJmbG93ZWRfY2FsbHM7CisJSU5TVFJfVElNRV9BREQod29ya2VyLT5vdmVyZmxvd2VkX3RpbWUs IHVzYWdlLT5vdmVyZmxvd2VkX3RpbWUpOworCiAJaWYgKHVzYWdlLT5uZW50cmllcyA8PSAwKQog CQlyZXR1cm47CiAKLQllbnRyaWVzX3NpemUgPSBtdWxfc2l6ZShzaXplb2YoV2FpdEV2ZW50VXNh Z2VFbnRyeSksIHVzYWdlLT5uZW50cmllcyk7CisJaWYgKERzYVBvaW50ZXJJc1ZhbGlkKHdvcmtl ci0+ZW50cmllcykpCisJeworCQlBc3NlcnQod29ya2VyLT5uZW50cmllcyA+IDApOworCQlvbGRf bmVudHJpZXMgPSB3b3JrZXItPm5lbnRyaWVzOworCQlvbGRfZW50cmllcyA9IGRzYV9nZXRfYWRk cmVzcyhhcmVhLCB3b3JrZXItPmVudHJpZXMpOworCX0KKworCWVudHJpZXNfc2l6ZSA9IG11bF9z aXplKHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSwKKwkJCQkJCQkoU2l6ZSkgb2xkX25lbnRy aWVzICsgKFNpemUpIHVzYWdlLT5uZW50cmllcyk7CiAJZW50cmllc19kc2EgPSBkc2FfYWxsb2Nh dGUoYXJlYSwgZW50cmllc19zaXplKTsKIAllbnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEs IGVudHJpZXNfZHNhKTsKLQltZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsIGVudHJpZXNf c2l6ZSk7CisKKwl3aGlsZSAoaSA8IG9sZF9uZW50cmllcyAmJiBqIDwgdXNhZ2UtPm5lbnRyaWVz KQorCXsKKwkJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cnkgPSAmZW50cmllc1tuZXdfbmVudHJp ZXNdOworCQl1aW50MzIJCW9sZF9pbmZvID0gb2xkX2VudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZv OworCQl1aW50MzIJCW5ld19pbmZvID0gdXNhZ2UtPmVudHJpZXNbal0ud2FpdF9ldmVudF9pbmZv OworCisJCWlmIChvbGRfaW5mbyA8IG5ld19pbmZvKQorCQkJKmVudHJ5ID0gb2xkX2VudHJpZXNb aSsrXTsKKwkJZWxzZSBpZiAob2xkX2luZm8gPiBuZXdfaW5mbykKKwkJCSplbnRyeSA9IHVzYWdl LT5lbnRyaWVzW2orK107CisJCWVsc2UKKwkJeworCQkJKmVudHJ5ID0gb2xkX2VudHJpZXNbaSsr XTsKKwkJCWVudHJ5LT5jYWxscyArPSB1c2FnZS0+ZW50cmllc1tqXS5jYWxsczsKKwkJCUlOU1RS X1RJTUVfQUREKGVudHJ5LT50aW1lLCB1c2FnZS0+ZW50cmllc1tqXS50aW1lKTsKKwkJCWorKzsK KwkJfQorCisJCW5ld19uZW50cmllcysrOworCX0KKworCXdoaWxlIChpIDwgb2xkX25lbnRyaWVz KQorCQllbnRyaWVzW25ld19uZW50cmllcysrXSA9IG9sZF9lbnRyaWVzW2krK107CisJd2hpbGUg KGogPCB1c2FnZS0+bmVudHJpZXMpCisJCWVudHJpZXNbbmV3X25lbnRyaWVzKytdID0gdXNhZ2Ut PmVudHJpZXNbaisrXTsKIAogCWlmIChEc2FQb2ludGVySXNWYWxpZCh3b3JrZXItPmVudHJpZXMp KQogCQlkc2FfZnJlZShhcmVhLCB3b3JrZXItPmVudHJpZXMpOwotCXdvcmtlci0+bmVudHJpZXMg PSB1c2FnZS0+bmVudHJpZXM7CisJd29ya2VyLT5uZW50cmllcyA9IG5ld19uZW50cmllczsKIAl3 b3JrZXItPmVudHJpZXMgPSBlbnRyaWVzX2RzYTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jCmluZGV4IDNkNWExMGI0NGM0Li42MWI0MThlOGZkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzksNiArMzksMTAgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1lb3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7 CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2lvKFdhaXRFdmVudElPIHcpOwog c3RhdGljIHZvaWQgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50 MzIgd2FpdF9ldmVudF9pbmZvLAogCQkJCQkJCSAgdWludDY0IGNhbGxzLCBjb25zdCBpbnN0cl90 aW1lICplbGFwc2VkKTsKK3N0YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50NjQgY2FsbHMsCisJCQkJCQkJCQkgIGNvbnN0IGluc3Ry X3RpbWUgKmVsYXBzZWQpOworc3RhdGljIGludAlXYWl0RXZlbnRVc2FnZUZpbmQoY29uc3QgV2Fp dEV2ZW50VXNhZ2UgKnVzYWdlLAorCQkJCQkJCSAgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sIGJv b2wgKmZvdW5kKTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215X3dhaXRfZXZlbnRfaW5mbzsK QEAgLTQ4LDcgKzUyLDE2IEBAIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2Fs X215X3dhaXRfZXZlbnRfaW5mbzsKIAogaW50CQkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVw dGggPSAwOwogc3RhdGljIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9 IE5VTEw7CisKKy8qCisgKiBUb3Agb2YgdGhlIGFjdGl2ZSBleGVjdXRvciBub2RlIGFuZCBxdWVy eS1sZXZlbCBzdGFja3MuICBRdWVyeS1sZXZlbCB3YWl0CisgKiBhY2NvdW50aW5nIHJlY29yZHMg ZWFjaCB3YWl0IG9uY2UgaW4gZXZlcnkgYWN0aXZlIHF1ZXJ5LWxldmVsIGNvbGxlY3Rvci4KKyAq IFBlci1ub2RlIHdhaXQgYWNjb3VudGluZyByZWNvcmRzIGVhY2ggd2FpdCBpbiBldmVyeSBhY3Rp dmUgcGxhbiBub2RlLAorICogbWF0Y2hpbmcgdGhlIGluY2x1c2l2ZSB0aW1pbmcgc2VtYW50aWNz IG9mIEVYUExBSU4gQU5BTFlaRSBwbGFuIG5vZGVzLgorICovCiBzdGF0aWMgV2FpdEV2ZW50VXNh Z2UgKnBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UgPSBOVUxMOworc3RhdGljIFdhaXRFdmVu dFVzYWdlICpwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9ub2RlX3N0YWNrID0gTlVMTDsKK3N0YXRp YyBXYWl0RXZlbnRVc2FnZSAqcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfcXVlcnlfc3RhY2sgPSBO VUxMOwogc3RhdGljIHVpbnQzMiBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50ID0gMDsK IHN0YXRpYyBpbnN0cl90aW1lIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0OwogCkBAIC0z ODcsMjQgKzQwMCwzNyBAQCBwZ3N0YXRfaW5pdF93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVz YWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogICoKICAqIFRoaXMgaXMgaW50 ZW5kZWQgZm9yIHNob3J0LWxpdmVkIGluc3RydW1lbnRhdGlvbiBzdWNoIGFzIEVYUExBSU4gQU5B TFlaRS4KICAqIEl0IHJlY29yZHMgd2FpdHMgb2JzZXJ2ZWQgdGhyb3VnaCBwZ3N0YXRfcmVwb3J0 X3dhaXRfc3RhcnQvZW5kIGluIGJhY2tlbmQKLSAqIGxvY2FsIG1lbW9yeS4gIE5lc3RlZCBjb2xs ZWN0aW9uIGlzIGRlbGliZXJhdGVseSB0cmVhdGVkIGFzIHBhcnQgb2YgdGhlCi0gKiBvdXRlciBj b2xsZWN0aW9uIGZvciBub3c7IGNhbGxlcnMgdGhhdCB3YW50IGluZGVwZW5kZW50IG5lc3RlZCBh Y2NvdW50aW5nCi0gKiBuZWVkIGEgc3RhY2sgb2YgV2FpdEV2ZW50VXNhZ2UgY29udGV4dHMuCisg KiBsb2NhbCBtZW1vcnkuICBOZXN0ZWQgdG9wLWxldmVsIGNvbGxlY3RvcnMgYXJlIGtlcHQgaW4g YSBxdWVyeS1sZXZlbCBzdGFjazsKKyAqIGEgd2FpdCBpcyBjb3VudGVkIG9uY2UgaW4gZWFjaCBh Y3RpdmUgY29sbGVjdG9yLgogICovCiB2b2lkCiBwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2Fn ZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCkKIHsKKwli b29sCQlmaXJzdDsKKwogCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKIAlBc3NlcnQobWVtY29udGV4 dCAhPSBOVUxMKTsKIAotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCsrID09IDAp CisJZmlyc3QgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA9PSAwOworCWlmIChmaXJz dCkKIAl7Ci0JCXBnc3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQp OwotCQlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZSA9IHVzYWdlOwogCQlwZ3N0YXRfd2FpdF9ldmVu dF9ub2RlX3VzYWdlID0gTlVMTDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9zdGFj ayA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3F1ZXJ5X3N0YWNrID0gTlVMTDsK IAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVfU0VU X1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KKworCXBnc3RhdF9pbml0 X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQpOworCXVzYWdlLT5xdWVyeV9wYXJl bnQgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZTsKKwkvKgorCSAqIEEgbmVzdGVkIEVYUExBSU4g Y2FuIGVycm9yIG91dCB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZlLAorCSAq IHNraXBwaW5nIHRoZSB1c3VhbCBub2RlLWxldmVsIHJlc3RvcmUuICBSZW1lbWJlciB0aGUgb3V0 ZXIgbm9kZSBzdGFjayBzbworCSAqIGVuZGluZyB0aGlzIGNvbGxlY3RvciBjYW4gZGlzY2FyZCBh bnkgbGVha2VkIGlubmVyIG5vZGUgZnJhbWVzLgorCSAqLworCXVzYWdlLT5zYXZlZF9ub2RlX3Vz YWdlID0gcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZTsKKwlwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZSA9IHVzYWdlOworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoKys7CiB9CiAKIC8q CkBAIC00MTUsMTQgKzQ0MSwyMiBAQCBwZ3N0YXRfZW5kX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2 ZW50VXNhZ2UgKnVzYWdlKQogewogCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKIAlBc3NlcnQocGdz dGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPiAwKTsKKwlBc3NlcnQocGdzdGF0X3dhaXRfZXZl bnRfdXNhZ2UgPT0gdXNhZ2UpOworCisJaWYgKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2N1cnJl bnQgIT0gMCkKKwkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CisKKwlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZSA9IHVzYWdlLT5xdWVyeV9wYXJlbnQ7CisJdXNhZ2UtPnF1ZXJ5X3BhcmVu dCA9IE5VTEw7CisJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlLT5zYXZlZF9u b2RlX3VzYWdlOworCXVzYWdlLT5zYXZlZF9ub2RlX3VzYWdlID0gTlVMTDsKIAogCWlmICgtLXBn c3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoID09IDApCiAJewotCQlpZiAocGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCAhPSAwKQotCQkJcGdzdGF0X2NvdW50X3dhaXRfZXZlbnRfZW5k KCk7Ci0KIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOwogCQlwZ3N0YXRfd2FpdF9l dmVudF9ub2RlX3VzYWdlID0gTlVMTDsKKwkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9z dGFjayA9IE5VTEw7CisJCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3F1ZXJ5X3N0YWNrID0gTlVM TDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CiAJCUlOU1RSX1RJTUVf U0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0KQEAgLTQzMyw2ICs0 NjcsOSBAQCBwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNh Z2UpCiB7CiAJV2FpdEV2ZW50VXNhZ2UgKnByZXZpb3VzID0gcGdzdGF0X3dhaXRfZXZlbnRfbm9k ZV91c2FnZTsKIAorCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKworCXVzYWdlLT5hY3RpdmVfcGFy ZW50ID0gcHJldmlvdXM7CiAJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlOwog CXJldHVybiBwcmV2aW91czsKIH0KQEAgLTQ0MCw2ICs0NzcsOSBAQCBwZ3N0YXRfZW50ZXJfd2Fp dF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpCiB2b2lkCiBwZ3N0YXRfcmVzdG9y ZV93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdlICp1c2FnZSkKIHsKKwlBc3NlcnQocGdz dGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9PSBOVUxMIHx8CisJCSAgIHBnc3RhdF93YWl0X2V2 ZW50X25vZGVfdXNhZ2UtPmFjdGl2ZV9wYXJlbnQgPT0gdXNhZ2UpOworCiAJcGdzdGF0X3dhaXRf ZXZlbnRfbm9kZV91c2FnZSA9IHVzYWdlOwogfQogCkBAIC00NjAsNiArNTAwLDggQEAgcGdzdGF0 X2NvdW50X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbykKIAkJcGdzdGF0 X2NvdW50X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAlwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJy ZW50ID0gd2FpdF9ldmVudF9pbmZvOworCXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3Rh Y2sgPSBwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlOworCXBnc3RhdF93YWl0X2V2ZW50X3Vz YWdlX3F1ZXJ5X3N0YWNrID0gcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2U7CiAJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9zdGFydCk7CiB9CiAKQEAgLTQ4MCwx NyArNTIyLDI0IEBAIHBnc3RhdF9jb3VudF93YWl0X2V2ZW50X2VuZCh2b2lkKQogCWVsYXBzZWQg PSBlbmQ7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChlbGFwc2VkLCBwZ3N0YXRfd2FpdF9ldmVudF91 c2FnZV9zdGFydCk7CiAKLQlXYWl0RXZlbnRVc2FnZUFkZChwZ3N0YXRfd2FpdF9ldmVudF91c2Fn ZSwKLQkJCQkJICBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAotCQkJCQkgIDEsCi0J CQkJCSAgJmVsYXBzZWQpOwotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlICE9IE5V TEwpCi0JCVdhaXRFdmVudFVzYWdlQWRkKHBnc3RhdF93YWl0X2V2ZW50X25vZGVfdXNhZ2UsCisJ Zm9yIChXYWl0RXZlbnRVc2FnZSAqcXVlcnlfdXNhZ2UgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2Fn ZV9xdWVyeV9zdGFjazsKKwkJIHF1ZXJ5X3VzYWdlICE9IE5VTEw7CisJCSBxdWVyeV91c2FnZSA9 IHF1ZXJ5X3VzYWdlLT5xdWVyeV9wYXJlbnQpCisJCVdhaXRFdmVudFVzYWdlQWRkKHF1ZXJ5X3Vz YWdlLAorCQkJCQkJICBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9jdXJyZW50LAorCQkJCQkJICAx LAorCQkJCQkJICAmZWxhcHNlZCk7CisJZm9yIChXYWl0RXZlbnRVc2FnZSAqbm9kZV91c2FnZSA9 IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3RhY2s7CisJCSBub2RlX3VzYWdlICE9IE5V TEw7CisJCSBub2RlX3VzYWdlID0gbm9kZV91c2FnZS0+YWN0aXZlX3BhcmVudCkKKwkJV2FpdEV2 ZW50VXNhZ2VBZGQobm9kZV91c2FnZSwKIAkJCQkJCSAgcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vf Y3VycmVudCwKIAkJCQkJCSAgMSwKIAkJCQkJCSAgJmVsYXBzZWQpOwogCiAJcGdzdGF0X3dhaXRf ZXZlbnRfdXNhZ2VfY3VycmVudCA9IDA7CisJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfbm9kZV9z dGFjayA9IE5VTEw7CisJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfcXVlcnlfc3RhY2sgPSBOVUxM OwogCUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwog fQogCkBAIC01MDksNTYgKzU1OCwxMjMgQEAgcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91 c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOwog fQogCisvKgorICogRmluZCB0aGUgZXhpc3RpbmcgZW50cnksIG9yIHRoZSBpbnNlcnRpb24gcG9z aXRpb24gZm9yIGEgbmV3IGVudHJ5LgorICoKKyAqIFdhaXRFdmVudFVzYWdlIGVudHJpZXMgYXJl IGtlcHQgc29ydGVkIGJ5IHdhaXRfZXZlbnRfaW5mbyBzbyB0aGUgaG90CisgKiB3YWl0LWVuZCBw YXRoIGRvZXMgbm90IG5lZWQgYSBsaW5lYXIgc2NhbiB0aHJvdWdoIGFsbCBkaXN0aW5jdCB3YWl0 IGV2ZW50cworICogYWxyZWFkeSBzZWVuIGJ5IHRoZSBxdWVyeSBvciBwbGFuIG5vZGUuCisgKi8K K3N0YXRpYyBpbnQKK1dhaXRFdmVudFVzYWdlRmluZChjb25zdCBXYWl0RXZlbnRVc2FnZSAqdXNh Z2UsIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sCisJCQkJICAgYm9vbCAqZm91bmQpCit7CisJaW50 CQkJbG93ID0gMDsKKwlpbnQJCQloaWdoID0gdXNhZ2UtPm5lbnRyaWVzOworCisJd2hpbGUgKGxv dyA8IGhpZ2gpCisJeworCQlpbnQJCQltaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOworCQl1 aW50MzIJCWVudHJ5X2luZm8gPSB1c2FnZS0+ZW50cmllc1ttaWRdLndhaXRfZXZlbnRfaW5mbzsK KworCQlpZiAoZW50cnlfaW5mbyA8IHdhaXRfZXZlbnRfaW5mbykKKwkJCWxvdyA9IG1pZCArIDE7 CisJCWVsc2UKKwkJCWhpZ2ggPSBtaWQ7CisJfQorCisJKmZvdW5kID0gbG93IDwgdXNhZ2UtPm5l bnRyaWVzICYmCisJCXVzYWdlLT5lbnRyaWVzW2xvd10ud2FpdF9ldmVudF9pbmZvID09IHdhaXRf ZXZlbnRfaW5mbzsKKwlyZXR1cm4gbG93OworfQorCiBzdGF0aWMgdm9pZAogV2FpdEV2ZW50VXNh Z2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIgd2FpdF9ldmVudF9pbmZvLAogCQkJ CSAgdWludDY0IGNhbGxzLCBjb25zdCBpbnN0cl90aW1lICplbGFwc2VkKQogewotCVdhaXRFdmVu dFVzYWdlRW50cnkgKmVudHJ5ID0gTlVMTDsKKwlib29sCQlmb3VuZDsKKwlpbnQJCQlpZHg7CisJ V2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cnk7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IHVzYWdl LT5uZW50cmllczsgaSsrKQotCXsKLQkJaWYgKHVzYWdlLT5lbnRyaWVzW2ldLndhaXRfZXZlbnRf aW5mbyA9PSB3YWl0X2V2ZW50X2luZm8pCi0JCXsKLQkJCWVudHJ5ID0gJnVzYWdlLT5lbnRyaWVz W2ldOwotCQkJYnJlYWs7Ci0JCX0KLQl9CisJaWR4ID0gV2FpdEV2ZW50VXNhZ2VGaW5kKHVzYWdl LCB3YWl0X2V2ZW50X2luZm8sICZmb3VuZCk7CiAKLQlpZiAoZW50cnkgPT0gTlVMTCkKKwlpZiAo IWZvdW5kKQogCXsKIAkJaWYgKHVzYWdlLT5uZW50cmllcyA+PSB1c2FnZS0+bWF4ZW50cmllcykK IAkJewotCQkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCQkJaW50CQkJbmV3bWF4ZW50cmll czsKKwkJCVNpemUJCWVudHJpZXNfc2l6ZTsKKwkJCVdhaXRFdmVudFVzYWdlRW50cnkgKm5ld2Vu dHJpZXM7CiAKIAkJCWlmICh1c2FnZS0+bWF4ZW50cmllcyA+IDApCisJCQl7CisJCQkJaWYgKChT aXplKSB1c2FnZS0+bWF4ZW50cmllcyA+CisJCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0 RXZlbnRVc2FnZUVudHJ5KSAvIDIpCisJCQkJeworCQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJm bG93KHVzYWdlLCBjYWxscywgZWxhcHNlZCk7CisJCQkJCXJldHVybjsKKwkJCQl9CisKIAkJCQlu ZXdtYXhlbnRyaWVzID0gdXNhZ2UtPm1heGVudHJpZXMgKiAyOworCQkJfQogCQkJZWxzZQogCQkJ CW5ld21heGVudHJpZXMgPSBXQUlUX0VWRU5UX1VTQUdFX0lOSVRJQUxfRVZFTlRTOwogCi0JCQlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHVzYWdlLT5tZW1jb250ZXh0KTsKKwkJ CWlmICgoU2l6ZSkgbmV3bWF4ZW50cmllcyA+CisJCQkJTWF4QWxsb2NTaXplIC8gc2l6ZW9mKFdh aXRFdmVudFVzYWdlRW50cnkpKQorCQkJeworCQkJCVdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3co dXNhZ2UsIGNhbGxzLCBlbGFwc2VkKTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCWVudHJpZXNf c2l6ZSA9IHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAqIG5ld21heGVudHJpZXM7CisJCQkv KgorCQkJICogV2FpdCBjb21wbGV0aW9uIGNhbiBoYXBwZW4gaW4gYSBjcml0aWNhbCBzZWN0aW9u LCBzbyBncm93dGgKKwkJCSAqIG11c3Qgbm90IHRocm93IEVSUk9SLiAgSWYgc3RvcmFnZSBjYW5u b3QgYmUgZ3Jvd24gd2l0aG91dAorCQkJICogdGhyb3dpbmcsIHByZXNlcnZlIHRvdGFsIHdhaXQg dGltZSBpbiB0aGUgb3ZlcmZsb3cgYnVja2V0LgorCQkJICovCiAJCQlpZiAodXNhZ2UtPmVudHJp ZXMpCi0JCQkJdXNhZ2UtPmVudHJpZXMgPSByZXBhbGxvY19hcnJheSh1c2FnZS0+ZW50cmllcywK LQkJCQkJCQkJCQkJCVdhaXRFdmVudFVzYWdlRW50cnksCi0JCQkJCQkJCQkJCQluZXdtYXhlbnRy aWVzKTsKKwkJCQluZXdlbnRyaWVzID0gcmVwYWxsb2NfZXh0ZW5kZWQodXNhZ2UtPmVudHJpZXMs IGVudHJpZXNfc2l6ZSwKKwkJCQkJCQkJCQkJICAgTUNYVF9BTExPQ19OT19PT00pOwogCQkJZWxz ZQotCQkJCXVzYWdlLT5lbnRyaWVzID0gcGFsbG9jX2FycmF5KFdhaXRFdmVudFVzYWdlRW50cnks Ci0JCQkJCQkJCQkJCSAgbmV3bWF4ZW50cmllcyk7Ci0JCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CisJCQkJbmV3ZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVk KHVzYWdlLT5tZW1jb250ZXh0LAorCQkJCQkJCQkJCQkJCQllbnRyaWVzX3NpemUsCisJCQkJCQkJ CQkJCQkJCU1DWFRfQUxMT0NfTk9fT09NKTsKKwkJCWlmIChuZXdlbnRyaWVzID09IE5VTEwpCisJ CQl7CisJCQkJV2FpdEV2ZW50VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwgY2FsbHMsIGVsYXBzZWQp OworCQkJCXJldHVybjsKKwkJCX0KIAorCQkJdXNhZ2UtPmVudHJpZXMgPSBuZXdlbnRyaWVzOwog CQkJdXNhZ2UtPm1heGVudHJpZXMgPSBuZXdtYXhlbnRyaWVzOwogCQl9CiAKLQkJZW50cnkgPSAm dXNhZ2UtPmVudHJpZXNbdXNhZ2UtPm5lbnRyaWVzKytdOworCQlpZiAoaWR4IDwgdXNhZ2UtPm5l bnRyaWVzKQorCQkJbWVtbW92ZSgmdXNhZ2UtPmVudHJpZXNbaWR4ICsgMV0sICZ1c2FnZS0+ZW50 cmllc1tpZHhdLAorCQkJCQlzaXplb2YoV2FpdEV2ZW50VXNhZ2VFbnRyeSkgKiAodXNhZ2UtPm5l bnRyaWVzIC0gaWR4KSk7CisKKwkJZW50cnkgPSAmdXNhZ2UtPmVudHJpZXNbaWR4XTsKKwkJdXNh Z2UtPm5lbnRyaWVzKys7CiAJCWVudHJ5LT53YWl0X2V2ZW50X2luZm8gPSB3YWl0X2V2ZW50X2lu Zm87CiAJCWVudHJ5LT5jYWxscyA9IDA7CiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oZW50cnktPnRp bWUpOwogCX0KKwllbHNlCisJCWVudHJ5ID0gJnVzYWdlLT5lbnRyaWVzW2lkeF07CiAKIAllbnRy eS0+Y2FsbHMgKz0gY2FsbHM7CiAJSU5TVFJfVElNRV9BREQoZW50cnktPnRpbWUsICplbGFwc2Vk KTsKIH0KIAorc3RhdGljIHZvaWQKK1dhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLCB1aW50NjQgY2FsbHMsCisJCQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVs YXBzZWQpCit7CisJdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgKz0gY2FsbHM7CisJSU5TVFJfVElN RV9BREQodXNhZ2UtPm92ZXJmbG93ZWRfdGltZSwgKmVsYXBzZWQpOworfQorCiAvKiAtLS0tLS0t LS0tCiAgKiBwZ3N0YXRfZ2V0X3dhaXRfZXZlbnRfdHlwZSgpIC0KICAqCmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggZGI2NWQxMzBmY2IuLmIzMzQ5MGU3NDE1IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jCkBAIC00NTI0LDkgKzQ1MjQsOSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVy bl9pZCwKIAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgo cHJldl93ZCwgJywnKSkKIAkJCUNPTVBMRVRFX1dJVEgoIkFOQUxZWkUiLCAiVkVSQk9TRSIsICJD T1NUUyIsICJTRVRUSU5HUyIsICJHRU5FUklDX1BMQU4iLAotCQkJCQkJICAiQlVGRkVSUyIsICJT RVJJQUxJWkUiLCAiV0FMIiwgIlRJTUlORyIsICJTVU1NQVJZIiwKKwkJCQkJCSAgIkJVRkZFUlMi LCAiU0VSSUFMSVpFIiwgIldBTCIsICJXQUlUUyIsICJUSU1JTkciLCAiU1VNTUFSWSIsCiAJCQkJ CQkgICJNRU1PUlkiLCAiRk9STUFUIik7Ci0JCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJBTkFMWVpF fFZFUkJPU0V8Q09TVFN8U0VUVElOR1N8R0VORVJJQ19QTEFOfEJVRkZFUlN8V0FMfFRJTUlOR3xT VU1NQVJZfE1FTU9SWSIpKQorCQllbHNlIGlmIChUYWlsTWF0Y2hlcygiQU5BTFlaRXxWRVJCT1NF fENPU1RTfFNFVFRJTkdTfEdFTkVSSUNfUExBTnxCVUZGRVJTfFdBTHxXQUlUU3xUSU1JTkd8U1VN TUFSWXxNRU1PUlkiKSkKIAkJCUNPTVBMRVRFX1dJVEgoIk9OIiwgIk9GRiIpOwogCQllbHNlIGlm IChUYWlsTWF0Y2hlcygiU0VSSUFMSVpFIikpCiAJCQlDT01QTEVURV9XSVRIKCJURVhUIiwgIk5P TkUiLCAiQklOQVJZIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNjQ0MTEyODg0MDMuLmYx NDk0NWNkYjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0yNSw5ICsyNSwxNCBAQCB0eXBl ZGVmIHN0cnVjdCBXYWl0RXZlbnRVc2FnZUVudHJ5CiB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRV c2FnZQogewogCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKKwlzdHJ1Y3QgV2FpdEV2ZW50VXNh Z2UgKmFjdGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sgbGluayAqLworCXN0 cnVjdCBXYWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUgcXVlcnktbGV2ZWwg c3RhY2sgbGluayAqLworCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRfbm9kZV91c2FnZTsJ Lyogbm9kZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwogCWludAkJCW5lbnRyaWVzOwogCWludAkJ CW1heGVudHJpZXM7CiAJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKKwl1aW50NjQJCW92 ZXJmbG93ZWRfY2FsbHM7CisJaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7CiB9IFdhaXRFdmVu dFVzYWdlOwogCiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2V2ZW50KHVpbnQz MiB3YWl0X2V2ZW50X2luZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKaW5k ZXggYzA4NmZhNDhkODAuLjI3NTI5MmQ2MTcyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhw bGFpbi5vdXQKQEAgLTQ3LDYgKzQ3LDIxIEBAIGJlZ2luCiAgICAgcmV0dXJuIGRhdGE6Ompzb25i OwogZW5kOwogJCQ7CistLSBGb3IgdGVzdHMgdGhhdCBhc3NlcnQgbnVtZXJpYyBFWFBMQUlOIGZp ZWxkcywgcHJlc2VydmUgdW5maWx0ZXJlZCBKU09OLgorY3JlYXRlIGZ1bmN0aW9uIGV4cGxhaW5f dG9fanNvbih0ZXh0KSByZXR1cm5zIGpzb25iCitsYW5ndWFnZSBwbHBnc3FsIGFzCiskJAorZGVj bGFyZQorICAgIGRhdGEgdGV4dCA6PSAnJzsKKyAgICBsbiB0ZXh0OworYmVnaW4KKyAgICBmb3Ig bG4gaW4gZXhlY3V0ZSAkMQorICAgIGxvb3AKKyAgICAgICAgZGF0YSA6PSBkYXRhIHx8IGxuOwor ICAgIGVuZCBsb29wOworICAgIHJldHVybiBkYXRhOjpqc29uYjsKK2VuZDsKKyQkOwogLS0gRGlz YWJsZSBKSVQsIG9yIHdlJ2xsIGdldCBkaWZmZXJlbnQgb3V0cHV0IG9uIG1hY2hpbmVzIHdoZXJl IHRoYXQncyBiZWVuCiAtLSBmb3JjZWQgb24KIHNldCBqaXQgPSBvZmY7CkBAIC0xMDYsMTEgKzEy MSwxMSBAQCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBj b3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgbwogIFJlc3VsdCAoYWN0dWFsIHJvd3M9Ti5O IGxvb3BzPU4pCiAgICBXYWl0IEV2ZW50czoKICAgICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4g dGltZT1OLk4gbXMKLSBXYWl0IEV2ZW50czoKKyBTdGF0ZW1lbnQgV2FpdCBFdmVudHM6CiAgICBU aW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBtcwogKDUgcm93cykKIAotc2VsZWN0IGV4 cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYs IHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVj dCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxXYWl0IEV2ZW50cywwfSc7CitzZWxlY3QgZXhwbGFp bl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3Vt bWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBn X3NsZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgeyJUaW1lIjog MC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlw ZSI6ICJUaW1lb3V0In0KQEAgLTEyMiw2ICsxMzcsNTIgQEAgc2VsZWN0IGV4cGxhaW5fZmlsdGVy X3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2Zm LAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJX YWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK2JlZ2luOworY3JlYXRlIGZ1 bmN0aW9uIHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKSByZXR1cm5zIHZvaWQKKyAgbGFu Z3VhZ2UgcGxwZ3NxbCBhcworJCQKK2JlZ2luCisgIHBlcmZvcm0gZXhwbGFpbl9maWx0ZXJfdG9f anNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRp bWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEp Jyk7CitlbmQ7CiskJDsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChh bmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVy cyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygp JykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2FsbHMi OiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0 In0KKygxIHJvdykKKworc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFu YWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCkn KSAjPiAnezAsUGxhbixXYWl0IEV2ZW50cywwfSc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAi V2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KKygx IHJvdykKKworcm9sbGJhY2s7CitiZWdpbjsKKy0tIElmIGEgbmVzdGVkIEVYUExBSU4gZXJyb3Jz IHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBpcyBhY3RpdmUsIGVuZGluZworLS0gdGhhdCBj b2xsZWN0b3IgbXVzdCByZXN0b3JlIHRoZSBvdXRlciBub2RlIHdhaXQtYXR0cmlidXRpb24gc3Rh Y2suICBUaGUKKy0tIHZvbGF0aWxlIGRpdmlzaW9uLWJ5LXplcm8gaGVscGVyIGtlZXBzIHRoZSBl cnJvciBhdCBleGVjdXRpb24gdGltZS4KK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLmV4cGxhaW5f d2FpdHNfZGl2emVybygpIHJldHVybnMgaW50CisgIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGUg YXMgJCRiZWdpbiByZXR1cm4gMSAvIDA7IGVuZCQkOworY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAu bmVzdGVkX2V4cGxhaW5fd2FpdHNfZXJyb3IoKSByZXR1cm5zIHZvaWQKKyAgbGFuZ3VhZ2UgcGxw Z3NxbCBhcworJCQKK2JlZ2luCisgIGJlZ2luCisgICAgcGVyZm9ybSBleHBsYWluX2ZpbHRlcl90 b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwg dGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5leHBs YWluX3dhaXRzX2Rpdnplcm8oKScpOworICBleGNlcHRpb24gd2hlbiBkaXZpc2lvbl9ieV96ZXJv IHRoZW4KKyAgICBudWxsOworICBlbmQ7CisgIHBlcmZvcm0gcGdfc2xlZXAoMC4wMSk7CitlbmQ7 CiskJDsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0c19lcnJvcigpJykg Iz4gJ3swLFBsYW4sV2FpdCBFdmVudHMsMH0nOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID9jb2x1bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldh aXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CisoMSBy b3cpCisKK3JvbGxiYWNrOwogYmVnaW47CiBjcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxl bF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9pZAogICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xh dGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19zbGVlcCc7CkBAIC0xMzAsNyArMTkxLDcgQEAgc2V0 IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAxOwogc2VsZWN0IGpzb25i X3BhdGhfcXVlcnlfZmlyc3QoCiAgIGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFu YWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZiwgZm9ybWF0IGpzb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHBnX3Rl bXAucGFyYWxsZWxfcGdfc2xlZXAoMC4wMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t IHRlbmsxIHdoZXJlIHVuaXF1ZTEgPSAxJykgIz4gJ3swLFdhaXQgRXZlbnRzfScsCisgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxT dGF0ZW1lbnQgV2FpdCBFdmVudHN9JywKICAgJyRbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBn U2xlZXAiKScKICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1 ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkBAIC0xNDksNiArMjEwLDUz IEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogIHsiVGltZSI6IDAuMCwgIkNhbGxz IjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91 dCJ9CiAoMSByb3cpCiAKK3JvbGxiYWNrOworYmVnaW47CistLSBUaGlzIHRlc3QgZGVsaWJlcmF0 ZWx5IGNyZWF0ZXMgYSByZXNjYW5uZWQgcGFyYWxsZWwtYXdhcmUgSW5kZXggU2Nhbi4KKy0tIFRo ZSBwbGFubmVyIEdVQ3MgYW5kIHRlbmsxIHBhcmFsbGVsX3dvcmtlcnMgcmVsb3B0aW9uIGFyZSB0 ZXN0LW9ubHkKKy0tIHNjYWZmb2xkaW5nIHRvIG1ha2UgdGhlIHBhcmFsbGVsIHJlc2Nhbm5lZCBu b2RlIHNoYXBlIGRldGVybWluaXN0aWMuICBUaGUKKy0tIFNUQUJMRSBQQVJBTExFTCBTQUZFIHdy YXBwZXIgYXJvdW5kIHBnX3NsZWVwKCkgY3JlYXRlcyBhIHJ1bnRpbWUga2V5IHdhaXQKKy0tIHVu ZGVyIHRoZSBwYXJhbGxlbC1hd2FyZSBJbmRleCBTY2FuLiAgVGhlIGludmFyaWFudCBjaGVja2Vk IGJlbG93IGlzIHRoYXQKKy0tIFBnU2xlZXAgY2FsbHMgYWNjdW11bGF0ZWQgZm9yIHRoYXQgbm9k ZSBjb3ZlciBhbGwgcmVwb3J0ZWQgc2NhbiBsb29wczsgdGhpcworLS0gZmFpbHMgaWYgcGVyLW5v ZGUgd29ya2VyIHdhaXQgdXNhZ2UgaXMgcmVwbGFjZWQgb24gcmVsYXVuY2ggaW5zdGVhZCBvZgor LS0gbWVyZ2VkIGFjcm9zcyB3b3JrZXIgcmVwb3J0cy4KK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1w LmV4cGxhaW5fd2FpdHNfcGFyYWxsZWxfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKKyAgbGFu Z3VhZ2UgcGxwZ3NxbCBzdGFibGUgcGFyYWxsZWwgc2FmZSBhcyAkJGJlZ2luIHBlcmZvcm0gcGdf c2xlZXAoMC4wMDEpOyByZXR1cm4gJDE7IGVuZCQkOworYWx0ZXIgdGFibGUgdGVuazEgc2V0IChw YXJhbGxlbF93b3JrZXJzID0gNCk7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7 CitzZXQgbG9jYWwgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbG9jYWwgbWF4X3BhcmFs bGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDQ7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3Bh cnRpY2lwYXRpb24gPSBvZmY7CitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6 ZSA9IDA7CitzZXQgbG9jYWwgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0 IGxvY2FsIHJhbmRvbV9wYWdlX2Nvc3QgPSAyOword2l0aCBwbGFuX2pzb24gYXMgKAorICBzZWxl Y3QgZXhwbGFpbl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBz dW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGVjdCAqIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChzZWxlY3QgY291bnQodW5pcXVlMSkgZnJvbSB0ZW5rMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdoZXJlIGh1bmRyZWQgPiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfcGFyYWxsZWxf c2xlZXBfaW50KDEwKSkgc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IGpvaW4g KHZhbHVlcyAoMSksKDIpLCgzKSkgdih4KSBvbiB0cnVlJykgIz4gJ3swLFBsYW59JyBhcyBwbGFu CispLAorcGFyYWxsZWxfc2NhbiBhcyAoCisgIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 KHBsYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckLioqID8gKEAuIk5vZGUg VHlwZSIgPT0gIkluZGV4IFNjYW4iICYmIEAuIlBhcmFsbGVsIEF3YXJlIiA9PSB0cnVlKScpIGFz IG5vZGUKKyAgZnJvbSBwbGFuX2pzb24KKyksCitwZ3NsZWVwX3dhaXQgYXMgKAorICBzZWxlY3Qg bm9kZSwKKyAgICAgICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3Qobm9kZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50 IiA9PSAiUGdTbGVlcCIpJykgYXMgd2FpdAorICBmcm9tIHBhcmFsbGVsX3NjYW4KKykKK3NlbGVj dCAod2FpdC0+PidDYWxscycpOjpudW1lcmljID49IChub2RlLT4+J0FjdHVhbCBMb29wcycpOjpu dW1lcmljIGFzICJwYXJhbGxlbCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQiCitmcm9tIHBnc2xl ZXBfd2FpdDsKKyBwYXJhbGxlbCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwogcm9sbGJhY2s7CiBiZWdp bjsKIC0tIFRoaXMgdGVzdCBkZWxpYmVyYXRlbHkgY3JlYXRlcyBhIEJpdG1hcCBJbmRleCBTY2Fu IHJ1bnRpbWUta2V5IHdhaXQuCkBAIC0xNTcsNiArMjY1LDkgQEAgYmVnaW47CiAtLSBpbmxpbmlu ZyBmcm9tIG1vdmluZyBwZ19zbGVlcCgpIG91dCBvZiB0aGUgQml0bWFwIEluZGV4IFNjYW4gYm91 bmRhcnkuCiAtLSBUaGUgcGxhbm5lciBHVUNzIGJlbG93IGFyZSBsaWtld2lzZSB0ZXN0LW9ubHkg c2NhZmZvbGRpbmcgdG8gbWFrZSB0aGUKIC0tIG5vZGUgc2hhcGUgZGV0ZXJtaW5pc3RpYy4KKy0t IFRoZSB0d28gSlNPTlBhdGggY2hlY2tzIHZlcmlmeSBpbmNsdXNpdmUgcGVyLW5vZGUgYXR0cmli dXRpb246IHRoZSBzYW1lCistLSBydW50aW1lLWtleSB3YWl0IGFwcGVhcnMgb24gdGhlIEJpdG1h cCBJbmRleCBTY2FuIGFuZCBpdHMgQml0bWFwIEhlYXAgU2NhbgorLS0gcGFyZW50LCB3aGlsZSBx dWVyeS1sZXZlbCB3YWl0IGFjY291bnRpbmcgc3RpbGwgY291bnRzIHRoZSB3YWl0IG9uY2UuCiBj cmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVwX2ludChpbnQpIHJldHVy bnMgaW50CiAgIGxhbmd1YWdlIHBscGdzcWwgc3RhYmxlIGFzICQkYmVnaW4gcGVyZm9ybSBwZ19z bGVlcCgwLjAxKTsgcmV0dXJuICQxOyBlbmQkJDsKIGNyZWF0ZSB0ZW1wIHRhYmxlIGV4cGxhaW5f d2FpdHNfYml0bWFwIChhIGludCk7CkBAIC0xNzYsNiArMjg3LDE3IEBAIHNlbGVjdCBqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0KAogIHsiVGltZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQi OiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50IFR5cGUiOiAiVGltZW91dCJ9CiAoMSByb3cpCiAKK3Nl bGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdl eHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9m ZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGVjdCAqIGZyb20gZXhwbGFpbl93YWl0c19iaXRtYXAKKyAgICAgICAgICAgICAgICAgICAgICAg ICB3aGVyZSBhID0gcGdfdGVtcC5leHBsYWluX3dhaXRzX3NsZWVwX2ludCgxKScpICM+ICd7MCxQ bGFufScsCisgICckLioqID8gKEAuIk5vZGUgVHlwZSIgPT0gIkJpdG1hcCBIZWFwIFNjYW4iKS4i V2FpdCBFdmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbmJfcGF0aF9xdWVyeV9maXJzdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiVGlt ZSI6IDAuMCwgIkNhbGxzIjogMCwgIldhaXQgRXZlbnQiOiAiUGdTbGVlcCIsICJXYWl0IEV2ZW50 IFR5cGUiOiAiVGltZW91dCJ9CisoMSByb3cpCisKIHJvbGxiYWNrOwogZXhwbGFpbiAod2FpdHMp IHNlbGVjdCAxOwogRVJST1I6ICBFWFBMQUlOIG9wdGlvbiBXQUlUUyByZXF1aXJlcyBBTkFMWVpF CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCmluZGV4IGJkMTk2ZjI0OGRiLi45ZjUwZWYxODliMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKQEAgLTUxLDYgKzUxLDIyIEBAIGJlZ2luCiBlbmQ7 CiAkJDsKIAorLS0gRm9yIHRlc3RzIHRoYXQgYXNzZXJ0IG51bWVyaWMgRVhQTEFJTiBmaWVsZHMs IHByZXNlcnZlIHVuZmlsdGVyZWQgSlNPTi4KK2NyZWF0ZSBmdW5jdGlvbiBleHBsYWluX3RvX2pz b24odGV4dCkgcmV0dXJucyBqc29uYgorbGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK2RlY2xhcmUK KyAgICBkYXRhIHRleHQgOj0gJyc7CisgICAgbG4gdGV4dDsKK2JlZ2luCisgICAgZm9yIGxuIGlu IGV4ZWN1dGUgJDEKKyAgICBsb29wCisgICAgICAgIGRhdGEgOj0gZGF0YSB8fCBsbjsKKyAgICBl bmQgbG9vcDsKKyAgICByZXR1cm4gZGF0YTo6anNvbmI7CitlbmQ7CiskJDsKKwogLS0gRGlzYWJs ZSBKSVQsIG9yIHdlJ2xsIGdldCBkaWZmZXJlbnQgb3V0cHV0IG9uIG1hY2hpbmVzIHdoZXJlIHRo YXQncyBiZWVuCiAtLSBmb3JjZWQgb24KIHNldCBqaXQgPSBvZmY7CkBAIC03MCw5ICs4Niw0MCBA QCBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0KSBz ZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4JwogCiAtLSBXQUlUUyBvcHRpb24KIHNlbGVjdCBleHBs YWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBv ZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKTsKLXNl bGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29z dHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29u KSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsV2FpdCBFdmVudHMsMH0nOworc2VsZWN0 IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBv ZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNl bGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBFdmVudHMsMH0nOwog c2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBj b3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpz b24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsK IGJlZ2luOworY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKSBy ZXR1cm5zIHZvaWQKKyAgbGFuZ3VhZ2UgcGxwZ3NxbCBhcworJCQKK2JlZ2luCisgIHBlcmZvcm0g ZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9m Ziwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2Vs ZWN0IHBnX3NsZWVwKDAuMDEpJyk7CitlbmQ7CiskJDsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcl90 b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwg dGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0 ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7Citz ZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNv c3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNv bikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScpICM+ICd7MCxQbGFuLFdh aXQgRXZlbnRzLDB9JzsKK3JvbGxiYWNrOworYmVnaW47CistLSBJZiBhIG5lc3RlZCBFWFBMQUlO IGVycm9ycyB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZlLCBlbmRpbmcKKy0t IHRoYXQgY29sbGVjdG9yIG11c3QgcmVzdG9yZSB0aGUgb3V0ZXIgbm9kZSB3YWl0LWF0dHJpYnV0 aW9uIHN0YWNrLiAgVGhlCistLSB2b2xhdGlsZSBkaXZpc2lvbi1ieS16ZXJvIGhlbHBlciBrZWVw cyB0aGUgZXJyb3IgYXQgZXhlY3V0aW9uIHRpbWUuCitjcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5l eHBsYWluX3dhaXRzX2Rpdnplcm8oKSByZXR1cm5zIGludAorICBsYW5ndWFnZSBwbHBnc3FsIHZv bGF0aWxlIGFzICQkYmVnaW4gcmV0dXJuIDEgLyAwOyBlbmQkJDsKK2NyZWF0ZSBmdW5jdGlvbiBw Z190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzX2Vycm9yKCkgcmV0dXJucyB2b2lkCisgIGxhbmd1 YWdlIHBscGdzcWwgYXMKKyQkCitiZWdpbgorICBiZWdpbgorICAgIHBlcmZvcm0gZXhwbGFpbl9m aWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3Rl bXAuZXhwbGFpbl93YWl0c19kaXZ6ZXJvKCknKTsKKyAgZXhjZXB0aW9uIHdoZW4gZGl2aXNpb25f YnlfemVybyB0aGVuCisgICAgbnVsbDsKKyAgZW5kOworICBwZXJmb3JtIHBnX3NsZWVwKDAuMDEp OworZW5kOworJCQ7CitzZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5h bHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMg b2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHNfZXJy b3IoKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKK3JvbGxiYWNrOworYmVnaW47CiBj cmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMg dm9pZAogICBsYW5ndWFnZSBpbnRlcm5hbCB2b2xhdGlsZSBwYXJhbGxlbCBzYWZlIGFzICdwZ19z bGVlcCc7CiBzZXQgbG9jYWwgZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBvbjsKQEAgLTgwLDcgKzEy Nyw3IEBAIHNldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMTsKIHNl bGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdl eHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9m ZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGVjdCBwZ190ZW1wLnBhcmFsbGVsX3BnX3NsZWVwKDAuMDEpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgZnJvbSB0ZW5rMSB3aGVyZSB1bmlxdWUxID0gMScpICM+ICd7MCxXYWl0IEV2ZW50c30n LAorICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGVuazEgd2hlcmUgdW5pcXVlMSA9IDEn KSAjPiAnezAsU3RhdGVtZW50IFdhaXQgRXZlbnRzfScsCiAgICckWypdID8gKEAuIldhaXQgRXZl bnQiID09ICJQZ1NsZWVwIiknCiApOwogc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCkBA IC05MSwxMiArMTM4LDU3IEBAIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAogKTsKIHJv bGxiYWNrOwogYmVnaW47CistLSBUaGlzIHRlc3QgZGVsaWJlcmF0ZWx5IGNyZWF0ZXMgYSByZXNj YW5uZWQgcGFyYWxsZWwtYXdhcmUgSW5kZXggU2Nhbi4KKy0tIFRoZSBwbGFubmVyIEdVQ3MgYW5k IHRlbmsxIHBhcmFsbGVsX3dvcmtlcnMgcmVsb3B0aW9uIGFyZSB0ZXN0LW9ubHkKKy0tIHNjYWZm b2xkaW5nIHRvIG1ha2UgdGhlIHBhcmFsbGVsIHJlc2Nhbm5lZCBub2RlIHNoYXBlIGRldGVybWlu aXN0aWMuICBUaGUKKy0tIFNUQUJMRSBQQVJBTExFTCBTQUZFIHdyYXBwZXIgYXJvdW5kIHBnX3Ns ZWVwKCkgY3JlYXRlcyBhIHJ1bnRpbWUga2V5IHdhaXQKKy0tIHVuZGVyIHRoZSBwYXJhbGxlbC1h d2FyZSBJbmRleCBTY2FuLiAgVGhlIGludmFyaWFudCBjaGVja2VkIGJlbG93IGlzIHRoYXQKKy0t IFBnU2xlZXAgY2FsbHMgYWNjdW11bGF0ZWQgZm9yIHRoYXQgbm9kZSBjb3ZlciBhbGwgcmVwb3J0 ZWQgc2NhbiBsb29wczsgdGhpcworLS0gZmFpbHMgaWYgcGVyLW5vZGUgd29ya2VyIHdhaXQgdXNh Z2UgaXMgcmVwbGFjZWQgb24gcmVsYXVuY2ggaW5zdGVhZCBvZgorLS0gbWVyZ2VkIGFjcm9zcyB3 b3JrZXIgcmVwb3J0cy4KK2NyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfcGFy YWxsZWxfc2xlZXBfaW50KGludCkgcmV0dXJucyBpbnQKKyAgbGFuZ3VhZ2UgcGxwZ3NxbCBzdGFi bGUgcGFyYWxsZWwgc2FmZSBhcyAkJGJlZ2luIHBlcmZvcm0gcGdfc2xlZXAoMC4wMDEpOyByZXR1 cm4gJDE7IGVuZCQkOworYWx0ZXIgdGFibGUgdGVuazEgc2V0IChwYXJhbGxlbF93b3JrZXJzID0g NCk7CitzZXQgbG9jYWwgcGFyYWxsZWxfc2V0dXBfY29zdCA9IDA7CitzZXQgbG9jYWwgcGFyYWxs ZWxfdHVwbGVfY29zdCA9IDA7CitzZXQgbG9jYWwgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlciA9IDQ7CitzZXQgbG9jYWwgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7 CitzZXQgbG9jYWwgbWluX3BhcmFsbGVsX2luZGV4X3NjYW5fc2l6ZSA9IDA7CitzZXQgbG9jYWwg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzZXQgbG9jYWwgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitzZXQgbG9jYWwgZW5hYmxlX21hdGVyaWFsID0gb2ZmOworc2V0IGxvY2FsIHJhbmRvbV9wYWdl X2Nvc3QgPSAyOword2l0aCBwbGFuX2pzb24gYXMgKAorICBzZWxlY3QgZXhwbGFpbl90b19qc29u KCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5n IG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKQorICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGVjdCAqIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3QgY291bnQo dW5pcXVlMSkgZnJvbSB0ZW5rMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGh1 bmRyZWQgPiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfcGFyYWxsZWxfc2xlZXBfaW50KDEwKSkgc3MK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IGpvaW4gKHZhbHVlcyAoMSksKDIpLCgz KSkgdih4KSBvbiB0cnVlJykgIz4gJ3swLFBsYW59JyBhcyBwbGFuCispLAorcGFyYWxsZWxfc2Nh biBhcyAoCisgIHNlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KHBsYW4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICckLioqID8gKEAuIk5vZGUgVHlwZSIgPT0gIkluZGV4IFNj YW4iICYmIEAuIlBhcmFsbGVsIEF3YXJlIiA9PSB0cnVlKScpIGFzIG5vZGUKKyAgZnJvbSBwbGFu X2pzb24KKyksCitwZ3NsZWVwX3dhaXQgYXMgKAorICBzZWxlY3Qgbm9kZSwKKyAgICAgICAgIGpz b25iX3BhdGhfcXVlcnlfZmlyc3Qobm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJykg YXMgd2FpdAorICBmcm9tIHBhcmFsbGVsX3NjYW4KKykKK3NlbGVjdCAod2FpdC0+PidDYWxscycp OjpudW1lcmljID49IChub2RlLT4+J0FjdHVhbCBMb29wcycpOjpudW1lcmljIGFzICJwYXJhbGxl bCByZXNjYW4gd2FpdHMgYWNjdW11bGF0ZWQiCitmcm9tIHBnc2xlZXBfd2FpdDsKK3JvbGxiYWNr OworYmVnaW47CiAtLSBUaGlzIHRlc3QgZGVsaWJlcmF0ZWx5IGNyZWF0ZXMgYSBCaXRtYXAgSW5k ZXggU2NhbiBydW50aW1lLWtleSB3YWl0LgogLS0gVGhlIFNUQUJMRSBQTC9wZ1NRTCB3cmFwcGVy IGlzIHRlc3Qgc2NhZmZvbGRpbmc6IFNUQUJMRSBsZXRzIHRoZQogLS0gZXhwcmVzc2lvbiBiZSB1 c2VkIGFzIGFuIGluZGV4IHJ1bnRpbWUga2V5LCB3aGlsZSBQTC9wZ1NRTCBwcmV2ZW50cyBTUUwK IC0tIGlubGluaW5nIGZyb20gbW92aW5nIHBnX3NsZWVwKCkgb3V0IG9mIHRoZSBCaXRtYXAgSW5k ZXggU2NhbiBib3VuZGFyeS4KIC0tIFRoZSBwbGFubmVyIEdVQ3MgYmVsb3cgYXJlIGxpa2V3aXNl IHRlc3Qtb25seSBzY2FmZm9sZGluZyB0byBtYWtlIHRoZQogLS0gbm9kZSBzaGFwZSBkZXRlcm1p bmlzdGljLgorLS0gVGhlIHR3byBKU09OUGF0aCBjaGVja3MgdmVyaWZ5IGluY2x1c2l2ZSBwZXIt bm9kZSBhdHRyaWJ1dGlvbjogdGhlIHNhbWUKKy0tIHJ1bnRpbWUta2V5IHdhaXQgYXBwZWFycyBv biB0aGUgQml0bWFwIEluZGV4IFNjYW4gYW5kIGl0cyBCaXRtYXAgSGVhcCBTY2FuCistLSBwYXJl bnQsIHdoaWxlIHF1ZXJ5LWxldmVsIHdhaXQgYWNjb3VudGluZyBzdGlsbCBjb3VudHMgdGhlIHdh aXQgb25jZS4KIGNyZWF0ZSBmdW5jdGlvbiBwZ190ZW1wLmV4cGxhaW5fd2FpdHNfc2xlZXBfaW50 KGludCkgcmV0dXJucyBpbnQKICAgbGFuZ3VhZ2UgcGxwZ3NxbCBzdGFibGUgYXMgJCRiZWdpbiBw ZXJmb3JtIHBnX3NsZWVwKDAuMDEpOyByZXR1cm4gJDE7IGVuZCQkOwogY3JlYXRlIHRlbXAgdGFi bGUgZXhwbGFpbl93YWl0c19iaXRtYXAgKGEgaW50KTsKQEAgLTExMSw2ICsyMDMsMTIgQEAgc2Vs ZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hl cmUgYSA9IHBnX3RlbXAuZXhwbGFpbl93YWl0c19zbGVlcF9pbnQoMSknKSAjPiAnezAsUGxhbn0n LAogICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJCaXRtYXAgSW5kZXggU2NhbiIpLiJXYWl0 IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScKICk7CitzZWxlY3Qg anNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFp biAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1 ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Qg KiBmcm9tIGV4cGxhaW5fd2FpdHNfYml0bWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgd2hl cmUgYSA9IHBnX3RlbXAuZXhwbGFpbl93YWl0c19zbGVlcF9pbnQoMSknKSAjPiAnezAsUGxhbn0n LAorICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJCaXRtYXAgSGVhcCBTY2FuIikuIldhaXQg RXZlbnRzIlsqXSA/IChALiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKIHJvbGxiYWNr OwogZXhwbGFpbiAod2FpdHMpIHNlbGVjdCAxOwogCi0tIAoyLjUyLjAKCg== --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0005-Harden-EXPLAIN-WAITS-accumulator-handling.patch" Content-Disposition: attachment; filename="0005-Harden-EXPLAIN-WAITS-accumulator-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaym94 RnJvbSA3NTM1ODg5OTkxZWM0YWY2MTA0ZTRhYzI0MWY5ZmNhN2I2MDMyNThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDU6NDQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSA1LzddIEhhcmRlbiBFWFBMQUlOIFdBSVRTIGFjY3VtdWxhdG9yIGhhbmRsaW5nCgotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sICAgICAgICAgICB8ICAxNSArKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICB8ICAxMSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyB8IDEwMCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICB8ICAxMCArLS0KIDUgZmlsZXMgY2hh bmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgODIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dt bAppbmRleCBkNjk5YjIxNTEyMC4uN2ZhNGIxY2Q5NTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCkBA IC0zMjYsMTMgKzMyNiwxNCBAQCBST0xMQkFDSzsKICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJh PgotICAgICAgSWYgPGNvbW1hbmQ+RVhQTEFJTjwvY29tbWFuZD4gY2Fubm90IGdyb3cgaXRzIHBl ci1xdWVyeSBvciBwZXItbm9kZSB3YWl0Ci0gICAgICBldmVudCBzdG9yYWdlIHdpdGhvdXQgcmlz a2luZyBhbiBlcnJvciB3aGlsZSBhIHdhaXQgaXMgZW5kaW5nLCB3YWl0cwotICAgICAgd2hvc2Ug ZXhhY3QgZXZlbnQgaWRlbnRpZmllciBjb3VsZCBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRl ZCBpbiBhbgotICAgICAgPGxpdGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IENhbGxzPC9saXRl cmFsPiBjb3VudGVyIGFuZAotICAgICAgPGxpdGVyYWw+VW5yZWNvcmRlZCBXYWl0IEV2ZW50IFRp bWU8L2xpdGVyYWw+IHRvdGFsLiAgVGhpcyBpcyBhCi0gICAgICByZXBvcnRpbmcgZmFsbGJhY2sg dW5kZXIgbWVtb3J5IHByZXNzdXJlLCBub3QgYSB3YWl0IGV2ZW50IGVtaXR0ZWQgYnkKLSAgICAg IHNlcnZlciBpbnN0cnVtZW50YXRpb24uCisgICAgICBFYWNoIHN0YXRlbWVudCBhbmQgcGxhbi1u b2RlIGFjY3VtdWxhdG9yIHByZWFsbG9jYXRlcyBzdG9yYWdlIGZvciB1cCB0bworICAgICAgPGxp dGVyYWw+NjQ8L2xpdGVyYWw+IGRpc3RpbmN0IHdhaXQgZXZlbnQgaWRlbnRpZmllcnMuICBUaGlz IGJvdW5kCisgICAgICBhdm9pZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hpbGUgYSB3YWl0IGlzIGVu ZGluZy4gIElmIG1vcmUgZGlzdGluY3Qgd2FpdAorICAgICAgZXZlbnQgaWRlbnRpZmllcnMgYXJl IG9ic2VydmVkLCB3YWl0cyB3aG9zZSBleGFjdCBldmVudCBpZGVudGlmaWVyIGNvdWxkCisgICAg ICBub3QgYmUgc3RvcmVkIGFyZSBhY2N1bXVsYXRlZCBpbiBhbiA8bGl0ZXJhbD5VbnJlY29yZGVk IFdhaXQgRXZlbnQKKyAgICAgIENhbGxzPC9saXRlcmFsPiBjb3VudGVyIGFuZCA8bGl0ZXJhbD5V bnJlY29yZGVkIFdhaXQgRXZlbnQgVGltZTwvbGl0ZXJhbD4KKyAgICAgIHRvdGFsLiAgVGhpcyBp cyBhIHJlcG9ydGluZyBmYWxsYmFjaywgbm90IGEgd2FpdCBldmVudCBlbWl0dGVkIGJ5IHNlcnZl cgorICAgICAgaW5zdHJ1bWVudGF0aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggOWMxOThmOGU1OTkuLmVlNjlkNzIzY2Q4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCkBAIC00NTc4LDcgKzQ1NzgsNyBAQCBzaG93X3dhaXRfZXZlbnRfdXNh Z2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqbGFiZWxuYW1lLAogCWVsc2UKIAkJZW50 cmllcyA9IE5VTEw7CiAKLQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkK KwlpZiAoZXMtPmZvcm1hdCA9PSBFWFBMQUlOX0ZPUk1BVF9URVhUKQogCXsKIAkJRXhwbGFpbklu ZGVudFRleHQoZXMpOwogCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIlczpcbiIsIGxhYmVs bmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDA4MTg1NWIzZmVkLi5k ZWVlMTQ4MzlmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2Rl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTQxNywxNSAr NDE3LDggQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZShlc3RhdGUtPmVzX2lu c3RydW1lbnQsCiAJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAJaWYgKGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCAmIElOU1RSVU1FTlRfV0FJVFMpCi0JewotCQlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQ7Ci0KLQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3Rh dGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JCXJlc3VsdC0+d2FpdF9ldmVudF91c2FnZSA9IHBhbGxvY19v YmplY3QoV2FpdEV2ZW50VXNhZ2UpOwotCQlwZ3N0YXRfaW5pdF93YWl0X2V2ZW50X3VzYWdlKHJl c3VsdC0+d2FpdF9ldmVudF91c2FnZSwKLQkJCQkJCQkJCSBlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKLQl9CisJCXJlc3VsdC0+d2Fp dF9ldmVudF91c2FnZSA9CisJCQlwZ3N0YXRfY3JlYXRlX3dhaXRfZXZlbnRfdXNhZ2UoZXN0YXRl LT5lc19xdWVyeV9jeHQpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA2MWI0MThlOGZkNy4uNjc5ODBjYzBhM2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTI3LDcgKzI3LDYgQEAKICNp bmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCi0jaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIApAQCAtNDMsMTUgKzQyLDI1IEBAIHN0 YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3coV2FpdEV2ZW50VXNhZ2UgKnVzYWdl LCB1aW50NjQgY2FsbHMsCiAJCQkJCQkJCQkgIGNvbnN0IGluc3RyX3RpbWUgKmVsYXBzZWQpOwog c3RhdGljIGludAlXYWl0RXZlbnRVc2FnZUZpbmQoY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdl LAogCQkJCQkJCSAgIHVpbnQzMiB3YWl0X2V2ZW50X2luZm8sIGJvb2wgKmZvdW5kKTsKK3N0YXRp YyB2b2lkIFdhaXRFdmVudFVzYWdlSW5pdChXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCisJCQkJCQkJ ICAgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KTsKIAogCiBzdGF0aWMgdWludDMyIGxvY2FsX215 X3dhaXRfZXZlbnRfaW5mbzsKIHVpbnQzMgkgICAqbXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2Fs X215X3dhaXRfZXZlbnRfaW5mbzsKIAotI2RlZmluZSBXQUlUX0VWRU5UX1VTQUdFX0lOSVRJQUxf RVZFTlRTCTE2CisvKgorICogSGFyZGNvZGVkIGxpbWl0OiBlYWNoIEVYUExBSU4gV0FJVFMgc3Rh dGVtZW50LWxldmVsIG9yIHBsYW4tbm9kZSBhY2N1bXVsYXRvcgorICogY2FuIHJlY29yZCB0aGlz IG1hbnkgZGlzdGluY3Qgd2FpdCBldmVudCBpZGVudGl0aWVzIHdpdGhvdXQgYWxsb2NhdGluZyB3 aGlsZQorICogd2FpdHMgYXJlIGVuZGluZy4gIEFkZGl0aW9uYWwgZGlzdGluY3Qgd2FpdCBpZGVu dGl0aWVzIGFyZSBhY2NvdW50ZWQgZm9yIGluCisgKiB0aGUgb3ZlcmZsb3cgYnVja2V0LgorICov CisjZGVmaW5lIFdBSVRfRVZFTlRfVVNBR0VfTUFYX0VWRU5UUwkJNjQKIAotaW50CQkJcGdzdGF0 X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGggPSAwOworLyogRmFzdC1wYXRoIGZsYWcgZXhwb3J0ZWQg Zm9yIGlubGluZSBwZ3N0YXRfcmVwb3J0X3dhaXRfc3RhcnQvZW5kKCkuICovCitib29sCQlwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSBmYWxzZTsKIHN0YXRpYyBXYWl0RXZlbnRVc2Fn ZSAqcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2UgPSBOVUxMOworc3RhdGljIGludAlwZ3N0YXRfd2Fp dF9ldmVudF91c2FnZV9kZXB0aCA9IDA7CiAKIC8qCiAgKiBUb3Agb2YgdGhlIGFjdGl2ZSBleGVj dXRvciBub2RlIGFuZCBxdWVyeS1sZXZlbCBzdGFja3MuICBRdWVyeS1sZXZlbCB3YWl0CkBAIC0z NzMsMjYgKzM4MiwzNiBAQCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKHZvaWQpCiAJ bXlfd2FpdF9ldmVudF9pbmZvID0gJmxvY2FsX215X3dhaXRfZXZlbnRfaW5mbzsKIH0KIAorLyoK KyAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgd2FpdCBldmVudCB1c2FnZSBhY2N1bXVsYXRv ci4KKyAqLworV2FpdEV2ZW50VXNhZ2UgKgorcGdzdGF0X2NyZWF0ZV93YWl0X2V2ZW50X3VzYWdl KE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCkKK3sKKwlXYWl0RXZlbnRVc2FnZSAqdXNhZ2U7CisK KwlBc3NlcnQobWVtY29udGV4dCAhPSBOVUxMKTsKKworCXVzYWdlID0gTWVtb3J5Q29udGV4dEFs bG9jKG1lbWNvbnRleHQsIHNpemVvZihXYWl0RXZlbnRVc2FnZSkpOworCVdhaXRFdmVudFVzYWdl SW5pdCh1c2FnZSwgbWVtY29udGV4dCk7CisJcmV0dXJuIHVzYWdlOworfQorCiAvKgogICogSW5p dGlhbGl6ZSBhIHdhaXQgZXZlbnQgdXNhZ2UgYWNjdW11bGF0b3IuCiAgKi8KLXZvaWQKLXBnc3Rh dF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250 ZXh0IG1lbWNvbnRleHQpCitzdGF0aWMgdm9pZAorV2FpdEV2ZW50VXNhZ2VJbml0KFdhaXRFdmVu dFVzYWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogewogCUFzc2VydCh1c2Fn ZSAhPSBOVUxMKTsKIAlBc3NlcnQobWVtY29udGV4dCAhPSBOVUxMKTsKIAogCW1lbXNldCh1c2Fn ZSwgMCwgc2l6ZW9mKFdhaXRFdmVudFVzYWdlKSk7CiAKLQkvKgotCSAqIFdhaXQgZXZlbnRzIG1h eSBlbmQgaW5zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLCBmb3IgZXhhbXBsZSB3aGlsZQotCSAqIHBl cmZvcm1pbmcgc3luY2hyb25vdXMgSS9PLiAgS2VlcCB1c2FnZSBlbnRyaWVzIGluIGEgZGVkaWNh dGVkIGNvbnRleHQKLQkgKiB3aGVyZSB0aGUgbWVtb3J5IG1hbmFnZXIgcGVybWl0cyB0aGF0IGFj Y291bnRpbmcgcGF0aCB0byBncm93LgotCSAqLwotCXVzYWdlLT5tZW1jb250ZXh0ID0gQWxsb2NT ZXRDb250ZXh0Q3JlYXRlKG1lbWNvbnRleHQsCi0JCQkJCQkJCQkJCSAgIldhaXQgRXZlbnQgVXNh Z2UiLAotCQkJCQkJCQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKLQlNZW1vcnlDb250ZXh0 QWxsb3dJbkNyaXRpY2FsU2VjdGlvbih1c2FnZS0+bWVtY29udGV4dCwgdHJ1ZSk7CisJdXNhZ2Ut PmVudHJpZXMgPSBNZW1vcnlDb250ZXh0QWxsb2MobWVtY29udGV4dCwKKwkJCQkJCQkJCQlzaXpl b2YoV2FpdEV2ZW50VXNhZ2VFbnRyeSkgKgorCQkJCQkJCQkJCVdBSVRfRVZFTlRfVVNBR0VfTUFY X0VWRU5UUyk7CisJdXNhZ2UtPm1heGVudHJpZXMgPSBXQUlUX0VWRU5UX1VTQUdFX01BWF9FVkVO VFM7CiB9CiAKIC8qCkBAIC00MjEsNyArNDQwLDcgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRf dXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAJ CUlOU1RSX1RJTUVfU0VUX1pFUk8ocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2Vfc3RhcnQpOwogCX0K IAotCXBnc3RhdF9pbml0X3dhaXRfZXZlbnRfdXNhZ2UodXNhZ2UsIG1lbWNvbnRleHQpOworCVdh aXRFdmVudFVzYWdlSW5pdCh1c2FnZSwgbWVtY29udGV4dCk7CiAJdXNhZ2UtPnF1ZXJ5X3BhcmVu dCA9IHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlOwogCS8qCiAJICogQSBuZXN0ZWQgRVhQTEFJTiBj YW4gZXJyb3Igb3V0IHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBpcyBhY3RpdmUsCkBAIC00 MzEsNiArNDUwLDcgQEAgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNh Z2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiAJdXNhZ2UtPnNhdmVkX25vZGVf dXNhZ2UgPSBwZ3N0YXRfd2FpdF9ldmVudF9ub2RlX3VzYWdlOwogCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlID0gdXNhZ2U7CiAJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGgrKzsKKwlwZ3N0 YXRfd2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSB0cnVlOwogfQogCiAvKgpAQCAtNDUzLDYgKzQ3 Myw3IEBAIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2Up CiAKIAlpZiAoLS1wZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0aCA9PSAwKQogCXsKKwkJcGdz dGF0X3dhaXRfZXZlbnRfdXNhZ2VfYWN0aXZlID0gZmFsc2U7CiAJCXBnc3RhdF93YWl0X2V2ZW50 X3VzYWdlID0gTlVMTDsKIAkJcGdzdGF0X3dhaXRfZXZlbnRfbm9kZV91c2FnZSA9IE5VTEw7CiAJ CXBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX25vZGVfc3RhY2sgPSBOVUxMOwpAQCAtNjAyLDUyICs2 MjMsMTMgQEAgV2FpdEV2ZW50VXNhZ2VBZGQoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCB1aW50MzIg d2FpdF9ldmVudF9pbmZvLAogCXsKIAkJaWYgKHVzYWdlLT5uZW50cmllcyA+PSB1c2FnZS0+bWF4 ZW50cmllcykKIAkJewotCQkJaW50CQkJbmV3bWF4ZW50cmllczsKLQkJCVNpemUJCWVudHJpZXNf c2l6ZTsKLQkJCVdhaXRFdmVudFVzYWdlRW50cnkgKm5ld2VudHJpZXM7Ci0KLQkJCWlmICh1c2Fn ZS0+bWF4ZW50cmllcyA+IDApCi0JCQl7Ci0JCQkJaWYgKChTaXplKSB1c2FnZS0+bWF4ZW50cmll cyA+Ci0JCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSAvIDIp Ci0JCQkJewotCQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJmbG93KHVzYWdlLCBjYWxscywgZWxh cHNlZCk7Ci0JCQkJCXJldHVybjsKLQkJCQl9Ci0KLQkJCQluZXdtYXhlbnRyaWVzID0gdXNhZ2Ut Pm1heGVudHJpZXMgKiAyOwotCQkJfQotCQkJZWxzZQotCQkJCW5ld21heGVudHJpZXMgPSBXQUlU X0VWRU5UX1VTQUdFX0lOSVRJQUxfRVZFTlRTOwotCi0JCQlpZiAoKFNpemUpIG5ld21heGVudHJp ZXMgPgotCQkJCU1heEFsbG9jU2l6ZSAvIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSkKLQkJ CXsKLQkJCQlXYWl0RXZlbnRVc2FnZUFkZE92ZXJmbG93KHVzYWdlLCBjYWxscywgZWxhcHNlZCk7 Ci0JCQkJcmV0dXJuOwotCQkJfQotCi0JCQllbnRyaWVzX3NpemUgPSBzaXplb2YoV2FpdEV2ZW50 VXNhZ2VFbnRyeSkgKiBuZXdtYXhlbnRyaWVzOwogCQkJLyoKLQkJCSAqIFdhaXQgY29tcGxldGlv biBjYW4gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiwgc28gZ3Jvd3RoCi0JCQkgKiBtdXN0 IG5vdCB0aHJvdyBFUlJPUi4gIElmIHN0b3JhZ2UgY2Fubm90IGJlIGdyb3duIHdpdGhvdXQKLQkJ CSAqIHRocm93aW5nLCBwcmVzZXJ2ZSB0b3RhbCB3YWl0IHRpbWUgaW4gdGhlIG92ZXJmbG93IGJ1 Y2tldC4KKwkJCSAqIFdhaXQtZW5kIGFjY291bnRpbmcgbXVzdCBub3QgYWxsb2NhdGU6IGl0IGNh biBydW4gaW4gYSBjcml0aWNhbAorCQkJICogc2VjdGlvbi4gIFByZXNlcnZlIHRvdGFsIGNhbGxz L3RpbWUgd2l0aG91dCB0aGUgZXhhY3QgZXZlbnQKKwkJCSAqIGlkZW50aXR5IG9uY2UgcHJlYWxs b2NhdGVkIHN0b3JhZ2UgaXMgZnVsbC4KIAkJCSAqLwotCQkJaWYgKHVzYWdlLT5lbnRyaWVzKQot CQkJCW5ld2VudHJpZXMgPSByZXBhbGxvY19leHRlbmRlZCh1c2FnZS0+ZW50cmllcywgZW50cmll c19zaXplLAotCQkJCQkJCQkJCQkgICBNQ1hUX0FMTE9DX05PX09PTSk7Ci0JCQllbHNlCi0JCQkJ bmV3ZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvY0V4dGVuZGVkKHVzYWdlLT5tZW1jb250ZXh0 LAotCQkJCQkJCQkJCQkJCQllbnRyaWVzX3NpemUsCi0JCQkJCQkJCQkJCQkJCU1DWFRfQUxMT0Nf Tk9fT09NKTsKLQkJCWlmIChuZXdlbnRyaWVzID09IE5VTEwpCi0JCQl7Ci0JCQkJV2FpdEV2ZW50 VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwgY2FsbHMsIGVsYXBzZWQpOwotCQkJCXJldHVybjsKLQkJ CX0KLQotCQkJdXNhZ2UtPmVudHJpZXMgPSBuZXdlbnRyaWVzOwotCQkJdXNhZ2UtPm1heGVudHJp ZXMgPSBuZXdtYXhlbnRyaWVzOworCQkJV2FpdEV2ZW50VXNhZ2VBZGRPdmVyZmxvdyh1c2FnZSwg Y2FsbHMsIGVsYXBzZWQpOworCQkJcmV0dXJuOwogCQl9CiAKIAkJaWYgKGlkeCA8IHVzYWdlLT5u ZW50cmllcykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCBmMTQ5NDVjZGIxNi4uNjc0OTc3OTAz MDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTI0LDcgKzI0LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgV2FpdEV2ZW50VXNhZ2VFbnRyeQogCiB0eXBlZGVmIHN0cnVjdCBXYWl0RXZlbnRVc2FnZQog ewotCU1lbW9yeUNvbnRleHQgbWVtY29udGV4dDsKIAlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKmFj dGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sgbGluayAqLwogCXN0cnVjdCBX YWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUgcXVlcnktbGV2ZWwgc3RhY2sg bGluayAqLwogCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRfbm9kZV91c2FnZTsJLyogbm9k ZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwpAQCAtNDEsOCArNDAsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwog c3RhdGljIGlubGluZSB2b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9lbmQodm9pZCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh1aW50MzIgKndhaXRfZXZlbnRfaW5m byk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRfd2FpdF9ldmVudF9zdG9yYWdlKHZvaWQpOwot ZXh0ZXJuIHZvaWQgcGdzdGF0X2luaXRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAq dXNhZ2UsCi0JCQkJCQkJCQkJIE1lbW9yeUNvbnRleHQgbWVtY29udGV4dCk7CitleHRlcm4gV2Fp dEV2ZW50VXNhZ2UgKnBnc3RhdF9jcmVhdGVfd2FpdF9ldmVudF91c2FnZShNZW1vcnlDb250ZXh0 IG1lbWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uo V2FpdEV2ZW50VXNhZ2UgKnVzYWdlLAogCQkJCQkJCQkJCSAgTWVtb3J5Q29udGV4dCBtZW1jb250 ZXh0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRV c2FnZSAqdXNhZ2UpOwpAQCAtNTUsNyArNTMsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRf d2FpdF9ldmVudF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIGV4dGVybiB2b2lkIHBn c3RhdF9jb3VudF93YWl0X2V2ZW50X2VuZCh2b2lkKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIHVp bnQzMiAqbXlfd2FpdF9ldmVudF9pbmZvOwotZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRf d2FpdF9ldmVudF91c2FnZV9kZXB0aDsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIHBnc3RhdF93 YWl0X2V2ZW50X3VzYWdlX2FjdGl2ZTsKIAogCiAvKgpAQCAtMTAxLDcgKzk5LDcgQEAgZXh0ZXJu IGNoYXIgKipHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2Fp dGV2ZW50cyk7CiBzdGF0aWMgaW5saW5lIHZvaWQKIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1 aW50MzIgd2FpdF9ldmVudF9pbmZvKQogewotCWlmIChwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9k ZXB0aCA+IDApCisJaWYgKHVubGlrZWx5KHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2FjdGl2ZSkp CiAJCXBnc3RhdF9jb3VudF93YWl0X2V2ZW50X3N0YXJ0KHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkv KgpAQCAtMTIwLDcgKzExOCw3IEBAIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2Fp dF9ldmVudF9pbmZvKQogc3RhdGljIGlubGluZSB2b2lkCiBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5k KHZvaWQpCiB7Ci0JaWYgKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2RlcHRoID4gMCkKKwlpZiAo dW5saWtlbHkocGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfYWN0aXZlKSkKIAkJcGdzdGF0X2NvdW50 X3dhaXRfZXZlbnRfZW5kKCk7CiAKIAkvKiBzZWUgcGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KCkg Ki8KLS0gCjIuNTIuMAoK --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0006-Hide-EXPLAIN-WAITS-accumulator-internals.patch" Content-Disposition: attachment; filename="0006-Hide-EXPLAIN-WAITS-accumulator-internals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaymb5 RnJvbSBlOWYxMDMwY2Q4NjRjOTNhM2UxN2Q1M2Y0ZjM0NGIzMjAyYmI1N2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDY6MTIgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSA2LzddIEhpZGUgRVhQTEFJTiBXQUlUUyBhY2N1bXVsYXRvciBpbnRlcm5hbHMKCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgNDUgKysrKysrKysrKy0tLS0t LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgfCA0NCArKysrKysr KystLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIHwgNjMg KysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5o ICAgICAgICAgIHwgMzIgKysrKysrKystLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0 aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGVlNjlk NzIzY2Q4Li4wZTJlYzUxMGZlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTE0LDcgKzUx NCw2IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlpbnQJCQllZmxhZ3M7CiAJaW50CQkJaW5zdHJ1 bWVudF9vcHRpb24gPSAwOwogCVNlcmlhbGl6ZU1ldHJpY3Mgc2VyaWFsaXplTWV0cmljcyA9IHsw fTsKLQlXYWl0RXZlbnRVc2FnZSB3YWl0RXZlbnRVc2FnZTsKIAlXYWl0RXZlbnRVc2FnZSAqd2Fp dEV2ZW50VXNhZ2VQdHIgPSBOVUxMOwogCiAJQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlw ZSAhPSBDTURfVVRJTElUWSk7CkBAIC01OTMsOSArNTkyLDggQEAgRXhwbGFpbk9uZVBsYW4oUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCiAJCWlmIChlcy0+d2FpdHMpCiAJCXsKLQkJCXdhaXRFdmVudFVzYWdlUHRyID0gJndhaXRF dmVudFVzYWdlOwotCQkJcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2Uod2FpdEV2ZW50VXNh Z2VQdHIsCi0JCQkJCQkJCQkJICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKwkJ CXdhaXRFdmVudFVzYWdlUHRyID0KKwkJCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5l c193YWl0X2V2ZW50X3VzYWdlID0gd2FpdEV2ZW50VXNhZ2VQdHI7CiAJCX0KIApAQCAtNDU1OSwy MCArNDU1NywyOSBAQCBzdGF0aWMgdm9pZAogc2hvd193YWl0X2V2ZW50X3VzYWdlKEV4cGxhaW5T dGF0ZSAqZXMsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwKIAkJCQkJICBjb25zdCBXYWl0RXZlbnRV c2FnZSAqdXNhZ2UpCiB7CisJY29uc3QgV2FpdEV2ZW50VXNhZ2VFbnRyeSAqdXNhZ2VfZW50cmll czsKIAlXYWl0RXZlbnRVc2FnZUVudHJ5ICplbnRyaWVzOworCXVpbnQ2NAkJb3ZlcmZsb3dlZF9j YWxsczsKKwlpbnN0cl90aW1lCW92ZXJmbG93ZWRfdGltZTsKKwlpbnQJCQluZW50cmllczsKIAog CWlmICh1c2FnZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlpZiAodXNhZ2UtPm5lbnRyaWVzID09 IDAgJiYgdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgPT0gMCkKKwlpZiAocGdzdGF0X3dhaXRfZXZl bnRfdXNhZ2VfaXNfZW1wdHkodXNhZ2UpKQogCQlyZXR1cm47CiAKLQlpZiAodXNhZ2UtPm5lbnRy aWVzID4gMCkKKwluZW50cmllcyA9IHBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRyaWVz KHVzYWdlLCAmdXNhZ2VfZW50cmllcyk7CisJcGdzdGF0X2dldF93YWl0X2V2ZW50X3VzYWdlX292 ZXJmbG93KHVzYWdlLAorCQkJCQkJCQkJCSAmb3ZlcmZsb3dlZF9jYWxscywKKwkJCQkJCQkJCQkg Jm92ZXJmbG93ZWRfdGltZSk7CisKKwlpZiAobmVudHJpZXMgPiAwKQogCXsKLQkJZW50cmllcyA9 IHBhbGxvY19hcnJheShXYWl0RXZlbnRVc2FnZUVudHJ5LCB1c2FnZS0+bmVudHJpZXMpOwotCQlt ZW1jcHkoZW50cmllcywgdXNhZ2UtPmVudHJpZXMsCi0JCQkgICBzaXplb2YoV2FpdEV2ZW50VXNh Z2VFbnRyeSkgKiB1c2FnZS0+bmVudHJpZXMpOwotCQlxc29ydChlbnRyaWVzLCB1c2FnZS0+bmVu dHJpZXMsIHNpemVvZihXYWl0RXZlbnRVc2FnZUVudHJ5KSwKKwkJZW50cmllcyA9IHBhbGxvY19h cnJheShXYWl0RXZlbnRVc2FnZUVudHJ5LCBuZW50cmllcyk7CisJCW1lbWNweShlbnRyaWVzLCB1 c2FnZV9lbnRyaWVzLAorCQkJICAgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50cnkpICogbmVudHJp ZXMpOworCQlxc29ydChlbnRyaWVzLCBuZW50cmllcywgc2l6ZW9mKFdhaXRFdmVudFVzYWdlRW50 cnkpLAogCQkJICB3YWl0X2V2ZW50X3VzYWdlX2NtcCk7CiAJfQogCWVsc2UKQEAgLTQ1ODQsNyAr NDU5MSw3IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBj aGFyICpsYWJlbG5hbWUsCiAJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzOlxuIiwgbGFi ZWxuYW1lKTsKIAkJZXMtPmluZGVudCsrOwogCi0JCWZvciAoaW50IGkgPSAwOyBpIDwgdXNhZ2Ut Pm5lbnRyaWVzOyBpKyspCisJCWZvciAoaW50IGkgPSAwOyBpIDwgbmVudHJpZXM7IGkrKykKIAkJ ewogCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKIAkJCWNvbnN0IGNoYXIgKmV2ZW50X25hbWU7 CkBAIC00NjAwLDI0ICs0NjA3LDI0IEBAIHNob3dfd2FpdF9ldmVudF91c2FnZShFeHBsYWluU3Rh dGUgKmVzLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsCiAJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01J TExJU0VDKGVudHJpZXNbaV0udGltZSkpOwogCQl9CiAKLQkJaWYgKHVzYWdlLT5vdmVyZmxvd2Vk X2NhbGxzID4gMCkKKwkJaWYgKG92ZXJmbG93ZWRfY2FsbHMgPiAwKQogCQl7CiAJCQlFeHBsYWlu SW5kZW50VGV4dChlcyk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCiAJCQkJCQkJICJV bnJlY29yZGVkIFdhaXQgRXZlbnQgQ2FsbHM6IGNhbGxzPSUiIFBSSXU2NCAiIHRpbWU9JTAuM2Yg bXNcbiIsCi0JCQkJCQkJIHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzLAotCQkJCQkJCSBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+b3ZlcmZsb3dlZF90aW1lKSk7CisJCQkJCQkJIG92ZXJm bG93ZWRfY2FsbHMsCisJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKG92ZXJmbG93ZWRf dGltZSkpOwogCQl9CiAKIAkJZXMtPmluZGVudC0tOwogCX0KIAllbHNlCiAJewotCQlpZiAodXNh Z2UtPm5lbnRyaWVzID4gMCkKKwkJaWYgKG5lbnRyaWVzID4gMCkKIAkJewogCQkJRXhwbGFpbk9w ZW5Hcm91cCgiV2FpdC1FdmVudHMiLCBsYWJlbG5hbWUsIGZhbHNlLCBlcyk7CiAKLQkJCWZvciAo aW50IGkgPSAwOyBpIDwgdXNhZ2UtPm5lbnRyaWVzOyBpKyspCisJCQlmb3IgKGludCBpID0gMDsg aSA8IG5lbnRyaWVzOyBpKyspCiAJCQl7CiAJCQkJY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKIAkJ CQljb25zdCBjaGFyICpldmVudF9uYW1lOwpAQCAtNDY0MiwxNiArNDY0OSwxNiBAQCBzaG93X3dh aXRfZXZlbnRfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqbGFiZWxuYW1lLAog CQkJRXhwbGFpbkNsb3NlR3JvdXAoIldhaXQtRXZlbnRzIiwgbGFiZWxuYW1lLCBmYWxzZSwgZXMp OwogCQl9CiAKLQkJaWYgKHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzID4gMCkKKwkJaWYgKG92ZXJm bG93ZWRfY2FsbHMgPiAwKQogCQl7CiAJCQkvKgogCQkJICogVGhpcyBpcyBub3QgYSB3YWl0IGV2 ZW50IGlkZW50aXR5LCBzbyBrZWVwIGl0IG91dHNpZGUgdGhlCiAJCQkgKiBXYWl0IEV2ZW50cyBh cnJheSBpbiBzdHJ1Y3R1cmVkIG91dHB1dC4KIAkJCSAqLwogCQkJRXhwbGFpblByb3BlcnR5VUlu dGVnZXIoIlVucmVjb3JkZWQgV2FpdCBFdmVudCBDYWxscyIsIE5VTEwsCi0JCQkJCQkJCQl1c2Fn ZS0+b3ZlcmZsb3dlZF9jYWxscywgZXMpOworCQkJCQkJCQkJb3ZlcmZsb3dlZF9jYWxscywgZXMp OwogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlVucmVjb3JkZWQgV2FpdCBFdmVudCBUaW1lIiwg Im1zIiwKLQkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5vdmVyZmxvd2Vk X3RpbWUpLAorCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMob3ZlcmZsb3dlZF90aW1l KSwKIAkJCQkJCQkJIDMsIGVzKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKaW5kZXggNTIwYjRiODQ4NGYuLmRjZDA2YzcxOGM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYwpAQCAtMTM1Miw4ICsxMzUyLDkgQEAgRXhlY1BhcmFsbGVsQWNjdW11bGF0ZVdh aXRFdmVudFVzYWdlV29ya2VyKFdhaXRFdmVudFVzYWdlICp1c2FnZSwKIAogCWlmICh3b3JrZXIt Pm92ZXJmbG93ZWRfY2FsbHMgPiAwKQogCXsKLQkJdXNhZ2UtPm92ZXJmbG93ZWRfY2FsbHMgKz0g d29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzOwotCQlJTlNUUl9USU1FX0FERCh1c2FnZS0+b3ZlcmZs b3dlZF90aW1lLCB3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7CisJCXBnc3RhdF9hY2N1bXVsYXRl X3dhaXRfZXZlbnRfdXNhZ2Vfb3ZlcmZsb3codXNhZ2UsCisJCQkJCQkJCQkJCQkJd29ya2VyLT5v dmVyZmxvd2VkX2NhbGxzLAorCQkJCQkJCQkJCQkJCSZ3b3JrZXItPm92ZXJmbG93ZWRfdGltZSk7 CiAJCXdvcmtlci0+b3ZlcmZsb3dlZF9jYWxscyA9IDA7CiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8o d29ya2VyLT5vdmVyZmxvd2VkX3RpbWUpOwogCX0KQEAgLTEzNzcsMTEgKzEzNzgsMTUgQEAgRXhl Y1BhcmFsbGVsUmVwb3J0V2FpdEV2ZW50VXNhZ2VXb3JrZXIoU2hhcmVkV2FpdEV2ZW50VXNhZ2VX b3JrZXIgKndvcmtlciwKIAkJCQkJCQkJCSAgIGRzYV9hcmVhICphcmVhLAogCQkJCQkJCQkJICAg Y29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQogeworCWNvbnN0IFdhaXRFdmVudFVzYWdlRW50 cnkgKnVzYWdlX2VudHJpZXM7CiAJV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKIAlXYWl0 RXZlbnRVc2FnZUVudHJ5ICpvbGRfZW50cmllcyA9IE5VTEw7CiAJZHNhX3BvaW50ZXIgZW50cmll c19kc2E7CisJdWludDY0CQlvdmVyZmxvd2VkX2NhbGxzOworCWluc3RyX3RpbWUJb3ZlcmZsb3dl ZF90aW1lOwogCVNpemUJCWVudHJpZXNfc2l6ZTsKIAlpbnQJCQlvbGRfbmVudHJpZXMgPSAwOwor CWludAkJCXVzYWdlX25lbnRyaWVzOwogCWludAkJCW5ld19uZW50cmllcyA9IDA7CiAJaW50CQkJ aSA9IDA7CiAJaW50CQkJaiA9IDA7CkBAIC0xMzkwLDEwICsxMzk1LDE1IEBAIEV4ZWNQYXJhbGxl bFJlcG9ydFdhaXRFdmVudFVzYWdlV29ya2VyKFNoYXJlZFdhaXRFdmVudFVzYWdlV29ya2VyICp3 b3JrZXIsCiAJQXNzZXJ0KGFyZWEgIT0gTlVMTCk7CiAJQXNzZXJ0KHVzYWdlICE9IE5VTEwpOwog Ci0Jd29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzICs9IHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzOwot CUlOU1RSX1RJTUVfQUREKHdvcmtlci0+b3ZlcmZsb3dlZF90aW1lLCB1c2FnZS0+b3ZlcmZsb3dl ZF90aW1lKTsKKwl1c2FnZV9uZW50cmllcyA9CisJCXBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2Fn ZV9lbnRyaWVzKHVzYWdlLCAmdXNhZ2VfZW50cmllcyk7CisJcGdzdGF0X2dldF93YWl0X2V2ZW50 X3VzYWdlX292ZXJmbG93KHVzYWdlLAorCQkJCQkJCQkJCSAmb3ZlcmZsb3dlZF9jYWxscywKKwkJ CQkJCQkJCQkgJm92ZXJmbG93ZWRfdGltZSk7CisJd29ya2VyLT5vdmVyZmxvd2VkX2NhbGxzICs9 IG92ZXJmbG93ZWRfY2FsbHM7CisJSU5TVFJfVElNRV9BREQod29ya2VyLT5vdmVyZmxvd2VkX3Rp bWUsIG92ZXJmbG93ZWRfdGltZSk7CiAKLQlpZiAodXNhZ2UtPm5lbnRyaWVzIDw9IDApCisJaWYg KHVzYWdlX25lbnRyaWVzIDw9IDApCiAJCXJldHVybjsKIAogCWlmIChEc2FQb2ludGVySXNWYWxp ZCh3b3JrZXItPmVudHJpZXMpKQpAQCAtMTQwNCwyNSArMTQxNCwyNSBAQCBFeGVjUGFyYWxsZWxS ZXBvcnRXYWl0RXZlbnRVc2FnZVdvcmtlcihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29y a2VyLAogCX0KIAogCWVudHJpZXNfc2l6ZSA9IG11bF9zaXplKHNpemVvZihXYWl0RXZlbnRVc2Fn ZUVudHJ5KSwKLQkJCQkJCQkoU2l6ZSkgb2xkX25lbnRyaWVzICsgKFNpemUpIHVzYWdlLT5uZW50 cmllcyk7CisJCQkJCQkJKFNpemUpIG9sZF9uZW50cmllcyArIChTaXplKSB1c2FnZV9uZW50cmll cyk7CiAJZW50cmllc19kc2EgPSBkc2FfYWxsb2NhdGUoYXJlYSwgZW50cmllc19zaXplKTsKIAll bnRyaWVzID0gZHNhX2dldF9hZGRyZXNzKGFyZWEsIGVudHJpZXNfZHNhKTsKIAotCXdoaWxlIChp IDwgb2xkX25lbnRyaWVzICYmIGogPCB1c2FnZS0+bmVudHJpZXMpCisJd2hpbGUgKGkgPCBvbGRf bmVudHJpZXMgJiYgaiA8IHVzYWdlX25lbnRyaWVzKQogCXsKIAkJV2FpdEV2ZW50VXNhZ2VFbnRy eSAqZW50cnkgPSAmZW50cmllc1tuZXdfbmVudHJpZXNdOwogCQl1aW50MzIJCW9sZF9pbmZvID0g b2xkX2VudHJpZXNbaV0ud2FpdF9ldmVudF9pbmZvOwotCQl1aW50MzIJCW5ld19pbmZvID0gdXNh Z2UtPmVudHJpZXNbal0ud2FpdF9ldmVudF9pbmZvOworCQl1aW50MzIJCW5ld19pbmZvID0gdXNh Z2VfZW50cmllc1tqXS53YWl0X2V2ZW50X2luZm87CiAKIAkJaWYgKG9sZF9pbmZvIDwgbmV3X2lu Zm8pCiAJCQkqZW50cnkgPSBvbGRfZW50cmllc1tpKytdOwogCQllbHNlIGlmIChvbGRfaW5mbyA+ IG5ld19pbmZvKQotCQkJKmVudHJ5ID0gdXNhZ2UtPmVudHJpZXNbaisrXTsKKwkJCSplbnRyeSA9 IHVzYWdlX2VudHJpZXNbaisrXTsKIAkJZWxzZQogCQl7CiAJCQkqZW50cnkgPSBvbGRfZW50cmll c1tpKytdOwotCQkJZW50cnktPmNhbGxzICs9IHVzYWdlLT5lbnRyaWVzW2pdLmNhbGxzOwotCQkJ SU5TVFJfVElNRV9BREQoZW50cnktPnRpbWUsIHVzYWdlLT5lbnRyaWVzW2pdLnRpbWUpOworCQkJ ZW50cnktPmNhbGxzICs9IHVzYWdlX2VudHJpZXNbal0uY2FsbHM7CisJCQlJTlNUUl9USU1FX0FE RChlbnRyeS0+dGltZSwgdXNhZ2VfZW50cmllc1tqXS50aW1lKTsKIAkJCWorKzsKIAkJfQogCkBA IC0xNDMxLDggKzE0NDEsOCBAQCBFeGVjUGFyYWxsZWxSZXBvcnRXYWl0RXZlbnRVc2FnZVdvcmtl cihTaGFyZWRXYWl0RXZlbnRVc2FnZVdvcmtlciAqd29ya2VyLAogCiAJd2hpbGUgKGkgPCBvbGRf bmVudHJpZXMpCiAJCWVudHJpZXNbbmV3X25lbnRyaWVzKytdID0gb2xkX2VudHJpZXNbaSsrXTsK LQl3aGlsZSAoaiA8IHVzYWdlLT5uZW50cmllcykKLQkJZW50cmllc1tuZXdfbmVudHJpZXMrK10g PSB1c2FnZS0+ZW50cmllc1tqKytdOworCXdoaWxlIChqIDwgdXNhZ2VfbmVudHJpZXMpCisJCWVu dHJpZXNbbmV3X25lbnRyaWVzKytdID0gdXNhZ2VfZW50cmllc1tqKytdOwogCiAJaWYgKERzYVBv aW50ZXJJc1ZhbGlkKHdvcmtlci0+ZW50cmllcykpCiAJCWRzYV9mcmVlKGFyZWEsIHdvcmtlci0+ ZW50cmllcyk7CkBAIC0xNzgxLDcgKzE3OTEsNiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2Vn bWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCVNoYXJl ZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50YXRpb247CiAJU2hhcmVkSml0SW5z dHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uOwotCVdhaXRFdmVudFVzYWdlIHdhaXRF dmVudFVzYWdlOwogCVdhaXRFdmVudFVzYWdlICp3YWl0RXZlbnRVc2FnZVB0ciA9IE5VTEw7CiAJ aW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gMDsKIAl2b2lkCSAgICphcmVhX3NwYWNlOwpAQCAt MTg0MSwxMSArMTg1MCw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJaWYgKHdhaXRfZXZl bnRfdXNhZ2UgIT0gTlVMTCkKLQl7Ci0JCXdhaXRFdmVudFVzYWdlUHRyID0gJndhaXRFdmVudFVz YWdlOwotCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZSh3YWl0RXZlbnRVc2FnZVB0ciwK LQkJCQkJCQkJCSAgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7Ci0JfQorCQl3YWl0 RXZlbnRVc2FnZVB0ciA9CisJCQlwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91c2FnZShxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuLiAgSWYg d2Ugc3BlY2lmaWVkIGEgdHVwbGUgYm91bmQsIGJlIGNhcmVmdWwgbm90IHRvIGRlbWFuZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDY3OTgwY2MwYTNiLi45NzE5 ZTM4NzI5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMzYs NiArMzYsMTcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9jbGllbnQoV2Fp dEV2ZW50Q2xpZW50IHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF9pcGMo V2FpdEV2ZW50SVBDIHcpOwogc3RhdGljIGNvbnN0IGNoYXIgKnBnc3RhdF9nZXRfd2FpdF90aW1l b3V0KFdhaXRFdmVudFRpbWVvdXQgdyk7CiBzdGF0aWMgY29uc3QgY2hhciAqcGdzdGF0X2dldF93 YWl0X2lvKFdhaXRFdmVudElPIHcpOworc3RydWN0IFdhaXRFdmVudFVzYWdlCit7CisJc3RydWN0 IFdhaXRFdmVudFVzYWdlICphY3RpdmVfcGFyZW50OyAvKiBhY3RpdmUgcGxhbi1ub2RlIHN0YWNr IGxpbmsgKi8KKwlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKnF1ZXJ5X3BhcmVudDsJLyogYWN0aXZl IHF1ZXJ5LWxldmVsIHN0YWNrIGxpbmsgKi8KKwlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgKnNhdmVk X25vZGVfdXNhZ2U7CS8qIG5vZGUgc3RhY2sgYXQgcXVlcnkgc3RhcnQgKi8KKwlpbnQJCQluZW50 cmllczsKKwlpbnQJCQltYXhlbnRyaWVzOworCVdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXM7 CisJdWludDY0CQlvdmVyZmxvd2VkX2NhbGxzOworCWluc3RyX3RpbWUJb3ZlcmZsb3dlZF90aW1l OworfTsKIHN0YXRpYyB2b2lkIFdhaXRFdmVudFVzYWdlQWRkKFdhaXRFdmVudFVzYWdlICp1c2Fn ZSwgdWludDMyIHdhaXRfZXZlbnRfaW5mbywKIAkJCQkJCQkgIHVpbnQ2NCBjYWxscywgY29uc3Qg aW5zdHJfdGltZSAqZWxhcHNlZCk7CiBzdGF0aWMgdm9pZCBXYWl0RXZlbnRVc2FnZUFkZE92ZXJm bG93KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgdWludDY0IGNhbGxzLApAQCAtNDIyLDEyICs0MzMs MTIgQEAgV2FpdEV2ZW50VXNhZ2VJbml0KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgTWVtb3J5Q29u dGV4dCBtZW1jb250ZXh0KQogICogbG9jYWwgbWVtb3J5LiAgTmVzdGVkIHRvcC1sZXZlbCBjb2xs ZWN0b3JzIGFyZSBrZXB0IGluIGEgcXVlcnktbGV2ZWwgc3RhY2s7CiAgKiBhIHdhaXQgaXMgY291 bnRlZCBvbmNlIGluIGVhY2ggYWN0aXZlIGNvbGxlY3Rvci4KICAqLwotdm9pZAotcGdzdGF0X2Jl Z2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50VXNhZ2UgKnVzYWdlLCBNZW1vcnlDb250ZXh0 IG1lbWNvbnRleHQpCitXYWl0RXZlbnRVc2FnZSAqCitwZ3N0YXRfYmVnaW5fd2FpdF9ldmVudF91 c2FnZShNZW1vcnlDb250ZXh0IG1lbWNvbnRleHQpCiB7CisJV2FpdEV2ZW50VXNhZ2UgKnVzYWdl OwogCWJvb2wJCWZpcnN0OwogCi0JQXNzZXJ0KHVzYWdlICE9IE5VTEwpOwogCUFzc2VydChtZW1j b250ZXh0ICE9IE5VTEwpOwogCiAJZmlyc3QgPSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZV9kZXB0 aCA9PSAwOwpAQCAtNDQwLDcgKzQ1MSw3IEBAIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdl KFdhaXRFdmVudFVzYWdlICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogCQlJTlNU Ul9USU1FX1NFVF9aRVJPKHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX3N0YXJ0KTsKIAl9CiAKLQlX YWl0RXZlbnRVc2FnZUluaXQodXNhZ2UsIG1lbWNvbnRleHQpOworCXVzYWdlID0gcGdzdGF0X2Ny ZWF0ZV93YWl0X2V2ZW50X3VzYWdlKG1lbWNvbnRleHQpOwogCXVzYWdlLT5xdWVyeV9wYXJlbnQg PSBwZ3N0YXRfd2FpdF9ldmVudF91c2FnZTsKIAkvKgogCSAqIEEgbmVzdGVkIEVYUExBSU4gY2Fu IGVycm9yIG91dCB3aGlsZSBvbmUgb2YgaXRzIHBsYW4gbm9kZXMgaXMgYWN0aXZlLApAQCAtNDUx LDYgKzQ2Miw3IEBAIHBnc3RhdF9iZWdpbl93YWl0X2V2ZW50X3VzYWdlKFdhaXRFdmVudFVzYWdl ICp1c2FnZSwgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KQogCXBnc3RhdF93YWl0X2V2ZW50X3Vz YWdlID0gdXNhZ2U7CiAJcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfZGVwdGgrKzsKIAlwZ3N0YXRf d2FpdF9ldmVudF91c2FnZV9hY3RpdmUgPSB0cnVlOworCXJldHVybiB1c2FnZTsKIH0KIAogLyoK QEAgLTU3OSw2ICs1OTEsNDkgQEAgcGdzdGF0X2FjY3VtdWxhdGVfd2FpdF9ldmVudF91c2FnZShX YWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkgICZlbnRyaWVzW2ldLnRpbWUpOwogfQogCit2 b2lkCitwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdlX292ZXJmbG93KFdhaXRFdmVu dFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJdWludDY0IGNhbGxzLAorCQkJCQkJCQkJCQljb25z dCBpbnN0cl90aW1lICplbGFwc2VkKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlBc3Nl cnQoZWxhcHNlZCAhPSBOVUxMKTsKKworCVdhaXRFdmVudFVzYWdlQWRkT3ZlcmZsb3codXNhZ2Us IGNhbGxzLCBlbGFwc2VkKTsKK30KKworYm9vbAorcGdzdGF0X3dhaXRfZXZlbnRfdXNhZ2VfaXNf ZW1wdHkoY29uc3QgV2FpdEV2ZW50VXNhZ2UgKnVzYWdlKQoreworCUFzc2VydCh1c2FnZSAhPSBO VUxMKTsKKworCXJldHVybiB1c2FnZS0+bmVudHJpZXMgPT0gMCAmJiB1c2FnZS0+b3ZlcmZsb3dl ZF9jYWxscyA9PSAwOworfQorCitpbnQKK3Bnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRy aWVzKGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCWNvbnN0IFdhaXRFdmVu dFVzYWdlRW50cnkgKiplbnRyaWVzKQoreworCUFzc2VydCh1c2FnZSAhPSBOVUxMKTsKKwlBc3Nl cnQoZW50cmllcyAhPSBOVUxMKTsKKworCSplbnRyaWVzID0gdXNhZ2UtPmVudHJpZXM7CisJcmV0 dXJuIHVzYWdlLT5uZW50cmllczsKK30KKwordm9pZAorcGdzdGF0X2dldF93YWl0X2V2ZW50X3Vz YWdlX292ZXJmbG93KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCSB1aW50 NjQgKmNhbGxzLAorCQkJCQkJCQkJIGluc3RyX3RpbWUgKmVsYXBzZWQpCit7CisJQXNzZXJ0KHVz YWdlICE9IE5VTEwpOworCUFzc2VydChjYWxscyAhPSBOVUxMKTsKKwlBc3NlcnQoZWxhcHNlZCAh PSBOVUxMKTsKKworCSpjYWxscyA9IHVzYWdlLT5vdmVyZmxvd2VkX2NhbGxzOworCSplbGFwc2Vk ID0gdXNhZ2UtPm92ZXJmbG93ZWRfdGltZTsKK30KKwogLyoKICAqIEZpbmQgdGhlIGV4aXN0aW5n IGVudHJ5LCBvciB0aGUgaW5zZXJ0aW9uIHBvc2l0aW9uIGZvciBhIG5ldyBlbnRyeS4KICAqCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNjc0OTc3OTAzMDcuLjE5NzYzY2ZjYWU1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCkBAIC0xNSw2ICsxNSwxMiBAQAogI2luY2x1ZGUgInV0aWxzL3BhbGxv Yy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnRfdHlwZXMuaCIKIAorLyoKKyAqIEVYUExB SU4gd2FpdCBldmVudCBhY2NvdW50aW5nIHN1cHBvcnQuICBXYWl0RXZlbnRVc2FnZSBpcyBpbnRl bnRpb25hbGx5CisgKiBvcGFxdWUgb3V0c2lkZSB3YWl0X2V2ZW50LmM7IGNhbGxlcnMgc2hvdWxk IGFsbG9jYXRlLCBhY2N1bXVsYXRlLCBhbmQgcmVhZAorICogaXQgdGhyb3VnaCB0aGUgZnVuY3Rp b25zIGJlbG93LiAgV2FpdEV2ZW50VXNhZ2VFbnRyeSBpcyB0aGUgcmVwb3J0YWJsZQorICogdHVw bGUgY29waWVkIHRvIEVYUExBSU4gb3V0cHV0IGFuZCBwYXJhbGxlbC13b3JrZXIgc3RvcmFnZS4K KyAqLwogdHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2VFbnRyeQogewogCXVpbnQzMgkJd2Fp dF9ldmVudF9pbmZvOwpAQCAtMjIsMTcgKzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50 VXNhZ2VFbnRyeQogCWluc3RyX3RpbWUJdGltZTsKIH0gV2FpdEV2ZW50VXNhZ2VFbnRyeTsKIAot dHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UKLXsKLQlzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2Ug KmFjdGl2ZV9wYXJlbnQ7IC8qIGFjdGl2ZSBwbGFuLW5vZGUgc3RhY2sgbGluayAqLwotCXN0cnVj dCBXYWl0RXZlbnRVc2FnZSAqcXVlcnlfcGFyZW50OwkvKiBhY3RpdmUgcXVlcnktbGV2ZWwgc3Rh Y2sgbGluayAqLwotCXN0cnVjdCBXYWl0RXZlbnRVc2FnZSAqc2F2ZWRfbm9kZV91c2FnZTsJLyog bm9kZSBzdGFjayBhdCBxdWVyeSBzdGFydCAqLwotCWludAkJCW5lbnRyaWVzOwotCWludAkJCW1h eGVudHJpZXM7Ci0JV2FpdEV2ZW50VXNhZ2VFbnRyeSAqZW50cmllczsKLQl1aW50NjQJCW92ZXJm bG93ZWRfY2FsbHM7Ci0JaW5zdHJfdGltZQlvdmVyZmxvd2VkX3RpbWU7Ci19IFdhaXRFdmVudFVz YWdlOwordHlwZWRlZiBzdHJ1Y3QgV2FpdEV2ZW50VXNhZ2UgV2FpdEV2ZW50VXNhZ2U7CiAKIGV4 dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X3dhaXRfZXZlbnQodWludDMyIHdhaXRfZXZlbnRf aW5mbyk7CiBleHRlcm4gY29uc3QgY2hhciAqcGdzdGF0X2dldF93YWl0X2V2ZW50X3R5cGUodWlu dDMyIHdhaXRfZXZlbnRfaW5mbyk7CkBAIC00MCwxMyArMzYsMjMgQEAgc3RhdGljIGlubGluZSB2 b2lkIHBnc3RhdF9yZXBvcnRfd2FpdF9zdGFydCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCBwZ3N0YXRfcmVwb3J0X3dhaXRfZW5kKHZvaWQpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UodWludDMyICp3YWl0X2V2ZW50X2luZm8p OwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X3dhaXRfZXZlbnRfc3RvcmFnZSh2b2lkKTsKKwor LyogRVhQTEFJTiB3YWl0IGV2ZW50IGFjY291bnRpbmcuICovCiBleHRlcm4gV2FpdEV2ZW50VXNh Z2UgKnBnc3RhdF9jcmVhdGVfd2FpdF9ldmVudF91c2FnZShNZW1vcnlDb250ZXh0IG1lbWNvbnRl eHQpOwotZXh0ZXJuIHZvaWQgcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoV2FpdEV2ZW50 VXNhZ2UgKnVzYWdlLAotCQkJCQkJCQkJCSAgTWVtb3J5Q29udGV4dCBtZW1jb250ZXh0KTsKK2V4 dGVybiBXYWl0RXZlbnRVc2FnZSAqcGdzdGF0X2JlZ2luX3dhaXRfZXZlbnRfdXNhZ2UoTWVtb3J5 Q29udGV4dCBtZW1jb250ZXh0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9lbmRfd2FpdF9ldmVudF91 c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2FjY3VtdWxh dGVfd2FpdF9ldmVudF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UsCiAJCQkJCQkJCQkJCSAg IGNvbnN0IFdhaXRFdmVudFVzYWdlRW50cnkgKmVudHJpZXMsCiAJCQkJCQkJCQkJCSAgIGludCBu ZW50cmllcyk7CitleHRlcm4gdm9pZCBwZ3N0YXRfYWNjdW11bGF0ZV93YWl0X2V2ZW50X3VzYWdl X292ZXJmbG93KFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJCQkJdWludDY0IGNh bGxzLAorCQkJCQkJCQkJCQkJCQljb25zdCBpbnN0cl90aW1lICplbGFwc2VkKTsKK2V4dGVybiBi b29sIHBnc3RhdF93YWl0X2V2ZW50X3VzYWdlX2lzX2VtcHR5KGNvbnN0IFdhaXRFdmVudFVzYWdl ICp1c2FnZSk7CitleHRlcm4gaW50IHBnc3RhdF9nZXRfd2FpdF9ldmVudF91c2FnZV9lbnRyaWVz KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJCQkJICAgY29uc3QgV2FpdEV2 ZW50VXNhZ2VFbnRyeSAqKmVudHJpZXMpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2dldF93YWl0X2V2 ZW50X3VzYWdlX292ZXJmbG93KGNvbnN0IFdhaXRFdmVudFVzYWdlICp1c2FnZSwKKwkJCQkJCQkJ CQkJCSB1aW50NjQgKmNhbGxzLAorCQkJCQkJCQkJCQkJIGluc3RyX3RpbWUgKmVsYXBzZWQpOwog ZXh0ZXJuIFdhaXRFdmVudFVzYWdlICpwZ3N0YXRfZW50ZXJfd2FpdF9ldmVudF91c2FnZShXYWl0 RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc3RvcmVfd2FpdF9ldmVu dF91c2FnZShXYWl0RXZlbnRVc2FnZSAqdXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50 X3dhaXRfZXZlbnRfc3RhcnQodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7Ci0tIAoyLjUyLjAKCg== --000000000000c8721f0651c546d9 Content-Type: application/octet-stream; name="0007-Keep-EXPLAIN-option-completion-current.patch" Content-Disposition: attachment; filename="0007-Keep-EXPLAIN-option-completion-current.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mp5eaymd6 RnJvbSA3ZmI5ZWYzNWUxOGE4NjM4NzBhYzVjMTBjMzQ2ZGQ3MzlmZTcwNTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDY6NDMgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MSA3LzddIEtlZXAgRVhQTEFJTiBvcHRpb24gY29tcGxldGlvbiBjdXJyZW50CgotLS0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggYjMz NDkwZTc0MTUuLjQ1NzEyZjRhYzEyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC00NTI1LDgg KzQ1MjUsOCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJaWYgKGVu ZHNfd2l0aChwcmV2X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQkJQ09N UExFVEVfV0lUSCgiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkNPU1RTIiwgIlNFVFRJTkdTIiwgIkdF TkVSSUNfUExBTiIsCiAJCQkJCQkgICJCVUZGRVJTIiwgIlNFUklBTElaRSIsICJXQUwiLCAiV0FJ VFMiLCAiVElNSU5HIiwgIlNVTU1BUlkiLAotCQkJCQkJICAiTUVNT1JZIiwgIkZPUk1BVCIpOwot CQllbHNlIGlmIChUYWlsTWF0Y2hlcygiQU5BTFlaRXxWRVJCT1NFfENPU1RTfFNFVFRJTkdTfEdF TkVSSUNfUExBTnxCVUZGRVJTfFdBTHxXQUlUU3xUSU1JTkd8U1VNTUFSWXxNRU1PUlkiKSkKKwkJ CQkJCSAgIk1FTU9SWSIsICJJTyIsICJGT1JNQVQiKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMo IkFOQUxZWkV8VkVSQk9TRXxDT1NUU3xTRVRUSU5HU3xHRU5FUklDX1BMQU58QlVGRkVSU3xXQUx8 V0FJVFN8VElNSU5HfFNVTU1BUll8TUVNT1JZfElPIikpCiAJCQlDT01QTEVURV9XSVRIKCJPTiIs ICJPRkYiKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlNFUklBTElaRSIpKQogCQkJQ09NUExF VEVfV0lUSCgiVEVYVCIsICJOT05FIiwgIkJJTkFSWSIpOwotLSAKMi41Mi4wCgo= --000000000000c8721f0651c546d9--