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 1kmDSa-0004HU-O8 for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Dec 2020 10:09:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kmDSZ-0003Hp-1g for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Dec 2020 10:09:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kmDSY-0003Hi-1h for pgsql-hackers@lists.postgresql.org; Mon, 07 Dec 2020 10:09:34 +0000 Received: from [64.147.123.30] (helo=wforward1-smtp.messagingengine.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kmDSU-0002Kl-Be for pgsql-hackers@postgresql.org; Mon, 07 Dec 2020 10:09:32 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailforward.west.internal (Postfix) with ESMTP id CD94C98E for ; Mon, 7 Dec 2020 05:09:18 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 07 Dec 2020 05:09:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=IudeZ1sWWGtbhj1g08L8pi83hbcn9 oD8/foeFGQjWJs=; b=AxULiMEyRZ1jbaJ/oNIw3fTIuRptr0Sizq1yIEW21fUng fRUPou1Jos6IXjlIzpFbvtEDQdK7nubRcUOFBfVntPb5D0LaefVTwM01Sqyys7d/ p/CL6G05UJjgkGZ++Tyak4e/xKBFSPNBIDcD9mwKolJv72rflPYHjHFk8A+PbG5Q wMPDnZD8brP3XhBsl2+oGTdTBIqnSwi9dbYoKSHvN1bRsGAU7t6CGY9iuryikgel VVuK6VCmXd4Rh/42QfZk3BMIpypwmkqDCIfWv6dfkYI9T92nVbdPFnEA4Ie0nsAI KSh7HKCmoEZUGhvkaKsDeUm5Nhmy8Vrd50aP2uY0Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudejgedgudduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefvhffuohfkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeelfeejgffhteetvdekvdehuefhheejfeeggefghefhueelledtvdffheeljeef veenucfkphepkeejrddujeejrdejvddrudegvdenucevlhhushhtvghrufhiiigvpedtne curfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthesvghn thgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: from april.pezone.net (p57b1488e.dip0.t-ipconnect.de [87.177.72.142]) by mail.messagingengine.com (Postfix) with ESMTPA id B354324005D for ; Mon, 7 Dec 2020 05:09:17 -0500 (EST) To: pgsql-hackers From: Peter Eisentraut Subject: get_constraint_index() and conindid Organization: EnterpriseDB Message-ID: <4688d55c-9a2e-9a5a-d166-5f24fe0bf8db@enterprisedb.com> Date: Mon, 7 Dec 2020 11:09:16 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------51D4E5787B373AA1DCA260F2" Content-Language: en-US X-Host-Lookup-Failed: Reverse DNS lookup failed for 64.147.123.30 (deferred) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------51D4E5787B373AA1DCA260F2 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit get_constraint_index() does its work by going through pg_depend. It was added before pg_constraint.conindid was added, and some callers are still not changed. Are there reasons for that? Probably not. The attached patch changes get_constraint_index() to an lsyscache-style lookup instead. The nearby get_index_constraint() should probably also be changed to scan pg_constraint instead of pg_depend, but that doesn't have a syscache to use, so it would be a different approach, so I figured I'd ask about get_constraint_index() first. --------------51D4E5787B373AA1DCA260F2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Change-get_constraint_index-to-use-pg_constraint.con.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Change-get_constraint_index-to-use-pg_constraint.con.pa"; filename*1="tch" RnJvbSAyOTM3MTk0OWIyZTYxZjg5NGY2NTFlZWY5OTBjM2M2ZWFiZmE4MTQ1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IERlYyAyMDIwIDEwOjM4OjM2ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gQ2hhbmdlIGdldF9jb25zdHJhaW50X2luZGV4KCkgdG8gdXNlIHBnX2NvbnN0 cmFpbnQuY29uaW5kaWQKCkl0IHdhcyBzdGlsbCB1c2luZyBhIHNjYW4gb2YgcGdfZGVwZW5k IGluc3RlYWQgb2YgdXNpbmcgdGhlIGNvbmluZGlkCmNvbHVtbiB0aGF0IGhhcyBiZWVuIGFk ZGVkIHNpbmNlLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgICAgICB8 IDY5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jICAgICB8ICAxIC0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYyB8ICAxIC0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICB8 ICAzICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgfCAyNyArKysr KysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgIHwgIDIgLQog c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgIHwgIDEgKwogNyBmaWxlcyBj aGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYwppbmRleCAyNTI5MGM4MjFmLi40Mjk3OTE2OTRmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfZGVwZW5kLmMKQEAgLTk2OCw3NSArOTY4LDYgQEAgZ2V0SWRlbnRpdHlTZXF1 ZW5jZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBib29sIG1pc3Npbmdfb2spCiAJ cmV0dXJuIGxpbml0aWFsX29pZChzZXFsaXN0KTsKIH0KIAotLyoKLSAqIGdldF9jb25zdHJh aW50X2luZGV4Ci0gKgkJR2l2ZW4gdGhlIE9JRCBvZiBhIHVuaXF1ZSwgcHJpbWFyeS1rZXks IG9yIGV4Y2x1c2lvbiBjb25zdHJhaW50LAotICoJCXJldHVybiB0aGUgT0lEIG9mIHRoZSB1 bmRlcmx5aW5nIGluZGV4LgotICoKLSAqIFJldHVybiBJbnZhbGlkT2lkIGlmIHRoZSBpbmRl eCBjb3VsZG4ndCBiZSBmb3VuZDsgdGhpcyBzdWdnZXN0cyB0aGUKLSAqIGdpdmVuIE9JRCBp cyBib2d1cywgYnV0IHdlIGxlYXZlIGl0IHRvIGNhbGxlciB0byBkZWNpZGUgd2hhdCB0byBk by4KLSAqLwotT2lkCi1nZXRfY29uc3RyYWludF9pbmRleChPaWQgY29uc3RyYWludElkKQot ewotCU9pZAkJCWluZGV4SWQgPSBJbnZhbGlkT2lkOwotCVJlbGF0aW9uCWRlcFJlbDsKLQlT Y2FuS2V5RGF0YSBrZXlbM107Ci0JU3lzU2NhbkRlc2Mgc2NhbjsKLQlIZWFwVHVwbGUJdHVw OwotCi0JLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0aGUgZGVwZW5kZW50 IGluZGV4ICovCi0JZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBBY2Nl c3NTaGFyZUxvY2spOwotCi0JU2NhbktleUluaXQoJmtleVswXSwKLQkJCQlBbnVtX3BnX2Rl cGVuZF9yZWZjbGFzc2lkLAotCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK LQkJCQlPYmplY3RJZEdldERhdHVtKENvbnN0cmFpbnRSZWxhdGlvbklkKSk7Ci0JU2Nhbktl eUluaXQoJmtleVsxXSwKLQkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKLQkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCi0JCQkJT2JqZWN0SWRHZXREYXR1bShjb25z dHJhaW50SWQpKTsKLQlTY2FuS2V5SW5pdCgma2V5WzJdLAotCQkJCUFudW1fcGdfZGVwZW5k X3JlZm9ianN1YmlkLAotCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9JTlQ0RVEsCi0J CQkJSW50MzJHZXREYXR1bSgwKSk7Ci0KLQlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGRl cFJlbCwgRGVwZW5kUmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKLQkJCQkJCQkgIE5VTEwsIDMs IGtleSk7Ci0KLQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRu ZXh0KHNjYW4pKSkKLQl7Ci0JCUZvcm1fcGdfZGVwZW5kIGRlcHJlYyA9IChGb3JtX3BnX2Rl cGVuZCkgR0VUU1RSVUNUKHR1cCk7Ci0KLQkJLyoKLQkJICogV2UgYXNzdW1lIGFueSBpbnRl cm5hbCBkZXBlbmRlbmN5IG9mIGFuIGluZGV4IG9uIHRoZSBjb25zdHJhaW50Ci0JCSAqIG11 c3QgYmUgd2hhdCB3ZSBhcmUgbG9va2luZyBmb3IuCi0JCSAqLwotCQlpZiAoZGVwcmVjLT5j bGFzc2lkID09IFJlbGF0aW9uUmVsYXRpb25JZCAmJgotCQkJZGVwcmVjLT5vYmpzdWJpZCA9 PSAwICYmCi0JCQlkZXByZWMtPmRlcHR5cGUgPT0gREVQRU5ERU5DWV9JTlRFUk5BTCkKLQkJ ewotCQkJY2hhcgkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChkZXByZWMtPm9iamlkKTsK LQotCQkJLyoKLQkJCSAqIFRoaXMgaXMgcHVyZSBwYXJhbm9pYTsgdGhlcmUgc2hvdWxkbid0 IGJlIGFueSBvdGhlciByZWxraW5kcwotCQkJICogZGVwZW5kZW50IG9uIGEgY29uc3RyYWlu dC4KLQkJCSAqLwotCQkJaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9JTkRFWCAmJgotCQkJCXJl bGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkKLQkJCQljb250aW51ZTsKLQot CQkJaW5kZXhJZCA9IGRlcHJlYy0+b2JqaWQ7Ci0JCQlicmVhazsKLQkJfQotCX0KLQotCXN5 c3RhYmxlX2VuZHNjYW4oc2Nhbik7Ci0JdGFibGVfY2xvc2UoZGVwUmVsLCBBY2Nlc3NTaGFy ZUxvY2spOwotCi0JcmV0dXJuIGluZGV4SWQ7Ci19Ci0KIC8qCiAgKiBnZXRfaW5kZXhfY29u c3RyYWludAogICoJCUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lE IG9mIHRoZSBvd25pbmcgdW5pcXVlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRl eCA0NmYxNjM3ZTc3Li4xZmE5ZjE5ZjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKLSNpbmNs dWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIKICNpbmNsdWRlICJjYXRhbG9nL2hlYXAuaCIK ICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCAzZTk0MjU2 ZDM0Li5kYWYxNzU5NjIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5j CkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgotI2lu Y2x1ZGUgImNhdGFsb2cvZGVwZW5kZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5o IgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Ft LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggYzJjNmRmMmE0Zi4uYWQ1 ODJmOTlhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMjQsNyArMjQs NiBAQAogI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9z eXNhdHRyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCi0jaW5jbHVkZSAiY2F0YWxv Zy9kZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hZ2dyZWdhdGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hdXRoaWQu aCIKQEAgLTIxNDAsNyArMjEzOSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihP aWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCiAJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAotCQkJCWluZGV4SWQgPSBnZXRfY29uc3RyYWludF9p bmRleChjb25zdHJhaW50SWQpOworCQkJCWluZGV4SWQgPSBjb25Gb3JtLT5jb25pbmRpZDsK IAogCQkJCS8qIEJ1aWxkIGluY2x1ZGluZyBjb2x1bW4gbGlzdCAoZnJvbSBwZ19pbmRleC5p bmRrZXlzKSAqLwogCQkJCWluZHR1cCA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBP YmplY3RJZEdldERhdHVtKGluZGV4SWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKaW5kZXggYWUyMzI5OTE2Mi4uNDdhODM2NTg0OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKQEAgLTEwOTQsNiArMTA5NCwzMyBAQCBnZXRfY29uc3RyYWlu dF9uYW1lKE9pZCBjb25vaWQpCiAJCXJldHVybiBOVUxMOwogfQogCisvKgorICogZ2V0X2Nv bnN0cmFpbnRfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGEgdW5pcXVlLCBwcmltYXJ5 LWtleSwgb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQsCisgKgkJcmV0dXJuIHRoZSBPSUQgb2Yg dGhlIHVuZGVybHlpbmcgaW5kZXguCisgKgorICogUmV0dXJuIEludmFsaWRPaWQgaWYgdGhl IGluZGV4IGNvdWxkbid0IGJlIGZvdW5kOyB0aGlzIHN1Z2dlc3RzIHRoZQorICogZ2l2ZW4g T0lEIGlzIGJvZ3VzLCBidXQgd2UgbGVhdmUgaXQgdG8gY2FsbGVyIHRvIGRlY2lkZSB3aGF0 IHRvIGRvLgorICovCitPaWQKK2dldF9jb25zdHJhaW50X2luZGV4KE9pZCBjb25vaWQpCit7 CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELCBP YmplY3RJZEdldERhdHVtKGNvbm9pZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkK Kwl7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb250dXAgPSAoRm9ybV9wZ19jb25zdHJhaW50 KSBHRVRTVFJVQ1QodHApOworCQlPaWQJCQlyZXN1bHQ7CisKKwkJcmVzdWx0ID0gY29udHVw LT5jb25pbmRpZDsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsK Kwl9CisJZWxzZQorCQlyZXR1cm4gSW52YWxpZE9pZDsKK30KKwogLyoJCQkJLS0tLS0tLS0t LSBMQU5HVUFHRSBDQUNIRSAtLS0tLS0tLS0tCQkJCQkgKi8KIAogY2hhciAqCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IDkwMWQ1MDE5Y2QuLjFmY2M0YTM5ZWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0yMzUsOCArMjM1LDYgQEAgZXh0ZXJuIGJv b2wgc2VxdWVuY2VJc093bmVkKE9pZCBzZXFJZCwgY2hhciBkZXB0eXBlLCBPaWQgKnRhYmxl SWQsIGludDMyICpjb2xJZCkKIGV4dGVybiBMaXN0ICpnZXRPd25lZFNlcXVlbmNlcyhPaWQg cmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRJZGVudGl0eVNlcXVlbmNlKE9pZCByZWxpZCwgQXR0 ck51bWJlciBhdHRudW0sIGJvb2wgbWlzc2luZ19vayk7CiAKLWV4dGVybiBPaWQJZ2V0X2Nv bnN0cmFpbnRfaW5kZXgoT2lkIGNvbnN0cmFpbnRJZCk7Ci0KIGV4dGVybiBPaWQJZ2V0X2lu ZGV4X2NvbnN0cmFpbnQoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4 X3JlZl9jb25zdHJhaW50cyhPaWQgaW5kZXhJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmlu ZGV4IGZlY2ZlMWY0ZjYuLmM5N2UxMmRkZTggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBA IC05Niw2ICs5Niw3IEBAIGV4dGVybiBPaWQJZ2V0X2Nhc3Rfb2lkKE9pZCBzb3VyY2V0eXBl aWQsIE9pZCB0YXJnZXR0eXBlaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gY2hhciAq Z2V0X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsb2lkKTsKIGV4dGVybiBib29sIGdldF9jb2xs YXRpb25faXNkZXRlcm1pbmlzdGljKE9pZCBjb2xsb2lkKTsKIGV4dGVybiBjaGFyICpnZXRf Y29uc3RyYWludF9uYW1lKE9pZCBjb25vaWQpOworZXh0ZXJuIE9pZAlnZXRfY29uc3RyYWlu dF9pbmRleChPaWQgY29ub2lkKTsKIGV4dGVybiBjaGFyICpnZXRfbGFuZ3VhZ2VfbmFtZShP aWQgbGFuZ29pZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X29wY2xhc3Nf ZmFtaWx5KE9pZCBvcGNsYXNzKTsKIGV4dGVybiBPaWQJZ2V0X29wY2xhc3NfaW5wdXRfdHlw ZShPaWQgb3BjbGFzcyk7Ci0tIAoyLjI5LjIKCg== --------------51D4E5787B373AA1DCA260F2--