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.96) (envelope-from ) id 1vTLrT-000eUn-01 for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 15:12:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTLrR-00CJFC-2D for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 15:12:13 +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.96) (envelope-from ) id 1vTLrR-00CJF3-0R for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 15:12:13 +0000 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vTLrP-0049Ud-1D for pgsql-hackers@postgresql.org; Wed, 10 Dec 2025 15:12:12 +0000 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-93516cbe2bbso1948233241.2 for ; Wed, 10 Dec 2025 07:12:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765379530; x=1765984330; 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=bVl6cu/a5KHGm2VrdkwVC89TrpLLzcx3kEMFIy84yoE=; b=GDE61CJaLVPYU7pw/2YZo1mbU1VUIVvKb9xxpAwO8BU7/p0uN0atyfKA6+yx6ZPt9y 1EKguqa3YG6oB8tOBzmCJg8c7uQyO3ExBTc/ZWnSKEilGzA+64+5MYuI9HC9mpsNrVdD cPr698QT3ltCAwv1BQFgJaCKMNbiBc8bwnDX0R572jESne8JlwXzYLB1nc3ZW40cTI7r 2621R/PFf7Z7kksIbruP8p73eqVlbGFW8jMa6ePY+UB/qH++jzFFHDmWArZYJ7cUMxGU pzYK95o0NsuiuAd/rMC7W1TSpwEE2+/M4rSXUUEU5OAx5gJSuVCndT448d+QYrLTkQ7h 2cCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765379530; x=1765984330; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=bVl6cu/a5KHGm2VrdkwVC89TrpLLzcx3kEMFIy84yoE=; b=KZz5MrP7yTTz2IHXP/3e7bNiFZICcKdkL9khfUgjZIl9c161xEHlgTERa9YZemnkRq kzkrxkConf/oEKToDbpDyYxhdOsq+LROwIBbAm5iZPeEVfMv1UAP7ezrutcFp34eh1Jc 78B9J38FUSUSfPKMXEBkszEgaDla4B8BpyIXQ7M6JW3C+h8zKXMOhD3Dgcc3z8oDwqdw Lej7hrjk1bu82ZZficc9Oh/P48N2cl8TKKXtfTNnvYNhMRPnHAZQQO5KCTGZsIuadfYN kd3rrW48Fen+ZbVje2tgEJLDaCvv1+HcOpYDNj5ihAbAuWHcbzqSKVMOe/ZXXtUkp20R qlvg== X-Forwarded-Encrypted: i=1; AJvYcCW8grslyZWs+sn30TwmJUQVcjGV66wJ4p3MjeC5IJkj1kl4UmJifnmOdScoa0g9iWAQpYTPH67Lj3Xoji2u@postgresql.org X-Gm-Message-State: AOJu0YzyhVXmZi/AaME0cyv+qe/2TveoPvqrYPOblFEAwVsIMQBtm8RG nIVZjhHZp51UecC631dmpmvQGaAj94ymahasTjwNE4Mze3PRsaV0uXmvnevQ7HyfQTrgf3I4PCq WhEt6JBm6AofSCk73amLWUAc+GTtMhpuPHJCyiMNXJQ== X-Gm-Gg: AY/fxX5/ySkEEUGwrJDMaDGlWb53GIhvaFzFTPeTce5+ocy5uUoN9ZX6YAf4tmhRUGp GzaS95h6dvWvzqcbX7jAscT0ii1FgQ1TKrs2HF2bHbJV7K3A4704HXcIqdwIpfYjRIkRI1LdX4J tgom82A4XU9FrAx7zeyh7XPgV0PI8iHX7G1degCDQVZhQLEAx9o5W8JStB8BUkjt6JbZMbn8hPo RhGQhh47YfwkVI55wpmSoIlNoQPbCw9iRIWo7aJVoUwKbHfhjQMIOptYTmrrZc7O7UdaIevPpUa BxwC74w8RrdXmkT+Q3VB5J7bKsnhA0gOWR141JLeiXllEX1gjW5uFiar3DZ5+mm3WtUTjt1UwtG iVD06Td7Rt2evmvEH3HVBn8SKD7Eze/DZTSxc3pdVn5NriRTizDkcV4Tsvz2hUdHvHeRnVCimzO WauLM03ost X-Google-Smtp-Source: AGHT+IFPCMRbf511/qrbRYjx72AaRymAwKKNz9e7MkJi2cS8U16jxF5J82rk8/bovQWBxB6V55aPPFzUWN5LlNS2s/o= X-Received: by 2002:a05:6102:1526:b0:5db:33f9:adce with SMTP id ada2fe7eead31-5e571f1e373mr765872137.41.1765379530360; Wed, 10 Dec 2025 07:12:10 -0800 (PST) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> <290418A2-3A9B-4304-AAAD-4A40CFF1CB93@gmail.com> <98C6F445-773B-4C82-8198-7F5CD56D5252@gmail.com> <052E941B-C905-448F-AE3A-753C12AAC938@gmail.com> <8CB9A1EC-2D14-44FF-A600-6669353A14C2@gmail.com> <826F61C4-AE01-4070-8F78-CEE8781EACEB@gmail.com> In-Reply-To: From: jian he Date: Wed, 10 Dec 2025 23:11:33 +0800 X-Gm-Features: AQt7F2o2JphAJaHdh5SbmThjBNSASZhU3ZYgUWhciXVBOxgvd0V5elNMxFDRjK8 Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Alexandra Wang Cc: Chao Li , PostgreSQL Hackers , Nikita Glukhov , Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , "David E. Wheeler" Content-Type: multipart/mixed; boundary="000000000000cd2d0106459a737a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cd2d0106459a737a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Sep 24, 2025 at 9:06=E2=80=AFAM Alexandra Wang wrote: > > The rest of your feedback I've made changes accordingly as you suggested. > > Best, > Alex > hi. + + PostgreSQL implements the JSON simplified accessor as specified in SQL:= 2023. not sure we need to decorated SQL:2023 as SQL:2023, but PostgreSQL should be decorated as PostgreSQL= . I believe SELECT * FROM users WHERE profile.preferences.theme =3D '"dark"'; should be SELECT * FROM users WHERE (profile).preferences.theme =3D '"dark"'; +INSERT INTO test_table VALUES + ('{"brightness": 80}'), -- Object case + ('[{"brightness": 45}, {"brightness": 90}]'); -- Array case comments no need, i think. + + Comparison of JSON Access Methods + I am worried that the wording "Access Methods" would be confused with "Tabl= e Access Methods". +-- Comparison with other access methods (NOT equivalent - different semant= ics): +SELECT json_col['address']['city']; -- Subscripting +SELECT json_col->'address'->'city'; -- Operator +SELECT json_col.address.city; -- Simplified accessor (different behavior) + "access methods" would be confusing as mentioned above. also these SQL query with SELECT is wrong? since no FROM clause. again, I think the last one should be SELECT (json_col).address.city; we generally expect content can be passed to psql. +-- Different behaviors: +SELECT data.brightness FROM test_table; -- Simplified accessor +-- Results: 80, [45, 90] (array elements unwrapped, results wrapped) Again, here I believe, it should be SELECT (data).brightness FROM test_table; also the Results should be two rows, so this needs to change. + +-- Setup data +INSERT INTO test_table VALUES ('{"weather": "sunny", "temperature": "72F"}= '); + +-- Different behaviors when accessing [0] on a non-array value: +SELECT data[0] FROM test_table; -- Simplified accessor (lax mode, if dots present elsewhere) +-- Result: {"weather": "sunny", "temperature": "72F"} (object wrapped as array, [0] returns entire object) + there is no GUC about json lex mode or not, we can only specify it via json= path. but in the HEAD select (jsonb '{"weather": "sunny", "temperature": "72F"}')[0]; return NULL. so I am confused with the above comment. + +-- All parts use simplified accessor (standard behavior) +SELECT data.location.coordinates.latitude FROM table; -- Good +SELECT data.repertoire[0].title FROM table; -- Good +SELECT data.users[1].profile.email FROM table; -- Good + + TABLE is a reserved word, ``SELECT FROM table;`` will result in syntax erro= r. That means most of the examples in needs more polishing. + + Best Practices: Avoid Mixing Access Methods + + Important: Do not mix SQL:2023 simplified accessor syntax + with pre-standard subscripting syntax in the same accessor chain. Thes= e + methods have subtly different semantics and are not interchangeable aliases. + Mixing them can lead to confusion and code that is difficult to unders= tand. + If we want users not to confuse SQL:2023 simplified accessor with pre-stand= ard subscripting syntax, we can wrap this important information in a tag= . some changes are reflected on the attached file, but some I don't know how to change, so I didn't do it. some sgml lines are way too line, I have split them into separate lines. -- jian https://www.enterprisedb.com --000000000000cd2d0106459a737a Content-Type: application/octet-stream; name="v22-doc_change.nocfbot" Content-Disposition: attachment; filename="v22-doc_change.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj05b2yx0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9qc29uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvanNvbi5z Z21sCmluZGV4IDQ0MDU1NzBkNjZlLi41ZThlYjNjMzU0MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2pzb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvanNvbi5zZ21sCkBAIC03MTUsMTIgKzcx NSwxMiBAQCBVUERBVEUgdGFibGVfbmFtZSBTRVQganNvbmJfZmllbGRbMV1bJ2EnXSA9ICcxJzsK ICA8c2VjdDIgaWQ9Impzb25iLXNpbXBsaWZpZWQtYWNjZXNzb3IiPgogICA8dGl0bGU+SlNPTiBT aW1wbGlmaWVkIEFjY2Vzc29yPC90aXRsZT4KICAgPHBhcmE+Ci0gICBQb3N0Z3JlU1FMIGltcGxl bWVudHMgdGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBhcyBzcGVjaWZpZWQgaW4gU1FMOjIw MjMuCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGltcGxlbWVudHMg dGhlIEpTT04gc2ltcGxpZmllZCBhY2Nlc3NvciBhcyBzcGVjaWZpZWQgaW4gU1FMOjIwMjMuCiAg ICBUaGUgU1FMIHN0YW5kYXJkIGRlZmluZXMgdGhlIHNpbXBsaWZpZWQgYWNjZXNzb3IgYXMgYSBj aGFpbiBvZiBvcGVyYXRpb25zCiAgICB0aGF0IGNhbiBpbmNsdWRlIEpTT04gbWVtYmVyIGFjY2Vz c29ycyAoZG90IG5vdGF0aW9uIGZvciBvYmplY3QgZmllbGRzKQogICAgYW5kIEpTT04gYXJyYXkg YWNjZXNzb3JzIChpbnRlZ2VyIHN1YnNjcmlwdHMgZm9yIGFycmF5IGVsZW1lbnRzKS4KICAgIFRo aXMgcHJvdmlkZXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIGFjY2VzcyBKU09OIGRhdGEgdGhhdCBj b21wbGVtZW50cwotICAgUG9zdGdyZVNRTCdzIHByZS1zdGFuZGFyZCBzdWJzY3JpcHRpbmcgYW5k IG9wZXJhdG9yLWJhc2VkIGFjY2VzcyBtZXRob2RzLgorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVT UUw8L3Byb2R1Y3RuYW1lPidzIHByZS1zdGFuZGFyZCBzdWJzY3JpcHRpbmcgYW5kIG9wZXJhdG9y LWJhc2VkIGFjY2VzcyBtZXRob2RzLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC03NTgsNyAr NzU4LDYgQEAgVVBEQVRFIHRhYmxlX25hbWUgU0VUIGpzb25iX2ZpZWxkWzFdWydhJ10gPSAnMSc7 CiAgICBFeGFtcGxlcyBvZiBKU09OIHNpbXBsaWZpZWQgYWNjZXNzb3Igc3ludGF4OgogCiA8cHJv Z3JhbWxpc3Rpbmc+Ci0KIC0tIEJhc2ljIGZpZWxkIGFjY2VzcwogU0VMRUNUICgneyJjb2xvciI6 ICJyZWQiLCAicmdiIjogWzI1NSwgMCwgMF19Jzo6anNvbmIpLmNvbG9yOwogCkBAIC03NjksNyAr NzY4LDcgQEAgU0VMRUNUICgneyJ1c2VyIjogeyJwcm9maWxlIjogeyJzZXR0aW5ncyI6IHsidGhl bWUiOiAiZGFyayJ9fX19Jzo6anNvbmIpLnVzZXIucHIKIFNFTEVDVCAoJ3sicmVwZXJ0b2lyZSI6 IFt7InRpdGxlIjogIlN3YW4gTGFrZSJ9LCB7InRpdGxlIjogIlRoZSBOdXRjcmFja2VyIn1dfSc6 Ompzb25iKS5yZXBlcnRvaXJlWzFdLnRpdGxlOwogCiAtLSBJbiBXSEVSRSBjbGF1c2VzCi1TRUxF Q1QgKiBGUk9NIHVzZXJzIFdIRVJFIHByb2ZpbGUucHJlZmVyZW5jZXMudGhlbWUgPSAnImRhcmsi JzsKK1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgKHByb2ZpbGUpLnByZWZlcmVuY2VzLnRoZW1l ID0gJyJkYXJrIic7CiAKIC0tIENvbXBhcmlzb24gd2l0aCBvdGhlciBhY2Nlc3MgbWV0aG9kcyAo Tk9UIGVxdWl2YWxlbnQgLSBkaWZmZXJlbnQgc2VtYW50aWNzKToKIFNFTEVDVCBqc29uX2NvbFsn YWRkcmVzcyddWydjaXR5J107ICAgICAgICAgICAtLSBTdWJzY3JpcHRpbmcKQEAgLTc4MSw3ICs3 ODAsNyBAQCBTRUxFQ1QganNvbl9jb2wuYWRkcmVzcy5jaXR5OyAgICAgICAgICAgICAgICAgLS0g U2ltcGxpZmllZCBhY2Nlc3NvciAoZGlmZmVyZW50CiAgIDxzZWN0MyBpZD0ianNvbmItYWNjZXNz LW1ldGhvZC1jb21wYXJpc29uIj4KICAgIDx0aXRsZT5Db21wYXJpc29uIG9mIEpTT04gQWNjZXNz IE1ldGhvZHM8L3RpdGxlPgogICAgPHBhcmE+Ci0gICAgUG9zdGdyZVNRTCBwcm92aWRlcyB0aHJl ZSBkaWZmZXJlbnQgYXBwcm9hY2hlcyBmb3IgYWNjZXNzaW5nIEpTT04gZGF0YSwgZWFjaCB3aXRo CisgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBwcm92aWRlcyB0aHJl ZSBkaWZmZXJlbnQgYXBwcm9hY2hlcyBmb3IgYWNjZXNzaW5nIEpTT04gZGF0YSwgZWFjaCB3aXRo CiAgICAgZGlzdGluY3Qgc2VtYW50aWNzIGFuZCBiZWhhdmlvcnM6CiAgICA8L3BhcmE+CiAKQEAg LTgzNCw3ICs4MzMsOCBAQCBTRUxFQ1QganNvbl9jb2wuYWRkcmVzcy5jaXR5OyAgICAgICAgICAg ICAgICAgLS0gU2ltcGxpZmllZCBhY2Nlc3NvciAoZGlmZmVyZW50CiAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFBvc3RncmVTUUwncyBvcmln aW5hbCBKU09OQiBzdWJzY3JpcHRpbmcgYmVoYXZpb3IgKGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9u IDE0KQorICAgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4ncyBvcmln aW5hbCBKU09OQiBzdWJzY3JpcHRpbmcKKyAgICAgICBiZWhhdmlvciAoYXZhaWxhYmxlIHNpbmNl IHZlcnNpb24gMTQpCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDxsaXN0 aXRlbT4KQEAgLTg2MCw3ICs4NjAsOCBAQCBTRUxFQ1QganNvbl9jb2wuYWRkcmVzcy5jaXR5OyAg ICAgICAgICAgICAgICAgLS0gU2ltcGxpZmllZCBhY2Nlc3NvciAoZGlmZmVyZW50CiAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFBvc3RncmVT UUwncyBKU09OIG9wZXJhdG9ycyB0aGF0IHdvcmsgd2l0aCBib3RoIDxsaXRlcmFsPmpzb248L2xp dGVyYWw+IGFuZCA8bGl0ZXJhbD5qc29uYjwvbGl0ZXJhbD4gdHlwZXMKKyAgICAgICA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+J3MgSlNPTiBvcGVyYXRvcnMgdGhhdCB3b3Jr IHdpdGgKKyAgICAgICBib3RoIDx0eXBlPmpzb248L3R5cGU+IGFuZCA8dHlwZT5qc29uYjwvdHlw ZT4gdHlwZXMKICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICAgPGxpc3RpdGVt PgpAQCAtODcwLDcgKzg3MSw3IEBAIFNFTEVDVCBqc29uX2NvbC5hZGRyZXNzLmNpdHk7ICAgICAg ICAgICAgICAgICAtLSBTaW1wbGlmaWVkIGFjY2Vzc29yIChkaWZmZXJlbnQKICAgICAgPC9saXN0 aXRlbT4KICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgPGxpdGVyYWw+LT48 L2xpdGVyYWw+IHJldHVybnMganNvbmIsIDxsaXRlcmFsPi0+PjwvbGl0ZXJhbD4gcmV0dXJucyB0 ZXh0CisgICAgICAgPGxpdGVyYWw+LT48L2xpdGVyYWw+IHJldHVybnMgPHR5cGU+anNvbmI8L3R5 cGU+LCA8bGl0ZXJhbD4tPj48L2xpdGVyYWw+IHJldHVybnMgPHR5cGU+dGV4dDwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICAgPGxpc3RpdGVtPgpAQCAtODkwLDE5 ICs4OTEsMzcgQEAgU0VMRUNUIGpzb25fY29sLmFkZHJlc3MuY2l0eTsgICAgICAgICAgICAgICAg IC0tIFNpbXBsaWZpZWQgYWNjZXNzb3IgKGRpZmZlcmVudAogICAgIDxlbXBoYXNpcz5NZW1iZXIg QWNjZXNzIGZyb20gQXJyYXlzOjwvZW1waGFzaXM+CiA8cHJvZ3JhbWxpc3Rpbmc+CiAtLSBTZXR1 cCBkYXRhCitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZShkYXRhIGpzb25iKTsKIElOU0VSVCBJTlRP IHRlc3RfdGFibGUgVkFMVUVTCi0gICgneyJicmlnaHRuZXNzIjogODB9JyksICAgICAgICAgICAg ICAgICAgICAgIC0tIE9iamVjdCBjYXNlCi0gICgnW3siYnJpZ2h0bmVzcyI6IDQ1fSwgeyJicmln aHRuZXNzIjogOTB9XScpOyAtLSBBcnJheSBjYXNlCisgICgneyJicmlnaHRuZXNzIjogODB9Jyks ICgnW3siYnJpZ2h0bmVzcyI6IDQ1fSwgeyJicmlnaHRuZXNzIjogOTB9XScpOwogCiAtLSBEaWZm ZXJlbnQgYmVoYXZpb3JzOgotU0VMRUNUIGRhdGEuYnJpZ2h0bmVzcyBGUk9NIHRlc3RfdGFibGU7 ICAgICAgICAgLS0gU2ltcGxpZmllZCBhY2Nlc3NvcgotLS0gUmVzdWx0czogODAsIFs0NSwgOTBd ICAoYXJyYXkgZWxlbWVudHMgdW53cmFwcGVkLCByZXN1bHRzIHdyYXBwZWQpCi0KLVNFTEVDVCBk YXRhWydicmlnaHRuZXNzJ10gRlJPTSB0ZXN0X3RhYmxlOyAgICAgIC0tIFByZS1zdGFuZGFyZCBz dWJzY3JpcHRpbmcKLS0tIFJlc3VsdHM6IDgwLCBOVUxMICAgIChubyBhcnJheSBoYW5kbGluZykK LQotU0VMRUNUIGRhdGEtPidicmlnaHRuZXNzJyBGUk9NIHRlc3RfdGFibGU7ICAgICAgLS0gQXJy b3cgb3BlcmF0b3IKLS0tIFJlc3VsdHM6IDgwLCBOVUxMICAgIChubyBhcnJheSBoYW5kbGluZykK Ky0tIFNpbXBsaWZpZWQgYWNjZXNzb3IKKy0tKGFycmF5IGVsZW1lbnRzIHVud3JhcHBlZCwgcmVz dWx0cyB3cmFwcGVkKQorU0VMRUNUIChkYXRhKS5icmlnaHRuZXNzIEZST00gdGVzdF90YWJsZTsK KyBicmlnaHRuZXNzCistLS0tLS0tLS0tLS0KKyA4MAorIFs0NSwgOTBdCisoMiByb3dzKQorCist LSBQcmUtc3RhbmRhcmQgc3Vic2NyaXB0aW5nCistLShubyBhcnJheSBoYW5kbGluZykKK1NFTEVD VCBkYXRhWydicmlnaHRuZXNzJ10sIGRhdGFbJ2JyaWdodG5lc3MnXSBJUyBOVUxMIGFzIGlzX251 bGwgRlJPTSB0ZXN0X3RhYmxlOworIGRhdGEgfCBpc19udWxsCistLS0tLS0rLS0tLS0tLS0tCisg ODAgICB8IGYKKyAgICAgIHwgdAorKDIgcm93cykKKworLS0gQXJyb3cgb3BlcmF0b3IKKy0tKG5v IGFycmF5IGhhbmRsaW5nKQorU0VMRUNUIGRhdGEtPidicmlnaHRuZXNzJywgZGF0YS0+J2JyaWdo dG5lc3MnIElTIE5VTEwgYXMgaXNudWxsIEZST00gdGVzdF90YWJsZTsKKyA/Y29sdW1uPyB8IGlz bnVsbAorLS0tLS0tLS0tLSstLS0tLS0tLQorIDgwICAgICAgIHwgZgorICAgICAgICAgIHwgdAor KDIgcm93cykKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICBJbiB0aGUgYXJyYXkgY2FzZSwgdGhl IHNpbXBsaWZpZWQgYWNjZXNzb3IgYXBwbGllcyB0aGUgZmllbGQgYWNjZXNzIHRvIGVhY2ggYXJy YXkgZWxlbWVudApAQCAtOTE1LDYgKzkzNCw3IEBAIFNFTEVDVCBkYXRhLT4nYnJpZ2h0bmVzcycg RlJPTSB0ZXN0X3RhYmxlOyAgICAgIC0tIEFycm93IG9wZXJhdG9yCiAgICAgPGVtcGhhc2lzPkFy cmF5IEFjY2VzcyBmcm9tIE9iamVjdHMgKExheCBNb2RlIEJlaGF2aW9yKTo8L2VtcGhhc2lzPgog PHByb2dyYW1saXN0aW5nPgogLS0gU2V0dXAgZGF0YQorVFJVTkNBVEUgdGVzdF90YWJsZTsKIElO U0VSVCBJTlRPIHRlc3RfdGFibGUgVkFMVUVTICgneyJ3ZWF0aGVyIjogInN1bm55IiwgInRlbXBl cmF0dXJlIjogIjcyRiJ9Jyk7CiAKIC0tIERpZmZlcmVudCBiZWhhdmlvcnMgd2hlbiBhY2Nlc3Np bmcgWzBdIG9uIGEgbm9uLWFycmF5IHZhbHVlOgpAQCAtOTI0LDggKzk0NCwxMyBAQCBTRUxFQ1Qg ZGF0YVswXSBGUk9NIHRlc3RfdGFibGU7ICAgICAgICAgICAgICAgICAtLSBTaW1wbGlmaWVkIGFj Y2Vzc29yIChsYXggbW9kZQogU0VMRUNUIGRhdGFbMF0gRlJPTSB0ZXN0X3RhYmxlOyAgICAgICAg ICAgICAgICAgLS0gUHJlLXN0YW5kYXJkIHN1YnNjcmlwdGluZyAoc3RyaWN0IG1vZGUsIG5vIGRv dHMpCiAtLSBSZXN1bHQ6IE5VTEwgIChubyB3cmFwcGluZywgZGlyZWN0IGFycmF5IGFjY2VzcyBv biBvYmplY3QgZmFpbHMpCiAKLVNFTEVDVCBkYXRhLT4wIEZST00gdGVzdF90YWJsZTsgICAgICAg ICAgICAgICAgIC0tIEFycm93IG9wZXJhdG9yIChzdHJpY3QgbW9kZSkKLS0tIFJlc3VsdDogTlVM TCAgKG5vIHdyYXBwaW5nLCBkaXJlY3QgYXJyYXkgYWNjZXNzIG9uIG9iamVjdCBmYWlscykKKy0t IEFycm93IG9wZXJhdG9yIChzdHJpY3QgbW9kZSkKKy0tKG5vIHdyYXBwaW5nLCBkaXJlY3QgYXJy YXkgYWNjZXNzIG9uIG9iamVjdCBmYWlscykKK1NFTEVDVCBkYXRhLT4wLCBkYXRhLT4wIElTIE5V TEwgYXMgaXNudWxsIEZST00gdGVzdF90YWJsZTsKKyA/Y29sdW1uPyB8IGlzbnVsbAorLS0tLS0t LS0tLSstLS0tLS0tLQorICAgICAgICAgIHwgdAorKDEgcm93KQogPC9wcm9ncmFtbGlzdGluZz4K IAogICAgIEluIGxheCBtb2RlIChzaW1wbGlmaWVkIGFjY2Vzc29yKSwgd2hlbiBhbiBhcnJheSBv cGVyYXRpb24gaXMgcGVyZm9ybWVkIG9uIGEgbm9uLWFycmF5IHZhbHVlLApAQCAtOTM4LDE3ICs5 NjMsMjAgQEAgU0VMRUNUIGRhdGEtPjAgRlJPTSB0ZXN0X3RhYmxlOyAgICAgICAgICAgICAgICAg LS0gQXJyb3cgb3BlcmF0b3IgKHN0cmljdCBtb2RlKQogICAgIDxpdGVtaXplZGxpc3Q+CiAgICAg IDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFVzZSA8ZW1waGFzaXM+U1FMOjIwMjMg c2ltcGxpZmllZCBhY2Nlc3NvcjwvZW1waGFzaXM+IGZvciBzdGFuZGFyZCBjb21wbGlhbmNlIGFu ZCB3aGVuIHlvdSB3YW50IGxheCBtb2RlIGFuZCBjb25kaXRpb25hbCBhcnJheSB3cmFwcGVyCisg ICAgICAgVXNlIDxlbXBoYXNpcz5TUUw6MjAyMyBzaW1wbGlmaWVkIGFjY2Vzc29yPC9lbXBoYXNp cz4gZm9yIHN0YW5kYXJkCisgICAgICAgY29tcGxpYW5jZSBhbmQgd2hlbiB5b3Ugd2FudCBsYXgg bW9kZSBhbmQgY29uZGl0aW9uYWwgYXJyYXkgd3JhcHBlcgogICAgICAgPC9wYXJhPgogICAgICA8 L2xpc3RpdGVtPgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBVc2UgPGVt cGhhc2lzPnByZS1zdGFuZGFyZCBzdWJzY3JpcHRpbmc8L2VtcGhhc2lzPiBmb3Igd3JpdGUgb3Bl cmF0aW9ucyBvciB3aGVuIHlvdSBuZWVkIGRpcmVjdCBmaWVsZCBhY2Nlc3Mgd2l0aG91dCBhcnJh eSBwcm9jZXNzaW5nCisgICAgICAgVXNlIDxlbXBoYXNpcz5wcmUtc3RhbmRhcmQgc3Vic2NyaXB0 aW5nPC9lbXBoYXNpcz4gZm9yIHdyaXRlIG9wZXJhdGlvbnMKKyAgICAgICBvciB3aGVuIHlvdSBu ZWVkIGRpcmVjdCBmaWVsZCBhY2Nlc3Mgd2l0aG91dCBhcnJheSBwcm9jZXNzaW5nCiAgICAgICA8 L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgot ICAgICAgIFVzZSA8ZW1waGFzaXM+YXJyb3cgb3BlcmF0b3JzPC9lbXBoYXNpcz4gd2hlbiB5b3Ug bmVlZCB0ZXh0IG91dHB1dCAoPGxpdGVyYWw+LT4+PC9saXRlcmFsPikgb3Igd2hlbiB3b3JraW5n IHdpdGggYm90aCA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+anNvbmI8L2xp dGVyYWw+IHR5cGVzCisgICAgICAgVXNlIDxlbXBoYXNpcz5hcnJvdyBvcGVyYXRvcnM8L2VtcGhh c2lzPiB3aGVuIHlvdSBuZWVkIHRleHQgb3V0cHV0ICg8bGl0ZXJhbD4tPj48L2xpdGVyYWw+KQor ICAgICAgIG9yIHdoZW4gd29ya2luZyB3aXRoIGJvdGggPHR5cGU+anNvbjwvdHlwZT4gYW5kIDx0 eXBlPmpzb25iPC90eXBlPiB0eXBlcwogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgog ICAgIDwvaXRlbWl6ZWRsaXN0Pgo= --000000000000cd2d0106459a737a--