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.96) (envelope-from ) id 1w56Z9-002tlK-16 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 18:33:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w56Z7-008OXZ-1T for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 18:33:21 +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.96) (envelope-from ) id 1w56Z6-008OXM-2v for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 18:33:21 +0000 Received: from mail200226.plesksa11.revendedordesite.com ([200.234.200.226]) by makus.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1w56Z1-00000000plR-2tNZ for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 18:33:18 +0000 Received: from plesksa11.revendedordesite.com (127.0.0.1) by mail200210.plesksa11.revendedordesite.com id hobcem267qon for ; Tue, 24 Mar 2026 15:33:06 -0300 (envelope-from ) Received: from iuri0006.hospedagemdesites.ws (unknown [191.252.104.214]) by plesksa11.revendedordesite.com (Postfix) with ESMTP id C69EDE0137 for ; Tue, 24 Mar 2026 15:32:59 -0300 (-03) Received: from mail-oi1-f175.google.com ([209.85.167.175]:53268) by iuri0006.hospedagemdesites.ws with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96.2) (envelope-from ) id 1w56Yl-0001tl-1L for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 15:32:59 -0300 Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-4670464029eso2716065b6e.2 for ; Tue, 24 Mar 2026 11:32:59 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCV4a74b1YSW38JlO+W3lRHSkfNcKErB3VXKHPN3zfmkdpnOwpl1QihNZu5emjG2M1wRq2rz64miT2AfGKQA@lists.postgresql.org X-Gm-Message-State: AOJu0Yz6yjz0O90k1rNPuuVfZFP8x6bnK2xCdY+jukhgPxSGKLEjh1UT 1eENj/Kw+GN2PBKSG/lN/dBCoumoMTH0XQ9GgjFbmw+kkCe3e9UZO+NJmrcslFzyiUli/dABPyl hNiXkU1FglgWaIIEa3XCAwQfKCK9+9k0= X-Received: by 2002:a05:6808:309b:b0:467:1880:fff5 with SMTP id 5614622812f47-46a5c70e848mr349487b6e.31.1774377177762; Tue, 24 Mar 2026 11:32:57 -0700 (PDT) MIME-Version: 1.0 References: <50f693ad-faec-4b1b-8de5-88dc90b236b4@uni-muenster.de> <421633.1770957043@sss.pgh.pa.us> <5888209c-44b5-438a-abd3-7d07990b3a4c@uni-muenster.de> In-Reply-To: From: Carlos Alves Date: Tue, 24 Mar 2026 15:32:21 -0300 X-Gmail-Original-Message-ID: X-Gm-Features: AaiRm50h5gqq3mM7b5GT9S0tXcpNH6b3xn65W7ep3mju03Otc9hzQGAwDjB5Eic Message-ID: Subject: Re: COMMENTS are not being copied in CREATE TABLE LIKE To: Jim Jones Cc: Tom Lane , Chao Li , Fujii Masao , Matheus Alcantara , "pgsql-hackers@lists.postgresql.org" , "David G. Johnston" Content-Type: multipart/mixed; boundary="000000000000612b80064dc961bd" X-AuthUser: carlos@alves.inf.br List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000612b80064dc961bd Content-Type: multipart/alternative; boundary="000000000000612b7f064dc961bb" --000000000000612b7f064dc961bb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Em seg., 23 de mar. de 2026 =C3=A0s 16:40, Jim Jones escreveu: > > > On 13/02/2026 10:19, Jim Jones wrote: > > ... > > Example: > > > > CREATE TABLE t1 (a int); > > COMMENT ON TABLE t1 IS 'comment from table 1'; > > CREATE TABLE t2 (b int); > > COMMENT ON TABLE t2 IS 'comment from table 2'; > > CREATE TABLE t3 (c int); > > COMMENT ON TABLE t3 IS 'comment from table 3'; > > > > CREATE TABLE tm ( > > LIKE t1 INCLUDING COMMENTS, > > LIKE t3 INCLUDING COMMENTS, > > LIKE t2 INCLUDING COMMENTS > > ); > > > > SELECT obj_description('tm'::regclass, 'pg_class') AS table_comment; > > table_comment > > ---------------------- > > comment from table 1+ > > comment from table 3+ > > comment from table 2 > > (1 row) > > > > > > Any thoughts on that? > > Rebase > > Best, Jim Hi Jim! I ran some tests after applying your patch and initially didn't find any problems. I tried to cover the main scenarios in a focused way, observing the generated results. Regarding the possibility of including comments in the table itself using the LIKE clause, it seems sensible since other elements like columns, indexes, and constraints have copied comments, as already discussed in the thread. Just one point I'd like to address is the documentation. Following the idea of the other "includings" options wouldn't it be interesting to present a more concise text? As a suggestion, it could be something like: "Comments on columns, not null and check constraints, indexes, extended statistics and the table itself from a source table will be copied. If the command references multiple source tables with including clauses, any existing table-level comments will be merged into a single entry, separated by newlines in the order they were specified." I've attached some preliminary tests I performed. Thank you in advance for your attention. --000000000000612b7f064dc961bb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Em seg., 23 de = mar. de 2026 =C3=A0s 16:40, Jim Jones <jim.jones@uni-muenster.de> escreveu:


On 13/02/2026 10:19, Jim Jones wrote:
> ...
> Example:
>
> CREATE TABLE t1 (a int);
> COMMENT ON TABLE t1 IS 'comment from table 1';
> CREATE TABLE t2 (b int);
> COMMENT ON TABLE t2 IS 'comment from table 2';
> CREATE TABLE t3 (c int);
> COMMENT ON TABLE t3 IS 'comment from table 3';
>
> CREATE TABLE tm (
>=C2=A0 =C2=A0 =C2=A0LIKE t1 INCLUDING COMMENTS,
>=C2=A0 =C2=A0 =C2=A0LIKE t3 INCLUDING COMMENTS,
>=C2=A0 =C2=A0 =C2=A0LIKE t2 INCLUDING COMMENTS
> );
>
> SELECT obj_description('tm'::regclass, 'pg_class') AS = table_comment;
>=C2=A0 =C2=A0 =C2=A0table_comment
> ----------------------
>=C2=A0 comment from table 1+
>=C2=A0 comment from table 3+
>=C2=A0 comment from table 2
> (1 row)
>
>
> Any thoughts on that?

Rebase

Best, Jim

Hi Jim!

I ran some tests after applying your patch and = initially didn't find any problems. I tried to cover the main scenarios= in a focused way, observing the generated results.

Regarding the possibility of including c= omments in the table itself using the LIKE clause, it seems sensible since = other elements like columns, indexes, and constraints have copied comments,= as already discussed in the thread.

Just one point I'd like to address is the documenta= tion. Following the idea of the other "includings" options wouldn= 't it be interesting to present a more concise text? As a suggestion, i= t could be something like:

"Comments on columns, not null and check constraints, indexe= s, extended statistics and the table itself from a source table will be cop= ied. If the command references multiple source tables with including clause= s, any existing table-level comments will be merged into a single entry, se= parated by newlines in the order they were specified."

I've attached some preli= minary tests I performed.

Thank you in advance for your attention.
=C2=A0
--000000000000612b7f064dc961bb-- --000000000000612b80064dc961bd Content-Type: application/octet-stream; name="tests.sql" Content-Disposition: attachment; filename="tests.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn4y6ve10 XHBzZXQgbnVsbCAnKG51bGwpJwoKLS0gU2NlbmFyaW8gMTogbmV3IHRhYmxlIG11c3QgaGF2ZSBj b21tZW50CmRyb3AgdGFibGUgaWYgZXhpc3RzIHRlc3QxLCB0ZXN0Mjs3CgpjcmVhdGUgdGFibGUg dGVzdDEgKGZpZWxkIGludCk7CmNvbW1lbnQgb24gdGFibGUgdGVzdDEgaXMgJ1NpbXBsZSBDb21t ZW50JzsKCmNyZWF0ZSB0YWJsZSB0ZXN0MiAobGlrZSAgdGVzdDEgaW5jbHVkaW5nIGNvbW1lbnRz KTsKClNFTEVDVCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3QyJzo6cmVnY2xhc3MsICdwZ19jbGFzcycp IEFTIHRhYmxlX2NvbW1lbnQ7CgovKiBvdXRwdXQ6CiB0YWJsZV9jb21tZW50Ci0tLS0tLS0tLS0t LS0tLS0KIFNpbXBsZSBDb21tZW50CigxIHJvdykKKi8KCi0tIFNjZW5hcmlvIDI6IG5ldyB0YWJs ZSBtdXN0IG5vdCBoYXZlIGFueSBjb21tZW50cwpkcm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0MSwg dGVzdDI7CmNyZWF0ZSB0YWJsZSB0ZXN0MSAoZmllbGQgaW50KTsKY29tbWVudCBvbiB0YWJsZSB0 ZXN0MSBpcyAnU2ltcGxlIENvbW1lbnQnOwoKY3JlYXRlIHRhYmxlIHRlc3QyIChsaWtlIHRlc3Qx KTsgClNFTEVDVCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3QyJzo6cmVnY2xhc3MsICdwZ19jbGFzcycp IEFTIHRhYmxlX2NvbW1lbnQ7CgovKiBvdXRwdXQ6CiB0YWJsZV9jb21tZW50Ci0tLS0tLS0tLS0t LS0tLQogKG51bGwpCigxIHJvdykKKi8KCi0tIFNjZWNuYXJpbyAzOiBNdWx0aXBsZSB0YWJsZXMK ZHJvcCB0YWJsZSBpZiBleGlzdHMgdGVzdDEsIHRlc3QyLCB0ZXN0MywgdGVzdDQ7CgpjcmVhdGUg dGFibGUgdGVzdDEgKGZpZWxkMSBpbnQpOwpjb21tZW50IG9uIHRhYmxlIHRlc3QxIGlzICdDb21t ZW50IDEnOwoKY3JlYXRlIHRhYmxlIHRlc3QyIChmaWVsZDIgaW50KTsKY29tbWVudCBvbiB0YWJs ZSB0ZXN0MiBpcyAnQ29tbWVudCAyJzsKCmNyZWF0ZSB0YWJsZSB0ZXN0MyAoZmllbGQzIGludCk7 CmNvbW1lbnQgb24gdGFibGUgdGVzdDMgaXMgJ0NvbW1lbnQgMyc7CgpjcmVhdGUgdGFibGUgdGVz dDQgKAogIGxpa2UgdGVzdDEgaW5jbHVkaW5nIGNvbW1lbnRzLAogIGxpa2UgdGVzdDIgaW5jbHVk aW5nIGNvbW1lbnRzLAogIGxpa2UgdGVzdDMgaW5jbHVkaW5nIGNvbW1lbnRzCiApOwogClNFTEVD VCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3Q0Jzo6cmVnY2xhc3MsICdwZ19jbGFzcycpIEFTIHRhYmxl X2NvbW1lbnQ7CgoKLyogb3V0cHV0CnRhYmxlX2NvbW1lbnQKLS0tLS0tLS0tLS0tLS0tCiBDb21t ZW50IDEgICAgKwogQ29tbWVudCAyICAgICsKIENvbW1lbnQgMwooMSByb3cpCiovCgotLSBTY2Vj bmFyaW8gNDogTXVsdGlwbGUgdGFibGVzIHdpdGggYSB0YWJsZSB3aXRoIGVtcHR5IGNvbW1lbnQK ZHJvcCB0YWJsZSBpZiBleGlzdHMgdGVzdDEsIHRlc3QyLCB0ZXN0MywgdGVzdDQ7CgpjcmVhdGUg dGFibGUgdGVzdDEgKGZpZWxkMSBpbnQpOwpjb21tZW50IG9uIHRhYmxlIHRlc3QxIGlzICdDb21t ZW50IDEnOwoKY3JlYXRlIHRhYmxlIHRlc3QyIChmaWVsZDIgaW50KTsKCmNyZWF0ZSB0YWJsZSB0 ZXN0MyAoZmllbGQzIGludCk7CmNvbW1lbnQgb24gdGFibGUgdGVzdDMgaXMgJ0NvbW1lbnQgMyc7 CgpjcmVhdGUgdGFibGUgdGVzdDQgKAogIGxpa2UgdGVzdDEgaW5jbHVkaW5nIGNvbW1lbnRzLAog IGxpa2UgdGVzdDIgaW5jbHVkaW5nIGNvbW1lbnRzLAogIGxpa2UgdGVzdDMgaW5jbHVkaW5nIGNv bW1lbnRzCiApOwogClNFTEVDVCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3Q0Jzo6cmVnY2xhc3MsICdw Z19jbGFzcycpIEFTIHRhYmxlX2NvbW1lbnQ7CgovKiBvdXRwdXQKdGFibGVfY29tbWVudAotLS0t LS0tLS0tLS0tLS0KIENvbW1lbnQgMSAgICArCiBDb21tZW50IDMKKDEgcm93KQoqLwoKLS0gU2Nl Y25hcmlvIDU6IE11bHRpcGxlIHRhYmxlcyB3aXRoIGNoYW5naW5nIExJS0Ugb3JkZXIKZHJvcCB0 YWJsZSBpZiBleGlzdHMgdGVzdDEsIHRlc3QyLCB0ZXN0MywgdGVzdDQsIHRlc3Q1OwoKY3JlYXRl IHRhYmxlIHRlc3QxIChmaWVsZDEgaW50KTsKY29tbWVudCBvbiB0YWJsZSB0ZXN0MSBpcyAnQ29t bWVudCAxJzsKCmNyZWF0ZSB0YWJsZSB0ZXN0MiAoZmllbGQyIGludCk7CmNvbW1lbnQgb24gdGFi bGUgdGVzdDIgaXMgJ0NvbW1lbnQgMic7CgpjcmVhdGUgdGFibGUgdGVzdDMgKGZpZWxkMyBpbnQp Owpjb21tZW50IG9uIHRhYmxlIHRlc3QzIGlzICdDb21tZW50IDMnOwoKY3JlYXRlIHRhYmxlIHRl c3Q0IChmaWVsZDQgaW50KTsKY29tbWVudCBvbiB0YWJsZSB0ZXN0NCBpcyAnQ29tbWVudCA0JzsK CmNyZWF0ZSB0YWJsZSB0ZXN0NSAoCiAgbGlrZSB0ZXN0MiBpbmNsdWRpbmcgY29tbWVudHMsCiAg bGlrZSB0ZXN0MSBpbmNsdWRpbmcgY29tbWVudHMsICAKICBsaWtlIHRlc3QzIGluY2x1ZGluZyBj b21tZW50cywKICBsaWtlIHRlc3Q0IGluY2x1ZGluZyBjb21tZW50cwogKTsKIApTRUxFQ1Qgb2Jq X2Rlc2NyaXB0aW9uKCd0ZXN0NSc6OnJlZ2NsYXNzLCAncGdfY2xhc3MnKSBBUyB0YWJsZV9jb21t ZW50OwoKLyogb3V0cHV0CiB0YWJsZV9jb21tZW50Ci0tLS0tLS0tLS0tLS0tLQogQ29tbWVudCAy ICAgICsKIENvbW1lbnQgMSAgICArCiBDb21tZW50IDMgICAgKwogQ29tbWVudCA0CigxIHJvdykK Ki8KCi0tIFNjZWNuYXJpbyA1OiBNdWx0aXBsZSBzYW1lIGtpbmQgb3B0aW9ucwpkcm9wIHRhYmxl IGlmIGV4aXN0cyB0ZXN0MSwgdGVzdDIsIHRlc3QzLCB0ZXN0NCwgdGVzdDUgOwoKY3JlYXRlIHRh YmxlIHRlc3QxIChmaWVsZDEgaW50KTsKY29tbWVudCBvbiB0YWJsZSB0ZXN0MSBpcyAnU2luZ2xl IGNvbW1lbnQnOwoKY3JlYXRlIHRhYmxlIHRlc3QyIChsaWtlIHRlc3QxIGluY2x1ZGluZyBjb21t ZW50cyBleGNsdWRpbmcgY29tbWVudHMpOwoKU0VMRUNUIG9ial9kZXNjcmlwdGlvbigndGVzdDIn OjpyZWdjbGFzcywgJ3BnX2NsYXNzJykgQVMgdGFibGVfY29tbWVudDsKCi8qIG91dHB1dAogdGFi bGVfY29tbWVudAotLS0tLS0tLS0tLS0tLS0KIChudWxsKQooMSByb3cpCiovCgpjcmVhdGUgdGFi bGUgdGVzdDMgKGxpa2UgdGVzdDEgaW5jbHVkaW5nIGNvbW1lbnRzIGV4Y2x1ZGluZyBjb21tZW50 cyBpbmNsdWRpbmcgY29tbWVudHMpOwoKU0VMRUNUIG9ial9kZXNjcmlwdGlvbigndGVzdDMnOjpy ZWdjbGFzcywgJ3BnX2NsYXNzJykgQVMgdGFibGVfY29tbWVudDsKCi8qIG91dHB1dAogdGFibGVf Y29tbWVudAotLS0tLS0tLS0tLS0tLS0tCiBTaW5nbGUgY29tbWVudAooMSByb3cpCiovCgpjcmVh dGUgdGFibGUgdGVzdDQgKGxpa2UgdGVzdDEgaW5jbHVkaW5nIEFMTCBleGNsdWRpbmcgY29tbWVu dHMpOwoKU0VMRUNUIG9ial9kZXNjcmlwdGlvbigndGVzdDQnOjpyZWdjbGFzcywgJ3BnX2NsYXNz JykgQVMgdGFibGVfY29tbWVudDsKCi8qIG91dHB1dAogdGFibGVfY29tbWVudAotLS0tLS0tLS0t LS0tLS0KIChudWxsKQooMSByb3cKKi8KCmNyZWF0ZSB0YWJsZSB0ZXN0NSAobGlrZSB0ZXN0MSBl eGNsdWRpbmcgY29tbWVudHMgaW5jbHVkaW5nIEFMTCk7CgpTRUxFQ1Qgb2JqX2Rlc2NyaXB0aW9u KCd0ZXN0NSc6OnJlZ2NsYXNzLCAncGdfY2xhc3MnKSBBUyB0YWJsZV9jb21tZW50OwoKLyogb3V0 cHV0CiB0YWJsZV9jb21tZW50Ci0tLS0tLS0tLS0tLS0tLS0KIFNpbmdsZSBjb21tZW50CigxIHJv dykKKi8KCi0tIFNjZWNuYXJpbyA2OiBDb21tZW50cyB3aXRoIG5ldyBsaW5lCmRyb3AgdGFibGUg aWYgZXhpc3RzIHRlc3QxLCB0ZXN0MjsKCmNyZWF0ZSB0YWJsZSB0ZXN0MSAoZmllbGQxIGludCk7 CmNvbW1lbnQgb24gdGFibGUgdGVzdDEgaXMgJ2xpbmUgMQpsaW5lIDIKYW5kIGxpbmUgMyc7Cgpj cmVhdGUgdGFibGUgdGVzdDIgKGxpa2UgdGVzdDEgaW5jbHVkaW5nIGNvbW1lbnRzKTsKClNFTEVD VCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3QyJzo6cmVnY2xhc3MsICdwZ19jbGFzcycpIEFTIHRhYmxl X2NvbW1lbnQ7CgovKiBvdXRwdXQKIHRhYmxlX2NvbW1lbnQKLS0tLS0tLS0tLS0tLS0tCiBsaW5l IDEgICAgICAgKwogbGluZSAyICAgICAgICsKIGFuZCBsaW5lIDMKKDEgcm93KQoqLwoKLS0gU2Nl Y25hcmlvIDc6IE11bHRpcGxlIHRhYmxlcyB3aXRoIGNvbW1lbnRzIHdpdGggbGluZSBicmVhawpk cm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0MSwgdGVzdDIsIHRlc3QzOwoKY3JlYXRlIHRhYmxlIHRl c3QxIChmaWVsZDEgaW50KTsKY29tbWVudCBvbiB0YWJsZSB0ZXN0MSBpcyAnQ29tbWVudCAxCmxp bmUgMic7CgpjcmVhdGUgdGFibGUgdGVzdDIgKGZpZWxkMiBpbnQpOwpjb21tZW50IG9uIHRhYmxl IHRlc3QyIGlzICdDb21tZW50IDIKbGluZSAyJzsKCmNyZWF0ZSB0YWJsZSB0ZXN0MyAobGlrZSB0 ZXN0MSBpbmNsdWRpbmcgY29tbWVudHMsIGxpa2UgdGVzdDIgaW5jbHVkaW5nIGNvbW1lbnRzKTsK ClNFTEVDVCBvYmpfZGVzY3JpcHRpb24oJ3Rlc3QzJzo6cmVnY2xhc3MsICdwZ19jbGFzcycpIEFT IHRhYmxlX2NvbW1lbnQ7CgovKiBvdXRwdXQKIHRhYmxlX2NvbW1lbnQKLS0tLS0tLS0tLS0tLS0t CiBDb21tZW50IDEgICAgKwogbGluZSAyICAgICAgICsKIENvbW1lbnQgMiAgICArCiBsaW5lIDIK KDEgcm93KQoqLwoKLS0gU2NoZW5hcmlvIDc6IFN0cmVzcyBsaWtlIHN0YXRlbWVudCAoMTAwMCB0 YWJsZXMpCkNSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVSRSBzdHJlc3NfY29tbWVudHMocXRkX3Rh YmxlcyBpbnQpCkxBTkdVQUdFIHBscGdzcWwKQVMgJCQKREVDTEFSRQogIGxpa2VfY21kIHRleHQ7 CkJFR0lOCiAgICBGT1IgaSBJTiAxLi5xdGRfdGFibGVzIExPT1AKICAgICAgICBleGVjdXRlICdk cm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0J3x8aTsKICAgIEVORCBMT09QOwoJCglleGVjdXRlICdk cm9wIHRhYmxlIGlmIGV4aXN0cyBzdHJlc3NfY29tbWVudHMnOwoJCgkKCWxpa2VfY21kIDo9ICcn OwoJCglGT1IgaSBJTiAxLi5xdGRfdGFibGVzIExPT1AKICAgICAgICBleGVjdXRlIGZvcm1hdCgn Q1JFQVRFIFRBQkxFICVzICglcyBpbnQpJywgJ3Rlc3QnfHxpLCAnZmllbGQnfHxpKTsKCQlleGVj dXRlIGZvcm1hdCgnY29tbWVudCBvbiBUQUJMRSAlcyBpcyAnJ0NvbW1lbnQgJXMnJyAnLCAndGVz dCd8fGksIGkpOwoJCWxpa2VfY21kIDo9IGxpa2VfY21kIHx8ICdMSUtFIHRlc3QnfHxpfHwnIGlu Y2x1ZGluZyBjb21tZW50cywnOwogICAgRU5EIExPT1A7CgkKCWxpa2VfY21kIDo9IHJ0cmltKGxp a2VfY21kLCAnLCcpOwoJCglleGVjdXRlIGZvcm1hdCgnY3JlYXRlIHRhYmxlIHN0cmVzc19jb21t ZW50cyAoJXMpJywgbGlrZV9jbWQpOwoJCgktLSBDbGVhbnVwCglGT1IgaSBJTiAxLi5xdGRfdGFi bGVzIExPT1AKICAgICAgICBleGVjdXRlICdkcm9wIHRhYmxlIGlmIGV4aXN0cyB0ZXN0J3x8aTsK ICAgIEVORCBMT09QOwpFTkQ7CiQkOwoKY2FsbCBzdHJlc3NfY29tbWVudHMoMTAwMCk7CgpTRUxF Q1Qgb2JqX2Rlc2NyaXB0aW9uKCdzdHJlc3NfY29tbWVudHMnOjpyZWdjbGFzcywgJ3BnX2NsYXNz JykgQVMgdGFibGVfY29tbWVudDsKCi8qIE91dHB1dDoKIHRhYmxlX2NvbW1lbnQKLS0tLS0tLS0t LS0tLS0tCiBDb21tZW50IDEgICAgKwogQ29tbWVudCAyICAgICsKIENvbW1lbnQgMyAgICArCiBD b21tZW50IDQgICAgKwogQ29tbWVudCA1ICAgICsKIENvbW1lbnQgNiAgICArCiBDb21tZW50IDcg ICAgKwogQ29tbWVudCA4ICAgICsKIENvbW1lbnQgOSAgICArCiBDb21tZW50IDEwICAgKwogQ29t bWVudCAxMSAgICsKLi4uCiovCgotLSBTY2VuYXJpbyA4OiBcZHQrIGNvbW1hbmQKZHJvcCB0YWJs ZSBpZiBleGlzdHMgdGVzdDEsIHRlc3QyOwoKY3JlYXRlIHRhYmxlIHRlc3QxIChmaWVsZCBpbnQp Owpjb21tZW50IG9uIHRhYmxlIHRlc3QxIGlzICdTaW1wbGUgQ29tbWVudCc7CgpjcmVhdGUgdGFi bGUgdGVzdDIgKGxpa2UgIHRlc3QxIGluY2x1ZGluZyBjb21tZW50cyk7CgpcZHQrIHRlc3QyCgov KiBPdXRwdXQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg dGFibGVzCiBTY2hlbWEgfCBOYW1lICB8IFR5cGUgIHwgIE93bmVyICAgfCBQZXJzaXN0ZW5jZSB8 IEFjY2VzcyBtZXRob2QgfCAgU2l6ZSAgIHwgIERlc2NyaXB0aW9uCi0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tCiBwdWJsaWMgfCB0ZXN0MiB8IHRhYmxlIHwgcG9zdGdyZXMgfCBw ZXJtYW5lbnQgICB8IGhlYXAgICAgICAgICAgfCAwIGJ5dGVzIHwgU2ltcGxlIENvbW1lbnQKKDEg cm93KQoqLwoKCi0tIFNjZW5hcmlvIDk6IENvbHVtbnMsIGNvbnRyYWludHMgYW5kIGluZGV4ZXMg Y29tbWVudHMgY2hlY2tpbmcgd2hpdCBwZ19kdW1wCmRyb3AgdGFibGUgaWYgZXhpc3RzIHRlc3Qx LCB0ZXN0MjsKCmNyZWF0ZSB0YWJsZSB0ZXN0MSAoZmllbGQxIGludCBjb25zdHJhaW50IG5uX2Nv bnMgbm90IG51bGwsIGZpZWxkMiBpbnQpOwpjb21tZW50IG9uIHRhYmxlIHRlc3QxIGlzICdjb21t ZW50IG9uIHRhYmxlJzsKY29tbWVudCBvbiBjb2x1bW4gdGVzdDEuZmllbGQxIGlzICdjb21tZW50 IG9uIGNvbHVtbic7CmNvbW1lbnQgb24gY29uc3RyYWludCBubl9jb25zIG9uIHRlc3QxIGlzICdj b21tZW50IG9uIG5vdCBudWxsIGNvbnN0cmFpbnQnOwphbHRlciB0YWJsZSB0ZXN0MSBhZGQgY29u c3RyYWludCBjaGtfY29ucyBjaGVjayAoZmllbGQxID4gMCk7CmNvbW1lbnQgb24gY29uc3RyYWlu dCBjaGtfY29ucyBvbiB0ZXN0MSBpcyAnY29tbWVudCBvbiBjaGsgY29uc3RyYWludCc7CgpjcmVh dGUgaW5kZXggaWR4X3Rlc3QxIG9uIHRlc3QxIChmaWVsZDEpOwpjb21tZW50IG9uIGluZGV4IGlk eF90ZXN0MSBpcyAnY29tbWVudCBvbiBpbmRleCc7CgpjcmVhdGUgc3RhdGlzdGljcyBzdGF0X3Rl c3QxIG9uIGZpZWxkMSwgZmllbGQyIGZyb20gdGVzdDE7CmNvbW1lbnQgb24gc3RhdGlzdGljcyBz dGF0X3Rlc3QxIGlzICdjb21tZW50IG9uIHN0YXRpc3RpYyc7CgpjcmVhdGUgdGFibGUgdGVzdDIg KGxpa2UgIHRlc3QxIGluY2x1ZGluZyBBTEwpOwoKcGdfZHVtcCBwb3N0Z3JlcyA+IG91dHB1dC5z cWwKCi8qIG91dHB1dCAoZnJhZ21lbnRzKToKQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0MiAoCiAg ICBmaWVsZDEgaW50ZWdlciBDT05TVFJBSU5UIG5uX2NvbnMgTk9UIE5VTEwsCiAgICBmaWVsZDIg aW50ZWdlciwKICAgIENPTlNUUkFJTlQgY2hrX2NvbnMgQ0hFQ0sgKChmaWVsZDEgPiAwKSkKKTsK Ci0tCi0tIE5hbWU6IFRBQkxFIHRlc3QyOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6IHB1YmxpYzsg T3duZXI6IHBvc3RncmVzCi0tCgpDT01NRU5UIE9OIFRBQkxFIHB1YmxpYy50ZXN0MiBJUyAnY29t bWVudCBvbiB0YWJsZSc7CgoKLS0KLS0gTmFtZTogQ09MVU1OIHRlc3QyLmZpZWxkMTsgVHlwZTog Q09NTUVOVDsgU2NoZW1hOiBwdWJsaWM7IE93bmVyOiBwb3N0Z3JlcwotLQoKQ09NTUVOVCBPTiBD T0xVTU4gcHVibGljLnRlc3QyLmZpZWxkMSBJUyAnY29tbWVudCBvbiBjb2x1bW4nOwoKLS0KLS0g TmFtZTogQ09OU1RSQUlOVCBubl9jb25zIE9OIHRlc3QyOyBUeXBlOiBDT01NRU5UOyBTY2hlbWE6 IHB1YmxpYzsgT3duZXI6IHBvc3RncmVzCi0tCgpDT01NRU5UIE9OIENPTlNUUkFJTlQgbm5fY29u cyBPTiBwdWJsaWMudGVzdDIgSVMgJ2NvbW1lbnQgb24gbm90IG51bGwgY29uc3RyYWludCc7Cgot LQotLSBOYW1lOiBDT05TVFJBSU5UIGNoa19jb25zIE9OIHRlc3QyOyBUeXBlOiBDT01NRU5UOyBT Y2hlbWE6IHB1YmxpYzsgT3duZXI6IHBvc3RncmVzCi0tCgpDT01NRU5UIE9OIENPTlNUUkFJTlQg Y2hrX2NvbnMgT04gcHVibGljLnRlc3QyIElTICdjb21tZW50IG9uIGNoayBjb25zdHJhaW50JzsK Ci0tCi0tIE5hbWU6IHRlc3QyX2ZpZWxkMV9pZHg7IFR5cGU6IElOREVYOyBTY2hlbWE6IHB1Ymxp YzsgT3duZXI6IHBvc3RncmVzCi0tCgpDUkVBVEUgSU5ERVggdGVzdDJfZmllbGQxX2lkeCBPTiBw dWJsaWMudGVzdDIgVVNJTkcgYnRyZWUgKGZpZWxkMSk7CgoKQ09NTUVOVCBPTiBJTkRFWCBwdWJs aWMudGVzdDJfZmllbGQxX2lkeCBJUyAnY29tbWVudCBvbiBpbmRleCc7CgotLQotLSBOYW1lOiB0 ZXN0Ml9maWVsZDFfZmllbGQyX3N0YXQ7IFR5cGU6IFNUQVRJU1RJQ1M7IFNjaGVtYTogcHVibGlj OyBPd25lcjogcG9zdGdyZXMKLS0KCkNSRUFURSBTVEFUSVNUSUNTIHB1YmxpYy50ZXN0Ml9maWVs ZDFfZmllbGQyX3N0YXQgT04gZmllbGQxLCBmaWVsZDIgRlJPTSBwdWJsaWMudGVzdDI7CgotLQot LSBOYW1lOiBTVEFUSVNUSUNTIHRlc3QyX2ZpZWxkMV9maWVsZDJfc3RhdDsgVHlwZTogQ09NTUVO VDsgU2NoZW1hOiBwdWJsaWM7IE93bmVyOiBwb3N0Z3JlcwotLQoKQ09NTUVOVCBPTiBTVEFUSVNU SUNTIHB1YmxpYy50ZXN0Ml9maWVsZDFfZmllbGQyX3N0YXQgSVMgJ2NvbW1lbnQgb24gc3RhdGlz dGljJzsKKi8KCgo= --000000000000612b80064dc961bd--