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 1pHNFY-0000PJ-HS for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jan 2023 11:02:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pHNFX-0006mZ-Dk for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Jan 2023 11:01:59 +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 1pHNFX-0006mQ-2T for pgsql-hackers@lists.postgresql.org; Mon, 16 Jan 2023 11:01:59 +0000 Received: from new4-smtp.messagingengine.com ([66.111.4.230]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pHNFP-0006hJ-7i for pgsql-hackers@postgresql.org; Mon, 16 Jan 2023 11:01:58 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.nyi.internal (Postfix) with ESMTP id B585C580B68; Mon, 16 Jan 2023 06:01:49 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 16 Jan 2023 06:01:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1673866909; x=1673874109; bh=ufCnifxhuODY1jn7VWS/YY3abYtw FgDCV4d1Ww5gKX8=; b=c+5iogy6GTNDLoTfUe9GAZ2fBIWeNgZMo9vyt9jq5Hu7 +uNEpcG2laSnfqBbEYTR/Zebr1IT+G8w3ymPggFv4EpvTz4JrIP7kcENgZ1QpVOF hayIHX1ZxHLyhqUYCrYPYEMmC/WB/136jFYqCk4aID0xDfyOu6ZGU21Y0SXbLanT fMyjJ+cn9RirC44vzy5YPzNCCe/rtB/q7O3Ggz++VgchD1NDqPBnMnQnqnbtdfQQ IJD8/+Wx9Cil3nHLcGh8Kd9/7YnW9DdhdM+nTzLFKjZqpSpH4mamu9uWZm+zC4Ka x3AhAe7dmz3f9aLn3cHIyUtAp1yWyPmSc4EijegcRw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedruddtgedgvdduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvg hrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepuedtkeehueehtddvgfff heelteefhfeifeduiedtffeitdeludejhfejudefffffnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhht segvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 16 Jan 2023 06:01:48 -0500 (EST) Content-Type: multipart/mixed; boundary="------------8bVDwUZ9BllCHzfiaaTVSCME" Message-ID: Date: Mon, 16 Jan 2023 12:01:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Refactor recordExtObjInitPriv() Content-Language: en-US To: Nathan Bossart , Tom Lane Cc: pgsql-hackers References: <504bc485-6bd6-dd1b-fe10-e7351aeb310d@enterprisedb.com> <20230112000437.GA2032194@nathanxps13> <54b13402-b8ab-406a-d9a6-3542124ad6cf@enterprisedb.com> <1136333.1673544050@sss.pgh.pa.us> <20230112174049.GA2047702@nathanxps13> From: Peter Eisentraut In-Reply-To: <20230112174049.GA2047702@nathanxps13> 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. --------------8bVDwUZ9BllCHzfiaaTVSCME Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12.01.23 18:40, Nathan Bossart wrote: > On Thu, Jan 12, 2023 at 12:20:50PM -0500, Tom Lane wrote: >> Peter Eisentraut writes: >>> On 12.01.23 01:04, Nathan Bossart wrote: >>> - classoid == AggregateRelationId || >>>> I noticed that AggregateRelationId isn't listed in the ObjectProperty >>>> array, so I think recordExtObjInitPriv() will begin erroring for that >>>> classoid instead of ignoring it like we do today. >> >>> Hmm, we do have some extensions in contrib that add aggregates (citext, >>> intagg). I suspect that the aggregate function is actually registered >>> into the extension via its pg_proc entry, so this wouldn't actually >>> matter. But maybe the commenting should be clearer? >> >> Yeah, I don't believe that AggregateRelationId is used in object >> addresses; we just refer to pg_proc for any kind of function including >> aggregates. Note that there is no "oid" column in pg_aggregate. > > Got it, thanks for clarifying. I have updated the patch as you suggested and split out the aggregate issue into a separate patch for clarity. --------------8bVDwUZ9BllCHzfiaaTVSCME Content-Type: text/plain; charset=UTF-8; name="v2-0001-Remove-AggregateRelationId-from-recordExtObjInitP.patch" Content-Disposition: attachment; filename*0="v2-0001-Remove-AggregateRelationId-from-recordExtObjInitP.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NzA2NDNlNDRmMTdiMTI4NGE0NjM5YWIyZDE0YmZjYmJkNDg3YjdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxMTo0NjoxMyArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMS8yXSBSZW1vdmUgQWdncmVnYXRlUmVsYXRpb25JZCBmcm9tIHJlY29y ZEV4dE9iakluaXRQcml2KCkKClRoaXMgd2FzIGVycm9uZW91cywgYmVjYXVzZSBBZ2dyZWdh dGVSZWxhdGlvbklkIGhhcyBubyBPSUQsIHNvIGl0CmNhbm5vdCBiZSBwYXJ0IG9mIGFuIGV4 dGVuc2lvbiBkaXJlY3RseS4gIChBZ2dyZWdhdGVzIGFyZSByZWdpc3RlcmVkCnZpYSBwZ19w cm9jLikgIE5vIGhhcm0gaW4gcHJhY3RpY2UsIGJ1dCBiZXR0ZXIgdG8gbWFrZSBpdCBjb3Jy ZWN0LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1p ZC9mbGF0LzUwNGJjNDg1LTZiZDYtZGQxYi1mZTEwLWU3MzUxYWViMzEwZEBlbnRlcnByaXNl ZGIuY29tCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyB8IDEgLQogMSBmaWxl IGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCBjYzZl MjYwOTA4Li43Y2IyZmFhMTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2Fj bGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTQ1MTAsNyAr NDUxMCw2IEBAIHJlY29yZEV4dE9iakluaXRQcml2KE9pZCBvYmpvaWQsIE9pZCBjbGFzc29p ZCkKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKIAl9CiAJZWxzZSBpZiAoY2xhc3NvaWQg PT0gQWNjZXNzTWV0aG9kUmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lkID09IEFnZ3JlZ2F0 ZVJlbGF0aW9uSWQgfHwKIAkJCSBjbGFzc29pZCA9PSBDYXN0UmVsYXRpb25JZCB8fAogCQkJ IGNsYXNzb2lkID09IENvbGxhdGlvblJlbGF0aW9uSWQgfHwKIAkJCSBjbGFzc29pZCA9PSBD b252ZXJzaW9uUmVsYXRpb25JZCB8fAoKYmFzZS1jb21taXQ6IDIwNDI4ZDM0NGEyOTY0ZGU2 YWFlZjk5ODRmY2Q0NzJmM2M2NWQxMTUKLS0gCjIuMzkuMAoK --------------8bVDwUZ9BllCHzfiaaTVSCME Content-Type: text/plain; charset=UTF-8; name="v2-0002-Refactor-recordExtObjInitPriv.patch" Content-Disposition: attachment; filename="v2-0002-Refactor-recordExtObjInitPriv.patch" Content-Transfer-Encoding: base64 RnJvbSBkMDkzZmUxMzg0ZjlmOTU3NzljY2QxM2NhYTNmMjk2NzUwOGMzYzU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxNiBKYW4gMjAyMyAxMTo0OToyNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjIgMi8yXSBSZWZhY3RvciByZWNvcmRFeHRPYmpJbml0UHJpdigpCgpJbnN0 ZWFkIG9mIGhhbGYgYSBkb3plbiBvZiBtb3N0bHktZHVwbGljYXRlIGNvbmRpdGlvbmFsIGJy YW5jaGVzLAp3cml0ZSBvbmUgY29tbW9uIG9uZSB0aGF0IGNhbiBoYW5kbGUgbW9zdCBjYXRh bG9ncy4gIFdlIGFscmVhZHkgaGF2ZQphbGwgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQsIHN1 Y2ggYXMgd2hpY2ggc3lzdGVtIGNhdGFsb2cgY29ycmVzcG9uZHMKdG8gd2hpY2ggY2F0YWxv ZyB0YWJsZSBhbmQgd2hpY2ggY29sdW1uIGlzIHRoZSBBQ0wgY29sdW1uLgoKUmV2aWV3ZWQt Ynk6IE5hdGhhbiBCb3NzYXJ0IDxuYXRoYW5kYm9zc2FydEBnbWFpbC5jb20+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC81MDRiYzQ4 NS02YmQ2LWRkMWItZmUxMC1lNzM1MWFlYjMxMGRAZW50ZXJwcmlzZWRiLmNvbQotLS0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgfCAxNTIgKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE0NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCA3Y2IyZmFhMTg3Li5jNDIz MjM0NGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTQyNDEsOSArNDI0MSw2IEBAIHJl Y29yZERlcGVuZGVuY3lPbk5ld0FjbChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkLCBpbnQz MiBvYmpzdWJJZCwKICAqCiAgKiBGb3IgdGhlIG9iamVjdCBwYXNzZWQgaW4sIHRoaXMgd2ls bCByZWNvcmQgaXRzIEFDTCAoaWYgYW55KSBhbmQgdGhlIEFDTHMgb2YKICAqIGFueSBzdWIt b2JqZWN0cyAoZWc6IGNvbHVtbnMpIGludG8gcGdfaW5pdF9wcml2cy4KLSAqCi0gKiBBbnkg bmV3IGtpbmRzIG9mIG9iamVjdHMgd2hpY2ggaGF2ZSBBQ0xzIGFzc29jaWF0ZWQgd2l0aCB0 aGVtIGFuZCBjYW4gYmUKLSAqIGFkZGVkIHRvIGFuIGV4dGVuc2lvbiBzaG91bGQgYmUgYWRk ZWQgdG8gdGhlIGlmLWVsc2UgdHJlZSBiZWxvdy4KICAqLwogdm9pZAogcmVjb3JkRXh0T2Jq SW5pdFByaXYoT2lkIG9iam9pZCwgT2lkIGNsYXNzb2lkKQpAQCAtNDMzNiw3NCArNDMzMyw2 IEBAIHJlY29yZEV4dE9iakluaXRQcml2KE9pZCBvYmpvaWQsIE9pZCBjbGFzc29pZCkKIAog CQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCX0KLQkvKiBwZ19mb3JlaWduX2RhdGFfd3Jh cHBlciAqLwotCWVsc2UgaWYgKGNsYXNzb2lkID09IEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0 aW9uSWQpCi0JewotCQlEYXR1bQkJYWNsRGF0dW07Ci0JCWJvb2wJCWlzTnVsbDsKLQkJSGVh cFR1cGxlCXR1cGxlOwotCi0JCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05EQVRB V1JBUFBFUk9JRCwKLQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShvYmpvaWQpKTsKLQkJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBmb3JlaWduIGRhdGEgd3JhcHBlciAldSIsCi0JCQkJIG9iam9pZCk7 Ci0KLQkJYWNsRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoRk9SRUlHTkRBVEFXUkFQUEVST0lE LCB0dXBsZSwKLQkJCQkJCQkJICAgQW51bV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcl9mZHdh Y2wsCi0JCQkJCQkJCSAgICZpc051bGwpOwotCi0JCS8qIEFkZCB0aGUgcmVjb3JkLCBpZiBh bnksIGZvciB0aGUgdG9wLWxldmVsIG9iamVjdCAqLwotCQlpZiAoIWlzTnVsbCkKLQkJCXJl Y29yZEV4dGVuc2lvbkluaXRQcml2V29ya2VyKG9iam9pZCwgY2xhc3NvaWQsIDAsCi0JCQkJ CQkJCQkJICBEYXR1bUdldEFjbFAoYWNsRGF0dW0pKTsKLQotCQlSZWxlYXNlU3lzQ2FjaGUo dHVwbGUpOwotCX0KLQkvKiBwZ19mb3JlaWduX3NlcnZlciAqLwotCWVsc2UgaWYgKGNsYXNz b2lkID09IEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkKQotCXsKLQkJRGF0dW0JCWFjbERhdHVt OwotCQlib29sCQlpc051bGw7Ci0JCUhlYXBUdXBsZQl0dXBsZTsKLQotCQl0dXBsZSA9IFNl YXJjaFN5c0NhY2hlMShGT1JFSUdOU0VSVkVST0lELCBPYmplY3RJZEdldERhdHVtKG9iam9p ZCkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQotCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZvcmVpZ24gc2VydmVyICV1IiwKLQkJCQkgb2Jq b2lkKTsKLQotCQlhY2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihGT1JFSUdOU0VSVkVST0lE LCB0dXBsZSwKLQkJCQkJCQkJICAgQW51bV9wZ19mb3JlaWduX3NlcnZlcl9zcnZhY2wsCi0J CQkJCQkJCSAgICZpc051bGwpOwotCi0JCS8qIEFkZCB0aGUgcmVjb3JkLCBpZiBhbnksIGZv ciB0aGUgdG9wLWxldmVsIG9iamVjdCAqLwotCQlpZiAoIWlzTnVsbCkKLQkJCXJlY29yZEV4 dGVuc2lvbkluaXRQcml2V29ya2VyKG9iam9pZCwgY2xhc3NvaWQsIDAsCi0JCQkJCQkJCQkJ ICBEYXR1bUdldEFjbFAoYWNsRGF0dW0pKTsKLQotCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUp OwotCX0KLQkvKiBwZ19sYW5ndWFnZSAqLwotCWVsc2UgaWYgKGNsYXNzb2lkID09IExhbmd1 YWdlUmVsYXRpb25JZCkKLQl7Ci0JCURhdHVtCQlhY2xEYXR1bTsKLQkJYm9vbAkJaXNOdWxs OwotCQlIZWFwVHVwbGUJdHVwbGU7Ci0KLQkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoTEFO R09JRCwgT2JqZWN0SWRHZXREYXR1bShvYmpvaWQpKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBs YW5ndWFnZSAldSIsIG9iam9pZCk7Ci0KLQkJYWNsRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo TEFOR09JRCwgdHVwbGUsIEFudW1fcGdfbGFuZ3VhZ2VfbGFuYWNsLAotCQkJCQkJCQkgICAm aXNOdWxsKTsKLQotCQkvKiBBZGQgdGhlIHJlY29yZCwgaWYgYW55LCBmb3IgdGhlIHRvcC1s ZXZlbCBvYmplY3QgKi8KLQkJaWYgKCFpc051bGwpCi0JCQlyZWNvcmRFeHRlbnNpb25Jbml0 UHJpdldvcmtlcihvYmpvaWQsIGNsYXNzb2lkLCAwLAotCQkJCQkJCQkJCSAgRGF0dW1HZXRB Y2xQKGFjbERhdHVtKSk7Ci0KLQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKLQl9CiAJLyog cGdfbGFyZ2VvYmplY3RfbWV0YWRhdGEgKi8KIAllbHNlIGlmIChjbGFzc29pZCA9PSBMYXJn ZU9iamVjdE1ldGFkYXRhUmVsYXRpb25JZCkKIAl7CkBAIC00NDQ2LDYwICs0Mzc1LDIxIEBA IHJlY29yZEV4dE9iakluaXRQcml2KE9pZCBvYmpvaWQsIE9pZCBjbGFzc29pZCkKIAogCQlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOwogCX0KLQkvKiBwZ19uYW1lc3BhY2UgKi8KLQllbHNl IGlmIChjbGFzc29pZCA9PSBOYW1lc3BhY2VSZWxhdGlvbklkKQorCS8qIFRoaXMgd2lsbCBl cnJvciBvbiB1bnN1cHBvcnRlZCBjbGFzc29pZC4gKi8KKwllbHNlIGlmIChnZXRfb2JqZWN0 X2F0dG51bV9hY2woY2xhc3NvaWQpICE9IEludmFsaWRBdHRyTnVtYmVyKQogCXsKIAkJRGF0 dW0JCWFjbERhdHVtOwogCQlib29sCQlpc051bGw7CiAJCUhlYXBUdXBsZQl0dXBsZTsKIAot CQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShOQU1FU1BBQ0VPSUQsIE9iamVjdElkR2V0RGF0 dW0ob2Jqb2lkKSk7Ci0JCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCi0JCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hICV1Iiwgb2Jqb2lkKTsK LQotCQlhY2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihOQU1FU1BBQ0VPSUQsIHR1cGxlLAot CQkJCQkJCQkgICBBbnVtX3BnX25hbWVzcGFjZV9uc3BhY2wsICZpc051bGwpOwotCi0JCS8q IEFkZCB0aGUgcmVjb3JkLCBpZiBhbnksIGZvciB0aGUgdG9wLWxldmVsIG9iamVjdCAqLwot CQlpZiAoIWlzTnVsbCkKLQkJCXJlY29yZEV4dGVuc2lvbkluaXRQcml2V29ya2VyKG9iam9p ZCwgY2xhc3NvaWQsIDAsCi0JCQkJCQkJCQkJICBEYXR1bUdldEFjbFAoYWNsRGF0dW0pKTsK LQotCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwotCX0KLQkvKiBwZ19wcm9jICovCi0JZWxz ZSBpZiAoY2xhc3NvaWQgPT0gUHJvY2VkdXJlUmVsYXRpb25JZCkKLQl7Ci0JCURhdHVtCQlh Y2xEYXR1bTsKLQkJYm9vbAkJaXNOdWxsOwotCQlIZWFwVHVwbGUJdHVwbGU7Ci0KLQkJdHVw bGUgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShvYmpvaWQp KTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKLQkJCWVsb2coRVJST1IsICJj YWNoZSBsb29rdXAgZmFpbGVkIGZvciBmdW5jdGlvbiAldSIsIG9iam9pZCk7Ci0KLQkJYWNs RGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgdHVwbGUsIEFudW1fcGdfcHJvY19w cm9hY2wsCi0JCQkJCQkJCSAgICZpc051bGwpOwotCi0JCS8qIEFkZCB0aGUgcmVjb3JkLCBp ZiBhbnksIGZvciB0aGUgdG9wLWxldmVsIG9iamVjdCAqLwotCQlpZiAoIWlzTnVsbCkKLQkJ CXJlY29yZEV4dGVuc2lvbkluaXRQcml2V29ya2VyKG9iam9pZCwgY2xhc3NvaWQsIDAsCi0J CQkJCQkJCQkJICBEYXR1bUdldEFjbFAoYWNsRGF0dW0pKTsKLQotCQlSZWxlYXNlU3lzQ2Fj aGUodHVwbGUpOwotCX0KLQkvKiBwZ190eXBlICovCi0JZWxzZSBpZiAoY2xhc3NvaWQgPT0g VHlwZVJlbGF0aW9uSWQpCi0JewotCQlEYXR1bQkJYWNsRGF0dW07Ci0JCWJvb2wJCWlzTnVs bDsKLQkJSGVhcFR1cGxlCXR1cGxlOwotCi0JCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZ UEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2Jqb2lkKSk7CisJCXR1cGxlID0gU2VhcmNoU3lz Q2FjaGUxKGdldF9vYmplY3RfY2F0Y2FjaGVfb2lkKGNsYXNzb2lkKSwKKwkJCQkJCQkJT2Jq ZWN0SWRHZXREYXR1bShvYmpvaWQpKTsKIAkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxl KSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlICV1Iiwg b2Jqb2lkKTsKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciAlcyAl dSIsCisJCQkJIGdldF9vYmplY3RfY2xhc3NfZGVzY3IoY2xhc3NvaWQpLCBvYmpvaWQpOwog Ci0JCWFjbERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFRZUEVPSUQsIHR1cGxlLCBBbnVtX3Bn X3R5cGVfdHlwYWNsLAorCQlhY2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihnZXRfb2JqZWN0 X2NhdGNhY2hlX29pZChjbGFzc29pZCksIHR1cGxlLAorCQkJCQkJCQkgICBnZXRfb2JqZWN0 X2F0dG51bV9hY2woY2xhc3NvaWQpLAogCQkJCQkJCQkgICAmaXNOdWxsKTsKIAogCQkvKiBB ZGQgdGhlIHJlY29yZCwgaWYgYW55LCBmb3IgdGhlIHRvcC1sZXZlbCBvYmplY3QgKi8KQEAg LTQ1MDksMzIgKzQzOTksNiBAQCByZWNvcmRFeHRPYmpJbml0UHJpdihPaWQgb2Jqb2lkLCBP aWQgY2xhc3NvaWQpCiAKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKIAl9Ci0JZWxzZSBp ZiAoY2xhc3NvaWQgPT0gQWNjZXNzTWV0aG9kUmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lk ID09IENhc3RSZWxhdGlvbklkIHx8Ci0JCQkgY2xhc3NvaWQgPT0gQ29sbGF0aW9uUmVsYXRp b25JZCB8fAotCQkJIGNsYXNzb2lkID09IENvbnZlcnNpb25SZWxhdGlvbklkIHx8Ci0JCQkg Y2xhc3NvaWQgPT0gRXZlbnRUcmlnZ2VyUmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lkID09 IE9wZXJhdG9yUmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lkID09IE9wZXJhdG9yQ2xhc3NS ZWxhdGlvbklkIHx8Ci0JCQkgY2xhc3NvaWQgPT0gT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklk IHx8Ci0JCQkgY2xhc3NvaWQgPT0gVFNDb25maWdSZWxhdGlvbklkIHx8Ci0JCQkgY2xhc3Nv aWQgPT0gVFNEaWN0aW9uYXJ5UmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lkID09IFRTUGFy c2VyUmVsYXRpb25JZCB8fAotCQkJIGNsYXNzb2lkID09IFRTVGVtcGxhdGVSZWxhdGlvbklk IHx8Ci0JCQkgY2xhc3NvaWQgPT0gVHJhbnNmb3JtUmVsYXRpb25JZAotCQkpCi0JewotCQkv KiBubyBBQ0wgZm9yIHRoZXNlIG9iamVjdCB0eXBlcywgc28gZG8gbm90aGluZy4gKi8KLQl9 Ci0KLQkvKgotCSAqIGNvbXBsYWluIGlmIHdlIGFyZSBnaXZlbiBhIGNsYXNzIE9JRCBmb3Ig YSBjbGFzcyB0aGF0IGV4dGVuc2lvbnMgZG9uJ3QKLQkgKiBzdXBwb3J0IG9yIHRoYXQgd2Ug ZG9uJ3QgcmVjb2duaXplLgotCSAqLwotCWVsc2UKLQl7Ci0JCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgb3IgdW5zdXBwb3J0ZWQgY2xhc3MgT0lEOiAldSIsIGNsYXNzb2lkKTsKLQl9 CiB9CiAKIC8qCi0tIAoyLjM5LjAKCg== --------------8bVDwUZ9BllCHzfiaaTVSCME--