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 1tasrL-0063Bc-LP for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jan 2025 08:46:44 +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 1tasrK-00CPo0-5v for pgsql-hackers@arkaria.postgresql.org; Thu, 23 Jan 2025 08:46:42 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tasrJ-00CPns-Oi for pgsql-hackers@lists.postgresql.org; Thu, 23 Jan 2025 08:46:41 +0000 Received: from forward102d.mail.yandex.net ([178.154.239.213]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tasrG-0013cW-1K for pgsql-hackers@postgresql.org; Thu, 23 Jan 2025 08:46:41 +0000 Received: from mail-nwsmtp-smtp-production-main-45.myt.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-45.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:3918:0:640:109e:0]) by forward102d.mail.yandex.net (Yandex) with ESMTPS id C4C6B608D5; Thu, 23 Jan 2025 11:46:36 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-45.myt.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id TkTDuY9OnSw0-PZw6bLtM; Thu, 23 Jan 2025 11:46:36 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1737621996; bh=a4s3Y1/GZ7hOqYM7++ImLqFPUNIIgzbXrzFs9A8zYlY=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=P7wzMsOBakq0sr2Ci7VtncmCvwPj15Vty+ecGLLR/T/orBz9ueVsk9vcewBezWyvT 1Fw/txU14k/z1C1+OIs6D5PYKW283gyuxZVu8hUfSvHvXmwZ8odTI5kLTRnQqREPoR 1OXvPmKjIM9hsTHR8/GULi6gM7SQrEf1Ao8mZ5a0= Authentication-Results: mail-nwsmtp-smtp-production-main-45.myt.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------4nroPaQjV5EecUfWJcTDApWH" Message-ID: Date: Thu, 23 Jan 2025 11:46:29 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Sample rate added to pg_stat_statements To: Andrey Borodin Cc: Sami Imseih , Alena Rybakina , Alexander Korotkov , Michael Paquier , Greg Sabino Mullane , pgsql-hackers References: <320a31e6-4c91-438b-ab17-8a1d72384727@tantorlabs.com> <52e5e3aa-066a-4daf-8d65-77c34a2f0d98@tantorlabs.com> <6482A576-4465-4E46-A42C-F1767E8DDE30@yandex-team.ru> <20994d10-ab44-4c6b-91bc-c4675cd2e58e@tantorlabs.com> <9D8A5BC8-A3A5-4DA9-9382-F30D343247D1@yandex-team.ru> <6cf6270b-e8fa-4d99-b74a-17e781cdf309@tantorlabs.com> <3a27c830-b81f-4560-9774-a87d9b922fbd@tantorlabs.com> <7AD765EF-14DE-4B3E-8282-E82A9B44DBAA@yandex-team.ru> Content-Language: en-US From: Ilia Evdokimov In-Reply-To: <7AD765EF-14DE-4B3E-8282-E82A9B44DBAA@yandex-team.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------4nroPaQjV5EecUfWJcTDApWH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 23.01.2025 08:21, Andrey Borodin wrote: >> > There’s a typo in the commit message (ratio instead of rate). Besides this the patch looks ready for committer. > > > Best regards, Andrey Borodin. Fixed. Thank you for review! I noticed that the code has not enough comments, so I added additional ones to improve clarity. Additionally, I moved the update_current_query_sampled() function to the end of the file, as keeping it between hooks didn’t seem appropriate to me. All these changes are included in the updated patch (v12), which I have attached. The patch is part of the current 2025-01 Commitfest: https://commitfest.postgresql.org/51/5390/ -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------4nroPaQjV5EecUfWJcTDApWH Content-Type: text/x-patch; charset=UTF-8; name="v12-0001-Allow-setting-sample-ratio-for-pg_stat_statements.patch" Content-Disposition: attachment; filename*0="v12-0001-Allow-setting-sample-ratio-for-pg_stat_statements.p"; filename*1="atch" Content-Transfer-Encoding: base64 RnJvbSBkZGJjNmFmMmFmNTExZmYzNDJiMTgzY2IxM2E5MDI3ZWRhZGMwYWQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5ydT4KRGF0ZTogVGh1LCAyMyBKYW4gMjAyNSAxMTozMTo1NyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjFdIEFsbG93IHNldHRpbmcgc2FtcGxlIHJhdGlvIGZvciBwZ19z dGF0X3N0YXRlbWVudHMKCk5ldyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBwZ19zdGF0X3N0 YXRlbWVudHMuc2FtcGxlX3JhdGUgbWFrZXMgaXQKcG9zc2libGUgdG8gdHJhY2sganVzdCBh IGZyYWN0aW9uIG9mIHRoZSBxdWVyaWVzIG1lZXRpbmcgdGhlIGNvbmZpZ3VyZWQKdGhyZXNo b2xkLCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB0cmFja2luZy4KLS0tCiAuLi4vcGdfc3Rh dF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3NlbGVjdC5vdXQgICAgfCA3NiArKysrKysrKysrKysr KysrKysrCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAg fCA3MyArKysrKysrKysrKysrKystLS0KIGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3Nx bC9zZWxlY3Quc3FsICAgICB8IDIxICsrKysrCiBkb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVt ZW50cy5zZ21sICAgICAgICAgICAgfCAxOCArKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxNzkg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9zZWxlY3Qub3V0IGIvY29udHJpYi9wZ19zdGF0 X3N0YXRlbWVudHMvZXhwZWN0ZWQvc2VsZWN0Lm91dAppbmRleCAzN2EzMGFmMDM0Li41NThk OTNmYjQ2IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC9zZWxlY3Qub3V0CisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVk L3NlbGVjdC5vdXQKQEAgLTE1Myw2ICsxNTMsODIgQEAgU0VMRUNUIHBnX3N0YXRfc3RhdGVt ZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CiAgdAogKDEgcm93KQogCistLQorLS0g c2FtcGxlIHN0YXRlbWVudHMKKy0tCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9y YXRlID0gMC4wOworU0VMRUNUIDEgQVMgImludCI7CisgaW50IAorLS0tLS0KKyAgIDEKKygx IHJvdykKKworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBP UkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgcXVl cnkgICAgICAgICAgICAgICAgICAgICAgICB8IGNhbGxzIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgU0VMRUNUIHBn X3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQgfCAgICAgMQorKDEg cm93KQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRlID0gMS4wOworU0VM RUNUIDEgQVMgImludCI7CisgaW50IAorLS0tLS0KKyAgIDEKKygxIHJvdykKKworU0VMRUNU IHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBD T0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLQorIFNFTEVDVCAkMSBBUyAiaW50IiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorIFNFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0ICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMgRlJPTSBwZ19zdGF0X3N0YXRl bWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAgMAorKDMgcm93cykKKwor U0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7Cisg dCAKKy0tLQorIHQKKygxIHJvdykKKworc2V0IHBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVf cmF0ZSA9IDAuMDsKK3NlbGVjdCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1Qg TlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAxIFxwYXJzZSBz dG10CitcYmluZF9uYW1lZCBzdG10IFxnCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyBxdWVyeSB8IGNhbGxzIAor LS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCitzZXQgcGdfc3RhdF9zdGF0ZW1lbnRzLnNh bXBsZV9yYXRlID0gMS4wOworXGJpbmRfbmFtZWQgc3RtdCBcZworID9jb2x1bW4/IAorLS0t LS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBxdWVyeSwgY2FsbHMgRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGNhbGxzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBT RUxFQ1QgJDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDEKKyBTRUxFQ1QgcXVlcnksIGNhbGxzIEZST00gcGdf c3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAKKygy IHJvd3MpCisKK3NlbGVjdCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVM TCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKIC0tCiAtLSBxdWVyaWVzIHdpdGgg bG9ja2luZyBjbGF1c2VzCiAtLQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBiZWJmODEzNGViLi45MmJhOTU0ZDQxIDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVu dHMuYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5o IgorI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5z dHJ1bWVudC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJqaXQvaml0Lmgi CkBAIC0yOTQsNiArMjk1LDEwIEBAIHN0YXRpYyBib29sIHBnc3NfdHJhY2tfdXRpbGl0eSA9 IHRydWU7CS8qIHdoZXRoZXIgdG8gdHJhY2sgdXRpbGl0eSBjb21tYW5kcyAqLwogc3RhdGlj IGJvb2wgcGdzc190cmFja19wbGFubmluZyA9IGZhbHNlOwkvKiB3aGV0aGVyIHRvIHRyYWNr IHBsYW5uaW5nCiAJCQkJCQkJCQkJCSAqIGR1cmF0aW9uICovCiBzdGF0aWMgYm9vbCBwZ3Nz X3NhdmUgPSB0cnVlOwkvKiB3aGV0aGVyIHRvIHNhdmUgc3RhdHMgYWNyb3NzIHNodXRkb3du ICovCitzdGF0aWMgZG91YmxlIHBnc3Nfc2FtcGxlX3JhdGUgPSAxLjA7IC8qIGZyYWN0aW9u IG9mIHN0YXRlbWVudHMgdG8gdHJhY2sgKi8KKworLyogSXMgdGhlIGN1cnJlbnQgdG9wLWxl dmVsIHF1ZXJ5IHRvIGJlIHNhbXBsZWQ/ICovCitzdGF0aWMgYm9vbCBjdXJyZW50X3F1ZXJ5 X3NhbXBsZWQgPSBmYWxzZTsKIAogCiAjZGVmaW5lIHBnc3NfZW5hYmxlZChsZXZlbCkgXApA QCAtMzczLDYgKzM3OCw3IEBAIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9ub3JtYWxpemVkX3F1 ZXJ5KEp1bWJsZVN0YXRlICpqc3RhdGUsIGNvbnN0IGNoYXIgKnF1ZXJ5LAogc3RhdGljIHZv aWQgZmlsbF9pbl9jb25zdGFudF9sZW5ndGhzKEp1bWJsZVN0YXRlICpqc3RhdGUsIGNvbnN0 IGNoYXIgKnF1ZXJ5LAogCQkJCQkJCQkJIGludCBxdWVyeV9sb2MpOwogc3RhdGljIGludAlj b21wX2xvY2F0aW9uKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOworc3RhdGljIHZv aWQJdXBkYXRlX2N1cnJlbnRfcXVlcnlfc2FtcGxlZCh2b2lkKTsKIAogCiAvKgpAQCAtNDE0 LDYgKzQyMCwxOSBAQCBfUEdfaW5pdCh2b2lkKQogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVM TCk7CiAKKwlEZWZpbmVDdXN0b21SZWFsVmFyaWFibGUoInBnX3N0YXRfc3RhdGVtZW50cy5z YW1wbGVfcmF0ZSIsCisJCQkJCQkJICJGcmFjdGlvbiBvZiBxdWVyaWVzIHRvIHRyYWNrLiIs CisJCQkJCQkJIE5VTEwsCisJCQkJCQkJICZwZ3NzX3NhbXBsZV9yYXRlLAorCQkJCQkJCSAx LjAsCisJCQkJCQkJIDAuMCwKKwkJCQkJCQkgMS4wLAorCQkJCQkJCSBQR0NfU1VTRVQsCisJ CQkJCQkJIDAsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIE5VTEwp OworCiAJRGVmaW5lQ3VzdG9tRW51bVZhcmlhYmxlKCJwZ19zdGF0X3N0YXRlbWVudHMudHJh Y2siLAogCQkJCQkJCSAiU2VsZWN0cyB3aGljaCBzdGF0ZW1lbnRzIGFyZSB0cmFja2VkIGJ5 IHBnX3N0YXRfc3RhdGVtZW50cy4iLAogCQkJCQkJCSBOVUxMLApAQCAtODg5LDEyICs5MDgs MTYgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIHsKIAlQbGFubmVkU3RtdCAqcmVz dWx0OwogCisJLyogV2hldGhlciB0aGUgY3VycmVudCBxdWVyeSBpcyBzYW1wbGVkIGJhc2Vk IG9uIHNhbXBsZV9yYXRlLiAqLworCXVwZGF0ZV9jdXJyZW50X3F1ZXJ5X3NhbXBsZWQoKTsK KwogCS8qCi0JICogV2UgY2FuJ3QgcHJvY2VzcyB0aGUgcXVlcnkgaWYgbm8gcXVlcnlfc3Ry aW5nIGlzIHByb3ZpZGVkLCBhcwotCSAqIHBnc3Nfc3RvcmUgbmVlZHMgaXQuICBXZSBhbHNv IGlnbm9yZSBxdWVyeSB3aXRob3V0IHF1ZXJ5aWQsIGFzIGl0IHdvdWxkCi0JICogYmUgdHJl YXRlZCBhcyBhIHV0aWxpdHkgc3RhdGVtZW50LCB3aGljaCBtYXkgbm90IGJlIHRoZSBjYXNl LgorCSAqIFdlIGNhbid0IHByb2Nlc3MgdGhlIHF1ZXJ5IGlmIGl0IGlzIG5vdCBzYW1wbGVk IG9yCisJICogaWYgbm8gcXVlcnlfc3RyaW5nIGlzIHByb3ZpZGVkLCBhcyBwZ3NzX3N0b3Jl IG5lZWRzIGl0LgorCSAqIFdlIGFsc28gaWdub3JlIHF1ZXJ5IHdpdGhvdXQgcXVlcnlpZCwg YXMgaXQgd291bGQgYmUgdHJlYXRlZAorCSAqIGFzIGEgdXRpbGl0eSBzdGF0ZW1lbnQsIHdo aWNoIG1heSBub3QgYmUgdGhlIGNhc2UuCiAJICovCi0JaWYgKHBnc3NfZW5hYmxlZChuZXN0 aW5nX2xldmVsKQorCWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYgY3VycmVu dF9xdWVyeV9zYW1wbGVkCiAJCSYmIHBnc3NfdHJhY2tfcGxhbm5pbmcgJiYgcXVlcnlfc3Ry aW5nCiAJCSYmIHBhcnNlLT5xdWVyeUlkICE9IFVJTlQ2NENPTlNUKDApKQogCXsKQEAgLTk5 NCwxMiArMTAxNywxNiBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKIAorCS8qIFdoZXRoZXIgdGhlIGN1cnJlbnQgcXVlcnkgaXMgc2Ft cGxlZCBiYXNlZCBvbiBzYW1wbGVfcmF0ZS4gKi8KKwl1cGRhdGVfY3VycmVudF9xdWVyeV9z YW1wbGVkKCk7CisKIAkvKgotCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0 IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKLQkgKiBjb3VudGluZyBvZiBvcHRp bWl6YWJsZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgotCSAq IHV0aWxpdHkgc3RhdGVtZW50cy4KKwkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJvIG9y IGlmIHF1ZXJ5IGlzIG5vdCBzYW1wbGVkLCBkb24ndCB0cmFjayBpdC4KKwkgKiBUaGlzIHBy ZXZlbnRzIGRvdWJsZSBjb3VudGluZyBvZiBvcHRpbWl6YWJsZSBzdGF0ZW1lbnRzCisJICog dGhhdCBhcmUgZGlyZWN0bHkgY29udGFpbmVkIGluIHV0aWxpdHkgc3RhdGVtZW50cy4KIAkg Ki8KLQlpZiAocGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpICYmIHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPnF1ZXJ5SWQgIT0gVUlOVDY0Q09OU1QoMCkpCisJaWYgKHBnc3NfZW5hYmxl ZChuZXN0aW5nX2xldmVsKSAmJiBjdXJyZW50X3F1ZXJ5X3NhbXBsZWQgJiYKKwkJcXVlcnlE ZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCAhPSBVSU5UNjRDT05TVCgwKSkKIAl7CiAJCS8q CiAJCSAqIFNldCB1cCB0byB0cmFjayB0b3RhbCBlbGFwc2VkIHRpbWUgaW4gRXhlY3V0b3JS dW4uICBNYWtlIHN1cmUgdGhlCkBAIC0xMTExLDcgKzExMzgsMTMgQEAgcGdzc19Qcm9jZXNz VXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAog CXVpbnQ2NAkJc2F2ZWRfcXVlcnlJZCA9IHBzdG10LT5xdWVyeUlkOwogCWludAkJCXNhdmVk X3N0bXRfbG9jYXRpb24gPSBwc3RtdC0+c3RtdF9sb2NhdGlvbjsKIAlpbnQJCQlzYXZlZF9z dG10X2xlbiA9IHBzdG10LT5zdG10X2xlbjsKLQlib29sCQllbmFibGVkID0gcGdzc190cmFj a191dGlsaXR5ICYmIHBnc3NfZW5hYmxlZChuZXN0aW5nX2xldmVsKTsKKwlib29sCQllbmFi bGVkOworCisJLyogV2hldGhlciB0aGUgY3VycmVudCBxdWVyeSBpcyBzYW1wbGVkIGJhc2Vk IG9uIHNhbXBsZV9yYXRlLiAqLworCXVwZGF0ZV9jdXJyZW50X3F1ZXJ5X3NhbXBsZWQoKTsK KworCWVuYWJsZWQgPSBwZ3NzX3RyYWNrX3V0aWxpdHkgJiYgcGdzc19lbmFibGVkKG5lc3Rp bmdfbGV2ZWwpICYmCisJCQkJY3VycmVudF9xdWVyeV9zYW1wbGVkOwogCiAJLyoKIAkgKiBG b3JjZSB1dGlsaXR5IHN0YXRlbWVudHMgdG8gZ2V0IHF1ZXJ5SWQgemVyby4gIFdlIGRvIHRo aXMgZXZlbiBpbiBjYXNlcwpAQCAtMzAxMSwzICszMDQ0LDI1IEBAIGNvbXBfbG9jYXRpb24o Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAogCXJldHVybiBwZ19jbXBfczMyKGws IHIpOwogfQorCisvKgorICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHRvcC1sZXZlbCBz dGF0ZW1lbnQsIGRlY2lkZSB3aGV0aGVyIHdlJ2xsCisgKiBzYW1wbGUgdGhpcyBzdGF0ZW1l bnQuICBJZiBuZXN0ZWQtc3RhdGVtZW50IHRyYWNraW5nIGlzIGVuYWJsZWQsCisgKiBlaXRo ZXIgYWxsIG5lc3RlZCBzdGF0ZW1lbnRzIHdpbGwgYmUgdHJhY2tlZCBvciBub25lIHdpbGwu CisgKgorICogV2hlbiBpbiBhIHBhcmFsbGVsIHdvcmtlciwgd2Ugc2hvdWxkIGRvIG5vdGhp bmcsIHdoaWNoIHdlIGNhbiBpbXBsZW1lbnQKKyAqIGNoZWFwbHkgYnkgcHJldGVuZGluZyB3 ZSBkZWNpZGVkIG5vdCB0byBzYW1wbGUgdGhlIGN1cnJlbnQgc3RhdGVtZW50LgorICovCitz dGF0aWMgdm9pZAordXBkYXRlX2N1cnJlbnRfcXVlcnlfc2FtcGxlZCh2b2lkKQoreworCWlm IChuZXN0aW5nX2xldmVsID09IDApCisJeworCQlpZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkK KwkJCWN1cnJlbnRfcXVlcnlfc2FtcGxlZCA9IHBnc3Nfc2FtcGxlX3JhdGUgIT0gMC4wICYm CisJCQkJKHBnc3Nfc2FtcGxlX3JhdGUgPT0gMS4wIHx8CisJCQkJcGdfcHJuZ19kb3VibGUo JnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSBwZ3NzX3NhbXBsZV9yYXRlKTsKKwkJZWxzZQor CQkJY3VycmVudF9xdWVyeV9zYW1wbGVkID0gZmFsc2U7CisJfQorfQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L3NxbC9zZWxlY3Quc3FsIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVj dC5zcWwKaW5kZXggZTBiZTU4ZDVlMi4uMjFmMDllZjk0YSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKKysrIGIvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvc3FsL3NlbGVjdC5zcWwKQEAgLTU5LDYgKzU5LDI3IEBAIERFQUxM T0NBVEUgcGdzc190ZXN0OwogU0VMRUNUIGNhbGxzLCByb3dzLCBxdWVyeSBGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKIFNFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OwogCistLQorLS0gc2Ft cGxlIHN0YXRlbWVudHMKKy0tCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRl ID0gMC4wOworU0VMRUNUIDEgQVMgImludCI7CitTRUxFQ1QgcXVlcnksIGNhbGxzIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworU0VUIHBn X3N0YXRfc3RhdGVtZW50cy5zYW1wbGVfcmF0ZSA9IDEuMDsKK1NFTEVDVCAxIEFTICJpbnQi OworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBC WSBxdWVyeSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQo KSBJUyBOT1QgTlVMTCBBUyB0OworCitzZXQgcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9y YXRlID0gMC4wOworc2VsZWN0IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBO VUxMIEFTIHQ7CitTRUxFQ1QgMSBccGFyc2Ugc3RtdAorXGJpbmRfbmFtZWQgc3RtdCBcZwor U0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBx dWVyeSBDT0xMQVRFICJDIjsKK3NldCBwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUg PSAxLjA7CitcYmluZF9uYW1lZCBzdG10IFxnCitTRUxFQ1QgcXVlcnksIGNhbGxzIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworc2VsZWN0 IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisKIC0tCiAt LSBxdWVyaWVzIHdpdGggbG9ja2luZyBjbGF1c2VzCiAtLQpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0 ZW1lbnRzLnNnbWwKaW5kZXggNTAxYjQ2OGU5YS4uOGFkZTRlM2NlZCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cGdzdGF0c3RhdGVtZW50cy5zZ21sCkBAIC05MzYsNiArOTM2LDI0IEBACiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPgorICAgICA8dmFybmFtZT5wZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGU8L3Zh cm5hbWU+ICg8dHlwZT5yZWFsPC90eXBlPikKKyAgICAgPGluZGV4dGVybT4KKyAgICAgIDxw cmltYXJ5Pjx2YXJuYW1lPnBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVfcmF0ZTwvdmFybmFt ZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgIDwvaW5kZXh0ZXJt PgorICAgIDwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICA8 dmFybmFtZT5wZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGU8L3Zhcm5hbWU+IGNhdXNl cyBwZ19zdGF0X3N0YXRlbWVudHMgdG8gb25seQorICAgICAgdHJhY2sgYSBmcmFjdGlvbiBv ZiB0aGUgc3RhdGVtZW50cyBpbiBlYWNoIHNlc3Npb24uIFRoZSBkZWZhdWx0IGlzIDEsCisg ICAgICBtZWFuaW5nIHRyYWNrIGFsbCB0aGUgcXVlcmllcy4gSW4gY2FzZSBvZiBuZXN0ZWQg c3RhdGVtZW50cywKKyAgICAgIGVpdGhlciBhbGwgd2lsbCBiZSB0cmFja2VkIG9yIG5vbmUu IE9ubHkgc3VwZXJ1c2VycyBjYW4gY2hhbmdlIHRoaXMgc2V0dGluZy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT4KICAgICAgPHZhcm5hbWU+cGdfc3RhdF9zdGF0ZW1lbnRzLnNh dmU8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKLS0gCjIuMzQuMQoK --------------4nroPaQjV5EecUfWJcTDApWH--