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.96) (envelope-from ) id 1wVvwt-002Hfd-1V for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2026 18:40:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVvwq-00GNGu-0G for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2026 18:40:44 +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.96) (envelope-from ) id 1wVvwp-00GNGk-1C for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2026 18:40:43 +0000 Received: from mail-4317.protonmail.ch ([185.70.43.17]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wVvwm-00000001QkZ-1MFv for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2026 18:40:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=scottray.io; s=protonmail; t=1780771236; x=1781030436; bh=NZnc9k2nNaxU1FCqqYAcVurcmnqJE08rDyU9dSkZj8o=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=oS31Xcgpv6RzOYaxJb8J26bzFXpW27m4GHWZ74k1VLCN7lIZU0fLAxE8n6ugpsdSF tUwdb6hLBp2fYwretV0j7/eXv9sYNhDK1MtOzImspPkSckDgTHxDL0ItXORYKx3FYu 1hjl+B3VtrLCoOJVgLp/Dtzku2BsaLAvS0uzW9/BhySeAFlBGZ+dXexVS9WT9huTn8 KukG1YGL1Z8uC6M0mDS4lmYE3tLoLdpo1S16mey0zMKcN+Pxo+DFMjQvUaljNNy+Vk lQMkWMjyAPoTt++TjG1QRYKNOU2yKsYyDZyhq58H7ja794NXmXECn5OLdqdgn7u77q iB1MJ413EQHbA== Date: Sat, 06 Jun 2026 18:40:31 +0000 To: Shinya Kato From: Scott Ray Cc: Kyotaro Horiguchi , laurenz.albe@cybertec.at, japinli@hotmail.com, qiuwenhuifx@gmail.com, samimseih@gmail.com, pgsql-hackers@lists.postgresql.org Subject: Re: Report oldest xmin source when autovacuum cannot remove tuples Message-ID: In-Reply-To: References: <6634e1b0b5b74e5c2e3b06201120a81e11d82a55.camel@cybertec.at> <3bnBUxwx2npXqvHL0trI11LOOvzQ7LI0GzWqbaj5SJnk7DTb1uzStGveKwj0JJmBW4ebzGIF3az7of4I4rQeaO_PRqDnnClCduPyjM6gPgM=@scottray.io> <20260602.165755.1084850050958933598.horikyota.ntt@gmail.com> Feedback-ID: 189710061:user:proton X-Pm-Message-ID: 21b83a70e36088ef62e04f3da1b1c34fd0eae9fa MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha512; boundary="------6fd3d833d63ad96daaec477e8d68e60f353d69acd7de143709f62cd0ac33cf52"; charset=utf-8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------6fd3d833d63ad96daaec477e8d68e60f353d69acd7de143709f62cd0ac33cf52 Content-Type: multipart/mixed;boundary=---------------------16760fe7dbc12ddf837e7bf7853864e4 -----------------------16760fe7dbc12ddf837e7bf7853864e4 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 > > Shinya said [1] that we could have a view in the future. We could > > have both the logging and the view call a single function that reads > > the procArray and other sources to gather the horizon information. I > > think the logging and the view would complement each other. > > > > Should I start another thread? > = > My mild preference would be to keep the discussion on this thread, > since the shared function design is central to both the log and the > view and may be easier to keep aligned in one place. That said, I'm > not strongly attached to that, so please pick whichever feels more > convenient. I attached a patch that uses a helper function that could also be used for a view, but I don't think it's necessary immediately, because refactoring later wouldn't be difficult. -- Scott Ray -----------------------16760fe7dbc12ddf837e7bf7853864e4 Content-Type: application/octet-stream; filename="v1-0001-Refactor-GetXidHorizonBlockers-around-a-new-GetXidHo.patch"; name="v1-0001-Refactor-GetXidHorizonBlockers-around-a-new-GetXidHo.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Refactor-GetXidHorizonBlockers-around-a-new-GetXidHo.patch"; name="v1-0001-Refactor-GetXidHorizonBlockers-around-a-new-GetXidHo.patch" RnJvbSBiNDU2NTM1MWUwMzM3ZmI3NTljOWI3ZjUxMWU2YWVhYTQwNGMzM2Y3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzY290dHJheS1kZXYtYm90IDwyODA1NDQ4NTArc2NvdHRyYXkt ZGV2LWJvdEB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CkRhdGU6IFNhdCwgNiBKdW4gMjAyNiAx MDozNDoyNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIFJlZmFjdG9yIEdldFhpZEhvcml6b25C bG9ja2VycyBhcm91bmQgYSBuZXcKIEdldFhpZEhvcml6b25Db250cmlidXRvcnMgaGVscGVyCgot LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIHwgMTE5ICsrKysrKysrKysr KysrKysrKystLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggICAgIHwg IDE2ICsrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgIHwgICAxICsKIDMg ZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCBiYzdiOGJiNTU3MS4uMGU2NDAxMmJmN2YgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0yMDM0LDkgKzIwMzQsOSBAQCBHZXRT dGFuZGJ5QXBwbmFtZShpbnQgcGlkLCBjaGFyICpuYW1lLCBTaXplIGxlbikKICAqIFJldHVybiBY aWRIb3Jpem9uQmxvY2tlclR5cGUgZm9yIGEgYmFja2VuZCB3aG9zZSB4aWQgbWF0Y2hlcyB0aGUg aG9yaXpvbi4KICAqLwogc3RhdGljIGlubGluZSBYaWRIb3Jpem9uQmxvY2tlclR5cGUKLVhpZEhv cml6b25CbG9ja2VyVHlwZUZvckJhY2tlbmQoY29uc3QgUEdQUk9DICpwcm9jKQorWGlkSG9yaXpv bkJsb2NrZXJUeXBlRm9yQmFja2VuZCh1aW50MzIgd2FpdF9ldmVudF9pbmZvKQogewotCWlmIChw cm9jLT53YWl0X2V2ZW50X2luZm8gPT0gV0FJVF9FVkVOVF9DTElFTlRfUkVBRCkKKwlpZiAod2Fp dF9ldmVudF9pbmZvID09IFdBSVRfRVZFTlRfQ0xJRU5UX1JFQUQpCiAJCXJldHVybiBYSEJfSURM RV9JTl9UUkFOU0FDVElPTjsKIAlyZXR1cm4gWEhCX0FDVElWRV9UUkFOU0FDVElPTjsKIH0KQEAg LTIwNDUsOSArMjA0NSw5IEBAIFhpZEhvcml6b25CbG9ja2VyVHlwZUZvckJhY2tlbmQoY29uc3Qg UEdQUk9DICpwcm9jKQogICogUmV0dXJuIFhpZEhvcml6b25CbG9ja2VyVHlwZSBmb3IgYSBiYWNr ZW5kIHdob3NlIHhtaW4gbWF0Y2hlcyB0aGUgaG9yaXpvbi4KICAqLwogc3RhdGljIGlubGluZSBY aWRIb3Jpem9uQmxvY2tlclR5cGUKLVhpZEhvcml6b25CbG9ja2VyVHlwZUZvclhtaW5CYWNrZW5k KGNvbnN0IFBHUFJPQyAqcHJvYykKK1hpZEhvcml6b25CbG9ja2VyVHlwZUZvclhtaW5CYWNrZW5k KHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiB7Ci0JaWYgKHByb2MtPndhaXRfZXZlbnRfaW5mbyA9 PSBXQUlUX0VWRU5UX0NMSUVOVF9SRUFEKQorCWlmICh3YWl0X2V2ZW50X2luZm8gPT0gV0FJVF9F VkVOVF9DTElFTlRfUkVBRCkKIAkJcmV0dXJuIFhIQl9YTUlOX0lETEVfSU5fVFJBTlNBQ1RJT047 CiAJcmV0dXJuIFhIQl9YTUlOX0FDVElWRV9UUkFOU0FDVElPTjsKIH0KQEAgLTIwNzksMzMgKzIw NzksMzIgQEAgWGlkSG9yaXpvbkJsb2NrZXJUeXBlRm9yWG1pbkJhY2tlbmQoY29uc3QgUEdQUk9D ICpwcm9jKQogc3RhdGljIFhpZEhvcml6b25CbG9ja2VyICoKIEdldFhpZEhvcml6b25CbG9ja2Vy cyhUcmFuc2FjdGlvbklkIGhvcml6b24sIGludCAqbmJsb2NrZXJzKQogewotCVByb2NBcnJheVN0 cnVjdCAqYXJyYXlQID0gcHJvY0FycmF5OwotCVRyYW5zYWN0aW9uSWQgKm90aGVyX3hpZHMgPSBQ cm9jR2xvYmFsLT54aWRzOworCVhpZEhvcml6b25Db250cmlidXRvciAqY29udHJpYnV0b3JzOwor CWludAkJCW5fY29udHJpYnV0b3JzOwogCVhpZEhvcml6b25CbG9ja2VyICpyZXN1bHQ7CiAJaW50 CQkJY291bnQgPSAwOwogCWludAkJCW1heF9ibG9ja2VyczsKKwlQcm9jTnVtYmVyCW15X3BncHJv Y25vOwogCiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGhvcml6b24pKTsKIAlBc3NlcnQo bmJsb2NrZXJzICE9IE5VTEwpOwogCisJbXlfcGdwcm9jbm8gPSBNeVByb2MgPyBHZXROdW1iZXJG cm9tUEdQcm9jKE15UHJvYykgOiBJTlZBTElEX1BST0NfTlVNQkVSOworCisJY29udHJpYnV0b3Jz ID0gR2V0WGlkSG9yaXpvbkNvbnRyaWJ1dG9ycygmbl9jb250cmlidXRvcnMpOworCiAJLyoKLQkg KiBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIGV2ZXJ5IFBHUFJPQyBwbHVzIGFsbCByZXBsaWNh dGlvbiBzbG90cy4gVGhpcwotCSAqIGlzIGEgZ2VuZXJvdXMgdXBwZXIgYm91bmQgKHR5cGljYWxs eSBvbmx5IDAtMiBlbnRyaWVzIGFyZSByZXR1cm5lZCksCi0JICogYnV0IGtlZXBzIHRoZSBsb2dp YyBzaW1wbGUgZm9yIGEgZGlhZ25vc3RpYyBmdW5jdGlvbiB0aGF0IHJ1bnMKLQkgKiBpbmZyZXF1 ZW50bHkuCisJICogQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciBldmVyeSBjb250cmlidXRvciBw bHVzIGFsbCByZXBsaWNhdGlvbiBzbG90cy4KKwkgKiBUaGlzIGlzIGEgZ2VuZXJvdXMgdXBwZXIg Ym91bmQgKHR5cGljYWxseSBvbmx5IDAtMiBlbnRyaWVzIGFyZQorCSAqIHJldHVybmVkKSwgYnV0 IGtlZXBzIHRoZSBsb2dpYyBzaW1wbGUgZm9yIGEgZGlhZ25vc3RpYyBmdW5jdGlvbiB0aGF0CisJ ICogcnVucyBpbmZyZXF1ZW50bHkuCiAJICovCi0JbWF4X2Jsb2NrZXJzID0gYXJyYXlQLT5tYXhQ cm9jcyArIG1heF9yZXBsaWNhdGlvbl9zbG90czsKKwltYXhfYmxvY2tlcnMgPSBuX2NvbnRyaWJ1 dG9ycyArIG1heF9yZXBsaWNhdGlvbl9zbG90czsKIAlyZXN1bHQgPSBwYWxsb2MwX2FycmF5KFhp ZEhvcml6b25CbG9ja2VyLCBtYXhfYmxvY2tlcnMpOwogCi0JTFdMb2NrQWNxdWlyZShQcm9jQXJy YXlMb2NrLCBMV19TSEFSRUQpOwotCi0JZm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5 UC0+bnVtUHJvY3M7IGluZGV4KyspCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuX2NvbnRyaWJ1dG9y czsgaSsrKQogCXsKLQkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07 Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107Ci0JCWludDgJCXN0YXR1 c0ZsYWdzID0gUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdOwotCQlUcmFuc2FjdGlvbklk IHByb2NfeGlkOwotCQlUcmFuc2FjdGlvbklkIHByb2NfeG1pbjsKKwkJWGlkSG9yaXpvbkNvbnRy aWJ1dG9yICpjID0gJmNvbnRyaWJ1dG9yc1tpXTsKIAkJWGlkSG9yaXpvbkJsb2NrZXJUeXBlIGNh bmRpZGF0ZV90eXBlID0gWEhCX05PTkU7CiAJCWludAkJCWNhbmRpZGF0ZV9waWQgPSAwOwogCQlU cmFuc2FjdGlvbklkIGNhbmRpZGF0ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTIx MTUsNDQgKzIxMTQsNDAgQEAgR2V0WGlkSG9yaXpvbkJsb2NrZXJzKFRyYW5zYWN0aW9uSWQgaG9y aXpvbiwgaW50ICpuYmxvY2tlcnMpCiAJCSAqIHJlbW92ZWQsIGFzIGxvbmcgYXMgcGdfc3VidHJh bnMgaXMgbm90IHRydW5jYXRlZCksIGRvaW5nIGxvZ2ljYWwKIAkJICogZGVjb2RpbmcgKHdoaWNo IG1hbmFnZXMgeG1pbiBzZXBhcmF0ZWx5LCBjaGVjayBiZWxvdyksIG9yIG15c2VsZi4KIAkJICov Ci0JCWlmIChzdGF0dXNGbGFncyAmIChQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5fTE9HSUNBTF9E RUNPRElORykgfHwKLQkJCXByb2MgPT0gTXlQcm9jKQorCQlpZiAoYy0+c3RhdHVzX2ZsYWdzICYg KFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HKSB8fAorCQkJYy0+cHJv Y19udW1iZXIgPT0gbXlfcGdwcm9jbm8pCiAJCQljb250aW51ZTsKIAotCQkvKiBGZXRjaCB4aWQg anVzdCBvbmNlIC0gc2VlIEdldE5ld1RyYW5zYWN0aW9uSWQgKi8KLQkJcHJvY194aWQgPSBVSU5U MzJfQUNDRVNTX09OQ0Uob3RoZXJfeGlkc1tpbmRleF0pOwotCQlwcm9jX3htaW4gPSBVSU5UMzJf QUNDRVNTX09OQ0UocHJvYy0+eG1pbik7Ci0KIAkJLyogQ2hlY2sgaWYgdGhpcyBwcm9jJ3MgeGlk IG1hdGNoZXMgKi8KLQkJaWYgKFRyYW5zYWN0aW9uSWRFcXVhbHMocHJvY194aWQsIGhvcml6b24p KQorCQlpZiAoVHJhbnNhY3Rpb25JZEVxdWFscyhjLT54aWQsIGhvcml6b24pKQogCQl7Ci0JCQlp ZiAocHJvYy0+cGlkID09IDApCisJCQlpZiAoYy0+cGlkID09IDApCiAJCQl7CiAJCQkJY2FuZGlk YXRlX3R5cGUgPSBYSEJfUFJFUEFSRURfVFJBTlNBQ1RJT047CiAJCQkJY2FuZGlkYXRlX3BpZCA9 IDA7Ci0JCQkJY2FuZGlkYXRlX3hpZCA9IHByb2NfeGlkOworCQkJCWNhbmRpZGF0ZV94aWQgPSBj LT54aWQ7CiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJY2FuZGlkYXRlX3R5cGUgPSBYaWRIb3Jp em9uQmxvY2tlclR5cGVGb3JCYWNrZW5kKHByb2MpOwotCQkJCWNhbmRpZGF0ZV9waWQgPSBwcm9j LT5waWQ7Ci0JCQkJY2FuZGlkYXRlX3hpZCA9IHByb2NfeGlkOworCQkJCWNhbmRpZGF0ZV90eXBl ID0gWGlkSG9yaXpvbkJsb2NrZXJUeXBlRm9yQmFja2VuZChjLT53YWl0X2V2ZW50X2luZm8pOwor CQkJCWNhbmRpZGF0ZV9waWQgPSBjLT5waWQ7CisJCQkJY2FuZGlkYXRlX3hpZCA9IGMtPnhpZDsK IAkJCX0KIAkJfQogCQkvKiBDaGVjayBpZiB0aGlzIHByb2MncyB4bWluIG1hdGNoZXMgKi8KLQkJ ZWxzZSBpZiAoVHJhbnNhY3Rpb25JZEVxdWFscyhwcm9jX3htaW4sIGhvcml6b24pKQorCQllbHNl IGlmIChUcmFuc2FjdGlvbklkRXF1YWxzKGMtPnhtaW4sIGhvcml6b24pKQogCQl7Ci0JCQlpZiAo c3RhdHVzRmxhZ3MgJiBQUk9DX0FGRkVDVFNfQUxMX0hPUklaT05TKQorCQkJaWYgKGMtPnN0YXR1 c19mbGFncyAmIFBST0NfQUZGRUNUU19BTExfSE9SSVpPTlMpCiAJCQl7CiAJCQkJY2FuZGlkYXRl X3R5cGUgPSBYSEJfSE9UX1NUQU5EQllfRkVFREJBQ0s7Ci0JCQkJY2FuZGlkYXRlX3BpZCA9IHBy b2MtPnBpZDsKLQkJCQljYW5kaWRhdGVfeGlkID0gcHJvY194bWluOworCQkJCWNhbmRpZGF0ZV9w aWQgPSBjLT5waWQ7CisJCQkJY2FuZGlkYXRlX3hpZCA9IGMtPnhtaW47CiAJCQl9CiAJCQllbHNl CiAJCQl7Ci0JCQkJY2FuZGlkYXRlX3R5cGUgPSBYaWRIb3Jpem9uQmxvY2tlclR5cGVGb3JYbWlu QmFja2VuZChwcm9jKTsKLQkJCQljYW5kaWRhdGVfcGlkID0gcHJvYy0+cGlkOwotCQkJCWNhbmRp ZGF0ZV94aWQgPSBwcm9jX3htaW47CisJCQkJY2FuZGlkYXRlX3R5cGUgPSBYaWRIb3Jpem9uQmxv Y2tlclR5cGVGb3JYbWluQmFja2VuZChjLT53YWl0X2V2ZW50X2luZm8pOworCQkJCWNhbmRpZGF0 ZV9waWQgPSBjLT5waWQ7CisJCQkJY2FuZGlkYXRlX3hpZCA9IGMtPnhtaW47CiAJCQl9CiAJCX0K IApAQCAtMjE3MSw3ICsyMTY2LDcgQEAgR2V0WGlkSG9yaXpvbkJsb2NrZXJzKFRyYW5zYWN0aW9u SWQgaG9yaXpvbiwgaW50ICpuYmxvY2tlcnMpCiAJCX0KIAl9CiAKLQlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOworCXBmcmVlKGNvbnRyaWJ1dG9ycyk7CiAKIAkvKgogCSAqIE5vdyB0aGF0 IFByb2NBcnJheUxvY2sgaXMgcmVsZWFzZWQsIGZldGNoIGFueSBleHRyYSBkZXRhaWxzIHdlIHdh bnQgdG8KQEAgLTMzOTgsNiArMzM5Myw1MiBAQCBQcm9jTnVtYmVyR2V0VHJhbnNhY3Rpb25JZHMo UHJvY051bWJlciBwcm9jTnVtYmVyLCBUcmFuc2FjdGlvbklkICp4aWQsCiAJTFdMb2NrUmVsZWFz ZShQcm9jQXJyYXlMb2NrKTsKIH0KIAorLyoKKyAqIEdldFhpZEhvcml6b25Db250cmlidXRvcnMg LS0gc2NhbiB0aGUgcHJvY0FycmF5IGFuZCByZXR1cm4gaG9yaXpvbgorICogY29udHJpYnV0aW9u IGluZm9ybWF0aW9uIGZvciBlYWNoIHByb2Nlc3MuCisgKi8KK1hpZEhvcml6b25Db250cmlidXRv ciAqCitHZXRYaWRIb3Jpem9uQ29udHJpYnV0b3JzKGludCAqbikKK3sKKwlYaWRIb3Jpem9uQ29u dHJpYnV0b3IgKnJlc3VsdDsKKwlQcm9jQXJyYXlTdHJ1Y3QgKmFycmF5UCA9IHByb2NBcnJheTsK KwlpbnQJCQljb3VudCA9IDA7CisJaW50CQkJaW5kZXg7CisKKwlyZXN1bHQgPSBwYWxsb2NfYXJy YXkoWGlkSG9yaXpvbkNvbnRyaWJ1dG9yLCBhcnJheVAtPm1heFByb2NzKTsKKworCUxXTG9ja0Fj cXVpcmUoUHJvY0FycmF5TG9jaywgTFdfU0hBUkVEKTsKKworCWZvciAoaW5kZXggPSAwOyBpbmRl eCA8IGFycmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCisJeworCQlpbnQJCQlwZ3Byb2NubyA9IGFy cmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKKwkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3Bn cHJvY25vXTsKKwkJWGlkSG9yaXpvbkNvbnRyaWJ1dG9yICpjID0gJnJlc3VsdFtjb3VudCsrXTsK KworCQljLT5wcm9jX251bWJlciA9IHBncHJvY25vOworCQljLT5waWQgPSBwcm9jLT5waWQ7CisJ CWMtPmRhdGFiYXNlX2lkID0gcHJvYy0+ZGF0YWJhc2VJZDsKKwkJYy0+c3RhdHVzX2ZsYWdzID0g UHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdOworCisJCS8qIEZldGNoIHhpZCBqdXN0IG9u Y2UgLSBzZWUgR2V0TmV3VHJhbnNhY3Rpb25JZCAqLworCQljLT54aWQgPSBVSU5UMzJfQUNDRVNT X09OQ0UoUHJvY0dsb2JhbC0+eGlkc1tpbmRleF0pOworCQljLT54bWluID0gVUlOVDMyX0FDQ0VT U19PTkNFKHByb2MtPnhtaW4pOworCisJCS8qCisJCSAqIHdhaXRfZXZlbnRfaW5mbyBpcyB3cml0 dGVuIHdpdGhvdXQgbG9jayBieSBwZ3N0YXRfcmVwb3J0X3dhaXRfKigpOworCQkgKiByZWFkIHdp dGggVUlOVDMyX0FDQ0VTU19PTkNFIGZvciBhIGJlbmlnbi1yYWN5IDQtYnl0ZSBmZXRjaCwgc2Ft ZQorCQkgKiBhcyBwcm9jLT54bWluIGFib3ZlLgorCQkgKi8KKwkJYy0+d2FpdF9ldmVudF9pbmZv ID0gVUlOVDMyX0FDQ0VTU19PTkNFKHByb2MtPndhaXRfZXZlbnRfaW5mbyk7CisJfQorCisJTFdM b2NrUmVsZWFzZShQcm9jQXJyYXlMb2NrKTsKKworCSpuID0gY291bnQ7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCiAvKgogICogQmFja2VuZFBpZEdldFByb2MgLS0gZ2V0IGEgYmFja2VuZCdzIFBH UFJPQyBnaXZlbiBpdHMgUElECiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKaW5kZXggNDk1NGM4 MmFiOTkuLmE2M2M2ZGM2NGQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nh cnJheS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKQEAgLTEwMiw2ICsx MDIsMjIgQEAgZXh0ZXJuIFBHUFJPQyAqUHJvY051bWJlckdldFByb2MoaW50IHByb2NOdW1iZXIp OwogZXh0ZXJuIHZvaWQgUHJvY051bWJlckdldFRyYW5zYWN0aW9uSWRzKGludCBwcm9jTnVtYmVy LCBUcmFuc2FjdGlvbklkICp4aWQsCiAJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCAqeG1pbiwgaW50 ICpuc3VieGlkLAogCQkJCQkJCQkJCWJvb2wgKm92ZXJmbG93ZWQpOworCit0eXBlZGVmIHN0cnVj dCBYaWRIb3Jpem9uQ29udHJpYnV0b3IKK3sKKwlQcm9jTnVtYmVyCXByb2NfbnVtYmVyOworCWlu dAkJCXBpZDsJCQkvKiBPUyBwaWQ7IDAgZm9yIHByZXBhcmVkLXhhY3QgZHVtbXkgcHJvY3MgKi8K KwlPaWQJCQlkYXRhYmFzZV9pZDsKKwl1aW50OAkJc3RhdHVzX2ZsYWdzOworCVRyYW5zYWN0aW9u SWQgeGlkOworCVRyYW5zYWN0aW9uSWQgeG1pbjsKKwl1aW50MzIJCXdhaXRfZXZlbnRfaW5mbzsJ Lyogc2FtcGxlZCB1bmRlciBQcm9jQXJyYXlMb2NrIHZpYQorCQkJCQkJCQkJICogVUlOVDMyX0FD Q0VTU19PTkNFOyB3cml0dGVuIGxvY2tsZXNzbHkKKwkJCQkJCQkJCSAqIGJ5IHBnc3RhdF9yZXBv cnRfd2FpdF8qKCkuICovCit9IFhpZEhvcml6b25Db250cmlidXRvcjsKKworZXh0ZXJuIFhpZEhv cml6b25Db250cmlidXRvciAqR2V0WGlkSG9yaXpvbkNvbnRyaWJ1dG9ycyhpbnQgKm4pOworCiBl eHRlcm4gUEdQUk9DICpCYWNrZW5kUGlkR2V0UHJvYyhpbnQgcGlkKTsKIGV4dGVybiBQR1BST0Mg KkJhY2tlbmRQaWRHZXRQcm9jV2l0aExvY2soaW50IHBpZCk7CiBleHRlcm4gaW50CUJhY2tlbmRY aWRHZXRQaWQoVHJhbnNhY3Rpb25JZCB4aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRl eCA4M2I4ODBiNDI2ZS4uNTkwY2M4NTI4NTggMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBA IC0zNTQ2LDYgKzM1NDYsNyBAQCBYaWRDYWNoZVN0YXR1cwogWGlkQ29tbWl0U3RhdHVzCiBYaWRI b3Jpem9uQmxvY2tlcgogWGlkSG9yaXpvbkJsb2NrZXJUeXBlCitYaWRIb3Jpem9uQ29udHJpYnV0 b3IKIFhpZFN0YXR1cwogWG1sRXhwcgogWG1sRXhwck9wCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgo= -----------------------16760fe7dbc12ddf837e7bf7853864e4-- --------6fd3d833d63ad96daaec477e8d68e60f353d69acd7de143709f62cd0ac33cf52 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wrsEARYKAG0FgmokaZIJENJWjBT/u5s7RRQAAAAAABwAIHNhbHRAbm90YXRp b25zLm9wZW5wZ3Bqcy5vcmdsajI12m5tFsDdIgkKWBMhqHEZnHgckyNb1dgF PEuVOxYhBHp15mAbLriqt8a+vNJWjBT/u5s7AAAoowD/SIh4W4Ql2cMZ0dhi B/lbZ7z/VZ1LsCCG+DbAy0pU7xMA/0wi8O1lEaGqRzIw3KqGvWhWX590jroQ Ejo34mTrI1wO =xvi3 -----END PGP SIGNATURE----- --------6fd3d833d63ad96daaec477e8d68e60f353d69acd7de143709f62cd0ac33cf52--