Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWiwV-0001xw-6C for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Feb 2023 19:13:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pWiwT-0001WH-TL for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Feb 2023 19:13:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWiwS-0001W7-Sb for pgsql-hackers@lists.postgresql.org; Mon, 27 Feb 2023 19:13:45 +0000 Received: from wnew1-smtp.messagingengine.com ([64.147.123.26]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWiwO-00041F-6l for pgsql-hackers@postgresql.org; Mon, 27 Feb 2023 19:13:43 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.west.internal (Postfix) with ESMTP id B87682B068DF for ; Mon, 27 Feb 2023 14:13:35 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 27 Feb 2023 14:13:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1677525215; x= 1677532415; bh=HA5lG2l0FDbuAdtUfy5G2RqHKou/1Zvo/kirPymyvsY=; b=i IVpqjUY4M0ntcPdMoyh5M/UkfvJpOKyC0KrlTxiUO1U1g1Q8UgWZe5niaODhn2UM zbgNVhdwTgmTE5GWSPj6bu5liOy1m6HgKfEodR6Z21vVISbx/gELEOitAEJxLyYk mJWhvgmUjA0HDfOFDIb9wcgGi2g5hbZZfidtn90+5z/Ro16xl6h+k3xr5m1JwtkJ FNhaYvw/rPWCW6pZrtQ0r+SEI/14a99EOGcdDpByWlSqQuEM/SzOyDok1mvCQTie gQSTBHo/+kTO3qis1cNc/RkL0SLh0UyIK+R8FOJiT33BQYn8hO2ayQ9KBibpvTd/ AzBEvtWuN0/q0Dt5a/xBg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrudeltddguddukecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhvffusehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeeuuefgffeukeevffevledtvdeukedtvdegtdeludeghfetvdeggeekheekhfeu ffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvg htvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 27 Feb 2023 14:13:34 -0500 (EST) Content-Type: multipart/mixed; boundary="------------MiYXgbN3HhPoTGcxzlCHSp0u" Message-ID: Date: Mon, 27 Feb 2023 20:13:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: en-US From: Peter Eisentraut To: pgsql-hackers Subject: SQL JSON path enhanced numeric literals 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. --------------MiYXgbN3HhPoTGcxzlCHSp0u Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Attached is a patch to add nondecimal integer literals and underscores in numeric literals to the SQL JSON path language. This matches the recent additions to the core SQL syntax. It follows ECMAScript in combination with the current SQL draft. Internally, all the numeric literal parsing of jsonpath goes through numeric_in, which already supports all this, so this patch is just a bit of lexer work and some tests. --------------MiYXgbN3HhPoTGcxzlCHSp0u Content-Type: text/plain; charset=UTF-8; name="v1-0001-SQL-JSON-path-enhanced-numeric-literals.patch" Content-Disposition: attachment; filename="v1-0001-SQL-JSON-path-enhanced-numeric-literals.patch" Content-Transfer-Encoding: base64 RnJvbSBhYmVlZmE5OTAyMzFkZWEzOThkZGQ5MjNkOWU5OTJlMGFkOTQ1MTU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAyNyBGZWIgMjAyMyAxOToyNzozMiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIFNRTCBKU09OIHBhdGggZW5oYW5jZWQgbnVtZXJpYyBsaXRlcmFscwoK QWRkIHN1cHBvcnQgZm9yIG5vbi1kZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgYW5kIHVuZGVy c2NvcmVzIGluCm51bWVyaWMgbGl0ZXJhbHMgdG8gU1FMIEpTT04gcGF0aCBsYW5ndWFnZS4g IFRoaXMgZm9sbG93cyB0aGUgcnVsZXMgb2YKRUNNQVNjcmlwdCwgYXMgcmVmZXJyZWQgdG8g YnkgdGhlIFNRTCBzdGFuZGFyZC4KLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfc2Nh bi5sICB8ICA1OSArKysrKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbnBh dGgub3V0IHwgMTYyICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2pzb25wYXRoLnNxbCAgICAgIHwgIDUwICsrKysrKysrCiA0IGZpbGVzIGNoYW5n ZWQsIDI1OCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXggNzVhMDlmMTRlMC4uYTgzMDBhZDY5NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dApAQCAtNTUzLDYgKzU1Myw3IEBA IFQ4MzYJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogc3RhcnRzIHdpdGggcHJlZGljYXRlCQkJ WUVTCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4X2xpa2UgcHJlZGljYXRl CQkJWUVTCQogVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xhdXNlCQkJTk8JCiBU ODM5CUZvcm1hdHRlZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJp bmdzCQkJTk8JCitUODQwCUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGgg bGFuZ3VhZ2UJCQlOTwlTUUw6MjAyeCBkcmFmdAogTTAwMQlEYXRhbGlua3MJCQlOTwkKIE0w MDIJRGF0YWxpbmtzIHZpYSBTUUwvQ0xJCQkJTk8JCiBNMDAzCURhdGFsaW5rcyB2aWEgRW1i ZWRkZWQgU1FMCQkJTk8JCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfc2Nhbi5sIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX3NjYW4ubApp bmRleCBlMDhiMWM3Y2Q3Li5jZDU1MGFkNWQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGhfc2Nhbi5sCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29ucGF0aF9zY2FuLmwKQEAgLTkwLDIxICs5MCwzMSBAQCBibGFuawkJWyBcdFxuXHJcZl0K IC8qICJvdGhlciIgbWVhbnMgYW55dGhpbmcgdGhhdCdzIG5vdCBzcGVjaWFsLCBibGFuaywg b3IgJ1wnIG9yICciJyAqLwogb3RoZXIJCVteXD9cJVwkXC5cW1xdXHtcfVwoXClcfFwmXCFc PVw8XD5cQFwjXCxcKjpcLVwrXC9cXFwiIFx0XG5cclxmXQogCi1kaWdpdAkJWzAtOV0KLWlu dGVnZXIJCSgwfFsxLTlde2RpZ2l0fSopCi1kZWNpbWFsCQkoe2ludGVnZXJ9XC57ZGlnaXR9 KnxcLntkaWdpdH0rKQotcmVhbAkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXVstK10/e2Rp Z2l0fSsKLXJlYWxmYWlsCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV1bLStdCi0KLWludGVn ZXJfanVuawl7aW50ZWdlcn17b3RoZXJ9CitkZWNkaWdpdAlbMC05XQoraGV4ZGlnaXQJWzAt OUEtRmEtZl0KK29jdGRpZ2l0CVswLTddCitiaW5kaWdpdAlbMC0xXQorCisvKiBEZWNpbWFs SW50ZWdlciBpbiBFQ01BU2NyaXB0OyBtdXN0IG5vdCBzdGFydCB3aXRoIDAgdW5sZXNzIGl0 J3MgZXhhY3RseSAwICovCitkZWNpbnRlZ2VyCSgwfFsxLTldKF8/e2RlY2RpZ2l0fSkqKQor LyogRGVjaW1hbERpZ2l0cyBpbiBFQ01BU2NyaXB0OyBvbmx5IHVzZWQgYXMgcGFydCBvZiBv dGhlciBydWxlcyAqLworZGVjZGlnaXRzCXtkZWNkaWdpdH0oXz97ZGVjZGlnaXR9KSoKK2hl eGludGVnZXIJMFt4WF17aGV4ZGlnaXR9KF8/e2hleGRpZ2l0fSkqCitvY3RpbnRlZ2VyCTBb b09de29jdGRpZ2l0fShfP3tvY3RkaWdpdH0pKgorYmluaW50ZWdlcgkwW2JCXXtiaW5kaWdp dH0oXz97YmluZGlnaXR9KSoKKworZGVjaW1hbAkJKHtkZWNpbnRlZ2VyfVwue2RlY2RpZ2l0 c30/fFwue2RlY2RpZ2l0c30pCityZWFsCQkoe2RlY2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVd Wy0rXT97ZGVjZGlnaXRzfQorcmVhbGZhaWwJKHtkZWNpbnRlZ2VyfXx7ZGVjaW1hbH0pW0Vl XVstK10KKworZGVjaW50ZWdlcl9qdW5rCXtkZWNpbnRlZ2VyfXtvdGhlcn0KIGRlY2ltYWxf anVuawl7ZGVjaW1hbH17b3RoZXJ9CiByZWFsX2p1bmsJCXtyZWFsfXtvdGhlcn0KIAotaGV4 X2RpZwkJWzAtOUEtRmEtZl0KLXVuaWNvZGUJCVxcdSh7aGV4X2RpZ317NH18XHt7aGV4X2Rp Z317MSw2fVx9KQotdW5pY29kZWZhaWwJXFx1KHtoZXhfZGlnfXswLDN9fFx7e2hleF9kaWd9 ezAsNn0pCi1oZXhfY2hhcglcXHh7aGV4X2RpZ317Mn0KLWhleF9mYWlsCVxceHtoZXhfZGln fXswLDF9Cit1bmljb2RlCQlcXHUoe2hleGRpZ2l0fXs0fXxce3toZXhkaWdpdH17MSw2fVx9 KQordW5pY29kZWZhaWwJXFx1KHtoZXhkaWdpdH17MCwzfXxce3toZXhkaWdpdH17MCw2fSkK K2hleF9jaGFyCVxceHtoZXhkaWdpdH17Mn0KK2hleF9mYWlsCVxceHtoZXhkaWdpdH17MCwx fQogCiAlJQogCkBAIC0yNzQsNyArMjg0LDI4IEBAIGhleF9mYWlsCVxceHtoZXhfZGlnfXsw LDF9CiAJCQkJCQkJCQlyZXR1cm4gTlVNRVJJQ19QOwogCQkJCQkJCQl9CiAKLXtpbnRlZ2Vy fQkJCQkJCXsKK3tkZWNpbnRlZ2VyfQkJCQkJeworCQkJCQkJCQkJYWRkc3RyaW5nKHRydWUs IHl5dGV4dCwgeXlsZW5nKTsKKwkJCQkJCQkJCWFkZGNoYXIoZmFsc2UsICdcMCcpOworCQkJ CQkJCQkJeXlsdmFsLT5zdHIgPSBzY2Fuc3RyaW5nOworCQkJCQkJCQkJcmV0dXJuIElOVF9Q OworCQkJCQkJCQl9CisKK3toZXhpbnRlZ2VyfQkJCQkJeworCQkJCQkJCQkJYWRkc3RyaW5n KHRydWUsIHl5dGV4dCwgeXlsZW5nKTsKKwkJCQkJCQkJCWFkZGNoYXIoZmFsc2UsICdcMCcp OworCQkJCQkJCQkJeXlsdmFsLT5zdHIgPSBzY2Fuc3RyaW5nOworCQkJCQkJCQkJcmV0dXJu IElOVF9QOworCQkJCQkJCQl9CisKK3tvY3RpbnRlZ2VyfQkJCQkJeworCQkJCQkJCQkJYWRk c3RyaW5nKHRydWUsIHl5dGV4dCwgeXlsZW5nKTsKKwkJCQkJCQkJCWFkZGNoYXIoZmFsc2Us ICdcMCcpOworCQkJCQkJCQkJeXlsdmFsLT5zdHIgPSBzY2Fuc3RyaW5nOworCQkJCQkJCQkJ cmV0dXJuIElOVF9QOworCQkJCQkJCQl9CisKK3tiaW5pbnRlZ2VyfQkJCQkJewogCQkJCQkJ CQkJYWRkc3RyaW5nKHRydWUsIHl5dGV4dCwgeXlsZW5nKTsKIAkJCQkJCQkJCWFkZGNoYXIo ZmFsc2UsICdcMCcpOwogCQkJCQkJCQkJeXlsdmFsLT5zdHIgPSBzY2Fuc3RyaW5nOwpAQCAt Mjg3LDcgKzMxOCw3IEBAIGhleF9mYWlsCVxceHtoZXhfZGlnfXswLDF9CiAJCQkJCQkJCQkJ ImludmFsaWQgbnVtZXJpYyBsaXRlcmFsIik7CiAJCQkJCQkJCQl5eXRlcm1pbmF0ZSgpOwog CQkJCQkJCQl9Ci17aW50ZWdlcl9qdW5rfQkJCQkJewore2RlY2ludGVnZXJfanVua30JCQkJ ewogCQkJCQkJCQkJanNvbnBhdGhfeXllcnJvcigKIAkJCQkJCQkJCQlOVUxMLCBlc2NvbnRl eHQsCiAJCQkJCQkJCQkJInRyYWlsaW5nIGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIik7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25wYXRoLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbnBhdGgub3V0CmluZGV4IGNhMGNkZjFh YjIuLjNlZGE4ZTNhOGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv anNvbnBhdGgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbnBhdGgu b3V0CkBAIC04MzYsNiArODM2LDcgQEAgc2VsZWN0ICckID8gKEAuYSA8ICsxMC4xZSsxKSc6 Ompzb25wYXRoOwogICQ/KEAuImEiIDwgMTAxKQogKDEgcm93KQogCistLSBudW1lcmljIGxp dGVyYWxzCiBzZWxlY3QgJzAnOjpqc29ucGF0aDsKICBqc29ucGF0aCAKIC0tLS0tLS0tLS0K QEAgLTg0Niw2ICs4NDcsMTAgQEAgc2VsZWN0ICcwMCc6Ompzb25wYXRoOwogRVJST1I6ICB0 cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwMCIgb2Yg anNvbnBhdGggaW5wdXQKIExJTkUgMTogc2VsZWN0ICcwMCc6Ompzb25wYXRoOwogICAgICAg ICAgICAgICAgXgorc2VsZWN0ICcwNzU1Jzo6anNvbnBhdGg7CitFUlJPUjogIHN5bnRheCBl cnJvciBhdCBlbmQgb2YganNvbnBhdGggaW5wdXQKK0xJTkUgMTogc2VsZWN0ICcwNzU1Jzo6 anNvbnBhdGg7CisgICAgICAgICAgICAgICBeCiBzZWxlY3QgJzAuMCc6Ompzb25wYXRoOwog IGpzb25wYXRoIAogLS0tLS0tLS0tLQpAQCAtMTAzMiw2ICsxMDM3LDE2MyBAQCBzZWxlY3Qg JzE/KDI+MyknOjpqc29ucGF0aDsKICAoMSk/KDIgPiAzKQogKDEgcm93KQogCistLSBub25k ZWNpbWFsCitzZWxlY3QgJzBiMTAwMTAxJzo6anNvbnBhdGg7CisganNvbnBhdGggCistLS0t LS0tLS0tCisgMzcKKygxIHJvdykKKworc2VsZWN0ICcwbzI3Myc6Ompzb25wYXRoOworIGpz b25wYXRoIAorLS0tLS0tLS0tLQorIDE4NworKDEgcm93KQorCitzZWxlY3QgJzB4NDJGJzo6 anNvbnBhdGg7CisganNvbnBhdGggCistLS0tLS0tLS0tCisgMTA3MQorKDEgcm93KQorCist LSBlcnJvciBjYXNlcworc2VsZWN0ICcwYic6Ompzb25wYXRoOworRVJST1I6ICB0cmFpbGlu ZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIwYiIgb2YganNvbnBh dGggaW5wdXQKK0xJTkUgMTogc2VsZWN0ICcwYic6Ompzb25wYXRoOworICAgICAgICAgICAg ICAgXgorc2VsZWN0ICcxYic6Ompzb25wYXRoOworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFm dGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBvciBuZWFyICIxYiIgb2YganNvbnBhdGggaW5wdXQK K0xJTkUgMTogc2VsZWN0ICcxYic6Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgorc2Vs ZWN0ICcwYjB4Jzo6anNvbnBhdGg7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBlbmQgb2Yg anNvbnBhdGggaW5wdXQKK0xJTkUgMTogc2VsZWN0ICcwYjB4Jzo6anNvbnBhdGg7CisgICAg ICAgICAgICAgICBeCitzZWxlY3QgJzBvJzo6anNvbnBhdGg7CitFUlJPUjogIHRyYWlsaW5n IGp1bmsgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjBvIiBvZiBqc29ucGF0 aCBpbnB1dAorTElORSAxOiBzZWxlY3QgJzBvJzo6anNvbnBhdGg7CisgICAgICAgICAgICAg ICBeCitzZWxlY3QgJzFvJzo6anNvbnBhdGg7CitFUlJPUjogIHRyYWlsaW5nIGp1bmsgYWZ0 ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjFvIiBvZiBqc29ucGF0aCBpbnB1dAor TElORSAxOiBzZWxlY3QgJzFvJzo6anNvbnBhdGg7CisgICAgICAgICAgICAgICBeCitzZWxl Y3QgJzBvMHgnOjpqc29ucGF0aDsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IGVuZCBvZiBq c29ucGF0aCBpbnB1dAorTElORSAxOiBzZWxlY3QgJzBvMHgnOjpqc29ucGF0aDsKKyAgICAg ICAgICAgICAgIF4KK3NlbGVjdCAnMHgnOjpqc29ucGF0aDsKK0VSUk9SOiAgdHJhaWxpbmcg anVuayBhZnRlciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMHgiIG9mIGpzb25wYXRo IGlucHV0CitMSU5FIDE6IHNlbGVjdCAnMHgnOjpqc29ucGF0aDsKKyAgICAgICAgICAgICAg IF4KK3NlbGVjdCAnMXgnOjpqc29ucGF0aDsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRl ciBudW1lcmljIGxpdGVyYWwgYXQgb3IgbmVhciAiMXgiIG9mIGpzb25wYXRoIGlucHV0CitM SU5FIDE6IHNlbGVjdCAnMXgnOjpqc29ucGF0aDsKKyAgICAgICAgICAgICAgIF4KK3NlbGVj dCAnMHgweSc6Ompzb25wYXRoOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgZW5kIG9mIGpz b25wYXRoIGlucHV0CitMSU5FIDE6IHNlbGVjdCAnMHgweSc6Ompzb25wYXRoOworICAgICAg ICAgICAgICAgXgorLS0gdW5kZXJzY29yZXMKK3NlbGVjdCAnMV8wMDBfMDAwJzo6anNvbnBh dGg7CisganNvbnBhdGggCistLS0tLS0tLS0tCisgMTAwMDAwMAorKDEgcm93KQorCitzZWxl Y3QgJzFfMl8zJzo6anNvbnBhdGg7CisganNvbnBhdGggCistLS0tLS0tLS0tCisgMTIzCiso MSByb3cpCisKK3NlbGVjdCAnMHgxRUVFX0ZGRkYnOjpqc29ucGF0aDsKKyBqc29ucGF0aCAg CistLS0tLS0tLS0tLQorIDUxODk3OTU4MworKDEgcm93KQorCitzZWxlY3QgJzBvMl83Myc6 Ompzb25wYXRoOworIGpzb25wYXRoIAorLS0tLS0tLS0tLQorIDE4NworKDEgcm93KQorCitz ZWxlY3QgJzBiMTBfMDEwMSc6Ompzb25wYXRoOworIGpzb25wYXRoIAorLS0tLS0tLS0tLQor IDM3CisoMSByb3cpCisKK3NlbGVjdCAnMV8wMDAuMDAwXzAwNSc6Ompzb25wYXRoOworICBq c29ucGF0aCAgIAorLS0tLS0tLS0tLS0tLQorIDEwMDAuMDAwMDA1CisoMSByb3cpCisKK3Nl bGVjdCAnMV8wMDAuJzo6anNvbnBhdGg7CisganNvbnBhdGggCistLS0tLS0tLS0tCisgMTAw MAorKDEgcm93KQorCitzZWxlY3QgJy4wMDBfMDA1Jzo6anNvbnBhdGg7CisganNvbnBhdGgg CistLS0tLS0tLS0tCisgMC4wMDAwMDUKKygxIHJvdykKKworc2VsZWN0ICcxXzAwMC41ZTBf MSc6Ompzb25wYXRoOworIGpzb25wYXRoIAorLS0tLS0tLS0tLQorIDEwMDA1CisoMSByb3cp CisKKy0tIGVycm9yIGNhc2VzCitzZWxlY3QgJ18xMDAnOjpqc29ucGF0aDsKK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IGVuZCBvZiBqc29ucGF0aCBpbnB1dAorTElORSAxOiBzZWxlY3Qg J18xMDAnOjpqc29ucGF0aDsKKyAgICAgICAgICAgICAgIF4KK3NlbGVjdCAnMTAwXyc6Ompz b25wYXRoOworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBh dCBvciBuZWFyICIxMDBfIiBvZiBqc29ucGF0aCBpbnB1dAorTElORSAxOiBzZWxlY3QgJzEw MF8nOjpqc29ucGF0aDsKKyAgICAgICAgICAgICAgIF4KK3NlbGVjdCAnMTAwX18wMDAnOjpq c29ucGF0aDsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IGVuZCBvZiBqc29ucGF0aCBpbnB1 dAorTElORSAxOiBzZWxlY3QgJzEwMF9fMDAwJzo6anNvbnBhdGg7CisgICAgICAgICAgICAg ICBeCitzZWxlY3QgJ18xXzAwMC41Jzo6anNvbnBhdGg7CitFUlJPUjogIHN5bnRheCBlcnJv ciBhdCBlbmQgb2YganNvbnBhdGggaW5wdXQKK0xJTkUgMTogc2VsZWN0ICdfMV8wMDAuNSc6 Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgorc2VsZWN0ICcxXzAwMF8uNSc6Ompzb25w YXRoOworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVyaWMgbGl0ZXJhbCBhdCBv ciBuZWFyICIxXzAwMF8iIG9mIGpzb25wYXRoIGlucHV0CitMSU5FIDE6IHNlbGVjdCAnMV8w MDBfLjUnOjpqc29ucGF0aDsKKyAgICAgICAgICAgICAgIF4KK3NlbGVjdCAnMV8wMDAuXzUn Ojpqc29ucGF0aDsKK0VSUk9SOiAgdHJhaWxpbmcganVuayBhZnRlciBudW1lcmljIGxpdGVy YWwgYXQgb3IgbmVhciAiMV8wMDAuXyIgb2YganNvbnBhdGggaW5wdXQKK0xJTkUgMTogc2Vs ZWN0ICcxXzAwMC5fNSc6Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgorc2VsZWN0ICcx XzAwMC41Xyc6Ompzb25wYXRoOworRVJST1I6ICB0cmFpbGluZyBqdW5rIGFmdGVyIG51bWVy aWMgbGl0ZXJhbCBhdCBvciBuZWFyICIxXzAwMC41XyIgb2YganNvbnBhdGggaW5wdXQKK0xJ TkUgMTogc2VsZWN0ICcxXzAwMC41Xyc6Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgor c2VsZWN0ICcxXzAwMC41ZV8xJzo6anNvbnBhdGg7CitFUlJPUjogIHRyYWlsaW5nIGp1bmsg YWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIGF0IG9yIG5lYXIgIjFfMDAwLjVlIiBvZiBqc29ucGF0 aCBpbnB1dAorTElORSAxOiBzZWxlY3QgJzFfMDAwLjVlXzEnOjpqc29ucGF0aDsKKyAgICAg ICAgICAgICAgIF4KKy0tIHVuZGVyc2NvcmUgYWZ0ZXIgcHJlZml4IG5vdCBhbGxvd2VkIGlu IEphdmFTY3JpcHQgKGJ1dCBhbGxvd2VkIGluIFNRTCkKK3NlbGVjdCAnMGJfMTBfMDEwMSc6 Ompzb25wYXRoOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgZW5kIG9mIGpzb25wYXRoIGlu cHV0CitMSU5FIDE6IHNlbGVjdCAnMGJfMTBfMDEwMSc6Ompzb25wYXRoOworICAgICAgICAg ICAgICAgXgorc2VsZWN0ICcwb18yNzMnOjpqc29ucGF0aDsKK0VSUk9SOiAgc3ludGF4IGVy cm9yIGF0IGVuZCBvZiBqc29ucGF0aCBpbnB1dAorTElORSAxOiBzZWxlY3QgJzBvXzI3Myc6 Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgorc2VsZWN0ICcweF80MkYnOjpqc29ucGF0 aDsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IGVuZCBvZiBqc29ucGF0aCBpbnB1dAorTElO RSAxOiBzZWxlY3QgJzB4XzQyRic6Ompzb25wYXRoOworICAgICAgICAgICAgICAgXgogLS0g dGVzdCBub24tZXJyb3ItdGhyb3dpbmcgQVBJCiBTRUxFQ1Qgc3RyIGFzIGpzb25wYXRoLAog ICAgICAgIHBnX2lucHV0X2lzX3ZhbGlkKHN0ciwnanNvbnBhdGgnKSBhcyBvaywKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2pzb25wYXRoLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2pzb25wYXRoLnNxbAppbmRleCA5OWQyMWQyYWY3Li4yMTRkNmJjMWQ1IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29ucGF0aC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbnBhdGguc3FsCkBAIC0xNTIsOCArMTUyLDExIEBACiBz ZWxlY3QgJyQgPyAoQC5hIDwgLTEwLjFlKzEpJzo6anNvbnBhdGg7CiBzZWxlY3QgJyQgPyAo QC5hIDwgKzEwLjFlKzEpJzo6anNvbnBhdGg7CiAKKy0tIG51bWVyaWMgbGl0ZXJhbHMKKwog c2VsZWN0ICcwJzo6anNvbnBhdGg7CiBzZWxlY3QgJzAwJzo6anNvbnBhdGg7CitzZWxlY3Qg JzA3NTUnOjpqc29ucGF0aDsKIHNlbGVjdCAnMC4wJzo6anNvbnBhdGg7CiBzZWxlY3QgJzAu MDAwJzo6anNvbnBhdGg7CiBzZWxlY3QgJzAuMDAwZTEnOjpqc29ucGF0aDsKQEAgLTE4OCw2 ICsxOTEsNTMgQEAKIHNlbGVjdCAnKDEuKS5lMyc6Ompzb25wYXRoOwogc2VsZWN0ICcxPygy PjMpJzo6anNvbnBhdGg7CiAKKy0tIG5vbmRlY2ltYWwKK3NlbGVjdCAnMGIxMDAxMDEnOjpq c29ucGF0aDsKK3NlbGVjdCAnMG8yNzMnOjpqc29ucGF0aDsKK3NlbGVjdCAnMHg0MkYnOjpq c29ucGF0aDsKKworLS0gZXJyb3IgY2FzZXMKK3NlbGVjdCAnMGInOjpqc29ucGF0aDsKK3Nl bGVjdCAnMWInOjpqc29ucGF0aDsKK3NlbGVjdCAnMGIweCc6Ompzb25wYXRoOworCitzZWxl Y3QgJzBvJzo6anNvbnBhdGg7CitzZWxlY3QgJzFvJzo6anNvbnBhdGg7CitzZWxlY3QgJzBv MHgnOjpqc29ucGF0aDsKKworc2VsZWN0ICcweCc6Ompzb25wYXRoOworc2VsZWN0ICcxeCc6 Ompzb25wYXRoOworc2VsZWN0ICcweDB5Jzo6anNvbnBhdGg7CisKKy0tIHVuZGVyc2NvcmVz CitzZWxlY3QgJzFfMDAwXzAwMCc6Ompzb25wYXRoOworc2VsZWN0ICcxXzJfMyc6Ompzb25w YXRoOworc2VsZWN0ICcweDFFRUVfRkZGRic6Ompzb25wYXRoOworc2VsZWN0ICcwbzJfNzMn Ojpqc29ucGF0aDsKK3NlbGVjdCAnMGIxMF8wMTAxJzo6anNvbnBhdGg7CisKK3NlbGVjdCAn MV8wMDAuMDAwXzAwNSc6Ompzb25wYXRoOworc2VsZWN0ICcxXzAwMC4nOjpqc29ucGF0aDsK K3NlbGVjdCAnLjAwMF8wMDUnOjpqc29ucGF0aDsKK3NlbGVjdCAnMV8wMDAuNWUwXzEnOjpq c29ucGF0aDsKKworLS0gZXJyb3IgY2FzZXMKK3NlbGVjdCAnXzEwMCc6Ompzb25wYXRoOwor c2VsZWN0ICcxMDBfJzo6anNvbnBhdGg7CitzZWxlY3QgJzEwMF9fMDAwJzo6anNvbnBhdGg7 CisKK3NlbGVjdCAnXzFfMDAwLjUnOjpqc29ucGF0aDsKK3NlbGVjdCAnMV8wMDBfLjUnOjpq c29ucGF0aDsKK3NlbGVjdCAnMV8wMDAuXzUnOjpqc29ucGF0aDsKK3NlbGVjdCAnMV8wMDAu NV8nOjpqc29ucGF0aDsKK3NlbGVjdCAnMV8wMDAuNWVfMSc6Ompzb25wYXRoOworCistLSB1 bmRlcnNjb3JlIGFmdGVyIHByZWZpeCBub3QgYWxsb3dlZCBpbiBKYXZhU2NyaXB0IChidXQg YWxsb3dlZCBpbiBTUUwpCitzZWxlY3QgJzBiXzEwXzAxMDEnOjpqc29ucGF0aDsKK3NlbGVj dCAnMG9fMjczJzo6anNvbnBhdGg7CitzZWxlY3QgJzB4XzQyRic6Ompzb25wYXRoOworCisK IC0tIHRlc3Qgbm9uLWVycm9yLXRocm93aW5nIEFQSQogCiBTRUxFQ1Qgc3RyIGFzIGpzb25w YXRoLAoKYmFzZS1jb21taXQ6IDQ2NjQ3Y2M0Yjg2YWE1MjlmNTBiMzQzYTZhOGNkYjhmMTg3 ZWM4ZGEKLS0gCjIuMzkuMgoK --------------MiYXgbN3HhPoTGcxzlCHSp0u--