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 1tukfw-00BInt-7o for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Mar 2025 04:05:04 +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 1tukfu-00C8xM-Gv for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Mar 2025 04:05: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 1tukfu-00C8x0-4C for pgsql-hackers@lists.postgresql.org; Wed, 19 Mar 2025 04:05:02 +0000 Received: from mail-ua1-x935.google.com ([2607:f8b0:4864:20::935]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tukfq-003gi8-0i for pgsql-hackers@postgresql.org; Wed, 19 Mar 2025 04:05:01 +0000 Received: by mail-ua1-x935.google.com with SMTP id a1e0cc1a2514c-86d42f08135so2623287241.0 for ; Tue, 18 Mar 2025 21:04:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742357097; x=1742961897; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pn/GvsuTCD/46txa2Yz9lidXKNP24i2yoJbnJdnJL8E=; b=EmELkBfTPQoGPPMVVdxSPCvJrbymewxfwJh+9i9sYQcLa1bbHadVlTr0Sfv4qNuNJA et8WTBKybSHKYssx9cN8DCUVoSCiCC6r9oe3/ZhkctSYs9If01ENfakFin0lX2ffoOYs Zh+robRfoHymaG3g42YVnA/o2kn5h2HZP4GkDWuTyxwRxsazgMzQVq9GTYjGJVw8N9Jx Crl4bOfbEAceq/OHWQvXEi3YvQBzccqd0t9uLhGhHDS0Z+GD9JgMESPNQTOJk7FEpAtI YOTzmR38WLz566IUaNBR22Ne8KIG6UWMQsDmY0RjAdFAOIl6Pgpp+4cFQlJKKvw7JQoh qMTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742357097; x=1742961897; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pn/GvsuTCD/46txa2Yz9lidXKNP24i2yoJbnJdnJL8E=; b=xT+f5uK5hpUV4k3RYWvUlTK7YG8z4BVwUdhkjj2tU5k4Lfwn3wJq94rOWcBMqQFAOw r3o60jY57SxSDwloVeGht7HztXZfFpdUtRuYOZMsJGBv1bWAZBKIBfJvh6p9gFThFyFJ iOAgEtx5sXGtLCLTbi+iTLa81dxQ+wpGFR4hvgdwmZ70SJaN10JBc0EXVrQLNuEB65HC hnKmhmadCilFu7rJxMP6tecohjrg3cNvabJhgdsCCPcF4WhDQ8MJIC8EmYGJgOm/SLd5 J9MZ5Ntyx2hSTvqTjl9OTCMU7mKnv1synPo9q2rn7XPrGvu5dP56cYFn3ATtP1akpOWg ZIqQ== X-Gm-Message-State: AOJu0YwxGMGZPTPUI3EFtG6l9rbdZEE91flkIGGvZISZ54FqtpltQvCT /hnuzv31ey9MpBaMGM/+FWsw4Mg/9O/dDclDKoG5j3rFpK1k2i9h7373oql/MkjYa6gUHEDnNNa YO0GD2zn4VFc6EL1+TrhRN/++kMs= X-Gm-Gg: ASbGncs6I4pRxtCLJCDRNjD4PWLonEy15BXCSaSfYrN/A43Zy+GyZx1g0ml2q75EnSA At7pozI/Wq7QwO3fUCmKQ9qh/Rab3umaWY8AVd+fJPRDP54MfPlcM9pgjFZJCMXsucDnpHJPo1a 9MFBjWIWIflqe6O4+txyUtM9EAVpXWhzoNIL0WKz47HM56xMRrw1qlCHM= X-Google-Smtp-Source: AGHT+IET8c9g6SGyYS5BiiX8d2WuriLaUHQO7xvM/CVk4umdsRA6po1Rdj9V+sRrfUjT4rkOUXQRZY8rsNVnDWFmLCA= X-Received: by 2002:a05:6102:32cc:b0:4c4:e409:5f9e with SMTP id ada2fe7eead31-4c4ec61140bmr854269137.2.1742357097531; Tue, 18 Mar 2025 21:04:57 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Wed, 19 Mar 2025 12:04:21 +0800 X-Gm-Features: AQ5f1Jq0AOMbXt6rEKYLAxAAugxbYM6K6VBDw84KqpC_HK4JlOjlYAmHfkWx05w Message-ID: Subject: Re: add function argument name to substring and substr To: "David G. Johnston" Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000dee8490630aa1fcc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dee8490630aa1fcc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable hi. new patch attached. now \df substring looks like: List of functions Schema | Name | Result data type | Argument data types | Type ------------+-----------+------------------+-------------------------------= -------------------+------ pg_catalog | substring | bit | bits bit, start integer | func pg_catalog | substring | bit | bits bit, start integer, count integer | func pg_catalog | substring | bytea | bytes bytea, start integer | func pg_catalog | substring | bytea | bytes bytea, start integer, count integer | func pg_catalog | substring | text | string text, pattern text | func pg_catalog | substring | text | string text, pattern text, escape_character text | func pg_catalog | substring | text | string text, start integer | func pg_catalog | substring | text | string text, start integer, count integer | func Table 9.10 also have doc entry for substring. in Table 9.10, i have: substring ( string text, pattern text ) =E2=86=92 text substring ( string text, pattern text, escape_character text) =E2=86=92 tex= t we can put it into one, but one is based on POSIX regular expression, another one is based on SQL, the difference is big, that's why put it into two. --000000000000dee8490630aa1fcc Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-add-argument-name-to-function-substring-and-subst.patch" Content-Disposition: attachment; filename="v3-0001-add-argument-name-to-function-substring-and-subst.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8feb2d30 RnJvbSA4MzVkYzkzNjRmOWY5ODY0NDViNzdhZjhmYTc2MWU3NTc3Y2JiZGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTkgTWFyIDIwMjUgMTE6NTg6NTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMV0gYWRkIGFyZ3VtZW50IG5hbWUgdG8gZnVuY3Rpb24gc3Vic3RyaW5nIGFuZCBzdWJzdHIK CmFsc28gYWRkIHN1YnN0ciBhbmQgc3Vic3RyaW5nIChubyBrZXl3b3JkcykgZnVuY3Rpb25zIGVu dHJ5IHRvIGRvYy4KVGFibGUgOS45IGlzIGFib3V0IGtleXdvcmRzIHN1YnN0cmluZyBlbnRyeSwK bm93IFRhYmxlIDkuMTAgaGF2ZSBmdW5jdGlvbiBhcmd1bWVudCBkb2MgZW50cnkgb2Ygc3Vic3Ry aW5nLgoKbm93IHBzcWwgbG9va3MgbGlrZToKClxkZiBzdWJzdHJpbmcKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBmdW5jdGlvbnMKICAgU2NoZW1hICAg fCAgIE5hbWUgICAgfCBSZXN1bHQgZGF0YSB0eXBlIHwgICAgICAgICAgICAgICBBcmd1bWVudCBk YXRhIHR5cGVzICAgICAgICAgICAgICAgIHwgVHlwZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLQogcGdfY2F0YWxvZyB8IHN1YnN0cmluZyB8IGJpdCAgICAgICAg ICAgICAgfCBiaXRzIGJpdCwgc3RhcnQgaW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmdW5jCiBwZ19jYXRhbG9nIHwgc3Vic3RyaW5nIHwgYml0ICAgICAgICAgICAgICB8IGJpdHMg Yml0LCBzdGFydCBpbnRlZ2VyLCBjb3VudCBpbnRlZ2VyICAgICAgICAgICB8IGZ1bmMKIHBnX2Nh dGFsb2cgfCBzdWJzdHJpbmcgfCBieXRlYSAgICAgICAgICAgIHwgYnl0ZXMgYnl0ZWEsIHN0YXJ0 IGludGVnZXIgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuYwogcGdfY2F0YWxvZyB8IHN1YnN0 cmluZyB8IGJ5dGVhICAgICAgICAgICAgfCBieXRlcyBieXRlYSwgc3RhcnQgaW50ZWdlciwgY291 bnQgaW50ZWdlciAgICAgICAgfCBmdW5jCiBwZ19jYXRhbG9nIHwgc3Vic3RyaW5nIHwgdGV4dCAg ICAgICAgICAgICB8IHN0cmluZyB0ZXh0LCBwYXR0ZXJuIHRleHQgICAgICAgICAgICAgICAgICAg ICAgICB8IGZ1bmMKIHBnX2NhdGFsb2cgfCBzdWJzdHJpbmcgfCB0ZXh0ICAgICAgICAgICAgIHwg c3RyaW5nIHRleHQsIHBhdHRlcm4gdGV4dCwgZXNjYXBlX2NoYXJhY3RlciB0ZXh0IHwgZnVuYwog cGdfY2F0YWxvZyB8IHN1YnN0cmluZyB8IHRleHQgICAgICAgICAgICAgfCBzdHJpbmcgdGV4dCwg c3RhcnQgaW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jCiBwZ19jYXRhbG9nIHwg c3Vic3RyaW5nIHwgdGV4dCAgICAgICAgICAgICB8IHN0cmluZyB0ZXh0LCBzdGFydCBpbnRlZ2Vy LCBjb3VudCBpbnRlZ2VyICAgICAgICB8IGZ1bmMKKDggcm93cykKClxkZiBzdWJzdHIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgZnVuY3Rpb25zCiAgIFNjaGVt YSAgIHwgIE5hbWUgIHwgUmVzdWx0IGRhdGEgdHlwZSB8ICAgICAgICAgICAgQXJndW1lbnQgZGF0 YSB0eXBlcyAgICAgICAgICAgIHwgVHlwZQotLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tCiBwZ19jYXRhbG9nIHwgc3Vic3RyIHwgYnl0ZWEgICAgICAgICAgICB8IGJ5dGVzIGJ5dGVh LCBzdGFydCBpbnRlZ2VyICAgICAgICAgICAgICAgIHwgZnVuYwogcGdfY2F0YWxvZyB8IHN1YnN0 ciB8IGJ5dGVhICAgICAgICAgICAgfCBieXRlcyBieXRlYSwgc3RhcnQgaW50ZWdlciwgY291bnQg aW50ZWdlciB8IGZ1bmMKIHBnX2NhdGFsb2cgfCBzdWJzdHIgfCB0ZXh0ICAgICAgICAgICAgIHwg c3RyaW5nIHRleHQsIHN0YXJ0IGludGVnZXIgICAgICAgICAgICAgICAgfCBmdW5jCiBwZ19jYXRh bG9nIHwgc3Vic3RyIHwgdGV4dCAgICAgICAgICAgICB8IHN0cmluZyB0ZXh0LCBzdGFydCBpbnRl Z2VyLCBjb3VudCBpbnRlZ2VyIHwgZnVuYwooNCByb3dzKQoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUNKdWZ4SFRCa3ltaDA2RDRtR0tOZTFZZlJORk4rZ0ZCeWJteWdXaz1QdE1x dTAwTFFAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAg ICAgICAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgIHwgIDEyICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0 aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5z Z21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAppbmRleCAyYWI1NjYxNjAyYy4uODhjYTFlZjNm NTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2Z1bmMuc2dtbApAQCAtMzgwNiw2ICszODA2LDU4IEBAIFNFTEVDVCBOT1QoUk9XKHRhYmxlLiop IElTIE5PVCBOVUxMKSBGUk9NIFRBQkxFOyAtLSBkZXRlY3QgYXQgbGVhc3Qgb25lIG51bGwgaW4K ICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCisKKyAgICAgIDxyb3c+Cisg ICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2ln bmF0dXJlIj4KKyAgICAgICAgPGZ1bmN0aW9uPnN1YnN0cmluZzwvZnVuY3Rpb24+ICggPHBhcmFt ZXRlcj5zdHJpbmc8L3BhcmFtZXRlcj4gPHR5cGU+dGV4dDwvdHlwZT4sIDxwYXJhbWV0ZXI+cGF0 dGVybjwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1 ZT50ZXh0PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIEV4dHJhY3RzIHRoZSBmaXJzdCBzdWJzdHJpbmcgbWF0Y2hpbmcgUE9TSVggcmVndWxhciBl eHByZXNzaW9uOyBzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXBvc2l4LXJl Z2V4cCIvPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFs PnN1YnN0cmluZygnVGhvbWFzJywgJy4uLiQnKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZh bHVlPm1hczwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8ZnVuY3Rpb24+c3Vic3RyaW5n PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnN0cmluZzwvcGFyYW1ldGVyPiA8dHlwZT50ZXh0PC90 eXBlPiwgPHBhcmFtZXRlcj5wYXR0ZXJuPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5cGU+LCA8 cGFyYW1ldGVyPmVzY2FwZV9jaGFyYWN0ZXIgPC9wYXJhbWV0ZXI+IDx0eXBlPnRleHQ8L3R5cGU+ KQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBFeHRyYWN0cyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG1h dGNoaW5nIDxhY3JvbnltPlNRTDwvYWNyb255bT4gcmVndWxhciBleHByZXNzaW9uOworICAgICAg ICBzZWUgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNpbWlsYXJ0by1yZWdleHAiLz4uCisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5zdWJzdHJpbmcoJ1Ro b21hcycsICclIyJvX2EjIl8nLCAnIycpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+ b21hPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93Pgor CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8 cHJpbWFyeT5zdWJzdHJpbmc8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg ICA8ZnVuY3Rpb24+c3Vic3RyaW5nPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnN0cmluZzwvcGFy YW1ldGVyPiA8dHlwZT50ZXh0PC90eXBlPiwgPHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPiA8 dHlwZT5pbnRlZ2VyPC90eXBlPiA8b3B0aW9uYWw+LCA8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0 ZXI+IDx0eXBlPmludGVnZXI8L3R5cGU+IDwvb3B0aW9uYWw+ICkKKyAgICAgICAgPHJldHVybnZh bHVlPnRleHQ8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgRXh0cmFjdHMgdGhlIHN1YnN0cmluZyBvZiA8cGFyYW1ldGVyPnN0cmluZzwvcGFyYW1l dGVyPiBzdGFydGluZyBhdAorICAgICAgICB0aGUgPHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVy Pid0aCBjaGFyYWN0ZXIsCisgICAgICAgIGFuZCBzdG9wcGluZyBhZnRlciA8cGFyYW1ldGVyPmNv dW50PC9wYXJhbWV0ZXI+IGNoYXJhY3RlcnMgaWYgdGhhdCBpcworICAgICAgICBzcGVjaWZpZWQu CisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnN1YnN0 cmluZygnVGhvbWFzJywgMiwgMyk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT5ob208 L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisKICAg ICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAgICAgICAgPGluZGV4dGVybT4KQEAgLTQ4MTEsNiArNDg2 MywyNyBAQCBTRUxFQ1QgZm9ybWF0KCdUZXN0aW5nICUzJHMsICUyJHMsICVzJywgJ29uZScsICd0 d28nLCAndGhyZWUnKTsKICAgICAgICAgPHJldHVybnZhbHVlPlx4NTY3ODwvcmV0dXJudmFsdWU+ CiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAg ICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWdu YXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+c3Vic3RyaW5n PC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnN1YnN0 cmluZzwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5ieXRlczwvcGFyYW1ldGVyPiA8dHlwZT5ieXRl YTwvdHlwZT4sIDxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50ZWdlcjwvdHlw ZT4gPG9wdGlvbmFsPiwgPHBhcmFtZXRlcj5jb3VudDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2Vy PC90eXBlPiA8L29wdGlvbmFsPiApCisgICAgICAgIDxyZXR1cm52YWx1ZT5ieXRlYTwvcmV0dXJu dmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBFeHRyYWN0cyB0 aGUgc3Vic3RyaW5nIG9mIDxwYXJhbWV0ZXI+Ynl0ZXM8L3BhcmFtZXRlcj4gc3RhcnRpbmcgYXQK KyAgICAgICAgdGhlIDxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj4ndGggYnl0ZSwKKyAgICAg ICAgYW5kIHN0b3BwaW5nIGFmdGVyIDxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj4gYnl0ZXMg aWYgdGhhdCBpcworICAgICAgICBzcGVjaWZpZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxw YXJhPgorICAgICAgICA8bGl0ZXJhbD5zdWJzdHJpbmcoJ1x4MTIzNDU2Nzg5MCc6OmJ5dGVhLCAz LCAyKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPlx4NTY3ODwvcmV0dXJudmFsdWU+ CisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgICA8L3Jvdz4KKwogICAgIDwvdGJvZHk+CiAg ICA8L3Rncm91cD4KICAgPC90YWJsZT4KQEAgLTUzNTMsNiArNTQyNiwyNiBAQCBjYXN0KC0xMjM0 IGFzIGJ5dGVhKSAgICAgICAgICAgPGxpbmVhbm5vdGF0aW9uPlx4ZmZmZmZiMmU8L2xpbmVhbm5v dGF0aW9uPgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAKKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1 bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5PnN1 YnN0cmluZzwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlv bj5zdWJzdHJpbmc8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+Yml0czwvcGFyYW1ldGVyPiA8dHlw ZT5iaXQ8L3R5cGU+LCA8cGFyYW1ldGVyPnN0YXJ0PC9wYXJhbWV0ZXI+IDx0eXBlPmludGVnZXI8 L3R5cGU+IDxvcHRpb25hbD4sIDxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj4gPHR5cGU+aW50 ZWdlcjwvdHlwZT4gPC9vcHRpb25hbD4gKQorICAgICAgICA8cmV0dXJudmFsdWU+Yml0PC9yZXR1 cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIEV4dHJhY3Rz IHRoZSBzdWJzdHJpbmcgb2YgPHBhcmFtZXRlcj5iaXRzPC9wYXJhbWV0ZXI+IHN0YXJ0aW5nIGF0 CisgICAgICAgIHRoZSA8cGFyYW1ldGVyPnN0YXJ0PC9wYXJhbWV0ZXI+J3RoIGJpdCwKKyAgICAg ICAgYW5kIHN0b3BwaW5nIGFmdGVyIDxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj4gYml0cyBp ZiB0aGF0IGlzCisgICAgICAgIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIDxsaXRlcmFsPnN1YnN0cmluZyhCJzExMDAxMDExMTExMScsIDMsIDIpPC9s aXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+MDA8L3JldHVybnZhbHVlPgorICAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5 IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAg ICAgICAgPGluZGV4dGVybT4KQEAgLTU4MTYsNyArNTkwOSw3IEBAIHN1YnN0cmluZyg8cmVwbGFj ZWFibGU+c3RyaW5nPC9yZXBsYWNlYWJsZT4gZnJvbSA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVw bGFjZWFiCiA8L3N5bm9wc2lzPgogICAgIG9yIGFzIGEgcGxhaW4gdGhyZWUtYXJndW1lbnQgZnVu Y3Rpb246CiA8c3lub3BzaXM+Ci1zdWJzdHJpbmcoPHJlcGxhY2VhYmxlPnN0cmluZzwvcmVwbGFj ZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+ ZXNjYXBlLWNoYXJhY3RlcjwvcmVwbGFjZWFibGU+KQorc3Vic3RyaW5nKDxyZXBsYWNlYWJsZT5z dHJpbmc8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlPmVzY2FwZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxlPikKIDwvc3lub3BzaXM+ CiAgICAgQXMgd2l0aCA8bGl0ZXJhbD5TSU1JTEFSIFRPPC9saXRlcmFsPiwgdGhlCiAgICAgc3Bl Y2lmaWVkIHBhdHRlcm4gbXVzdCBtYXRjaCB0aGUgZW50aXJlIGRhdGEgc3RyaW5nLCBvciBlbHNl IHRoZQpAQCAtNjAyMCwxMSArNjExMywxNyBAQCBzdWJzdHJpbmcoJ2Zvb2Jhcicgc2ltaWxhciAn IyJvX2IjIiUnIGVzY2FwZSAnIycpICAgIDxsaW5lYW5ub3RhdGlvbj5OVUxMPC9saW5lYQogICAg IDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICBUaGUgPGZ1bmN0aW9uPnN1YnN0cmluZzwvZnVu Y3Rpb24+IGZ1bmN0aW9uIHdpdGggdHdvIHBhcmFtZXRlcnMsCi0gICAgIDxmdW5jdGlvbj5zdWJz dHJpbmcoPHJlcGxhY2VhYmxlPnN0cmluZzwvcmVwbGFjZWFibGU+IGZyb20KLSAgICAgPHJlcGxh Y2VhYmxlPnBhdHRlcm48L3JlcGxhY2VhYmxlPik8L2Z1bmN0aW9uPiwgcHJvdmlkZXMgZXh0cmFj dGlvbiBvZiBhCi0gICAgIHN1YnN0cmluZwotICAgICB0aGF0IG1hdGNoZXMgYSBQT1NJWCByZWd1 bGFyIGV4cHJlc3Npb24gcGF0dGVybi4gIEl0IHJldHVybnMgbnVsbCBpZgorICAgICBUaGUgPGZ1 bmN0aW9uPnN1YnN0cmluZzwvZnVuY3Rpb24+IGZ1bmN0aW9uIHdpdGggdHdvIHBhcmFtZXRlcnMg cHJvdmlkZXMgZXh0cmFjdGlvbiBvZiBhCisgICAgIHN1YnN0cmluZyB0aGF0IG1hdGNoZXMgYSBQ T1NJWCByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi4KKyAgICAgSXQgaGFzIHN5bnRheDoKKzxz eW5vcHNpcz4KK3N1YnN0cmluZyg8cmVwbGFjZWFibGU+c3RyaW5nPC9yZXBsYWNlYWJsZT4gZnJv bSA8cmVwbGFjZWFibGU+cGF0dGVybjwvcmVwbGFjZWFibGU+KQorPC9zeW5vcHNpcz4KKyAgICAg SXQgY2FuIGFsc28gd3JpdHRlbiBhcyBhIHBsYWluIHR3by1hcmd1bWVudCBmdW5jdGlvbjoKKzxz eW5vcHNpcz4KK3N1YnN0cmluZyg8cmVwbGFjZWFibGU+c3RyaW5nPC9yZXBsYWNlYWJsZT4sIDxy ZXBsYWNlYWJsZT5wYXR0ZXJuPC9yZXBsYWNlYWJsZT4pCis8L3N5bm9wc2lzPgorICAgICBJdCBy ZXR1cm5zIG51bGwgaWYKICAgICAgdGhlcmUgaXMgbm8gbWF0Y2gsIG90aGVyd2lzZSB0aGUgZmly c3QgcG9ydGlvbiBvZiB0aGUgdGV4dCB0aGF0IG1hdGNoZWQgdGhlCiAgICAgIHBhdHRlcm4uICBC dXQgaWYgdGhlIHBhdHRlcm4gY29udGFpbnMgYW55IHBhcmVudGhlc2VzLCB0aGUgcG9ydGlvbgog ICAgICBvZiB0aGUgdGV4dCB0aGF0IG1hdGNoZWQgdGhlIGZpcnN0IHBhcmVudGhlc2l6ZWQgc3Vi ZXhwcmVzc2lvbiAodGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9m dW5jdGlvbnMuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApp bmRleCA1NjZmMzA4ZTQ0My4uNWVhOWQ3ODZiNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fZnVuY3Rpb25zLnNxbApAQCAtNDIsNyArNDIsNyBAQCBDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBycGFkKHRleHQsIGludGVnZXIpCiAgSU1NVVRBQkxFIFBBUkFMTEVMIFNBRkUgU1RSSUNU IENPU1QgMQogUkVUVVJOIHJwYWQoJDEsICQyLCAnICcpOwogCi1DUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiAic3Vic3RyaW5nIih0ZXh0LCB0ZXh0LCB0ZXh0KQorQ1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gInN1YnN0cmluZyIoc3RyaW5nIHRleHQsIHBhdHRlcm4gdGV4dCwgZXNjYXBlX2No YXJhY3RlciB0ZXh0KQogIFJFVFVSTlMgdGV4dAogIExBTkdVQUdFIHNxbAogIElNTVVUQUJMRSBQ QVJBTExFTCBTQUZFIFNUUklDVCBDT1NUIDEKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDg5 MDgyMmVhZjc5Li5lNjNhODI3OWUxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zNjY4 LDYgKzM2NjgsNyBAQAogICBwcm9zcmMgPT4gJ3J0cmltJyB9LAogeyBvaWQgPT4gJzg3NycsIGRl c2NyID0+ICdleHRyYWN0IHBvcnRpb24gb2Ygc3RyaW5nJywKICAgcHJvbmFtZSA9PiAnc3Vic3Ry JywgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IGludDQgaW50NCcs CisgIHByb2FyZ25hbWVzID0+ICd7c3RyaW5nLCBzdGFydCwgY291bnR9JywKICAgcHJvc3JjID0+ ICd0ZXh0X3N1YnN0cicgfSwKIHsgb2lkID0+ICc4NzgnLCBkZXNjciA9PiAnbWFwIGEgc2V0IG9m IGNoYXJhY3RlcnMgYXBwZWFyaW5nIGluIHN0cmluZycsCiAgIHByb25hbWUgPT4gJ3RyYW5zbGF0 ZScsIHByb3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9PiAndGV4dCB0ZXh0IHRleHQn LApAQCAtMzY4Niw2ICszNjg3LDcgQEAKICAgcHJvc3JjID0+ICdydHJpbTEnIH0sCiB7IG9pZCA9 PiAnODgzJywgZGVzY3IgPT4gJ2V4dHJhY3QgcG9ydGlvbiBvZiBzdHJpbmcnLAogICBwcm9uYW1l ID0+ICdzdWJzdHInLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywgcHJvYXJndHlwZXMgPT4gJ3RleHQg aW50NCcsCisgIHByb2FyZ25hbWVzID0+ICd7c3RyaW5nLCBzdGFydH0nLAogICBwcm9zcmMgPT4g J3RleHRfc3Vic3RyX25vX2xlbicgfSwKIHsgb2lkID0+ICc4ODQnLCBkZXNjciA9PiAndHJpbSBz ZWxlY3RlZCBjaGFyYWN0ZXJzIGZyb20gYm90aCBlbmRzIG9mIHN0cmluZycsCiAgIHByb25hbWUg PT4gJ2J0cmltJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRl eHQnLApAQCAtMzY5Niw5ICszNjk4LDExIEBACiAKIHsgb2lkID0+ICc5MzYnLCBkZXNjciA9PiAn ZXh0cmFjdCBwb3J0aW9uIG9mIHN0cmluZycsCiAgIHByb25hbWUgPT4gJ3N1YnN0cmluZycsIHBy b3JldHR5cGUgPT4gJ3RleHQnLCBwcm9hcmd0eXBlcyA9PiAndGV4dCBpbnQ0IGludDQnLAorICBw cm9hcmduYW1lcyA9PiAne3N0cmluZywgc3RhcnQsIGNvdW50fScsCiAgIHByb3NyYyA9PiAndGV4 dF9zdWJzdHInIH0sCiB7IG9pZCA9PiAnOTM3JywgZGVzY3IgPT4gJ2V4dHJhY3QgcG9ydGlvbiBv ZiBzdHJpbmcnLAogICBwcm9uYW1lID0+ICdzdWJzdHJpbmcnLCBwcm9yZXR0eXBlID0+ICd0ZXh0 JywgcHJvYXJndHlwZXMgPT4gJ3RleHQgaW50NCcsCisgIHByb2FyZ25hbWVzID0+ICd7c3RyaW5n LCBzdGFydH0nLAogICBwcm9zcmMgPT4gJ3RleHRfc3Vic3RyX25vX2xlbicgfSwKIHsgb2lkID0+ ICcyMDg3JywKICAgZGVzY3IgPT4gJ3JlcGxhY2UgYWxsIG9jY3VycmVuY2VzIGluIHN0cmluZyBv ZiBvbGRfc3Vic3RyIHdpdGggbmV3X3N1YnN0cicsCkBAIC00MTE2LDYgKzQxMjAsNyBAQAogICBw cm9zcmMgPT4gJ2JpdGNhdCcgfSwKIHsgb2lkID0+ICcxNjgwJywgZGVzY3IgPT4gJ2V4dHJhY3Qg cG9ydGlvbiBvZiBiaXRzdHJpbmcnLAogICBwcm9uYW1lID0+ICdzdWJzdHJpbmcnLCBwcm9yZXR0 eXBlID0+ICdiaXQnLCBwcm9hcmd0eXBlcyA9PiAnYml0IGludDQgaW50NCcsCisgIHByb2FyZ25h bWVzID0+ICd7Yml0cywgc3RhcnQsIGNvdW50fScsCiAgIHByb3NyYyA9PiAnYml0c3Vic3RyJyB9 LAogeyBvaWQgPT4gJzE2ODEnLCBkZXNjciA9PiAnYml0c3RyaW5nIGxlbmd0aCcsCiAgIHByb25h bWUgPT4gJ2xlbmd0aCcsIHByb3JldHR5cGUgPT4gJ2ludDQnLCBwcm9hcmd0eXBlcyA9PiAnYml0 JywKQEAgLTQxNDUsNiArNDE1MCw3IEBACiAgIHByb3NyYyA9PiAnYml0cG9zaXRpb24nIH0sCiB7 IG9pZCA9PiAnMTY5OScsIGRlc2NyID0+ICdleHRyYWN0IHBvcnRpb24gb2YgYml0c3RyaW5nJywK ICAgcHJvbmFtZSA9PiAnc3Vic3RyaW5nJywgcHJvcmV0dHlwZSA9PiAnYml0JywgcHJvYXJndHlw ZXMgPT4gJ2JpdCBpbnQ0JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tiaXRzLCBzdGFydH0nLAogICBw cm9zcmMgPT4gJ2JpdHN1YnN0cl9ub19sZW4nIH0sCiAKIHsgb2lkID0+ICczMDMwJywgZGVzY3Ig PT4gJ3N1YnN0aXR1dGUgcG9ydGlvbiBvZiBiaXRzdHJpbmcnLApAQCAtNjIzOSwxNSArNjI0NSwx OSBAQAogICBwcm9zcmMgPT4gJ2J5dGVhY2F0JyB9LAogeyBvaWQgPT4gJzIwMTInLCBkZXNjciA9 PiAnZXh0cmFjdCBwb3J0aW9uIG9mIHN0cmluZycsCiAgIHByb25hbWUgPT4gJ3N1YnN0cmluZycs IHByb3JldHR5cGUgPT4gJ2J5dGVhJywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tieXRlcywgc3RhcnQs IGNvdW50fScsCiAgIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ0IGludDQnLCBwcm9zcmMgPT4g J2J5dGVhX3N1YnN0cicgfSwKIHsgb2lkID0+ICcyMDEzJywgZGVzY3IgPT4gJ2V4dHJhY3QgcG9y dGlvbiBvZiBzdHJpbmcnLAogICBwcm9uYW1lID0+ICdzdWJzdHJpbmcnLCBwcm9yZXR0eXBlID0+ ICdieXRlYScsIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ0JywKKyAgcHJvYXJnbmFtZXMgPT4g J3tieXRlcywgc3RhcnR9JywKICAgcHJvc3JjID0+ICdieXRlYV9zdWJzdHJfbm9fbGVuJyB9LAog eyBvaWQgPT4gJzIwODUnLCBkZXNjciA9PiAnZXh0cmFjdCBwb3J0aW9uIG9mIHN0cmluZycsCiAg IHByb25hbWUgPT4gJ3N1YnN0cicsIHByb3JldHR5cGUgPT4gJ2J5dGVhJywgcHJvYXJndHlwZXMg PT4gJ2J5dGVhIGludDQgaW50NCcsCisgIHByb2FyZ25hbWVzID0+ICd7Ynl0ZXMsIHN0YXJ0LCBj b3VudH0nLAogICBwcm9zcmMgPT4gJ2J5dGVhX3N1YnN0cicgfSwKIHsgb2lkID0+ICcyMDg2Jywg ZGVzY3IgPT4gJ2V4dHJhY3QgcG9ydGlvbiBvZiBzdHJpbmcnLAogICBwcm9uYW1lID0+ICdzdWJz dHInLCBwcm9yZXR0eXBlID0+ICdieXRlYScsIHByb2FyZ3R5cGVzID0+ICdieXRlYSBpbnQ0JywK KyAgcHJvYXJnbmFtZXMgPT4gJ3tieXRlcywgc3RhcnR9JywKICAgcHJvc3JjID0+ICdieXRlYV9z dWJzdHJfbm9fbGVuJyB9LAogeyBvaWQgPT4gJzIwMTQnLCBkZXNjciA9PiAncG9zaXRpb24gb2Yg c3Vic3RyaW5nJywKICAgcHJvbmFtZSA9PiAncG9zaXRpb24nLCBwcm9yZXR0eXBlID0+ICdpbnQ0 JywgcHJvYXJndHlwZXMgPT4gJ2J5dGVhIGJ5dGVhJywKQEAgLTY0MzYsOSArNjQ0NiwxMSBAQAog CiB7IG9pZCA9PiAnMjA3MycsIGRlc2NyID0+ICdleHRyYWN0IHRleHQgbWF0Y2hpbmcgcmVndWxh ciBleHByZXNzaW9uJywKICAgcHJvbmFtZSA9PiAnc3Vic3RyaW5nJywgcHJvcmV0dHlwZSA9PiAn dGV4dCcsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQnLAorICBwcm9hcmduYW1lcyA9PiAne3N0 cmluZywgcGF0dGVybn0nLAogICBwcm9zcmMgPT4gJ3RleHRyZWdleHN1YnN0cicgfSwKIHsgb2lk ID0+ICcyMDc0JywgZGVzY3IgPT4gJ2V4dHJhY3QgdGV4dCBtYXRjaGluZyBTUUwgcmVndWxhciBl eHByZXNzaW9uJywKICAgcHJvbmFtZSA9PiAnc3Vic3RyaW5nJywgcHJvbGFuZyA9PiAnc3FsJywg cHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ25hbWVzID0+ICd7c3RyaW5nLCBwYXR0ZXJu LCBlc2NhcGVfY2hhcmFjdGVyfScsCiAgIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQgdGV4dCcs IHByb3NyYyA9PiAnc2VlIHN5c3RlbV9mdW5jdGlvbnMuc3FsJyB9LAogCiB7IG9pZCA9PiAnMjA3 NScsIGRlc2NyID0+ICdjb252ZXJ0IGludDggdG8gYml0c3RyaW5nJywKLS0gCjIuMzQuMQoK --000000000000dee8490630aa1fcc--