Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1fID-0001Zq-Kv for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Jul 2021 01:27:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1m1fIC-0001xA-GQ for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Jul 2021 01:27:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1fIB-0001wk-Ka for pgsql-hackers@lists.postgresql.org; Fri, 09 Jul 2021 01:27:00 +0000 Received: from mail-177131.yeah.net ([123.58.177.131]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1fI5-00053m-FA for pgsql-hackers@postgresql.org; Fri, 09 Jul 2021 01:26:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yeah.net; s=s110527; h=Subject:From:Message-ID:Date:MIME-Version; bh=McvHA mwLzpI5TzRGhhBw2gnifilNZOIy7rEpgt9u7yo=; b=RBh/+x9WJ+aAjKg4/1+Bt 17lBOhaZ/erYPtyHGZIYYX99dMWKfZDkD55cGk1KYZ/nnIi6qUNFU/ZmN5LMu1wl DhFMfMu7djm8NZfVBcWpQ9rT18XwSW4tvxGQo3yagGDN8WwSguvQtzwKNGs+03f/ o0xQ5azfb5OGtLgRoZTuqk= Received: from quanzl-macbook.local (unknown [221.238.132.226]) by smtp1 (Coremail) with SMTP id ClUQrAC3vYHNpedgQqPPQA--.45337S2; Fri, 09 Jul 2021 09:26:39 +0800 (CST) Subject: Re: bugfix: when the blocksize is 32k, the function page_header of pageinspect returns negative numbers. To: Michael Paquier , Justin Pryzby Cc: Bharath Rupireddy , pgsql-hackers@postgresql.org References: <8b8ec36e-61fe-14f9-005d-07bc85aa4eed@yeah.net> <20210708042806.GA22043@telsasoft.com> From: Quan Zongliang Message-ID: <8255a8e0-ee7d-a411-3746-15fe8acfd8ec@yeah.net> Date: Fri, 9 Jul 2021 09:26:37 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------198EDFC7D48A1D2052EAF4D8" Content-Language: en-US X-CM-TRANSID: ClUQrAC3vYHNpedgQqPPQA--.45337S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrKw1kWF48tw4fZFWfCw1Utrb_yoWDKwb_ua s0qwn7A34UKFWfWFs8trsxXFZ5KayYga1jvws8XrZ8A34UXrs5GFWDKrZrCws5JrWSkFsa yFZIva1SvFZI9jkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUYZo2UUUUUU== X-Originating-IP: [221.238.132.226] X-CM-SenderInfo: htxd06xrqjzxxdqjq5hhdkh0dhw/1tbiDw-KJFnxZEzeJwAAsX 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. --------------198EDFC7D48A1D2052EAF4D8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2021/7/8 3:54 下午, Michael Paquier wrote: > On Wed, Jul 07, 2021 at 11:28:06PM -0500, Justin Pryzby wrote: >> I think you can refer to this prior commit for guidance. >> >> commit f18aa1b203930ed28cfe42e82d3418ae6277576d >> Author: Peter Eisentraut >> Date: Tue Jan 19 10:28:05 2021 +0100 >> >> pageinspect: Change block number arguments to bigint > > Yes, thanks. Peter's recent work is what I had in mind. I agree that > we could improve the situation, and the change is not complicated once > you know what needs to be done. It needs to be done as follows: > - Create a new pageinspect--1.9--1.10.sql. > - Provide a proper implementation for older extension version based on > the output parameter types, with a lookup at the TupleDesc for the > function to adapt. > - Add tests to sql/oldextversions.sql to stress the old function based > on smallint results. > - Bump pageinspect.control. > > Quan, would you like to produce a patch? That's a good exercise to > understand how the maintenance of extensions is done. new patch attached > -- > Michael > --------------198EDFC7D48A1D2052EAF4D8 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="pageinspect.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pageinspect.patch" ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUgYi9jb250cmliL3Bh Z2VpbnNwZWN0L01ha2VmaWxlCmluZGV4IDJkMzMwZGRiMjguLjk5OTkwNjgxMzQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wYWdl aW5zcGVjdC9NYWtlZmlsZQpAQCAtMTMsNyArMTMsOCBAQCBPQkpTID0gXAogCXJhd3BhZ2Uu bwogCiBFWFRFTlNJT04gPSBwYWdlaW5zcGVjdAotREFUQSA9ICBwYWdlaW5zcGVjdC0tMS44 LS0xLjkuc3FsIFwKK0RBVEEgPSAgcGFnZWluc3BlY3QtLTEuOS0tMS4xMC5zcWwgXAorCXBh Z2VpbnNwZWN0LS0xLjgtLTEuOS5zcWwgXAogCXBhZ2VpbnNwZWN0LS0xLjctLTEuOC5zcWwg cGFnZWluc3BlY3QtLTEuNi0tMS43LnNxbCBcCiAJcGFnZWluc3BlY3QtLTEuNS5zcWwgcGFn ZWluc3BlY3QtLTEuNS0tMS42LnNxbCBcCiAJcGFnZWluc3BlY3QtLTEuNC0tMS41LnNxbCBw YWdlaW5zcGVjdC0tMS4zLS0xLjQuc3FsIFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWlu c3BlY3QvZXhwZWN0ZWQvb2xkZXh0dmVyc2lvbnMub3V0IGIvY29udHJpYi9wYWdlaW5zcGVj dC9leHBlY3RlZC9vbGRleHR2ZXJzaW9ucy5vdXQKaW5kZXggMDRkYzdmODY0MC4uOTU0Njc5 MWUyMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9vbGRleHR2 ZXJzaW9ucy5vdXQKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9vbGRleHR2 ZXJzaW9ucy5vdXQKQEAgLTM2LDUgKzM2LDMyIEBAIFNFTEVDVCAqIEZST00gYnRfcGFnZV9p dGVtcygndGVzdDFfYV9pZHgnLCAxKTsKICAgICAgICAgICAxIHwgKDAsMSkgfCAgICAgIDE2 IHwgZiAgICAgfCBmICAgIHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDEgfCBmICAgIHwgKDAs MSkgfCAKICgxIHJvdykKIAorXGRmIHBhZ2VfaGVhZGVyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGZ1bmN0 aW9ucworIFNjaGVtYSB8ICAgIE5hbWUgICAgIHwgUmVzdWx0IGRhdGEgdHlwZSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudCBkYXRhIHR5cGVzICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0KKyBwdWJsaWMgfCBwYWdlX2hlYWRlciB8IHJlY29yZCAgICAgICAg ICAgfCBwYWdlIGJ5dGVhLCBPVVQgbHNuIHBnX2xzbiwgT1VUIGNoZWNrc3VtIHNtYWxsaW50 LCBPVVQgZmxhZ3Mgc21hbGxpbnQsIE9VVCBsb3dlciBzbWFsbGludCwgT1VUIHVwcGVyIHNt YWxsaW50LCBPVVQgc3BlY2lhbCBzbWFsbGludCwgT1VUIHBhZ2VzaXplIHNtYWxsaW50LCBP VVQgdmVyc2lvbiBzbWFsbGludCwgT1VUIHBydW5lX3hpZCB4aWQgfCBmdW5jCisoMSByb3cp CisKK1NFTEVDVCBsb3dlciwgdXBwZXIsIHNwZWNpYWwsIHBhZ2VzaXplLCB2ZXJzaW9uIEZS T00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCd0ZXN0MScsIDApKTsKKyBsb3dlciB8IHVw cGVyIHwgc3BlY2lhbCB8IHBhZ2VzaXplIHwgdmVyc2lvbiAKKy0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAyOCB8ICA4MTUyIHwgICAgODE5 MiB8ICAgICA4MTkyIHwgICAgICAgNAorKDEgcm93KQorCitBTFRFUiBFWFRFTlNJT04gcGFn ZWluc3BlY3QgVVBEQVRFIFRPICcxLjEwJzsKK1xkZiBwYWdlX2hlYWRlcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2YgZnVuY3Rpb25zCisgU2NoZW1hIHwgICAgTmFtZSAgICAgfCBSZXN1bHQgZGF0YSB0eXBl IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudCBkYXRhIHR5cGVz ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlIAorLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0KKyBwdWJsaWMgfCBwYWdlX2hlYWRlciB8IHJlY29yZCAgICAgICAg ICAgfCBwYWdlIGJ5dGVhLCBPVVQgbHNuIHBnX2xzbiwgT1VUIGNoZWNrc3VtIHNtYWxsaW50 LCBPVVQgZmxhZ3Mgc21hbGxpbnQsIE9VVCBsb3dlciBpbnRlZ2VyLCBPVVQgdXBwZXIgaW50 ZWdlciwgT1VUIHNwZWNpYWwgaW50ZWdlciwgT1VUIHBhZ2VzaXplIGludGVnZXIsIE9VVCB2 ZXJzaW9uIHNtYWxsaW50LCBPVVQgcHJ1bmVfeGlkIHhpZCB8IGZ1bmMKKygxIHJvdykKKwor U0VMRUNUIGxvd2VyLCB1cHBlciwgc3BlY2lhbCwgcGFnZXNpemUsIHZlcnNpb24gRlJPTSBw YWdlX2hlYWRlcihnZXRfcmF3X3BhZ2UoJ3Rlc3QxJywgMCkpOworIGxvd2VyIHwgdXBwZXIg fCBzcGVjaWFsIHwgcGFnZXNpemUgfCB2ZXJzaW9uIAorLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgIDI4IHwgIDgxNTIgfCAgICA4MTkyIHwg ICAgIDgxOTIgfCAgICAgICA0CisoMSByb3cpCisKIERST1AgVEFCTEUgdGVzdDE7CiBEUk9Q IEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvcGFnZWluc3BlY3QuY29udHJvbCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3Bl Y3QuY29udHJvbAppbmRleCBiZDcxNjc2OWExLi43Y2RmMzc5MTNkIDEwMDY0NAotLS0gYS9j b250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LmNvbnRyb2wKKysrIGIvY29udHJpYi9w YWdlaW5zcGVjdC9wYWdlaW5zcGVjdC5jb250cm9sCkBAIC0xLDUgKzEsNSBAQAogIyBwYWdl aW5zcGVjdCBleHRlbnNpb24KIGNvbW1lbnQgPSAnaW5zcGVjdCB0aGUgY29udGVudHMgb2Yg ZGF0YWJhc2UgcGFnZXMgYXQgYSBsb3cgbGV2ZWwnCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS45 JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMTAnCiBtb2R1bGVfcGF0aG5hbWUgPSAnJGxpYmRp ci9wYWdlaW5zcGVjdCcKIHJlbG9jYXRhYmxlID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMgYi9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2Uu YwppbmRleCBlOWZlZTczYmM0Li4yZDFmOTBlM2JjIDEwMDY0NAotLS0gYS9jb250cmliL3Bh Z2VpbnNwZWN0L3Jhd3BhZ2UuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2Uu YwpAQCAtMjk2LDEwICsyOTYsMjcgQEAgcGFnZV9oZWFkZXIoUEdfRlVOQ1RJT05fQVJHUykK IAkJdmFsdWVzWzBdID0gTFNOR2V0RGF0dW0obHNuKTsKIAl2YWx1ZXNbMV0gPSBVSW50MTZH ZXREYXR1bShwYWdlLT5wZF9jaGVja3N1bSk7CiAJdmFsdWVzWzJdID0gVUludDE2R2V0RGF0 dW0ocGFnZS0+cGRfZmxhZ3MpOwotCXZhbHVlc1szXSA9IFVJbnQxNkdldERhdHVtKHBhZ2Ut PnBkX2xvd2VyKTsKLQl2YWx1ZXNbNF0gPSBVSW50MTZHZXREYXR1bShwYWdlLT5wZF91cHBl cik7Ci0JdmFsdWVzWzVdID0gVUludDE2R2V0RGF0dW0ocGFnZS0+cGRfc3BlY2lhbCk7Ci0J dmFsdWVzWzZdID0gVUludDE2R2V0RGF0dW0oUGFnZUdldFBhZ2VTaXplKHBhZ2UpKTsKKwor CWlmIChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDMpLT5hdHR0eXBpZCA9PSBJTlQyT0lEKQor CQl2YWx1ZXNbM10gPSBVSW50MTZHZXREYXR1bShwYWdlLT5wZF9sb3dlcik7CisJZWxzZQor CQl2YWx1ZXNbM10gPSBJbnQzMkdldERhdHVtKHBhZ2UtPnBkX2xvd2VyKTsKKworCWlmIChU dXBsZURlc2NBdHRyKHR1cGRlc2MsIDQpLT5hdHR0eXBpZCA9PSBJTlQyT0lEKQorCQl2YWx1 ZXNbNF0gPSBVSW50MTZHZXREYXR1bShwYWdlLT5wZF91cHBlcik7CisJZWxzZQorCQl2YWx1 ZXNbNF0gPSBJbnQzMkdldERhdHVtKHBhZ2UtPnBkX3VwcGVyKTsKKworCWlmIChUdXBsZURl c2NBdHRyKHR1cGRlc2MsIDUpLT5hdHR0eXBpZCA9PSBJTlQyT0lEKQorCQl2YWx1ZXNbNV0g PSBVSW50MTZHZXREYXR1bShwYWdlLT5wZF9zcGVjaWFsKTsKKwllbHNlCisJCXZhbHVlc1s1 XSA9IEludDMyR2V0RGF0dW0ocGFnZS0+cGRfc3BlY2lhbCk7CisKKwlpZiAoVHVwbGVEZXNj QXR0cih0dXBkZXNjLCA1KS0+YXR0dHlwaWQgPT0gSU5UMk9JRCkKKwkJdmFsdWVzWzZdID0g VUludDE2R2V0RGF0dW0oUGFnZUdldFBhZ2VTaXplKHBhZ2UpKTsKKwllbHNlCisJCXZhbHVl c1s2XSA9IEludDMyR2V0RGF0dW0oUGFnZUdldFBhZ2VTaXplKHBhZ2UpKTsKKwogCXZhbHVl c1s3XSA9IFVJbnQxNkdldERhdHVtKFBhZ2VHZXRQYWdlTGF5b3V0VmVyc2lvbihwYWdlKSk7 CiAJdmFsdWVzWzhdID0gVHJhbnNhY3Rpb25JZEdldERhdHVtKHBhZ2UtPnBkX3BydW5lX3hp ZCk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL29sZGV4dHZlcnNp b25zLnNxbCBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL29sZGV4dHZlcnNpb25zLnNxbApp bmRleCA3OGUwOGY0MGU4Li4xYzBkNzNiNDQxIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2Vp bnNwZWN0L3NxbC9vbGRleHR2ZXJzaW9ucy5zcWwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9zcWwvb2xkZXh0dmVyc2lvbnMuc3FsCkBAIC0xNiw1ICsxNiwxMSBAQCBTRUxFQ1QgcGFn ZV9jaGVja3N1bShnZXRfcmF3X3BhZ2UoJ3Rlc3QxJywgMCksIDApIElTIE5PVCBOVUxMIEFT IHNpbGx5X2NoZWNrc3VtXwogU0VMRUNUICogRlJPTSBidF9wYWdlX3N0YXRzKCd0ZXN0MV9h X2lkeCcsIDEpOwogU0VMRUNUICogRlJPTSBidF9wYWdlX2l0ZW1zKCd0ZXN0MV9hX2lkeCcs IDEpOwogCitcZGYgcGFnZV9oZWFkZXIKK1NFTEVDVCBsb3dlciwgdXBwZXIsIHNwZWNpYWws IHBhZ2VzaXplLCB2ZXJzaW9uIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCd0ZXN0 MScsIDApKTsKK0FMVEVSIEVYVEVOU0lPTiBwYWdlaW5zcGVjdCBVUERBVEUgVE8gJzEuMTAn OworXGRmIHBhZ2VfaGVhZGVyCitTRUxFQ1QgbG93ZXIsIHVwcGVyLCBzcGVjaWFsLCBwYWdl c2l6ZSwgdmVyc2lvbiBGUk9NIHBhZ2VfaGVhZGVyKGdldF9yYXdfcGFnZSgndGVzdDEnLCAw KSk7CisKIERST1AgVEFCTEUgdGVzdDE7CiBEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsK --------------198EDFC7D48A1D2052EAF4D8 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="pageinspect--1.9--1.10.sql" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pageinspect--1.9--1.10.sql" LyogY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC0tMS45LS0xLjEwLnNxbCAqLwoK LS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4g dmlhIEFMVEVSIEVYVEVOU0lPTgpcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBwYWdlaW5z cGVjdCBVUERBVEUgVE8gJzEuMTAnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKCi0tCi0t IHBhZ2VfaGVhZGVyKCkKLS0KRFJPUCBGVU5DVElPTiBwYWdlX2hlYWRlcihJTiBwYWdlIGJ5 dGVhKTsKQ1JFQVRFIEZVTkNUSU9OIHBhZ2VfaGVhZGVyKElOIHBhZ2UgYnl0ZWEsCiAgICBP VVQgbHNuIHBnX2xzbiwKICAgIE9VVCBjaGVja3N1bSBzbWFsbGludCwKICAgIE9VVCBmbGFn cyBzbWFsbGludCwKICAgIE9VVCBsb3dlciBpbnQsCiAgICBPVVQgdXBwZXIgaW50LAogICAg T1VUIHNwZWNpYWwgaW50LAogICAgT1VUIHBhZ2VzaXplIGludCwKICAgIE9VVCB2ZXJzaW9u IHNtYWxsaW50LAogICAgT1VUIHBydW5lX3hpZCB4aWQpCkFTICdNT0RVTEVfUEFUSE5BTUUn LCAncGFnZV9oZWFkZXInCkxBTkdVQUdFIEMgU1RSSUNUIFBBUkFMTEVMIFNBRkU7Cg== --------------198EDFC7D48A1D2052EAF4D8--