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 1sU4ar-000E57-Qi for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jul 2024 13:21:17 +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 1sU4ap-000dQ4-Op for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jul 2024 13:21:16 +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 1sU4ap-000dPw-6W for pgsql-hackers@lists.postgresql.org; Wed, 17 Jul 2024 13:21:15 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sU4al-0001bn-Du for pgsql-hackers@lists.postgresql.org; Wed, 17 Jul 2024 13:21:14 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 7A80B619AD; Wed, 17 Jul 2024 22:21:07 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_f810fb15d352d32853064aac8d4506fe" Content-Transfer-Encoding: 8bit Date: Wed, 17 Jul 2024 22:21:07 +0900 From: torikoshia To: Fujii Masao Cc: pgsql-hackers@lists.postgresql.org Subject: Re: Add new COPY option REJECT_LIMIT In-Reply-To: <979c6d306343f3d665d14eab2cd1b7bc@oss.nttdata.com> References: <63f99327aa6b404cc951217fa3e61fe4@oss.nttdata.com> <6e3dcdc6-8e18-4716-a23b-3bee316aeaa7@oss.nttdata.com> <979c6d306343f3d665d14eab2cd1b7bc@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <920a29a36032befbeb355cbdfbbe0f63@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_f810fb15d352d32853064aac8d4506fe Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2024-07-03 02:07, Fujii Masao wrote: > However, if we support REJECT_LIMIT, I'm not sure if the ON_ERROR > option is still necessary. I remembered another reason for the necessity of ON_ERROR. ON_ERROR defines how to behave when encountering an error and it just accepts 'ignore' and 'stop' currently, but is expected to support other options such as saving details of errors to a table[1]. ON_ERROR=stop is a synonym for REJECT_LIMIT=infinity, but I imagine REJECT_LIMIT would not replace future options of ON_ERROR. Considering this and the option we want to add this time is to specify an upper limit on the number or ratio of errors, the name of this option like "reject_limit" seems better than "ignore_errors". On Fri, Jul 5, 2024 at 4:13 PM torikoshia wrote: > On 2024-07-05 12:59, Fujii Masao wrote: >> On 2024/07/04 12:05, torikoshia wrote: >>> I'm going to update it after discussing the option format as >>> described >>> below. Updated the patch. 0001 sets limit by the absolute number of error rows and 0002 sets limit by ratio of the error. >> If we choose "all" as the keyword, renaming the option to >> IGNORE_ERRORS >> might be more intuitive and easier to understand than REJECT_LIMIT. > I feel that 'infinite' and 'unlimited' are unfamiliar values for > PostgreSQL parameters, so 'all' might be better and IGNORE_ERRORS would > be a better parameter name as your suggestion. As described above, attached patch adopts REJECT_LIMIT, so it uses "infinity". >> This makes me think it might be better to treat REJECT_LIMIT as >> an additional option for ON_ERROR=stop instead of ON_ERROR=ignore >> if we adopt your patch. Since ON_ERROR=stop is the default, >> users could set the maximum number of allowed errors by specifying >> only REJECT_LIMIT. Otherwise, they would need to specify both >> ON_ERROR=ignore and REJECT_LIMIT. > That makes sense. On my second thought, whatever value ON_ERROR is specified(e.g. ignore, stop, table), it seems fine to use REJECT_LIMIT. I feel REJECT_LIMIT has both "ignore" and "stop" characteristics, meaning it ignores errors until it reaches REJECT_LIMIT and stops when it exceeds the REJECT_LIMIT. And REJECT_LIMIT seems orthogonal to 'table', which specifies where to save error details. Attached patch allows using REJECT_LIMIT regardless of the ON_ERROR option value. [1] https://www.postgresql.org/message-id/flat/CACJufxH_OJpVra=0c4ow8fbxHj7heMcVaTNEPa5vAurSeNA-6Q@mail.gmail.com -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation --=_f810fb15d352d32853064aac8d4506fe Content-Transfer-Encoding: base64 Content-Type: text/x-diff; charset=us-ascii; name=v2-0001-Add-new-COPY-option-REJECT_LIMIT_number.patch Content-Disposition: attachment; filename=v2-0001-Add-new-COPY-option-REJECT_LIMIT_number.patch; size=9887 RnJvbSBkMDBlNGE0MDRmYzljNmNjYzhhZWMzODg1MjEwOTA5YTIxYzU1MDA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMTcgSnVsIDIwMjQgMjE6NDc6NTIgKzA5MDAKU3ViamVjdDog W1BBVENIIHYyXSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVCBudW1iZXIKCi0tLQog ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgfCAyMCArKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICB8ICA2ICsr KysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgICAgIHwgMTAgKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgfCAxNCArKysrKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKwogNiBm aWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggMTUxOGFm OGEwNC4uZWU4NGQ5NjYxZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09QWSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZQogICAgIEZPUkNFX05PVF9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0K ICAgICBGT1JDRV9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KICAgICBPTl9FUlJPUiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3JfYWN0aW9uPC9yZXBsYWNlYWJsZT4KKyAgICBS RUpFQ1RfTElNSVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVw bGFjZWFibGU+IHwgSU5GSU5JVFkgfQogICAgIEVOQ09ESU5HICc8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFtZTwvcmVwbGFjZWFibGU+JwogICAgIExPR19WRVJCT1NJ VFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZlcmJvc2l0eTwvcmVwbGFjZWFibGU+ CiA8L3N5bm9wc2lzPgpAQCAtNDExLDYgKzQxMiwyNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxsaXRlcmFsPlJFSkVDVF9MSU1JVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFdoZW4gYSBwb3NpdGl2ZSBpbnRlZ2VyIHZh bHVlIGlzIHNwZWNpZmllZCwgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gbGltaXRzCisgICAgICB0 aGUgbWF4aW11bSB0b2xlcmFibGUgbnVtYmVyIG9mIGVycm9ycyB3aGlsZSBjb252ZXJ0aW5nIGEg Y29sdW1uJ3MgaW5wdXQKKyAgICAgIHZhbHVlIGludG8gaXRzIGRhdGEgdHlwZS4KKyAgICAgIElm IGlucHV0IGRhdGEgY2F1c2VkIG1vcmUgZXJyb3JzIHRoYW4gdGhlIHNwZWNpZmllZCB2YWx1ZSwg ZW50aXJlCisgICAgICA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiBmYWlscy4KKyAgICAgIE90aGVy d2lzZSwgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gZGlzY2FyZHMgdGhlIGlucHV0IHJvdyBhbmQg Y29udGludWVzCisgICAgICB3aXRoIHRoZSBuZXh0IG9uZS4KKyAgICAgPC9wYXJhPgorICAgICA8 cGFyYT4KKyAgICAgIFdoZW4gc3BlY2lmaWVkIDxsaXRlcmFsPklORklOSVRZPC9saXRlcmFsPiwg PGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gaWdub3JlcyBhbGwKKyAgICAgIHRoZSBlcnJvcnMuIFRo aXMgaXMgYSBzeW5vbnltIGZvciA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gPGxpdGVyYWw+ aWdub3JlPC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5FTkNP RElORzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4 IGRmN2E0YTIxYzkuLmYyOTg2MTQwNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHkuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTQxNSw2ICs0MTUs NDMgQEAgZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpw c3RhdGUsIGJvb2wgaXNfZnJvbSkKIAlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TVE9QOwkvKiBrZWVw IGNvbXBpbGVyIHF1aWV0ICovCiB9CiAKKy8qCisgKiBFeHRyYWN0IGEgQ29weVJlamVjdExpbWl0 cyB2YWx1ZXMgZnJvbSBhIERlZkVsZW0uCisgKi8KK3N0YXRpYyBDb3B5UmVqZWN0TGltaXRzCitk ZWZHZXRDb3B5UmVqZWN0TGltaXRPcHRpb25zKERlZkVsZW0gKmRlZikKK3sKKwlDb3B5UmVqZWN0 TGltaXRzCWxpbWl0czsKKwlpbnQ2NAkJCQkJbnVtX2VycjsKKworCXN3aXRjaChub2RlVGFnKGRl Zi0+YXJnKSkKKwl7CisJCWNhc2UgVF9JbnRlZ2VyOgorCQkJbnVtX2VyciA9IGRlZkdldEludDY0 KGRlZik7CisJCQlpZiAobnVtX2VyciA8PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJtc2co Im51bWJlciBmb3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8iKSkpOwor CQkJYnJlYWs7CisJCWNhc2UgVF9TdHJpbmc6CisJCQlpZiAocGdfc3RyY2FzZWNtcChkZWZHZXRT dHJpbmcoZGVmKSwgIklORklOSVRZIikgPT0gMCkKKwkJCQkvKiB3aGVuIHNldCB0byAwLCBpdCBp cyB0cmVhdGVkIGFzIG5vIGxpbWl0ICovCisJCQkJbnVtX2VyciA9IDA7CisJCQllbHNlCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJf VkFMVUUpLAorCQkJCQkJIGVycm1zZygic3RyaW5nIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBiZSAn SU5GSU5JVFknIikpKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBl cnJtc2coInZhbHVlIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyIG9y ICdJTkZJTklUWSciKSkpOworCX0KKwlsaW1pdHMubnVtX2VyciA9IG51bV9lcnI7CisKKwlyZXR1 cm4gbGltaXRzOworfQorCiAvKgogICogRXh0cmFjdCBhIENvcHlMb2dWZXJib3NpdHlDaG9pY2Ug dmFsdWUgZnJvbSBhIERlZkVsZW0uCiAgKi8KQEAgLTQ2Niw2ICs1MDMsNyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJvb2wJCWhlYWRlcl9zcGVjaWZpZWQgPSBm YWxzZTsKIAlib29sCQlvbl9lcnJvcl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlsb2dfdmVy Ym9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJCXJlamVjdF9saW1pdF9zcGVjaWZpZWQg PSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAKIAkvKiBTdXBwb3J0IGV4dGVybmFsIHVz ZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpAQCAtNjMyLDYgKzY3MCwxNCBAQCBQcm9j ZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJbG9nX3ZlcmJvc2l0eV9zcGVj aWZpZWQgPSB0cnVlOwogCQkJb3B0c19vdXQtPmxvZ192ZXJib3NpdHkgPSBkZWZHZXRDb3B5TG9n VmVyYm9zaXR5Q2hvaWNlKGRlZmVsLCBwc3RhdGUpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChk ZWZlbC0+ZGVmbmFtZSwgInJlamVjdF9saW1pdCIpID09IDApCisJCXsKKwkJCWlmIChyZWplY3Rf bGltaXRfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3Rh dGUpOworCQkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IHRydWU7CisJCQlvcHRzX291dC0+b25f ZXJyb3IgPSBDT1BZX09OX0VSUk9SX0lHTk9SRTsKKwkJCW9wdHNfb3V0LT5yZWplY3RfbGltaXRz ID0gZGVmR2V0Q29weVJlamVjdExpbWl0T3B0aW9ucyhkZWZlbCk7CisJCX0KIAkJZWxzZQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggY2U0ZDYyZTcwNy4uNjVkOTUwZWYwNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbS5jCkBAIC0xMDEyLDYgKzEwMTIsMTIgQEAgQ29weUZyb20oQ29weUZyb21T dGF0ZSBjc3RhdGUpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NP UFlfVFVQTEVTX1NLSVBQRUQsCiAJCQkJCQkJCQkJICsrc2tpcHBlZCk7CiAKKwkJCWlmIChjc3Rh dGUtPm9wdHMucmVqZWN0X2xpbWl0cy5udW1fZXJyICYmCisJCQkJc2tpcHBlZCA+IGNzdGF0ZS0+ b3B0cy5yZWplY3RfbGltaXRzLm51bV9lcnIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAorCQkJCQkJIGVycm1zZygiZXhj ZWVkZWQgdGhlIG51bWJlciBzcGVjaWZpZWQgYnkgUkVKRUNUX0xJTUlUIFwiJWxsZFwiIiwKKwkJ CQkJCQkJKGxvbmcgbG9uZykgY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdHMubnVtX2VycikpKTsK IAkJCWNvbnRpbnVlOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCAxNDFmZDQ4ZGMxLi44NmJh MWNiZTE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2ICs0OSwxNSBAQCB0eXBlZGVmIGVudW0g Q29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBs b2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZTsKIAor LyoKKyAqIEEgc3RydWN0IHRvIGhvbGQgcmVqZWN0X2xpbWl0IG9wdGlvbnMsIGluIGEgcGFyc2Vk IGZvcm0uCisgKiBNb3JlIHZhbHVlcyB0byBiZSBhZGRlZCBpbiBhbm90aGVyIHBhdGNoLgorICov Cit0eXBlZGVmIHN0cnVjdCBDb3B5UmVqZWN0TGltaXRzCit7CisJaW50NjQJCW51bV9lcnI7CS8q IG1heGltdW0gdG9sZXJhYmxlIG51bWJlciBvZiBlcnJvcnMgKi8KK30gQ29weVJlamVjdExpbWl0 czsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25zLCBpbiBhIHBhcnNlZCBm b3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1hdHRpbmcsIGV4Y2VwdCBm b3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLCBidXQKQEAgLTgz LDYgKzkyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAlib29sCQljb252 ZXJ0X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUgYmluYXJ5IGNvbnZlcnNpb24/ICovCiAJ Q29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdoYXQgdG8gZG8gd2hlbiBlcnJvciBoYXBw ZW5lZCAqLwogCUNvcHlMb2dWZXJib3NpdHlDaG9pY2UgbG9nX3ZlcmJvc2l0eTsJLyogdmVyYm9z aXR5IG9mIGxvZ2dlZCBtZXNzYWdlcyAqLworCUNvcHlSZWplY3RMaW1pdHMJcmVqZWN0X2xpbWl0 czsJLyogdGhyZXNob2xkcyBvZiByZWplY3RfbGltaXQgKi8KIAlMaXN0CSAgICpjb252ZXJ0X3Nl bGVjdDsgLyogbGlzdCBvZiBjb2x1bW4gbmFtZXMgKGNhbiBiZSBOSUwpICovCiB9IENvcHlGb3Jt YXRPcHRpb25zOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHky Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CmluZGV4IDkzMTU0MmYy NjguLmJlMDRiYWM2YjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CkBAIC04NSw2 ICs4NSwxMCBAQCBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBsb2df dmVyYm9zaXR5IHZlcmJvc2UpOwogRVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0 aW9ucwogTElORSAxOiBDT1BZIHggZnJvbSBzdGRpbiAobG9nX3ZlcmJvc2l0eSBkZWZhdWx0LCBs b2dfdmVyYm9zaXR5IHZlcmIuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorQ09QWSB4IGZyb20gc3RkaW4gKHJlamVjdF9saW1pdCAnSU5GSU5J VFknLCByZWplY3RfbGltaXQgMyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBv cHRpb25zCitMSU5FIDE6IENPUFkgeCBmcm9tIHN0ZGluIChyZWplY3RfbGltaXQgJ0lORklOSVRZ JywgcmVqZWN0X2xpbWl0IDMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KIC0tIGluY29ycmVjdCBvcHRpb25zCiBDT1BZIHggdG8gc3RkaW4g KGZvcm1hdCBCSU5BUlksIGRlbGltaXRlciAnLCcpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBE RUxJTUlURVIgaW4gQklOQVJZIG1vZGUKQEAgLTExNiw2ICsxMjAsOCBAQCBDT1BZIHggdG8gc3Rk b3V0IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBMT0dfVkVSQk9T SVRZICJ1bnN1cHBvcnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IHRvIHN0ZG91 dCAobG9nX3ZlcmJvc2l0eSB1bnN1cHBvcnRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KK0NPUFkgeCBmcm9tIHN0ZGluIHdpdGggKHJlamVjdF9saW1pdCAwKTsKK0VSUk9SOiAgbnVt YmVyIGZvciBSRUpFQ1RfTElNSVQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybwogLS0gdG9vIG1h bnkgY29sdW1ucyBpbiBjb2x1bW4gbGlzdDogc2hvdWxkIGZhaWwKIENPUFkgeCAoYSwgYiwgYywg ZCwgZSwgZCwgYykgZnJvbSBzdGRpbjsKIEVSUk9SOiAgY29sdW1uICJkIiBzcGVjaWZpZWQgbW9y ZSB0aGFuIG9uY2UKQEAgLTc4OSw2ICs3OTUsMTQgQEAgQ09OVEVYVDogIENPUFkgY2hlY2tfaWdu X2VyciwgbGluZSAxOiAiMQl7MX0iCiBDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRI IChvbl9lcnJvciBpZ25vcmUpOwogRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0 ZWQgY29sdW1uCiBDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDE6ICIxCXsxfQkz CWFiYyIKKy0tIHRlc3RzIGZvciByZWplY3RfbGltaXQgb3B0aW9uCitDT1BZIGNoZWNrX2lnbl9l cnIgRlJPTSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgMyk7CitFUlJPUjogIGV4Y2VlZGVkIHRo ZSBudW1iZXIgc3BlY2lmaWVkIGJ5IFJFSkVDVF9MSU1JVCAiMyIKK0NPTlRFWFQ6ICBDT1BZIGNo ZWNrX2lnbl9lcnIsIGxpbmUgNSwgY29sdW1uIG46ICIiCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJP TSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgNCk7CitOT1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lw cGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitDT1BZIGNoZWNrX2lnbl9lcnIg RlJPTSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgJ0lORklOSVRZJyk7CitOT1RJQ0U6ICA0IHJv d3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiAtLSBjbGVh biB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5Mi5zcWwKaW5kZXggOGIxNDk2MjE5NC4uMmRkYzUwY2U4ZCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkyLnNxbApAQCAtNjgsNiArNjgsNyBAQCBDT1BZIHggZnJvbSBzdGRpbiAoY29udmVydF9zZWxl Y3RpdmVseSAoYSksIGNvbnZlcnRfc2VsZWN0aXZlbHkgKGIpKTsKIENPUFkgeCBmcm9tIHN0ZGlu IChlbmNvZGluZyAnc3FsX2FzY2lpJywgZW5jb2RpbmcgJ3NxbF9hc2NpaScpOwogQ09QWSB4IGZy b20gc3RkaW4gKG9uX2Vycm9yIGlnbm9yZSwgb25fZXJyb3IgaWdub3JlKTsKIENPUFkgeCBmcm9t IHN0ZGluIChsb2dfdmVyYm9zaXR5IGRlZmF1bHQsIGxvZ192ZXJib3NpdHkgdmVyYm9zZSk7CitD T1BZIHggZnJvbSBzdGRpbiAocmVqZWN0X2xpbWl0ICdJTkZJTklUWScsIHJlamVjdF9saW1pdCAz KTsKIAogLS0gaW5jb3JyZWN0IG9wdGlvbnMKIENPUFkgeCB0byBzdGRpbiAoZm9ybWF0IEJJTkFS WSwgZGVsaW1pdGVyICcsJyk7CkBAIC04Miw2ICs4Myw3IEBAIENPUFkgeCB0byBzdGRvdXQgKGZv cm1hdCBURVhULCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0byBzdGRpbiAoZm9ybWF0IENTViwg Zm9yY2VfbnVsbChhKSk7CiBDT1BZIHggdG8gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9y IHVuc3VwcG9ydGVkKTsKIENPUFkgeCB0byBzdGRvdXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0 ZWQpOworQ09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDApOwogCiAtLSB0b28g bWFueSBjb2x1bW5zIGluIGNvbHVtbiBsaXN0OiBzaG91bGQgZmFpbAogQ09QWSB4IChhLCBiLCBj LCBkLCBlLCBkLCBjKSBmcm9tIHN0ZGluOwpAQCAtNTU3LDYgKzU1OSwzNCBAQCBDT1BZIGNoZWNr X2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUpOwogMQl7MX0JMwlhYmMK IFwuCiAKKy0tIHRlc3RzIGZvciByZWplY3RfbGltaXQgb3B0aW9uCitDT1BZIGNoZWNrX2lnbl9l cnIgRlJPTSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgMyk7Cis2CXs2fQk2CithCXs3fQk3Cis4 CXs4fQk4ODg4ODg4ODg4Cis5CXthLCA5fQk5CisKKzEwCXsxMH0JMTAKK1wuCisKK0NPUFkgY2hl Y2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKHJlamVjdF9saW1pdCA0KTsKKzYJezZ9CTYKK2EJ ezd9CTcKKzgJezh9CTg4ODg4ODg4ODgKKzkJe2EsIDl9CTkKKworMTAJezEwfQkxMAorXC4KKwor Q09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAocmVqZWN0X2xpbWl0ICdJTkZJTklU WScpOworNgl7Nn0JNgorYQl7N30JNworOAl7OH0JODg4ODg4ODg4OAorOQl7YSwgOX0JOQorCisx MAl7MTB9CTEwCitcLgorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7CiBEUk9Q IFRBQkxFIHZpc3Rlc3Q7CgpiYXNlLWNvbW1pdDogODZkMzM5ODdlOGIwMzY0YjQ2OGM5YjQwYzVm MmEwYTFhZWQ4N2VmMQotLSAKMi4zOS4yCgo= --=_f810fb15d352d32853064aac8d4506fe Content-Transfer-Encoding: base64 Content-Type: text/x-diff; charset=us-ascii; name=v2-0002-Add-new-COPY-option-REJECT_LIMIT_ratio.patch Content-Disposition: attachment; filename=v2-0002-Add-new-COPY-option-REJECT_LIMIT_ratio.patch; size=7642 RnJvbSAzYmE5OWEzOTFkOTZjZGE0OWMxZDQ1ZWQ4Yzk2NWJjNjVjYjY3NWMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMTcgSnVsIDIwMjQgMjE6NTU6MjcgKzA5MDAKU3ViamVjdDog W1BBVENIIHYyXSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVCByYXRpbwoKLS0tCiBk b2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICB8IDExICsrKysrKysrKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDE4ICsrKysrKysrKysrKystLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgfCAxMCArKysrKysrKysrCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29weTIub3V0IHwgIDcgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29w eTIuc3FsICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDYw IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCBlZTg0ZDk2 NjFmLi5iZGVlZDkyZThlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDQsNyArNDQsNyBAQCBDT1BZIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlCiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQog ICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIE9OX0VSUk9SIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPgotICAgIFJF SkVDVF9MSU1JVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBs YWNlYWJsZT4gfCBJTkZJTklUWSB9CisgICAgUkVKRUNUX0xJTUlUIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmludGVnZXI8L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5mbG9hdGluZyBwb2ludDwvcmVwbGFjZWFibGU+IHwgSU5GSU5JVFkgfQog ICAgIEVOQ09ESU5HICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFt ZTwvcmVwbGFjZWFibGU+JwogICAgIExPR19WRVJCT1NJVFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZlcmJvc2l0eTwvcmVwbGFjZWFibGU+CiA8L3N5bm9wc2lzPgpAQCAtNDI0LDYg KzQyNCwxNSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICBPdGhlcndpc2UsIDxjb21t YW5kPkNPUFk8L2NvbW1hbmQ+IGRpc2NhcmRzIHRoZSBpbnB1dCByb3cgYW5kIGNvbnRpbnVlcwog ICAgICAgd2l0aCB0aGUgbmV4dCBvbmUuCiAgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBXaGVuIGEgcG9zaXRpdmUgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaXMgc3BlY2lmaWVkLCA8Y29t bWFuZD5DT1BZPC9jb21tYW5kPgorICAgICAgbGltaXRzIHRoZSBtYXhpbXVtIHJhdGlvIG9mIGVy cm9ycyB3aGlsZSBjb252ZXJ0aW5nIGEgY29sdW1uJ3MgaW5wdXQKKyAgICAgIHZhbHVlIGludG8g aXRzIGRhdGEgdHlwZS4KKyAgICAgIElmIGlucHV0IGRhdGEgY2F1c2VkIGFuIGVycm9yIHJhdGlv IGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHZhbHVlLAorICAgICAgZW50aXJlIDxjb21tYW5k PkNPUFk8L2NvbW1hbmQ+IGZhaWxzLgorICAgICAgT3RoZXJ3aXNlLCA8Y29tbWFuZD5DT1BZPC9j b21tYW5kPiBkaXNjYXJkcyBvbmx5IHRoZSBpbnB1dCByb3dzIHdoZXJlCisgICAgICBlcnJvcnMg b2NjdXJlZCBhbmQgY29waWVzIGFsbCB0aGUgb3RoZXIgcm93cy4KKyAgICAgPC9wYXJhPgogICAg ICA8cGFyYT4KICAgICAgIFdoZW4gc3BlY2lmaWVkIDxsaXRlcmFsPklORklOSVRZPC9saXRlcmFs PiwgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4gaWdub3JlcyBhbGwKICAgICAgIHRoZSBlcnJvcnMu IFRoaXMgaXMgYSBzeW5vbnltIGZvciA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD4gPGxpdGVy YWw+aWdub3JlPC9saXRlcmFsPi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCBmMjk4NjE0MDQzLi4wOTMw ODI2ZDcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00MjIsNyArNDIyLDggQEAgc3RhdGljIENvcHlS ZWplY3RMaW1pdHMKIGRlZkdldENvcHlSZWplY3RMaW1pdE9wdGlvbnMoRGVmRWxlbSAqZGVmKQog ewogCUNvcHlSZWplY3RMaW1pdHMJbGltaXRzOwotCWludDY0CQkJCQludW1fZXJyOworCXVpbnQ2 NAkJCQludW1fZXJyID0gMDsKKwlmbG9hdAkJCQlyYXRpb19lcnIgPSAwOwogCiAJc3dpdGNoKG5v ZGVUYWcoZGVmLT5hcmcpKQogCXsKQEAgLTQzMywxNCArNDM0LDIwIEBAIGRlZkdldENvcHlSZWpl Y3RMaW1pdE9wdGlvbnMoRGVmRWxlbSAqZGVmKQogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCQkgZXJybXNnKCJudW1iZXIgZm9yIFJFSkVDVF9M SU1JVCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIikpKTsKIAkJCWJyZWFrOworCQljYXNlIFRf RmxvYXQ6CisJCQlyYXRpb19lcnIgPSBkZWZHZXROdW1lcmljKGRlZik7CisJCQlpZiAocmF0aW9f ZXJyIDw9IDAgfHwgcmF0aW9fZXJyID49IDEpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygi ZmxvYXQgZm9yIFJFSkVDVF9MSU1JVCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBzbWFs bGVyIHRoYW4gMSIpKSk7CisJCQlicmVhazsKIAkJY2FzZSBUX1N0cmluZzoKLQkJCWlmIChwZ19z dHJjYXNlY21wKGRlZkdldFN0cmluZyhkZWYpLCAiSU5GSU5JVFkiKSA9PSAwKQotCQkJCS8qIHdo ZW4gc2V0IHRvIDAsIGl0IGlzIHRyZWF0ZWQgYXMgbm8gbGltaXQgKi8KLQkJCQludW1fZXJyID0g MDsKLQkJCWVsc2UKKwkJCWlmIChwZ19zdHJjYXNlY21wKGRlZkdldFN0cmluZyhkZWYpLCAiSU5G SU5JVFkiKSAhPSAwKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJCSBlcnJtc2coInN0cmluZyBmb3IgUkVK RUNUX0xJTUlUIG11c3QgYmUgJ0lORklOSVRZJyIpKSk7CisKKwkJCS8qIHdoZW4gc2V0IHRvIDAs IGl0IGlzIHRyZWF0ZWQgYXMgbm8gbGltaXQgKi8KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJ ZXJlcG9ydChFUlJPUiwKQEAgLTQ0OCw2ICs0NTUsNyBAQCBkZWZHZXRDb3B5UmVqZWN0TGltaXRP cHRpb25zKERlZkVsZW0gKmRlZikKIAkJCQkJIGVycm1zZygidmFsdWUgZm9yIFJFSkVDVF9MSU1J VCBtdXN0IGJlIHBvc2l0aXZlIGludGVnZXIgb3IgJ0lORklOSVRZJyIpKSk7CiAJfQogCWxpbWl0 cy5udW1fZXJyID0gbnVtX2VycjsKKwlsaW1pdHMucmF0aW9fZXJyID0gcmF0aW9fZXJyOwogCiAJ cmV0dXJuIGxpbWl0czsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IDY1ZDk1MGVmMDcu LjY5NDg1YTI1YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtNjQ2LDYgKzY0Niw3IEBA IENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCWludDY0CQlwcm9jZXNzZWQgPSAwOwog CWludDY0CQlleGNsdWRlZCA9IDA7CiAJaW50NjQJCXNraXBwZWQgPSAwOworCWRvdWJsZQkJcmF0 aW9fZXJyID0gMDsKIAlib29sCQloYXNfYmVmb3JlX2luc2VydF9yb3dfdHJpZzsKIAlib29sCQlo YXNfaW5zdGVhZF9pbnNlcnRfcm93X3RyaWc7CiAJYm9vbAkJbGVhZnBhcnRfdXNlX211bHRpX2lu c2VydCA9IGZhbHNlOwpAQCAtMTMxMCw2ICsxMzExLDE1IEBAIENvcHlGcm9tKENvcHlGcm9tU3Rh dGUgY3N0YXRlKQogCQkJQ29weU11bHRpSW5zZXJ0SW5mb0ZsdXNoKCZtdWx0aUluc2VydEluZm8s IE5VTEwsICZwcm9jZXNzZWQpOwogCX0KIAorCXJhdGlvX2VyciA9IChkb3VibGUpIHNraXBwZWQg LyAocHJvY2Vzc2VkICsgc2tpcHBlZCk7CisJaWYgKGNzdGF0ZS0+b3B0cy5yZWplY3RfbGltaXRz LnJhdGlvX2VyciAmJgorCQljc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0cy5yYXRpb19lcnIgPCBy YXRpb19lcnIpCisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0JBRF9DT1BZ X0ZJTEVfRk9STUFUKSwKKwkJCQllcnJtc2coImV4Y2VlZGVkIHRoZSByYXRpbyBzcGVjaWZpZWQg YnkgUkVKRUNUX0xJTUlUIFwiJWZcIiwgdGhlIGVycm9yIHJhdGlvIHdhczogXCIlZlwiIiwKKwkJ CQljc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0cy5yYXRpb19lcnIsCisJCQkJcmF0aW9fZXJyKSkp OworCiAJLyogRG9uZSwgY2xlYW4gdXAgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2Fs bGJhY2sucHJldmlvdXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCA4NmJhMWNiZTE2Li5hZDI2MDY3 NjNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYgZW51bSBDb3B5 TG9nVmVyYm9zaXR5Q2hvaWNlCiB0eXBlZGVmIHN0cnVjdCBDb3B5UmVqZWN0TGltaXRzCiB7CiAJ aW50NjQJCW51bV9lcnI7CS8qIG1heGltdW0gdG9sZXJhYmxlIG51bWJlciBvZiBlcnJvcnMgKi8K KwlmbG9hdAkJcmF0aW9fZXJyOwkvKiBtYXhpbXVtIHRvbGVyYWJsZSByYXRpbyBvZiBlcnJvcnMg Ki8KIH0gQ29weVJlamVjdExpbWl0czsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29weTIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5v dXQKaW5kZXggYmUwNGJhYzZiMS4uNTg0YWJhYzE1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j b3B5Mi5vdXQKQEAgLTEyMiw2ICsxMjIsOCBAQCBMSU5FIDE6IENPUFkgeCB0byBzdGRvdXQgKGxv Z192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBD T1BZIHggZnJvbSBzdGRpbiB3aXRoIChyZWplY3RfbGltaXQgMCk7CiBFUlJPUjogIG51bWJlciBm b3IgUkVKRUNUX0xJTUlUIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8KK0NPUFkgeCBmcm9tIHN0 ZGluIHdpdGggKHJlamVjdF9saW1pdCAxLjEpOworRVJST1I6ICBmbG9hdCBmb3IgUkVKRUNUX0xJ TUlUIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIHNtYWxsZXIgdGhhbiAxCiAtLSB0b28g bWFueSBjb2x1bW5zIGluIGNvbHVtbiBsaXN0OiBzaG91bGQgZmFpbAogQ09QWSB4IChhLCBiLCBj LCBkLCBlLCBkLCBjKSBmcm9tIHN0ZGluOwogRVJST1I6ICBjb2x1bW4gImQiIHNwZWNpZmllZCBt b3JlIHRoYW4gb25jZQpAQCAtODAzLDYgKzgwNSwxMSBAQCBDT1BZIGNoZWNrX2lnbl9lcnIgRlJP TSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgNCk7CiBOT1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lw cGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CiBDT1BZIGNoZWNrX2lnbl9lcnIg RlJPTSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgJ0lORklOSVRZJyk7CiBOT1RJQ0U6ICA0IHJv d3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CitDT1BZIGNo ZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChyZWplY3RfbGltaXQgMC42KTsKK0VSUk9SOiAg ZXhjZWVkZWQgdGhlIHJhdGlvIHNwZWNpZmllZCBieSBSRUpFQ1RfTElNSVQgIjAuNjAwMDAwIiwg dGhlIGVycm9yIHJhdGlvIHdhczogIjAuNjY2NjY3IgorQ09OVEVYVDogIENPUFkgY2hlY2tfaWdu X2VyciwgbGluZSA3OiAiIgorQ09QWSBjaGVja19pZ25fZXJyIEZST00gU1RESU4gV0lUSCAocmVq ZWN0X2xpbWl0IDAuNyk7CitOT1RJQ0U6ICA0IHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRh IHR5cGUgaW5jb21wYXRpYmlsaXR5CiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBmb3JjZXRlc3Q7 CiBEUk9QIFRBQkxFIHZpc3Rlc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggMmRkYzUwY2U4 ZC4uMzlmNDRkOTQxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbApAQCAtODQsNiArODQsNyBAQCBD T1BZIHggdG8gc3RkaW4gKGZvcm1hdCBDU1YsIGZvcmNlX251bGwoYSkpOwogQ09QWSB4IHRvIHN0 ZGluIChmb3JtYXQgQklOQVJZLCBvbl9lcnJvciB1bnN1cHBvcnRlZCk7CiBDT1BZIHggdG8gc3Rk b3V0IChsb2dfdmVyYm9zaXR5IHVuc3VwcG9ydGVkKTsKIENPUFkgeCBmcm9tIHN0ZGluIHdpdGgg KHJlamVjdF9saW1pdCAwKTsKK0NPUFkgeCBmcm9tIHN0ZGluIHdpdGggKHJlamVjdF9saW1pdCAx LjEpOwogCiAtLSB0b28gbWFueSBjb2x1bW5zIGluIGNvbHVtbiBsaXN0OiBzaG91bGQgZmFpbAog Q09QWSB4IChhLCBiLCBjLCBkLCBlLCBkLCBjKSBmcm9tIHN0ZGluOwpAQCAtNTg3LDYgKzU4OCwy NCBAQCBhCXs3fQk3CiAxMAl7MTB9CTEwCiBcLgogCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBT VERJTiBXSVRIIChyZWplY3RfbGltaXQgMC42KTsKKzYJezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4 ODg4ODg4ODgKKzkJe2EsIDl9CTkKKworMTAJezEwfQkxMAorXC4KKworQ09QWSBjaGVja19pZ25f ZXJyIEZST00gU1RESU4gV0lUSCAocmVqZWN0X2xpbWl0IDAuNyk7Cis2CXs2fQk2CithCXs3fQk3 Cis4CXs4fQk4ODg4ODg4ODg4Cis5CXthLCA5fQk5CisKKzEwCXsxMH0JMTAKK1wuCisKIC0tIGNs ZWFuIHVwCiBEUk9QIFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKCmJhc2Ut Y29tbWl0OiA4NmQzMzk4N2U4YjAzNjRiNDY4YzliNDBjNWYyYTBhMWFlZDg3ZWYxCi0tIAoyLjM5 LjIKCg== --=_f810fb15d352d32853064aac8d4506fe--