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 1ma3og-00077A-KV for pgsql-bugs@arkaria.postgresql.org; Mon, 11 Oct 2021 22:30:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ma3oc-0006Xl-ML for pgsql-bugs@arkaria.postgresql.org; Mon, 11 Oct 2021 22:30:38 +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 1ma3kY-0000ym-GY for pgsql-bugs@lists.postgresql.org; Mon, 11 Oct 2021 22:26:27 +0000 Received: from resqmta-ch2-06v.sys.comcast.net ([2001:558:fe21:29:69:252:207:38]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ma3kW-0006e9-0f for pgsql-bugs@lists.postgresql.org; Mon, 11 Oct 2021 22:26:25 +0000 Received: from resomta-ch2-19v.sys.comcast.net ([69.252.207.115]) by resqmta-ch2-06v.sys.comcast.net with ESMTP id a2LomKM8fsjoSa3kRmcWrp; Mon, 11 Oct 2021 22:26:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=20190202a; t=1633991179; bh=Ty7sH69a6QS6vQmQGCwfQvNzuCak7T1fxnQRdC+M0jw=; h=Received:Received:Date:From:To:Message-ID:Subject:MIME-Version: Content-Type; b=zne1OIMhljWhQS+U7R7MBTnhtM/BaC/G7H2IgI+DO+nf/AMQ/Ih/ptPxN45n1r+Q5 B4lbJKU2B9GXxp1S+dZ1SVUWwLpc38Q2vGM3qypUZOaMcEtv4lgZOZsoY62Qo7Ccup eJimA+O/euSOqc/CJJOsmhfxIeAgZLJFY5g7oDoUavLvuDlZ88nkjWgOYoa0X4LFGo 7PxsPc+MX2g88EH/eS+66dTjTw63OvHKYm+bW35o6pLb9XtNRdxvXO+1B9UVUX5RDY cXFH37ROw0R23niAz0JEvfv+yhyd0zT2raFLqu3KL2u91wI4R5zW+9qVAcmH8QxNxA UHhtNK07Ez49w== Received: from oxapp-ch2f-13o.email.comcast.net ([96.117.82.148]) by resomta-ch2-19v.sys.comcast.net with ESMTPS id a3kQmuo4bfz4ka3kQmgZcp; Mon, 11 Oct 2021 22:26:18 +0000 X-Xfinity-VAAS: gggruggvucftvghtrhhoucdtuddrgedvtddrvddtjedguddtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuvehomhgtrghsthdqtfgvshhipdfqfgfvpdfpqffurfetoffkrfenuceurghilhhouhhtmecufedtudenucenucfjughrpeffhffvkffugggtrfgkofhisehmtdgssgertdejnecuhfhrohhmpeflgfffucghtefnmffgtfcuoehjvggufigrsegtohhmtggrshhtrdhnvghtqeenucggtffrrghtthgvrhhnpeeivdduvedvfeelieelleeghefgjeeuleefieduieffgfeviedvvdekudelveetffenucfkphepleeirdduudejrdekvddrudegkedpieehrdduheegrdefhedrvdegvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhephhgvlhhopehogigrphhpqdgthhdvfhdqudefohdrvghmrghilhdrtghomhgtrghsthdrnhgvthdpihhnvghtpeeliedruddujedrkedvrddugeekpdhmrghilhhfrhhomhepjhgvugifrgestghomhgtrghsthdrnhgvthdprhgtphhtthhopehpghhsqhhlqdgsuhhgsheslhhishhtshdrphhoshhtghhrvghsqhhlrdhorhhgpdhrtghpthhtohepjhgvugifrgestghomhgtrghsthdrnhgvthdprhgtphhtthhopehjvggurdifrghlkhgvrhesihgtugdqthgvtghhrdgtohhm X-Xfinity-VMeta: sc=0.00;st=legit Date: Mon, 11 Oct 2021 16:26:17 -0600 (MDT) From: JED WALKER To: "pgsql-bugs@lists.postgresql.org" Cc: "Jed@Home" , "Jed@ICD" Message-ID: <375102856.69594.1633991178400@connect.xfinity.com> Subject: v12.4 pg_dump .sql fails to load data via psql MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_69592_1511540071.1633991178370" X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.3-Rev18 X-Originating-IP: ::ffff:65.154.35.242 X-Originating-Client: open-xchange-appsuite List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------=_Part_69592_1511540071.1633991178370 Content-Type: multipart/alternative; boundary="----=_Part_69593_1053445055.1633991178371" ------=_Part_69593_1053445055.1633991178371 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit PostgreSQL v12.4 pg_dumpall output fails to load via "psql -f" load to empty instance/server. This occurs using check constraints that reference a function using data in a table that is loaded later. As a logical backup method this should be loadable into a clean database as-is. Error: psql:TestCase1.sql:286: ERROR: The schema/table/column cannot be found in a Domain Relation CONTEXT: PL/pgSQL function frp_pkg_picklist.is_item_valid_for_column(character varying,character varying,character varying,character varying,boolean,boolean) line 19 at RAISE COPY customer, line 1: "0 SHARED_DO_NOT_USE customer" This can be remedied by manually modifying the pg_dumpall .sql file as a workaround 1. Move the tables referenced in the check constraint function, and place at the beginning of the COPY section 2. Disable the (or all) constraints on the affected tables and enable at the end. 3. Do not create the (or all) constraints on the affected tables and create them at the end. All of these require changes to the output file (risk and work), but it should load cleanly without that. ========== Test Case ---------- I've minimized the situation to a small test-set to show how it works (or doesn't). See TestCase1.txt Also see 202110load.txt for initial discovery information. 1. Create a fresh PostgreSQL database 1. Load instance with TestCase1BuildDB.sql e.g. psql -f TestCase1BuildDB.sql 1. pg_dumpall instance e.g. pg_dumpall -h0.0.0.0 -p5432 -Upostgres > TestCase1.sql 1. Create a fresh PostgreSQL database 1. Load databae from TestCase1.sql dumpall e.g. psql -f TestCase1.sql should fail with: ... ERROR: The schema/table/column cannot be found in a Domain Relation ... CONTEXT: PL/pgSQL function frp_pkg_picklist.is_item_valid_for_column(character varying,character varying,character varying,character varying,boolean,boolean) line 19 at RAISE ... COPY customer, line 1: "0 SHARED_DO_NOT_USE customer" ... COPY frp.customer (id, formal_name, accounting_period_scope) FROM stdin; The check constraint on the table calls a function and that functions makes a decision based on data in the picklist table which has not been loaded yet, thus it fails the constraint check and does not load rows. * Jed ------=_Part_69593_1053445055.1633991178371 MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit
PostgreSQL v12.4 pg_dumpall output fails to load via "psql -f" load to empty instance/server.
 
 This occurs using check constraints that reference a function using data in a table that is loaded later.
 
 As a logical backup method this should be loadable into a clean database as-is.
 
 
 
Error:
 
 psql:TestCase1.sql:286: ERROR:  The schema/table/column cannot be found in a Domain Relation
 
 CONTEXT:  PL/pgSQL function frp_pkg_picklist.is_item_valid_for_column(character varying,character varying,character varying,character varying,boolean,boolean) line 19 at RAISE
 
 COPY customer, line 1: "0       SHARED_DO_NOT_USE       customer"
 
 
 
 This can be remedied by manually modifying the pg_dumpall .sql file as a workaround
 
  1. Move the tables referenced in the check constraint function, and place at the beginning of the COPY section
  2. Disable the (or all) constraints on the affected tables and enable at the end.
  3. Do not create the (or all) constraints on the affected tables and create them at the end.
 
 
All of these require changes to the output file (risk and work), but it should load cleanly without that.
 
 
 
 
 
 
 
 
 
==========
 
Test Case
 
----------
 
I've minimized the situation to a small test-set to show how it works (or doesn't).
 
 See TestCase1.txt
 
 Also see 202110load.txt for initial discovery information.
 
 
 
  1. Create a fresh PostgreSQL database
 
 
  1. Load instance with TestCase1BuildDB.sql
    e.g. psql -f TestCase1BuildDB.sql
 
 
 
  1. pg_dumpall instance
    e.g. pg_dumpall -h0.0.0.0 -p5432 -Upostgres > TestCase1.sql
 
 
 
  1. Create a fresh PostgreSQL database
 
 
  1. Load databae from TestCase1.sql dumpall
    e.g. psql -f TestCase1.sql
 
     should fail with:
 
       ... ERROR:  The schema/table/column cannot be found in a Domain Relation
 
       ... CONTEXT:  PL/pgSQL function frp_pkg_picklist.is_item_valid_for_column(character varying,character varying,character varying,character varying,boolean,boolean) line 19 at RAISE
 
       ... COPY customer, line 1: "0       SHARED_DO_NOT_USE       customer"
 
       ... COPY frp.customer (id, formal_name, accounting_period_scope) FROM stdin;
 
 
 
The check constraint on the table calls a function
 
 and that functions makes a decision based on data in the picklist table
 
 which has not been loaded yet, thus it fails the constraint check and does not load rows.
 
 
 
  • Jed
------=_Part_69593_1053445055.1633991178371-- ------=_Part_69592_1511540071.1633991178370 Content-Type: application/octet-stream; name=TestCase1.sql Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=TestCase1.sql X-Part-Id: 1781792e0e16496d9fc0483cea05ca2c LS0KLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBjbHVzdGVyIGR1bXAKLS0KClNFVCBkZWZhdWx0X3Ry YW5zYWN0aW9uX3JlYWRfb25seSA9IG9mZjsKClNFVCBjbGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7 ClNFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3MgPSBvbjsKCi0tCi0tIFJvbGVzCi0tCgpD UkVBVEUgUk9MRSBmcnBfYWRtaW47CkFMVEVSIFJPTEUgZnJwX2FkbWluIFdJVEggTk9TVVBFUlVT RVIgSU5IRVJJVCBOT0NSRUFURVJPTEUgTk9DUkVBVEVEQiBMT0dJTiBOT1JFUExJQ0FUSU9OIE5P QllQQVNTUkxTIFBBU1NXT1JEICdtZDUzMTdlMDBlMmM1YzhhNWJhZjFlN2IyOTEzNDNjYWQwNic7 CkNSRUFURSBST0xFIHBvc3RncmVzOwpBTFRFUiBST0xFIHBvc3RncmVzIFdJVEggU1VQRVJVU0VS IElOSEVSSVQgQ1JFQVRFUk9MRSBDUkVBVEVEQiBMT0dJTiBSRVBMSUNBVElPTiBCWVBBU1NSTFMg UEFTU1dPUkQgJ21kNTMxNzViY2UxZDMyMDFkMTY1OTRjZWJmOWQ3ZWIzZjlkJzsKCgoKCgoKLS0K LS0gRGF0YWJhc2VzCi0tCgotLQotLSBEYXRhYmFzZSAidGVtcGxhdGUxIiBkdW1wCi0tCgpcY29u bmVjdCB0ZW1wbGF0ZTEKCi0tCi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcAotLQoKLS0gRHVt cGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAxMi40IChEZWJpYW4gMTIuNC0xLnBnZGcxMDArMSkK LS0gRHVtcGVkIGJ5IHBnX2R1bXAgdmVyc2lvbiAxMi44IChVYnVudHUgMTIuOC0wdWJ1bnR1MC4y MC4wNC4xKQoKU0VUIHN0YXRlbWVudF90aW1lb3V0ID0gMDsKU0VUIGxvY2tfdGltZW91dCA9IDA7 ClNFVCBpZGxlX2luX3RyYW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dCA9IDA7ClNFVCBjbGllbnRf ZW5jb2RpbmcgPSAnVVRGOCc7ClNFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3MgPSBvbjsK U0VMRUNUIHBnX2NhdGFsb2cuc2V0X2NvbmZpZygnc2VhcmNoX3BhdGgnLCAnJywgZmFsc2UpOwpT RVQgY2hlY2tfZnVuY3Rpb25fYm9kaWVzID0gZmFsc2U7ClNFVCB4bWxvcHRpb24gPSBjb250ZW50 OwpTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7ClNFVCByb3dfc2VjdXJpdHkgPSBv ZmY7CgotLQotLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXAgY29tcGxldGUKLS0KCi0tCi0tIERh dGFiYXNlICJpY2QiIGR1bXAKLS0KCi0tCi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcAotLQoK LS0gRHVtcGVkIGZyb20gZGF0YWJhc2UgdmVyc2lvbiAxMi40IChEZWJpYW4gMTIuNC0xLnBnZGcx MDArMSkKLS0gRHVtcGVkIGJ5IHBnX2R1bXAgdmVyc2lvbiAxMi44IChVYnVudHUgMTIuOC0wdWJ1 bnR1MC4yMC4wNC4xKQoKU0VUIHN0YXRlbWVudF90aW1lb3V0ID0gMDsKU0VUIGxvY2tfdGltZW91 dCA9IDA7ClNFVCBpZGxlX2luX3RyYW5zYWN0aW9uX3Nlc3Npb25fdGltZW91dCA9IDA7ClNFVCBj bGllbnRfZW5jb2RpbmcgPSAnVVRGOCc7ClNFVCBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3Mg PSBvbjsKU0VMRUNUIHBnX2NhdGFsb2cuc2V0X2NvbmZpZygnc2VhcmNoX3BhdGgnLCAnJywgZmFs c2UpOwpTRVQgY2hlY2tfZnVuY3Rpb25fYm9kaWVzID0gZmFsc2U7ClNFVCB4bWxvcHRpb24gPSBj b250ZW50OwpTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IHdhcm5pbmc7ClNFVCByb3dfc2VjdXJp dHkgPSBvZmY7CgotLQotLSBOYW1lOiBpY2Q7IFR5cGU6IERBVEFCQVNFOyBTY2hlbWE6IC07IE93 bmVyOiBwb3N0Z3JlcwotLQoKQ1JFQVRFIERBVEFCQVNFIGljZCBXSVRIIFRFTVBMQVRFID0gdGVt cGxhdGUwIEVOQ09ESU5HID0gJ1VURjgnIExDX0NPTExBVEUgPSAnZW5fVVMudXRmOCcgTENfQ1RZ UEUgPSAnZW5fVVMudXRmOCc7CgoKQUxURVIgREFUQUJBU0UgaWNkIE9XTkVSIFRPIHBvc3RncmVz OwoKXGNvbm5lY3QgaWNkCgpTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAwOwpTRVQgbG9ja190aW1l b3V0ID0gMDsKU0VUIGlkbGVfaW5fdHJhbnNhY3Rpb25fc2Vzc2lvbl90aW1lb3V0ID0gMDsKU0VU IGNsaWVudF9lbmNvZGluZyA9ICdVVEY4JzsKU0VUIHN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5n cyA9IG9uOwpTRUxFQ1QgcGdfY2F0YWxvZy5zZXRfY29uZmlnKCdzZWFyY2hfcGF0aCcsICcnLCBm YWxzZSk7ClNFVCBjaGVja19mdW5jdGlvbl9ib2RpZXMgPSBmYWxzZTsKU0VUIHhtbG9wdGlvbiA9 IGNvbnRlbnQ7ClNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gd2FybmluZzsKU0VUIHJvd19zZWN1 cml0eSA9IG9mZjsKCi0tCi0tIE5hbWU6IGZycDsgVHlwZTogU0NIRU1BOyBTY2hlbWE6IC07IE93 bmVyOiBwb3N0Z3JlcwotLQoKQ1JFQVRFIFNDSEVNQSBmcnA7CgoKQUxURVIgU0NIRU1BIGZycCBP V05FUiBUTyBwb3N0Z3JlczsKCi0tCi0tIE5hbWU6IGZycF9wa2dfcGlja2xpc3Q7IFR5cGU6IFND SEVNQTsgU2NoZW1hOiAtOyBPd25lcjogcG9zdGdyZXMKLS0KCkNSRUFURSBTQ0hFTUEgZnJwX3Br Z19waWNrbGlzdDsKCgpBTFRFUiBTQ0hFTUEgZnJwX3BrZ19waWNrbGlzdCBPV05FUiBUTyBwb3N0 Z3JlczsKCi0tCi0tIE5hbWU6IGlzX2l0ZW1fdmFsaWRfZm9yX2NvbHVtbihjaGFyYWN0ZXIgdmFy eWluZywgY2hhcmFjdGVyIHZhcnlpbmcsIGNoYXJhY3RlciB2YXJ5aW5nLCBjaGFyYWN0ZXIgdmFy eWluZywgYm9vbGVhbiwgYm9vbGVhbik7IFR5cGU6IEZVTkNUSU9OOyBTY2hlbWE6IGZycF9wa2df cGlja2xpc3Q7IE93bmVyOiBwb3N0Z3JlcwotLQoKQ1JFQVRFIEZVTkNUSU9OIGZycF9wa2dfcGlj a2xpc3QuaXNfaXRlbV92YWxpZF9mb3JfY29sdW1uKHBfdGFibGVfc2NoZW1hIGNoYXJhY3RlciB2 YXJ5aW5nLCBwX3RhYmxlX25hbWUgY2hhcmFjdGVyIHZhcnlpbmcsIHBfdGFibGVfY29sdW1uIGNo YXJhY3RlciB2YXJ5aW5nLCBwX3ZhbHVlIGNoYXJhY3RlciB2YXJ5aW5nLCBwX2FsbG93X251bGwg Ym9vbGVhbiBERUZBVUxUIGZhbHNlLCBwX3dhcm5fb25seSBib29sZWFuIERFRkFVTFQgZmFsc2Up IFJFVFVSTlMgYm9vbGVhbgogICAgTEFOR1VBR0UgcGxwZ3NxbAogICAgQVMgJCQKICBkZWNsYXJl IHZfY291bnQgICAgICAgIGludGVnZXI7CiAgZGVjbGFyZSB2X2RvbWFpbl9pZCAgICBmcnAucGlj a2xpc3RfZG9tYWluLmlkJXR5cGU7CiAgZGVjbGFyZSB2X2RvbWFpbl9uYW1lICBmcnAucGlja2xp c3RfZG9tYWluLm5hbWUldHlwZTsKYmVnaW4KICAtLSBwcm92aWRlIHNvbWUgYmFkIGlucHV0IGZl ZWRiYWNrIChjaGVjayBpZCBmaXJzdCkKICBpZiBwX3RhYmxlX3NjaGVtYSBpcyBudWxsIG9yIHBf dGFibGVfbmFtZSBpcyBudWxsIG9yIHBfdGFibGVfY29sdW1uIGlzIG51bGwgdGhlbgogICAgcmFp c2UgZXhjZXB0aW9uICdZb3UgTVVTVCBzcGVjaWZpeSBzY2hlbWEodHlwZSksIHRhYmxlIGFuZCBj b2x1bW4gbmFtZSc7CiAgZW5kIGlmOwogIC0tIGdldCB0aGUgZG9tYWluX2lkIGFuZCBuYW1lCiAg c2VsZWN0IGRvbWFpbl9pZCwgbmFtZSBpbnRvIHZfZG9tYWluX2lkLCB2X2RvbWFpbl9uYW1lCiAg ZnJvbSBmcnAucGlja2xpc3RfZG9tYWluIHBkCiAgICAgICBqb2luIGZycC5waWNrbGlzdF9yZWxh dGlvbiBwciBvbiAoIHBkLmlkID0gcHIuZG9tYWluX2lkICkKICB3aGVyZSBwci50YWJsZV9zY2hl bWEgPSBwX3RhYmxlX3NjaGVtYQogIGFuZCBwci50YWJsZV9uYW1lID0gcF90YWJsZV9uYW1lCiAg YW5kIHByLnRhYmxlX2NvbHVtbiA9IHBfdGFibGVfY29sdW1uOwogIC0tIGlmIG5vdCBmb3VuZCwg cmVwb3J0IHByb2JsZW0KICBpZiB2X2RvbWFpbl9pZCBpcyBudWxsIHRoZW4KICAgIHJhaXNlIGV4 Y2VwdGlvbiAnVGhlIHNjaGVtYS90YWJsZS9jb2x1bW4gY2Fubm90IGJlIGZvdW5kIGluIGEgRG9t YWluIFJlbGF0aW9uJzsKICBlbmQgaWY7CiAgLS0gY2FsbCBieSBkb21haW5faWQsIG5hbWUKICBy ZXR1cm4gZnJwX3BrZ19waWNrbGlzdC5pc19pdGVtX3ZhbGlkX2Zvcl9kb21haW4gKCB2X2RvbWFp bl9pZCwgdl9kb21haW5fbmFtZSwgcF92YWx1ZSAsIHBfYWxsb3dfbnVsbCwgcF93YXJuX29ubHkg KTsKZW5kOwokJDsKCgpBTFRFUiBGVU5DVElPTiBmcnBfcGtnX3BpY2tsaXN0LmlzX2l0ZW1fdmFs aWRfZm9yX2NvbHVtbihwX3RhYmxlX3NjaGVtYSBjaGFyYWN0ZXIgdmFyeWluZywgcF90YWJsZV9u YW1lIGNoYXJhY3RlciB2YXJ5aW5nLCBwX3RhYmxlX2NvbHVtbiBjaGFyYWN0ZXIgdmFyeWluZywg cF92YWx1ZSBjaGFyYWN0ZXIgdmFyeWluZywgcF9hbGxvd19udWxsIGJvb2xlYW4sIHBfd2Fybl9v bmx5IGJvb2xlYW4pIE9XTkVSIFRPIHBvc3RncmVzOwoKLS0KLS0gTmFtZTogaXNfaXRlbV92YWxp ZF9mb3JfZG9tYWluKGludGVnZXIsIGNoYXJhY3RlciB2YXJ5aW5nLCBjaGFyYWN0ZXIgdmFyeWlu ZywgYm9vbGVhbiwgYm9vbGVhbik7IFR5cGU6IEZVTkNUSU9OOyBTY2hlbWE6IGZycF9wa2dfcGlj a2xpc3Q7IE93bmVyOiBwb3N0Z3JlcwotLQoKQ1JFQVRFIEZVTkNUSU9OIGZycF9wa2dfcGlja2xp c3QuaXNfaXRlbV92YWxpZF9mb3JfZG9tYWluKHBfZG9tYWluX2lkIGludGVnZXIsIHBfZG9tYWlu X25hbWUgY2hhcmFjdGVyIHZhcnlpbmcsIHBfdmFsdWUgY2hhcmFjdGVyIHZhcnlpbmcsIHBfYWxs b3dfbnVsbCBib29sZWFuIERFRkFVTFQgZmFsc2UsIHBfd2Fybl9vbmx5IGJvb2xlYW4gREVGQVVM VCBmYWxzZSkgUkVUVVJOUyBib29sZWFuCiAgICBMQU5HVUFHRSBwbHBnc3FsCiAgICBBUyAkJAog IGRlY2xhcmUgdl9jb3VudCAgICAgICAgaW50ZWdlcjsKICBkZWNsYXJlIHZfZG9tYWluX2lkICAg IGZycC5waWNrbGlzdF9kb21haW4uaWQldHlwZTsKICBkZWNsYXJlIHZfZG9tYWluX25hbWUgIGZy cC5waWNrbGlzdF9kb21haW4ubmFtZSV0eXBlOwpiZWdpbgogIC0tIGxvY2FsaXplIGRvbWFpbiBp ZCBhbmQgbmFtZQogIHZfZG9tYWluX2lkOj1wX2RvbWFpbl9pZDsKICB2X2RvbWFpbl9uYW1lOj1w X2RvbWFpbl9uYW1lOwogIC0tIGNoZWNrIGFuZCBnZXQgZG9tYWluIElEIGFuZCBOYW1lCiAgaWYg dl9kb21haW5faWQgaXMgbnVsbCBhbmQgdl9kb21haW5fbmFtZSBpcyBudWxsIHRoZW4KICAgIHJh aXNlIGV4Y2VwdGlvbiAnWW91IE1VU1Qgc3BlY2lmaXkgZWl0aGVyIGEgRG9tYWluIElEIG9yIE5h bWUnOwogIGVuZCBpZjsKICBpZiB2X2RvbWFpbl9pZCBpcyBub3QgbnVsbCBhbmQgdl9kb21haW5f bmFtZSBpcyBub3QgbnVsbCB0aGVuCiAgICByYWlzZSBub3RpY2UgJ1lvdSBzcGVjaWZpZWQgYm90 aCBkb21haW4gSUQgYW5kIE5hbWUgLSB1c2luZyBJRCc7CiAgICB2X2RvbWFpbl9uYW1lOj1udWxs OyAtLSBubyB3b3JyaWVzLCB1c2UgSUQsIGJ1dCB0aGlzIGFsbG93cyB1cyB0byBnZXQgY29ycmVj dCBuYW1lCiAgZW5kIGlmOwogIGlmIHZfZG9tYWluX2lkIGlzIG51bGwgdGhlbiAtLSBnZXQgSUQg ZnJvbSBOYW1lCiAgICBzZWxlY3QgaWQgaW50byB2X2RvbWFpbl9pZCBmcm9tIGZycC5waWNrbGlz dF9kb21haW4gcGQgd2hlcmUgcGQubmFtZSA9IHZfZG9tYWluX25hbWU7CiAgZW5kIGlmOwogIGlm IHZfZG9tYWluX25hbWUgaXMgbnVsbCB0aGVuIC0tIGdldCBOYW1lIGZyb20gSUQKICAgIHNlbGVj dCBuYW1lIGludG8gdl9kb21haW5fbmFtZSBmcm9tIGZycC5waWNrbGlzdF9kb21haW4gcGQgd2hl cmUgcGQuaWQgPSB2X2RvbWFpbl9pZDsKICBlbmQgaWY7CiAgLS0gcHJvdmlkZSBzb21lIGJhZCBp bnB1dCBmZWVkYmFjayAoY2hlY2sgaWQgZmlyc3QpCiAgaWYgcF92YWx1ZSBpcyBudWxsIHRoZW4K ICAgIGlmIHBfYWxsb3dfbnVsbCA9IHRydWUgdGhlbgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGVs c2UKICAgICAgcmFpc2UgZXhjZXB0aW9uICdZb3UgTVVTVCBzcGVjaWZpeSBhbiBJdGVtIElEJzsK ICAgIGVuZCBpZjsKICBlbmQgaWY7CiAgLS0gc2VlIGlmIGl0ZW0gZXhpc3RzCiAgc2VsZWN0IGNv dW50KDEpIGludG8gdl9jb3VudAogIGZyb20gZnJwLnBpY2tsaXN0X2RvbWFpbiBwZAogICAgICAg am9pbiBmcnAucGlja2xpc3RfaXRlbSBwaSBvbiAoIHBkLmlkID0gcGkuZG9tYWluX2lkICkKICB3 aGVyZSBwZC5pZCA9IHZfZG9tYWluX2lkICAtLSB3ZSBvbmx5IHVzZSBJRCBmb3IgbG9va3VwLCBz ZWUgYWJvdmUKICBhbmQgcGkudmFsdWUgPSBwX3ZhbHVlCiAgYW5kIHBpLmVuYWJsZWQgPSB0cnVl OwogIGlmIHZfY291bnQgPSAwIHRoZW4KICAgIGlmIHBfd2Fybl9vbmx5ID0gdHJ1ZSB0aGVuCiAg ICAgIHJhaXNlIHdhcm5pbmcgJ1RoZSB2YWx1ZSAlIGlzIG5vdCB2YWxpZCBmb3IgRG9tYWluICUn LHBfdmFsdWUsY29hbGVzY2Uodl9kb21haW5fbmFtZSx2X2RvbWFpbl9pZDo6dmFyY2hhcik7CiAg ICAgIHJldHVybiB0cnVlOwogICAgZWxzZQogICAgICByZXR1cm4gZmFsc2U7CiAgICBlbmQgaWY7 CiAgZWxzZQogICAgcmV0dXJuIHRydWU7CiAgZW5kIGlmOwogIC0tIHdlIHNob3VsZCBuZXZlciBn ZXQgaGVyZSBzbyBkaXNwbGF5IHByb2JsZW0gYW5kIHJldHVybiBmYWxzZQogIHJhaXNlIHdhcm5p bmcgJ0xvZ2ljIHByb2JsZW0sIHJlcG9ydCB0byBEZXZlbG9wbWVudCc7CiAgcmV0dXJuIGZhbHNl OwplbmQ7CiQkOwoKCkFMVEVSIEZVTkNUSU9OIGZycF9wa2dfcGlja2xpc3QuaXNfaXRlbV92YWxp ZF9mb3JfZG9tYWluKHBfZG9tYWluX2lkIGludGVnZXIsIHBfZG9tYWluX25hbWUgY2hhcmFjdGVy IHZhcnlpbmcsIHBfdmFsdWUgY2hhcmFjdGVyIHZhcnlpbmcsIHBfYWxsb3dfbnVsbCBib29sZWFu LCBwX3dhcm5fb25seSBib29sZWFuKSBPV05FUiBUTyBwb3N0Z3JlczsKClNFVCBkZWZhdWx0X3Rh Ymxlc3BhY2UgPSAnJzsKClNFVCBkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBoZWFwOwoK LS0KLS0gTmFtZTogY3VzdG9tZXI7IFR5cGU6IFRBQkxFOyBTY2hlbWE6IGZycDsgT3duZXI6IHBv c3RncmVzCi0tCgpDUkVBVEUgVEFCTEUgZnJwLmN1c3RvbWVyICgKICAgIGlkIGJpZ2ludCBOT1Qg TlVMTCwKICAgIGZvcm1hbF9uYW1lIGNoYXJhY3RlciB2YXJ5aW5nKDUwKSBOT1QgTlVMTCwKICAg IGFjY291bnRpbmdfcGVyaW9kX3Njb3BlIGNoYXJhY3RlciB2YXJ5aW5nKDExKSBERUZBVUxUICdj dXN0b21lcic6OmNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLAogICAgQ09OU1RSQUlOVCBja2Nf Y3VzdG9tZXJfYWNjb3VudGluZ19wZXJpb2Rfc2NvcGUgQ0hFQ0sgKGZycF9wa2dfcGlja2xpc3Qu aXNfaXRlbV92YWxpZF9mb3JfY29sdW1uKCdmcnAnOjpjaGFyYWN0ZXIgdmFyeWluZywgJ2N1c3Rv bWVyJzo6Y2hhcmFjdGVyIHZhcnlpbmcsICdhY2NvdW50aW5nX3BlcmlvZF9zY29wZSc6OmNoYXJh Y3RlciB2YXJ5aW5nLCBhY2NvdW50aW5nX3BlcmlvZF9zY29wZSwgZmFsc2UsIGZhbHNlKSkKKTsK CgpBTFRFUiBUQUJMRSBmcnAuY3VzdG9tZXIgT1dORVIgVE8gcG9zdGdyZXM7CgotLQotLSBOYW1l OiBwaWNrbGlzdF9kb21haW47IFR5cGU6IFRBQkxFOyBTY2hlbWE6IGZycDsgT3duZXI6IHBvc3Rn cmVzCi0tCgpDUkVBVEUgVEFCTEUgZnJwLnBpY2tsaXN0X2RvbWFpbiAoCiAgICBpZCBpbnRlZ2Vy IE5PVCBOVUxMLAogICAgbmFtZSBjaGFyYWN0ZXIgdmFyeWluZygzMCkgTk9UIE5VTEwsCiAgICBk ZXNjciBjaGFyYWN0ZXIgdmFyeWluZygyMDApIE5PVCBOVUxMCik7CgoKQUxURVIgVEFCTEUgZnJw LnBpY2tsaXN0X2RvbWFpbiBPV05FUiBUTyBwb3N0Z3JlczsKCi0tCi0tIE5hbWU6IHBpY2tsaXN0 X2l0ZW07IFR5cGU6IFRBQkxFOyBTY2hlbWE6IGZycDsgT3duZXI6IHBvc3RncmVzCi0tCgpDUkVB VEUgVEFCTEUgZnJwLnBpY2tsaXN0X2l0ZW0gKAogICAgaWQgaW50ZWdlciBOT1QgTlVMTCwKICAg IGRvbWFpbl9pZCBpbnRlZ2VyIE5PVCBOVUxMLAogICAgdmFsdWUgY2hhcmFjdGVyIHZhcnlpbmco MTEpIE5PVCBOVUxMLAogICAgbmFtZSBjaGFyYWN0ZXIgdmFyeWluZygzMCkgTk9UIE5VTEwsCiAg ICBkZXNjciBjaGFyYWN0ZXIgdmFyeWluZygyMDApIE5PVCBOVUxMLAogICAgZW5hYmxlZCBib29s ZWFuIERFRkFVTFQgdHJ1ZSBOT1QgTlVMTCwKICAgIHNvcnRfb3JkZXIgc21hbGxpbnQgTk9UIE5V TEwKKTsKCgpBTFRFUiBUQUJMRSBmcnAucGlja2xpc3RfaXRlbSBPV05FUiBUTyBwb3N0Z3JlczsK Ci0tCi0tIE5hbWU6IHBpY2tsaXN0X3JlbGF0aW9uOyBUeXBlOiBUQUJMRTsgU2NoZW1hOiBmcnA7 IE93bmVyOiBwb3N0Z3JlcwotLQoKQ1JFQVRFIFRBQkxFIGZycC5waWNrbGlzdF9yZWxhdGlvbiAo CiAgICBpZCBpbnRlZ2VyIE5PVCBOVUxMLAogICAgdGFibGVfc2NoZW1hIGNoYXJhY3RlciB2YXJ5 aW5nKDUwKSBOT1QgTlVMTCwKICAgIHRhYmxlX25hbWUgY2hhcmFjdGVyIHZhcnlpbmcoMTAwKSBO T1QgTlVMTCwKICAgIHRhYmxlX2NvbHVtbiBjaGFyYWN0ZXIgdmFyeWluZygxMDApIE5PVCBOVUxM LAogICAgZG9tYWluX2lkIGludGVnZXIgTk9UIE5VTEwsCiAgICBDT05TVFJBSU5UIHBpY2tsaXN0 X3JlbGF0aW9uX3RhYmxlX3NjaGVtYV9jayBDSEVDSyAoKCh0YWJsZV9zY2hlbWEpOjp0ZXh0ID0g QU5ZIChBUlJBWVsoJ2ZycCc6OmNoYXJhY3RlciB2YXJ5aW5nKTo6dGV4dCwgKCd0ZW5hbnQnOjpj aGFyYWN0ZXIgdmFyeWluZyk6OnRleHRdKSkpCik7CgoKQUxURVIgVEFCTEUgZnJwLnBpY2tsaXN0 X3JlbGF0aW9uIE9XTkVSIFRPIHBvc3RncmVzOwoKLS0KLS0gRGF0YSBmb3IgTmFtZTogY3VzdG9t ZXI7IFR5cGU6IFRBQkxFIERBVEE7IFNjaGVtYTogZnJwOyBPd25lcjogcG9zdGdyZXMKLS0KCkNP UFkgZnJwLmN1c3RvbWVyIChpZCwgZm9ybWFsX25hbWUsIGFjY291bnRpbmdfcGVyaW9kX3Njb3Bl KSBGUk9NIHN0ZGluOwowCVNIQVJFRF9ET19OT1RfVVNFCWN1c3RvbWVyCjEJSUNEIFBvcnRhbAlj dXN0b21lcgoyCUlDRCBUZWNobm9sb2dpZXMJZW50aXR5ClwuCgoKLS0KLS0gRGF0YSBmb3IgTmFt ZTogcGlja2xpc3RfZG9tYWluOyBUeXBlOiBUQUJMRSBEQVRBOyBTY2hlbWE6IGZycDsgT3duZXI6 IHBvc3RncmVzCi0tCgpDT1BZIGZycC5waWNrbGlzdF9kb21haW4gKGlkLCBuYW1lLCBkZXNjcikg RlJPTSBzdGRpbjsKMglBY2NvdW50aW5nUGVyaW9kU2NvcGVzCVNjb3BlcyBmb3IgdGhlIGFjY291 bnRpbmcgcGVyaW9kIHNldHRpbmcKXC4KCgotLQotLSBEYXRhIGZvciBOYW1lOiBwaWNrbGlzdF9p dGVtOyBUeXBlOiBUQUJMRSBEQVRBOyBTY2hlbWE6IGZycDsgT3duZXI6IHBvc3RncmVzCi0tCgpD T1BZIGZycC5waWNrbGlzdF9pdGVtIChpZCwgZG9tYWluX2lkLCB2YWx1ZSwgbmFtZSwgZGVzY3Is IGVuYWJsZWQsIHNvcnRfb3JkZXIpIEZST00gc3RkaW47CjE0CTIJY3VzdG9tZXIJQ3VzdG9tZXIJ Q3VzdG9tZXIJdAkxMAoxNQkyCWVudGl0eQlFbnRpdHkJRW50aXR5CXQJMjAKXC4KCgotLQotLSBE YXRhIGZvciBOYW1lOiBwaWNrbGlzdF9yZWxhdGlvbjsgVHlwZTogVEFCTEUgREFUQTsgU2NoZW1h OiBmcnA7IE93bmVyOiBwb3N0Z3JlcwotLQoKQ09QWSBmcnAucGlja2xpc3RfcmVsYXRpb24gKGlk LCB0YWJsZV9zY2hlbWEsIHRhYmxlX25hbWUsIHRhYmxlX2NvbHVtbiwgZG9tYWluX2lkKSBGUk9N IHN0ZGluOwoxCWZycAljdXN0b21lcglhY2NvdW50aW5nX3BlcmlvZAkzCjIJZnJwCWN1c3RvbWVy CWFjY291bnRpbmdfcGVyaW9kX3Njb3BlCTIKMwlmcnAJY3VzdG9tZXIJZmlzY2FsX2VveV9tb250 aAkxClwuCgoKLS0KLS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBkdW1wIGNvbXBsZXRlCi0tCgotLQot LSBEYXRhYmFzZSAicG9zdGdyZXMiIGR1bXAKLS0KClxjb25uZWN0IHBvc3RncmVzCgotLQotLSBQ b3N0Z3JlU1FMIGRhdGFiYXNlIGR1bXAKLS0KCi0tIER1bXBlZCBmcm9tIGRhdGFiYXNlIHZlcnNp b24gMTIuNCAoRGViaWFuIDEyLjQtMS5wZ2RnMTAwKzEpCi0tIER1bXBlZCBieSBwZ19kdW1wIHZl cnNpb24gMTIuOCAoVWJ1bnR1IDEyLjgtMHVidW50dTAuMjAuMDQuMSkKClNFVCBzdGF0ZW1lbnRf dGltZW91dCA9IDA7ClNFVCBsb2NrX3RpbWVvdXQgPSAwOwpTRVQgaWRsZV9pbl90cmFuc2FjdGlv bl9zZXNzaW9uX3RpbWVvdXQgPSAwOwpTRVQgY2xpZW50X2VuY29kaW5nID0gJ1VURjgnOwpTRVQg c3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzID0gb247ClNFTEVDVCBwZ19jYXRhbG9nLnNldF9j b25maWcoJ3NlYXJjaF9wYXRoJywgJycsIGZhbHNlKTsKU0VUIGNoZWNrX2Z1bmN0aW9uX2JvZGll cyA9IGZhbHNlOwpTRVQgeG1sb3B0aW9uID0gY29udGVudDsKU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nOwpTRVQgcm93X3NlY3VyaXR5ID0gb2ZmOwoKLS0KLS0gUG9zdGdyZVNRTCBk YXRhYmFzZSBkdW1wIGNvbXBsZXRlCi0tCgotLQotLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0 ZXIgZHVtcCBjb21wbGV0ZQotLQoK ------=_Part_69592_1511540071.1633991178370--