Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoaQX-006L3X-TU for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Aug 2025 04:27:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uoaQX-003Nsl-2S for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Aug 2025 04:27:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uoaQW-003Nsd-GJ for pgsql-hackers@lists.postgresql.org; Wed, 20 Aug 2025 04:27:57 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uoaQU-000mNb-1M for pgsql-hackers@postgresql.org; Wed, 20 Aug 2025 04:27:56 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-afcb7a3a085so922060766b.2 for ; Tue, 19 Aug 2025 21:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755664073; x=1756268873; 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=dJeTG82WYANjbsNm+B7fZARA1KfnkvHaw9fx7xHts6Q=; b=jQBciHaFjic0eYEVe1MdRSZtZunVpbMD4Z7vRZ/ELW+ucm2wqdC4a0uoC1BObjHnK4 XPAwWvz06iWe5EfFqvDdw7bGAji65/0Jtvi8NVPLE43MPwP9SN8aqDL1KzarYPOnj1v6 2bG8OjDKC8RNcqXzXYQ7kyCi+Xnhxc3c4Jzb27XX5/7ueQR9f9EiWKwzrmmWgc/AVRrU IdtxEUYIpFOtyL6rCaDW9kpXKqBf/3cCMAOL5Ap7+eOkqVGChcaz4SH43J9L3KK/S9TV KG0UAvJ8kSl8tbuNaaC7GCmt+/JS493vR6pxrSapxK05t2Ra9gHIqsit8E5BY/ebeibY 8mlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755664073; x=1756268873; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=dJeTG82WYANjbsNm+B7fZARA1KfnkvHaw9fx7xHts6Q=; b=Q1HY2CuZeQj2R+xNHY1NndX/S7kJR9DIp3NaEtCvqJsm8Q2bGM4UFie1F2faj5SJb6 2wwctvpyN+4f7zoM0Sw6KCbjsqNxEHy8BsZ1ZH5xfTFslYMvwdSHRGc9hD8j3kn/WcGa v7jofkZMX+bvmPNiGsSppe5gLW3imzi0BZPRBLH3lpN8LuppgAmqC6l8Ss4wEAnvDYbJ F7FFrliFwis9p8zZz9QuQUR8Dlp7jF0AJGgJKs3wrSmjhKYWY1WRkIN4ryPoduBZZD6Z 5EA6z3JmDflnVkCiBCuMKrbEXvc8TsSgQg+yKiGjaZq37FLDzn6GL9chidecZQE9v6x5 nCSA== X-Forwarded-Encrypted: i=1; AJvYcCWiC5/9OsMOWWwsKF1wWi0PvX/8xhZCB1efOeqK2dA/MRDB7KjjIayZJUROu+U2AzoIpy8UtmPDibJEbK5u@postgresql.org X-Gm-Message-State: AOJu0YyS7W9q1K7zHDohMHGGitMZ6X+DEGi+HNS1V2+ElBY1v/LsoST9 NVb3L86afz3xfrpggjsxKeULY+qksu3nM/lEDfCZx6yL2tViIr6MQqt+Xv09pDgSucbzC3gMaz6 Lnq4zqGlvA7e7kd6QrZ91iEIg0/XSTjw= X-Gm-Gg: ASbGncu+fPRx8tA4ffRIZeaZBO7ptpFFAIWevZE4vGCHj+Zn5zB1UKB1M6RfAfLjhml Z0n2owBWo7o6jgJeXVIT3XBrqjG/20kOZq94P4IGpZpTvkyrJwWjDJ8lOQktyhiKl6EMyiZ35Vh bJnzoiNzXcAN/bqJbDZWGeGOGWwakzGrFn/CuGGpzfSdv5QdMM4DkRs7DWufVhqNXCOr76sRdXP bk7FS4= X-Google-Smtp-Source: AGHT+IEB67Yd8oJU0TQNUUbCT1RbZp1EAn7sz30WdzbDAHqxYDtsLHiiUn4wjnG3YCVvkCxz0gdnJ/MRQCy4BXhfUP4= X-Received: by 2002:a17:907:7ba4:b0:af9:3ad2:6930 with SMTP id a640c23a62f3a-afdf00a90damr117254266b.24.1755664073319; Tue, 19 Aug 2025 21:27:53 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Naga Appani Date: Tue, 19 Aug 2025 23:27:41 -0500 X-Gm-Features: Ac12FXyAyrZXyE2yB066yPawN7ywtZTYPHFy9rNTMzMScTPlws0Y4Rs-YNBPehs Message-ID: Subject: Re: [Proposal] Expose internal MultiXact member count function for efficient monitoring To: Michael Paquier Cc: Ashutosh Bapat , Kirill Reshke , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000006fa1b2063cc4654d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006fa1b2063cc4654d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Aug 19, 2025 at 1:32=E2=80=AFAM Michael Paquier wrote: > FWIW, I think that you should be a bit more careful before sending > updated patch sets. You have missed an extra point I have raised > upthread about the refactoring pieces: the switch from > ReadMultiXactCounts() to GetMultiXactInfo() can be done in a patch of > its own. > > So I have extracted this part from your latest patch, and applied it > independently of the SQL function business. Now we are in an > advantageous position on HEAD: even if we do not conclude about the > SQL function to show the mxact numbers and offsets, we have the > function that gives an access to the data you are looking for. In > short, it is now possible to provide an equivalent of the feature you > want outside of core. Not saying that the patch cannot be useful, but > such refactoring pieces open more possibilities, and offer a cleaner > commit history with less churn in the main patches. > -- Thanks for the review and separating the refactoring into its own commit. Point taken on being more careful when sending updated patch sets. I=E2=80=99ll make sure to keep refactoring and SQL layer changes clearly separated going forward. Attached is v6, rebased on top of HEAD. This version is limited to the SQL function only. Changes since v5: - Removed the refactoring, as GetMultiXactInfo() is already committed. - Documentation revised to describe thresholds in terms of raw counts. Hopefully this makes the proposal easier to evaluate on its own merits. --0000000000006fa1b2063cc4654d Content-Type: application/octet-stream; name="v6-0001-Add-pg_get_multixact_stats-function-for-monitorin.patch" Content-Disposition: attachment; filename="v6-0001-Add-pg_get_multixact_stats-function-for-monitorin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mejgzpk80 RnJvbSA2N2RjN2IzODdmOTUwMzY0MjM0ZTk1ZmU2ZjcwOTlhODVhNDQ1ODM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWdhIEFwcGFuaSA8bmFnbnJpa0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMTggQXVnIDIwMjUgMjA6NTE6MjUgKzAwMDAKU3ViamVjdDogW1BBVENIIHY2XSBBZGQg cGdfZ2V0X211bHRpeGFjdF9zdGF0cygpIGZ1bmN0aW9uIGZvciBtb25pdG9yaW5nCiBNdWx0aVhh Y3QgdXNhZ2UKCkV4cG9zZSBtdWx0aXhhY3Qgc3RhdGUgdmlhIGEgbmV3IFNRTC1jYWxsYWJsZSBm dW5jdGlvbiBwZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCksCnJldHVybmluZzoKLSBudW1fbXhpZHMg ICAgICAgICAgOiBudW1iZXIgb2YgTXVsdGlYYWN0IElEcyBpbiB1c2UKLSBudW1fbWVtYmVycyAg ICAgICAgOiBudW1iZXIgb2YgbWVtYmVyIGVudHJpZXMgaW4gdXNlCi0gbWVtYmVyc19ieXRlcyAg ICAgIDogYnl0ZXMgdXNlZCBieSBudW1fbWVtYmVycyBpbiBwZ19tdWx0aXhhY3QvbWVtYmVycyBk aXJlY3RvcnkKLSBvbGRlc3RfbXVsdGl4YWN0ICAgOiBvbGRlc3QgTXVsdGlYYWN0IElEIHN0aWxs IG5lZWRlZAotIG9sZGVzdF9vZmZzZXQgICAgICA6IG9sZGVzdCBtZW1iZXIgb2Zmc2V0IHN0aWxs IGluIHVzZQoKVGhpcyBwYXRjaCBhZGRzIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKSBmdW5jdGlv bgogICAtIFNRTC1jYWxsYWJsZSBpbnRlcmZhY2UgdG8gR2V0TXVsdGlYYWN0SW5mbygpCiAgIC0g UmV0dXJucyBOVUxMcyBpZiBNdWx0aVhhY3Qgc3lzdGVtIG5vdCBpbml0aWFsaXplZAogICAtIElu Y2x1ZGVzIGlzb2xhdGlvbiB0ZXN0cyBmb3IgbW9uaXRvcmluZyBpbnZhcmlhbnRzCgpEb2N1bWVu dGF0aW9uIHVwZGF0ZXM6Ci0gZnVuYy1pbmZvLnNnbWw6IGFkZCBmdW5jdGlvbiBlbnRyeQotIG1h aW50ZW5hbmNlLnNnbWw6IG1lbnRpb24gbW9uaXRvcmluZyBtdWx0aXhhY3QgdXNhZ2UKCkJ1aWxk IGFuZCBjYXRhbG9nOgotIEFkZCBmdW5jdGlvbiB0byBleGlzdGluZyBtdWx0aXhhY3RmdW5jcy5j Ci0gcGdfcHJvYy5kYXQgZW50cnkKCkF1dGhvcjogTmFnYSBBcHBhbmkgPG5hZ25yaWtAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBNaWNoYWVsIFBhcXVpZXIgPG1pY2hhZWxAcGFxdWllci54eXo+ CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9D QSUyQlFlWSUyQkFBc1lLNld2Qlc0cVl6SHo0YmFoSHljREFZX3E1RUNtSGtFVl9lQjlja3pnJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbCAgICAg ICAgICAgICAgfCAgMzEgKysrKysKIGRvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAg ICAgICAgICAgICB8ICA1NCArKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFj dGZ1bmNzLmMgICAgICAgIHwgIDUyICsrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgICAgICAgICAgICAgICB8ICAxNSArKysKIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvbXVs dGl4YWN0X3N0YXRzLm91dCAgICB8ICA5NCArKysrKysrKysrKysrCiBzcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9u L3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjIHwgMTI3ICsrKysrKysrKysrKysrKysrKwogNyBm aWxlcyBjaGFuZ2VkLCAzNjkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvbXVsdGl4YWN0X3N0YXRzLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9tdWx0aXhhY3Rf c3RhdHMuc3BlYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtaW5mby5zZ21s IGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1pbmZvLnNnbWwKaW5kZXggYzM5MzgzMmQ5NGMuLjlk ZWRjMzcxNWQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWluZm8uc2dtbApAQCAtMjk3NSw2ICsyOTc1LDM3 IEBAIGFjbCAgICAgIHwge3Bvc3RncmVzPWFyd2REeHRtL3Bvc3RncmVzLGZvbz1yL3Bvc3RncmVz fQogICAgICAgICBtb2RpZnkga2V5IGNvbHVtbnMuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJt PgorICAgICAgICAgPHByaW1hcnk+cGdfZ2V0X211bHRpeGFjdF9zdGF0czwvcHJpbWFyeT4KKyAg ICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5wZ19nZXRfbXVsdGl4YWN0X3N0 YXRzPC9mdW5jdGlvbj4gKCkKKyAgICAgICAgPHJldHVybnZhbHVlPnJlY29yZDwvcmV0dXJudmFs dWU+CisgICAgICAgICggPHBhcmFtZXRlcj5udW1fbXhpZHM8L3BhcmFtZXRlcj4gPHR5cGU+aW50 ZWdlcjwvdHlwZT4sCisgICAgICAgICAgPHBhcmFtZXRlcj5udW1fbWVtYmVyczwvcGFyYW1ldGVy PiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICAgIDxwYXJhbWV0ZXI+bWVtYmVyc19ieXRl czwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICAgIDxwYXJhbWV0ZXI+ b2xkZXN0X211bHRpeGFjdDwvcGFyYW1ldGVyPiA8dHlwZT54aWQ8L3R5cGU+LAorICAgICAgICAg IDxwYXJhbWV0ZXI+b2xkZXN0X29mZnNldDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+ ICkKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFJldHVybnMgc3RhdGlz dGljcyBhYm91dCBjdXJyZW50IG11bHRpeGFjdCB1c2FnZToKKyAgICAgICAgPGxpdGVyYWw+bnVt X214aWRzPC9saXRlcmFsPiBpcyB0aGUgbnVtYmVyIG9mIG11bHRpeGFjdCBJRHMgYXNzaWduZWQs CisgICAgICAgIDxsaXRlcmFsPm51bV9tZW1iZXJzPC9saXRlcmFsPiBpcyB0aGUgbnVtYmVyIG9m IG11bHRpeGFjdCBtZW1iZXIgZW50cmllcyBjcmVhdGVkLAorICAgICAgICA8bGl0ZXJhbD5tZW1i ZXJzX2J5dGVzPC9saXRlcmFsPiBpcyB0aGUgc3RvcmFnZSBvY2N1cGllZCBieSA8bGl0ZXJhbD5u dW1fbWVtYmVyczwvbGl0ZXJhbD4KKyAgICAgICAgaW4gPGxpdGVyYWw+cGdfbXVsdGl4YWN0L21l bWJlcnM8L2xpdGVyYWw+IGRpcmVjdG9yeSwKKyAgICAgICAgPGxpdGVyYWw+b2xkZXN0X211bHRp eGFjdDwvbGl0ZXJhbD4gaXMgdGhlIG9sZGVzdCBtdWx0aXhhY3QgSUQgc3RpbGwgaW4gdXNlLCBh bmQKKyAgICAgICAgPGxpdGVyYWw+b2xkZXN0X29mZnNldDwvbGl0ZXJhbD4gaXMgdGhlIG9sZGVz dCBtZW1iZXIgb2Zmc2V0IHN0aWxsIGluIHVzZS4KKyAgICAgICAgVGhlc2UgdmFsdWVzIGNhbiBi ZSB1c2VkIHRvIG1vbml0b3IgbXVsdGl4YWN0IGNvbnN1bXB0aW9uIGFuZCBhbnRpY2lwYXRlCisg ICAgICAgIGF1dG92YWN1dW0gYmVoYXZpb3IuIFNlZSA8eHJlZiBsaW5rZW5kPSJ2YWN1dW0tZm9y LW11bHRpeGFjdC13cmFwYXJvdW5kIi8+CisgICAgICAgIGZvciBmdXJ0aGVyIGRldGFpbHMgb24g bXVsdGl4YWN0IHdyYXBhcm91bmQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAg ICAgICBUaGlzIGlzIGEgbGl2ZSBzbmFwc2hvdCBvZiBzaGFyZWQgY291bnRlcnM7IHRoZSBudW1i ZXJzIGNhbiBjaGFuZ2UgYmV0d2VlbiBjYWxscywKKyAgICAgICAgZXZlbiB3aXRoaW4gdGhlIHNh bWUgdHJhbnNhY3Rpb24uCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KICAg ICAgPC90Ym9keT4KICAgICA8L3Rncm91cD4KICAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21s CmluZGV4IGU3YTlmNThjMDE1Li42ZjBlOGQ3YzEwYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKQEAg LTgxMywxMiArODEzLDU2IEBAIEhJTlQ6ICBFeGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0g aW4gdGhhdCBkYXRhYmFzZS4KICAgICA8cGFyYT4KICAgICAgQXMgYSBzYWZldHkgZGV2aWNlLCBh biBhZ2dyZXNzaXZlIHZhY3V1bSBzY2FuIHdpbGwKICAgICAgb2NjdXIgZm9yIGFueSB0YWJsZSB3 aG9zZSBtdWx0aXhhY3QtYWdlIGlzIGdyZWF0ZXIgdGhhbiA8eHJlZgotICAgICBsaW5rZW5kPSJn dWMtYXV0b3ZhY3V1bS1tdWx0aXhhY3QtZnJlZXplLW1heC1hZ2UiLz4uICBBbHNvLCBpZiB0aGUK LSAgICAgc3RvcmFnZSBvY2N1cGllZCBieSBtdWx0aXhhY3RzIG1lbWJlcnMgZXhjZWVkcyBhYm91 dCAxMEdCLCBhZ2dyZXNzaXZlIHZhY3V1bQorICAgICBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1t dWx0aXhhY3QtZnJlZXplLW1heC1hZ2UiLz4uIEFsc28sIGlmIHRoZSBudW1iZXIKKyAgICAgb2Yg bWVtYmVycyBjcmVhdGVkIGV4Y2VlZHMgYXBwcm94aW1hdGVseSAyXjMxIGVudHJpZXMsIGFnZ3Jl c3NpdmUgdmFjdXVtCiAgICAgIHNjYW5zIHdpbGwgb2NjdXIgbW9yZSBvZnRlbiBmb3IgYWxsIHRh Ymxlcywgc3RhcnRpbmcgd2l0aCB0aG9zZSB0aGF0Ci0gICAgIGhhdmUgdGhlIG9sZGVzdCBtdWx0 aXhhY3QtYWdlLiAgQm90aCBvZiB0aGVzZSBraW5kcyBvZiBhZ2dyZXNzaXZlCi0gICAgIHNjYW5z IHdpbGwgb2NjdXIgZXZlbiBpZiBhdXRvdmFjdXVtIGlzIG5vbWluYWxseSBkaXNhYmxlZC4gVGhl IG1lbWJlcnMgc3RvcmFnZQotICAgICBhcmVhIGNhbiBncm93IHVwIHRvIGFib3V0IDIwR0IgYmVm b3JlIHJlYWNoaW5nIHdyYXBhcm91bmQuCisgICAgIGhhdmUgdGhlIG9sZGVzdCBtdWx0aXhhY3Qt YWdlLiBCb3RoIG9mIHRoZXNlIGtpbmRzIG9mIGFnZ3Jlc3NpdmUKKyAgICAgc2NhbnMgd2lsbCBv Y2N1ciBldmVuIGlmIGF1dG92YWN1dW0gaXMgbm9taW5hbGx5IGRpc2FibGVkLiBUaGUgbWVtYmVy cyBjYW4gZ3JvdworICAgICB1cCB0byBhcHByb3hpbWF0ZWx5IDJeMzIgZW50cmllcyBiZWZvcmUg cmVhY2hpbmcgd3JhcGFyb3VuZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhl IDxmdW5jdGlvbj5wZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiwg ZGVzY3JpYmVkIGluCisgICAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1wZy1zbmFwc2hvdCIv PiwgcHJvdmlkZXMgYSB3YXkgdG8gbW9uaXRvcgorICAgICBtdWx0aXhhY3QgYWxsb2NhdGlvbiBh bmQgdXNhZ2UgcGF0dGVybnMgaW4gcmVhbCB0aW1lLiBGb3IgZXhhbXBsZToKKyAgICAgPHByb2dy YW1saXN0aW5nPgorcG9zdGdyZXM9IyBTRUxFQ1QgIG51bV9teGlkcyxudW1fbWVtYmVycyxvbGRl c3RfbXVsdGl4YWN0LG9sZGVzdF9vZmZzZXQgRlJPTSBwZ19jYXRhbG9nLnBnX2dldF9tdWx0aXhh Y3Rfc3RhdHMoKTsKKyBudW1fbXhpZHMgfCBudW1fbWVtYmVycyB8IG9sZGVzdF9tdWx0aXhhY3Qg fCBvbGRlc3Rfb2Zmc2V0CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgOTk4ODM4NDkgfCAgIDc3MzQ2ODc0NyB8ICAgICAgICAg Mzk5NzQzNjggfCAgICAgMzUxOTUyOTc4CisoMSByb3cpCisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+ CisgICAgIFRoaXMgb3V0cHV0IHNob3dzIGEgc3lzdGVtIHdpdGggc2lnbmlmaWNhbnQgbXVsdGl4 YWN0IGFjdGl2aXR5OiBhYm91dCB+MTAwIG1pbGxpb24KKyAgICAgbXVsdGl4YWN0IElEcyBhbmQg fjc3MyBtaWxsaW9uIG1lbWJlciBlbnRyaWVzIGhhdmUgYmVlbiBjcmVhdGVkIHNpbmNlIHRoZSBv bGRlc3QKKyAgICAgc3Vydml2aW5nIG11bHRpeGFjdCAoSUQgMzk5NzQzNjgpLiBCeSBsZXZlcmFn aW5nIHRoaXMgaW5mb3JtYXRpb24sIHRoZSBmdW5jdGlvbiBoZWxwczoKKyAgICAgPG9yZGVyZWRs aXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxzaW1wYXJhPgorICAgICAgICBJZGVudGlm eSB1bnVzdWFsIG11bHRpeGFjdCBhY3Rpdml0eSBmcm9tIGNvbmN1cnJlbnQgcm93LWxldmVsIGxv Y2tzCisgICAgICAgIG9yIGZvcmVpZ24ga2V5IG9wZXJhdGlvbnMuIEZvciBleGFtcGxlLCBhIHNw aWtlIGluIG51bV9teGlkcyBtaWdodCBpbmRpY2F0ZQorICAgICAgICBtdWx0aXBsZSBzZXNzaW9u cyBydW5uaW5nIFVQREFURSBzdGF0ZW1lbnRzIHdpdGggZm9yZWlnbiBrZXkgY2hlY2tzLAorICAg ICAgICBjb25jdXJyZW50IFNFTEVDVCBGT1IgU0hBUkUgb3BlcmF0aW9ucywgb3IgZnJlcXVlbnQg dXNlIG9mIHNhdmVwb2ludHMKKyAgICAgICAgY2F1c2luZyBsb2NrIGNvbnRlbnRpb24uCisgICAg ICAgPC9zaW1wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8c2ltcGFyYT4KKyAgICAgICAgVHJhY2sgbXVsdGl4YWN0IGNsZWFudXAgZWZmaWNpZW5jeSBi eSBtb25pdG9yaW5nIG9sZGVzdF9tdWx0aXhhY3QuCisgICAgICAgIElmIHRoaXMgdmFsdWUgcmVt YWlucyB1bmNoYW5nZWQgd2hpbGUgbnVtX21lbWJlcnMgZ3Jvd3MsIGl0IGNvdWxkIGluZGljYXRl CisgICAgICAgIHRoYXQgbG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBhcmUgcHJldmVudGluZyBj bGVhbnVwLCBvciBhdXRvdmFjdXVtIGlzCisgICAgICAgIG5vdCBrZWVwaW5nIHVwIHdpdGggdGhl IHdvcmtsb2FkLgorICAgICAgIDwvc2ltcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHNpbXBhcmE+CisgICAgICAgIERldGVjdCBwb3RlbnRpYWwgcGVy Zm9ybWFuY2UgaW1wYWN0cyBiZWZvcmUgdGhleSBiZWNvbWUgY3JpdGljYWwuCisgICAgICAgIEZv ciBpbnN0YW5jZSwgaGlnaCBtdWx0aXhhY3QgdXNhZ2UgZnJvbSBmcmVxdWVudCByb3ctbGV2ZWwg bG9ja2luZyBvcgorICAgICAgICBmb3JlaWduIGtleSBvcGVyYXRpb25zIGNhbiBsZWFkIHRvIGlu Y3JlYXNlZCBJL08gYW5kIENQVSBvdmVyaGVhZCBkdXJpbmcKKyAgICAgICAgdmFjdXVtIG9wZXJh dGlvbnMuIE1vbml0b3JpbmcgdGhlc2Ugc3RhdHMgaGVscHMgdHVuZSBhdXRvdmFjdXVtIGZyZXF1 ZW5jeQorICAgICAgICBhbmQgdHJhbnNhY3Rpb24gcGF0dGVybnMuCisgICAgICAgPC9zaW1wYXJh PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC9vcmRlcmVkbGlzdD4KICAgICA8L3BhcmE+CiAK ICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXhhY3Rm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L211bHRpeGFjdGZ1bmNzLmMKaW5kZXggZTc0 ZWE5MzgzNDguLmJhOWU4MzEzYWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv bXVsdGl4YWN0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGl4YWN0ZnVu Y3MuYwpAQCAtODUsMyArODUsNTUgQEAgcGdfZ2V0X211bHRpeGFjdF9tZW1iZXJzKFBHX0ZVTkNU SU9OX0FSR1MpCiAKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N4dCk7CiB9CisKKy8qCisgKiBwZ19n ZXRfbXVsdGl4YWN0X3N0YXRzCisgKgorICogUmV0dXJucyBzdGF0aXN0aWNzIGFib3V0IGN1cnJl bnQgTXVsdGlYYWN0IHVzYWdlOgorICoJCS0gbnVtX214aWRzOiBOdW1iZXIgb2YgTXVsdGlYYWN0 IElEcyBpbiB1c2UKKyAqCQktIG51bV9tZW1iZXJzOiBUb3RhbCBudW1iZXIgb2YgbWVtYmVyIGVu dHJpZXMKKyAqCQktIG9sZGVzdF9tdWx0aXhhY3Q6IE9sZGVzdCBNdWx0aVhhY3QgSUQgc3RpbGwg bmVlZGVkCisgKgkJLSBvbGRlc3Rfb2Zmc2V0OiBPbGRlc3Qgb2Zmc2V0IHN0aWxsIGluIHVzZQor ICoKKyAqIFJldHVybnMgYSByb3cgb2YgTlVMTHMgaWYgdGhlIE11bHRpWGFjdCBzeXN0ZW0gaXMg bm90IHlldCBpbml0aWFsaXplZC4KKyAqLworRGF0dW0KK3BnX2dldF9tdWx0aXhhY3Rfc3RhdHMo UEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlEYXR1bQkJdmFsdWVz WzVdOworCWJvb2wJCW51bGxzWzVdID0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9Owor CU11bHRpWGFjdE9mZnNldCBtZW1iZXJzOworCU11bHRpWGFjdElkCW9sZGVzdE11bHRpWGFjdElk OworCXVpbnQzMgkJbXVsdGl4YWN0czsKKwlNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0Owor CWludDY0CQltZW1iZXJzQnl0ZXM7CisJSGVhcFR1cGxlCXR1cGxlOworCisJaWYgKGdldF9jYWxs X3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lU RSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJIGVycm1zZygicmV0dXJuIHR5cGUgbXVzdCBiZSBhIHJvdyB0eXBlIikp KTsKKworCWlmIChHZXRNdWx0aVhhY3RJbmZvKCZtdWx0aXhhY3RzLCAmbWVtYmVycywgJm9sZGVz dE11bHRpWGFjdElkLCAmb2xkZXN0T2Zmc2V0KSkKKwl7CisJCS8qCisJCSogQ2FsY3VsYXRlIGFw cHJveGltYXRlIHN0b3JhZ2Ugc3BhY2U6CisJCSogLSBNZW1iZXJzIGFyZSBzdG9yZWQgaW4gZ3Jv dXBzIG9mIDQKKwkJKiAtIEVhY2ggZ3JvdXAgdGFrZXMgMjAgYnl0ZXMgKDUgYnl0ZXMgcGVyIG1l bWJlcikKKwkJKiBOb3RlOiBUaGlzIGlnbm9yZXMgc21hbGwgcGFnZSBvdmVyaGVhZCAoMTIgYnl0 ZXMgcGVyIDhLQikKKwkJKi8KKwkJbWVtYmVyc0J5dGVzID0gKGludDY0KSBtZW1iZXJzICogNTsK KworCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKG11bHRpeGFjdHMpOworCQl2YWx1ZXNbMV0g PSBJbnQ2NEdldERhdHVtKG1lbWJlcnMpOworCQl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKG1l bWJlcnNCeXRlcyk7CisJCXZhbHVlc1szXSA9IFVJbnQzMkdldERhdHVtKG9sZGVzdE11bHRpWGFj dElkKTsKKwkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bShvbGRlc3RPZmZzZXQpOworCQludWxs c1swXSA9IG51bGxzWzFdID0gbnVsbHNbMl0gPSBudWxsc1szXSA9IG51bGxzWzRdID0gZmFsc2U7 CisJfQorCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7 CisKKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0odHVwbGUpKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDExOGQ2ZGExYWNlLi45ODUzNjRlMGNkNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC0xMjU3Niw0ICsxMjU3NiwxOSBAQAogICBwcm9hcmduYW1lcyA9 PiAne3BpZCxpb19pZCxpb19nZW5lcmF0aW9uLHN0YXRlLG9wZXJhdGlvbixvZmYsbGVuZ3RoLHRh cmdldCxoYW5kbGVfZGF0YV9sZW4scmF3X3Jlc3VsdCxyZXN1bHQsdGFyZ2V0X2Rlc2MsZl9zeW5j LGZfbG9jYWxtZW0sZl9idWZmZXJlZH0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9haW9zJyB9LAog CisjIEdldCBNdWx0aVhhY3Qgc3RhdGUKK3sKKyAgb2lkID0+ICc5MDAxJywKKyAgZGVzY3IgPT4g J2dldCBjdXJyZW50IG11bHRpeGFjdCBtZW1iZXIgYW5kIG11bHRpeGFjdCBJRCBjb3VudHMgYW5k IG9sZGVzdCB2YWx1ZXMnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfbXVsdGl4YWN0X3N0YXRzJywK KyAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywKKyAgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb2Fs bGFyZ3R5cGVzID0+ICd7aW50NCxpbnQ4LGludDgseGlkLGludDh9JywKKyAgcHJvYXJnbW9kZXMg PT4gJ3tvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tudW1fbXhpZHMsbnVtX21lbWJl cnMsbWVtYmVyc19ieXRlcyxvbGRlc3RfbXVsdGl4YWN0LG9sZGVzdF9vZmZzZXR9JywKKyAgcHJv dm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxlbCA9PiAncycsCisgIHByb3NyYyA9PiAncGdf Z2V0X211bHRpeGFjdF9zdGF0cycKK30sCisKIF0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9tdWx0aXhhY3Rfc3RhdHMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL211bHRpeGFjdF9zdGF0cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjI4OTNjNGQ5ZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL211bHRpeGFjdF9zdGF0cy5vdXQKQEAgLTAsMCArMSw5NCBAQAorUGFyc2Vk IHRlc3Qgc3BlYyB3aXRoIDMgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGRfYmVn aW4gc25hcDAgczFfYmVnaW4gczFfbG9jayBzbmFwMSBzMl9iZWdpbiBzMl9sb2NrIHNuYXAyIGNo ZWNrX3doaWxlX3Bpbm5lZCBkX2NvbW1pdCBzMV9jb21taXQgczJfY29tbWl0CitzdGVwIGRfYmVn aW46IEJFR0lOOyBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7CitzdGVwIHNuYXAw OiAKKyAgQ1JFQVRFIFRFTVAgVEFCTEUgc25hcDAgQVMKKyAgU0VMRUNUIG51bV9teGlkcywgbnVt X21lbWJlcnMsIG9sZGVzdF9tdWx0aXhhY3QsIG9sZGVzdF9vZmZzZXQKKyAgRlJPTSBwZ19nZXRf bXVsdGl4YWN0X3N0YXRzKCk7CisKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9sb2Nr OiBTRUxFQ1QgMSBGUk9NIG14cSBXSEVSRSBpZD0xIEZPUiBLRVkgU0hBUkU7Cis/Y29sdW1uPwor LS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK3N0ZXAgc25hcDE6IAorICBDUkVBVEUgVEVN UCBUQUJMRSBzbmFwMSBBUworICBTRUxFQ1QgbnVtX214aWRzLCBudW1fbWVtYmVycywgb2xkZXN0 X211bHRpeGFjdCwgb2xkZXN0X29mZnNldAorICBGUk9NIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMo KTsKKworc3RlcCBzMl9iZWdpbjogQkVHSU47CitzdGVwIHMyX2xvY2s6IFNFTEVDVCAxIEZST00g bXhxIFdIRVJFIGlkPTEgRk9SIEtFWSBTSEFSRTsKKz9jb2x1bW4/CistLS0tLS0tLQorICAgICAg IDEKKygxIHJvdykKKworc3RlcCBzbmFwMjogCisgIENSRUFURSBURU1QIFRBQkxFIHNuYXAyIEFT CisgIFNFTEVDVCBudW1fbXhpZHMsIG51bV9tZW1iZXJzLCBvbGRlc3RfbXVsdGl4YWN0LCBvbGRl c3Rfb2Zmc2V0CisgIEZST00gcGdfZ2V0X211bHRpeGFjdF9zdGF0cygpOworCitzdGVwIGNoZWNr X3doaWxlX3Bpbm5lZDogCisgIFNFTEVDVCByLmFzc2VydGlvbiwgci5vaworICBGUk9NIHNuYXAw IHMwCisgIEpPSU4gc25hcDEgczEgT04gVFJVRQorICBKT0lOIHNuYXAyIHMyIE9OIFRSVUUsCisg IExBVEVSQUwgdW5uZXN0KAorICAgIEFSUkFZWworICAgICAgJ2lzX2luaXRfbXhpZHMnLAorICAg ICAgJ2lzX2luaXRfbWVtYmVycycsCisgICAgICAnaXNfaW5pdF9vbGRlc3RfbXhpZCcsCisgICAg ICAnaXNfaW5pdF9vbGRlc3Rfb2ZmJywKKyAgICAgICdpc19vbGRlc3RfbXhpZF9ub25kZWNfMDEn LAorICAgICAgJ2lzX29sZGVzdF9teGlkX25vbmRlY18xMicsCisgICAgICAnaXNfb2xkZXN0X29m Zl9ub25kZWNfMDEnLAorICAgICAgJ2lzX29sZGVzdF9vZmZfbm9uZGVjXzEyJywKKyAgICAgICdp c19tZW1iZXJzX2luY3JlYXNlZF9nZTEnLAorICAgICAgJ2lzX214aWRzX25vbmRlY18wMScsCisg ICAgICAnaXNfbXhpZHNfbm9uZGVjXzEyJywKKyAgICAgICdpc19tZW1iZXJzX25vbmRlY18wMScs CisgICAgICAnaXNfbWVtYmVyc19ub25kZWNfMTInCisgICAgXSwKKyAgICBBUlJBWVsKKyAgICAg IChzMi5udW1fbXhpZHMgICAgICAgIElTIE5PVCBOVUxMKSwKKyAgICAgIChzMi5udW1fbWVtYmVy cyAgICAgIElTIE5PVCBOVUxMKSwKKyAgICAgIChzMi5vbGRlc3RfbXVsdGl4YWN0IElTIE5PVCBO VUxMKSwKKyAgICAgIChzMi5vbGRlc3Rfb2Zmc2V0ICAgIElTIE5PVCBOVUxMKSwKKworICAgICAg KHMxLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCA+PSBDT0FMRVNDRShzMC5vbGRlc3Rf bXVsdGl4YWN0Ojp0ZXh0OjpiaWdpbnQsIDApKSwKKyAgICAgIChzMi5vbGRlc3RfbXVsdGl4YWN0 Ojp0ZXh0OjpiaWdpbnQgPj0gQ09BTEVTQ0UoczEub2xkZXN0X211bHRpeGFjdDo6dGV4dDo6Ymln aW50LCAwKSksCisgICAgICAoczEub2xkZXN0X29mZnNldCAgICA+PSBDT0FMRVNDRShzMC5vbGRl c3Rfb2Zmc2V0LCAgICAwKSksCisgICAgICAoczIub2xkZXN0X29mZnNldCAgICA+PSBDT0FMRVND RShzMS5vbGRlc3Rfb2Zmc2V0LCAgICAwKSksCisKKyAgICAgIChzMi5udW1fbWVtYmVycyA+PSBD T0FMRVNDRShzMS5udW1fbWVtYmVycywgMCkgKyAxKSwKKworICAgICAgKHMxLm51bV9teGlkcyAg ID49IENPQUxFU0NFKHMwLm51bV9teGlkcywgICAwKSksCisgICAgICAoczIubnVtX214aWRzICAg Pj0gQ09BTEVTQ0UoczEubnVtX214aWRzLCAgIDApKSwKKyAgICAgIChzMS5udW1fbWVtYmVycyA+ PSBDT0FMRVNDRShzMC5udW1fbWVtYmVycywgMCkpLAorICAgICAgKHMyLm51bV9tZW1iZXJzID49 IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSkKKyAgICBdCisgICkgQVMgcihhc3NlcnRpb24s IG9rKTsKKworYXNzZXJ0aW9uICAgICAgICAgICAgICAgfG9rCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0KK2lzX2luaXRfbXhpZHMgICAgICAgICAgIHx0IAoraXNfaW5pdF9tZW1iZXJzICAg ICAgICAgfHQgCitpc19pbml0X29sZGVzdF9teGlkICAgICB8dCAKK2lzX2luaXRfb2xkZXN0X29m ZiAgICAgIHx0IAoraXNfb2xkZXN0X214aWRfbm9uZGVjXzAxfHQgCitpc19vbGRlc3RfbXhpZF9u b25kZWNfMTJ8dCAKK2lzX29sZGVzdF9vZmZfbm9uZGVjXzAxIHx0IAoraXNfb2xkZXN0X29mZl9u b25kZWNfMTIgfHQgCitpc19tZW1iZXJzX2luY3JlYXNlZF9nZTF8dCAKK2lzX214aWRzX25vbmRl Y18wMSAgICAgIHx0IAoraXNfbXhpZHNfbm9uZGVjXzEyICAgICAgfHQgCitpc19tZW1iZXJzX25v bmRlY18wMSAgICB8dCAKK2lzX21lbWJlcnNfbm9uZGVjXzEyICAgIHx0IAorKDEzIHJvd3MpCisK K3N0ZXAgZF9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMy X2NvbW1pdDogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlv bl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXgg OWYxZTk5N2Q4MWIuLjRkOTRmYzk0ZTc3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUKQEAgLTExOCwzICsxMTgsNCBAQCB0ZXN0OiBzZXJpYWxpemFibGUtcGFyYWxsZWwtMgog dGVzdDogc2VyaWFsaXphYmxlLXBhcmFsbGVsLTMKIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwog dGVzdDogbG9jay1ub3dhaXQKK3Rlc3Q6IG11bHRpeGFjdF9zdGF0cwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL3NwZWNzL211bHRpeGFjdF9zdGF0cy5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi45MDk4YjZmNWM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9tdWx0aXhhY3Rfc3RhdHMuc3BlYwpAQCAtMCwwICsxLDEyNyBAQAor IyBIaWdoLXNpZ25hbCBpbnZhcmlhbnRzIGZvciBwZ19nZXRfbXVsdGl4YWN0X3N0YXRzKCkKKyMg V2UgY3JlYXRlIGV4YWN0bHkgb25lIGZyZXNoIE11bHRpWGFjdCBvbiBhIGJyYW5kLW5ldyB0YWJs ZS4gV2hpbGUgaXQgaXMgcGlubmVkCisjIGJ5IHR3byBvcGVuIHRyYW5zYWN0aW9ucywgd2UgYXNz ZXJ0IG9ubHkgaW52YXJpYW50cyB0aGF0IGJhY2tncm91bmQgVkFDVVVNL0ZSRUVaRQorIyBjYW5u b3QgdmlvbGF0ZToKKyMgICDigKIgbWVtYmVycyBpbmNyZWFzZWQgYnkg4omlIDEgd2hlbiB0aGUg c2Vjb25kIGxvY2tlciBhcnJpdmVkLAorIyAgIOKAoiBudW1fbXhpZHMgLyBudW1fbWVtYmVycyBk aWQgbm90IGRlY3JlYXNlIHZzIGVhcmxpZXIgc25hcHNob3RzLAorIyAgIOKAoiBvbGRlc3RfKiBu ZXZlciBkZWNyZWFzZXMuCisjIFdlIG1ha2UgTk8gYXNzZXJ0aW9ucyBhZnRlciByZWxlYXNpbmcg bG9ja3MgKGZyZWV6aW5nL3RydW5jYXRpb24gbWF5IHNocmluayBkZWx0YXMpLgorIyBOT1RFOiBT bmFwc2hvdHMgc25hcDAgYW5kIHN1YnNlcXVlbnQgY2hlY2tzIGFyZSB0YWtlbiBpbnNpZGUgYW4g b3BlbiBkcml2ZXIKKyMgdHJhbnNhY3Rpb24gdG8gbmFycm93IHRoZSB3aW5kb3cgZm9yIHVucmVs YXRlZCB0cnVuY2F0aW9uIGJldHdlZW4gc25hcHNob3RzLgorIworIyBUZXJtaW5vbG9neSAoZ2xv YmFsIGNvdW50ZXJzKToKKyMgICBudW1fbXhpZHMsIG51bV9tZW1iZXJzICAgIDog4oCcaW4tdXNl 4oCdIGRlbHRhcyBkZXJpdmVkIGZyb20gZ2xvYmFsIGhvcml6b25zCisjICAgb2xkZXN0X211bHRp eGFjdCwgb2Zmc2V0ICA6IG9sZGVzdCBob3Jpem9uczsgdGhleSBtb3ZlIGZvcndhcmQsIG5ldmVy IGJhY2t3YXJkCisjCisjIEFsbCBhc3NlcnRpb25zIGV4ZWN1dGUgd2hpbGUgb3VyIG11bHRpeGFj dCBpcyBwaW5uZWQgYnkgb3BlbiB0eG5zLCB3aGljaCBwcm90ZWN0cworIyB0aGUgdHJ1bmNhdGlv biBob3Jpem9uIChWQUNVVU0gY2Fu4oCZdCBhZHZhbmNlIHBhc3Qgb3VyIHBpbm5lZCBtdWx0aSku CisKK3NldHVwCit7CisgICAgQ1JFQVRFIFRBQkxFIG14cShpZCBpbnQgUFJJTUFSWSBLRVksIHYg aW50KTsKKyAgICBJTlNFUlQgSU5UTyBteHEgVkFMVUVTICgxLCA0Mik7Cit9CisKK3RlYXJkb3du Cit7CisgICAgRFJPUCBUQUJMRSBteHE7Cit9CisKKyMgVHdvIGxvY2tlcnMgb24gdGhlIFNBTUUg dHVwbGUgLT4gb25lIE11bHRpWGFjdCB3aXRoID49IDIgbWVtYmVycy4KK3Nlc3Npb24gInMxIgor c2V0dXAgeyBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7IFNFVCBsb2NrX3RpbWVv dXQgPSAnNXMnOyB9CitzdGVwIHMxX2JlZ2luICB7IEJFR0lOOyB9CitzdGVwIHMxX2xvY2sgICB7 IFNFTEVDVCAxIEZST00gbXhxIFdIRVJFIGlkPTEgRk9SIEtFWSBTSEFSRTsgfQorc3RlcCBzMV9j b21taXQgeyBDT01NSVQ7IH0KKworc2Vzc2lvbiAiczIiCitzZXR1cCB7IFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gd2FybmluZzsgU0VUIGxvY2tfdGltZW91dCA9ICc1cyc7IH0KK3N0ZXAgczJf YmVnaW4gIHsgQkVHSU47IH0KK3N0ZXAgczJfbG9jayAgIHsgU0VMRUNUIDEgRlJPTSBteHEgV0hF UkUgaWQ9MSBGT1IgS0VZIFNIQVJFOyB9CitzdGVwIHMyX2NvbW1pdCB7IENPTU1JVDsgfQorCisj IERyaXZlciBzZXNzaW9uOiBrZWVwIGEgdHJhbnNhY3Rpb24gb3BlbiB3aGlsZSB3ZSB0YWtlIHNu YXBzaG90cyBhbmQgY2hlY2suCitzZXNzaW9uICJkcml2ZXIiCitzdGVwIGRfYmVnaW4geyBCRUdJ TjsgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSB3YXJuaW5nOyB9CisKKyMgQmFzZWxpbmUgQkVG T1JFIGFueSBsb2NraW5nOyBtYXkgYmUgTlVMTHMgaWYgbXVsdGl4YWN0IGlzbid0IGluaXRpYWxp emVkIHlldC4KK3N0ZXAgc25hcDAgeworICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFwMCBBUworICBT RUxFQ1QgbnVtX214aWRzLCBudW1fbWVtYmVycywgb2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29m ZnNldAorICBGUk9NIHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKTsKK30KKworIyBBZnRlciBzMSBo YXMgbG9ja2VkIHRoZSByb3cgKHN0aWxsIGluIGRyaXZlciB4YWN0KS4KK3N0ZXAgc25hcDEgewor ICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFwMSBBUworICBTRUxFQ1QgbnVtX214aWRzLCBudW1fbWVt YmVycywgb2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29mZnNldAorICBGUk9NIHBnX2dldF9tdWx0 aXhhY3Rfc3RhdHMoKTsKK30KKworIyBBZnRlciBzMiBqb2lucyBvbiB0aGUgU0FNRSB0dXBsZSAt PiBtdWx0aXhhY3Qgd2l0aCA+PSAyIG1lbWJlcnMgKHN0aWxsIGluIGRyaXZlciB4YWN0KS4KK3N0 ZXAgc25hcDIgeworICBDUkVBVEUgVEVNUCBUQUJMRSBzbmFwMiBBUworICBTRUxFQ1QgbnVtX214 aWRzLCBudW1fbWVtYmVycywgb2xkZXN0X211bHRpeGFjdCwgb2xkZXN0X29mZnNldAorICBGUk9N IHBnX2dldF9tdWx0aXhhY3Rfc3RhdHMoKTsKK30KKworIyBQcmV0dHksIGRldGVybWluaXN0aWMg a2V5L3ZhbHVlIG91dHB1dCBvZiBib29sZWFuIGNoZWNrcy4KKyMgS2V5czoKKyMgICBpc19pbml0 X214aWRzICAgICAgICAgICAgOiBudW1fbXhpZHMgaXMgbm9uLU5VTEwKKyMgICBpc19pbml0X21l bWJlcnMgICAgICAgICAgOiBudW1fbWVtYmVycyBpcyBub24tTlVMTAorIyAgIGlzX2luaXRfb2xk ZXN0X214aWQgICAgICA6IG9sZGVzdF9tdWx0aXhhY3QgaXMgbm9uLU5VTEwKKyMgICBpc19pbml0 X29sZGVzdF9vZmYgICAgICAgOiBvbGRlc3Rfb2Zmc2V0IGlzIG5vbi1OVUxMCisjICAgaXNfb2xk ZXN0X214aWRfbm9uZGVjXzAxIDogb2xkZXN0X211bHRpeGFjdCBkaWQgbm90IGRlY3JlYXNlIChz bmFwMOKGknNuYXAxKQorIyAgIGlzX29sZGVzdF9teGlkX25vbmRlY18xMiA6IG9sZGVzdF9tdWx0 aXhhY3QgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDHihpJzbmFwMikKKyMgICBpc19vbGRlc3Rfb2Zm X25vbmRlY18wMSAgOiBvbGRlc3Rfb2Zmc2V0IGRpZCBub3QgZGVjcmVhc2UgKHNuYXAw4oaSc25h cDEpCisjICAgaXNfb2xkZXN0X29mZl9ub25kZWNfMTIgIDogb2xkZXN0X29mZnNldCBkaWQgbm90 IGRlY3JlYXNlIChzbmFwMeKGknNuYXAyKQorIyAgIGlzX21lbWJlcnNfaW5jcmVhc2VkX2dlMSA6 IG1lbWJlcnMgaW5jcmVhc2VkIGJ5IGF0IGxlYXN0IDEgd2hlbiBzMiBqb2luZWQKKyMgICBpc19t eGlkc19ub25kZWNfMDEgICAgICAgOiBudW1fbXhpZHMgZGlkIG5vdCBkZWNyZWFzZSAoc25hcDDi hpJzbmFwMSkKKyMgICBpc19teGlkc19ub25kZWNfMTIgICAgICAgOiBudW1fbXhpZHMgZGlkIG5v dCBkZWNyZWFzZSAoc25hcDHihpJzbmFwMikKKyMgICBpc19tZW1iZXJzX25vbmRlY18wMSAgICAg OiBudW1fbWVtYmVycyBkaWQgbm90IGRlY3JlYXNlIChzbmFwMOKGknNuYXAxKQorIyAgIGlzX21l bWJlcnNfbm9uZGVjXzEyICAgICA6IG51bV9tZW1iZXJzIGRpZCBub3QgZGVjcmVhc2UgKHNuYXAx 4oaSc25hcDIpCitzdGVwIGNoZWNrX3doaWxlX3Bpbm5lZCB7CisgIFNFTEVDVCByLmFzc2VydGlv biwgci5vaworICBGUk9NIHNuYXAwIHMwCisgIEpPSU4gc25hcDEgczEgT04gVFJVRQorICBKT0lO IHNuYXAyIHMyIE9OIFRSVUUsCisgIExBVEVSQUwgdW5uZXN0KAorICAgIEFSUkFZWworICAgICAg J2lzX2luaXRfbXhpZHMnLAorICAgICAgJ2lzX2luaXRfbWVtYmVycycsCisgICAgICAnaXNfaW5p dF9vbGRlc3RfbXhpZCcsCisgICAgICAnaXNfaW5pdF9vbGRlc3Rfb2ZmJywKKyAgICAgICdpc19v bGRlc3RfbXhpZF9ub25kZWNfMDEnLAorICAgICAgJ2lzX29sZGVzdF9teGlkX25vbmRlY18xMics CisgICAgICAnaXNfb2xkZXN0X29mZl9ub25kZWNfMDEnLAorICAgICAgJ2lzX29sZGVzdF9vZmZf bm9uZGVjXzEyJywKKyAgICAgICdpc19tZW1iZXJzX2luY3JlYXNlZF9nZTEnLAorICAgICAgJ2lz X214aWRzX25vbmRlY18wMScsCisgICAgICAnaXNfbXhpZHNfbm9uZGVjXzEyJywKKyAgICAgICdp c19tZW1iZXJzX25vbmRlY18wMScsCisgICAgICAnaXNfbWVtYmVyc19ub25kZWNfMTInCisgICAg XSwKKyAgICBBUlJBWVsKKyAgICAgIChzMi5udW1fbXhpZHMgICAgICAgIElTIE5PVCBOVUxMKSwK KyAgICAgIChzMi5udW1fbWVtYmVycyAgICAgIElTIE5PVCBOVUxMKSwKKyAgICAgIChzMi5vbGRl c3RfbXVsdGl4YWN0IElTIE5PVCBOVUxMKSwKKyAgICAgIChzMi5vbGRlc3Rfb2Zmc2V0ICAgIElT IE5PVCBOVUxMKSwKKworICAgICAgKHMxLm9sZGVzdF9tdWx0aXhhY3Q6OnRleHQ6OmJpZ2ludCA+ PSBDT0FMRVNDRShzMC5vbGRlc3RfbXVsdGl4YWN0Ojp0ZXh0OjpiaWdpbnQsIDApKSwKKyAgICAg IChzMi5vbGRlc3RfbXVsdGl4YWN0Ojp0ZXh0OjpiaWdpbnQgPj0gQ09BTEVTQ0UoczEub2xkZXN0 X211bHRpeGFjdDo6dGV4dDo6YmlnaW50LCAwKSksCisgICAgICAoczEub2xkZXN0X29mZnNldCAg ICA+PSBDT0FMRVNDRShzMC5vbGRlc3Rfb2Zmc2V0LCAgICAwKSksCisgICAgICAoczIub2xkZXN0 X29mZnNldCAgICA+PSBDT0FMRVNDRShzMS5vbGRlc3Rfb2Zmc2V0LCAgICAwKSksCisKKyAgICAg IChzMi5udW1fbWVtYmVycyA+PSBDT0FMRVNDRShzMS5udW1fbWVtYmVycywgMCkgKyAxKSwKKwor ICAgICAgKHMxLm51bV9teGlkcyAgID49IENPQUxFU0NFKHMwLm51bV9teGlkcywgICAwKSksCisg ICAgICAoczIubnVtX214aWRzICAgPj0gQ09BTEVTQ0UoczEubnVtX214aWRzLCAgIDApKSwKKyAg ICAgIChzMS5udW1fbWVtYmVycyA+PSBDT0FMRVNDRShzMC5udW1fbWVtYmVycywgMCkpLAorICAg ICAgKHMyLm51bV9tZW1iZXJzID49IENPQUxFU0NFKHMxLm51bV9tZW1iZXJzLCAwKSkKKyAgICBd CisgICkgQVMgcihhc3NlcnRpb24sIG9rKTsKK30KKworc3RlcCBkX2NvbW1pdCB7IENPTU1JVDsg fQorCitwZXJtdXRhdGlvbiBkX2JlZ2luIHNuYXAwIHMxX2JlZ2luIHMxX2xvY2sgc25hcDEgczJf YmVnaW4gczJfbG9jayBzbmFwMiBjaGVja193aGlsZV9waW5uZWQgZF9jb21taXQgczFfY29tbWl0 IHMyX2NvbW1pdAotLSAKMi40Ny4zCgo= --0000000000006fa1b2063cc4654d--