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 1uASwH-00Fgk1-CB for pgsql-hackers@arkaria.postgresql.org; Thu, 01 May 2025 12:22:54 +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 1uASwE-002ZyP-MT for pgsql-hackers@arkaria.postgresql.org; Thu, 01 May 2025 12:22:51 +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 1uASwE-002ZyH-3D for pgsql-hackers@lists.postgresql.org; Thu, 01 May 2025 12:22:51 +0000 Received: from forward500d.mail.yandex.net ([2a02:6b8:c41:1300:1:45:d181:d500]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uASwA-000WIV-1b for pgsql-hackers@lists.postgresql.org; Thu, 01 May 2025 12:22:50 +0000 Received: from mail-nwsmtp-smtp-production-main-88.iva.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-88.iva.yp-c.yandex.net [IPv6:2a02:6b8:c0c:2e20:0:640:2132:0]) by forward500d.mail.yandex.net (Yandex) with ESMTPS id C312A60FF8; Thu, 1 May 2025 15:22:42 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-88.iva.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id dMWm9CYLgGk0-Y1vWyUnW; Thu, 01 May 2025 15:22:42 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1746102162; bh=6vda8FE/jKnkjsPfMl8fyT5VOs7l9Mh6ay6AsZpPnrY=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=1AgYleHSzNCXDcrmCLWd0N8emmmhsRQPMzKYLMjOI1GNJt6+n24WNQv8YO1L0F16W OeVx4S+ejDJB5UnDu8bLBvMclgBXz7jdz5GK62Ai+NqB6V9ed+4H17mWC1SW0ffPaw 6RlP4mQW2Tq/C0x0nJK8hOU94Eieg0ViI5mlolWI= Authentication-Results: mail-nwsmtp-smtp-production-main-88.iva.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------6afVvooRLciI8IWc7P78sbYd" Message-ID: <15e0422a-31ec-4e82-b0cf-0839f636b185@tantorlabs.com> Date: Thu, 1 May 2025 15:22:34 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add estimated hit ratio to Memoize in EXPLAIN to explain cost adjustment From: Ilia Evdokimov To: David Rowley Cc: Robert Haas , Tom Lane , Lukas Fittl , Daniel Gustafsson , PostgreSQL Hackers , Nikolay Samokhvalov , Andrei Lepikhov References: <3ba16aa7-3cb2-4289-b773-522ae2f03a77@tantorlabs.com> <81ef0f5a-b6a1-4417-ae3a-2bae9b8d419e@gmail.com> <67b5c84a-dedd-4103-af7e-0117046102fe@tantorlabs.com> <580fe72c-85be-45a8-9e00-6b5417690557@tantorlabs.com> <3ea66a50-e4b0-4f20-ae0c-4d9cbaf81cfb@tantorlabs.com> <0e8dc4fa-3655-4e9f-9424-9b32a15e6acd@tantorlabs.com> <7e995158-157e-4ec6-a7c8-266c1a6f7b43@tantorlabs.com> <06840539-e321-4930-9f89-cfc783c5b80a@tantorlabs.com> Content-Language: en-US In-Reply-To: <06840539-e321-4930-9f89-cfc783c5b80a@tantorlabs.com> 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. --------------6afVvooRLciI8IWc7P78sbYd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 27.04.2025 22:58, Ilia Evdokimov wrote: > Therefore, I think it is better to report percentages directly. Since > non-text EXPLAIN formats do not display units, I propose to rename the > field to "hit_percent" in all formats, including the text format. This > way, the meaning of the value remains clear without needing additional > context. What do you think about this approach? I attached updated v9 patch with the suggested changes. The updated line in the EXPLAIN looks like this: Text format:     Estimates: capacity=1 distinct keys=1 lookups=2 hit percent=50.00% Non-text format:     Estimated Capacity: 1     Estimated Distinct Lookup Keys: 1     Estimated Lookups: 2     Estimated Hit Percent: 50.00 Any suggestions? -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------6afVvooRLciI8IWc7P78sbYd Content-Type: text/x-patch; charset=UTF-8; name="v9-0001-Expose-cache-hit-statistics-in-Memoize-node-EXPLAIN.patch" Content-Disposition: attachment; filename*0="v9-0001-Expose-cache-hit-statistics-in-Memoize-node-EXPLAIN."; filename*1="patch" Content-Transfer-Encoding: base64 RnJvbSBlZmYwY2I0MjBjOTIyMzQzYWY5ZTA5ZTU4Y2VjN2I1YmUxOWMzNWU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdmRva2ltb3YgSWxpYSA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IFRodSwgMSBNYXkgMjAyNSAxNToyMDowNyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjldIEV4cG9zZSBjYWNoZSBoaXQgc3RhdGlzdGljcyBpbiBNZW1v aXplIG5vZGUgRVhQTEFJTgogb3V0cHV0LgoKVGhpcyBwYXRjaCBhZGRzIGFkZGl0aW9uYWwg aW5mb3JtYXRpb24gdG8gdGhlIE1lbW9pemUgbm9kZSdzIEVYUExBSU4gb3V0cHV0Ogplc3Rp bWF0ZWQgY2FjaGUgY2FwYWNpdHksIG51bWJlciBvZiBkaXN0aW5jdCBrZXlzLCB0b3RhbCBs b29rdXBzLCBhbmQKY2FjaGUgaGl0IHBlcmNlbnRhZ2UuCgpSZXZpZXdlZC1ieTogRGF2aWQg Um93bGV5IDxkZ3Jvd2xleW1sQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFz IDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZWkgTGVwaWtob3Yg PGxlcGlob3ZAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogVG9tIExhbmUgPHRnbEBzc3MucGdo LnBhLnVzPgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICB8 IDIwICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jICAgfCAgNiArKysrKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2Ny ZWF0ZXBsYW4uYyB8IDE1ICsrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYyAgIHwgMTIgKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaCAgICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oICAgICAgICAgICB8IDEyICsrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2Vk LCA2NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCA3ODZlZTg2NWYxNC4uM2E1YjQzNmI1NjEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHBsYWluLmMKQEAgLTM2MjgsNiArMzYyOCwyNiBAQCBzaG93X21lbW9pemVfaW5mbyhNZW1v aXplU3RhdGUgKm1zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLCBFeHBsYWluU3RhdGUgKmVzKQog CUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkNhY2hlIEtleSIsIGtleXN0ci5kYXRhLCBlcyk7CiAJ RXhwbGFpblByb3BlcnR5VGV4dCgiQ2FjaGUgTW9kZSIsIG1zdGF0ZS0+YmluYXJ5X21vZGUg PyAiYmluYXJ5IiA6ICJsb2dpY2FsIiwgZXMpOwogCisJaWYgKGVzLT5jb3N0cykKKwl7CisJ CWlmIChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCisJCXsKKwkJIAlFeHBs YWluSW5kZW50VGV4dChlcyk7CisJCSAJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiRXN0 aW1hdGVzOiBjYXBhY2l0eT0ldSBkaXN0aW5jdCBrZXlzPSUuMGYgbG9va3Vwcz0lLjBmIGhp dCBwZXJjZW50PSUuMmYlJVxuIiwKKwkJIAkJCQkJKChNZW1vaXplICopIHBsYW4pLT5lc3Rf ZW50cmllcywKKwkJIAkJCQkJKChNZW1vaXplICopIHBsYW4pLT5lc3RfdW5pcXVlX2tleXMs CisJCSAJCQkJCSgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X2NhbGxzLAorCQkgCQkJCQkoKE1l bW9pemUgKikgcGxhbiktPmVzdF9oaXRfcmF0aW8gKiAxMDAuMCk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlFeHBsYWluUHJvcGVydHlVSW50ZWdlcigiRXN0aW1hdGVkIENhcGFjaXR5Iiwg TlVMTCwgKChNZW1vaXplICopIHBsYW4pLT5lc3RfZW50cmllcywgZXMpOworCQkJRXhwbGFp blByb3BlcnR5RmxvYXQoIkVzdGltYXRlZCBEaXN0aW5jdCBMb29rdXAgS2V5cyIsIE5VTEws ICgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X3VuaXF1ZV9rZXlzLCAwLCBlcyk7CisJCQlFeHBs YWluUHJvcGVydHlGbG9hdCgiRXN0aW1hdGVkIExvb2t1cHMiLCBOVUxMLCAoKE1lbW9pemUg KikgcGxhbiktPmVzdF9jYWxscywgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5RmxvYXQo IkVzdGltYXRlZCBIaXQgUGVyY2VudCIsIE5VTEwsICgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0 X2hpdF9yYXRpbyAqIDEwMC4wLCAyLCBlcyk7CisJCX0KKwl9CisKIAlwZnJlZShrZXlzdHIu ZGF0YSk7CiAKIAlpZiAoIWVzLT5hbmFseXplKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2Nvc3RzaXplLmMKaW5kZXggNjBiMGZjZmI2YmUuLjIyNmE3ODYxNTQzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTI2MDQsNiArMjYwNCw5IEBAIGNv c3RfbWVtb2l6ZV9yZXNjYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lbW9pemVQYXRoICptcGF0 aCwKIAltcGF0aC0+ZXN0X2VudHJpZXMgPSBNaW4oTWluKG5kaXN0aW5jdCwgZXN0X2NhY2hl X2VudHJpZXMpLAogCQkJCQkJCSBQR19VSU5UMzJfTUFYKTsKIAorCS8qIFJlbWVtYmVyIG5k aXN0aW5jdCBmb3IgYSBwb3RlbnRpYWwgRVhQTEFJTiBsYXRlciAqLworCW1wYXRoLT5lc3Rf dW5pcXVlX2tleXMgPSBuZGlzdGluY3Q7CisKIAkvKgogCSAqIFdoZW4gdGhlIG51bWJlciBv ZiBkaXN0aW5jdCBwYXJhbWV0ZXIgdmFsdWVzIGlzIGFib3ZlIHRoZSBhbW91bnQgd2UgY2Fu CiAJICogc3RvcmUgaW4gdGhlIGNhY2hlLCB0aGVuIHdlJ2xsIGhhdmUgdG8gZXZpY3Qgc29t ZSBlbnRyaWVzIGZyb20gdGhlCkBAIC0yNjIxLDYgKzI2MjQsOSBAQCBjb3N0X21lbW9pemVf cmVzY2FuKFBsYW5uZXJJbmZvICpyb290LCBNZW1vaXplUGF0aCAqbXBhdGgsCiAJaGl0X3Jh dGlvID0gKChjYWxscyAtIG5kaXN0aW5jdCkgLyBjYWxscykgKgogCQkoZXN0X2NhY2hlX2Vu dHJpZXMgLyBNYXgobmRpc3RpbmN0LCBlc3RfY2FjaGVfZW50cmllcykpOwogCisJLyogUmVt ZW1iZXIgY2FjaGUgaGl0IHJhdGlvIGZvciBhIHBvdGVudGlhbCBFWFBMQUlOIGxhdGVyICov CisJbXBhdGgtPmVzdF9oaXRfcmF0aW8gPSBoaXRfcmF0aW87CisKIAlBc3NlcnQoaGl0X3Jh dGlvID49IDAgJiYgaGl0X3JhdGlvIDw9IDEuMCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGE4ZjIyYThjMTU0Li5iM2QzZmFjMTg3 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjg0 LDcgKzI4NCw5IEBAIHN0YXRpYyBNYXRlcmlhbCAqbWFrZV9tYXRlcmlhbChQbGFuICpsZWZ0 dHJlZSk7CiBzdGF0aWMgTWVtb2l6ZSAqbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBP aWQgKmhhc2hvcGVyYXRvcnMsCiAJCQkJCQkJIE9pZCAqY29sbGF0aW9ucywgTGlzdCAqcGFy YW1fZXhwcnMsCiAJCQkJCQkJIGJvb2wgc2luZ2xlcm93LCBib29sIGJpbmFyeV9tb2RlLAot CQkJCQkJCSB1aW50MzIgZXN0X2VudHJpZXMsIEJpdG1hcHNldCAqa2V5cGFyYW1pZHMpOwor CQkJCQkJCXVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICprZXlwYXJhbWlkcywKKwkJ CQkJCQlkb3VibGUgZXN0X3VuaXF1ZV9rZXlzLCBkb3VibGUgZXN0X2hpdF9yYXRpbywKKwkJ CQkJCQlkb3VibGUgZXN0X2NhbGxzKTsKIHN0YXRpYyBXaW5kb3dBZ2cgKm1ha2Vfd2luZG93 YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJCQkJCQkgaW50IHBhcnRO dW1Db2xzLCBBdHRyTnVtYmVyICpwYXJ0Q29sSWR4LCBPaWQgKnBhcnRPcGVyYXRvcnMsIE9p ZCAqcGFydENvbGxhdGlvbnMsCiAJCQkJCQkJCSBpbnQgb3JkTnVtQ29scywgQXR0ck51bWJl ciAqb3JkQ29sSWR4LCBPaWQgKm9yZE9wZXJhdG9ycywgT2lkICpvcmRDb2xsYXRpb25zLApA QCAtMTcwMyw3ICsxNzA1LDkgQEAgY3JlYXRlX21lbW9pemVfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVtb2l6ZVBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCiAJcGxhbiA9IG1h a2VfbWVtb2l6ZShzdWJwbGFuLCBvcGVyYXRvcnMsIGNvbGxhdGlvbnMsIHBhcmFtX2V4cHJz LAogCQkJCQkJYmVzdF9wYXRoLT5zaW5nbGVyb3csIGJlc3RfcGF0aC0+YmluYXJ5X21vZGUs Ci0JCQkJCQliZXN0X3BhdGgtPmVzdF9lbnRyaWVzLCBrZXlwYXJhbWlkcyk7CisJCQkJCQli ZXN0X3BhdGgtPmVzdF9lbnRyaWVzLCBrZXlwYXJhbWlkcywKKwkJCQkJCWJlc3RfcGF0aC0+ ZXN0X3VuaXF1ZV9rZXlzLCBiZXN0X3BhdGgtPmVzdF9oaXRfcmF0aW8sCisJCQkJCQliZXN0 X3BhdGgtPmNhbGxzKTsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4s IChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTY2MzYsNyArNjY0MCw5IEBAIG1hdGVyaWFs aXplX2ZpbmlzaGVkX3BsYW4oUGxhbiAqc3VicGxhbikKIHN0YXRpYyBNZW1vaXplICoKIG1h a2VfbWVtb2l6ZShQbGFuICpsZWZ0dHJlZSwgT2lkICpoYXNob3BlcmF0b3JzLCBPaWQgKmNv bGxhdGlvbnMsCiAJCQkgTGlzdCAqcGFyYW1fZXhwcnMsIGJvb2wgc2luZ2xlcm93LCBib29s IGJpbmFyeV9tb2RlLAotCQkJIHVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICprZXlw YXJhbWlkcykKKwkJCXVpbnQzMiBlc3RfZW50cmllcywgQml0bWFwc2V0ICprZXlwYXJhbWlk cywKKwkJCWRvdWJsZSBlc3RfdW5pcXVlX2tleXMsIGRvdWJsZSBlc3RfaGl0X3JhdGlvLAor CQkJZG91YmxlIGVzdF9jYWxscykKIHsKIAlNZW1vaXplICAgICpub2RlID0gbWFrZU5vZGUo TWVtb2l6ZSk7CiAJUGxhbgkgICAqcGxhbiA9ICZub2RlLT5wbGFuOwpAQCAtNjY1NCw2ICs2 NjYwLDkgQEAgbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBPaWQgKmhhc2hvcGVyYXRv cnMsIE9pZCAqY29sbGF0aW9ucywKIAlub2RlLT5iaW5hcnlfbW9kZSA9IGJpbmFyeV9tb2Rl OwogCW5vZGUtPmVzdF9lbnRyaWVzID0gZXN0X2VudHJpZXM7CiAJbm9kZS0+a2V5cGFyYW1p ZHMgPSBrZXlwYXJhbWlkczsKKwlub2RlLT5lc3RfdW5pcXVlX2tleXMgPSBlc3RfdW5pcXVl X2tleXM7CisJbm9kZS0+ZXN0X2hpdF9yYXRpbyA9IGVzdF9oaXRfcmF0aW87CisJbm9kZS0+ ZXN0X2NhbGxzID0gZXN0X2NhbGxzOwogCiAJcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA5M2U3M2NiNDRkYi4uN2UzNTQyMWY0 MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMTcwMSw2 ICsxNzAxLDE4IEBAIGNyZWF0ZV9tZW1vaXplX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwgUGF0aCAqc3VicGF0aCwKIAlBc3NlcnQoZW5hYmxlX21lbW9pemUp OwogCXBhdGhub2RlLT5wYXRoLmRpc2FibGVkX25vZGVzID0gc3VicGF0aC0+ZGlzYWJsZWRf bm9kZXM7CiAKKwkvKgorCSAqIEVzdGltYXRlZCBudW1iZXIgb2YgZGlzdGluY3QgbWVtb2l6 YXRpb24ga2V5cywKKwkgKiBjb21wdXRlZCB1c2luZyBlc3RpbWF0ZV9udW1fZ3JvdXBzKCkK KwkgKi8KKwlwYXRobm9kZS0+ZXN0X3VuaXF1ZV9rZXlzID0gMDsKKworCS8qCisJICogVGhl IGVzdGltYXRlZCBjYWNoZSBoaXQgcmF0aW8gd2lsbCBjYWxjdWxhdGVkIGxhdGVyCisJICog YnkgY29zdF9tZW1vaXplX3Jlc2NhbigpLgorCSAqLworCXBhdGhub2RlLT5lc3RfaGl0X3Jh dGlvID0gMDsKKwogCS8qCiAJICogQWRkIGEgc21hbGwgYWRkaXRpb25hbCBjaGFyZ2UgZm9y IGNhY2hpbmcgdGhlIGZpcnN0IGVudHJ5LiAgQWxsIHRoZQogCSAqIGhhcmRlciBjYWxjdWxh dGlvbnMgZm9yIHJlc2NhbnMgYXJlIHBlcmZvcm1lZCBpbiBjb3N0X21lbW9pemVfcmVzY2Fu KCkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDAxMWU1YTgxMWMzLi45MzhlNGM0M2E4 MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIxMzgsNiArMjEzOCw5IEBAIHR5cGVk ZWYgc3RydWN0IE1lbW9pemVQYXRoCiAJdWludDMyCQllc3RfZW50cmllczsJLyogVGhlIG1h eGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdGhhdCB0aGUKIAkJCQkJCQkJICogcGxhbm5lciBl eHBlY3RzIHdpbGwgZml0IGluIHRoZSBjYWNoZSwgb3IgMAogCQkJCQkJCQkgKiBpZiB1bmtu b3duICovCisJZG91YmxlCQllc3RfdW5pcXVlX2tleXM7CS8qIEVzdGltYXRlZCBudW1iZXIg b2YgZGlzdGluY3QgbWVtb2l6YXRpb24ga2V5cywKKwkJCQkJCQkJICogdXNlZCBmb3IgY2Fj aGUgc2l6ZSBldmFsdWF0aW9uLiBLZXB0IGZvciBFWFBMQUlOICovCisJZG91YmxlCQllc3Rf aGl0X3JhdGlvOwkvKiBFc3RpbWF0ZWQgY2FjaGUgaGl0IHJhdGlvLiBLZXB0IGZvciBFWFBM QUlOICovCiB9IE1lbW9pemVQYXRoOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRl eCA2NThkNzYyMjVlNC4uMjZhNGM3OGFmZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBA IC0xMDYzLDYgKzEwNjMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZQogCiAJLyogcGFy YW1pZHMgZnJvbSBwYXJhbV9leHBycyAqLwogCUJpdG1hcHNldCAgKmtleXBhcmFtaWRzOwor CisJLyoKKwkgKiBFc3RpbWF0ZWQgbnVtYmVyIG9mIGRpc3RpbmN0IG1lbW9pemF0aW9uIGtl eXMsCisJICogdXNlZCBmb3IgY2FjaGUgc2l6ZSBldmFsdWF0aW9uLiBLZXB0IGZvciBFWFBM QUlOCisJICovCisJZG91YmxlCQllc3RfdW5pcXVlX2tleXM7CisKKwkvKiBFc3RpbWF0ZWQg Y2FjaGUgaGl0IHJhdGlvLiBLZXB0IGZvciBFWFBMQUlOICovCisJZG91YmxlCQllc3RfaGl0 X3JhdGlvOworCisJLyogRXN0aW1hdGVkIG51bWJlciBvZiByZXNjYW5zLiBLZXB0IGZvciBF WFBMQUlOICovCisJZG91YmxlCQllc3RfY2FsbHM7CiB9IE1lbW9pemU7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KLS0gCjIuMzQuMQoK --------------6afVvooRLciI8IWc7P78sbYd--