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 1tdjGO-009AeG-Jp for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Jan 2025 05:08:22 +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 1tdjGN-00FZ1I-Ky for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Jan 2025 05:08:19 +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 1tdjGM-00FZ1A-Ta for pgsql-hackers@lists.postgresql.org; Fri, 31 Jan 2025 05:08:19 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tdjGH-002PSg-2u for pgsql-hackers@lists.postgresql.org; Fri, 31 Jan 2025 05:08:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1738300090; bh=vHV+Bo3nUBGwP/HvfjcpDnYfGaerRJ4kfCC73DmhWJE=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=i5VFeQicPcph218ari5UrFe8YlQavA7AeZMdNDwdofP2ITHPHYNOMzTWyenj/uF7c jGqydfBD2ueCBkh82EClLZ6cHhsxbdRzra6a3NJFsCbZxWIpns8TgAs/BpZsQKAliS GupZNX6PEp2y8QG1F0q6qNYCMWW5H9NFcRFld8PnGlDF3wt0iupL4Nx2H/3E/GtCN0 pXIlKlBj74UTUx/n8DWIybRrsLzyYMKxVE/AuomTEXXR8+TBg3px/NhkAX/OoA3SSO 31R3VXQvCj/XQaba2cGXkRsCIVLQMSJOhUrxPX2je5Xh/h0YhnIFUFXJKew4MVfIDO wjMucPQ/t3kSQ== Received: from [172.30.48.6] (unknown [172.30.48.6]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: s.tatarintsev@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id D82EE60832; Fri, 31 Jan 2025 08:08:09 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------ax0506AUzkjZZLJsSpPIs6xo" Message-ID: <32d38633-a880-43af-ad71-b601f4e89225@postgrespro.ru> Date: Fri, 31 Jan 2025 12:08:09 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Restrict publishing of partitioned table with a foreign table as partition To: Shlok Kyal Cc: pgsql-hackers@lists.postgresql.org References: <12e49de4-8914-4602-bd1c-749cf2e56ad6@postgrespro.ru> Content-Language: en-US From: Sergey Tatarintsev In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/01/31 02:57:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/01/31 01:29:00 #27164135 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------ax0506AUzkjZZLJsSpPIs6xo Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 30.01.2025 19:02, Shlok Kyal пишет: > On Wed, 29 Jan 2025 at 19:21, Sergey Tatarintsev > wrote: >> >> 29.01.2025 12:16, Shlok Kyal пишет: >>> Hi, >>> >>> As part of a discussion in [1], I am starting this thread to address >>> the issue reported for foreign tables. >>> >>> Logical replication of foreign tables is not supported, and we throw >>> an error in this case. But when we create a publication on a >>> partitioned table that has a foreign table as a partition, the initial >>> sync of such a table is successful. We should also throw an error in >>> such cases. >>> With this patch, we will throw an error when we try to create a >>> publication on (or add to an existing publication) a partitioned table >>> with a foreign table as its partition or attach such a table to >>> existing published tables. >>> >>> [1] : https://www.postgresql.org/message-id/CAA4eK1Lhh4SgiYQLNiWSNKGdVSzbd53%3Dsr2tQCKooEphDkUtgw%40mail.gmail.com >>> >>> Thanks and Regards, >>> Shlok Kyal >> Hi! >> >> Thanks for patch. >> >> I reviewed it and made some changes. >> >> 1. we should check foreign tables (not partitioned) >> 2. added checking for foreign table creation >> 3. some little corrections >> >> See attach >> > Hi Sergey, > > I have added most of the changes in v2-0002 with small changes except > one change. > > @@ -1428,6 +1427,12 @@ check_foreign_tables_in_schema(Oid schemaid) > errdetail("foreign table \"%s\" is a partition of > partitioned table \"%s\"", > get_rel_name(foreign_tbl_relid), parent_name))); > } > + else if (relForm->relkind == RELKIND_FOREIGN_TABLE) > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("cannot add relation \"%s\" to publication", > + get_rel_name(relForm->oid)), > + errdetail_relkind_not_supported(RELKIND_FOREIGN_TABLE))); > } > > We should only throw error when foreign table is part of a partition > table in case of 'FOR TABLES IN SCHEMA' . We should not throw an error > otherwise because in case of 'FOR TABLES IN SCHEMA' foreign tables are > not published by default. > > I have added the changes in v3-0001. > > Thanks and Regards, > Shlok Kyal Hello! Ok, but maybe it will be correct to raise an WARNING (or at least LOG) that some tables was skipped during publication. What do you think? And I think we need check tables which was really published in case of 'FOR ALL TABLES' and 'FOR TABLES IN SCHEMA' in our tests. See attach. Also it looks strange - we raise an ERROR for partitioned tables containing foreign partitions , but just skip foreign tables as itself. I think there should be the same behavior in both cases - raise an ERROR or skip. --------------ax0506AUzkjZZLJsSpPIs6xo Content-Type: text/x-patch; charset=UTF-8; name="v4-0001-Restrict-publishing-of-partitioned-table-with-a-f.patch" Content-Disposition: attachment; filename*0="v4-0001-Restrict-publishing-of-partitioned-table-with-a-f.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNDk3NTAzODVjZDNkZjEyYzAyNjU0YTkxOTk3ZjQ4ZjJhYmQ5ODMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjkgSmFuIDIwMjUgMTA6MTg6NTMgKzA1MzAKU3ViamVjdDog W1BBVENIIHYzXSBSZXN0cmljdCBwdWJsaXNoaW5nIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdp dGggYSBmb3JlaWduCiB0YWJsZSBhcyBwYXJ0aXRpb24KCkxvZ2ljYWwgcmVwbGljYXRpb24g b2YgZm9yZWlnbiB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkIGFuZCB3ZSB0aHJvdyBhbgplcnJv ciBpbiB0aGlzIGNhc2UuIEJ1dCB3aGVuIGNyZWF0ZSBhIHB1YmxpY2F0aW9uIG9uIGEgcGFy dGl0aW9uZWQKdGFibGUgdGhhdCBoYXMgYSBmb3JlaWduIHRhYmxlIGFzIHBhcnRpdGlvbiwg dGhlIGluaXRpYWwgc3luYyBvZiBzdWNoCnRhYmxlIGlzIHN1Y2Nlc3NmdWwuIFdlIHNob3Vs ZCBhbHNvIHRocm93IGFuIGVycm9yIGluIHN1Y2ggY2FzZXMuCldpdGggdGhpcyBwYXRjaCB3 ZSB3aWxsIHRocm93IGFuIGVycm9yIHdoZW4gd2UgdHJ5IGNyZWF0ZSBhIHB1YmxpY2F0aW9u Cm9uIChvciBhZGQgdG8gZXhpc3RpbmcgcHVibGljYXRpb24pIGEgcGFydGl0aW9uZWQgdGFi bGUgd2l0aCBmb3JlaWduCnRhYmxlIGFzIGl0cyBwYXJ0aXRpb24uIFdlIHdpbGwgYWxzbyB0 aHJvdyBhbiBlcnJvciB3aGVuIHdlIHRyeSB0bwphdHRhY2ggc3VjaCB0YWJsZSB0byBleGlz dGluZyBwdWJsaXNoZWQgdGFibGVzLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uYyAgICAgIHwgMTUxICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2ZvcmVpZ25jbWRzLmMgICAgICAgIHwgIDQwICsrKysrKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAgIDMgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAgNDQgKysrKysrKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAgIDggKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDM5ICsrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgMzcgKysrKysrCiA3IGZp bGVzIGNoYW5nZWQsIDMyMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCmluZGV4IDQxZmZkNDk0YzguLjA3MWI0MjhiYzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTU1LDYgKzU1LDggQEAgdHlwZWRlZiBz dHJ1Y3QKIHN0YXRpYyB2b2lkCiBjaGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUmVs YXRpb24gdGFyZ2V0cmVsKQogeworCU9pZAkJCWZvcmVpZ25fdGJsX3JlbGlkOworCiAJLyog TXVzdCBiZSBhIHJlZ3VsYXIgb3IgcGFydGl0aW9uZWQgdGFibGUgKi8KIAlpZiAoUmVsYXRp b25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgog CQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKQpAQCAtNjQsNiArNjYsMTkgQEAgY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKIAkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9y dGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kKSkpOwogCisJLyoKKwkg KiBDaGVjayBpZiBpdCBpcyBhIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBhbnkgZm9yZWlnbiB0 YWJsZSBpcyBpdHMKKwkgKiBwYXJ0aXRpb24KKwkgKi8KKwlpZiAoY2hlY2tfcGFydHJlbF9o YXNfZm9yZWlnbl90YWJsZShSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKSwgJmZvcmVpZ25f dGJsX3JlbGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0 aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9u TmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgZXJyZGV0YWlsKCJmb3JlaWduIHRhYmxlIFwiJXNc IiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkJ ICAgZ2V0X3JlbF9uYW1lKGZvcmVpZ25fdGJsX3JlbGlkKSwKKwkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpKSk7CisKIAkvKiBDYW4ndCBiZSBzeXN0ZW0g dGFibGUgKi8KIAlpZiAoSXNDYXRhbG9nUmVsYXRpb24odGFyZ2V0cmVsKSkKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTY5NSw2ICs3MTAsOSBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9p ZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAKIAljaGVja19w dWJsaWNhdGlvbl9hZGRfc2NoZW1hKHNjaGVtYWlkKTsKIAorCS8qIGNoZWNrIGlmIHNjaGVt YSBoYXMgYW55IGZvcmVpZ24gdGFibGUgYXMgcGFydGl0aW9uIHRhYmxlICovCisJY2hlY2tf Zm9yZWlnbl90YWJsZXNfaW5fc2NoZW1hKHNjaGVtYWlkKTsKKwogCS8qIEZvcm0gYSB0dXBs ZSAqLwogCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKIAltZW1zZXQobnVs bHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKQEAgLTEzMjQsMyArMTM0MiwxMzYgQEAgcGdf Z2V0X3B1YmxpY2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVS Tl9ET05FKGZ1bmNjdHgpOwogfQorCisvKiBDaGVjayBpZiBhIHBhcnRpdGlvbmVkIHRhYmxl IGhhcyBhIGZvcmVpZ24gcGFydGl0aW9uKi8KK2Jvb2wKK2NoZWNrX3BhcnRyZWxfaGFzX2Zv cmVpZ25fdGFibGUoRm9ybV9wZ19jbGFzcyByZWxmb3JtLCBPaWQgKmZvcmVpZ25fdGJsX3Jl bGlkKQoreworCWJvb2wJCWhhc19mb3JlaWduX3RibCA9IGZhbHNlOworCisJKmZvcmVpZ25f dGJsX3JlbGlkID0gSW52YWxpZE9pZDsKKwlpZiAocmVsZm9ybS0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCXsKKwkJTGlzdAkgICAqcmVsaWRzID0gTklMOwor CisJCXJlbGlkcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZWxpZHMsIFBV QkxJQ0FUSU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCXJlbGZvcm0tPm9pZCk7CisKKwkJ Zm9yZWFjaF9vaWQocmVsaWQsIHJlbGlkcykKKwkJeworCQkJUmVsYXRpb24JcmVsID0gdGFi bGVfb3BlbihyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQkJaWYgKFJlbGF0aW9uR2V0 Rm9ybShyZWwpLT5yZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKwkJCXsKKwkJ CQloYXNfZm9yZWlnbl90YmwgPSB0cnVlOworCQkJCSpmb3JlaWduX3RibF9yZWxpZCA9IHJl bGlkOworCQkJfQorCisJCQl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwkJCWlmIChoYXNfZm9yZWlnbl90YmwpCisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1 cm4gaGFzX2ZvcmVpZ25fdGJsOworfQorCisvKiBDaGVjayBpZiBhIHNjaGVtYSBoYXMgYSBw YXJ0aXRpb25lZCB0YWJsZSB3aGljaCBoYXMgYSBmb3JlaWduIHBhcnRpdGlvbiAqLwordm9p ZAorY2hlY2tfZm9yZWlnbl90YWJsZXNfaW5fc2NoZW1hKE9pZCBzY2hlbWFpZCkKK3sKKwlS ZWxhdGlvbgljbGFzc1JlbDsKKwlTY2FuS2V5RGF0YSBrZXlbMl07CisJVGFibGVTY2FuRGVz YyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKworCWNsYXNzUmVsID0gdGFibGVfb3BlbihS ZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgm a2V5WzBdLAorCQkJCUFudW1fcGdfY2xhc3NfcmVsbmFtZXNwYWNlLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlzY2hlbWFpZCk7CisJU2NhbktleUluaXQo JmtleVsxXSwKKwkJCQlBbnVtX3BnX2NsYXNzX3JlbGtpbmQsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX0NIQVJFUSwKKwkJCQlDaGFyR2V0RGF0dW0oUkVMS0lORF9QQVJUSVRJ T05FRF9UQUJMRSkpOworCisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNz UmVsLCAyLCBrZXkpOworCXdoaWxlICgodHVwbGUgPSBoZWFwX2dldG5leHQoc2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXsKKwkJRm9ybV9wZ19jbGFzcyByZWxG b3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisJCU9pZAkJCWZvcmVp Z25fdGJsX3JlbGlkOworCisJCWlmIChjaGVja19wYXJ0cmVsX2hhc19mb3JlaWduX3RhYmxl KHJlbEZvcm0sICZmb3JlaWduX3RibF9yZWxpZCkpCisJCXsKKwkJCUxpc3QJICAgKmFuY2Vz dG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbEZvcm0tPm9pZCk7CisJCQlPaWQJ CQlwYXJlbnRfb2lkID0gcmVsRm9ybS0+b2lkOworCQkJY2hhcgkgICAqcGFyZW50X25hbWU7 CisKKwkJCWZvcmVhY2hfb2lkKGFuY2VzdG9yLCBhbmNlc3RvcnMpCisJCQl7CisJCQkJT2lk CQkJYW5jZXN0b3Jfc2NoZW1haWQgPSBnZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7CisK KwkJCQlpZiAoYW5jZXN0b3Jfc2NoZW1haWQgPT0gc2NoZW1haWQpCisJCQkJCXBhcmVudF9v aWQgPSBhbmNlc3RvcjsKKwkJCX0KKworCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisJCQlw YXJlbnRfbmFtZSA9IGdldF9yZWxfbmFtZShwYXJlbnRfb2lkKTsKKworCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CisJCQkJCSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0 aW9uIiwKKwkJCQkJCQlwYXJlbnRfbmFtZSksCisJCQkJCSBlcnJkZXRhaWwoImZvcmVpZ24g dGFibGUgXCIlc1wiIGlzIGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNc IiIsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKGZvcmVpZ25fdGJsX3JlbGlkKSwgcGFyZW50 X25hbWUpKSk7CisJCX0KKwl9CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Ns b3NlKGNsYXNzUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworfQorCisvKiBDaGVjayBpZiBhbnkg Zm9yZWlnbiB0YWJsZSBpcyBhIHBhcnRpdGlvbiB0YWJsZSAqLwordm9pZAorY2hlY2tfZm9y ZWlnbl90YWJsZXModm9pZCkKK3sKKwlSZWxhdGlvbgljbGFzc1JlbDsKKwlTY2FuS2V5RGF0 YSBrZXlbMV07CisJVGFibGVTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwor CWNsYXNzUmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfY2xhc3NfcmVs a2luZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAorCQkJCUNoYXJH ZXREYXR1bShSRUxLSU5EX0ZPUkVJR05fVEFCTEUpKTsKKworCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW5fY2F0YWxvZyhjbGFzc1JlbCwgMSwga2V5KTsKKwl3aGlsZSAoKHR1cGxlID0gaGVh cF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwl7CisJ CUZvcm1fcGdfY2xhc3MgcmVsRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVw bGUpOworCisJCWlmIChyZWxGb3JtLT5yZWxpc3BhcnRpdGlvbikKKwkJeworCQkJT2lkCQkJ cGFyZW50X29pZDsKKwkJCWNoYXIJICAgKnBhcmVudF9uYW1lOworCQkJTGlzdAkgICAqYW5j ZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsRm9ybS0+b2lkKTsKKworCQkJ cGFyZW50X29pZCA9IGxsYXN0X29pZChhbmNlc3RvcnMpOworCQkJcGFyZW50X25hbWUgPSBn ZXRfcmVsX25hbWUocGFyZW50X29pZCk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNn KCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCisJCQkJCQkJ cGFyZW50X25hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJmb3JlaWduIHRhYmxlIFwiJXNcIiBp cyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkJCSAg IE5hbWVTdHIocmVsRm9ybS0+cmVsbmFtZSksIHBhcmVudF9uYW1lKSkpOworCQl9CisJfQor CisJdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShjbGFzc1JlbCwgQWNjZXNz U2hhcmVMb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVp Z25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9mb3JlaWduY21kcy5jCmluZGV4IGMx NGUwMzhkNTQuLjAwNGVkZDk1MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2ZvcmVpZ25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMu YwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvZGVwZW5kZW5jeS5oIgog I2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVj dGFjY2Vzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fdGFi bGUuaCIKQEAgLTE0MjMsNiArMTQyNCw0NSBAQCBDcmVhdGVGb3JlaWduVGFibGUoQ3JlYXRl Rm9yZWlnblRhYmxlU3RtdCAqc3RtdCwgT2lkIHJlbGlkKQogCiAJZnRyZWwgPSB0YWJsZV9v cGVuKEZvcmVpZ25UYWJsZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCisJLyoK KwkgKiBDaGVjayBpZiBpdCBpcyBhIGZvcmVpZ24gcGFydGl0aW9uIGFuZCB0aGUgcGFydGl0 aW9uZWQgdGFibGUgaXMKKwkgKiBwdWJsaXNoZWQKKwkgKi8KKwlpZiAoc3RtdC0+YmFzZS5w YXJ0Ym91bmQgIT0gTlVMTCkKKwl7CisJCVJhbmdlVmFyICAgKnJvb3QgPSBjYXN0Tm9kZShS YW5nZVZhciwgbGZpcnN0KGxpc3RfaGVhZChzdG10LT5iYXNlLmluaFJlbGF0aW9ucykpKTsK KwkJUmVsYXRpb24Jcm9vdHJlbCA9IHRhYmxlX29wZW5ydihyb290LCBBY2Nlc3NTaGFyZUxv Y2spOworCisJCWlmIChSZWxhdGlvbkdldEZvcm0ocm9vdHJlbCktPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJeworCQkJT2lkCQkJc2NoZW1haWQgPSBSZWxh dGlvbkdldE5hbWVzcGFjZShyb290cmVsKTsKKwkJCUxpc3QJICAgKnB1Ym9pZHMgPSBHZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhyb290cmVsLT5yZF9pZCk7CisJCQlMaXN0CSAgICphbmNl c3RvcnM7CisKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMs IEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNh dF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkp OworCQkJYW5jZXN0b3JzID0gZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocm9vdHJlbC0+cmRf aWQpOworCisJCQlmb3JlYWNoX29pZChhbmNlc3RvciwgYW5jZXN0b3JzKQorCQkJeworCQkJ CXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJCQkJCQkJCQkJ CQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCQlzY2hlbWFpZCA9 IGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKTsKKwkJCQlwdWJvaWRzID0gbGlzdF9jb25j YXRfdW5pcXVlX29pZChwdWJvaWRzLAorCQkJCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0 aW9ucyhzY2hlbWFpZCkpOworCQkJfQorCQkJbGlzdF9mcmVlKGFuY2VzdG9ycyk7CisKKwkJ CWlmIChwdWJvaWRzKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBjcmVhdGUg Zm9yZWlnbiBwYXJ0aXRpb24gXCIlc1wiIGFzIHBhcnRpdGlvbmVkIHRhYmxlIFwiJXNcIiBp cyBwdWJsaXNoZWQiLAorCQkJCQkJCQlnZXRfcmVsX25hbWUocmVsaWQpLAorCQkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyb290cmVsKSkpKTsKKwkJfQorCQl0YWJsZV9jbG9z ZShyb290cmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKwogCS8qCiAJICogRm9yIG5vdyB0 aGUgb3duZXIgY2Fubm90IGJlIHNwZWNpZmllZCBvbiBjcmVhdGUuIFVzZSBlZmZlY3RpdmUg dXNlciBJRC4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK aW5kZXggOTUxZmZhYmI2NS4uNzI1OGQ2YzMzZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKQEAgLTg1NSw2ICs4NTUsOSBAQCBDcmVhdGVQdWJsaWNhdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkv KiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlpZiAoc3Rt dC0+Zm9yX2FsbF90YWJsZXMpCiAJeworCQkvKiBDaGVjayBpZiBhbnkgZm9yZWlnbiB0YWJs ZSBpcyBhIHBhcnQgb2YgcGFydGl0aW9uZWQgdGFibGUgKi8KKwkJY2hlY2tfZm9yZWlnbl90 YWJsZXMoKTsKKwogCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRp b24gaW5mbyBpcyByZWJ1aWx0LiAqLwogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgp OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZDYxN2M0YmM2My4uODJl MDc1MDlhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE5MjIyLDYgKzE5 MjIyLDcgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlz dAkgICAqcGFydEJvdW5kQ29uc3RyYWludDsKIAlQYXJzZVN0YXRlICpwc3RhdGUgPSBtYWtl X3BhcnNlc3RhdGUoTlVMTCk7CisJT2lkCQkJZm9yZWlnbl90YmxfcmVsaWQ7CiAKIAlwc3Rh dGUtPnBfc291cmNldGV4dCA9IGNvbnRleHQtPnF1ZXJ5U3RyaW5nOwogCkBAIC0xOTM0Nyw2 ICsxOTM0OCw0OSBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgYXR0YWNoIHRlbXBvcmFy eSByZWxhdGlvbiBvZiBhbm90aGVyIHNlc3Npb24gYXMgcGFydGl0aW9uIikpKTsKIAorCS8q CisJICogQ2hlY2sgaWYgYXR0YWNocmVsIGlzIGEgZm9yZWlnbiB0YWJsZSBvciBhIHBhcnRp dGlvbmVkIHRhYmxlIHdpdGgKKwkgKiBmb3JlaWduIHBhcnRpdGlvbiBhbmQgcmVsIGlzIG5v dCBwdWJsaXNoZWQuCisJICovCisJaWYgKGF0dGFjaHJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSB8fAorCQljaGVja19wYXJ0cmVsX2hhc19mb3JlaWdu X3RhYmxlKFJlbGF0aW9uR2V0Rm9ybShhdHRhY2hyZWwpLCAmZm9yZWlnbl90YmxfcmVsaWQp KQorCXsKKwkJT2lkCQkJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpOwor CQlMaXN0CSAgICpwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsLT5yZF9p ZCk7CisJCUxpc3QJICAgKmFuY2VzdG9yczsKKworCQlwdWJvaWRzID0gbGlzdF9jb25jYXRf dW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKSk7CisJCXB1 Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsIEdldFNjaGVtYVB1Ymxp Y2F0aW9ucyhzY2hlbWFpZCkpOworCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2Vz dG9ycyhyZWwtPnJkX2lkKTsKKworCQlmb3JlYWNoX29pZChhbmNlc3RvciwgYW5jZXN0b3Jz KQorCQl7CisJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAor CQkJCQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKwkJCXNj aGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOworCQkJcHVib2lkcyA9IGxp c3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKKwkJCQkJCQkJCQkJIEdldFNjaGVtYVB1 YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQl9CisJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwor CisJCWlmIChwdWJvaWRzKQorCQl7CisJCQlpZiAoYXR0YWNocmVsLT5yZF9yZWwtPnJlbGtp bmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJy bXNnKCJjYW5ub3QgYXR0YWNoIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBhIGZvcmVpZ24g cGFydGl0aW9uIHRvIGEgcHVibGlzaGVkIHRhYmxlIiksCisJCQkJCQkgZXJyZGV0YWlsKCJm b3JlaWduIHRhYmxlIFwiJXNcIiBpcyBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJs ZSBcIiVzXCIiLAorCQkJCQkJCQkgICBnZXRfcmVsX25hbWUoZm9yZWlnbl90YmxfcmVsaWQp LAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwpKSkpOwor CQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhdHRhY2gg Zm9yZWlnbiB0YWJsZSBcIiVzXCIgdG8gYSBwdWJsaXNoZWQgdGFibGUiLAorCQkJCQkJCQln ZXRfcmVsX25hbWUoYXR0YWNocmVsLT5yZF9pZCkpKSk7CisKKwkJfQorCX0KKwogCS8qCiAJ ICogQ2hlY2sgaWYgYXR0YWNocmVsIGhhcyBhbnkgaWRlbnRpdHkgY29sdW1ucyBvciBhbnkg Y29sdW1ucyB0aGF0IGFyZW4ndAogCSAqIGluIHRoZSBwYXJlbnQuCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNDhjN2QxYTg2MS4uYmE1MWY0YTcyMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTksNiArMTksNyBAQAog CiAjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVj dGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9kLmgiCS8qIElXWVUgcHJhZ21hOiBleHBvcnQgKi8K IAogLyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkxLDQgKzE5MiwxMSBAQCBleHRlcm4gQml0 bWFwc2V0ICpwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBE YXR1bSBwdWJjb2xzLAogZXh0ZXJuIEJpdG1hcHNldCAqcHViX2Zvcm1fY29sc19tYXAoUmVs YXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQlQdWJsaXNoR2VuY29sc1R5cGUgaW5jbHVkZV9n ZW5jb2xzX3R5cGUpOwogCitleHRlcm4gYm9vbCBjaGVja19wYXJ0cmVsX2hhc19mb3JlaWdu X3RhYmxlKEZvcm1fcGdfY2xhc3MgcmVsZm9ybSwKKwkJCQkJCQkJCQkJT2lkICpmb3JlaWdu X3RibF9uYW1lKTsKKworZXh0ZXJuIHZvaWQgY2hlY2tfZm9yZWlnbl90YWJsZXNfaW5fc2No ZW1hKE9pZCBzY2hlbWFpZCk7CisKK2V4dGVybiB2b2lkIGNoZWNrX2ZvcmVpZ25fdGFibGVz KHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogUEdfUFVCTElDQVRJT05fSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCBiYzM4OThmYmU1 Li5iOTczZjQxZTk0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dApAQCAtMTg4NSw2ICsxODg1LDQ1IEBAIERST1AgUFVCTElDQVRJT04gcHViMTsK IERST1AgUFVCTElDQVRJT04gcHViMjsKIERST1AgVEFCTEUgZ2VuY29sczsKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3Qgd2hlbiBmb3JlaWduIHRhYmxlIGlz IGEgcGFydGl0aW9uIG9mIGEgcGFydGl0aW9uZWQgdGFibGUgb24gd2hpY2gKKy0tIHB1Ymxp Y2F0aW9uIGlzIGNyZWF0ZWQKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0X2ZkdzsKK0NSRUFURSBTRVJWRVIg ZmR3X3NlcnZlciBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0X2ZkdzsKK0NSRUFURSBTQ0hF TUEgc2NoMzsKK0NSRUFURSBUQUJMRSBzY2gzLnRtYWluKGlkIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFKGlkKTsKK0NSRUFURSBUQUJMRSBzY2gzLnBhcnQxIFBBUlRJVElPTiBPRiBzY2gz LnRtYWluIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDUpOworQ1JFQVRFIFRBQkxFIHNjaDMu cGFydDIoaWQgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworQ1JFQVRFIEZPUkVJR04g VEFCTEUgc2NoMy5wYXJ0Ml8xIFBBUlRJVElPTiBPRiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMg RlJPTSAoNSkgVE8gKDEwKSBTRVJWRVIgZmR3X3NlcnZlcjsKK0FMVEVSIFRBQkxFIHNjaDMu dG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoNSkg VE8gKDEwKTsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBUQUJMRSBzY2gzLnRtYWlu OworRVJST1I6ICBjYW5ub3QgYWRkIHJlbGF0aW9uICJ0bWFpbiIgdG8gcHVibGljYXRpb24K K0RFVEFJTDogIGZvcmVpZ24gdGFibGUgInBhcnQyXzEiIGlzIGEgcGFydGl0aW9uIG9mIHBh cnRpdGlvbmVkIHRhYmxlICJ0bWFpbiIKK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBU QUJMRVMgSU4gU0NIRU1BIHNjaDM7CitFUlJPUjogIGNhbm5vdCBhZGQgcmVsYXRpb24gInRt YWluIiB0byBwdWJsaWNhdGlvbgorREVUQUlMOiAgZm9yZWlnbiB0YWJsZSAicGFydDJfMSIg aXMgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInRtYWluIgorQ1JFQVRFIFBV QkxJQ0FUSU9OIHB1YjEgRk9SIEFMTCBUQUJMRVM7CitFUlJPUjogIGNhbm5vdCBhZGQgcmVs YXRpb24gInRtYWluIiB0byBwdWJsaWNhdGlvbgorREVUQUlMOiAgZm9yZWlnbiB0YWJsZSAi cGFydDJfMSIgaXMgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInRtYWluIgor LS0gVGVzdCB3aGVuIGEgcGFydGl0aW9uZWQgdGFibGUgd2l0aCBmb3JlaWduIHRhYmxlIGFz IGEgcGFydGl0aW9uIGlzIGF0dGFjaGVkCistLSB0byBwYXJ0aXRpb25lZCB0YWJsZSB3aGlj aCBpcyBhbHJlYWR5IHB1Ymxpc2hlZAorQUxURVIgVEFCTEUgc2NoMy50bWFpbiBERVRBQ0gg UEFSVElUSU9OIHNjaDMucGFydDI7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFC TEUgc2NoMy50bWFpbjsKK0FMVEVSIFRBQkxFIHNjaDMudG1haW4gQVRUQUNIIFBBUlRJVElP TiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoNSkgVE8gKDEwKTsKK0VSUk9SOiAgY2Fu bm90IGF0dGFjaCBhIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggYSBmb3JlaWduIHBhcnRpdGlv biB0byBhIHB1Ymxpc2hlZCB0YWJsZQorREVUQUlMOiAgZm9yZWlnbiB0YWJsZSAicGFydDJf MSIgaXMgYSBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgInBhcnQyIgorLS0gQ2Fu J3QgY3JlYXRlIGZvcmVpZ24gcGFydGl0aW9uIG9mIHB1Ymxpc2hlZCB0YWJsZQorQ1JFQVRF IEZPUkVJR04gVEFCTEUgc2NoMy5wYXJ0M18xIFBBUlRJVElPTiBPRiBzY2gzLnRtYWluIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSkgU0VSVkVSIGZkd19zZXJ2ZXI7CitFUlJPUjog IGNhbm5vdCBjcmVhdGUgZm9yZWlnbiBwYXJ0aXRpb24gInBhcnQzXzEiIGFzIHBhcnRpdGlv bmVkIHRhYmxlICJ0bWFpbiIgaXMgcHVibGlzaGVkCistLSBDYW4ndCBhdHRhY2ggZm9yZWln biBwYXJ0aXRpb24gdG8gcHVibGlzaGVkIHRhYmxlCitDUkVBVEUgRk9SRUlHTiBUQUJMRSBz Y2gzLnBhcnQzXzIoaWQgaW50KSBTRVJWRVIgZmR3X3NlcnZlcjsKK0FMVEVSIFRBQkxFIHNj aDMudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQzXzIgRk9SIFZBTFVFUyBGUk9N ICgxNSkgVE8gKDIwKTsKK0VSUk9SOiAgY2Fubm90IGF0dGFjaCBmb3JlaWduIHRhYmxlICJw YXJ0M18yIiB0byBhIHB1Ymxpc2hlZCB0YWJsZQorRFJPUCBQVUJMSUNBVElPTiBwdWIxOwor RFJPUCBTQ0hFTUEgc2NoMyBDQVNDQURFOworRFJPUCBTRVJWRVIgZmR3X3NlcnZlcjsKK0RS T1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIgdGVzdF9mZHc7CiBSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyLCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl cl9kdW1teTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRleCA0N2Yw MzI5YzI0Li5iOTgxMTAzM2RjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w dWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsCkBAIC0xMTg2LDYgKzExODYsNDMgQEAgRFJPUCBQVUJMSUNBVElPTiBwdWIyOwogRFJP UCBUQUJMRSBnZW5jb2xzOwogCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK Ky0tIFRlc3Qgd2hlbiBmb3JlaWduIHRhYmxlIGlzIGEgcGFydGl0aW9uIG9mIGEgcGFydGl0 aW9uZWQgdGFibGUgb24gd2hpY2gKKy0tIHB1YmxpY2F0aW9uIGlzIGNyZWF0ZWQKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBGT1JFSUdOIERBVEEgV1JB UFBFUiB0ZXN0X2ZkdzsKK0NSRUFURSBTRVJWRVIgZmR3X3NlcnZlciBGT1JFSUdOIERBVEEg V1JBUFBFUiB0ZXN0X2ZkdzsKKworQ1JFQVRFIFNDSEVNQSBzY2gzOworQ1JFQVRFIFRBQkxF IHNjaDMudG1haW4oaWQgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworQ1JFQVRFIFRB QkxFIHNjaDMucGFydDEgUEFSVElUSU9OIE9GIHNjaDMudG1haW4gRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoNSk7CitDUkVBVEUgVEFCTEUgc2NoMy5wYXJ0MihpZCBpbnQpIFBBUlRJVElP TiBCWSBSQU5HRShpZCk7CitDUkVBVEUgRk9SRUlHTiBUQUJMRSBzY2gzLnBhcnQyXzEgUEFS VElUSU9OIE9GIHNjaDMucGFydDIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApIFNFUlZF UiBmZHdfc2VydmVyOworQUxURVIgVEFCTEUgc2NoMy50bWFpbiBBVFRBQ0ggUEFSVElUSU9O IHNjaDMucGFydDIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworCitDUkVBVEUgUFVC TElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbjsKK0NSRUFURSBQVUJMSUNBVElP TiBwdWIxIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNjaDM7CitDUkVBVEUgUFVCTElDQVRJT04g cHViMSBGT1IgQUxMIFRBQkxFUzsKKworLS0gVGVzdCB3aGVuIGEgcGFydGl0aW9uZWQgdGFi bGUgd2l0aCBmb3JlaWduIHRhYmxlIGFzIGEgcGFydGl0aW9uIGlzIGF0dGFjaGVkCistLSB0 byBwYXJ0aXRpb25lZCB0YWJsZSB3aGljaCBpcyBhbHJlYWR5IHB1Ymxpc2hlZAorQUxURVIg VEFCTEUgc2NoMy50bWFpbiBERVRBQ0ggUEFSVElUSU9OIHNjaDMucGFydDI7CitDUkVBVEUg UFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEUgc2NoMy50bWFpbjsKK0FMVEVSIFRBQkxFIHNj aDMudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQyIEZPUiBWQUxVRVMgRlJPTSAo NSkgVE8gKDEwKTsKKworLS0gQ2FuJ3QgY3JlYXRlIGZvcmVpZ24gcGFydGl0aW9uIG9mIHB1 Ymxpc2hlZCB0YWJsZQorQ1JFQVRFIEZPUkVJR04gVEFCTEUgc2NoMy5wYXJ0M18xIFBBUlRJ VElPTiBPRiBzY2gzLnRtYWluIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSkgU0VSVkVS IGZkd19zZXJ2ZXI7CisKKy0tIENhbid0IGF0dGFjaCBmb3JlaWduIHBhcnRpdGlvbiB0byBw dWJsaXNoZWQgdGFibGUKK0NSRUFURSBGT1JFSUdOIFRBQkxFIHNjaDMucGFydDNfMihpZCBp bnQpIFNFUlZFUiBmZHdfc2VydmVyOworQUxURVIgVEFCTEUgc2NoMy50bWFpbiBBVFRBQ0gg UEFSVElUSU9OIHNjaDMucGFydDNfMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOwor CitEUk9QIFBVQkxJQ0FUSU9OIHB1YjE7CitEUk9QIFNDSEVNQSBzY2gzIENBU0NBREU7CitE Uk9QIFNFUlZFUiBmZHdfc2VydmVyOworRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0 X2ZkdzsKKwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwogRFJPUCBST0xFIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1Ag Uk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXJfZHVtbXk7Ci0tIAoyLjM0LjEKCg== --------------ax0506AUzkjZZLJsSpPIs6xo Content-Type: text/x-patch; charset=UTF-8; name="v4-0002-Tests-check-tables-which-was-really-published-via-FO.patch" Content-Disposition: attachment; filename*0="v4-0002-Tests-check-tables-which-was-really-published-via-FO"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA4YTJhNGY5NGU0YzFmMzVlNzcxNzllNmRlMGQ0ZjNmMmQxYzdjZjFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTZXJnZXkgVGF0YXJpbnRzZXYgPHMudGF0YXJpbnRz ZXZAcG9zdGdyZXNwcm8ucnU+CkRhdGU6IEZyaSwgMzEgSmFuIDIwMjUgMTE6NTc6MTggKzA3 MDAKU3ViamVjdDogW1BBVENIXSBUZXN0czogY2hlY2sgdGFibGVzIHdoaWNoIHdhcyByZWFs bHkgcHVibGlzaGVkIHZpYSAnRk9SIEFMTAogVEFCTEVTJyBhbmQgJ0ZPUiBUQUJMRVMgSU4g U0NIRU1BJwoKLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgICAg ICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwg MjYgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbCAgICAgIHwgMjEgKysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDA3MWI0MjhiYzAuLmI3YmUxNDJiZDAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEzNzIsNiArMTM3Miw3IEBA IGNoZWNrX3BhcnRyZWxfaGFzX2ZvcmVpZ25fdGFibGUoRm9ybV9wZ19jbGFzcyByZWxmb3Jt LCBPaWQgKmZvcmVpZ25fdGJsX3JlbGlkKQogCQkJaWYgKGhhc19mb3JlaWduX3RibCkKIAkJ CQlicmVhazsKIAkJfQorCQlsaXN0X2ZyZWUocmVsaWRzKTsKIAl9CiAKIAlyZXR1cm4gaGFz X2ZvcmVpZ25fdGJsOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w dWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dAppbmRleCBiOTczZjQxZTk0Li4yMGRmZTVjNmQwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMTg4Niw2ICsxODg2LDExIEBAIERS T1AgUFVCTElDQVRJT04gcHViMjsKIERST1AgVEFCTEUgZ2VuY29sczsKIFJFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFdlIGRvbid0IHdhbnQgdG8gc2VlIHByZXZpb3Vz bHkgY3JlYXRlZCB0YWJsZXMsIHNvIHdlJ2xsIGNyZWF0ZSBhbiBlbXB0eSBkYXRhYmFzZQor U0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKSBhcyBwcmV2X2RibmFtZQorXGdzZXQKK0NSRUFU RSBEQVRBQkFTRSBwdWJsaWNhdGlvbl90ZXN0X2RiOworXGMgcHVibGljYXRpb25fdGVzdF9k YgogLS0gVGVzdCB3aGVuIGZvcmVpZ24gdGFibGUgaXMgYSBwYXJ0aXRpb24gb2YgYSBwYXJ0 aXRpb25lZCB0YWJsZSBvbiB3aGljaAogLS0gcHVibGljYXRpb24gaXMgY3JlYXRlZAogU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpAQCAtMTkyMiw4ICsxOTI3LDI3IEBA IEFMVEVSIFRBQkxFIHNjaDMudG1haW4gQVRUQUNIIFBBUlRJVElPTiBzY2gzLnBhcnQzXzIg Rk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwCiBFUlJPUjogIGNhbm5vdCBhdHRhY2ggZm9y ZWlnbiB0YWJsZSAicGFydDNfMiIgdG8gYSBwdWJsaXNoZWQgdGFibGUKIERST1AgUFVCTElD QVRJT04gcHViMTsKIERST1AgU0NIRU1BIHNjaDMgQ0FTQ0FERTsKLURST1AgU0VSVkVSIGZk d19zZXJ2ZXI7CitDUkVBVEUgU0NIRU1BIHNjaDQ7CitDUkVBVEUgVEFCTEUgc2NoNC5sdGFi bGUoaWQgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoaWQpOworQ1JFQVRFIFRBQkxFIHNjaDQu bHRhYmxlX3BhcnQgUEFSVElUSU9OIE9GIHNjaDQubHRhYmxlIEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDUpOworQ1JFQVRFIEZPUkVJR04gVEFCTEUgc2NoNC5mdGFibGUoaWQgaW50KSBT RVJWRVIgZmR3X3NlcnZlcjsKK0NSRUFURSBQVUJMSUNBVElPTiBwdWIxIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHNjaDQ7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMiBGT1IgVEFCTEVTIElO IFNDSEVNQSBzY2g0IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKK0NSRUFU RSBQVUJMSUNBVElPTiBwdWIzIEZPUiBBTEwgVEFCTEVTOworU0VMRUNUIHB1Ym5hbWUsIHRh YmxlbmFtZSBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlcyBPUkRFUiBCWSBwdWJuYW1lLCB0 YWJsZW5hbWU7CisgcHVibmFtZSB8ICB0YWJsZW5hbWUgIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyBwdWIxICAgIHwgbHRhYmxlX3BhcnQKKyBwdWIyICAgIHwgbHRhYmxlCisgcHVi MyAgICB8IGx0YWJsZV9wYXJ0CisoMyByb3dzKQorCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjEs IHB1YjI7CitEUk9QIFNDSEVNQSBzY2g0IENBU0NBREU7CitEUk9QIFNFUlZFUiBmZHdfc2Vy dmVyIENBU0NBREU7CiBEUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSIHRlc3RfZmR3OworXGMg OnByZXZfZGJuYW1lCitEUk9QIERBVEFCQVNFIHB1YmxpY2F0aW9uX3Rlc3RfZGI7CiBSRVNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9QIFJPTEUgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyLCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBST0xFIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcl9kdW1teTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9u LnNxbAppbmRleCBiOTgxMTAzM2RjLi5iMjRjMWU5MGM3IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCkBAIC0xMTg4LDYgKzExODgsMTEgQEAgRFJPUCBUQUJMRSBn ZW5jb2xzOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCistLSBXZSBkb24n dCB3YW50IHRvIHNlZSBwcmV2aW91c2x5IGNyZWF0ZWQgdGFibGVzLCBzbyB3ZSdsbCBjcmVh dGUgYW4gZW1wdHkgZGF0YWJhc2UKK1NFTEVDVCBjdXJyZW50X2RhdGFiYXNlKCkgYXMgcHJl dl9kYm5hbWUKK1xnc2V0CitDUkVBVEUgREFUQUJBU0UgcHVibGljYXRpb25fdGVzdF9kYjsK K1xjIHB1YmxpY2F0aW9uX3Rlc3RfZGIKIC0tIFRlc3Qgd2hlbiBmb3JlaWduIHRhYmxlIGlz IGEgcGFydGl0aW9uIG9mIGEgcGFydGl0aW9uZWQgdGFibGUgb24gd2hpY2gKIC0tIHB1Ymxp Y2F0aW9uIGlzIGNyZWF0ZWQKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK QEAgLTEyMjAsOSArMTIyNSwyMSBAQCBBTFRFUiBUQUJMRSBzY2gzLnRtYWluIEFUVEFDSCBQ QVJUSVRJT04gc2NoMy5wYXJ0M18yIEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMAogCiBE Uk9QIFBVQkxJQ0FUSU9OIHB1YjE7CiBEUk9QIFNDSEVNQSBzY2gzIENBU0NBREU7Ci1EUk9Q IFNFUlZFUiBmZHdfc2VydmVyOwotRFJPUCBGT1JFSUdOIERBVEEgV1JBUFBFUiB0ZXN0X2Zk dzsKIAorQ1JFQVRFIFNDSEVNQSBzY2g0OworQ1JFQVRFIFRBQkxFIHNjaDQubHRhYmxlKGlk IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKK0NSRUFURSBUQUJMRSBzY2g0Lmx0YWJs ZV9wYXJ0IFBBUlRJVElPTiBPRiBzY2g0Lmx0YWJsZSBGT1IgVkFMVUVTIEZST00gKDApIFRP ICg1KTsKK0NSRUFURSBGT1JFSUdOIFRBQkxFIHNjaDQuZnRhYmxlKGlkIGludCkgU0VSVkVS IGZkd19zZXJ2ZXI7CitDUkVBVEUgUFVCTElDQVRJT04gcHViMSBGT1IgVEFCTEVTIElOIFND SEVNQSBzY2g0OworQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgc2NoNCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CitDUkVBVEUgUFVC TElDQVRJT04gcHViMyBGT1IgQUxMIFRBQkxFUzsKK1NFTEVDVCBwdWJuYW1lLCB0YWJsZW5h bWUgRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXMgT1JERVIgQlkgcHVibmFtZSwgdGFibGVu YW1lOworRFJPUCBQVUJMSUNBVElPTiBwdWIxLCBwdWIyOworRFJPUCBTQ0hFTUEgc2NoNCBD QVNDQURFOworRFJPUCBTRVJWRVIgZmR3X3NlcnZlciBDQVNDQURFOworRFJPUCBGT1JFSUdO IERBVEEgV1JBUFBFUiB0ZXN0X2ZkdzsKK1xjIDpwcmV2X2RibmFtZQorRFJPUCBEQVRBQkFT RSBwdWJsaWNhdGlvbl90ZXN0X2RiOwogUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOwog RFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciwgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyMjsKIERST1AgUk9MRSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXJfZHVtbXk7Ci0t IAoyLjQzLjAKCg== --------------ax0506AUzkjZZLJsSpPIs6xo--