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 1rVOLu-00GdQ3-A8 for pgsql-bugs@arkaria.postgresql.org; Thu, 01 Feb 2024 04:07:03 +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 1rVOLs-0014Xa-Qn for pgsql-bugs@arkaria.postgresql.org; Thu, 01 Feb 2024 04:07:00 +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.94.2) (envelope-from ) id 1rVOLs-0014XS-60 for pgsql-bugs@lists.postgresql.org; Thu, 01 Feb 2024 04:07:00 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rVOLl-004RDP-Iz for pgsql-bugs@lists.postgresql.org; Thu, 01 Feb 2024 04:06:58 +0000 Received: from [192.168.1.58] (unknown [1.20.173.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 40EEAE21084; Thu, 1 Feb 2024 07:06:47 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1706760410; bh=r9KSjyVjd2jffHXNl1VFC+Y3ozkxgpPWL31Rx91KLy0=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=tkbCx8tgDhDtQofTcUUrERZwA1btr2kCw/g597xOku7KNRF+4lijCWP6YpLq2BPga wYnbgFymtFy79s1jnWFR9L5B0xPhENlCJCm7hoUx75fYGT1m7ImRIKIyp5NvjCBA76 yPT3oJMVVAxD/v9Ug254ldiV7LaYQZlwo08U9fpC45Pg6e2YjbAAfw9wgAf0kz7OJf svEe1ipnnwlPUgBIb/6puhohIcRRyI2qtwUE8Mzy4tb5zJwNqspuO/I1IAbWGqL7zv PHlCUyxxRxz8r1QJmNLHSG1UU5OsUV5eJZpNu5lchBD08W5zg/URe5EMRvhO74TvAO MCzcl7Tx7cSUA== Content-Type: multipart/mixed; boundary="------------skSFZ0qQX0B3B0erMUgDF8bH" Message-ID: <41499cc3-31a1-4c9e-85d6-45e6d901ea6a@postgrespro.ru> Date: Thu, 1 Feb 2024 11:06:45 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: v17 Possible Union All Bug To: Alexander Korotkov , "David G. Johnston" Cc: David Rowley , Alexander Korotkov , PostgreSQL Bug List References: Content-Language: en-US From: Andrei Lepikhov Organization: Postgres Professional In-Reply-To: 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. --------------skSFZ0qQX0B3B0erMUgDF8bH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 30/1/2024 04:45, Alexander Korotkov wrote: > On Mon, Jan 29, 2024 at 11:32 PM David G. Johnston > wrote: >> >> On Mon, Jan 29, 2024 at 9:19 AM David G. Johnston wrote: >>> >>> On Fri, Jan 26, 2024 at 5:36 PM David Rowley wrote: >>>> >>>> On Sat, 27 Jan 2024 at 13:19, David Rowley wrote: >>>>> Are the results correct if you SET enable_presorted_aggregate=0;? >>>> >>> >>> Apparently I didn't reply-all... >>> >>> Yes, the problem goes away when I disabled presorted_aggregate >>> >>> I'll see if that knowledge can help build a better reproducer. >>> >> >> I've deferred doing a better reproducer for the moment, I reliably got: >> initdb >> psql --file ~/unionall-repro.sql >> psql -c 'select * from rolegraph.role_graph_broken;' >> >> oid | role_type | rolname | rolsuper | administration >> -------+-----------+--------------------+----------+----------------------------------------------- >> 16390 | User | u6_green_leader_su | f | mog of g6a_fixedops_manager_su from superuser+ >> | | | | mog of g6c_service_manager_su from superuser + >> | | | | mog of g6d_service_advisor_su from superuser + >> | | | | mog of g6e_service_tech_su from superuser + >> | | | | mog of g6c_service_manager_su from cr_admin >> (1 row) >> >> to be produced for the bad bisect result and the correct nested result for *manager* to produce on the good result. > > > Thank you for noticing. I'm investigating this. Very curious bug. I simplified the test a bit (see in attachment), but still can't replace system tables, like pg_authid, with a plain table. Will try further. -- regards, Andrei Lepikhov Postgres Professional --------------skSFZ0qQX0B3B0erMUgDF8bH Content-Type: application/sql; name="unionall-repro-c.sql" Content-Disposition: attachment; filename="unionall-repro-c.sql" Content-Transfer-Encoding: base64 CkNSRUFURSBST0xFIGNyX2FkbWluOwpBTFRFUiBST0xFIGNyX2FkbWluIFdJVEggTk9TVVBF UlVTRVIgSU5IRVJJVCBDUkVBVEVST0xFIE5PQ1JFQVRFREIgTE9HSU4gTk9SRVBMSUNBVElP TiBOT0JZUEFTU1JMUzsKQUxURVIgUk9MRSBkYXZpZGogV0lUSCBTVVBFUlVTRVIgSU5IRVJJ VCBDUkVBVEVST0xFIENSRUFURURCIExPR0lOIFJFUExJQ0FUSU9OIEJZUEFTU1JMUzsKQ1JF QVRFIFJPTEUgZzZhX2ZpeGVkb3BzX21hbmFnZXJfc3U7CkFMVEVSIFJPTEUgZzZhX2ZpeGVk b3BzX21hbmFnZXJfc3UgV0lUSCBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBO T0NSRUFURURCIE5PTE9HSU4gTk9SRVBMSUNBVElPTiBOT0JZUEFTU1JMUzsKQ1JFQVRFIFJP TEUgZzZjX3NlcnZpY2VfbWFuYWdlcl9zdTsKQUxURVIgUk9MRSBnNmNfc2VydmljZV9tYW5h Z2VyX3N1IFdJVEggTk9TVVBFUlVTRVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9DUkVBVEVE QiBOT0xPR0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CkNSRUFURSBST0xFIGc2ZF9z ZXJ2aWNlX2Fkdmlzb3Jfc3U7CkFMVEVSIFJPTEUgZzZkX3NlcnZpY2VfYWR2aXNvcl9zdSBX SVRIIE5PU1VQRVJVU0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5PQ1JFQVRFREIgTk9MT0dJ TiBOT1JFUExJQ0FUSU9OIE5PQllQQVNTUkxTOwpDUkVBVEUgUk9MRSBnNmVfc2VydmljZV90 ZWNoX3N1OwpBTFRFUiBST0xFIGc2ZV9zZXJ2aWNlX3RlY2hfc3UgV0lUSCBOT1NVUEVSVVNF UiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURCIE5PTE9HSU4gTk9SRVBMSUNBVElP TiBOT0JZUEFTU1JMUzsKQ1JFQVRFIFJPTEUgdTZfYmx1ZV9sZWFkZXJfc3U7CkFMVEVSIFJP TEUgdTZfYmx1ZV9sZWFkZXJfc3UgV0lUSCBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRF Uk9MRSBOT0NSRUFURURCIExPR0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CkNSRUFU RSBST0xFIHU2X2dyZWVuX2xlYWRlcl9zdTsKQUxURVIgUk9MRSB1Nl9ncmVlbl9sZWFkZXJf c3UgV0lUSCBOT1NVUEVSVVNFUiBJTkhFUklUIE5PQ1JFQVRFUk9MRSBOT0NSRUFURURCIExP R0lOIE5PUkVQTElDQVRJT04gTk9CWVBBU1NSTFM7CgotLQotLSBVc2VyIENvbmZpZ3VyYXRp b25zCi0tCgoKLS0KLS0gUm9sZSBtZW1iZXJzaGlwcwotLQoKR1JBTlQgZzZhX2ZpeGVkb3Bz X21hbmFnZXJfc3UgVE8gdTZfZ3JlZW5fbGVhZGVyX3N1IFdJVEggQURNSU4gT1BUSU9OLCBJ TkhFUklUIEZBTFNFLCBTRVQgRkFMU0UgR1JBTlRFRCBCWSBkYXZpZGo7CkdSQU5UIGc2YV9m aXhlZG9wc19tYW5hZ2VyX3N1IFRPIHU2X2JsdWVfbGVhZGVyX3N1IFdJVEggSU5IRVJJVCBU UlVFIEdSQU5URUQgQlkgdTZfZ3JlZW5fbGVhZGVyX3N1OwpHUkFOVCBnNmNfc2VydmljZV9t YW5hZ2VyX3N1IFRPIGNyX2FkbWluIFdJVEggQURNSU4gT1BUSU9OLCBJTkhFUklUIEZBTFNF LCBTRVQgRkFMU0UgR1JBTlRFRCBCWSBkYXZpZGo7CkdSQU5UIGc2Y19zZXJ2aWNlX21hbmFn ZXJfc3UgVE8gdTZfZ3JlZW5fbGVhZGVyX3N1IFdJVEggQURNSU4gT1BUSU9OLCBJTkhFUklU IEZBTFNFLCBTRVQgRkFMU0UgR1JBTlRFRCBCWSBjcl9hZG1pbjsKR1JBTlQgZzZjX3NlcnZp Y2VfbWFuYWdlcl9zdSBUTyB1Nl9ncmVlbl9sZWFkZXJfc3UgV0lUSCBBRE1JTiBPUFRJT04s IElOSEVSSVQgRkFMU0UsIFNFVCBGQUxTRSBHUkFOVEVEIEJZIGRhdmlkajsKR1JBTlQgZzZj X3NlcnZpY2VfbWFuYWdlcl9zdSBUTyBnNmFfZml4ZWRvcHNfbWFuYWdlcl9zdSBXSVRIIElO SEVSSVQgVFJVRSBHUkFOVEVEIEJZIHU2X2dyZWVuX2xlYWRlcl9zdTsKR1JBTlQgZzZkX3Nl cnZpY2VfYWR2aXNvcl9zdSBUTyBjcl9hZG1pbiBXSVRIIEFETUlOIE9QVElPTiwgSU5IRVJJ VCBGQUxTRSwgU0VUIEZBTFNFIEdSQU5URUQgQlkgZGF2aWRqOwpHUkFOVCBnNmRfc2Vydmlj ZV9hZHZpc29yX3N1IFRPIGc2Y19zZXJ2aWNlX21hbmFnZXJfc3UgV0lUSCBJTkhFUklUIFRS VUUgR1JBTlRFRCBCWSBjcl9hZG1pbjsKR1JBTlQgZzZkX3NlcnZpY2VfYWR2aXNvcl9zdSBU TyB1Nl9ncmVlbl9sZWFkZXJfc3UgV0lUSCBBRE1JTiBPUFRJT04sIElOSEVSSVQgRkFMU0Us IFNFVCBGQUxTRSBHUkFOVEVEIEJZIGRhdmlkajsKR1JBTlQgZzZkX3NlcnZpY2VfYWR2aXNv cl9zdSBUTyBnNmNfc2VydmljZV9tYW5hZ2VyX3N1IFdJVEggSU5IRVJJVCBGQUxTRSBHUkFO VEVEIEJZIHU2X2dyZWVuX2xlYWRlcl9zdTsKR1JBTlQgZzZlX3NlcnZpY2VfdGVjaF9zdSBU TyBjcl9hZG1pbiBXSVRIIEFETUlOIE9QVElPTiwgSU5IRVJJVCBGQUxTRSwgU0VUIEZBTFNF IEdSQU5URUQgQlkgZGF2aWRqOwpHUkFOVCBnNmVfc2VydmljZV90ZWNoX3N1IFRPIGc2ZF9z ZXJ2aWNlX2Fkdmlzb3Jfc3UgV0lUSCBJTkhFUklUIFRSVUUgR1JBTlRFRCBCWSBjcl9hZG1p bjsKR1JBTlQgZzZlX3NlcnZpY2VfdGVjaF9zdSBUTyB1Nl9ncmVlbl9sZWFkZXJfc3UgV0lU SCBBRE1JTiBPUFRJT04sIElOSEVSSVQgRkFMU0UsIFNFVCBGQUxTRSBHUkFOVEVEIEJZIGRh dmlkajsKR1JBTlQgZzZlX3NlcnZpY2VfdGVjaF9zdSBUTyBnNmRfc2VydmljZV9hZHZpc29y X3N1IFdJVEggSU5IRVJJVCBUUlVFLCBTRVQgRkFMU0UgR1JBTlRFRCBCWSB1Nl9ncmVlbl9s ZWFkZXJfc3U7CgoKCkNSRUFURSBWSUVXIHBnX3JvbGVzXzEgQVMKICAgIFNFTEVDVAogICAg ICAgIHJvbG5hbWUsCiAgICAgICAgcm9sc3VwZXIsCiAgICAgICAgcm9sY3JlYXRlcm9sZSwK ICAgICAgICByb2xjYW5sb2dpbiwKICAgICAgICBwZ19hdXRoaWQub2lkCiAgICBGUk9NIHBn X2F1dGhpZCBMRUZUIEpPSU4gcGdfZGJfcm9sZV9zZXR0aW5nIHMKICAgIE9OIChwZ19hdXRo aWQub2lkID0gc2V0cm9sZSBBTkQgc2V0ZGF0YWJhc2UgPSAwKTsKCgpDUkVBVEUgVklFVyBy b2xlX3JlbGF0aW9uc2hpcCBBUwogV0lUSCBSRUNVUlNJVkUgY3RlX3JvbGVfcmVsYXRpb25z aGlwIEFTICgKICAgICAgICAgU0VMRUNUIHIub2lkIEFTIGxlYWZfbm9kZSwKICAgICAgICAg ICAgci5vaWQgQVMgZ3JvdXBfbm9kZSwKICAgICAgICAgICAgTlVMTDo6b2lkIEFTIGdyYW50 b3IsCiAgICAgICAgICAgIDAgQVMgbGV2ZWwsCiAgICAgICAgICAgIEFSUkFZW106Om9pZFtd IEFTIHZpYSwKICAgICAgICAgICAgQVJSQVlbXTo6dGV4dFtdIEFTIHZpYV9uYW1lcywKICAg ICAgICAgICAgQVJSQVlbXTo6dGV4dFtdIEFTIHByaXZzX3BhdGgsCiAgICAgICAgICAgIEFS UkFZW106OnRleHRbXSBBUyBncmFudG9yX3BhdGgsCiAgICAgICAgICAgIE5VTEw6OmJvb2xl YW4gQVMgZ3JhbnRfaXNfZW1wdHksCiAgICAgICAgICAgIE5VTEw6OmJvb2xlYW4gQVMgZ290 X3NldCwKICAgICAgICAgICAgTlVMTDo6Ym9vbGVhbiBBUyBnb3RfaW5oZXJpdCwKICAgICAg ICAgICAgTlVMTDo6Ym9vbGVhbiBBUyBnb3RfYWRtaW4KICAgICAgICAgICBGUk9NIHBnX3Jv bGVzXzEgcgogICAgICAgIFVOSU9OIEFMTAogICAgICAgICBTRUxFQ1QgY2IubGVhZl9ub2Rl LAogICAgICAgICAgICBjYi5ncm91cF9ub2RlLAogICAgICAgICAgICBjYi5ncmFudG9yLAog ICAgICAgICAgICBjYi5sZXZlbCwKICAgICAgICAgICAgY2IudmlhLAogICAgICAgICAgICBj Yi52aWFfbmFtZXMsCiAgICAgICAgICAgIGNiLnByaXZzX3BhdGgsCiAgICAgICAgICAgIGNi LmdyYW50b3JfcGF0aCwKICAgICAgICAgICAgY2IuZ3JhbnRfaXNfZW1wdHksCiAgICAgICAg ICAgIGNiLmdvdF9zZXQsCiAgICAgICAgICAgIGNiLmdvdF9pbmhlcml0LAogICAgICAgICAg ICBjYi5nb3RfYWRtaW4KICAgICAgICAgICBGUk9NICggU0VMRUNUIGEubGVhZl9ub2RlLAog ICAgICAgICAgICAgICAgICAgIG0ucm9sZWlkIEFTIGdyb3VwX25vZGUsCiAgICAgICAgICAg ICAgICAgICAgbS5ncmFudG9yLAogICAgICAgICAgICAgICAgICAgIChhLmxldmVsICsgMSkg QVMgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgKGEudmlhIHx8IG0ucm9sZWlkKSBBUyB2 aWEsCiAgICAgICAgICAgICAgICAgICAgKGEudmlhX25hbWVzIHx8ICgobS5yb2xlaWQpOjpy ZWdyb2xlKTo6dGV4dCkgQVMgdmlhX25hbWVzLAogICAgICAgICAgICAgICAgICAgIChhLnBy aXZzX3BhdGggfHwgKCgoCiAgICAgICAgICAgICAgICAgICAgICAgIENBU0UKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gKE5PVCAobS5zZXRfb3B0aW9uIE9SIG0uaW5oZXJp dF9vcHRpb24gT1IgbS5hZG1pbl9vcHRpb24pKSBUSEVOICdlJzo6dGV4dAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUxTRSAnJzo6dGV4dAogICAgICAgICAgICAgICAgICAgICAg ICBFTkQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgQ0FTRQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgV0hFTiBtLmFkbWluX29wdGlvbiBUSEVOICdhJzo6dGV4dAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgRUxTRSAnJzo6dGV4dAogICAgICAgICAgICAgICAgICAg ICAgICBFTkQpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIENBU0UKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gbS5zZXRfb3B0aW9uIFRIRU4gJ3MnOjp0ZXh0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFTFNFICcnOjp0ZXh0CiAgICAgICAgICAgICAgICAg ICAgICAgIEVORCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgQ0FTRQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgV0hFTiBtLmluaGVyaXRfb3B0aW9uIFRIRU4gJ2knOjp0ZXh0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTFNFICcnOjp0ZXh0CiAgICAgICAgICAg ICAgICAgICAgICAgIEVORCkpIEFTIHByaXZzX3BhdGgsCiAgICAgICAgICAgICAgICAgICAg KGEuZ3JhbnRvcl9wYXRoIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIENBU0UKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gKG0uZ3JhbnRvciA9ICgxMCk6Om9pZCkgVEhF TiAnc3VwZXJ1c2VyJzo6dGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRUxTRSAo KG0uZ3JhbnRvcik6OnJlZ3JvbGUpOjp0ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgIEVO RCkgQVMgZ3JhbnRvcl9wYXRoLAogICAgICAgICAgICAgICAgICAgIChOT1QgKG0uc2V0X29w dGlvbiBPUiBtLmluaGVyaXRfb3B0aW9uIE9SIG0uYWRtaW5fb3B0aW9uKSkgQVMgZ3JhbnRf aXNfZW1wdHksCiAgICAgICAgICAgICAgICAgICAgKENPQUxFU0NFKGEuZ290X3NldCwgdHJ1 ZSkgQU5EIG0uc2V0X29wdGlvbikgQVMgZ290X3NldCwKICAgICAgICAgICAgICAgICAgICAo bS5pbmhlcml0X29wdGlvbikgQVMgZ290X2luaGVyaXQsCiAgICAgICAgICAgICAgICAgICAg KENPQUxFU0NFKG0uYWRtaW5fb3B0aW9uLCBmYWxzZSkgQU5EICgoKGEubGV2ZWwgKyAxKSA9 IDEpIE9SIChhLmdvdF9zZXQgQU5EIG0uc2V0X29wdGlvbikgT1IgKGEuZ290X2luaGVyaXQg QU5EIG0uaW5oZXJpdF9vcHRpb24pIE9SICgobS5pbmhlcml0X29wdGlvbikgT1IgKENPQUxF U0NFKGEuZ290X3NldCwgZmFsc2UpIEFORCAoTk9UIENPQUxFU0NFKGEuZ290X2luaGVyaXQs IGZhbHNlKSkgQU5EICgoTk9UIG0uc2V0X29wdGlvbikgQU5EIG0uaW5oZXJpdF9vcHRpb24p KSkpKSBBUyBnb3RfYWRtaW4sCiAgICAgICAgICAgICAgICAgICAgKG0uaW5oZXJpdF9vcHRp b24gT1IgKENPQUxFU0NFKGEuZ290X3NldCwgZmFsc2UpIEFORCAoKE5PVCBtLnNldF9vcHRp b24pIEFORCBtLmluaGVyaXRfb3B0aW9uKSkpIEFTIGdvdF9pbmhlcml0X3ZpYV9zZXQKICAg ICAgICAgICAgICAgICAgIEZST00gKGN0ZV9yb2xlX3JlbGF0aW9uc2hpcCBhCiAgICAgICAg ICAgICAgICAgICAgIEpPSU4gcGdfYXV0aF9tZW1iZXJzIG0gT04gKChtLm1lbWJlciA9IGEu Z3JvdXBfbm9kZSkpKSkgY2IKICAgICAgICAgIFdIRVJFICgoY2IuZ3JhbnRfaXNfZW1wdHkg QU5EIChjYi5sZXZlbCA8PSAxKSkgT1IgY2IuZ290X3NldCBPUiBjYi5nb3RfaW5oZXJpdCBP UiBjYi5nb3RfaW5oZXJpdF92aWFfc2V0IE9SIGNiLmdvdF9hZG1pbikKICAgICAgICApCiBT RUxFQ1QgbGVhZl9ub2RlLAogICAgZ3JvdXBfbm9kZSwKICAgIGdyYW50b3IsCiAgICBsZXZl bCwKICAgIHZpYSwKICAgIHZpYV9uYW1lcywKICAgIHByaXZzX3BhdGgsCiAgICBncmFudG9y X3BhdGgsCiAgICBncmFudF9pc19lbXB0eSwKICAgIGdvdF9zZXQsCiAgICBnb3RfaW5oZXJp dCwKICAgIGdvdF9hZG1pbgogICBGUk9NIGN0ZV9yb2xlX3JlbGF0aW9uc2hpcDsKCi0tCi0t IE5hbWU6IHJvbGVfZ3JhcGhfZGV0YWlsOyBUeXBlOiBWSUVXOyBTY2hlbWE6IHJvbGVncmFw aDsgT3duZXI6IGRhdmlkagotLQoKQ1JFQVRFIFZJRVcgcm9sZV9ncmFwaF9kZXRhaWwgQVMK IFNFTEVDVCByLm9pZCwKICAgIHIucm9sbmFtZSwKICAgICAgICBDQVNFCiAgICAgICAgICAg IFdIRU4gci5yb2xjYW5sb2dpbiBUSEVOICdVc2VyJzo6dGV4dAogICAgICAgICAgICBFTFNF ICdHcm91cCc6OnRleHQKICAgICAgICBFTkQgQVMgcm9sZV90eXBlLAogICAgbW91Lm1lbWJl cm9mX3VzZXJzLAogICAgbW9nLm1lbWJlcm9mX2dyb3VwcywKICAgIG11Lm1lbWJlcl91c2Vy cywKICAgIG1nLm1lbWJlcl9ncm91cHMsCiAgICByLnJvbHN1cGVyLAogICAgci5yb2xjcmVh dGVyb2xlCiAgIEZST00gKCgoKHBnX3JvbGVzXzEgcgogICAgIEpPSU4gTEFURVJBTCAoIFNF TEVDVCBhcnJheV9hZ2coRElTVElOQ1QgYS5ncm91cF9ub2RlIE9SREVSIEJZIGEuZ3JvdXBf bm9kZSkgQVMgYXJyYXlfYWdnCiAgICAgICAgICAgRlJPTSAocm9sZV9yZWxhdGlvbnNoaXAg YQogICAgICAgICAgICAgSk9JTiBwZ19yb2xlc18xIHUgT04gKCgodS5vaWQgPSBhLmdyb3Vw X25vZGUpIEFORCB1LnJvbGNhbmxvZ2luKSkpCiAgICAgICAgICBXSEVSRSAoKGEubGVhZl9u b2RlID0gci5vaWQpIEFORCAoci5vaWQgPD4gYS5ncm91cF9ub2RlKSkpIG1vdShtZW1iZXJv Zl91c2VycykgT04gKHRydWUpKQogICAgIEpPSU4gTEFURVJBTCAoIFNFTEVDVCBhcnJheV9h Z2coRElTVElOQ1QgYS5ncm91cF9ub2RlIE9SREVSIEJZIGEuZ3JvdXBfbm9kZSkgQVMgYXJy YXlfYWdnCiAgICAgICAgICAgRlJPTSAocm9sZV9yZWxhdGlvbnNoaXAgYQogICAgICAgICAg ICAgSk9JTiBwZ19yb2xlc18xIHUgT04gKCgodS5vaWQgPSBhLmdyb3VwX25vZGUpIEFORCAo Tk9UIHUucm9sY2FubG9naW4pKSkpCiAgICAgICAgICBXSEVSRSAoKGEubGVhZl9ub2RlID0g ci5vaWQpIEFORCAoci5vaWQgPD4gYS5ncm91cF9ub2RlKSkpIG1vZyhtZW1iZXJvZl9ncm91 cHMpIE9OICh0cnVlKSkKICAgICBKT0lOIExBVEVSQUwgKCBTRUxFQ1QgYXJyYXlfYWdnKERJ U1RJTkNUIGEubGVhZl9ub2RlIE9SREVSIEJZIGEubGVhZl9ub2RlKSBBUyBhcnJheV9hZ2cK ICAgICAgICAgICBGUk9NIChyb2xlX3JlbGF0aW9uc2hpcCBhCiAgICAgICAgICAgICBKT0lO IHBnX3JvbGVzXzEgdSBPTiAoKCh1Lm9pZCA9IGEubGVhZl9ub2RlKSBBTkQgdS5yb2xjYW5s b2dpbikpKQogICAgICAgICAgV0hFUkUgKChhLmdyb3VwX25vZGUgPSByLm9pZCkgQU5EIChy Lm9pZCA8PiBhLmxlYWZfbm9kZSkpKSBtdShtZW1iZXJfdXNlcnMpIE9OICh0cnVlKSkKICAg ICBKT0lOIExBVEVSQUwgKCBTRUxFQ1QgYXJyYXlfYWdnKERJU1RJTkNUIGEubGVhZl9ub2Rl IE9SREVSIEJZIGEubGVhZl9ub2RlKSBBUyBhcnJheV9hZ2cKICAgICAgICAgICBGUk9NIChy b2xlX3JlbGF0aW9uc2hpcCBhCiAgICAgICAgICAgICBKT0lOIHBnX3JvbGVzXzEgdSBPTiAo KCh1Lm9pZCA9IGEubGVhZl9ub2RlKSBBTkQgKE5PVCB1LnJvbGNhbmxvZ2luKSkpKQogICAg ICAgICAgV0hFUkUgKChhLmdyb3VwX25vZGUgPSByLm9pZCkgQU5EIChyLm9pZCA8PiBhLmxl YWZfbm9kZSkpKSBtZyhtZW1iZXJfZ3JvdXBzKSBPTiAodHJ1ZSkpOwoKU0VUIGVuYWJsZV9n cm91cF9ieV9yZW9yZGVyaW5nPW9uOwpTRUxFQ1QgbGVhZl9yb2xlLm9pZCwgbGVhZl9yb2xl LnJvbGVfdHlwZSwgbGVhZl9yb2xlLnJvbG5hbWUsIGxlYWZfcm9sZS5yb2xzdXBlciwKICBh cnJheV90b19zdHJpbmcoQVJSQVkoCiAgICBTRUxFQ1QgJyAnOjp0ZXh0CiAgICAgIFVOSU9O IEFMTAogICAgU0VMRUNUIGZvcm1hdCgnJUkgZnJvbSAlcyc6OnRleHQsIG90aGVyX3JvbGUu cm9sbmFtZSwgc3RyaW5nX2FnZygnJzo6dGV4dCwgKCcKJzo6dGV4dCB8fCByZXBlYXQoJyAn Ojp0ZXh0LCAoKGxlbmd0aCgob3RoZXJfcm9sZS5yb2xuYW1lKTo6dGV4dCkgKyBsZW5ndGgo JyBmcm9tICc6OnRleHQpKSArIDMpKSkgT1JERVIgQlkgZ3JhbnRfaW5zdGFuY2UubGV2ZWws IGdyYW50X2luc3RhbmNlLmdyYW50b3IsIGdyYW50X2luc3RhbmNlLmdyYW50b3JfcGF0aCkp CgogICAgRlJPTSAoKCgodW5uZXN0KGxlYWZfcm9sZS5tZW1iZXJvZl9ncm91cHMpIG90aGVy KG90aGVyKQogICAgICBKT0lOIHBnX3JvbGVzXzEgb3RoZXJfcm9sZSBPTiAoKG90aGVyX3Jv bGUub2lkID0gb3RoZXIub3RoZXIpKSkKICAgICAgSk9JTiByb2xlX3JlbGF0aW9uc2hpcCBn cmFudF9pbnN0YW5jZSBPTiAoKChncmFudF9pbnN0YW5jZS5sZWFmX25vZGUgPSBsZWFmX3Jv bGUub2lkKSBBTkQgKGdyYW50X2luc3RhbmNlLmdyb3VwX25vZGUgPSBvdGhlci5vdGhlcikp KSkKICAgICAgSk9JTiBwZ19yb2xlc18xIGdyYW50X3JvbGUgT04gKChncmFudF9yb2xlLm9p ZCA9IGdyYW50X2luc3RhbmNlLmdyYW50b3IpKSkKICAgICAgTEVGVCBKT0lOIHBnX3JvbGVz XzEgYW5jZXN0b3Jfcm9sZSBPTiAoKGFuY2VzdG9yX3JvbGUub2lkID0gZ3JhbnRfaW5zdGFu Y2UudmlhWyhjYXJkaW5hbGl0eShncmFudF9pbnN0YW5jZS52aWEpIC0gMSldKSkpCiAgICBX SEVSRSAoKGdyYW50X2luc3RhbmNlLmdvdF9hZG1pbiBBTkQgKE5PVCAoZ3JhbnRfaW5zdGFu Y2UubGVhZl9ub2RlID0gZ3JhbnRfaW5zdGFuY2UuZ3JhbnRvcikpKSBPUiBncmFudF9pbnN0 YW5jZS5ncmFudF9pc19lbXB0eSkKICAgIEdST1VQIEJZIG90aGVyX3JvbGUucm9sbmFtZSwg Z3JhbnRfaW5zdGFuY2UudmlhKSwgJwonOjp0ZXh0KSBBUyBhZG1pbmlzdHJhdGlvbgpGUk9N IHJvbGVfZ3JhcGhfZGV0YWlsIGxlYWZfcm9sZQpXSEVSRSAobGVhZl9yb2xlLnJvbG5hbWUg fiAndTZfZ3JlZW4nOjp0ZXh0KTsKClNFVCBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZz1v ZmY7ClNFTEVDVCBsZWFmX3JvbGUub2lkLCBsZWFmX3JvbGUucm9sZV90eXBlLCBsZWFmX3Jv bGUucm9sbmFtZSwgbGVhZl9yb2xlLnJvbHN1cGVyLAogIGFycmF5X3RvX3N0cmluZyhBUlJB WSgKICAgIFNFTEVDVCAnICc6OnRleHQKICAgICAgVU5JT04gQUxMCiAgICBTRUxFQ1QgZm9y bWF0KCclSSBmcm9tICVzJzo6dGV4dCwgb3RoZXJfcm9sZS5yb2xuYW1lLCBzdHJpbmdfYWdn KCcnOjp0ZXh0LCAoJwonOjp0ZXh0IHx8IHJlcGVhdCgnICc6OnRleHQsICgobGVuZ3RoKChv dGhlcl9yb2xlLnJvbG5hbWUpOjp0ZXh0KSArIGxlbmd0aCgnIGZyb20gJzo6dGV4dCkpICsg MykpKSBPUkRFUiBCWSBncmFudF9pbnN0YW5jZS5sZXZlbCwgZ3JhbnRfaW5zdGFuY2UuZ3Jh bnRvciwgZ3JhbnRfaW5zdGFuY2UuZ3JhbnRvcl9wYXRoKSkKCiAgICBGUk9NICgoKCh1bm5l c3QobGVhZl9yb2xlLm1lbWJlcm9mX2dyb3Vwcykgb3RoZXIob3RoZXIpCiAgICAgIEpPSU4g cGdfcm9sZXNfMSBvdGhlcl9yb2xlIE9OICgob3RoZXJfcm9sZS5vaWQgPSBvdGhlci5vdGhl cikpKQogICAgICBKT0lOIHJvbGVfcmVsYXRpb25zaGlwIGdyYW50X2luc3RhbmNlIE9OICgo KGdyYW50X2luc3RhbmNlLmxlYWZfbm9kZSA9IGxlYWZfcm9sZS5vaWQpIEFORCAoZ3JhbnRf aW5zdGFuY2UuZ3JvdXBfbm9kZSA9IG90aGVyLm90aGVyKSkpKQogICAgICBKT0lOIHBnX3Jv bGVzXzEgZ3JhbnRfcm9sZSBPTiAoKGdyYW50X3JvbGUub2lkID0gZ3JhbnRfaW5zdGFuY2Uu Z3JhbnRvcikpKQogICAgICBMRUZUIEpPSU4gcGdfcm9sZXNfMSBhbmNlc3Rvcl9yb2xlIE9O ICgoYW5jZXN0b3Jfcm9sZS5vaWQgPSBncmFudF9pbnN0YW5jZS52aWFbKGNhcmRpbmFsaXR5 KGdyYW50X2luc3RhbmNlLnZpYSkgLSAxKV0pKSkKICAgIFdIRVJFICgoZ3JhbnRfaW5zdGFu Y2UuZ290X2FkbWluIEFORCAoTk9UIChncmFudF9pbnN0YW5jZS5sZWFmX25vZGUgPSBncmFu dF9pbnN0YW5jZS5ncmFudG9yKSkpIE9SIGdyYW50X2luc3RhbmNlLmdyYW50X2lzX2VtcHR5 KQogICAgR1JPVVAgQlkgb3RoZXJfcm9sZS5yb2xuYW1lLCBncmFudF9pbnN0YW5jZS52aWEp LCAnCic6OnRleHQpIEFTIGFkbWluaXN0cmF0aW9uCkZST00gcm9sZV9ncmFwaF9kZXRhaWwg bGVhZl9yb2xlCldIRVJFIChsZWFmX3JvbGUucm9sbmFtZSB+ICd1Nl9ncmVlbic6OnRleHQp Owo= --------------skSFZ0qQX0B3B0erMUgDF8bH--