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 1svFD7-00DUAQ-Gr for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Sep 2024 12:09:06 +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 1svFD4-00HCNh-Uj for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Sep 2024 12:09:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svFD4-00HCNZ-Im for pgsql-hackers@lists.postgresql.org; Mon, 30 Sep 2024 12:09:02 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svFCu-001pwK-A1 for pgsql-hackers@lists.postgresql.org; Mon, 30 Sep 2024 12:09:01 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 65F66613DB; Mon, 30 Sep 2024 21:08:47 +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="=_7763dad06e24dca8b7729dd3d711f2d3" Content-Transfer-Encoding: 7bit Date: Mon, 30 Sep 2024 21:08:47 +0900 From: torikoshia To: jian he Cc: Fujii Masao , zhjwpku@gmail.com, pgsql-hackers@lists.postgresql.org Subject: Re: Add new COPY option REJECT_LIMIT In-Reply-To: References: <63f99327aa6b404cc951217fa3e61fe4@oss.nttdata.com> <6e3dcdc6-8e18-4716-a23b-3bee316aeaa7@oss.nttdata.com> <979c6d306343f3d665d14eab2cd1b7bc@oss.nttdata.com> <920a29a36032befbeb355cbdfbbe0f63@oss.nttdata.com> <54bea7dd-94b1-41f1-a4e9-c5c53cc82ce7@oss.nttdata.com> <644a094c-2c0c-4b5f-b151-3677c7de4ee7@oss.nttdata.com> <5f807fcf3a36df7ba41464ab40b5c37d@oss.nttdata.com> <056a5728cf733685cff7d9b5a8fbb0ad@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_7763dad06e24dca8b7729dd3d711f2d3 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-09-28 10:48, Jian he wrote: Thanks for your comments! > +/* > + * Extract REJECT_LIMIT value from a DefElem. > + */ > +static int64 > +defGetCopyRejectLimitOptions(DefElem *def) > +{ > + int64 reject_limit; > + > + if (def->arg == NULL) > + ereport(ERROR, > + (errcode(ERRCODE_SYNTAX_ERROR), > + errmsg("REJECT_LIMIT requires a positive integer"))); > + > + if (nodeTag(def->arg) == T_Integer) > + { > + reject_limit = defGetInt64(def); > + if (reject_limit <= 0) > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("REJECT_LIMIT (%lld) must be greater than zero", > + (long long) reject_limit))); > + } > + else > + { > + char *sval = defGetString(def); > + ereport(ERROR, > + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > + errmsg("REJECT_LIMIT (%s) must be a positive integer", > + sval))); > + } > + > + return reject_limit; > +} > there will be an integer overflow issue? > > Can you try the following? Since defGetInt64() checks not only whether the input value exceeds the range of bigint but also input value is specified, attached v6 patch checks them by directly calling defGetInt64(). > > static int64 > defGetCopyRejectLimitOptions(DefElem *def) > { > int64 reject_limit; > reject_limit = defGetInt64(def); > if (reject_limit <= 0) > ereport(ERROR, > (errcode(ERRCODE_INVALID_PARAMETER_VALUE), > errmsg("REJECT_LIMIT (%lld) must be greater than zero", > (long long) reject_limit))); > } > > > > > REJECT_LIMIT integer > i think, you want REJECT_LIMIT be bigint? > so here it should be > REJECT_LIMIT bigint\ > ? Hmm, bigint and integer include numbers less than 0, but REJECT_LIMIT only accepts numbers greater than 0. I now feel both may not be appropriate. Referring to the manual of CREATE SEQUENCE[1], here we may be able to use not only the data types, such as bigint and integer but something like minvalue, maxvalue. I'm wondering if we can use the wording maxerror as in the attached patch. [1] https://www.postgresql.org/docs/devel/sql-createsequence.html -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation --=_7763dad06e24dca8b7729dd3d711f2d3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v6-0001-Add-new-COPY-option-REJECT_LIMIT.patch Content-Disposition: attachment; filename=v6-0001-Add-new-COPY-option-REJECT_LIMIT.patch; size=8703 RnJvbSA1NWE5OWZjMTg2YzI2M2NkZDc3NDFhMzhhOWM2ODRjOWNiOGFjMWQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IE1vbiwgMzAgU2VwIDIwMjQgMjA6MzM6MjYgKzA5MDAKU3ViamVjdDog W1BBVENIIHY2XSBBZGQgbmV3IENPUFkgb3B0aW9uIFJFSkVDVF9MSU1JVAoKOWUyZDg3MCBlbmFi bGVkIHRoZSBDT1BZIEZST00gY29tbWFuZCB0byBza2lwIHNvZnQgZXJyb3JzLCBidXQgdGhlcmUK d2FzIG5vIGxpbWl0YXRpb24gYWJvdXQgdGhlIG51bWJlciBvZiBlcnJvcnMgYW5kIHNraXBwZWQg YWxsIHRoZSBzb2Z0CmVycm9ycy4KSW4gc29tZSBjYXNlcyB0aGVyZSB3b3VsZCBiZSBhIGxpbWl0 YXRpb24gaG93IG1hbnkgZXJyb3JzIGFyZQp0b2xlcmFibGUuIFRoaXMgcGF0Y2ggaW50cm9kdWNl cyBSRUpFQ1RfTElNSVQgdG8gc3BlY2lmeSBob3cgbWFueQplcnJvcnMgY2FuIGJlIHNraXBwZWQu Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAgICAgICAgfCAxOSArKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgICB8IDM0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAg ICB8ICA1ICsrKysrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICB8ICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0IHwgMTAgKysrKysrKysrCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKwog NiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCAxNTE4 YWY4YTA0Li4yZDY0NWVkMjU1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDQsNiArNDQsNyBAQCBDT1BZ IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICggPHJlcGxhY2VhYmxlCiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICog fQogICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIE9OX0VSUk9SIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxhY2VhYmxlPgorICAg IFJFSkVDVF9MSU1JVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF4ZXJyb3I8L3Jl cGxhY2VhYmxlPgogICAgIEVOQ09ESU5HICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZW5jb2RpbmdfbmFtZTwvcmVwbGFjZWFibGU+JwogICAgIExPR19WRVJCT1NJVFkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZlcmJvc2l0eTwvcmVwbGFjZWFibGU+CiA8L3N5bm9wc2lz PgpAQCAtNDExLDYgKzQxMiwyNCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPlJFSkVDVF9MSU1JVDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXJyb3Jz IHRvbGVyYXRlZCB3aGlsZSBjb252ZXJ0aW5nIGEKKyAgICAgIGNvbHVtbidzIGlucHV0IHZhbHVl IHRvIGl0cyBkYXRhIHR5cGUsIHdoZW4gPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+IGlzCisg ICAgICBzZXQgdG8gPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPi4KKyAgICAgIElmIHRoZSBpbnB1 dCBjYXVzZXMgbW9yZSBlcnJvcnMgdGhhbiB0aGUgc3BlY2lmaWVkIHZhbHVlLCB0aGUgPGNvbW1h bmQ+Q09QWTwvY29tbWFuZD4KKyAgICAgIGNvbW1hbmQgZmFpbHMsIGV2ZW4gd2l0aCA8bGl0ZXJh bD5PTl9FUlJPUjwvbGl0ZXJhbD4gc2V0IHRvIDxsaXRlcmFsPmlnbm9yZTwvbGl0ZXJhbD4uCisg ICAgICBUaGlzIGNsYXVzZSBtdXN0IGJlIHVzZWQgd2l0aCA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0 ZXJhbD49PGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgYW5kIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5tYXhlcnJvcjwvcmVwbGFjZWFibGU+IG11c3QgYmUgcG9zaXRpdmUu CisgICAgICBJZiBub3Qgc3BlY2lmaWVkLCA8bGl0ZXJhbD5PTl9FUlJPUjwvbGl0ZXJhbD49PGxp dGVyYWw+aWdub3JlPC9saXRlcmFsPgorICAgICAgYWxsb3dzIGFuIHVubGltaXRlZCBudW1iZXIg b2YgZXJyb3JzLCBtZWFuaW5nIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+IHdpbGwKKyAgICAgIHNr aXAgYWxsIGVycm9uZW91cyBkYXRhLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFs PkVOQ09ESU5HPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMK aW5kZXggM2JiNTc5YTNhNC4uZjNlZGMwMTYwNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDE4LDYg KzQxOCwyMyBAQCBkZWZHZXRDb3B5T25FcnJvckNob2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3Rh dGUgKnBzdGF0ZSwgYm9vbCBpc19mcm9tKQogCXJldHVybiBDT1BZX09OX0VSUk9SX1NUT1A7CS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIH0KIAorLyoKKyAqIEV4dHJhY3QgUkVKRUNUX0xJTUlU IHZhbHVlIGZyb20gYSBEZWZFbGVtLgorICovCitzdGF0aWMgaW50NjQKK2RlZkdldENvcHlSZWpl Y3RMaW1pdE9wdGlvbihEZWZFbGVtICpkZWYpCit7CisJaW50NjQJcmVqZWN0X2xpbWl0ID0gZGVm R2V0SW50NjQoZGVmKTsKKworCWlmIChyZWplY3RfbGltaXQgPD0gMCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJIGVy cm1zZygiUkVKRUNUX0xJTUlUICglbGxkKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIiwKKwkJ CQkgKGxvbmcgbG9uZykgcmVqZWN0X2xpbWl0KSkpOworCisJcmV0dXJuIHJlamVjdF9saW1pdDsK K30KKwogLyoKICAqIEV4dHJhY3QgYSBDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlIHZhbHVlIGZyb20g YSBEZWZFbGVtLgogICovCkBAIC00NzAsNiArNDg3LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQloZWFkZXJfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9v bAkJb25fZXJyb3Jfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9vbAkJbG9nX3ZlcmJvc2l0eV9zcGVj aWZpZWQgPSBmYWxzZTsKKwlib29sCQlyZWplY3RfbGltaXRfc3BlY2lmaWVkID0gZmFsc2U7CiAJ TGlzdENlbGwgICAqb3B0aW9uOwogCiAJLyogU3VwcG9ydCBleHRlcm5hbCB1c2UgZm9yIG9wdGlv biBzYW5pdHkgY2hlY2tpbmcgKi8KQEAgLTYzNiw2ICs2NTQsMTMgQEAgUHJvY2Vzc0NvcHlPcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCWxvZ192ZXJib3NpdHlfc3BlY2lmaWVkID0gdHJ1 ZTsKIAkJCW9wdHNfb3V0LT5sb2dfdmVyYm9zaXR5ID0gZGVmR2V0Q29weUxvZ1ZlcmJvc2l0eUNo b2ljZShkZWZlbCwgcHN0YXRlKTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5h bWUsICJyZWplY3RfbGltaXQiKSA9PSAwKQorCQl7CisJCQlpZiAocmVqZWN0X2xpbWl0X3NwZWNp ZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKwkJCXJl amVjdF9saW1pdF9zcGVjaWZpZWQgPSB0cnVlOworCQkJb3B0c19vdXQtPnJlamVjdF9saW1pdCA9 IGRlZkdldENvcHlSZWplY3RMaW1pdE9wdGlvbihkZWZlbCk7CisJCX0KIAkJZWxzZQogCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNjY5 LDYgKzY5NCwxNSBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5IE9OX0VS Uk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CiAKKwlpZiAob3B0c19vdXQt PnJlamVjdF9saW1pdCAmJiAhb3B0c19vdXQtPm9uX2Vycm9yKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkvKi0gdHJh bnNsYXRvcjogZmlyc3QgYW5kIHNlY29uZCAlcyBhcmUgdGhlIG5hbWVzIG9mIENPUFkKKwkJICog b3B0aW9uLCBlLmcuIE9OX0VSUk9SLCB0aGlyZCBpcyB0aGUgdmFsdWUgb2YgdGhlIENPUFkgb3B0 aW9uLAorCQkgKiBlLmcuIElHTk9SRSAqLworCQkJCSBlcnJtc2coIkNPUFkgJXMgcmVxdWlyZXMg JXMgdG8gYmUgc2V0IHRvICVzIiwKKwkJCQkJCSAiUkVKRUNUX0xJTUlUIiwgIk9OX0VSUk9SIiwg IklHTk9SRSIpKSk7CisKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQogCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+Y3N2 X21vZGUgPyAiLCIgOiAiXHQiOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMmQzNDYyOTEz ZS4uYzE3ZmJmNzFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xMDI0LDYgKzEwMjQs MTEgQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NPUFlfVFVQTEVTX1NLSVBQRUQsCiAJCQkJCQkJCQkJICsr c2tpcHBlZCk7CiAKKwkJCWlmIChjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0ICYmIHNraXBwZWQg PiBjc3RhdGUtPm9wdHMucmVqZWN0X2xpbWl0KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCisJCQkJCQkgZXJy bXNnKCJza2lwcGVkIG1vcmUgdGhhbiBSRUpFQ1RfTElNSVQgcm93czogXCIlbGxkXCIsIiwKKwkJ CQkJCQkJKGxvbmcgbG9uZykgY3N0YXRlLT5vcHRzLnJlamVjdF9saW1pdCkpKTsKIAkJCWNvbnRp bnVlOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCAxNDFmZDQ4ZGMxLi5jM2E3NjEzNzc4IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oCkBAIC04Myw2ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGb3Jt YXRPcHRpb25zCiAJYm9vbAkJY29udmVydF9zZWxlY3RpdmVseTsJLyogZG8gc2VsZWN0aXZlIGJp bmFyeSBjb252ZXJzaW9uPyAqLwogCUNvcHlPbkVycm9yQ2hvaWNlIG9uX2Vycm9yOyAvKiB3aGF0 IHRvIGRvIHdoZW4gZXJyb3IgaGFwcGVuZWQgKi8KIAlDb3B5TG9nVmVyYm9zaXR5Q2hvaWNlIGxv Z192ZXJib3NpdHk7CS8qIHZlcmJvc2l0eSBvZiBsb2dnZWQgbWVzc2FnZXMgKi8KKwlpbnQ2NAkJ cmVqZWN0X2xpbWl0OwkvKiBtYXhpbXVtIHRvbGVyYWJsZSBudW1iZXIgb2YgZXJyb3JzICovCiAJ TGlzdAkgICAqY29udmVydF9zZWxlY3Q7IC8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzIChjYW4gYmUg TklMKSAqLwogfSBDb3B5Rm9ybWF0T3B0aW9uczsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHky Lm91dAppbmRleCA2MWExOWNkYzRjLi44ZmIyN2QxZDVmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NvcHkyLm91dApAQCAtMTE2LDYgKzExNiwxMCBAQCBDT1BZIHggdG8gc3Rkb3V0IChsb2dfdmVy Ym9zaXR5IHVuc3VwcG9ydGVkKTsKIEVSUk9SOiAgQ09QWSBMT0dfVkVSQk9TSVRZICJ1bnN1cHBv cnRlZCIgbm90IHJlY29nbml6ZWQKIExJTkUgMTogQ09QWSB4IHRvIHN0ZG91dCAobG9nX3ZlcmJv c2l0eSB1bnN1cHBvcnRlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0NPUFkgeCBm cm9tIHN0ZGluIHdpdGggKHJlamVjdF9saW1pdCAxKTsKK0VSUk9SOiAgQ09QWSBSRUpFQ1RfTElN SVQgcmVxdWlyZXMgT05fRVJST1IgdG8gYmUgc2V0IHRvIElHTk9SRQorQ09QWSB4IGZyb20gc3Rk aW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CitFUlJPUjogIFJFSkVD VF9MSU1JVCAoMCkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybwogLS0gdG9vIG1hbnkgY29sdW1u cyBpbiBjb2x1bW4gbGlzdDogc2hvdWxkIGZhaWwKIENPUFkgeCAoYSwgYiwgYywgZCwgZSwgZCwg YykgZnJvbSBzdGRpbjsKIEVSUk9SOiAgY29sdW1uICJkIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9u Y2UKQEAgLTc4OSw2ICs3OTMsMTIgQEAgQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VyciwgbGlu ZSAxOiAiMQl7MX0iCiBDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJv ciBpZ25vcmUpOwogRVJST1I6ICBleHRyYSBkYXRhIGFmdGVyIGxhc3QgZXhwZWN0ZWQgY29sdW1u CiBDT05URVhUOiAgQ09QWSBjaGVja19pZ25fZXJyLCBsaW5lIDE6ICIxCXsxfQkzCWFiYyIKKy0t IHRlc3RzIGZvciByZWplY3RfbGltaXQgb3B0aW9uCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBT VERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCAzKTsKK0VSUk9SOiAgc2tp cHBlZCBtb3JlIHRoYW4gUkVKRUNUX0xJTUlUIHJvd3M6ICIzIiwKK0NPTlRFWFQ6ICBDT1BZIGNo ZWNrX2lnbl9lcnIsIGxpbmUgNSwgY29sdW1uIG46ICIiCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJP TSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUsIHJlamVjdF9saW1pdCA0KTsKK05PVElDRTog IDQgcm93cyB3ZXJlIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkKIC0t IGNsZWFuIHVwCiBEUk9QIFRBQkxFIGZvcmNldGVzdDsKIERST1AgVEFCTEUgdmlzdGVzdDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkyLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2NvcHkyLnNxbAppbmRleCA4YjE0OTYyMTk0Li4yZDc3NWQ5Yzk3IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weTIuc3FsCkBAIC04Miw2ICs4Miw4IEBAIENPUFkgeCB0byBzdGRvdXQgKGZvcm1hdCBU RVhULCBmb3JjZV9udWxsKGEpKTsKIENPUFkgeCB0byBzdGRpbiAoZm9ybWF0IENTViwgZm9yY2Vf bnVsbChhKSk7CiBDT1BZIHggdG8gc3RkaW4gKGZvcm1hdCBCSU5BUlksIG9uX2Vycm9yIHVuc3Vw cG9ydGVkKTsKIENPUFkgeCB0byBzdGRvdXQgKGxvZ192ZXJib3NpdHkgdW5zdXBwb3J0ZWQpOwor Q09QWSB4IGZyb20gc3RkaW4gd2l0aCAocmVqZWN0X2xpbWl0IDEpOworQ09QWSB4IGZyb20gc3Rk aW4gd2l0aCAob25fZXJyb3IgaWdub3JlLCByZWplY3RfbGltaXQgMCk7CiAKIC0tIHRvbyBtYW55 IGNvbHVtbnMgaW4gY29sdW1uIGxpc3Q6IHNob3VsZCBmYWlsCiBDT1BZIHggKGEsIGIsIGMsIGQs IGUsIGQsIGMpIGZyb20gc3RkaW47CkBAIC01NTcsNiArNTU5LDI1IEBAIENPUFkgY2hlY2tfaWdu X2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSk7CiAxCXsxfQkzCWFiYwogXC4K IAorLS0gdGVzdHMgZm9yIHJlamVjdF9saW1pdCBvcHRpb24KK0NPUFkgY2hlY2tfaWduX2VyciBG Uk9NIFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDMpOworNgl7Nn0J NgorYQl7N30JNworOAl7OH0JODg4ODg4ODg4OAorOQl7YSwgOX0JOQorCisxMAl7MTB9CTEwCitc LgorCitDT1BZIGNoZWNrX2lnbl9lcnIgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBpZ25vcmUs IHJlamVjdF9saW1pdCA0KTsKKzYJezZ9CTYKK2EJezd9CTcKKzgJezh9CTg4ODg4ODg4ODgKKzkJ e2EsIDl9CTkKKworMTAJezEwfQkxMAorXC4KKwogLS0gY2xlYW4gdXAKIERST1AgVEFCTEUgZm9y Y2V0ZXN0OwogRFJPUCBUQUJMRSB2aXN0ZXN0OwoKYmFzZS1jb21taXQ6IDRjN2NkMDdhYTYyYWJj MjllNjg4NWU5NWI1MzA3ZTVlMDhiYjNiZjcKLS0gCjIuMzkuMgoK --=_7763dad06e24dca8b7729dd3d711f2d3--