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 1wZzPF-001SB5-2d for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 23:10:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZzPE-00867K-1i for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 23:10:48 +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 1wZzPD-00867C-2o for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 23:10:48 +0000 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZzPB-00000000sNc-1S7T for pgsql-hackers@postgresql.org; Wed, 17 Jun 2026 23:10:46 +0000 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7e8f690f53aso192047a34.1 for ; Wed, 17 Jun 2026 16:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20251104.gappssmtp.com; s=20251104; t=1781737844; x=1782342644; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=d7yLzxHzzHbX7i4Jg3RDi41fxcwUyTxMktfAFAXK4/Q=; b=t47Zr/dsqfZzWMg5PH2oRMKrOfFHKVH2PhqkulW/aKqx5m/a4XNu86Bg+/ZNwj7+nZ i0lQZT9xVhCEh+LrZeNB9PNlgQoCbrobbqvEpJjBMneNZDKpqLYsJw4HeiL8oeLp/UD1 6h3RdkWnQOAKyBpH2hvMvRIzPB6yLlKX5k+oOSJL7CXO8Zrd9gB0IGd5wgbyd9VGfIzV VQrFdU7DrImU3Psq8Od/O7FjHcuFSNA5+jLAF1AhyLi1PTjt9jQ96WAaFd2boQNTeI0U 7Jrrm1Ik453E9NhM1rSYCVkhnvD4kAiEDpwzKZYBVaLqtlx5wjf7DsvJ0Nc4BoKXUIwo y78w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781737844; x=1782342644; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=d7yLzxHzzHbX7i4Jg3RDi41fxcwUyTxMktfAFAXK4/Q=; b=BO9PiAhIdRJORIQSt9wyVDyA1bJnc35ZcrndU3SfIlR02oGcFBkoZgawBuyTGuMc4S +eyelqWQM8jP2QsY7uZTBwSrHZSLUH8aEAYWjX2fvWbeAwfrSA6xKh9xktftzUubemLU tjzBo5tp+rsIgDsgi8c3Rs4vlWbiaRUGA9a5/4CogF4VRjZVVWYXM+GQgsX3vAJ1pwZu GBtbFWZ58GiequY7HGJd/r7wxqFhe7NfBZX9ESwy6t1XN+YsrPwznpptkaDuxufNKoJV iYpncebWxgkO+2nDG8zMD0m4ooodt8HVm960zoS90CUORoVN3KdATQRTBU4OAPVvlHrP 9wpw== X-Forwarded-Encrypted: i=1; AFNElJ/WFukylPNImD0bppkoptFa01MtiQeMP5K2pPoaWDYOf+yBXaAvXToLHjC1ZgKq32LlT76ndO3qSK1rxuyh@postgresql.org X-Gm-Message-State: AOJu0YzN8TEmUR+ZP+3ZPu9seIRsvtYWis7L9pDbx2N0nkSKdAwGPoJR khhMHQ+Q2O9Ec317g4MXvxF2SdEFvNHyqRcELONlZLH1MkaIMbfP07Tmb+jyt5WtWw== X-Gm-Gg: Acq92OEm+0JWN70mr+kYEuMrIPTcc3MaB8tRuO6lKVJHcqc6G/6XHVM9ueHKRyXJbbq /oL/Ri16tg53z4f5kCRpdIyqGfk6NQs+8CHdYxmJm7aIyhnCL6j5iCEWSJDMoMqITSHwMDJQtqG hFLL7o2E9yCGNbZzeIn5H26P3Nl7v4JbxMNXYVM5rDGaE48zcnR9IRadbXOMwgh+qp8uBChY2hs XXVj6MVecgrmkwI8XisDYhoe8C4v+B4SAo6hYiXcTGRo3ZXCoFaEQS7Oqaeh51q3wEjn1fiRgh/ 87HEzyJL80MGRnFpUzdcT5aHPM+PYVdZx4FahevxVOqynGaa55wVRW+ip3ck1uLHLUYRYh54Ycy 0byIHgL0w/eMzCBXhot/67yxoNnP3XhrBm7zNcL6sahshDs5oYL5gA81mYvivxRBDGX2exdJtn8 v4wTJnuwGc+5RX X-Received: by 2002:a05:6830:6b04:b0:7dc:dd19:7f53 with SMTP id 46e09a7af769-7e90c8f263dmr4460479a34.14.1781737843550; Wed, 17 Jun 2026 16:10:43 -0700 (PDT) Received: from [10.10.244.130] ([12.63.242.123]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7e79f6de65bsm10406584a34.19.2026.06.17.16.10.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 16:10:42 -0700 (PDT) Message-ID: <5c629d2455946ad2fde3c184f64ea2c323ef2133.camel@j-davis.com> Subject: Re: Bug in ALTER SUBSCRIPTION ... SERVER / ... CONNECTION with broken old server From: Jeff Davis To: Amit Kapila , Chao Li Cc: Zsolt Parragi , "Hayato Kuroda (Fujitsu)" , Ajin Cherian , PostgreSQL-development Date: Wed, 17 Jun 2026 16:10:41 -0700 In-Reply-To: References: <960DD2C4-A22C-463A-90ED-86E0FABD8D20@gmail.com> <8B38AFCA-7FFA-44CF-B9A8-81BDCEAFB224@gmail.com> <705148C3-519C-45E7-9EA8-48D9F3B79B06@gmail.com> <1B3A7FF0-3292-484F-992C-27D172772EB8@gmail.com> <65166eb6feb87356f8d60bfe646289ce15a6c729.camel@j-davis.com> <24C6472D-DCAB-4F69-AE8A-FFB4AAB3F6F0@gmail.com> Content-Type: multipart/mixed; boundary="=-j56UXKM4RQNN915aj6it" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-j56UXKM4RQNN915aj6it Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2026-05-26 at 17:44 -0700, Amit Kapila wrote: > > Yep, this part looks good now. Thank you. I committed 0001 with one additional fix: make sure that ALTER SUBSCRIPTION DISABLE doesn't try to construct the old conninfo. I plan to commit 0002 soon. > >=20 > > For the reason you described in the commit message, catching the > > error and later reporting it through ReportSlotConnectionError(), I > > don't think this is over-engineered. I also think keeping the > > subtransaction inside construct_subserver_conninfo() is reasonable, > > because this error-capturing behavior seems specific to the DROP > > SUBSCRIPTION path. OK. > > As for whether the HINT itself really helps, I would reserve my > > opinion. As the test output shows: > > ``` > > DROP SUBSCRIPTION regress_testsub6; > > ERROR:=C2=A0 could not connect to publisher when attempting to drop > > replication slot "dummy": user mapping not found for user > > "regress_subscription_user3", server "test_server" > > HINT:=C2=A0 Use ALTER SUBSCRIPTION ... DISABLE to disable the > > subscription, and then use ALTER SUBSCRIPTION ... SET (slot_name =3D > > NONE) to disassociate it from the slot. > > ``` > >=20 > > The error message already says that the problem is =E2=80=9Cuser mappin= g > > not found=E2=80=9D, so fixing the user mapping could also be a solution= . > > So, the HINT is still useful, but it might not be the most direct > > fix in some case. > >=20 >=20 > Right, the hint doesn't sound to be a right solution for the problem > reported. The user might no longer have permissions on the server to create a new user mapping, so if they want to drop the subscription, then they need to set slot_name=3DNONE. In other words, we can't delete the existing hint language; we can only add new language about adding the user mapping back. I don't see a great way to add that language without making it too long and confusing, but I am open to suggestion. v7-0003 is more than just an error message change, so I updated the commit message. It handles the case where the drop path has rstates!=3DNIL but slot_name=3DNONE: without 0003, the drop will fail while trying to construct the conninfo (without the HINT); with 0003, the drop will silently succeed without removing the tablesync slots (as it does with a connection failure when subconninfo is set). If the use of a subtransaction is fine there, then I think we should proceed with 0003 and whatever hint message is agreeable. Regards, Jeff Davis --=-j56UXKM4RQNN915aj6it Content-Disposition: attachment; filename*0=v7-0002-Avoid-errors-during-DROP-SUBSCRIPTION-when-slot_n.pat; filename*1=ch Content-Type: text/x-patch; name="v7-0002-Avoid-errors-during-DROP-SUBSCRIPTION-when-slot_n.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwYjg5NThkNzVkNjVkMzJjNGM0MWU3ODRlYzE3ZWEzNDQ5NTdlMzUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDEyIE1heSAyMDI2IDE0OjI5OjI5IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAyLzNdIEF2 b2lkIGVycm9ycyBkdXJpbmcgRFJPUCBTVUJTQ1JJUFRJT04gd2hlbiBzbG90X25hbWUKIGlzIE5P TkUuCgpQcmV2aW91c2x5LCBpZiB0aGUgc3Vic2NyaXB0aW9uIHVzZWQgYSBzZXJ2ZXIsCkZvcmVp Z25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKCkgY291bGQgcmFpc2UgYW4gZXJyb3IgKGUuZy4gbWlz c2luZwp1c2VyIG1hcHBpbmcpIGR1cmluZyBEUk9QIFNVQlNDUklQVElPTiBldmVuIGlmIHRoZSBj b25uaW5mbyB3YXNuJ3QKbmVlZGVkIGF0IGFsbC4KCkNvbnN0cnVjdCBjb25uaW5mbyBhZnRlciB0 aGUgZWFybHkgcmV0dXJuLCBzbyB0aGF0IGlmIHNsb3RfbmFtZSBpcwpOT05FIGFuZCByc3RhdGVz IGlzIE5JTCwgdGhlIERST1AgU1VCU0NSSVBUSU9OIHdpbGwgc3VjY2VlZCBldmVuIGlmCkZvcmVp Z25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKCkgcmFpc2VzIGFuIGVycm9yIChlLmcuIG1pc3Npbmcg dXNlcgptYXBwaW5nKS4KCklmIHNsb3RfbmFtZSBpcyBOT05FIGFuZCByc3RhdGVzIGlzIG5vdCBO SUwsIERST1AgU1VCU0NSSVBUSU9OIG1heQpzdGlsbCBlbmNvdW50ZXIgYW4gZXJyb3IgZnJvbSBG b3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZygpLgoKUmVwb3J0ZWQtYnk6IEhheWF0byBLdXJv ZGEgKEZ1aml0c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpSZXZpZXdlZC1ieTogQ2hh byBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9PUzlQUjAxTUIxMjE0OUI1NERFQTE0ODEwOEM2RkE1NjY3RjUyRDJAT1M5UFIwMU1CMTIx NDkuanBucHJkMDEucHJvZC5vdXRsb29rLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYyAgICB8IDg1ICsrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCB8ICA1ICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgfCAgNSArLQogMyBmaWxlcyBjaGFuZ2VkLCA1 NiBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggYzlmYWY2OGNiYzUuLmVlMDZhNzI2ZjQyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0yMjYwLDYgKzIyNjAsNDMgQEAgQWx0 ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQg KnN0bXQsCiAJcmV0dXJuIG15c2VsZjsKIH0KIAorLyoKKyAqIENvbnN0cnVjdCBjb25uaW5mbyBm cm9tIGEgc3Vic2NyaXB0aW9uJ3Mgc2VydmVyLiBMaWtlIGxpYnBxcmN2X2Nvbm5lY3QoKSwKKyAq IGlmIGFuIGVycm9yIG9jY3Vycywgc2V0ICplcnIgdG8gdGhlIGVycm9yIG1lc3NhZ2UgYW5kIHJl dHVybiBOVUxMLgorICoKKyAqIEhvd2V2ZXIsIGZhaWx1cmVzIGluIEZvcmVpZ25TZXJ2ZXJDb25u ZWN0aW9uU3RyaW5nKCkgbWF5IGVyZXBvcnQoRVJST1IpLAorICogYW5kIChhbHNvIGxpa2UgbGli cHFyY3ZfY29ubmVjdCkgaXQncyBub3Qgd29ydGggYWRkaW5nIHRoZSBtYWNoaW5lcnkgdG8KKyAq IHBhc3MgYWxsIG9mIHRob3NlIGJhY2sgdG8gdGhlIGNhbGxlciBqdXN0IHRvIGNvdmVyIHRoaXMg b25lIGNhc2UuCisgKi8KK3N0YXRpYyBjaGFyICoKK2NvbnN0cnVjdF9zdWJzZXJ2ZXJfY29ubmlu Zm8oT2lkIHN1YnNlcnZlciwgT2lkIHN1Ym93bmVyLCBjaGFyICoqZXJyKQoreworCUFjbFJlc3Vs dAlhY2xyZXN1bHQ7CisJRm9yZWlnblNlcnZlciAqc2VydmVyOworCisJKmVyciA9IE5VTEw7CisK KwlzZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyKHN1YnNlcnZlcik7CisKKwlhY2xyZXN1bHQgPSBv YmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQsIHN1YnNlcnZlciwKKwkJCQkJ CQkJc3Vib3duZXIsIEFDTF9VU0FHRSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykK Kwl7CisJCS8qCisJCSAqIFVuYWJsZSB0byBnZW5lcmF0ZSBjb25uZWN0aW9uIHN0cmluZyBiZWNh dXNlIHBlcm1pc3Npb25zIG9uIHRoZQorCQkgKiBmb3JlaWduIHNlcnZlciBoYXZlIGJlZW4gcmVt b3ZlZC4gRm9sbG93IHRoZSBzYW1lIGxvZ2ljIGFzIGFuCisJCSAqIHVudXNhYmxlIHN1YmNvbm5p bmZvICh3aGljaCB3aWxsIHJlc3VsdCBpbiBhbiBFUlJPUiBsYXRlciB1bmxlc3MKKwkJICogc2xv dF9uYW1lID0gTk9ORSkuCisJCSAqLworCQkqZXJyID0gcHNwcmludGYoXygic3Vic2NyaXB0aW9u IG93bmVyIFwiJXNcIiBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gb24gZm9yZWlnbiBzZXJ2ZXIg XCIlc1wiIiksCisJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChzdWJvd25lciwgZmFsc2UpLAorCQkJ CQkJc2VydmVyLT5zZXJ2ZXJuYW1lKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIEZv cmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKHN1Ym93bmVyLCBzZXJ2ZXIpOworfQorCiAvKgog ICogRHJvcCBhIHN1YnNjcmlwdGlvbgogICovCkBAIC0yMjcxLDEwICsyMzA4LDEyIEBAIERyb3BT dWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkK IAlIZWFwVHVwbGUJdHVwOwogCU9pZAkJCXN1YmlkOwogCU9pZAkJCXN1Ym93bmVyOworCU9pZAkJ CXN1YnNlcnZlcjsKKwljaGFyCSAgICpzdWJjb25uaW5mbyA9IE5VTEw7CiAJRGF0dW0JCWRhdHVt OwogCWJvb2wJCWlzbnVsbDsKIAljaGFyCSAgICpzdWJuYW1lOwotCWNoYXIJICAgKmNvbm5pbmZv OworCWNoYXIJICAgKmNvbm5pbmZvID0gTlVMTDsKIAljaGFyCSAgICpzbG90bmFtZTsKIAlMaXN0 CSAgICpzdWJ3b3JrZXJzOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtMjMxMyw5ICsyMzUyLDE1IEBA IERyb3BTdWJzY3JpcHRpb24oRHJvcFN1YnNjcmlwdGlvblN0bXQgKnN0bXQsIGJvb2wgaXNUb3BM ZXZlbCkKIAkJcmV0dXJuOwogCX0KIAorCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQ VElPTk9JRCwgdHVwLAorCQkJCQkJCUFudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvLCAm aXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwkJc3ViY29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3Ry aW5nKGRhdHVtKTsKKwogCWZvcm0gPSAoRm9ybV9wZ19zdWJzY3JpcHRpb24pIEdFVFNUUlVDVCh0 dXApOwogCXN1YmlkID0gZm9ybS0+b2lkOwogCXN1Ym93bmVyID0gZm9ybS0+c3Vib3duZXI7CisJ c3Vic2VydmVyID0gZm9ybS0+c3Vic2VydmVyOwogCW11c3RfdXNlX3Bhc3N3b3JkID0gIXN1cGVy dXNlcl9hcmcoc3Vib3duZXIpICYmIGZvcm0tPnN1YnBhc3N3b3JkcmVxdWlyZWQ7CiAKIAkvKiBt dXN0IGJlIG93bmVyICovCkBAIC0yMzM3LDM5ICsyMzgyLDYgQEAgRHJvcFN1YnNjcmlwdGlvbihE cm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJCQkJCQkgICBB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJuYW1lKTsKIAlzdWJuYW1lID0gcHN0cmR1cChOYW1lU3Ry KCpEYXR1bUdldE5hbWUoZGF0dW0pKSk7CiAKLQkvKiBHZXQgY29ubmluZm8gKi8KLQlpZiAoT2lk SXNWYWxpZChmb3JtLT5zdWJzZXJ2ZXIpKQotCXsKLQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsKLQkJ Rm9yZWlnblNlcnZlciAqc2VydmVyOwotCi0JCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXIoZm9y bS0+c3Vic2VydmVyKTsKLQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2 ZXJSZWxhdGlvbklkLCBmb3JtLT5zdWJzZXJ2ZXIsCi0JCQkJCQkJCQlmb3JtLT5zdWJvd25lciwg QUNMX1VTQUdFKTsKLQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKLQkJewotCQkJLyoK LQkJCSAqIFVuYWJsZSB0byBnZW5lcmF0ZSBjb25uZWN0aW9uIHN0cmluZyBiZWNhdXNlIHBlcm1p c3Npb25zIG9uIHRoZQotCQkJICogZm9yZWlnbiBzZXJ2ZXIgaGF2ZSBiZWVuIHJlbW92ZWQuIEZv bGxvdyB0aGUgc2FtZSBsb2dpYyBhcyBhbgotCQkJICogdW51c2FibGUgc3ViY29ubmluZm8gKHdo aWNoIHdpbGwgcmVzdWx0IGluIGFuIEVSUk9SIGxhdGVyCi0JCQkgKiB1bmxlc3Mgc2xvdF9uYW1l ID0gTk9ORSkuCi0JCQkgKi8KLQkJCWVyciA9IHBzcHJpbnRmKF8oInN1YnNjcmlwdGlvbiBvd25l ciBcIiVzXCIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIG9uIGZvcmVpZ24gc2VydmVyIFwiJXNc IiIpLAotCQkJCQkJICAgR2V0VXNlck5hbWVGcm9tSWQoZm9ybS0+c3Vib3duZXIsIGZhbHNlKSwK LQkJCQkJCSAgIHNlcnZlci0+c2VydmVybmFtZSk7Ci0JCQljb25uaW5mbyA9IE5VTEw7Ci0JCX0K LQkJZWxzZQotCQkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0cmluZyhmb3Jt LT5zdWJvd25lciwKLQkJCQkJCQkJCQkJCQkgc2VydmVyKTsKLQl9Ci0JZWxzZQotCXsKLQkJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElPTk9JRCwgdHVwLAotCQkJCQkJ CQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8pOwotCQljb25uaW5mbyA9IFRl eHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwotCX0KLQogCS8qIEdldCBzbG90bmFtZSAqLwogCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwgdHVwLAogCQkJCQkJCUFudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnNsb3RuYW1lLCAmaXNudWxsKTsKQEAgLTI1MDYsNiArMjUxOCwx MSBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlz VG9wTGV2ZWwpCiAJICovCiAJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwog CisJaWYgKE9pZElzVmFsaWQoc3Vic2VydmVyKSkKKwkJY29ubmluZm8gPSBjb25zdHJ1Y3Rfc3Vi c2VydmVyX2Nvbm5pbmZvKHN1YnNlcnZlciwgc3Vib3duZXIsICZlcnIpOworCWVsc2UKKwkJY29u bmluZm8gPSBzdWJjb25uaW5mbzsKKwogCWlmIChjb25uaW5mbykKIAkJd3Jjb25uID0gd2FscmN2 X2Nvbm5lY3QoY29ubmluZm8sIHRydWUsIHRydWUsIG11c3RfdXNlX3Bhc3N3b3JkLAogCQkJCQkJ CQlzdWJuYW1lLCAmZXJyKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9u Lm91dAppbmRleCA2MTIzNjY3MmNlNC4uOGRiZmFjNjYzMjYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTIxMywxMSArMjEzLDEyIEBAIERST1AgVVNF UiBNQVBQSU5HIEZPUiByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMyBTRVJWRVIgdGVzdF9zZXJ2 ZXI7CiBCRUdJTjsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2IENPTk5FQ1RJ T04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCBwYXNzd29yZD1zZWNyZXQnOwogQUJPUlQ7 Ci1DUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMyBTRVJW RVIgdGVzdF9zZXJ2ZXIgT1BUSU9OUyh1c2VyICdmb28nLCBwYXNzd29yZCAnc2VjcmV0Jyk7Cist LSBmYWlscywgY2Fubm90IGRyb3Agc2xvdAorRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViNjsKK0VSUk9SOiAgdXNlciBtYXBwaW5nIG5vdCBmb3VuZCBmb3IgdXNlciAicmVncmVzc19z dWJzY3JpcHRpb25fdXNlcjMiLCBzZXJ2ZXIgInRlc3Rfc2VydmVyIgogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjYgRElTQUJMRTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWI2IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBEUk9QIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWI2OyAtLW9rCi1EUk9QIFVTRVIgTUFQUElORyBGT1IgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlcjMgU0VSVkVSIHRlc3Rfc2VydmVyOwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyOwogUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSBS RUdSRVNTSU9OIEZST00gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjM7CiBEUk9QIFNFUlZFUiB0 ZXN0X3NlcnZlcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlv bi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IDY2NWI1 MTBmMTgwLi4wNTUzM2Q2NjY3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3Fs CkBAIC0xNjQsMTQgKzE2NCwxMyBAQCBCRUdJTjsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWI2IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCBwYXNzd29y ZD1zZWNyZXQnOwogQUJPUlQ7CiAKLUNSRUFURSBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIzIFNFUlZFUiB0ZXN0X3NlcnZlciBPUFRJT05TKHVzZXIgJ2ZvbycsIHBh c3N3b3JkICdzZWNyZXQnKTsKKy0tIGZhaWxzLCBjYW5ub3QgZHJvcCBzbG90CitEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWI2OwogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViNiBESVNBQkxFOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjYgU0VU IChzbG90X25hbWUgPSBOT05FKTsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjY7 IC0tb2sKIAotRFJPUCBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIz IFNFUlZFUiB0ZXN0X3NlcnZlcjsKLQogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyOwogUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSBSRUdSRVNTSU9O IEZST00gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjM7CiAKLS0gCjIuNDMuMAoK --=-j56UXKM4RQNN915aj6it Content-Disposition: attachment; filename*0=v7-0003-DROP-SUBSCRIPTION-handle-errors-from-fdwconnectio.pat; filename*1=ch Content-Type: text/x-patch; name="v7-0003-DROP-SUBSCRIPTION-handle-errors-from-fdwconnectio.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmYzM1Nzg5MTcwYTI3ZGIwNGFmMGE2NTAwNThiYmU4MWE1NDZhNThmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU aHUsIDE0IE1heSAyMDI2IDEwOjU5OjUzIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NyAzLzNdIERS T1AgU1VCU0NSSVBUSU9OOiBoYW5kbGUgZXJyb3JzIGZyb20gZmR3Y29ubmVjdGlvbi4KClByZXZp b3VzbHksIHdoZW4gY29uc3RydWN0aW5nIHRoZSBjb25uaW5mbyBmb3IgYSBzdWJzY3JpcHRpb24g dXNpbmcgYQpzZXJ2ZXIsIGVycm9ycyBmcm9tIEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5n KCkgd2VyZSByYWlzZWQKaW1tZWRpYXRlbHkuIFRoYXQgY291bGQgY2F1c2UgdGhlIGRyb3AgdG8g ZmFpbCBpZiB0aGVyZSB3ZXJlIGxlZnRvdmVyCnRhYmxlc3luYyBzbG90cywgZXZlbiBpZiBzbG90 X25hbWUgd2FzIHNldCB0byBOT05FLiBJdCBhbHNvIGxvc3QgdGhlCmhlbHBmdWwgSElOVCB3aGVu IHNsb3RfbmFtZSB3YXMgZGVmaW5lZC4gQUNMIGVycm9ycyB3ZXJlIGhhbmRsZWQsIGJ1dAphcmJp dHJhcnkgZXJyb3JzIGZyb20gZmR3Y29ubmVjdGlvbiB3ZXJlIG5vdC4KCkZpeCBieSB1c2luZyBh IHN1YnRyYW5zYWN0aW9uIHRvIGNhcHR1cmUgZXJyb3JzIGNvbnNpc3RlbnRseSBhbmQKZWl0aGVy IHJlcG9ydCB3aXRoIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoKSBpZiBzbG90X25hbWUgaXMg ZGVmaW5lZApvciBzdWNjZWVkIHNpbGVudGx5IGlmIHNsb3RfbmFtZT1OT05FLgoKUmVwb3J0ZWQt Ynk6IEhheWF0byBLdXJvZGEgKEZ1aml0c3UpIDxrdXJvZGEuaGF5YXRvQGZ1aml0c3UuY29tPgpS ZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS9PUzlQUjAxTUIxMjE0OUI1NERFQTE0ODEwOEM2RkE1NjY3RjUy RDJAT1M5UFIwMU1CMTIxNDkuanBucHJkMDEucHJvZC5vdXRsb29rLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICB8IDY3ICsrKysrKysrKysrKysrKy0t LS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCB8ICAzICst CiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBlZTA2YTcyNmY0Mi4uMTM3 YmZhMWE5YjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTU0 LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xzbi5oIgorI2luY2x1ZGUgInV0aWxz L3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKQEAgLTIyNjQs MzcgKzIyNjUsNjMgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRl clN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAgKiBDb25zdHJ1Y3QgY29ubmluZm8gZnJvbSBhIHN1 YnNjcmlwdGlvbidzIHNlcnZlci4gTGlrZSBsaWJwcXJjdl9jb25uZWN0KCksCiAgKiBpZiBhbiBl cnJvciBvY2N1cnMsIHNldCAqZXJyIHRvIHRoZSBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm4gTlVM TC4KICAqCi0gKiBIb3dldmVyLCBmYWlsdXJlcyBpbiBGb3JlaWduU2VydmVyQ29ubmVjdGlvblN0 cmluZygpIG1heSBlcmVwb3J0KEVSUk9SKSwKLSAqIGFuZCAoYWxzbyBsaWtlIGxpYnBxcmN2X2Nv bm5lY3QpIGl0J3Mgbm90IHdvcnRoIGFkZGluZyB0aGUgbWFjaGluZXJ5IHRvCi0gKiBwYXNzIGFs bCBvZiB0aG9zZSBiYWNrIHRvIHRoZSBjYWxsZXIganVzdCB0byBjb3ZlciB0aGlzIG9uZSBjYXNl LgorICogVXNlcyBhIHN1YnRyYW5zYWN0aW9uIHNvIHRoYXQgd2UgY2FuIGNhdGNoIGFyYml0cmFy eSBlcnJvcnMgZnJvbQorICogRm9yZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoKS4KICAqLwog c3RhdGljIGNoYXIgKgogY29uc3RydWN0X3N1YnNlcnZlcl9jb25uaW5mbyhPaWQgc3Vic2VydmVy LCBPaWQgc3Vib3duZXIsIGNoYXIgKiplcnIpCiB7Ci0JQWNsUmVzdWx0CWFjbHJlc3VsdDsKLQlG b3JlaWduU2VydmVyICpzZXJ2ZXI7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKKwlSZXNvdXJjZU93bmVyIG9sZHJlc293bmVyID0gQ3VycmVudFJlc291cmNl T3duZXI7CisJRXJyb3JEYXRhICAqZWRhdGEgPSBOVUxMOworCWNoYXIJICAgKmNvbm5pbmZvID0g TlVMTDsKIAogCSplcnIgPSBOVUxMOwogCi0Jc2VydmVyID0gR2V0Rm9yZWlnblNlcnZlcihzdWJz ZXJ2ZXIpOworCUJlZ2luSW50ZXJuYWxTdWJUcmFuc2FjdGlvbihOVUxMKTsKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAotCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhGb3Jl aWduU2VydmVyUmVsYXRpb25JZCwgc3Vic2VydmVyLAotCQkJCQkJCQlzdWJvd25lciwgQUNMX1VT QUdFKTsKLQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCVBHX1RSWSgpOwogCXsKLQkJ LyoKLQkJICogVW5hYmxlIHRvIGdlbmVyYXRlIGNvbm5lY3Rpb24gc3RyaW5nIGJlY2F1c2UgcGVy bWlzc2lvbnMgb24gdGhlCi0JCSAqIGZvcmVpZ24gc2VydmVyIGhhdmUgYmVlbiByZW1vdmVkLiBG b2xsb3cgdGhlIHNhbWUgbG9naWMgYXMgYW4KLQkJICogdW51c2FibGUgc3ViY29ubmluZm8gKHdo aWNoIHdpbGwgcmVzdWx0IGluIGFuIEVSUk9SIGxhdGVyIHVubGVzcwotCQkgKiBzbG90X25hbWUg PSBOT05FKS4KLQkJICovCi0JCSplcnIgPSBwc3ByaW50ZihfKCJzdWJzY3JpcHRpb24gb3duZXIg XCIlc1wiIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiBvbiBmb3JlaWduIHNlcnZlciBcIiVzXCIi KSwKLQkJCQkJCUdldFVzZXJOYW1lRnJvbUlkKHN1Ym93bmVyLCBmYWxzZSksCi0JCQkJCQlzZXJ2 ZXItPnNlcnZlcm5hbWUpOwotCQlyZXR1cm4gTlVMTDsKKwkJQWNsUmVzdWx0CWFjbHJlc3VsdDsK KwkJRm9yZWlnblNlcnZlciAqc2VydmVyOworCisJCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXIo c3Vic2VydmVyKTsKKwkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKEZvcmVpZ25TZXJ2ZXJS ZWxhdGlvbklkLCBzdWJzZXJ2ZXIsCisJCQkJCQkJCQlzdWJvd25lciwgQUNMX1VTQUdFKTsKKwkJ aWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJZXJybXNnKCJzdWJz Y3JpcHRpb24gb3duZXIgXCIlc1wiIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiBvbiBmb3JlaWdu IHNlcnZlciBcIiVzXCIiLAorCQkJCQkJICAgR2V0VXNlck5hbWVGcm9tSWQoc3Vib3duZXIsIGZh bHNlKSwKKwkJCQkJCSAgIHNlcnZlci0+c2VydmVybmFtZSkpOworCisJCWNvbm5pbmZvID0gRm9y ZWlnblNlcnZlckNvbm5lY3Rpb25TdHJpbmcoc3Vib3duZXIsIHNlcnZlcik7CisJCUFzc2VydChj b25uaW5mbyAhPSBOVUxMKTsKKwkJUmVsZWFzZUN1cnJlbnRTdWJUcmFuc2FjdGlvbigpOworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJQ3VycmVudFJlc291cmNlT3duZXIgPSBv bGRyZXNvd25lcjsKKwl9CisJUEdfQ0FUQ0goKTsKKwl7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworCQllZGF0YSA9IENvcHlFcnJvckRhdGEoKTsKKwkJRmx1c2hFcnJvclN0YXRl KCk7CisJCVJvbGxiYWNrQW5kUmVsZWFzZUN1cnJlbnRTdWJUcmFuc2FjdGlvbigpOworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRy ZXNvd25lcjsKKworCQljb25uaW5mbyA9IE5VTEw7CisJfQorCVBHX0VORF9UUlkoKTsKKworCWlm ICghY29ubmluZm8pCisJeworCQkqZXJyID0gcHN0cmR1cChlZGF0YS0+bWVzc2FnZSk7CisJCUZy ZWVFcnJvckRhdGEoZWRhdGEpOwogCX0KIAotCXJldHVybiBGb3JlaWduU2VydmVyQ29ubmVjdGlv blN0cmluZyhzdWJvd25lciwgc2VydmVyKTsKKwlyZXR1cm4gY29ubmluZm87CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggOGRiZmFjNjYz MjYuLjFhNGM0ZDYzOTJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0CkBAIC0yMTUsNyArMjE1LDggQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjYgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHBhc3MKIEFCT1JU OwogLS0gZmFpbHMsIGNhbm5vdCBkcm9wIHNsb3QKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjY7Ci1FUlJPUjogIHVzZXIgbWFwcGluZyBub3QgZm91bmQgZm9yIHVzZXIgInJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIzIiwgc2VydmVyICJ0ZXN0X3NlcnZlciIKK0VSUk9SOiAgY291 bGQgbm90IGNvbm5lY3QgdG8gcHVibGlzaGVyIHdoZW4gYXR0ZW1wdGluZyB0byBkcm9wIHJlcGxp Y2F0aW9uIHNsb3QgImR1bW15IjogdXNlciBtYXBwaW5nIG5vdCBmb3VuZCBmb3IgdXNlciAicmVn cmVzc19zdWJzY3JpcHRpb25fdXNlcjMiLCBzZXJ2ZXIgInRlc3Rfc2VydmVyIgorSElOVDogIFVz ZSBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIERJU0FCTEUgdG8gZGlzYWJsZSB0aGUgc3Vic2NyaXB0 aW9uLCBhbmQgdGhlbiB1c2UgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpIHRvIGRpc2Fzc29jaWF0ZSBpdCBmcm9tIHRoZSBzbG90LgogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjYgRElTQUJMRTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWI2IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBEUk9QIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWI2OyAtLW9rCi0tIAoyLjQzLjAKCg== --=-j56UXKM4RQNN915aj6it--