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 1wOrCM-000F43-1g for pgsql-hackers@arkaria.postgresql.org; Mon, 18 May 2026 06:11:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wOrCJ-001JjW-1e for pgsql-hackers@arkaria.postgresql.org; Mon, 18 May 2026 06:11:28 +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 1wOrCJ-001JjO-01 for pgsql-hackers@lists.postgresql.org; Mon, 18 May 2026 06:11:28 +0000 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wOrCH-000000008i2-0P4z for pgsql-hackers@postgresql.org; Mon, 18 May 2026 06:11:27 +0000 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c82de129a40so558325a12.1 for ; Sun, 17 May 2026 23:11:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779084682; cv=none; d=google.com; s=arc-20240605; b=ZaV/598P45+oemaZOLM4AnHTJ7xoQUiG7i2+bo8Msztmr2h7Dz6/EPWd2EFwI4hiAB u8ZuhaViTNmLjMpsLCaja5tjQZ8lbYktRL7Ri2PrYMzoBqrbPWId30WBoOAJJ5ivE1Zo IGce78QzeZL6GqtyVrul0Onq/gI+BGuqT8HVZ5+nEGjC9XsbAyYElo91B/VTdm1wABmY TTgttGUktQgZVFDUXSFBRSXU8CAFERJ3t7iWpnjvkRbx/C6MQD26Q2rP3dEOWOIfChiE wJdtBrQ5Ie2HXnzDIXqNYl9arca3X4oxMLXVgbxw80gZSjOTXBH20bwmSwtuAElUQB8U 7t7Q== 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=T5eMFm7hD+M6TrePxBzLWgs/kYo96ktQClAY5Mbmplg=; fh=GxyMRk3vMnT5dLtCj5/1JAlmuGl0Bl4frI5UrsOkdOM=; b=UIAC4KxkT8A/UsZu7igGXRtOSraQ91WOmKJScMtvSc/YcBSMh3lOobOZFet1a6ZzbH iEsWRcKlwQGhHVc77z0JKiHo1ss1OsZUv2st4+W+9cBlOX9aZr/OBdi8k2cn1EKtCoE2 pyxlZ2Brb1inVfzaorOXmLo7AH15oUSw8b/1fmew8DB/oGSnKMo5DK5VJYAOReXH4iW8 n+/5L/db7XQGSoCJwNPiX1ALNhjNoOG6zhr4VG9t89l2qIk3/hIJcPjI7uyp/WCCY+iy TP+LeuIbt1pl7ANOWMbJrbm6AbXpoy+G0HG63cWD1hECNIfvqwIaaNKF3Bh6FGb9OGvE 6SXQ==; 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=1779084682; x=1779689482; 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=T5eMFm7hD+M6TrePxBzLWgs/kYo96ktQClAY5Mbmplg=; b=PpuxPWw7GGJ1PvXmUQ0Cu/knv3R1jCkhdcPbehRL2tUReh2zhY62DYWEwjQjgpsL89 dCC4w/fEIQgCYIJbRpWW+EyX4WBawmN0wuQgYuNgf+g7CZ/PcrFoQDiyrFITULsHtG9R VIcsUCL/1WdEwOJRvk2zpOXBubUWejYMW5Qwzd2LXN6JjYe52MJDupCR0tUPiPlnOipO VeIO/raSQ5rUeGZ9dnTGwtbkfI5me1DJemh7fhfgRpe3y6ZFX7RifJAwj2LX0/fZhxKz 89xhZucexiXNbmhz1Ze1kBqvhTL468SRYWyen3hTP/udvtye9yAi/Osp/+H0qkiLPpWD 2GLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779084682; x=1779689482; 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=T5eMFm7hD+M6TrePxBzLWgs/kYo96ktQClAY5Mbmplg=; b=itj5GYMA6px2XMmlUd8L40OVRp6HGK2Iirtq8Mhzl8DL/gEQs86jc8hrEI4fwjIcnv h39AYXJmsySw5ZSPnHYwIIgDxJL48fSdpMvSgz7+VAMsHOQ6dzP1hJ+9UYu93Dv7X3sy CbXevOhtDLugKL7Ic8cnlQrpyu6O+s4hIk9J6Trk5sN8WWm1eMGNdeCbNKEmrObegx+c S9RC/D+oAQhwESK++p9rzalXvCCZNZVZOnA2NixnSl8DbgG0nuByYMQpoQR3EXR3+HJL spmPqBgfcBgf4trq4qKxba3e8IwxNOdK8sQpryUY+J3LHhUBrnxtkvBYT1+IZpw8kE0v GDhQ== X-Gm-Message-State: AOJu0YxsyC/6+5RTFBtkdkNH563hIFPy2vbMBlocxh1Gw1L76AwoDcf4 EIVlPegI+t9QHZqWLvsJ48WRQtO7lEDMr0cEoYn08EO2FbzxTeXKme3IWbfqUjMsVfoah/DfUYg rPIuEgdjhihAQQuKQmm8a+5arlw84ZvhVRBMxb069Ew== X-Gm-Gg: Acq92OHcRRZOpNPEyDaKy72Ok7tC1JxpJ5Zc92rhGD7rM1KCLJ4v6U+D2/S971JTxi3 lt+Y0Hcuj1NJ4SpbcdGJR6nqC5lgTg1kAi2IO4B4hJnu1VZjo5dv9TXz0z32Rw+8EbgepwU/2c8 XyHcEJGQMxtWv1mmYEeRnLtg+hUtKTWJtAW/4kzeEfs3p2znYjLIBBXR/D4r6RQwrfbeqoW/mnJ lshWxJDMMbU57fWh1bnd4Z/8IawO2RWb9EYPfL2UdBEEgRaJWitqClw8UzzaO4COT0IpTU3n7/v BcKaB2bGtxGGN1ZhhlIBNXGAh104HY/yt0HnJqE= X-Received: by 2002:a05:6a20:244d:b0:3a0:b65a:5df2 with SMTP id adf61e73a8af0-3b22e7d0fd9mr15055538637.23.1779084682087; Sun, 17 May 2026 23:11:22 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: r314tive Date: Mon, 18 May 2026 11:11:08 +0500 X-Gm-Features: AVHnY4KXwKxu_y568yhiK1wJ02FIXoQ8s4VRphaHhBQ0oGuiK9cks0umtc_JmcY Message-ID: Subject: [RFC PATCH v2] Add EXPLAIN ANALYZE wait event reporting To: pgsql-hackers@postgresql.org Cc: Michael Paquier Content-Type: multipart/mixed; boundary="0000000000008085470652116e2c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008085470652116e2c Content-Type: multipart/alternative; boundary="0000000000008085460652116e2a" --0000000000008085460652116e2a Content-Type: text/plain; charset="UTF-8" This v2 keeps the same RFC feature scope as v1 and changes only regression test coverage/stability. v1 thread: https://www.postgresql.org/message-id/CALCfnuquuxtZmmzQBZ_yxaihfj7bnALXdzi9Nj=RYUW4iwY6GQ@mail.gmail.com v0 thread: https://www.postgresql.org/message-id/cover.1778280923.git.tanswis42%40gmail.com The CFBot FreeBSD run showed that the regression tests assumed a too narrow statement-level wait list. EXPLAIN WAITS can validly observe additional statement-level waits around the measured query, for example parallel-executor IPC waits or DSM allocation waits. Those are valid observed waits, not an accounting bug. Changes in v2: 1. Make the text-output test check for the required Wait Events and Statement Wait Events lines, instead of expecting the full statement-level wait list to contain only Timeout:PgSleep. 2. Make JSON tests find Timeout:PgSleep by JSONPath instead of assuming it is the first wait event array element. 3. Disable debug_parallel_query and default gather workers in the explain regression test before serial EXPLAIN checks. 4. Disable debug_parallel_query and gather workers in the bitmap runtime-key attribution test. 5. Remove the plain-regression assertion for rescanned parallel worker wait aggregation for now. Worker availability and the exact parallel plan shape are not deterministic enough for that test under the parallel regression harness. The accounting behavior is still implemented, but this specific edge should come back as a more isolated test if we can make it deterministic enough for CFBot. There are no accounting-code changes from v1. The main RFC questions are unchanged: - 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. Local verification: make -C src/test/regress check TESTS=explain All 245 tests passed. git diff --check passed. Regards, Ilmar --0000000000008085460652116e2a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
This v2 keeps the same RFC feature scope as v1 and changes= only regression
test coverage/stability.

v1 thread:
https://www.postgresql.org/message-id/= CALCfnuquuxtZmmzQBZ_yxaihfj7bnALXdzi9Nj=3DRYUW4iwY6GQ@mail.gmail.com
v0 thread:
https://www.postgresql.org/message-id/= cover.1778280923.git.tanswis42%40gmail.com

The CFBot FreeBSD run= showed that the regression tests assumed a too narrow
statement-level w= ait list.=C2=A0 EXPLAIN WAITS can validly observe additional
statement-l= evel waits around the measured query, for example parallel-executor
IPC = waits or DSM allocation waits.=C2=A0 Those are valid observed waits, not an=
accounting bug.

Changes in v2:

1. Make the text-output te= st check for the required Wait Events and Statement
=C2=A0 =C2=A0Wait Ev= ents lines, instead of expecting the full statement-level wait list
=C2= =A0 =C2=A0to contain only Timeout:PgSleep.
2. Make JSON tests find Timeo= ut:PgSleep by JSONPath instead of assuming it is
=C2=A0 =C2=A0the first = wait event array element.
3. Disable debug_parallel_query and default ga= ther workers in the explain
=C2=A0 =C2=A0regression test before serial E= XPLAIN checks.
4. Disable debug_parallel_query and gather workers in the= bitmap runtime-key
=C2=A0 =C2=A0attribution test.
5. Remove the plai= n-regression assertion for rescanned parallel worker wait
=C2=A0 =C2=A0a= ggregation for now.=C2=A0 Worker availability and the exact parallel plan s= hape
=C2=A0 =C2=A0are not deterministic enough for that test under the p= arallel regression
=C2=A0 =C2=A0harness.=C2=A0 The accounting behavior i= s still implemented, but this specific
=C2=A0 =C2=A0edge should come bac= k as a more isolated test if we can make it deterministic
=C2=A0 =C2=A0e= nough for CFBot.

There are no accounting-code changes from v1.
The main RFC questions are unchanged:

- 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 an= d overflow reporting are acceptable;
- whether the disabled/enabled hot-= path overhead is acceptable.

Local verification:

make -C src/= test/regress check TESTS=3Dexplain
All 245 tests passed.

git diff= --check
passed.

Regards,
Ilmar
--0000000000008085460652116e2a-- --0000000000008085470652116e2c 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_mpaszr0w0 RnJvbSA2ZmMwNDA0YWNiNjk3NjUwNjdjY2JmMWNhM2VlMGZkMzkyNDBmOWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MTAgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiAxLzhdIEFkZCBFWFBMQUlOIFdBSVRTIHN0YXRlbWVudCByZXBvcnRpbmcKCi0tLQogZG9jL3Ny 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== --0000000000008085470652116e2c 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_mpaszr153 RnJvbSAxZWE1MWVlNWY1NWRjY2FkN2Y3NjkyMjQ0NjQwMTcxZjRlNDJmY2JmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6NDkgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiA0LzhdIFJlZmluZSBFWFBMQUlOIFdBSVRTIGF0dHJpYnV0aW9uIHNlbWFudGljcwoKLS0tCiBk 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== --0000000000008085470652116e2c 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_mpaszr122 RnJvbSBjYjI2YWE0ODZkNDJmMjI3MjA5YzI3ZGY0YWVmNGIwN2YxM2UzMzRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MzUgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiAzLzhdIEF0dHJpYnV0ZSBFWFBMQUlOIFdBSVRTIHRvIHBsYW4gbm9kZXMKCi0tLQogc3JjL2Jh 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 --0000000000008085470652116e2c 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_mpaszr101 RnJvbSBlYjVmOWM4M2EwZjI0OGYyZGVmNjBmZjZlOTNlOTk4MTQ5MDQ3ZjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDQ6MjQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiAyLzhdIEFnZ3JlZ2F0ZSBFWFBMQUlOIFdBSVRTIGZyb20gcGFyYWxsZWwgd29ya2VycwoKLS0t 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== --0000000000008085470652116e2c 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_mpaszr184 RnJvbSA3NTM1ODg5OTkxZWM0YWY2MTA0ZTRhYzI0MWY5ZmNhN2I2MDMyNThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDU6NDQgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiA1LzhdIEhhcmRlbiBFWFBMQUlOIFdBSVRTIGFjY3VtdWxhdG9yIGhhbmRsaW5nCgotLS0KIGRv 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 --0000000000008085470652116e2c 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_mpaszr1b5 RnJvbSBlOWYxMDMwY2Q4NjRjOTNhM2UxN2Q1M2Y0ZjM0NGIzMjAyYmI1N2JiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDY6MTIgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiA2LzhdIEhpZGUgRVhQTEFJTiBXQUlUUyBhY2N1bXVsYXRvciBpbnRlcm5hbHMKCi0tLQogc3Jj 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== --0000000000008085470652116e2c 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_mpaszr1d6 RnJvbSA3ZmI5ZWYzNWUxOGE4NjM4NzBhYzVjMTBjMzQ2ZGQ3MzlmZTcwNTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBZdW51c292IDx0YW5zd2lzNDJAZ21haWwuY29tPgpE YXRlOiBTYXQsIDkgTWF5IDIwMjYgMDM6NDY6NDMgKzA1MDAKU3ViamVjdDogW1JGQyBQQVRDSCB2 MiA3LzhdIEtlZXAgRVhQTEFJTiBvcHRpb24gY29tcGxldGlvbiBjdXJyZW50CgotLS0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggYjMz NDkwZTc0MTUuLjQ1NzEyZjRhYzEyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC00NTI1LDgg KzQ1MjUsOCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJaWYgKGVu ZHNfd2l0aChwcmV2X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQogCQkJQ09N UExFVEVfV0lUSCgiQU5BTFlaRSIsICJWRVJCT1NFIiwgIkNPU1RTIiwgIlNFVFRJTkdTIiwgIkdF TkVSSUNfUExBTiIsCiAJCQkJCQkgICJCVUZGRVJTIiwgIlNFUklBTElaRSIsICJXQUwiLCAiV0FJ VFMiLCAiVElNSU5HIiwgIlNVTU1BUlkiLAotCQkJCQkJICAiTUVNT1JZIiwgIkZPUk1BVCIpOwot CQllbHNlIGlmIChUYWlsTWF0Y2hlcygiQU5BTFlaRXxWRVJCT1NFfENPU1RTfFNFVFRJTkdTfEdF TkVSSUNfUExBTnxCVUZGRVJTfFdBTHxXQUlUU3xUSU1JTkd8U1VNTUFSWXxNRU1PUlkiKSkKKwkJ CQkJCSAgIk1FTU9SWSIsICJJTyIsICJGT1JNQVQiKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMo IkFOQUxZWkV8VkVSQk9TRXxDT1NUU3xTRVRUSU5HU3xHRU5FUklDX1BMQU58QlVGRkVSU3xXQUx8 V0FJVFN8VElNSU5HfFNVTU1BUll8TUVNT1JZfElPIikpCiAJCQlDT01QTEVURV9XSVRIKCJPTiIs ICJPRkYiKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlNFUklBTElaRSIpKQogCQkJQ09NUExF VEVfV0lUSCgiVEVYVCIsICJOT05FIiwgIkJJTkFSWSIpOwotLSAKMi41Mi4wCgo= --0000000000008085470652116e2c Content-Type: application/octet-stream; name="0008-Stabilize-EXPLAIN-WAITS-regression-tests.patch" Content-Disposition: attachment; filename="0008-Stabilize-EXPLAIN-WAITS-regression-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpaszr1f7 RnJvbSA2OTdjZmFiYWY5ZTdmYTBiMDZjYWZlOThjZjY1ZGMzYTljMGNiMTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJbG1hciBJdW51c292IDxpbG1hci5pdW51c292QGFsdGVuYXIu Y29tPgpEYXRlOiBNb24sIDE4IE1heSAyMDI2IDEwOjU2OjU0ICswNTAwClN1YmplY3Q6IFtSRkMg UEFUQ0ggdjIgOC84XSBTdGFiaWxpemUgRVhQTEFJTiBXQUlUUyByZWdyZXNzaW9uIHRlc3RzCgot LS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgfCAxMTkgKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAg fCAgOTAgKysrKysrKysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25z KCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQK aW5kZXggMjc1MjkyZDYxNzIuLjZiMDY4M2FkODMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv ZXhwbGFpbi5vdXQKQEAgLTY4LDYgKzY4LDEwIEBAIHNldCBqaXQgPSBvZmY7CiAtLSBTaW1pbGFy bHksIGRpc2FibGUgdHJhY2tfaW9fdGltaW5nLCB0byBhdm9pZCBvdXRwdXQgZGlmZmVyZW5jZXMg d2hlbgogLS0gZW5hYmxlZC4KIHNldCB0cmFja19pb190aW1pbmcgPSBvZmY7CistLSBLZWVwIHRl c3RzIHRoYXQgYXNzZXJ0IGV4YWN0IEVYUExBSU4gb3V0cHV0IGRldGVybWluaXN0aWMgZXZlbiB3 aGVuIHRoZQorLS0gc3Vycm91bmRpbmcgdGVzdCBlbnZpcm9ubWVudCBlbmFibGVzIHBhcmFsbGVs LXF1ZXJ5IGRlYnVnZ2luZy4KK3NldCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsKK3NldCBt YXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKIC0tIFNpbXBsZSBjYXNlcwogZXhw bGFpbiAoY29zdHMgb2ZmKSBzZWxlY3QgMSBhcyBhLCAyIGFzIGIgaGF2aW5nIGZhbHNlOwogICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAKQEAgLTExNSwyNCArMTE5LDQzIEBAIHNlbGVjdCBleHBs YWluX2ZpbHRlcignZXhwbGFpbiAoYnVmZmVycywgZm9ybWF0IHRleHQpIHNlbGVjdCAqIGZyb20g aW50OF90YmwgaTgnCiAoMSByb3cpCiAKIC0tIFdBSVRTIG9wdGlvbgotc2VsZWN0IGV4cGxhaW5f ZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwg dGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpOwotICAgICAg ICAgICAgIGV4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gUmVzdWx0IChhY3R1YWwgcm93cz1OLk4gbG9vcHM9TikK LSAgIFdhaXQgRXZlbnRzOgotICAgICBUaW1lb3V0OlBnU2xlZXAgY2FsbHM9TiB0aW1lPU4uTiBt cwotIFN0YXRlbWVudCBXYWl0IEV2ZW50czoKLSAgIFRpbWVvdXQ6UGdTbGVlcCBjYWxscz1OIHRp bWU9Ti5OIG1zCi0oNSByb3dzKQorc2VsZWN0IHRydWUgYXMgIndhaXRzIHRleHQgb3V0cHV0IG9r IgorICBmcm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMg b2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVl cCgwLjAxKScpIGxuCisgIHdoZXJlIGxuID0gJyAgV2FpdCBFdmVudHM6JworICB1bmlvbiBhbGwK K3NlbGVjdCB0cnVlCisgIGZyb20gZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2Vs ZWN0IHBnX3NsZWVwKDAuMDEpJykgbG4KKyAgd2hlcmUgbG4gPSAnU3RhdGVtZW50IFdhaXQgRXZl bnRzOicKKyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1ZQorICBmcm9tIGV4cGxhaW5fZmlsdGVyKCdl eHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9m ZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpIGxuCisgIHdoZXJlIGxuIH4g J14gICAgVGltZW91dDpQZ1NsZWVwIGNhbGxzPU4gdGltZT1OLk4gbXMkJworICB1bmlvbiBhbGwK K3NlbGVjdCB0cnVlCisgIGZyb20gZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFuYWx5emUsIHdh aXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZikgc2Vs ZWN0IHBnX3NsZWVwKDAuMDEpJykgbG4KKyAgd2hlcmUgbG4gfiAnXiAgVGltZW91dDpQZ1NsZWVw IGNhbGxzPU4gdGltZT1OLk4gbXMkJzsKKyB3YWl0cyB0ZXh0IG91dHB1dCBvayAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisgdAorIHQKKyB0CisoNCByb3dzKQogCi1zZWxlY3QgZXhwbGFp bl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3Vt bWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBn X3NsZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50cywwfSc7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhw bGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwg c3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0 IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50c30nLAorICAnJFsq XSA/IChALiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGpzb25iX3BhdGhfcXVlcnlfZmlyc3QgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB7IlRpbWUiOiAwLjAsICJDYWxs cyI6IDAsICJXYWl0IEV2ZW50IjogIlBnU2xlZXAiLCAiV2FpdCBFdmVudCBUeXBlIjogIlRpbWVv dXQifQogKDEgcm93KQogCi1zZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAo YW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZl cnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJykgIz4gJ3swLFBsYW4s V2FpdCBFdmVudHMsMH0nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9j b2x1bW4/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorc2VsZWN0IGpzb25i X3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFu YWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFufScs CisgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScK Kyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldh aXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKQEAgLTE0NSwxNCArMTY4LDIwIEBA IGJlZ2luCiAgIHBlcmZvcm0gZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6 ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2Zm LCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3NsZWVwKDAuMDEpJyk7CiBlbmQ7CiAkJDsKLXNlbGVj dCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMg b2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBqc29uKSBz ZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3swLFN0YXRlbWVudCBX YWl0IEV2ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2Nv bHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNvbmJf cGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5h bHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMg b2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScp ICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBFdmVudHN9JywKKyAgJyRbKl0gPyAoQC4iV2FpdCBFdmVu dCIgPT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29u Yl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVu dCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAot c2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBj b3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpz b24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsUGxhbixX YWl0IEV2ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2Nv bHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxlY3QganNvbmJf cGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5h bHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMg b2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5fd2FpdHMoKScp ICM+ICd7MCxQbGFufScsCisgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIg PT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uYl9w YXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6 ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKQEAgLTE3 Niw4ICsyMDUsMTEgQEAgYmVnaW4KICAgcGVyZm9ybSBwZ19zbGVlcCgwLjAxKTsKIGVuZDsKICQk Owotc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRz LCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0 IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzX2Vycm9yKCknKSAjPiAn ezAsUGxhbixXYWl0IEV2ZW50cywwfSc7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgP2NvbHVtbj8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitzZWxl Y3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9maWx0ZXJfdG9fanNvbignZXhw bGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYs IGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxhaW5f d2FpdHNfZXJyb3IoKScpICM+ICd7MCxQbGFufScsCisgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAo QC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScKKyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBqc29uYl9wYXRoX3F1ZXJ5X2ZpcnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAw LCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwgIldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0K ICgxIHJvdykKQEAgLTIxMCw1MyArMjQyLDYgQEAgc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmly c3QoCiAgeyJUaW1lIjogMC4wLCAiQ2FsbHMiOiAwLCAiV2FpdCBFdmVudCI6ICJQZ1NsZWVwIiwg IldhaXQgRXZlbnQgVHlwZSI6ICJUaW1lb3V0In0KICgxIHJvdykKIAotcm9sbGJhY2s7Ci1iZWdp bjsKLS0tIFRoaXMgdGVzdCBkZWxpYmVyYXRlbHkgY3JlYXRlcyBhIHJlc2Nhbm5lZCBwYXJhbGxl bC1hd2FyZSBJbmRleCBTY2FuLgotLS0gVGhlIHBsYW5uZXIgR1VDcyBhbmQgdGVuazEgcGFyYWxs ZWxfd29ya2VycyByZWxvcHRpb24gYXJlIHRlc3Qtb25seQotLS0gc2NhZmZvbGRpbmcgdG8gbWFr ZSB0aGUgcGFyYWxsZWwgcmVzY2FubmVkIG5vZGUgc2hhcGUgZGV0ZXJtaW5pc3RpYy4gIFRoZQot LS0gU1RBQkxFIFBBUkFMTEVMIFNBRkUgd3JhcHBlciBhcm91bmQgcGdfc2xlZXAoKSBjcmVhdGVz IGEgcnVudGltZSBrZXkgd2FpdAotLS0gdW5kZXIgdGhlIHBhcmFsbGVsLWF3YXJlIEluZGV4IFNj YW4uICBUaGUgaW52YXJpYW50IGNoZWNrZWQgYmVsb3cgaXMgdGhhdAotLS0gUGdTbGVlcCBjYWxs cyBhY2N1bXVsYXRlZCBmb3IgdGhhdCBub2RlIGNvdmVyIGFsbCByZXBvcnRlZCBzY2FuIGxvb3Bz OyB0aGlzCi0tLSBmYWlscyBpZiBwZXItbm9kZSB3b3JrZXIgd2FpdCB1c2FnZSBpcyByZXBsYWNl ZCBvbiByZWxhdW5jaCBpbnN0ZWFkIG9mCi0tLSBtZXJnZWQgYWNyb3NzIHdvcmtlciByZXBvcnRz LgotY3JlYXRlIGZ1bmN0aW9uIHBnX3RlbXAuZXhwbGFpbl93YWl0c19wYXJhbGxlbF9zbGVlcF9p bnQoaW50KSByZXR1cm5zIGludAotICBsYW5ndWFnZSBwbHBnc3FsIHN0YWJsZSBwYXJhbGxlbCBz YWZlIGFzICQkYmVnaW4gcGVyZm9ybSBwZ19zbGVlcCgwLjAwMSk7IHJldHVybiAkMTsgZW5kJCQ7 Ci1hbHRlciB0YWJsZSB0ZW5rMSBzZXQgKHBhcmFsbGVsX3dvcmtlcnMgPSA0KTsKLXNldCBsb2Nh bCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKLXNldCBsb2NhbCBwYXJhbGxlbF90dXBsZV9jb3N0 ID0gMDsKLXNldCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gNDsKLXNl dCBsb2NhbCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlvbiA9IG9mZjsKLXNldCBsb2NhbCBt aW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0gMDsKLXNldCBsb2NhbCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKLXNldCBsb2NhbCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKLXNldCBsb2NhbCBl bmFibGVfbWF0ZXJpYWwgPSBvZmY7Ci1zZXQgbG9jYWwgcmFuZG9tX3BhZ2VfY29zdCA9IDI7Ci13 aXRoIHBsYW5fanNvbiBhcyAoCi0gIHNlbGVjdCBleHBsYWluX3RvX2pzb24oJ2V4cGxhaW4gKGFu YWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJz IG9mZiwgZm9ybWF0IGpzb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ICogZnJv bQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdCBjb3VudCh1bmlxdWUxKSBmcm9t IHRlbmsxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgaHVuZHJlZCA+IHBnX3Rl bXAuZXhwbGFpbl93YWl0c19wYXJhbGxlbF9zbGVlcF9pbnQoMTApKSBzcwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmlnaHQgam9pbiAodmFsdWVzICgxKSwoMiksKDMpKSB2KHgpIG9uIHRy dWUnKSAjPiAnezAsUGxhbn0nIGFzIHBsYW4KLSksCi1wYXJhbGxlbF9zY2FuIGFzICgKLSAgc2Vs ZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QocGxhbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJyQuKiogPyAoQC4iTm9kZSBUeXBlIiA9PSAiSW5kZXggU2NhbiIgJiYgQC4iUGFy YWxsZWwgQXdhcmUiID09IHRydWUpJykgYXMgbm9kZQotICBmcm9tIHBsYW5fanNvbgotKSwKLXBn c2xlZXBfd2FpdCBhcyAoCi0gIHNlbGVjdCBub2RlLAotICAgICAgICAganNvbmJfcGF0aF9xdWVy eV9maXJzdChub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJC4iV2FpdCBF dmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknKSBhcyB3YWl0Ci0gIGZy b20gcGFyYWxsZWxfc2NhbgotKQotc2VsZWN0ICh3YWl0LT4+J0NhbGxzJyk6Om51bWVyaWMgPj0g KG5vZGUtPj4nQWN0dWFsIExvb3BzJyk6Om51bWVyaWMgYXMgInBhcmFsbGVsIHJlc2NhbiB3YWl0 cyBhY2N1bXVsYXRlZCIKLWZyb20gcGdzbGVlcF93YWl0OwotIHBhcmFsbGVsIHJlc2NhbiB3YWl0 cyBhY2N1bXVsYXRlZCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gdAot KDEgcm93KQotCiByb2xsYmFjazsKIGJlZ2luOwogLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBj cmVhdGVzIGEgQml0bWFwIEluZGV4IFNjYW4gcnVudGltZS1rZXkgd2FpdC4KQEAgLTI3NCw2ICsy NTksOCBAQCBjcmVhdGUgdGVtcCB0YWJsZSBleHBsYWluX3dhaXRzX2JpdG1hcCAoYSBpbnQpOwog aW5zZXJ0IGludG8gZXhwbGFpbl93YWl0c19iaXRtYXAgc2VsZWN0IGcgZnJvbSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTApIGc7CiBjcmVhdGUgaW5kZXggZXhwbGFpbl93YWl0c19iaXRtYXBfYV9pZHgg b24gZXhwbGFpbl93YWl0c19iaXRtYXAoYSk7CiBhbmFseXplIGV4cGxhaW5fd2FpdHNfYml0bWFw Oworc2V0IGxvY2FsIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOworc2V0IGxvY2FsIG1heF9w YXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOwogc2V0IGxvY2FsIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOwogc2V0IGxvY2FsIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CiBzZWxlY3QganNvbmJf cGF0aF9xdWVyeV9maXJzdCgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxh aW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFpbi5zcWwKaW5kZXggOWY1MGVmMTg5 YjAuLmMzN2ZjMDljNGRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWlu LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbApAQCAtNzUsNiArNzUs MTEgQEAgc2V0IGppdCA9IG9mZjsKIC0tIGVuYWJsZWQuCiBzZXQgdHJhY2tfaW9fdGltaW5nID0g b2ZmOwogCistLSBLZWVwIHRlc3RzIHRoYXQgYXNzZXJ0IGV4YWN0IEVYUExBSU4gb3V0cHV0IGRl dGVybWluaXN0aWMgZXZlbiB3aGVuIHRoZQorLS0gc3Vycm91bmRpbmcgdGVzdCBlbnZpcm9ubWVu dCBlbmFibGVzIHBhcmFsbGVsLXF1ZXJ5IGRlYnVnZ2luZy4KK3NldCBkZWJ1Z19wYXJhbGxlbF9x dWVyeSA9IG9mZjsKK3NldCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKwog LS0gU2ltcGxlIGNhc2VzCiAKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0IDEgYXMgYSwgMiBh cyBiIGhhdmluZyBmYWxzZTsKQEAgLTg1LDkgKzkwLDI5IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRl cignZXhwbGFpbiAoYW5hbHl6ZSwgYnVmZmVycywgZm9ybWF0IHRleHQpIHNlbGVjdCAqIGZyb20g aW50CiBzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGJ1ZmZlcnMsIGZvcm1hdCB0ZXh0 KSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CiAKIC0tIFdBSVRTIG9wdGlvbgotc2VsZWN0 IGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1t YXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScp Owotc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRz LCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0 IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxTdGF0ZW1lbnQgV2FpdCBFdmVu dHMsMH0nOwotc2VsZWN0IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUs IHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwg Zm9ybWF0IGpzb24pIHNlbGVjdCBwZ19zbGVlcCgwLjAxKScpICM+ICd7MCxQbGFuLFdhaXQgRXZl bnRzLDB9JzsKK3NlbGVjdCB0cnVlIGFzICJ3YWl0cyB0ZXh0IG91dHB1dCBvayIKKyAgZnJvbSBl eHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSBs bgorICB3aGVyZSBsbiA9ICcgIFdhaXQgRXZlbnRzOicKKyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1 ZQorICBmcm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMg b2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVl cCgwLjAxKScpIGxuCisgIHdoZXJlIGxuID0gJ1N0YXRlbWVudCBXYWl0IEV2ZW50czonCisgIHVu aW9uIGFsbAorc2VsZWN0IHRydWUKKyAgZnJvbSBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5h bHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMg b2ZmKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSBsbgorICB3aGVyZSBsbiB+ICdeICAgIFRpbWVv dXQ6UGdTbGVlcCBjYWxscz1OIHRpbWU9Ti5OIG1zJCcKKyAgdW5pb24gYWxsCitzZWxlY3QgdHJ1 ZQorICBmcm9tIGV4cGxhaW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLCB3YWl0cywgY29zdHMg b2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYpIHNlbGVjdCBwZ19zbGVl cCgwLjAxKScpIGxuCisgIHdoZXJlIGxuIH4gJ14gIFRpbWVvdXQ6UGdTbGVlcCBjYWxscz1OIHRp bWU9Ti5OIG1zJCc7CitzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKKyAgZXhwbGFpbl9m aWx0ZXJfdG9fanNvbignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFy eSBvZmYsIHRpbWluZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3Ns ZWVwKDAuMDEpJykgIz4gJ3swLFN0YXRlbWVudCBXYWl0IEV2ZW50c30nLAorICAnJFsqXSA/IChA LiJXYWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKK3NlbGVjdCBqc29uYl9wYXRoX3F1ZXJ5 X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0 cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1h dCBqc29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKSAjPiAnezAsUGxhbn0nLAorICAnJC4iV2Fp dCBFdmVudHMiWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwogYmVnaW47 CiBjcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpIHJldHVybnMg dm9pZAogICBsYW5ndWFnZSBwbHBnc3FsIGFzCkBAIC05Niw4ICsxMjEsMTQgQEAgYmVnaW4KICAg cGVyZm9ybSBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3YWl0cywg Y29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZvcm1hdCBq c29uKSBzZWxlY3QgcGdfc2xlZXAoMC4wMSknKTsKIGVuZDsKICQkOwotc2VsZWN0IGV4cGxhaW5f ZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1h cnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190 ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsU3RhdGVtZW50IFdhaXQgRXZlbnRz LDB9JzsKLXNlbGVjdCBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWluIChhbmFseXplLCB3 YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVmZmVycyBvZmYsIGZv cm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0cygpJykgIz4gJ3sw LFBsYW4sV2FpdCBFdmVudHMsMH0nOworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisg IGV4cGxhaW5fZmlsdGVyX3RvX2pzb24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBv ZmYsIHN1bW1hcnkgb2ZmLCB0aW1pbmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNl bGVjdCBwZ190ZW1wLm5lc3RlZF9leHBsYWluX3dhaXRzKCknKSAjPiAnezAsU3RhdGVtZW50IFdh aXQgRXZlbnRzfScsCisgICckWypdID8gKEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCisp Oworc2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCisgIGV4cGxhaW5fZmlsdGVyX3RvX2pz b24oJ2V4cGxhaW4gKGFuYWx5emUsIHdhaXRzLCBjb3N0cyBvZmYsIHN1bW1hcnkgb2ZmLCB0aW1p bmcgb2ZmLCBidWZmZXJzIG9mZiwgZm9ybWF0IGpzb24pIHNlbGVjdCBwZ190ZW1wLm5lc3RlZF9l eHBsYWluX3dhaXRzKCknKSAjPiAnezAsUGxhbn0nLAorICAnJC4iV2FpdCBFdmVudHMiWypdID8g KEAuIldhaXQgRXZlbnQiID09ICJQZ1NsZWVwIiknCispOwogcm9sbGJhY2s7CiBiZWdpbjsKIC0t IElmIGEgbmVzdGVkIEVYUExBSU4gZXJyb3JzIHdoaWxlIG9uZSBvZiBpdHMgcGxhbiBub2RlcyBp cyBhY3RpdmUsIGVuZGluZwpAQCAtMTE3LDcgKzE0OCwxMCBAQCBiZWdpbgogICBwZXJmb3JtIHBn X3NsZWVwKDAuMDEpOwogZW5kOwogJCQ7Ci1zZWxlY3QgZXhwbGFpbl9maWx0ZXJfdG9fanNvbign ZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWluZyBv ZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikgc2VsZWN0IHBnX3RlbXAubmVzdGVkX2V4cGxh aW5fd2FpdHNfZXJyb3IoKScpICM+ICd7MCxQbGFuLFdhaXQgRXZlbnRzLDB9JzsKK3NlbGVjdCBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KAorICBleHBsYWluX2ZpbHRlcl90b19qc29uKCdleHBsYWlu IChhbmFseXplLCB3YWl0cywgY29zdHMgb2ZmLCBzdW1tYXJ5IG9mZiwgdGltaW5nIG9mZiwgYnVm ZmVycyBvZmYsIGZvcm1hdCBqc29uKSBzZWxlY3QgcGdfdGVtcC5uZXN0ZWRfZXhwbGFpbl93YWl0 c19lcnJvcigpJykgIz4gJ3swLFBsYW59JywKKyAgJyQuIldhaXQgRXZlbnRzIlsqXSA/IChALiJX YWl0IEV2ZW50IiA9PSAiUGdTbGVlcCIpJworKTsKIHJvbGxiYWNrOwogYmVnaW47CiBjcmVhdGUg ZnVuY3Rpb24gcGdfdGVtcC5wYXJhbGxlbF9wZ19zbGVlcChmbG9hdDgpIHJldHVybnMgdm9pZApA QCAtMTM4LDQ4ICsxNzIsNiBAQCBzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdCgKICk7CiBy b2xsYmFjazsKIGJlZ2luOwotLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBjcmVhdGVzIGEgcmVz Y2FubmVkIHBhcmFsbGVsLWF3YXJlIEluZGV4IFNjYW4uCi0tLSBUaGUgcGxhbm5lciBHVUNzIGFu ZCB0ZW5rMSBwYXJhbGxlbF93b3JrZXJzIHJlbG9wdGlvbiBhcmUgdGVzdC1vbmx5Ci0tLSBzY2Fm Zm9sZGluZyB0byBtYWtlIHRoZSBwYXJhbGxlbCByZXNjYW5uZWQgbm9kZSBzaGFwZSBkZXRlcm1p bmlzdGljLiAgVGhlCi0tLSBTVEFCTEUgUEFSQUxMRUwgU0FGRSB3cmFwcGVyIGFyb3VuZCBwZ19z bGVlcCgpIGNyZWF0ZXMgYSBydW50aW1lIGtleSB3YWl0Ci0tLSB1bmRlciB0aGUgcGFyYWxsZWwt YXdhcmUgSW5kZXggU2Nhbi4gIFRoZSBpbnZhcmlhbnQgY2hlY2tlZCBiZWxvdyBpcyB0aGF0Ci0t LSBQZ1NsZWVwIGNhbGxzIGFjY3VtdWxhdGVkIGZvciB0aGF0IG5vZGUgY292ZXIgYWxsIHJlcG9y dGVkIHNjYW4gbG9vcHM7IHRoaXMKLS0tIGZhaWxzIGlmIHBlci1ub2RlIHdvcmtlciB3YWl0IHVz YWdlIGlzIHJlcGxhY2VkIG9uIHJlbGF1bmNoIGluc3RlYWQgb2YKLS0tIG1lcmdlZCBhY3Jvc3Mg d29ya2VyIHJlcG9ydHMuCi1jcmVhdGUgZnVuY3Rpb24gcGdfdGVtcC5leHBsYWluX3dhaXRzX3Bh cmFsbGVsX3NsZWVwX2ludChpbnQpIHJldHVybnMgaW50Ci0gIGxhbmd1YWdlIHBscGdzcWwgc3Rh YmxlIHBhcmFsbGVsIHNhZmUgYXMgJCRiZWdpbiBwZXJmb3JtIHBnX3NsZWVwKDAuMDAxKTsgcmV0 dXJuICQxOyBlbmQkJDsKLWFsdGVyIHRhYmxlIHRlbmsxIHNldCAocGFyYWxsZWxfd29ya2VycyA9 IDQpOwotc2V0IGxvY2FsIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOwotc2V0IGxvY2FsIHBhcmFs bGVsX3R1cGxlX2Nvc3QgPSAwOwotc2V0IGxvY2FsIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9n YXRoZXIgPSA0Owotc2V0IGxvY2FsIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2Zm Owotc2V0IGxvY2FsIG1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwOwotc2V0IGxvY2Fs IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwotc2V0IGxvY2FsIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm Owotc2V0IGxvY2FsIGVuYWJsZV9tYXRlcmlhbCA9IG9mZjsKLXNldCBsb2NhbCByYW5kb21fcGFn ZV9jb3N0ID0gMjsKLXdpdGggcGxhbl9qc29uIGFzICgKLSAgc2VsZWN0IGV4cGxhaW5fdG9fanNv bignZXhwbGFpbiAoYW5hbHl6ZSwgd2FpdHMsIGNvc3RzIG9mZiwgc3VtbWFyeSBvZmYsIHRpbWlu ZyBvZmYsIGJ1ZmZlcnMgb2ZmLCBmb3JtYXQganNvbikKLSAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxlY3QgKiBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0IGNvdW50 KHVuaXF1ZTEpIGZyb20gdGVuazEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBo dW5kcmVkID4gcGdfdGVtcC5leHBsYWluX3dhaXRzX3BhcmFsbGVsX3NsZWVwX2ludCgxMCkpIHNz Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCBqb2luICh2YWx1ZXMgKDEpLCgyKSwo MykpIHYoeCkgb24gdHJ1ZScpICM+ICd7MCxQbGFufScgYXMgcGxhbgotKSwKLXBhcmFsbGVsX3Nj YW4gYXMgKAotICBzZWxlY3QganNvbmJfcGF0aF9xdWVyeV9maXJzdChwbGFuLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnJC4qKiA/IChALiJOb2RlIFR5cGUiID09ICJJbmRleCBT Y2FuIiAmJiBALiJQYXJhbGxlbCBBd2FyZSIgPT0gdHJ1ZSknKSBhcyBub2RlCi0gIGZyb20gcGxh bl9qc29uCi0pLAotcGdzbGVlcF93YWl0IGFzICgKLSAgc2VsZWN0IG5vZGUsCi0gICAgICAgICBq c29uYl9wYXRoX3F1ZXJ5X2ZpcnN0KG5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICckLiJXYWl0IEV2ZW50cyJbKl0gPyAoQC4iV2FpdCBFdmVudCIgPT0gIlBnU2xlZXAiKScp IGFzIHdhaXQKLSAgZnJvbSBwYXJhbGxlbF9zY2FuCi0pCi1zZWxlY3QgKHdhaXQtPj4nQ2FsbHMn KTo6bnVtZXJpYyA+PSAobm9kZS0+PidBY3R1YWwgTG9vcHMnKTo6bnVtZXJpYyBhcyAicGFyYWxs ZWwgcmVzY2FuIHdhaXRzIGFjY3VtdWxhdGVkIgotZnJvbSBwZ3NsZWVwX3dhaXQ7Ci1yb2xsYmFj azsKLWJlZ2luOwogLS0gVGhpcyB0ZXN0IGRlbGliZXJhdGVseSBjcmVhdGVzIGEgQml0bWFwIElu ZGV4IFNjYW4gcnVudGltZS1rZXkgd2FpdC4KIC0tIFRoZSBTVEFCTEUgUEwvcGdTUUwgd3JhcHBl ciBpcyB0ZXN0IHNjYWZmb2xkaW5nOiBTVEFCTEUgbGV0cyB0aGUKIC0tIGV4cHJlc3Npb24gYmUg dXNlZCBhcyBhbiBpbmRleCBydW50aW1lIGtleSwgd2hpbGUgUEwvcGdTUUwgcHJldmVudHMgU1FM CkBAIC0xOTUsNiArMTg3LDggQEAgY3JlYXRlIHRlbXAgdGFibGUgZXhwbGFpbl93YWl0c19iaXRt YXAgKGEgaW50KTsKIGluc2VydCBpbnRvIGV4cGxhaW5fd2FpdHNfYml0bWFwIHNlbGVjdCBnIGZy b20gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnOwogY3JlYXRlIGluZGV4IGV4cGxhaW5fd2FpdHNf Yml0bWFwX2FfaWR4IG9uIGV4cGxhaW5fd2FpdHNfYml0bWFwKGEpOwogYW5hbHl6ZSBleHBsYWlu X3dhaXRzX2JpdG1hcDsKK3NldCBsb2NhbCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9mZjsKK3Nl dCBsb2NhbCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKIHNldCBsb2NhbCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKIHNldCBsb2NhbCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOwog c2VsZWN0IGpzb25iX3BhdGhfcXVlcnlfZmlyc3QoCi0tIAoyLjUyLjAKCg== --0000000000008085470652116e2c--