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 1tL0NI-00C3rr-M7 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Dec 2024 13:34: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 1tL0NG-004Xd7-79 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Dec 2024 13:34:03 +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 1tL0Lq-004T3i-Dg for pgsql-hackers@lists.postgresql.org; Tue, 10 Dec 2024 13:32:35 +0000 Received: from forward500d.mail.yandex.net ([178.154.239.208]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tL0Lo-00250P-0w for pgsql-hackers@postgresql.org; Tue, 10 Dec 2024 13:32:34 +0000 Received: from mail-nwsmtp-smtp-production-main-47.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-47.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:8f4f:0:640:c72e:0]) by forward500d.mail.yandex.net (Yandex) with ESMTPS id 68E17612A3 for ; Tue, 10 Dec 2024 16:32:31 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-47.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id RWmqvv2OoSw0-zzmvTwib; Tue, 10 Dec 2024 16:32:30 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1733837551; bh=eGni+vOJRKCCZNpm+pX+Y/4qwptvz0eX+odIqHQwBGw=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=Fj+L4Iks3cM212xgsiBAocct5cmRqW9X4M/LQF7yQQcMagRjnG5b4uST8YfnvOpjS UrLGYrikyLy9O7gjT2fwvF2vAR20tcm878eaeboyAsariVYjaqZp0F5VcoDAK9Q88k DnFMxecSQ6wPq8WLnQ0rUXuTMvliNubHeE8OGdes= Authentication-Results: mail-nwsmtp-smtp-production-main-47.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------VdUt05VOmLE80T0EkRLPK6L7" Message-ID: <93af9682-d7aa-49a9-842e-7599e8d36028@tantorlabs.com> Date: Tue, 10 Dec 2024 16:32:27 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Define STATS_MIN_ROWS for minimum rows of stats in ANALYZE From: Ilia Evdokimov To: pgsql-hackers References: <04cfac17-d7af-4efb-9fad-673c1d2db49d@tantorlabs.com> Content-Language: en-US In-Reply-To: <04cfac17-d7af-4efb-9fad-673c1d2db49d@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. --------------VdUt05VOmLE80T0EkRLPK6L7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 09.12.2024 16:10, Ilia Evdokimov wrote: > Hi hackers, > > The repeated use of the number 300 in the ANALYZE-related code creates > redundancy and relies on scattered, sometimes unclear, comments to > explain its purpose. This can make the code harder to understand, > especially for new contributors who might not immediately understand > its significance. To address this, I propose introducing a macro > STATS_MIN_ROWS to represent this value and consolidating its > explanation in a single place, making the code more consistent and > readable. > > -- > Best regards, > Ilia Evdokimov, > Tantor Labs LLC. Hi everyone, Currently, the value 300 is used as the basis for determining the number of rows sampled during ANALYZE, both for single-column and extended statistics. While this value has a well-established rationale for single-column statistics, its suitability for extended statistics remains uncertain, as no specific research has confirmed that this is an optimal choice for them. To better reflect this distinction, I propose introducing two macros: STATS_MIN_ROWS for single-column statistics and EXT_STATS_MIN_ROWS for extended statistics. This change separates the concerns of single-column and extended statistics sampling, making the code more explicit and easier to adapt if future research suggests a different approach for extended statistics. The values remain the same for now, but the introduction of distinct macros improves clarity and prepares the codebase for potential refinements. Does this seem like a reasonable approach to handling these differences? -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------VdUt05VOmLE80T0EkRLPK6L7 Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Define-macros-for-minimum-rows-of-stats.patch" Content-Disposition: attachment; filename="v2-0001-Define-macros-for-minimum-rows-of-stats.patch" Content-Transfer-Encoding: base64 RnJvbSAxNjQ1MzU2MTYwNDA0NDcyMDdjMzZlYTQ3YzUyYjIwNmY0ZDc3ZGNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5ydT4KRGF0ZTogVHVlLCAxMCBEZWMgMjAyNCAxNjoyNToyOSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjJdIERlZmluZSBtYWNyb3MgZm9yIG1pbmltdW0gcm93cyBvZiBz dGF0cyBpbiBBTkFMWVpFCgpUaGlzIGludHJvZHVjZXMgdHdvIG1hY3JvcywgU1RBVFNfTUlO X1JPV1MgYW5kIEVYVF9TVEFUU19NSU5fUk9XUywKdG8gcmVwcmVzZW50IHRoZSBkZWZhdWx0 IG1pbmltdW0gbnVtYmVyIG9mIHJvd3Mgc2FtcGxlZCBpbiBBTkFMWVpFLgpTVEFUU19NSU5f Uk9XUyBpcyB1c2VkIGZvciBzaW5nbGUtY29sdW1uIHN0YXRpc3RpY3MsCndoaWxlIEVYVF9T VEFUU19NSU5fUk9XUyBpcyBpbnRlbmRlZCBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcy4KQm90 aCBtYWNyb3MgcmVwbGFjZSB0aGUgaGFyZGNvZGVkIHZhbHVlIG9mIDMwMCwgaW1wcm92aW5n IGNsYXJpdHkuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAg ICAgICAgIHwgMzEgKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9leHRlbmRlZF9zdGF0cy5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gv dHNfdHlwYW5hbHl6ZS5jICAgICAgICAgICB8ICA0ICstLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JhbmdldHlwZXNfdHlwYW5hbHl6ZS5jIHwgIDcgKystLS0KIC4uLi9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmggICAgICB8IDExICsrKysrKysKIHNyYy9pbmNs dWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oICAgICAgICAgICB8IDIzICsrKysrKysrKysr KysrCiA2IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCA5YTU2ZGUyMjgyLi5lMzU4YjBkODI4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0xODk3LDQyICsxODk3LDI1IEBAIHN0 ZF90eXBhbmFseXplKFZhY0F0dHJTdGF0cyAqc3RhdHMpCiAJewogCQkvKiBTZWVtcyB0byBi ZSBhIHNjYWxhciBkYXRhdHlwZSAqLwogCQlzdGF0cy0+Y29tcHV0ZV9zdGF0cyA9IGNvbXB1 dGVfc2NhbGFyX3N0YXRzOwotCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JCSAqIFRoZSBm b2xsb3dpbmcgY2hvaWNlIG9mIG1pbnJvd3MgaXMgYmFzZWQgb24gdGhlIHBhcGVyCi0JCSAq ICJSYW5kb20gc2FtcGxpbmcgZm9yIGhpc3RvZ3JhbSBjb25zdHJ1Y3Rpb246IGhvdyBtdWNo IGlzIGVub3VnaD8iCi0JCSAqIGJ5IFN1cmFqaXQgQ2hhdWRodXJpLCBSYWplZXYgTW90d2Fu aSBhbmQgVml2ZWsgTmFyYXNheXlhLCBpbgotCQkgKiBQcm9jZWVkaW5ncyBvZiBBQ00gU0lH TU9EIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBNYW5hZ2VtZW50Ci0JCSAqIG9mIERh dGEsIDE5OTgsIFBhZ2VzIDQzNi00NDcuICBUaGVpciBDb3JvbGxhcnkgMSB0byBUaGVvcmVt IDUKLQkJICogc2F5cyB0aGF0IGZvciB0YWJsZSBzaXplIG4sIGhpc3RvZ3JhbSBzaXplIGss IG1heGltdW0gcmVsYXRpdmUKLQkJICogZXJyb3IgaW4gYmluIHNpemUgZiwgYW5kIGVycm9y IHByb2JhYmlsaXR5IGdhbW1hLCB0aGUgbWluaW11bQotCQkgKiByYW5kb20gc2FtcGxlIHNp emUgaXMKLQkJICoJCXIgPSA0ICogayAqIGxuKDIqbi9nYW1tYSkgLyBmXjIKLQkJICogVGFr aW5nIGYgPSAwLjUsIGdhbW1hID0gMC4wMSwgbiA9IDEwXjYgcm93cywgd2Ugb2J0YWluCi0J CSAqCQlyID0gMzA1LjgyICogawotCQkgKiBOb3RlIHRoYXQgYmVjYXVzZSBvZiB0aGUgbG9n IGZ1bmN0aW9uLCB0aGUgZGVwZW5kZW5jZSBvbiBuIGlzCi0JCSAqIHF1aXRlIHdlYWs7IGV2 ZW4gYXQgbiA9IDEwXjEyLCBhIDMwMCprIHNhbXBsZSBnaXZlcyA8PSAwLjY2Ci0JCSAqIGJp biBzaXplIGVycm9yIHdpdGggcHJvYmFiaWxpdHkgMC45OS4gIFNvIHRoZXJlJ3Mgbm8gcmVh bCBuZWVkIHRvCi0JCSAqIHNjYWxlIGZvciBuLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgYmVj YXVzZSB3ZSBkb24ndCBuZWNlc3NhcmlseQotCQkgKiBrbm93IGl0IGF0IHRoaXMgcG9pbnQu Ci0JCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkJICovCi0JCXN0YXRzLT5taW5yb3dzID0g MzAwICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CiAJfQogCWVsc2UgaWYgKE9pZElzVmFsaWQo ZXFvcHIpKQogCXsKIAkJLyogV2UgY2FuIHN0aWxsIHJlY29nbml6ZSBkaXN0aW5jdCB2YWx1 ZXMgKi8KIAkJc3RhdHMtPmNvbXB1dGVfc3RhdHMgPSBjb21wdXRlX2Rpc3RpbmN0X3N0YXRz OwotCQkvKiBNaWdodCBhcyB3ZWxsIHVzZSB0aGUgc2FtZSBtaW5yb3dzIGFzIGFib3ZlICov Ci0JCXN0YXRzLT5taW5yb3dzID0gMzAwICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CiAJfQog CWVsc2UKIAl7CiAJCS8qIENhbid0IGRvIG11Y2ggYnV0IHRoZSB0cml2aWFsIHN0dWZmICov CiAJCXN0YXRzLT5jb21wdXRlX3N0YXRzID0gY29tcHV0ZV90cml2aWFsX3N0YXRzOwotCQkv KiBNaWdodCBhcyB3ZWxsIHVzZSB0aGUgc2FtZSBtaW5yb3dzIGFzIGFib3ZlICovCi0JCXN0 YXRzLT5taW5yb3dzID0gMzAwICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CiAJfQogCisJLyoK KwkgKiBGb3IgdGhlIHNjYWxhciB0eXBlcywgU1RBVFNfTUlOX1JPV1MgaXMgZGVyaXZlZCBm cm9tIHJlc2VhcmNoIG9uCisJICogb3B0aW1hbCBzYW1wbGUgc2l6ZXMgZm9yIGhpc3RvZ3Jh bXMuIEZvciBvdGhlciBjYXNlcywKKwkgKiB3ZSBhc3N1bWUgdGhlIHNhbWUgdmFsdWUuCisJ ICovCisJc3RhdHMtPm1pbnJvd3MgPSAoU1RBVFNfTUlOX1JPV1MgKiBzdGF0cy0+YXR0c3Rh dHRhcmdldCk7CisKIAlyZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9leHRlbmRlZF9zdGF0cy5jCmluZGV4IDk5ZmRmMjA4ZGIuLjhjZDAyNGI1Y2UgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHMuYworKysgYi9z cmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKQEAgLTMyMCw3ICszMjAs NyBAQCBDb21wdXRlRXh0U3RhdGlzdGljc1Jvd3MoUmVsYXRpb24gb25lcmVsLAogCU1lbW9y eUNvbnRleHREZWxldGUoY3h0KTsKIAogCS8qIGNvbXB1dGUgc2FtcGxlIHNpemUgYmFzZWQg b24gdGhlIHN0YXRpc3RpY3MgdGFyZ2V0ICovCi0JcmV0dXJuICgzMDAgKiByZXN1bHQpOwor CXJldHVybiAoRVhUX1NUQVRTX01JTl9ST1dTICogcmVzdWx0KTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tl bmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggY2NhZmU0MjcyOS4uYmVmZDkwYzlk NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKKysr IGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKQEAgLTE3LDYgKzE3LDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgorI2luY2x1ZGUgInN0 YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInRzZWFyY2gvdHNfdHlwZS5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCkBAIC02 NCw4ICs2NSw3IEBAIHRzX3R5cGFuYWx5emUoUEdfRlVOQ1RJT05fQVJHUykKIAkJc3RhdHMt PmF0dHN0YXR0YXJnZXQgPSBkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0OwogCiAJc3RhdHMt PmNvbXB1dGVfc3RhdHMgPSBjb21wdXRlX3RzdmVjdG9yX3N0YXRzOwotCS8qIHNlZSBjb21t ZW50IGFib3V0IHRoZSBjaG9pY2Ugb2YgbWlucm93cyBpbiBjb21tYW5kcy9hbmFseXplLmMg Ki8KLQlzdGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0OworCXN0 YXRzLT5taW5yb3dzID0gKFNUQVRTX01JTl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJnZXQp OwogCiAJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcmFuZ2V0eXBlc190eXBhbmFseXplLmMKaW5kZXggMzc3M2Y5ODExNS4uN2ZjYWM1 NjIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfdHlw YW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5cGFu YWx5emUuYwpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVy YXRvci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0YXRp c3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVk ZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpA QCAtNTYsOCArNTcsNyBAQCByYW5nZV90eXBhbmFseXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAK IAlzdGF0cy0+Y29tcHV0ZV9zdGF0cyA9IGNvbXB1dGVfcmFuZ2Vfc3RhdHM7CiAJc3RhdHMt PmV4dHJhX2RhdGEgPSB0eXBjYWNoZTsKLQkvKiBzYW1lIGFzIGluIHN0ZF90eXBhbmFseXpl ICovCi0Jc3RhdHMtPm1pbnJvd3MgPSAzMDAgKiBzdGF0cy0+YXR0c3RhdHRhcmdldDsKKwlz dGF0cy0+bWlucm93cyA9IChTVEFUU19NSU5fUk9XUyAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0 KTsKIAogCVBHX1JFVFVSTl9CT09MKHRydWUpOwogfQpAQCAtODIsOCArODIsNyBAQCBtdWx0 aXJhbmdlX3R5cGFuYWx5emUoUEdfRlVOQ1RJT05fQVJHUykKIAogCXN0YXRzLT5jb21wdXRl X3N0YXRzID0gY29tcHV0ZV9yYW5nZV9zdGF0czsKIAlzdGF0cy0+ZXh0cmFfZGF0YSA9IHR5 cGNhY2hlOwotCS8qIHNhbWUgYXMgaW4gc3RkX3R5cGFuYWx5emUgKi8KLQlzdGF0cy0+bWlu cm93cyA9IDMwMCAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0OworCXN0YXRzLT5taW5yb3dzID0g KFNUQVRTX01JTl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJnZXQpOwogCiAJUEdfUkVUVVJO X0JPT0wodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL2V4 dGVuZGVkX3N0YXRzX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9zdGF0aXN0aWNzL2V4dGVu ZGVkX3N0YXRzX2ludGVybmFsLmgKaW5kZXggOGVlZDliMzM4ZC4uNjljN2ZjY2EwMiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0c19pbnRlcm5h bC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJu YWwuaApAQCAtMTcsNiArMTcsMTcgQEAKICNpbmNsdWRlICJzdGF0aXN0aWNzL3N0YXRpc3Rp Y3MuaCIKICNpbmNsdWRlICJ1dGlscy9zb3J0c3VwcG9ydC5oIgogCisvKiBNaW5pbXVtIG9m IHJvd3Mgd2FudGVkIGZvciBleHRlbmRlZCBzdGF0cworICoKKyAqIEJhc2VkIG9uIHJlc2Vh cmNoLCBhIGZpeGVkIHNpemUgcHJvcG9ydGlvbmFsIHRvIHN0YXRpc3RpY3NfdGFyZ2V0Cisg KiAoMzAwICogc3RhdGlzdGljc190YXJnZXQpIGlzIGdlbmVyYWxseSBzdWZmaWNpZW50IGZv ciBhY2N1cmF0ZSBzaW5nbGUtY29sdW1uCisgKiBoaXN0b2dyYW1zIGFuZCBNQ1YgbGlzdHMu IEl0cyBzdWl0YWJpbGl0eSBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcy4KKyAqCisgKiBYWFgg V2hpbGUgdGhpcyB2YWx1ZSB3b3JrcyByZWFzb25hYmx5IHdlbGwgZm9yIGluZGl2aWR1YWwg Y29sdW1ucywgaXRzCisgKiBzdWl0YWJpbGl0eSBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcyBp cyBzdGlsbCBhbiBvcGVuIHF1ZXN0aW9uLgorICovCisjZGVmaW5lIEVYVF9TVEFUU19NSU5f Uk9XUwkzMDAKKwogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlPaWQJCQllcW9wcjsJCQkvKiAnPScg b3BlcmF0b3IgZm9yIGRhdGF0eXBlLCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIGIvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9z dGF0aXN0aWNzLmgKaW5kZXggN2YyYmYxODcxNi4uZjU3OGY3ZmQxZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RhdGlzdGljcy9zdGF0aXN0aWNzLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RhdGlzdGljcy9zdGF0aXN0aWNzLmgKQEAgLTIyLDYgKzIyLDI5IEBACiAjZGVmaW5lIFNU QVRTX05ESVNUSU5DVF9NQUdJQwkJMHhBMzUyQkZBNAkvKiBzdHJ1Y3QgaWRlbnRpZmllciAq LwogI2RlZmluZSBTVEFUU19ORElTVElOQ1RfVFlQRV9CQVNJQwkxCS8qIHN0cnVjdCB2ZXJz aW9uICovCiAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE1pbmltdW0gb2Ygcm93cyB3 YW50ZWQgZm9yIHN0YXRzCisgKgorICogVGhlIGZvbGxvd2luZyBjaG9pY2Ugb2YgbWlucm93 cyBpcyBiYXNlZCBvbiB0aGUgcGFwZXIKKyAqICJSYW5kb20gc2FtcGxpbmcgZm9yIGhpc3Rv Z3JhbSBjb25zdHJ1Y3Rpb246IGhvdyBtdWNoIGlzIGVub3VnaD8iCisgKiBieSBTdXJhaml0 IENoYXVkaHVyaSwgUmFqZWV2IE1vdHdhbmkgYW5kIFZpdmVrIE5hcmFzYXl5YSwgaW4KKyAq IFByb2NlZWRpbmdzIG9mIEFDTSBTSUdNT0QgSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9u IE1hbmFnZW1lbnQKKyAqIG9mIERhdGEsIDE5OTgsIFBhZ2VzIDQzNi00NDcuICBUaGVpciBD b3JvbGxhcnkgMSB0byBUaGVvcmVtIDUKKyAqIHNheXMgdGhhdCBmb3IgdGFibGUgc2l6ZSBu LCBoaXN0b2dyYW0gc2l6ZSBrLCBtYXhpbXVtIHJlbGF0aXZlCisgKiBlcnJvciBpbiBiaW4g c2l6ZSBmLCBhbmQgZXJyb3IgcHJvYmFiaWxpdHkgZ2FtbWEsIHRoZSBtaW5pbXVtCisgKiBy YW5kb20gc2FtcGxlIHNpemUgaXMKKyAqCQlyID0gNCAqIGsgKiBsbigyKm4vZ2FtbWEpIC8g Zl4yCisgKiBUYWtpbmcgZiA9IDAuNSwgZ2FtbWEgPSAwLjAxLCBuID0gMTBeNiByb3dzLCB3 ZSBvYnRhaW4KKyAqCQlyID0gMzA1LjgyICogaworICogTm90ZSB0aGF0IGJlY2F1c2Ugb2Yg dGhlIGxvZyBmdW5jdGlvbiwgdGhlIGRlcGVuZGVuY2Ugb24gbiBpcworICogcXVpdGUgd2Vh azsgZXZlbiBhdCBuID0gMTBeMTIsIGEgMzAwKmsgc2FtcGxlIGdpdmVzIDw9IDAuNjYKKyAq IGJpbiBzaXplIGVycm9yIHdpdGggcHJvYmFiaWxpdHkgMC45OS4gIFNvIHRoZXJlJ3Mgbm8g cmVhbCBuZWVkIHRvCisgKiBzY2FsZSBmb3Igbiwgd2hpY2ggaXMgYSBnb29kIHRoaW5nIGJl Y2F1c2Ugd2UgZG9uJ3QgbmVjZXNzYXJpbHkKKyAqIGtub3cgaXQgYXQgdGhpcyBwb2ludC4K KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2RlZmluZSBTVEFUU19NSU5fUk9XUyAJ MzAwCisKIC8qIE1WTkRpc3RpbmN0SXRlbSByZXByZXNlbnRzIGEgc2luZ2xlIGNvbWJpbmF0 aW9uIG9mIGNvbHVtbnMgKi8KIHR5cGVkZWYgc3RydWN0IE1WTkRpc3RpbmN0SXRlbQogewot LSAKMi4zNC4xCgo= --------------VdUt05VOmLE80T0EkRLPK6L7--