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 1uXbp1-00C2JL-DC for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Jul 2025 08:31:04 +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 1uXboz-00HG2N-ER for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Jul 2025 08:31:02 +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 1uXboy-00HG29-US for pgsql-hackers@lists.postgresql.org; Fri, 04 Jul 2025 08:31:01 +0000 Received: from forward501d.mail.yandex.net ([2a02:6b8:c41:1300:1:45:d181:d501]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uXbox-005f01-0T for pgsql-hackers@lists.postgresql.org; Fri, 04 Jul 2025 08:31:01 +0000 Received: from mail-nwsmtp-smtp-production-main-78.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-78.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:c54a:0:640:3e90:0]) by forward501d.mail.yandex.net (Yandex) with ESMTPS id B07D563618; Fri, 4 Jul 2025 11:30:55 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-78.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id rUYM7UPLp8c0-6dY7G6kE; Fri, 04 Jul 2025 11:30:54 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1751617854; bh=4ZNwiFeI+7Mrps7ipjTSSWYsO99jWD5IRfv8xapfPfo=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=kNIm47X5zhGZS7rUfVA2/k8z3T6A20CrGjStgoSv+e/6WSs8B1N/o8XFerNER1osE XFxn2NWKM4ZGsuT0zaP4N9i4hNuuy8KF/q/JOmhUf6jls7/xqa1IRtG/EZi/c7jFXz MgV0r5mQUQTs97Ouj48UkfuXuYuIevbM26/fSkHg= Authentication-Results: mail-nwsmtp-smtp-production-main-78.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------TFAbpduDRoucCN9689nRuiM9" Message-ID: <5c7034c4-c48b-428b-ab3f-67f14d9f542e@tantorlabs.com> Date: Fri, 4 Jul 2025 11:30:53 +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> <15e0422a-31ec-4e82-b0cf-0839f636b185@tantorlabs.com> Content-Language: en-US In-Reply-To: <15e0422a-31ec-4e82-b0cf-0839f636b185@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. --------------TFAbpduDRoucCN9689nRuiM9 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 01.05.2025 15:22, Ilia Evdokimov wrote: > 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? I attached rebased v10 patch on 5a6c39b. -- Best Regards, Ilia Evdokimov, Tantor Labs LLC. --------------TFAbpduDRoucCN9689nRuiM9 Content-Type: text/x-patch; charset=UTF-8; name="v10-0001-Expose-cache-hit-statistics-in-Memoize-node-EXPLAIN.patch" Content-Disposition: attachment; filename*0="v10-0001-Expose-cache-hit-statistics-in-Memoize-node-EXPLAIN"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA0OGNhY2M5YjU5ZWFhNzNjNjlhODkxZTBjZjY5NjdmMWEzZjNjMzk4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5ydT4KRGF0ZTogRnJpLCA0IEp1bCAyMDI1IDExOjI0OjU2ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2MTBdIEV4cG9zZSBjYWNoZSBoaXQgc3RhdGlzdGljcyBpbiBNZW1v aXplIG5vZGUgRVhQTEFJTgogb3V0cHV0LgoKVGhpcyBwYXRjaCBhZGRzIGFkZGl0aW9uYWwg aW5mb3JtYXRpb24gdG8gdGhlIE1lbW9pemUgbm9kZSdzIEVYUExBSU4gb3V0cHV0Ogplc3Rp bWF0ZWQgY2FjaGUgY2FwYWNpdHksIG51bWJlciBvZiBkaXN0aW5jdCBrZXlzLCB0b3RhbCBs b29rdXBzLCBhbmQKY2FjaGUgaGl0IHBlcmNlbnRhZ2UuCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jICAgICAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICB8ICA2ICsrKysrKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIHwgMTUgKysrKysrKysrKysr LS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgfCAxMiArKysr KysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICB8ICAz ICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgIHwgMTIgKysr KysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDdlMjc5MmVhZDcxLi41NjFl Yjg5NTdiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzYxNiw2ICszNjE2LDI2 IEBAIHNob3dfbWVtb2l6ZV9pbmZvKE1lbW9pemVTdGF0ZSAqbXN0YXRlLCBMaXN0ICphbmNl c3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJRXhwbGFpblByb3BlcnR5VGV4dCgiQ2FjaGUg S2V5Iiwga2V5c3RyLmRhdGEsIGVzKTsKIAlFeHBsYWluUHJvcGVydHlUZXh0KCJDYWNoZSBN b2RlIiwgbXN0YXRlLT5iaW5hcnlfbW9kZSA/ICJiaW5hcnkiIDogImxvZ2ljYWwiLCBlcyk7 CiAKKwlpZiAoZXMtPmNvc3RzKQorCXsKKwkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9G T1JNQVRfVEVYVCkKKwkJeworCQkgCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJIAlhcHBl bmRTdHJpbmdJbmZvKGVzLT5zdHIsICJFc3RpbWF0ZXM6IGNhcGFjaXR5PSV1IGRpc3RpbmN0 IGtleXM9JS4wZiBsb29rdXBzPSUuMGYgaGl0IHBlcmNlbnQ9JS4yZiUlXG4iLAorCQkgCQkJ CQkoKE1lbW9pemUgKikgcGxhbiktPmVzdF9lbnRyaWVzLAorCQkgCQkJCQkoKE1lbW9pemUg KikgcGxhbiktPmVzdF91bmlxdWVfa2V5cywKKwkJIAkJCQkJKChNZW1vaXplICopIHBsYW4p LT5lc3RfY2FsbHMsCisJCSAJCQkJCSgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X2hpdF9yYXRp byAqIDEwMC4wKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eVVJbnRl Z2VyKCJFc3RpbWF0ZWQgQ2FwYWNpdHkiLCBOVUxMLCAoKE1lbW9pemUgKikgcGxhbiktPmVz dF9lbnRyaWVzLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiRXN0aW1hdGVkIERp c3RpbmN0IExvb2t1cCBLZXlzIiwgTlVMTCwgKChNZW1vaXplICopIHBsYW4pLT5lc3RfdW5p cXVlX2tleXMsIDAsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJFc3RpbWF0ZWQg TG9va3VwcyIsIE5VTEwsICgoTWVtb2l6ZSAqKSBwbGFuKS0+ZXN0X2NhbGxzLCAwLCBlcyk7 CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiRXN0aW1hdGVkIEhpdCBQZXJjZW50IiwgTlVM TCwgKChNZW1vaXplICopIHBsYW4pLT5lc3RfaGl0X3JhdGlvICogMTAwLjAsIDIsIGVzKTsK KwkJfQorCX0KKwogCXBmcmVlKGtleXN0ci5kYXRhKTsKIAogCWlmICghZXMtPmFuYWx5emUp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwppbmRleCAzZDQ0ODE1ZWQ1 YS4uZDVmMmNjMTU4MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUu YwpAQCAtMjYwNCw2ICsyNjA0LDkgQEAgY29zdF9tZW1vaXplX3Jlc2NhbihQbGFubmVySW5m byAqcm9vdCwgTWVtb2l6ZVBhdGggKm1wYXRoLAogCW1wYXRoLT5lc3RfZW50cmllcyA9IE1p bihNaW4obmRpc3RpbmN0LCBlc3RfY2FjaGVfZW50cmllcyksCiAJCQkJCQkJIFBHX1VJTlQz Ml9NQVgpOwogCisJLyogUmVtZW1iZXIgbmRpc3RpbmN0IGZvciBhIHBvdGVudGlhbCBFWFBM QUlOIGxhdGVyICovCisJbXBhdGgtPmVzdF91bmlxdWVfa2V5cyA9IG5kaXN0aW5jdDsKKwog CS8qCiAJICogV2hlbiB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IHBhcmFtZXRlciB2YWx1ZXMg aXMgYWJvdmUgdGhlIGFtb3VudCB3ZSBjYW4KIAkgKiBzdG9yZSBpbiB0aGUgY2FjaGUsIHRo ZW4gd2UnbGwgaGF2ZSB0byBldmljdCBzb21lIGVudHJpZXMgZnJvbSB0aGUKQEAgLTI2MjEs NiArMjYyNCw5IEBAIGNvc3RfbWVtb2l6ZV9yZXNjYW4oUGxhbm5lckluZm8gKnJvb3QsIE1l bW9pemVQYXRoICptcGF0aCwKIAloaXRfcmF0aW8gPSAoKGNhbGxzIC0gbmRpc3RpbmN0KSAv IGNhbGxzKSAqCiAJCShlc3RfY2FjaGVfZW50cmllcyAvIE1heChuZGlzdGluY3QsIGVzdF9j YWNoZV9lbnRyaWVzKSk7CiAKKwkvKiBSZW1lbWJlciBjYWNoZSBoaXQgcmF0aW8gZm9yIGEg cG90ZW50aWFsIEVYUExBSU4gbGF0ZXIgKi8KKwltcGF0aC0+ZXN0X2hpdF9yYXRpbyA9IGhp dF9yYXRpbzsKKwogCUFzc2VydChoaXRfcmF0aW8gPj0gMCAmJiBoaXRfcmF0aW8gPD0gMS4w KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5k ZXggMGI2MWFlZjk2MmMuLjRmMjhhMmQ5MDZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0yODQsNyArMjg0LDkgQEAgc3RhdGljIE1hdGVyaWFs ICptYWtlX21hdGVyaWFsKFBsYW4gKmxlZnR0cmVlKTsKIHN0YXRpYyBNZW1vaXplICptYWtl X21lbW9pemUoUGxhbiAqbGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9ycywKIAkJCQkJCQkg T2lkICpjb2xsYXRpb25zLCBMaXN0ICpwYXJhbV9leHBycywKIAkJCQkJCQkgYm9vbCBzaW5n bGVyb3csIGJvb2wgYmluYXJ5X21vZGUsCi0JCQkJCQkJIHVpbnQzMiBlc3RfZW50cmllcywg Qml0bWFwc2V0ICprZXlwYXJhbWlkcyk7CisJCQkJCQkJdWludDMyIGVzdF9lbnRyaWVzLCBC aXRtYXBzZXQgKmtleXBhcmFtaWRzLAorCQkJCQkJCWRvdWJsZSBlc3RfdW5pcXVlX2tleXMs IGRvdWJsZSBlc3RfaGl0X3JhdGlvLAorCQkJCQkJCWRvdWJsZSBlc3RfY2FsbHMpOwogc3Rh dGljIFdpbmRvd0FnZyAqbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVz ZSAqd2MsCiAJCQkJCQkJCSBpbnQgcGFydE51bUNvbHMsIEF0dHJOdW1iZXIgKnBhcnRDb2xJ ZHgsIE9pZCAqcGFydE9wZXJhdG9ycywgT2lkICpwYXJ0Q29sbGF0aW9ucywKIAkJCQkJCQkJ IGludCBvcmROdW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9pZCAqb3JkT3BlcmF0 b3JzLCBPaWQgKm9yZENvbGxhdGlvbnMsCkBAIC0xNzAzLDcgKzE3MDUsOSBAQCBjcmVhdGVf bWVtb2l6ZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZW1vaXplUGF0aCAqYmVzdF9wYXRo LCBpbnQgZmxhZ3MpCiAKIAlwbGFuID0gbWFrZV9tZW1vaXplKHN1YnBsYW4sIG9wZXJhdG9y cywgY29sbGF0aW9ucywgcGFyYW1fZXhwcnMsCiAJCQkJCQliZXN0X3BhdGgtPnNpbmdsZXJv dywgYmVzdF9wYXRoLT5iaW5hcnlfbW9kZSwKLQkJCQkJCWJlc3RfcGF0aC0+ZXN0X2VudHJp ZXMsIGtleXBhcmFtaWRzKTsKKwkJCQkJCWJlc3RfcGF0aC0+ZXN0X2VudHJpZXMsIGtleXBh cmFtaWRzLAorCQkJCQkJYmVzdF9wYXRoLT5lc3RfdW5pcXVlX2tleXMsIGJlc3RfcGF0aC0+ ZXN0X2hpdF9yYXRpbywKKwkJCQkJCWJlc3RfcGF0aC0+Y2FsbHMpOwogCiAJY29weV9nZW5l cmljX3BhdGhfaW5mbygmcGxhbi0+cGxhbiwgKFBhdGggKikgYmVzdF9wYXRoKTsKIApAQCAt NjY5OSw3ICs2NzAzLDkgQEAgbWF0ZXJpYWxpemVfZmluaXNoZWRfcGxhbihQbGFuICpzdWJw bGFuKQogc3RhdGljIE1lbW9pemUgKgogbWFrZV9tZW1vaXplKFBsYW4gKmxlZnR0cmVlLCBP aWQgKmhhc2hvcGVyYXRvcnMsIE9pZCAqY29sbGF0aW9ucywKIAkJCSBMaXN0ICpwYXJhbV9l eHBycywgYm9vbCBzaW5nbGVyb3csIGJvb2wgYmluYXJ5X21vZGUsCi0JCQkgdWludDMyIGVz dF9lbnRyaWVzLCBCaXRtYXBzZXQgKmtleXBhcmFtaWRzKQorCQkJdWludDMyIGVzdF9lbnRy aWVzLCBCaXRtYXBzZXQgKmtleXBhcmFtaWRzLAorCQkJZG91YmxlIGVzdF91bmlxdWVfa2V5 cywgZG91YmxlIGVzdF9oaXRfcmF0aW8sCisJCQlkb3VibGUgZXN0X2NhbGxzKQogewogCU1l bW9pemUgICAgKm5vZGUgPSBtYWtlTm9kZShNZW1vaXplKTsKIAlQbGFuCSAgICpwbGFuID0g Jm5vZGUtPnBsYW47CkBAIC02NzE3LDYgKzY3MjMsOSBAQCBtYWtlX21lbW9pemUoUGxhbiAq bGVmdHRyZWUsIE9pZCAqaGFzaG9wZXJhdG9ycywgT2lkICpjb2xsYXRpb25zLAogCW5vZGUt PmJpbmFyeV9tb2RlID0gYmluYXJ5X21vZGU7CiAJbm9kZS0+ZXN0X2VudHJpZXMgPSBlc3Rf ZW50cmllczsKIAlub2RlLT5rZXlwYXJhbWlkcyA9IGtleXBhcmFtaWRzOworCW5vZGUtPmVz dF91bmlxdWVfa2V5cyA9IGVzdF91bmlxdWVfa2V5czsKKwlub2RlLT5lc3RfaGl0X3JhdGlv ID0gZXN0X2hpdF9yYXRpbzsKKwlub2RlLT5lc3RfY2FsbHMgPSBlc3RfY2FsbHM7CiAKIAly ZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmlu ZGV4IGUwMTkyZDRhNDkxLi5hNjhhMzJjODljZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wYXRobm9kZS5jCkBAIC0xNzAxLDYgKzE3MDEsMTggQEAgY3JlYXRlX21lbW9pemVf cGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBQYXRoICpzdWJwYXRo LAogCUFzc2VydChlbmFibGVfbWVtb2l6ZSk7CiAJcGF0aG5vZGUtPnBhdGguZGlzYWJsZWRf bm9kZXMgPSBzdWJwYXRoLT5kaXNhYmxlZF9ub2RlczsKIAorCS8qCisJICogRXN0aW1hdGVk IG51bWJlciBvZiBkaXN0aW5jdCBtZW1vaXphdGlvbiBrZXlzLAorCSAqIGNvbXB1dGVkIHVz aW5nIGVzdGltYXRlX251bV9ncm91cHMoKQorCSAqLworCXBhdGhub2RlLT5lc3RfdW5pcXVl X2tleXMgPSAwOworCisJLyoKKwkgKiBUaGUgZXN0aW1hdGVkIGNhY2hlIGhpdCByYXRpbyB3 aWxsIGNhbGN1bGF0ZWQgbGF0ZXIKKwkgKiBieSBjb3N0X21lbW9pemVfcmVzY2FuKCkuCisJ ICovCisJcGF0aG5vZGUtPmVzdF9oaXRfcmF0aW8gPSAwOworCiAJLyoKIAkgKiBBZGQgYSBz bWFsbCBhZGRpdGlvbmFsIGNoYXJnZSBmb3IgY2FjaGluZyB0aGUgZmlyc3QgZW50cnkuICBB bGwgdGhlCiAJICogaGFyZGVyIGNhbGN1bGF0aW9ucyBmb3IgcmVzY2FucyBhcmUgcGVyZm9y bWVkIGluIGNvc3RfbWVtb2l6ZV9yZXNjYW4oKS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKaW5k ZXggNjU2Nzc1OTU5NWQuLjViYjc0NTFlMTYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApA QCAtMjEzNSw2ICsyMTM1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVtb2l6ZVBhdGgKIAl1aW50 MzIJCWVzdF9lbnRyaWVzOwkvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0aGF0 IHRoZQogCQkJCQkJCQkgKiBwbGFubmVyIGV4cGVjdHMgd2lsbCBmaXQgaW4gdGhlIGNhY2hl LCBvciAwCiAJCQkJCQkJCSAqIGlmIHVua25vd24gKi8KKwlkb3VibGUJCWVzdF91bmlxdWVf a2V5czsJLyogRXN0aW1hdGVkIG51bWJlciBvZiBkaXN0aW5jdCBtZW1vaXphdGlvbiBrZXlz LAorCQkJCQkJCQkgKiB1c2VkIGZvciBjYWNoZSBzaXplIGV2YWx1YXRpb24uIEtlcHQgZm9y IEVYUExBSU4gKi8KKwlkb3VibGUJCWVzdF9oaXRfcmF0aW87CS8qIEVzdGltYXRlZCBjYWNo ZSBoaXQgcmF0aW8uIEtlcHQgZm9yIEVYUExBSU4gKi8KIH0gTWVtb2l6ZVBhdGg7CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDRmNTllMzBkNjJkLi41OThjMGQ1ZWIxZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTEwNTYsNiArMTA1NiwxOCBAQCB0eXBlZGVm IHN0cnVjdCBNZW1vaXplCiAKIAkvKiBwYXJhbWlkcyBmcm9tIHBhcmFtX2V4cHJzICovCiAJ Qml0bWFwc2V0ICAqa2V5cGFyYW1pZHM7CisKKwkvKgorCSAqIEVzdGltYXRlZCBudW1iZXIg b2YgZGlzdGluY3QgbWVtb2l6YXRpb24ga2V5cywKKwkgKiB1c2VkIGZvciBjYWNoZSBzaXpl IGV2YWx1YXRpb24uIEtlcHQgZm9yIEVYUExBSU4KKwkgKi8KKwlkb3VibGUJCWVzdF91bmlx dWVfa2V5czsKKworCS8qIEVzdGltYXRlZCBjYWNoZSBoaXQgcmF0aW8uIEtlcHQgZm9yIEVY UExBSU4gKi8KKwlkb3VibGUJCWVzdF9oaXRfcmF0aW87CisKKwkvKiBFc3RpbWF0ZWQgbnVt YmVyIG9mIHJlc2NhbnMuIEtlcHQgZm9yIEVYUExBSU4gKi8KKwlkb3VibGUJCWVzdF9jYWxs czsKIH0gTWVtb2l6ZTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4zNC4xCgo= --------------TFAbpduDRoucCN9689nRuiM9--