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 1w7AQK-0051a5-37 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 11:04:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7AQG-002eHV-3D for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 11:04:45 +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 1w7AQG-002eHN-0n for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 11:04:45 +0000 Received: from mail-qt1-x82d.google.com ([2607:f8b0:4864:20::82d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7AQD-00000001n2m-1XVO for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 11:04:42 +0000 Received: by mail-qt1-x82d.google.com with SMTP id d75a77b69052e-50b268fba9aso38071471cf.3 for ; Mon, 30 Mar 2026 04:04:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774868680; cv=none; d=google.com; s=arc-20240605; b=OoDQljI64fJ7UagppBdQlOiHwxRRqXs1qCaVuhrfavujV729aeyu9QAPVgUs0jBFGc qCx+SAcuuD8sRAsVMoqf6vUyqj/VamTevxGpbu/K4hNjCzo0EwHXOYO2ufPz/LrCf5Uq xk4ywmOP21MK9qkEBeIP4SH7voKb5N5yEZGVmDC2T8JZrpwmIYeU1dhLk46AVIkQwfwm n3xHS4K23nCZPbJhcJrqEKxyrbg1Dqgqhw+r4wy1reImvUhGivZWgTg0F1FE/mGqnhqd Q2ji6AzRCjON6nqm5TWPNHOCpRYEF7ICg22Rx3cbxzplTLyyaaZHaiapLLlpGhPsEWBo ToBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=rPz/IP+26EWfe7lSXfo607LGW5vWFfrvfv1qtbD0QKg=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=AcO83yj5TsiBDVD5NbkMFpAvIIFJPPr8xMmRXmZuqKO3Xv1WmRUOHNIpgd75SxbJna DTdG9gk+rvXXej2/vxkBJsXDdk8HadcJkAf6EbhPcCtwpBOYmfYLU1yjFGVLvh1lW1Du afw7SSgzGgD5zUI+HF3oq3HpLK7H4D7REwVMik694tkOFrTVT8w2fTAAhwzUbrEvjclG MsmmgTN6i0yefUR6/sOnQUncdOqUyUU/WwCvL14VPirDn2b1RBCsDW8bXw9t1fPFTu+k H5dTQTgFoolYs9qoV2kFHREMTNSKz203oLfgM94OxaCwAJBKws/X2msifQ6mONNi7v24 rJ9Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1774868680; x=1775473480; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=rPz/IP+26EWfe7lSXfo607LGW5vWFfrvfv1qtbD0QKg=; b=W/Np0I964vh/bRjQOokLzJMsP3SFeQCwKE/9bk4V4L3MOJAqPXFz9q+ulCfpt936bi A3esJds8ZJdvrckOVZtcdxfuZJsNHvovCZML/vxftvERRItCOWReI32BCRNFzoE6Rqse ro+i4IAGJ/NZ1FHEt0kvIO+FsdzuqKybtjmqJlyDdwLtfmUxSFxmeLWNICZkZBBmKS5l ekO+85KfaKI8rguxJpLsibydXgdN5aJ2UO9VIBQAi8J4rEV26gX7ZGdquEAQ3SONB3HJ TsR++F/ccVy2DFDaKw6XAEQJC9GMqG9BHddsk641SgGorR8eVpzAolvfYmjnvOy6QMYF WHsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774868680; x=1775473480; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=rPz/IP+26EWfe7lSXfo607LGW5vWFfrvfv1qtbD0QKg=; b=TW8WOXqF+2fG3KZAGX8XM4iOyZPw+e+GlGS7rNkXDD2KurPWhoCJ9TdsjTXcrdxtdX hLZdBH2smLhH18lMpSfrou5LhUSbLS7iG9yMRRXLsVYwDpb6mlq/5QE90/3kQh17VuzV 0IESPOCdR/sbU677IeQ2QRxeiNJkZ/+62VKnoOTjJixf/AwTtGodYYlXUcqawgWyf1RN cB8sYJEUMXUTZlmbnabrO3tKQzdjYGRg/P4II+NIyLTJ2tHUk2n3eVob869T82dpc5dn 1CKLsBdgcO0DeHNpIsvL8C49udVtS9yn+1lqEYnpDmvDuU7nxaayWqFdmDvgOT5A5x04 mVtg== X-Gm-Message-State: AOJu0YyDgJwt5+L5k+LWBHW5Dgi574lXh4hCJhMWUWuhQeUDSJoBq1fv VDNsb6F/sjVF703UgWkI4RXQjc3qXVwKVEyd0J4y/s4s7AKLzUPxJxKxptcIiJbSPBcd8zzM7UO Y8Ru7DE+z1luFvJH+LsYS9lHVn7n5iXpsCjC25gW6jgPtp1xOnLrKtNvf X-Gm-Gg: ATEYQzwPNJjagkfrbQfGFE434qujjW0aSFcB3ufE1qZjha3ZcWdQQnR4wtGTYcdv1Ew iMeJPCKXWXO59ugHo5nlPrRfqJ26HnXfcRpiwQByW/4WrjN2bSdKOCowGDre2KsB7jzhx4Gy1Gm iQN5SENMd33/DnkXuosbUiYHPmzHm9FFfpL6osfUHvNUsz2jtGDtP945ItFNLWKb9YKfy/SaCIh mvqJqJaj9EGFyGdLoRNrj6gBzYfdLJegmW31R8KW3INosH2I3MY80lYIkPD1ybpSqDMIRHtKCLm br3BBmK7 X-Received: by 2002:a05:622a:5591:b0:506:8738:651d with SMTP id d75a77b69052e-50ba39e3bafmr154536331cf.62.1774868679659; Mon, 30 Mar 2026 04:04:39 -0700 (PDT) MIME-Version: 1.0 From: Suraj Kharage Date: Mon, 30 Mar 2026 16:34:27 +0530 X-Gm-Features: AQROBzANzNIV9PLn6EEFjEp_Xj1VP3q_Lrzg1a12XWZN4ydRDfIm6fL2sUDeq0I Message-ID: Subject: [PATCH] Add support for INSERT ... SET syntax To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000002ccdb3064e3bd1bd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002ccdb3064e3bd1bd Content-Type: multipart/alternative; boundary="0000000000002ccdb2064e3bd1bb" --0000000000002ccdb2064e3bd1bb Content-Type: text/plain; charset="UTF-8" Hi, I would like to propose adding support for an alternative INSERT syntax that uses named column assignments via a SET clause. This provides a more convenient and readable way to write inserts, particularly when only specific columns need values. Currently, PostgreSQL requires INSERT statements to separate the column list from the values: INSERT INTO users (name, email, status) VALUES ('Alice', ' alice@example.com', 'active'); For inserts with many columns or where only a subset of columns are specified, the proposed SET syntax offers better readability by keeping column names adjacent to their values: INSERT INTO users SET name='Alice', email='alice@example.com', status='active'; Proposed Syntax: INSERT INTO table_name SET (column1=value1, column2=value2, ...), (, ...) [ ON CONFLICT ... ] [ RETURNING ... ]; Below INSERT features are supported: - DEFAULT keyword: SET col=DEFAULT - Expressions and functions: SET col=expr, col2=function(...) - Subqueries: SET col=(SELECT ...) - RETURNING clause - ON CONFLICT DO UPDATE/NOTHING - OVERRIDING SYSTEM VALUE - Multi-row syntax: SET (col1=val1, col2=val2), (col1=val3, col2=val4) Columns not mentioned receive their default values or NULL, consistent with standard INSERT behavior. I've attached the patch. Looking forward to your feedback. -- Thanks & Regards, Suraj kharage, enterprisedb.com --0000000000002ccdb2064e3bd1bb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

I would like to propose adding support for= an alternative INSERT syntax that uses named column assignments via a SET = clause. This provides a more convenient and readable way to write inserts, = particularly when only specific columns need values.

Currently, Post= greSQL requires INSERT statements to separate the column list from the valu= es:

=C2=A0 =C2=A0 INSERT INTO users (name, email, status) VALUES (&#= 39;Alice', 'alice@example.com<= /a>', 'active');

For inserts with many columns or where = only a subset of columns are specified, the proposed SET syntax offers bett= er readability by keeping column names adjacent to their values:

=C2= =A0 =C2=A0 INSERT INTO users SET name=3D'Alice', email=3D'
alice@example.com', status=3D'a= ctive';

Proposed Syntax:

=C2=A0 =C2=A0 INSERT INTO table_= name
=C2=A0 =C2=A0 =C2=A0 =C2=A0 SET (column1=3Dvalue1, column2=3Dvalue2= , ...), (, ...)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 [ ON CONFLICT ... ]
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 [ RETURNING ... ];

Below INSERT features ar= e supported:
- DEFAULT keyword: SET col=3DDEFAULT
- Expressions and f= unctions: SET col=3Dexpr, col2=3Dfunction(...)
- Subqueries: SET col=3D(= SELECT ...)
- RETURNING clause
- ON CONFLICT DO UPDATE/NOTHING
- O= VERRIDING SYSTEM VALUE
- Multi-row syntax: SET (col1=3Dval1, col2=3Dval2= ), (col1=3Dval3, col2=3Dval4)

Columns not mentioned receive their de= fault values or NULL, consistent with standard INSERT behavior.

I= 9;ve attached the patch. Looking forward to your feedback.
--

Thanks & Reg= ards,=C2=A0
Suraj kharage,=C2=A0

<= /div>
--0000000000002ccdb2064e3bd1bb-- --0000000000002ccdb3064e3bd1bd Content-Type: application/octet-stream; name="v1-0001-Add-support-for-INSERT-.-SET-syntax.patch" Content-Disposition: attachment; filename="v1-0001-Add-support-for-INSERT-.-SET-syntax.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnd2psrb0 RnJvbSA0MjMzZTJlZjVkMTIyM2YwZjM4NTNjODAyZGYzMWIwMDE1ZWQ4YmRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXJhaiBLaGFyYWdlIDxzdXJhai5raGFyYWdlQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6NDY6MTQgKzA1MzAKU3ViamVjdDog W1BBVENIIHYxXSBBZGQgc3VwcG9ydCBmb3IgSU5TRVJUIC4uLiBTRVQgc3ludGF4CgpUaGlzIGNv bW1pdCBhZGRzIHN1cHBvcnQgZm9yIElOU0VSVCAuLi4gU0VUIHN5bnRheCwgd2hpY2ggYWxsb3dz CnNwZWNpZnlpbmcgY29sdW1uIHZhbHVlcyB1c2luZyBuYW1lZCBhc3NpZ25tZW50cyBpbnN0ZWFk IG9mCnJlcXVpcmluZyBhIHNlcGFyYXRlIGNvbHVtbiBsaXN0IGFuZCBWQUxVRVMgY2xhdXNlLgoK U3ludGF4OgogICAgSU5TRVJUIElOVE8gdGFibGVfbmFtZSBTRVQgY29sdW1uMT12YWx1ZTEsIGNv bHVtbjI9dmFsdWUyLCAuLi47CgpUaGlzIHN5bnRheCBwcm92aWRlcyBhIG1vcmUgY29udmVuaWVu dCBhbmQgcmVhZGFibGUgYWx0ZXJuYXRpdmUgZm9yCnNpbmdsZS1yb3cgaW5zZXJ0cywgcGFydGlj dWxhcmx5IHdoZW4gb25seSBzcGVjaWZpYyBjb2x1bW5zIG5lZWQgdmFsdWVzLgpDb2x1bW5zIG5v dCBtZW50aW9uZWQgaW4gdGhlIFNFVCBjbGF1c2UgcmVjZWl2ZSB0aGVpciBkZWZhdWx0IHZhbHVl cyBvcgpOVUxMLCBjb25zaXN0ZW50IHdpdGggc3RhbmRhcmQgSU5TRVJUIGJlaGF2aW9yLgoKRmVh dHVyZXMgc3VwcG9ydGVkOgotIEJhc2ljIHN5bnRheDogSU5TRVJUIElOVE8gdCBTRVQgY29sPXZh bCwgLi4uCi0gREVGQVVMVCBrZXl3b3JkOiBTRVQgY29sPURFRkFVTFQKLSBOVUxMIHZhbHVlczog U0VUIGNvbD1OVUxMCi0gRXhwcmVzc2lvbnMgYW5kIGZ1bmN0aW9uczogU0VUIGNvbD1leHByCi0g U3VicXVlcmllczogU0VUIGNvbD0oU0VMRUNUIC4uLikKLSBSRVRVUk5JTkcgY2xhdXNlOiBTRVQg Li4uIFJFVFVSTklORyAqCi0gT04gQ09ORkxJQ1Q6IFNFVCAuLi4gT04gQ09ORkxJQ1QgRE8gVVBE QVRFL05PVEhJTkcKLSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRTogT1ZFUlJJRElORyBTWVNURU0g VkFMVUUgU0VUIC4uLgotIE11bHRpLXJvdyBzeW50YXg6IFNFVCAoY29sMT12YWwxLCBjb2wyPXZh bDIpLCAoY29sMT12YWwzLCBjb2wyPXZhbDQpCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQu c2dtbCAgICAgICAgIHwgIDQ1ICsrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAg ICAgICAgfCAxMjUgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgICAgIHwgIDYzICsrKysrKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAg ICB8ICAgNiArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgICAxICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5zZXJ0Lm91dCB8IDI2NSArKysrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luc2VydC5zcWwgICAgICB8IDE5 NCArKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA2OTUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2luc2VydC5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbAppbmRleCAxMjFhOWVkY2I5OS4uZmFm N2UxN2JmYTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvaW5zZXJ0LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbApAQCAtMjQsNyArMjQsOCBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBJTlNFUlQgSU5U TyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgQVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4g XSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uXSApIF0KICAgICBbIE9WRVJSSURJTkcgeyBTWVNURU0gfCBVU0VSIH0gVkFM VUUgXQotICAgIHsgREVGQVVMVCBWQUxVRVMgfCBWQUxVRVMgKCB7IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4u XSApIFssIC4uLl0gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVlcnk8L3JlcGxh Y2VhYmxlPiB9CisgICAgeyBERUZBVUxUIFZBTFVFUyB8IFZBTFVFUyAoIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSBb LCAuLi5dICkgWywgLi4uXSB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdWVyeTwv cmVwbGFjZWFibGU+IHwKKyAgICAgIFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0gKSwgWywg Li4uXSB9CiAgICAgWyBPTiBDT05GTElDVCBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb25mbGljdF90YXJnZXQ8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb25mbGljdF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBSRVRVUk5JTkcg WyBXSVRIICggeyBPTEQgfCBORVcgfSBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ b3V0cHV0X2FsaWFzPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0KICAgICAgICAgICAgICAgICB7 ICogfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3Jl cGxhY2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0 X25hbWU8L3JlcGxhY2VhYmxlPiBdIH0gWywgLi4uXSBdCkBAIC02NSw2ICs2NiwxOSBAQCBJTlNF UlQgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgQVMgPHJlcGxhYwogICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHBsaWNpdCBvciBp bXBsaWNpdCBjb2x1bW4gbGlzdCBsZWZ0LXRvLXJpZ2h0LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+ CisgICBBcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgPGxpdGVyYWw+VkFMVUVTPC9saXRlcmFsPiBj bGF1c2UsIHlvdSBjYW4gdXNlIHRoZQorICAgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjbGF1c2Ug dG8gc3BlY2lmeSBjb2x1bW4gdmFsdWVzIHVzaW5nIG5hbWVkCisgICBhc3NpZ25tZW50cy4gVGhl IDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIGhhcyB0aGUgZm9ybQorICAgPGxpdGVyYWw+ U0VUIDxyZXBsYWNlYWJsZT5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl PmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4sCisgICB3aXRoIG11bHRpcGxlIGNv bHVtbiBhc3NpZ25tZW50cyBzZXBhcmF0ZWQgYnkgY29tbWFzLiBUaGlzIHN5bnRheCBpcworICAg cGFydGljdWxhcmx5IGNvbnZlbmllbnQgd2hlbiBpbnNlcnRpbmcgYSBzaW5nbGUgcm93IHdpdGgg dmFsdWVzIGZvcgorICAgc3BlY2lmaWMgY29sdW1ucywgYXMgaXQgZWxpbWluYXRlcyB0aGUgbmVl ZCB0byBzcGVjaWZ5IGEgc2VwYXJhdGUKKyAgIGNvbHVtbiBsaXN0LiBXaGVuIHVzaW5nIDxsaXRl cmFsPlNFVDwvbGl0ZXJhbD4sIGNvbHVtbnMgbm90IG1lbnRpb25lZAorICAgd2lsbCByZWNlaXZl IHRoZWlyIGRlZmF1bHQgdmFsdWVzIG9yIG51bGwuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+ CisgICBzeW50YXggY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggYW4gZXhwbGljaXQgY29sdW1uIGxp c3QuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIEVhY2ggY29sdW1uIG5vdCBwcmVzZW50IGlu IHRoZSBleHBsaWNpdCBvciBpbXBsaWNpdCBjb2x1bW4gbGlzdCB3aWxsIGJlCiAgICBmaWxsZWQg d2l0aCBhIGRlZmF1bHQgdmFsdWUsIGVpdGhlciBpdHMgZGVjbGFyZWQgZGVmYXVsdCB2YWx1ZQpA QCAtNzM2LDYgKzc1MCwzNSBAQCBJTlNFUlQgSU5UTyBmaWxtcyAoY29kZSwgdGl0bGUsIGRpZCwg ZGF0ZV9wcm9kLCBraW5kKSBWQUxVRVMKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFRvIGluc2VydCBhIHNpbmdsZSByb3cgdXNpbmcgdGhlIDxsaXRlcmFsPlNF VDwvbGl0ZXJhbD4gc3ludGF4OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitJTlNFUlQgSU5UTyBmaWxt cyBTRVQgY29kZT0nVUE1MDInLCB0aXRsZT0nQmFuYW5hcycsIGRpZD0xMDUsCisgICAgZGF0ZV9w cm9kPScxOTcxLTA3LTEzJywga2luZD0nQ29tZWR5JywgbGVuPSc4MiBtaW51dGVzJzsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoaXMgZXhhbXBsZSB1c2Vz IHRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IHN5bnRheCB3aXRoCisgICA8bGl0ZXJhbD5ERUZB VUxUPC9saXRlcmFsPiBmb3Igc29tZSBjb2x1bW5zOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitJTlNF UlQgSU5UTyBmaWxtcyBTRVQgY29kZT0nVF82MDEnLCB0aXRsZT0nWW9qaW1ibycsIGRpZD0xMDYs CisgICAgZGF0ZV9wcm9kPURFRkFVTFQsIGtpbmQ9J0RyYW1hJzsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IHN5 bnRheCBjYW4gYmUgdXNlZCB3aXRoIGV4cHJlc3Npb25zCisgICBhbmQgZnVuY3Rpb25zOgorCis8 cHJvZ3JhbWxpc3Rpbmc+CitJTlNFUlQgSU5UTyBmaWxtcyBTRVQgY29kZT0nSEcxMjAnLCB0aXRs ZT11cHBlcigndGhlIGRpbm5lciBnYW1lJyksCisgICAgZGlkPTE0MCwgZGF0ZV9wcm9kPWN1cnJl bnRfZGF0ZSwga2luZD0nQ29tZWR5JzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwog ICA8cGFyYT4KICAgIFRoaXMgZXhhbXBsZSBpbnNlcnRzIHNvbWUgcm93cyBpbnRvIHRhYmxlCiAg ICA8c3RydWN0bmFtZT5maWxtczwvc3RydWN0bmFtZT4gZnJvbSBhIHRhYmxlIDxzdHJ1Y3RuYW1l PnRtcF9maWxtczwvc3RydWN0bmFtZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9h bmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IGFkMzFkZWUyNjg2 Li40ZWJiNGJmZGI2ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC02NjgsNiArNjY4LDEzMSBAQCB0 cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAqc3RtdCkK IAogCXFyeS0+b3ZlcnJpZGUgPSBzdG10LT5vdmVycmlkZTsKIAorCS8qCisJICogSWYgd2UgaGF2 ZSBTRVQgY2xhdXNlIChJTlNFUlQgLi4uIFNFVCBjb2w9dmFsLCAuLi4pLCB0cmFuc2Zvcm0gaXQK KwkgKiBpbnRvIGNvbHVtbiBsaXN0IGFuZCBWQUxVRVMgbGlzdCBiZWZvcmUgZnVydGhlciBwcm9j ZXNzaW5nLgorCSAqCisJICogU3VwcG9ydHMgYm90aCBzaW5nbGUtcm93IGFuZCBtdWx0aS1yb3cg c3ludGF4OgorCSAqICAgU2luZ2xlIHJvdzogSU5TRVJUIElOVE8gdCBTRVQgYzE9MSwgYzI9Mgor CSAqICAgTXVsdGktcm93OiAgSU5TRVJUIElOVE8gdCBTRVQgKGMxPTEsIGMyPTIpLCAoYzE9Mywg YzI9NCkKKwkgKi8KKwlpZiAoc3RtdC0+c2V0Q2xhdXNlTGlzdCAhPSBOSUwpCisJeworCQlMaXN0 CSAgICpjb2xzID0gTklMOworCQlMaXN0CSAgICp2YWx1ZXNMaXN0cyA9IE5JTDsKKwkJTGlzdENl bGwgICAqb3V0ZXJfbGM7CisJCWJvb2wJCWZpcnN0X3JvdyA9IHRydWU7CisJCWludAkJCWV4cGVj dGVkX2NvbHMgPSAwOworCisJCS8qCisJCSAqIFRyYW5zZm9ybSBTRVQgY2xhdXNlIGxpc3Qocykg aW50byBjb2x1bW4gbGlzdCBhbmQgVkFMVUVTIGxpc3RzLgorCQkgKiBzZXRDbGF1c2VMaXN0IGlz IGEgbGlzdCBvZiBsaXN0cywgd2hlcmUgZWFjaCBpbm5lciBsaXN0IHJlcHJlc2VudHMKKwkJICog b25lIHJvdyBvZiBTRVQgY2xhdXNlcy4KKwkJICovCisJCWZvcmVhY2gob3V0ZXJfbGMsIHN0bXQt PnNldENsYXVzZUxpc3QpCisJCXsKKwkJCUxpc3QJICAgKnNldF9jbGF1c2UgPSAoTGlzdCAqKSBs Zmlyc3Qob3V0ZXJfbGMpOworCQkJTGlzdAkgICAqdmFscyA9IE5JTDsKKwkJCUxpc3RDZWxsICAg KnNldF9sYzsKKwkJCWludAkJCWNvbF9jb3VudCA9IDA7CisKKwkJCWlmIChmaXJzdF9yb3cpCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBGaXJzdCByb3c6IGV4dHJhY3QgY29sdW1uIG5hbWVzIHRvIGJ1 aWxkIHRoZSBjb2xzIGxpc3QgYW5kCisJCQkJICogY29sbGVjdCB2YWx1ZXMgaW4gdGhlIG9yZGVy IHRoZXkgYXBwZWFyLgorCQkJCSAqLworCQkJCWZvcmVhY2goc2V0X2xjLCBzZXRfY2xhdXNlKQor CQkJCXsKKwkJCQkJUmVzVGFyZ2V0ICAqcmVzID0gKFJlc1RhcmdldCAqKSBsZmlyc3Qoc2V0X2xj KTsKKwkJCQkJUmVzVGFyZ2V0ICAqY29sOworCisJCQkJCWNvbF9jb3VudCsrOworCisJCQkJCS8q IENyZWF0ZSBjb2x1bW4gcmVmZXJlbmNlIGZvciBjb2xzIGxpc3QgKi8KKwkJCQkJY29sID0gbWFr ZU5vZGUoUmVzVGFyZ2V0KTsKKwkJCQkJY29sLT5uYW1lID0gcmVzLT5uYW1lOworCQkJCQljb2wt PmluZGlyZWN0aW9uID0gcmVzLT5pbmRpcmVjdGlvbjsKKwkJCQkJY29sLT52YWwgPSBOVUxMOwor CQkJCQljb2wtPmxvY2F0aW9uID0gcmVzLT5sb2NhdGlvbjsKKwkJCQkJY29scyA9IGxhcHBlbmQo Y29scywgY29sKTsKKworCQkJCQkvKiBBZGQgdmFsdWUgZXhwcmVzc2lvbiB0byB2YWxzIGxpc3Qg Zm9yIHRoaXMgcm93ICovCisJCQkJCXZhbHMgPSBsYXBwZW5kKHZhbHMsIHJlcy0+dmFsKTsKKwkJ CQl9CisKKwkJCQlleHBlY3RlZF9jb2xzID0gY29sX2NvdW50OworCQkJCWZpcnN0X3JvdyA9IGZh bHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogU3Vic2VxdWVudCByb3dz OiBtYXRjaCBjb2x1bW4gbmFtZXMgd2l0aCB0aGUgZmlyc3Qgcm93J3Mgb3JkZXIuCisJCQkJICog QnVpbGQgYSBtYXBwaW5nIGZyb20gY29sdW1uIG5hbWVzIHRvIHZhbHVlcyBmb3IgdGhpcyByb3cs IHRoZW4KKwkJCQkgKiBleHRyYWN0IHZhbHVlcyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgZmly c3Qgcm93LgorCQkJCSAqLworCQkJCUxpc3QJICAgKmNvbF92YWxfcGFpcnMgPSBOSUw7CisJCQkJ TGlzdENlbGwgICAqY29sX2xjOworCisJCQkJLyogRmlyc3QgcGFzczogY29sbGVjdCBhbGwgY29s dW1uLXZhbHVlIHBhaXJzIGZyb20gdGhpcyByb3cgKi8KKwkJCQlmb3JlYWNoKHNldF9sYywgc2V0 X2NsYXVzZSkKKwkJCQl7CisJCQkJCVJlc1RhcmdldCAgKnJlcyA9IChSZXNUYXJnZXQgKikgbGZp cnN0KHNldF9sYyk7CisKKwkJCQkJY29sX2NvdW50Kys7CisJCQkJCWNvbF92YWxfcGFpcnMgPSBs YXBwZW5kKGNvbF92YWxfcGFpcnMsIHJlcyk7CisJCQkJfQorCisJCQkJLyogQ2hlY2sgY29sdW1u IGNvdW50IG1hdGNoZXMgZmlyc3Qgcm93ICovCisJCQkJaWYgKGNvbF9jb3VudCAhPSBleHBlY3Rl ZF9jb2xzKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJJTlNFUlQgLi4uIFNFVCByb3dzIG11c3QgaGF2 ZSB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1ucyIpLAorCQkJCQkJCSBlcnJoaW50KCJGaXJzdCBy b3cgaGFzICVkIGNvbHVtbnMsIGJ1dCB0aGlzIHJvdyBoYXMgJWQgY29sdW1ucy4iLAorCQkJCQkJ CQkJIGV4cGVjdGVkX2NvbHMsIGNvbF9jb3VudCkpKTsKKworCQkJCS8qCisJCQkJICogU2Vjb25k IHBhc3M6IGl0ZXJhdGUgdGhyb3VnaCBmaXJzdCByb3cncyBjb2x1bW4gb3JkZXIgYW5kIGZpbmQK KwkJCQkgKiBtYXRjaGluZyB2YWx1ZXMgZnJvbSBjdXJyZW50IHJvdy4KKwkJCQkgKi8KKwkJCQlm b3JlYWNoKGNvbF9sYywgY29scykKKwkJCQl7CisJCQkJCVJlc1RhcmdldCAgKmZpcnN0X3Jvd19j b2wgPSAoUmVzVGFyZ2V0ICopIGxmaXJzdChjb2xfbGMpOworCQkJCQlib29sCQlmb3VuZCA9IGZh bHNlOworCQkJCQlMaXN0Q2VsbCAgICpwYWlyX2xjOworCisJCQkJCWZvcmVhY2gocGFpcl9sYywg Y29sX3ZhbF9wYWlycykKKwkJCQkJeworCQkJCQkJUmVzVGFyZ2V0ICAqY3Vycl9yb3dfcmVzID0g KFJlc1RhcmdldCAqKSBsZmlyc3QocGFpcl9sYyk7CisKKwkJCQkJCWlmIChzdHJjbXAoZmlyc3Rf cm93X2NvbC0+bmFtZSwgY3Vycl9yb3dfcmVzLT5uYW1lKSA9PSAwKQorCQkJCQkJeworCQkJCQkJ CXZhbHMgPSBsYXBwZW5kKHZhbHMsIGN1cnJfcm93X3Jlcy0+dmFsKTsKKwkJCQkJCQlmb3VuZCA9 IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlpZiAoIWZvdW5k KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIHNwZWNpZmllZCBpbiBmaXJz dCByb3cgYnV0IG1pc3NpbmcgaW4gc3Vic2VxdWVudCByb3ciLAorCQkJCQkJCQkJCWZpcnN0X3Jv d19jb2wtPm5hbWUpKSk7CisJCQkJfQorCQkJfQorCisJCQkvKiBBZGQgdGhpcyByb3cncyB2YWx1 ZXMgdG8gdGhlIHZhbHVlc0xpc3RzICovCisJCQl2YWx1ZXNMaXN0cyA9IGxhcHBlbmQodmFsdWVz TGlzdHMsIHZhbHMpOworCQl9CisKKwkJLyogQ3JlYXRlIGEgU2VsZWN0U3RtdCB3aXRoIG11bHRp cGxlIFZBTFVFUyByb3dzICovCisJCXNlbGVjdFN0bXQgPSBtYWtlTm9kZShTZWxlY3RTdG10KTsK KwkJc2VsZWN0U3RtdC0+dmFsdWVzTGlzdHMgPSB2YWx1ZXNMaXN0czsKKwkJc3RtdC0+c2VsZWN0 U3RtdCA9IChOb2RlICopIHNlbGVjdFN0bXQ7CisJCXN0bXQtPmNvbHMgPSBjb2xzOworCQlzdG10 LT5zZXRDbGF1c2VMaXN0ID0gTklMOwkvKiBjbGVhciBpdCBzbyB3ZSBkb24ndCBwcm9jZXNzIGFn YWluICovCisJfQorCiAJLyoKIAkgKiBPTiBDT05GTElDVCBETyBVUERBVEUgYW5kIE9OIENPTkZM SUNUIERPIFNFTEVDVCBGT1IgVVBEQVRFL1NIQVJFCiAJICogcmVxdWlyZSBVUERBVEUgcGVybWlz c2lvbiBvbiB0aGUgdGFyZ2V0IHJlbGF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMGZlYTcyNmNkZDUu LjJiZTY5NzQxMWQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU2MSw2ICs1NjEsOCBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByX29wdF9hbGlhcwogJXR5 cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UKICV0eXBl IDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9jb2x1bW5faXRlbQorJXR5cGUg PGxpc3Q+CXNldF9jbGF1c2VfaXRlbSBzZXRfY2xhdXNlX2l0ZW1fbGlzdAorJXR5cGUgPGxpc3Q+ CXNldF9jbGF1c2VfZ3JvdXAgc2V0X2NsYXVzZV9ncm91cF9saXN0CiAKICV0eXBlIDxzdHI+CQln ZW5lcmljX29wdGlvbl9uYW1lCiAldHlwZSA8bm9kZT4JZ2VuZXJpY19vcHRpb25fYXJnCkBAIC0x MzA1MCw2ICsxMzA1MiwzNiBAQCBpbnNlcnRfcmVzdDoKIAkJCQkJJCQtPmNvbHMgPSBOSUw7CiAJ CQkJCSQkLT5zZWxlY3RTdG10ID0gTlVMTDsKIAkJCQl9CisJCQl8IE9WRVJSSURJTkcgb3ZlcnJp ZGVfa2luZCBWQUxVRV9QIFNFVCBzZXRfY2xhdXNlX2xpc3QKKwkJCQl7CisJCQkJCSQkID0gbWFr ZU5vZGUoSW5zZXJ0U3RtdCk7CisJCQkJCSQkLT5jb2xzID0gTklMOworCQkJCQkkJC0+c2VsZWN0 U3RtdCA9IE5VTEw7CisJCQkJCSQkLT5vdmVycmlkZSA9ICQyOworCQkJCQkkJC0+c2V0Q2xhdXNl TGlzdCA9IGxpc3RfbWFrZTEoJDUpOworCQkJCX0KKwkJCXwgT1ZFUlJJRElORyBvdmVycmlkZV9r aW5kIFZBTFVFX1AgU0VUIHNldF9jbGF1c2VfZ3JvdXBfbGlzdAorCQkJCXsKKwkJCQkJJCQgPSBt YWtlTm9kZShJbnNlcnRTdG10KTsKKwkJCQkJJCQtPmNvbHMgPSBOSUw7CisJCQkJCSQkLT5zZWxl Y3RTdG10ID0gTlVMTDsKKwkJCQkJJCQtPm92ZXJyaWRlID0gJDI7CisJCQkJCSQkLT5zZXRDbGF1 c2VMaXN0ID0gJDU7CisJCQkJfQorCQkJfCBTRVQgc2V0X2NsYXVzZV9ncm91cF9saXN0CisJCQkJ eworCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOworCQkJCQkkJC0+Y29scyA9IE5JTDsK KwkJCQkJJCQtPnNlbGVjdFN0bXQgPSBOVUxMOworCQkJCQkkJC0+c2V0Q2xhdXNlTGlzdCA9ICQy OworCQkJCX0KKwkJCXwgU0VUIHNldF9jbGF1c2VfbGlzdAorCQkJCXsKKwkJCQkJJCQgPSBtYWtl Tm9kZShJbnNlcnRTdG10KTsKKwkJCQkJJCQtPmNvbHMgPSBOSUw7CisJCQkJCSQkLT5zZWxlY3RT dG10ID0gTlVMTDsKKwkJCQkJJCQtPnNldENsYXVzZUxpc3QgPSBsaXN0X21ha2UxKCQyKTsKKwkJ CQl9CiAJCTsKIAogb3ZlcnJpZGVfa2luZDoKQEAgLTEzMzI2LDYgKzEzMzU4LDM3IEBAIHNldF90 YXJnZXRfbGlzdDoKIAkJCXwgc2V0X3RhcmdldF9saXN0ICcsJyBzZXRfdGFyZ2V0CQl7ICQkID0g bGFwcGVuZCgkMSwkMyk7IH0KIAkJOwogCisvKgorICogR3JhbW1hciBydWxlcyBmb3IgbXVsdGkt cm93IElOU0VSVCAuLi4gU0VUIHN5bnRheAorICogU3VwcG9ydHM6IElOU0VSVCBJTlRPIHRhYmxl IFNFVCAoY29sMT12YWwxLCBjb2wyPXZhbDIpLCAoY29sMT12YWwzLCBjb2wyPXZhbDQpCisgKgor ICogTm90ZTogd2UgdXNlIHNldF9jbGF1c2VfaXRlbSAobm90IHNldF9jbGF1c2UpIHRvIGF2b2lk IGNvbmZsaWN0cyB3aXRoCisgKiB0aGUgbXVsdGktY29sdW1uIGFzc2lnbm1lbnQgc3ludGF4IGlu IFVQREFURTogKGNvbDEsIGNvbDIpID0gKHZhbDEsIHZhbDIpCisgKi8KK3NldF9jbGF1c2VfaXRl bToKKwkJCXNldF90YXJnZXQgJz0nIGFfZXhwcgorCQkJCXsKKwkJCQkJJDEtPnZhbCA9IChOb2Rl ICopICQzOworCQkJCQkkJCA9IGxpc3RfbWFrZTEoJDEpOworCQkJCX0KKwkJOworCitzZXRfY2xh dXNlX2l0ZW1fbGlzdDoKKwkJCXNldF9jbGF1c2VfaXRlbQkJCQkJCQl7ICQkID0gJDE7IH0KKwkJ CXwgc2V0X2NsYXVzZV9pdGVtX2xpc3QgJywnIHNldF9jbGF1c2VfaXRlbQorCQkJCQkJCQkJCQkJ CXsgJCQgPSBsaXN0X2NvbmNhdCgkMSwgJDMpOyB9CisJCTsKKworc2V0X2NsYXVzZV9ncm91cDoK KwkJCScoJyBzZXRfY2xhdXNlX2l0ZW1fbGlzdCAnKScJCQl7ICQkID0gJDI7IH0KKwkJOworCitz ZXRfY2xhdXNlX2dyb3VwX2xpc3Q6CisJCQlzZXRfY2xhdXNlX2dyb3VwCQkJCQkJeyAkJCA9IGxp c3RfbWFrZTEoJDEpOyB9CisJCQl8IHNldF9jbGF1c2VfZ3JvdXBfbGlzdCAnLCcgc2V0X2NsYXVz ZV9ncm91cAorCQkJCQkJCQkJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgogICoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA1MjNk M2YzOWZjNS4uNGMyZGQ5ZTNmY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTQ5MTYsMTAg KzQ5MTYsMTAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIAkvKgog CSAqIENvbXBsZXRlIElOU0VSVCBJTlRPIDx0YWJsZT4gd2l0aCAiKCIgb3IgIlZBTFVFUyIgb3Ig IlNFTEVDVCIgb3IKLQkgKiAiVEFCTEUiIG9yICJERUZBVUxUIFZBTFVFUyIgb3IgIk9WRVJSSURJ TkciCisJICogIlRBQkxFIiBvciAiREVGQVVMVCBWQUxVRVMiIG9yICJPVkVSUklESU5HIiBvciAi U0VUIgogCSAqLwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJJTlNFUlQiLCAiSU5UTyIsIE1hdGNo QW55KSkKLQkJQ09NUExFVEVfV0lUSCgiKCIsICJERUZBVUxUIFZBTFVFUyIsICJTRUxFQ1QiLCAi VEFCTEUiLCAiVkFMVUVTIiwgIk9WRVJSSURJTkciKTsKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJE RUZBVUxUIFZBTFVFUyIsICJTRUxFQ1QiLCAiU0VUIiwgIlRBQkxFIiwgIlZBTFVFUyIsICJPVkVS UklESU5HIik7CiAKIAkvKgogCSAqIENvbXBsZXRlIElOU0VSVCBJTlRPIDx0YWJsZT4gKGF0dHJp YnMpIHdpdGggIlZBTFVFUyIgb3IgIlNFTEVDVCIgb3IKQEAgLTQ5MzUsNyArNDkzNSw3IEBAIG1h dGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJLyogQ29tcGxldGUgYWZ0ZXIg T1ZFUlJJRElORyBjbGF1c2UgKi8KIAllbHNlIGlmIChUYWlsTWF0Y2hlcygiT1ZFUlJJRElORyIs IE1hdGNoQW55LCAiVkFMVUUiKSkKLQkJQ09NUExFVEVfV0lUSCgiU0VMRUNUIiwgIlRBQkxFIiwg IlZBTFVFUyIpOworCQlDT01QTEVURV9XSVRIKCJTRUxFQ1QiLCAiU0VUIiwgIlRBQkxFIiwgIlZB TFVFUyIpOwogCiAJLyogSW5zZXJ0IGFuIG9wZW4gcGFyZW50aGVzaXMgYWZ0ZXIgIlZBTFVFUyIg Ki8KIAllbHNlIGlmIChUYWlsTWF0Y2hlcygiVkFMVUVTIikgJiYgIVRhaWxNYXRjaGVzKCJERUZB VUxUIiwgIlZBTFVFUyIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGRmNDMxMjIwYWM1Li44 MjVlYmFjZTAyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjE5Nyw2ICsyMTk3LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgSW5zZXJ0U3RtdAogCVJldHVybmluZ0NsYXVzZSAqcmV0dXJuaW5nQ2xh dXNlOwkvKiBSRVRVUk5JTkcgY2xhdXNlICovCiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8q IFdJVEggY2xhdXNlICovCiAJT3ZlcnJpZGluZ0tpbmQgb3ZlcnJpZGU7CS8qIE9WRVJSSURJTkcg Y2xhdXNlICovCisJTGlzdAkgICAqc2V0Q2xhdXNlTGlzdDsJLyogU0VUIGNsYXVzZSBsaXN0IChm b3IgSU5TRVJUIC4uLiBTRVQgc3ludGF4KSAqLwogfSBJbnNlcnRTdG10OwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu c2VydC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luc2VydC5vdXQKaW5kZXggNzVi OGRlNzlmY2UuLmQzNmI1MWQ0NTU2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2luc2VydC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnNlcnQub3V0 CkBAIC0xMDk2LDMgKzEwOTYsMjY4IEBAIGluc2VydCBpbnRvIHJldHVybmluZ3dydGVzdCB2YWx1 ZXMgKDIsICdmb28nKSByZXR1cm5pbmcgcmV0dXJuaW5nd3J0ZXN0OwogKDEgcm93KQogCiBkcm9w IHRhYmxlIHJldHVybmluZ3dydGVzdDsKKy0tCistLSBJTlNFUlQgLi4uIFNFVCBzeW50YXggdGVz dHMKKy0tCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0dGVzdCAoCisgICAgaWQgaW50LAorICAgIG5h bWUgdGV4dCwKKyAgICBzYWxhcnkgaW50IGRlZmF1bHQgNTAwMDAsCisgICAgZGVwdCB0ZXh0LAor ICAgIGNyZWF0ZWRfYXQgdGltZXN0YW1wIGRlZmF1bHQgbm93KCkKKyk7CistLSBCYXNpYyBJTlNF UlQgU0VUIHN5bnRheAoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MSwgbmFtZT0n QWxpY2UnLCBzYWxhcnk9NjAwMDAsIGRlcHQ9J0VuZ2luZWVyaW5nJzsKK2luc2VydCBpbnRvIGlu c2VydHNldHRlc3Qgc2V0IG5hbWU9J0JvYicsIGlkPTIsIGRlcHQ9J1NhbGVzJywgc2FsYXJ5PTU1 MDAwOworLS0gSU5TRVJUIFNFVCB3aXRoIERFRkFVTFQga2V5d29yZAoraW5zZXJ0IGludG8gaW5z ZXJ0c2V0dGVzdCBzZXQgaWQ9MywgbmFtZT0nQ2hhcmxpZScsIHNhbGFyeT1ERUZBVUxULCBkZXB0 PSdIUic7CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD00LCBuYW1lPSdEYXZpZCcs IGRlcHQ9J01hcmtldGluZyc7ICAtLSBzYWxhcnkgc2hvdWxkIHVzZSBkZWZhdWx0CistLSBJTlNF UlQgU0VUIHdpdGggTlVMTCB2YWx1ZXMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlk PTUsIG5hbWU9J0V2ZScsIHNhbGFyeT1OVUxMLCBkZXB0PSdGaW5hbmNlJzsKK2luc2VydCBpbnRv IGluc2VydHNldHRlc3Qgc2V0IGlkPTYsIG5hbWU9TlVMTCwgc2FsYXJ5PTcwMDAwLCBkZXB0PSdJ VCc7CistLSBJTlNFUlQgU0VUIHdpdGggZXhwcmVzc2lvbnMKK2luc2VydCBpbnRvIGluc2VydHNl dHRlc3Qgc2V0IGlkPTcsIG5hbWU9J0ZyYW5rJywgc2FsYXJ5PTUwMDAwKzEwMDAwLCBkZXB0PSdF bmdpbmVlcmluZyc7CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD04LCBuYW1lPXVw cGVyKCdncmFjZScpLCBzYWxhcnk9NDUwMDAsIGRlcHQ9bG93ZXIoJ1NBTEVTJyk7CistLSBJTlNF UlQgU0VUIHdpdGggZnVuY3Rpb25zCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD05 LCBuYW1lPWNvbmNhdCgnSm9obicsICcgJywgJ0RvZScpLCBzYWxhcnk9ODAwMDAsIGRlcHQ9J0V4 ZWN1dGl2ZSc7CistLSBJTlNFUlQgU0VUIHdpdGggc3VicXVlcmllcworaW5zZXJ0IGludG8gaW5z ZXJ0c2V0dGVzdCBzZXQgaWQ9MTAsIG5hbWU9J0thdGUnLCBzYWxhcnk9KHNlbGVjdCBtYXgoc2Fs YXJ5KSArIDUwMDAgZnJvbSBpbnNlcnRzZXR0ZXN0KSwgZGVwdD0nRW5naW5lZXJpbmcnOworLS0g SU5TRVJUIFNFVCB3aXRoIGNvbHVtbiBzdWJzZXQgKG90aGVycyBzaG91bGQgYmUgTlVMTCBvciBE RUZBVUxUKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTEsIG5hbWU9J0xhdXJh JzsKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTEyLCBkZXB0PSdTdXBwb3J0JzsK Ky0tIFZlcmlmeSBhbGwgaW5zZXJ0cworc2VsZWN0IGlkLCBuYW1lLCBzYWxhcnksIGRlcHQgZnJv bSBpbnNlcnRzZXR0ZXN0IG9yZGVyIGJ5IGlkOworIGlkIHwgICBuYW1lICAgfCBzYWxhcnkgfCAg ICBkZXB0ICAgICAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgIDEg fCBBbGljZSAgICB8ICA2MDAwMCB8IEVuZ2luZWVyaW5nCisgIDIgfCBCb2IgICAgICB8ICA1NTAw MCB8IFNhbGVzCisgIDMgfCBDaGFybGllICB8ICA1MDAwMCB8IEhSCisgIDQgfCBEYXZpZCAgICB8 ICA1MDAwMCB8IE1hcmtldGluZworICA1IHwgRXZlICAgICAgfCAgICAgICAgfCBGaW5hbmNlCisg IDYgfCAgICAgICAgICB8ICA3MDAwMCB8IElUCisgIDcgfCBGcmFuayAgICB8ICA2MDAwMCB8IEVu Z2luZWVyaW5nCisgIDggfCBHUkFDRSAgICB8ICA0NTAwMCB8IHNhbGVzCisgIDkgfCBKb2huIERv ZSB8ICA4MDAwMCB8IEV4ZWN1dGl2ZQorIDEwIHwgS2F0ZSAgICAgfCAgODUwMDAgfCBFbmdpbmVl cmluZworIDExIHwgTGF1cmEgICAgfCAgNTAwMDAgfCAKKyAxMiB8ICAgICAgICAgIHwgIDUwMDAw IHwgU3VwcG9ydAorKDEyIHJvd3MpCisKKy0tIElOU0VSVCBTRVQgd2l0aCBSRVRVUk5JTkcgY2xh dXNlCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xMywgbmFtZT0nTWlrZScsIHNh bGFyeT05MDAwMCwgZGVwdD0nTWFuYWdlbWVudCcgcmV0dXJuaW5nIGlkLCBuYW1lLCBzYWxhcnks IGRlcHQ7CisgaWQgfCBuYW1lIHwgc2FsYXJ5IHwgICAgZGVwdCAgICAKKy0tLS0rLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIDEzIHwgTWlrZSB8ICA5MDAwMCB8IE1hbmFnZW1lbnQKKygx IHJvdykKKworaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTQsIG5hbWU9J05hbmN5 Jywgc2FsYXJ5PTk1MDAwLCBkZXB0PSdFeGVjdXRpdmUnIHJldHVybmluZyBpZCwgbmFtZSwgc2Fs YXJ5OworIGlkIHwgbmFtZSAgfCBzYWxhcnkgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0KKyAxNCB8 IE5hbmN5IHwgIDk1MDAwCisoMSByb3cpCisKKy0tIElOU0VSVCBTRVQgd2l0aCBPTiBDT05GTElD VCBETyBVUERBVEUKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRwayAoCisgICAgaWQgaW50IHByaW1h cnkga2V5LAorICAgIHZhbHVlIHRleHQsCisgICAgY291bnRlciBpbnQgZGVmYXVsdCAwCispOwor aW5zZXJ0IGludG8gaW5zZXJ0c2V0cGsgc2V0IGlkPTEsIHZhbHVlPSdmaXJzdCcsIGNvdW50ZXI9 MTsKK2luc2VydCBpbnRvIGluc2VydHNldHBrIHNldCBpZD0yLCB2YWx1ZT0nc2Vjb25kJywgY291 bnRlcj0yOworLS0gVGVzdCBPTiBDT05GTElDVCBETyBVUERBVEUgd2l0aCBJTlNFUlQgU0VUCitp bnNlcnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J3VwZGF0ZWQnLCBjb3VudGVy PTEwCisgICAgb24gY29uZmxpY3QgKGlkKSBkbyB1cGRhdGUgc2V0IHZhbHVlPWV4Y2x1ZGVkLnZh bHVlLCBjb3VudGVyPWV4Y2x1ZGVkLmNvdW50ZXI7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBz ZXQgaWQ9MiwgdmFsdWU9J2Fsc28gdXBkYXRlZCcsIGNvdW50ZXI9MjAKKyAgICBvbiBjb25mbGlj dCAoaWQpIGRvIHVwZGF0ZSBzZXQgY291bnRlcj1pbnNlcnRzZXRway5jb3VudGVyICsgZXhjbHVk ZWQuY291bnRlcjsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0cGsgb3JkZXIgYnkgaWQ7CisgaWQg fCAgdmFsdWUgIHwgY291bnRlciAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorICAxIHwgdXBk YXRlZCB8ICAgICAgMTAKKyAgMiB8IHNlY29uZCAgfCAgICAgIDIyCisoMiByb3dzKQorCistLSBU ZXN0IE9OIENPTkZMSUNUIERPIE5PVEhJTkcgd2l0aCBJTlNFUlQgU0VUCitpbnNlcnQgaW50byBp bnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J2lnbm9yZWQnLCBjb3VudGVyPTEwMAorICAgIG9u IGNvbmZsaWN0IChpZCkgZG8gbm90aGluZzsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0cGsgb3Jk ZXIgYnkgaWQ7CisgaWQgfCAgdmFsdWUgIHwgY291bnRlciAKKy0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLQorICAxIHwgdXBkYXRlZCB8ICAgICAgMTAKKyAgMiB8IHNlY29uZCAgfCAgICAgIDIyCiso MiByb3dzKQorCistLSBJTlNFUlQgU0VUIHdpdGggT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgKGZv ciBnZW5lcmF0ZWQgY29sdW1ucykKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRnZW4gKAorICAgIGlk IGludCBnZW5lcmF0ZWQgYWx3YXlzIGFzIGlkZW50aXR5LAorICAgIGRhdGEgdGV4dAorKTsKKy0t IFRoaXMgc2hvdWxkIGZhaWwgKGNhbid0IG92ZXJyaWRlIHdpdGhvdXQgT1ZFUlJJRElORyBjbGF1 c2UpCitpbnNlcnQgaW50byBpbnNlcnRzZXRnZW4gc2V0IGlkPTEwMCwgZGF0YT0ndGVzdCc7CitF UlJPUjogIGNhbm5vdCBpbnNlcnQgYSBub24tREVGQVVMVCB2YWx1ZSBpbnRvIGNvbHVtbiAiaWQi CitERVRBSUw6ICBDb2x1bW4gImlkIiBpcyBhbiBpZGVudGl0eSBjb2x1bW4gZGVmaW5lZCBhcyBH RU5FUkFURUQgQUxXQVlTLgorSElOVDogIFVzZSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSB0byBv dmVycmlkZS4KKy0tIFRoaXMgc2hvdWxkIHdvcmsKK2luc2VydCBpbnRvIGluc2VydHNldGdlbiBv dmVycmlkaW5nIHN5c3RlbSB2YWx1ZSBzZXQgaWQ9MTAwLCBkYXRhPSd0ZXN0JzsKK2luc2VydCBp bnRvIGluc2VydHNldGdlbiBzZXQgZGF0YT0nYXV0by1nZW5lcmF0ZWQnOworc2VsZWN0ICogZnJv bSBpbnNlcnRzZXRnZW4gb3JkZXIgYnkgaWQ7CisgaWQgIHwgICAgICBkYXRhICAgICAgCistLS0t LSstLS0tLS0tLS0tLS0tLS0tCisgICAxIHwgYXV0by1nZW5lcmF0ZWQKKyAxMDAgfCB0ZXN0Ciso MiByb3dzKQorCitkcm9wIHRhYmxlIGluc2VydHNldGdlbjsKKy0tIElOU0VSVCBTRVQgd2l0aCBD SEVDSyBjb25zdHJhaW50cworY3JlYXRlIHRhYmxlIGluc2VydHNldGNoZWNrICgKKyAgICBpZCBp bnQsCisgICAgYWdlIGludCBjaGVjayAoYWdlID49IDAgYW5kIGFnZSA8PSAxNTApLAorICAgIHNj b3JlIGludCBjaGVjayAoc2NvcmUgYmV0d2VlbiAwIGFuZCAxMDApCispOworaW5zZXJ0IGludG8g aW5zZXJ0c2V0Y2hlY2sgc2V0IGlkPTEsIGFnZT0yNSwgc2NvcmU9ODU7CitpbnNlcnQgaW50byBp bnNlcnRzZXRjaGVjayBzZXQgaWQ9MiwgYWdlPTMwLCBzY29yZT05MjsKKy0tIFRoZXNlIHNob3Vs ZCBmYWlsCitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGVjayBzZXQgaWQ9MywgYWdlPS01LCBzY29y ZT01MDsgIC0tIGFnZSBjaGVjayBmYWlscworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAi aW5zZXJ0c2V0Y2hlY2siIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImluc2VydHNldGNoZWNr X2FnZV9jaGVjayIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgzLCAtNSwgNTApLgor aW5zZXJ0IGludG8gaW5zZXJ0c2V0Y2hlY2sgc2V0IGlkPTQsIGFnZT0yNSwgc2NvcmU9MTUwOyAt LSBzY29yZSBjaGVjayBmYWlscworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiaW5zZXJ0 c2V0Y2hlY2siIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImluc2VydHNldGNoZWNrX3Njb3Jl X2NoZWNrIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDQsIDI1LCAxNTApLgorc2Vs ZWN0ICogZnJvbSBpbnNlcnRzZXRjaGVjayBvcmRlciBieSBpZDsKKyBpZCB8IGFnZSB8IHNjb3Jl IAorLS0tLSstLS0tLSstLS0tLS0tCisgIDEgfCAgMjUgfCAgICA4NQorICAyIHwgIDMwIHwgICAg OTIKKygyIHJvd3MpCisKK2Ryb3AgdGFibGUgaW5zZXJ0c2V0Y2hlY2s7CistLSBJTlNFUlQgU0VU IHdpdGggcGFydGl0aW9uZWQgdGFibGVzCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydCAoCisg ICAgaWQgaW50LAorICAgIGNhdGVnb3J5IHRleHQsCisgICAgdmFsdWUgaW50CispIHBhcnRpdGlv biBieSBsaXN0IChjYXRlZ29yeSk7CitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydF9hIHBhcnRp dGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdBJyk7CitjcmVhdGUgdGFibGUg aW5zZXJ0c2V0cGFydF9iIHBhcnRpdGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4g KCdCJyk7CitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydF9jIHBhcnRpdGlvbiBvZiBpbnNlcnRz ZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdDJyk7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwYXJ0IHNl dCBpZD0xLCBjYXRlZ29yeT0nQScsIHZhbHVlPTEwMDsKK2luc2VydCBpbnRvIGluc2VydHNldHBh cnQgc2V0IGlkPTIsIGNhdGVnb3J5PSdCJywgdmFsdWU9MjAwOworaW5zZXJ0IGludG8gaW5zZXJ0 c2V0cGFydCBzZXQgaWQ9MywgY2F0ZWdvcnk9J0MnLCB2YWx1ZT0zMDA7CitpbnNlcnQgaW50byBp bnNlcnRzZXRwYXJ0IHNldCBpZD00LCBjYXRlZ29yeT0nQScsIHZhbHVlPTE1MDsKK3NlbGVjdCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogZnJvbSBpbnNlcnRzZXRwYXJ0IG9yZGVyIGJ5IGlkOworICAg IHRhYmxlb2lkICAgICB8IGlkIHwgY2F0ZWdvcnkgfCB2YWx1ZSAKKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0rLS0tLS0tLS0tLSstLS0tLS0tCisgaW5zZXJ0c2V0cGFydF9hIHwgIDEgfCBBICAgICAg ICB8ICAgMTAwCisgaW5zZXJ0c2V0cGFydF9iIHwgIDIgfCBCICAgICAgICB8ICAgMjAwCisgaW5z ZXJ0c2V0cGFydF9jIHwgIDMgfCBDICAgICAgICB8ICAgMzAwCisgaW5zZXJ0c2V0cGFydF9hIHwg IDQgfCBBICAgICAgICB8ICAgMTUwCisoNCByb3dzKQorCitkcm9wIHRhYmxlIGluc2VydHNldHBh cnQ7CistLSBJTlNFUlQgU0VUIHdpdGggaW5oZXJpdGFuY2UKK2NyZWF0ZSB0YWJsZSBpbnNlcnRz ZXRwYXJlbnQgKAorICAgIGlkIGludCwKKyAgICBwYXJlbnRfY29sIHRleHQKKyk7CitjcmVhdGUg dGFibGUgaW5zZXJ0c2V0Y2hpbGQgKAorICAgIGNoaWxkX2NvbCB0ZXh0CispIGluaGVyaXRzIChp bnNlcnRzZXRwYXJlbnQpOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0cGFyZW50IHNldCBpZD0xLCBw YXJlbnRfY29sPSdwYXJlbnQgZGF0YSc7CitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGlsZCBzZXQg aWQ9MiwgcGFyZW50X2NvbD0nZnJvbSBjaGlsZCcsIGNoaWxkX2NvbD0nY2hpbGQgZGF0YSc7Citz ZWxlY3QgKiBmcm9tIGluc2VydHNldHBhcmVudCBvcmRlciBieSBpZDsKKyBpZCB8IHBhcmVudF9j b2wgIAorLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCBwYXJlbnQgZGF0YQorICAyIHwgZnJvbSBj aGlsZAorKDIgcm93cykKKworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRjaGlsZDsKKyBpZCB8IHBh cmVudF9jb2wgfCBjaGlsZF9jb2wgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisg IDIgfCBmcm9tIGNoaWxkIHwgY2hpbGQgZGF0YQorKDEgcm93KQorCitkcm9wIHRhYmxlIGluc2Vy dHNldGNoaWxkOworZHJvcCB0YWJsZSBpbnNlcnRzZXRwYXJlbnQ7CistLSBJTlNFUlQgU0VUIGVy cm9yIGNhc2VzCistLSBEdXBsaWNhdGUgY29sdW1uIG5hbWVzIChzaG91bGQgZmFpbCkKK2luc2Vy dCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTE1LCBuYW1lPSdUZXN0JywgaWQ9MTY7CitFUlJP UjogIGNvbHVtbiAiaWQiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQorTElORSAxOiBpbnNlcnQg aW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xNSwgbmFtZT0nVGVzdCcsIGlkPTE2OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IE5vbi1leGlzdGVudCBjb2x1bW4gKHNob3VsZCBmYWlsKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0 dGVzdCBzZXQgaWQ9MTUsIG5vbmV4aXN0ZW50PSd2YWx1ZSc7CitFUlJPUjogIGNvbHVtbiAibm9u ZXhpc3RlbnQiIG9mIHJlbGF0aW9uICJpbnNlcnRzZXR0ZXN0IiBkb2VzIG5vdCBleGlzdAorTElO RSAxOiBpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xNSwgbm9uZXhpc3RlbnQ9J3Zh bHVlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IFR5cGUgbWlzbWF0Y2ggKHNob3VsZCBmYWlsKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBz ZXQgaWQ9J25vdCBhIG51bWJlcicsIG5hbWU9J1Rlc3QnOworRVJST1I6ICBpbnZhbGlkIGlucHV0 IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAibm90IGEgbnVtYmVyIgorTElORSAxOiBpbnNlcnQg aW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0nbm90IGEgbnVtYmVyJywgbmFtZT0nVGVzdCcuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gSU5TRVJUIFNF VCB3aXRoIENURQord2l0aCBuZXdfdmFsdWVzIGFzICgKKyAgICBzZWxlY3QgMTUgYXMgbmV3X2lk LCAnT2xpdmVyJyBhcyBuZXdfbmFtZSwgODUwMDAgYXMgbmV3X3NhbGFyeQorKQoraW5zZXJ0IGlu dG8gaW5zZXJ0c2V0dGVzdAorc2VsZWN0IG5ld19pZCwgbmV3X25hbWUsIG5ld19zYWxhcnksICdT YWxlcycgZnJvbSBuZXdfdmFsdWVzOworLS0gVmVyaWZ5IENURSBpbnNlcnQgd29ya2VkIChub3Qg dXNpbmcgU0VUIHN5bnRheCwgYnV0IGZvciBjb21wbGV0ZW5lc3MpCitzZWxlY3QgaWQsIG5hbWUs IHNhbGFyeSwgZGVwdCBmcm9tIGluc2VydHNldHRlc3Qgd2hlcmUgaWQgPSAxNTsKKyBpZCB8ICBu YW1lICB8IHNhbGFyeSB8IGRlcHQgIAorLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisg MTUgfCBPbGl2ZXIgfCAgODUwMDAgfCBTYWxlcworKDEgcm93KQorCistLSBNdWx0aS1yb3cgSU5T RVJUIFNFVCBzeW50YXgKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRtdWx0aSAoCisgICAgYzEgaW50 LAorICAgIGMyIGludCwKKyAgICBjMyBpbnQKKyk7CistLSBCYXNpYyBtdWx0aS1yb3cgd2l0aCBz YW1lIGNvbHVtbiBvcmRlcgoraW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xLCBj Mj0yLCBjMz0zKSwgKGMxPTQsIGMyPTUsIGMzPTYpOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRt dWx0aSBvcmRlciBieSBjMTsKKyBjMSB8IGMyIHwgYzMgCistLS0tKy0tLS0rLS0tLQorICAxIHwg IDIgfCAgMworICA0IHwgIDUgfCAgNgorKDIgcm93cykKKworLS0gTXVsdGktcm93IHdpdGggZGlm ZmVyZW50IGNvbHVtbiBvcmRlcnMgKHRlc3QgYnVnIGZpeCkKKy0tIFRoaXMgdGVzdHMgdGhhdCBj b2x1bW4tdmFsdWUgbWF0Y2hpbmcgd29ya3MgY29ycmVjdGx5IGFjcm9zcyByb3dzCitpbnNlcnQg aW50byBpbnNlcnRzZXRtdWx0aSBzZXQgKGMyPTIwLCBjMT0xMCwgYzM9MzApLCAoYzE9NDAsIGMz PTYwLCBjMj01MCksIChjMz05MCwgYzI9ODAsIGMxPTcwKTsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0 c2V0bXVsdGkgb3JkZXIgYnkgYzE7CisgYzEgfCBjMiB8IGMzIAorLS0tLSstLS0tKy0tLS0KKyAg MSB8ICAyIHwgIDMKKyAgNCB8ICA1IHwgIDYKKyAxMCB8IDIwIHwgMzAKKyA0MCB8IDUwIHwgNjAK KyA3MCB8IDgwIHwgOTAKKyg1IHJvd3MpCisKKy0tIE11bHRpLXJvdyB3aXRoIG1peGVkIGV4cHJl c3Npb25zCitpbnNlcnQgaW50byBpbnNlcnRzZXRtdWx0aSBzZXQgKGMxPTEwMCwgYzI9MjAwLCBj Mz0zMDApLCAoYzI9NTAwLCBjMT00MDAsIGMzPTYwMCk7CitzZWxlY3QgKiBmcm9tIGluc2VydHNl dG11bHRpIG9yZGVyIGJ5IGMxOworIGMxICB8IGMyICB8IGMzICAKKy0tLS0tKy0tLS0tKy0tLS0t CisgICAxIHwgICAyIHwgICAzCisgICA0IHwgICA1IHwgICA2CisgIDEwIHwgIDIwIHwgIDMwCisg IDQwIHwgIDUwIHwgIDYwCisgIDcwIHwgIDgwIHwgIDkwCisgMTAwIHwgMjAwIHwgMzAwCisgNDAw IHwgNTAwIHwgNjAwCisoNyByb3dzKQorCistLSBFcnJvciBjYXNlOiByb3dzIG11c3QgaGF2ZSBz YW1lIGNvbHVtbnMKK2luc2VydCBpbnRvIGluc2VydHNldG11bHRpIHNldCAoYzE9MSwgYzI9Miks IChjMT0zLCBjMj00LCBjMz01KTsKK0VSUk9SOiAgSU5TRVJUIC4uLiBTRVQgcm93cyBtdXN0IGhh dmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNvbHVtbnMKK0hJTlQ6ICBGaXJzdCByb3cgaGFzIDIgY29s dW1ucywgYnV0IHRoaXMgcm93IGhhcyAzIGNvbHVtbnMuCistLSBFcnJvciBjYXNlOiBzdWJzZXF1 ZW50IHJvdyBtaXNzaW5nIGNvbHVtbiBmcm9tIGZpcnN0IHJvdworaW5zZXJ0IGludG8gaW5zZXJ0 c2V0bXVsdGkgc2V0IChjMT0xLCBjMj0yLCBjMz0zKSwgKGMxPTQsIGMyPTUpOworRVJST1I6ICBJ TlNFUlQgLi4uIFNFVCByb3dzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1ucwor SElOVDogIEZpcnN0IHJvdyBoYXMgMyBjb2x1bW5zLCBidXQgdGhpcyByb3cgaGFzIDIgY29sdW1u cy4KKy0tIENsZWFudXAKK2Ryb3AgdGFibGUgaW5zZXJ0c2V0dGVzdDsKK2Ryb3AgdGFibGUgaW5z ZXJ0c2V0cGs7Citkcm9wIHRhYmxlIGluc2VydHNldG11bHRpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvaW5zZXJ0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luc2VydC5z cWwKaW5kZXggMmIwODZlZWI2ZDcuLjI2MWJjZTQ5NGI4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9pbnNlcnQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luc2VydC5z cWwKQEAgLTY3NCwzICs2NzQsMTk3IEBAIGFsdGVyIHRhYmxlIHJldHVybmluZ3dydGVzdDIgZHJv cCBjOwogYWx0ZXIgdGFibGUgcmV0dXJuaW5nd3J0ZXN0IGF0dGFjaCBwYXJ0aXRpb24gcmV0dXJu aW5nd3J0ZXN0MiBmb3IgdmFsdWVzIGluICgyKTsKIGluc2VydCBpbnRvIHJldHVybmluZ3dydGVz dCB2YWx1ZXMgKDIsICdmb28nKSByZXR1cm5pbmcgcmV0dXJuaW5nd3J0ZXN0OwogZHJvcCB0YWJs ZSByZXR1cm5pbmd3cnRlc3Q7CisKKy0tCistLSBJTlNFUlQgLi4uIFNFVCBzeW50YXggdGVzdHMK Ky0tCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0dGVzdCAoCisgICAgaWQgaW50LAorICAgIG5hbWUg dGV4dCwKKyAgICBzYWxhcnkgaW50IGRlZmF1bHQgNTAwMDAsCisgICAgZGVwdCB0ZXh0LAorICAg IGNyZWF0ZWRfYXQgdGltZXN0YW1wIGRlZmF1bHQgbm93KCkKKyk7CisKKy0tIEJhc2ljIElOU0VS VCBTRVQgc3ludGF4CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xLCBuYW1lPSdB bGljZScsIHNhbGFyeT02MDAwMCwgZGVwdD0nRW5naW5lZXJpbmcnOworaW5zZXJ0IGludG8gaW5z ZXJ0c2V0dGVzdCBzZXQgbmFtZT0nQm9iJywgaWQ9MiwgZGVwdD0nU2FsZXMnLCBzYWxhcnk9NTUw MDA7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBERUZBVUxUIGtleXdvcmQKK2luc2VydCBpbnRvIGlu c2VydHNldHRlc3Qgc2V0IGlkPTMsIG5hbWU9J0NoYXJsaWUnLCBzYWxhcnk9REVGQVVMVCwgZGVw dD0nSFInOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9NCwgbmFtZT0nRGF2aWQn LCBkZXB0PSdNYXJrZXRpbmcnOyAgLS0gc2FsYXJ5IHNob3VsZCB1c2UgZGVmYXVsdAorCistLSBJ TlNFUlQgU0VUIHdpdGggTlVMTCB2YWx1ZXMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0 IGlkPTUsIG5hbWU9J0V2ZScsIHNhbGFyeT1OVUxMLCBkZXB0PSdGaW5hbmNlJzsKK2luc2VydCBp bnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTYsIG5hbWU9TlVMTCwgc2FsYXJ5PTcwMDAwLCBkZXB0 PSdJVCc7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBleHByZXNzaW9ucworaW5zZXJ0IGludG8gaW5z ZXJ0c2V0dGVzdCBzZXQgaWQ9NywgbmFtZT0nRnJhbmsnLCBzYWxhcnk9NTAwMDArMTAwMDAsIGRl cHQ9J0VuZ2luZWVyaW5nJzsKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTgsIG5h bWU9dXBwZXIoJ2dyYWNlJyksIHNhbGFyeT00NTAwMCwgZGVwdD1sb3dlcignU0FMRVMnKTsKKwor LS0gSU5TRVJUIFNFVCB3aXRoIGZ1bmN0aW9ucworaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBz ZXQgaWQ9OSwgbmFtZT1jb25jYXQoJ0pvaG4nLCAnICcsICdEb2UnKSwgc2FsYXJ5PTgwMDAwLCBk ZXB0PSdFeGVjdXRpdmUnOworCistLSBJTlNFUlQgU0VUIHdpdGggc3VicXVlcmllcworaW5zZXJ0 IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTAsIG5hbWU9J0thdGUnLCBzYWxhcnk9KHNlbGVj dCBtYXgoc2FsYXJ5KSArIDUwMDAgZnJvbSBpbnNlcnRzZXR0ZXN0KSwgZGVwdD0nRW5naW5lZXJp bmcnOworCistLSBJTlNFUlQgU0VUIHdpdGggY29sdW1uIHN1YnNldCAob3RoZXJzIHNob3VsZCBi ZSBOVUxMIG9yIERFRkFVTFQpCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xMSwg bmFtZT0nTGF1cmEnOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTIsIGRlcHQ9 J1N1cHBvcnQnOworCistLSBWZXJpZnkgYWxsIGluc2VydHMKK3NlbGVjdCBpZCwgbmFtZSwgc2Fs YXJ5LCBkZXB0IGZyb20gaW5zZXJ0c2V0dGVzdCBvcmRlciBieSBpZDsKKworLS0gSU5TRVJUIFNF VCB3aXRoIFJFVFVSTklORyBjbGF1c2UKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlk PTEzLCBuYW1lPSdNaWtlJywgc2FsYXJ5PTkwMDAwLCBkZXB0PSdNYW5hZ2VtZW50JyByZXR1cm5p bmcgaWQsIG5hbWUsIHNhbGFyeSwgZGVwdDsKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0 IGlkPTE0LCBuYW1lPSdOYW5jeScsIHNhbGFyeT05NTAwMCwgZGVwdD0nRXhlY3V0aXZlJyByZXR1 cm5pbmcgaWQsIG5hbWUsIHNhbGFyeTsKKworLS0gSU5TRVJUIFNFVCB3aXRoIE9OIENPTkZMSUNU IERPIFVQREFURQorY3JlYXRlIHRhYmxlIGluc2VydHNldHBrICgKKyAgICBpZCBpbnQgcHJpbWFy eSBrZXksCisgICAgdmFsdWUgdGV4dCwKKyAgICBjb3VudGVyIGludCBkZWZhdWx0IDAKKyk7CisK K2luc2VydCBpbnRvIGluc2VydHNldHBrIHNldCBpZD0xLCB2YWx1ZT0nZmlyc3QnLCBjb3VudGVy PTE7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9MiwgdmFsdWU9J3NlY29uZCcsIGNv dW50ZXI9MjsKKworLS0gVGVzdCBPTiBDT05GTElDVCBETyBVUERBVEUgd2l0aCBJTlNFUlQgU0VU CitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J3VwZGF0ZWQnLCBjb3Vu dGVyPTEwCisgICAgb24gY29uZmxpY3QgKGlkKSBkbyB1cGRhdGUgc2V0IHZhbHVlPWV4Y2x1ZGVk LnZhbHVlLCBjb3VudGVyPWV4Y2x1ZGVkLmNvdW50ZXI7CisKK2luc2VydCBpbnRvIGluc2VydHNl dHBrIHNldCBpZD0yLCB2YWx1ZT0nYWxzbyB1cGRhdGVkJywgY291bnRlcj0yMAorICAgIG9uIGNv bmZsaWN0IChpZCkgZG8gdXBkYXRlIHNldCBjb3VudGVyPWluc2VydHNldHBrLmNvdW50ZXIgKyBl eGNsdWRlZC5jb3VudGVyOworCitzZWxlY3QgKiBmcm9tIGluc2VydHNldHBrIG9yZGVyIGJ5IGlk OworCistLSBUZXN0IE9OIENPTkZMSUNUIERPIE5PVEhJTkcgd2l0aCBJTlNFUlQgU0VUCitpbnNl cnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J2lnbm9yZWQnLCBjb3VudGVyPTEw MAorICAgIG9uIGNvbmZsaWN0IChpZCkgZG8gbm90aGluZzsKKworc2VsZWN0ICogZnJvbSBpbnNl cnRzZXRwayBvcmRlciBieSBpZDsKKworLS0gSU5TRVJUIFNFVCB3aXRoIE9WRVJSSURJTkcgU1lT VEVNIFZBTFVFIChmb3IgZ2VuZXJhdGVkIGNvbHVtbnMpCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0 Z2VuICgKKyAgICBpZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyBpZGVudGl0eSwKKyAgICBkYXRh IHRleHQKKyk7CisKKy0tIFRoaXMgc2hvdWxkIGZhaWwgKGNhbid0IG92ZXJyaWRlIHdpdGhvdXQg T1ZFUlJJRElORyBjbGF1c2UpCitpbnNlcnQgaW50byBpbnNlcnRzZXRnZW4gc2V0IGlkPTEwMCwg ZGF0YT0ndGVzdCc7CisKKy0tIFRoaXMgc2hvdWxkIHdvcmsKK2luc2VydCBpbnRvIGluc2VydHNl dGdlbiBvdmVycmlkaW5nIHN5c3RlbSB2YWx1ZSBzZXQgaWQ9MTAwLCBkYXRhPSd0ZXN0JzsKK2lu c2VydCBpbnRvIGluc2VydHNldGdlbiBzZXQgZGF0YT0nYXV0by1nZW5lcmF0ZWQnOworCitzZWxl Y3QgKiBmcm9tIGluc2VydHNldGdlbiBvcmRlciBieSBpZDsKKworZHJvcCB0YWJsZSBpbnNlcnRz ZXRnZW47CisKKy0tIElOU0VSVCBTRVQgd2l0aCBDSEVDSyBjb25zdHJhaW50cworY3JlYXRlIHRh YmxlIGluc2VydHNldGNoZWNrICgKKyAgICBpZCBpbnQsCisgICAgYWdlIGludCBjaGVjayAoYWdl ID49IDAgYW5kIGFnZSA8PSAxNTApLAorICAgIHNjb3JlIGludCBjaGVjayAoc2NvcmUgYmV0d2Vl biAwIGFuZCAxMDApCispOworCitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGVjayBzZXQgaWQ9MSwg YWdlPTI1LCBzY29yZT04NTsKK2luc2VydCBpbnRvIGluc2VydHNldGNoZWNrIHNldCBpZD0yLCBh Z2U9MzAsIHNjb3JlPTkyOworCistLSBUaGVzZSBzaG91bGQgZmFpbAoraW5zZXJ0IGludG8gaW5z ZXJ0c2V0Y2hlY2sgc2V0IGlkPTMsIGFnZT0tNSwgc2NvcmU9NTA7ICAtLSBhZ2UgY2hlY2sgZmFp bHMKK2luc2VydCBpbnRvIGluc2VydHNldGNoZWNrIHNldCBpZD00LCBhZ2U9MjUsIHNjb3JlPTE1 MDsgLS0gc2NvcmUgY2hlY2sgZmFpbHMKKworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRjaGVjayBv cmRlciBieSBpZDsKKworZHJvcCB0YWJsZSBpbnNlcnRzZXRjaGVjazsKKworLS0gSU5TRVJUIFNF VCB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlcworY3JlYXRlIHRhYmxlIGluc2VydHNldHBhcnQgKAor ICAgIGlkIGludCwKKyAgICBjYXRlZ29yeSB0ZXh0LAorICAgIHZhbHVlIGludAorKSBwYXJ0aXRp b24gYnkgbGlzdCAoY2F0ZWdvcnkpOworCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydF9hIHBh cnRpdGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdBJyk7CitjcmVhdGUgdGFi bGUgaW5zZXJ0c2V0cGFydF9iIHBhcnRpdGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2YWx1ZXMg aW4gKCdCJyk7CitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydF9jIHBhcnRpdGlvbiBvZiBpbnNl cnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdDJyk7CisKK2luc2VydCBpbnRvIGluc2VydHNldHBh cnQgc2V0IGlkPTEsIGNhdGVnb3J5PSdBJywgdmFsdWU9MTAwOworaW5zZXJ0IGludG8gaW5zZXJ0 c2V0cGFydCBzZXQgaWQ9MiwgY2F0ZWdvcnk9J0InLCB2YWx1ZT0yMDA7CitpbnNlcnQgaW50byBp bnNlcnRzZXRwYXJ0IHNldCBpZD0zLCBjYXRlZ29yeT0nQycsIHZhbHVlPTMwMDsKK2luc2VydCBp bnRvIGluc2VydHNldHBhcnQgc2V0IGlkPTQsIGNhdGVnb3J5PSdBJywgdmFsdWU9MTUwOworCitz ZWxlY3QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIGZyb20gaW5zZXJ0c2V0cGFydCBvcmRlciBieSBp ZDsKKworZHJvcCB0YWJsZSBpbnNlcnRzZXRwYXJ0OworCistLSBJTlNFUlQgU0VUIHdpdGggaW5o ZXJpdGFuY2UKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRwYXJlbnQgKAorICAgIGlkIGludCwKKyAg ICBwYXJlbnRfY29sIHRleHQKKyk7CisKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRjaGlsZCAoCisg ICAgY2hpbGRfY29sIHRleHQKKykgaW5oZXJpdHMgKGluc2VydHNldHBhcmVudCk7CisKK2luc2Vy dCBpbnRvIGluc2VydHNldHBhcmVudCBzZXQgaWQ9MSwgcGFyZW50X2NvbD0ncGFyZW50IGRhdGEn OworaW5zZXJ0IGludG8gaW5zZXJ0c2V0Y2hpbGQgc2V0IGlkPTIsIHBhcmVudF9jb2w9J2Zyb20g Y2hpbGQnLCBjaGlsZF9jb2w9J2NoaWxkIGRhdGEnOworCitzZWxlY3QgKiBmcm9tIGluc2VydHNl dHBhcmVudCBvcmRlciBieSBpZDsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0Y2hpbGQ7CisKK2Ry b3AgdGFibGUgaW5zZXJ0c2V0Y2hpbGQ7Citkcm9wIHRhYmxlIGluc2VydHNldHBhcmVudDsKKwor LS0gSU5TRVJUIFNFVCBlcnJvciBjYXNlcworLS0gRHVwbGljYXRlIGNvbHVtbiBuYW1lcyAoc2hv dWxkIGZhaWwpCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xNSwgbmFtZT0nVGVz dCcsIGlkPTE2OworCistLSBOb24tZXhpc3RlbnQgY29sdW1uIChzaG91bGQgZmFpbCkKK2luc2Vy dCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTE1LCBub25leGlzdGVudD0ndmFsdWUnOworCist LSBUeXBlIG1pc21hdGNoIChzaG91bGQgZmFpbCkKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qg c2V0IGlkPSdub3QgYSBudW1iZXInLCBuYW1lPSdUZXN0JzsKKworLS0gSU5TRVJUIFNFVCB3aXRo IENURQord2l0aCBuZXdfdmFsdWVzIGFzICgKKyAgICBzZWxlY3QgMTUgYXMgbmV3X2lkLCAnT2xp dmVyJyBhcyBuZXdfbmFtZSwgODUwMDAgYXMgbmV3X3NhbGFyeQorKQoraW5zZXJ0IGludG8gaW5z ZXJ0c2V0dGVzdAorc2VsZWN0IG5ld19pZCwgbmV3X25hbWUsIG5ld19zYWxhcnksICdTYWxlcycg ZnJvbSBuZXdfdmFsdWVzOworCistLSBWZXJpZnkgQ1RFIGluc2VydCB3b3JrZWQgKG5vdCB1c2lu ZyBTRVQgc3ludGF4LCBidXQgZm9yIGNvbXBsZXRlbmVzcykKK3NlbGVjdCBpZCwgbmFtZSwgc2Fs YXJ5LCBkZXB0IGZyb20gaW5zZXJ0c2V0dGVzdCB3aGVyZSBpZCA9IDE1OworCistLSBNdWx0aS1y b3cgSU5TRVJUIFNFVCBzeW50YXgKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRtdWx0aSAoCisgICAg YzEgaW50LAorICAgIGMyIGludCwKKyAgICBjMyBpbnQKKyk7CisKKy0tIEJhc2ljIG11bHRpLXJv dyB3aXRoIHNhbWUgY29sdW1uIG9yZGVyCitpbnNlcnQgaW50byBpbnNlcnRzZXRtdWx0aSBzZXQg KGMxPTEsIGMyPTIsIGMzPTMpLCAoYzE9NCwgYzI9NSwgYzM9Nik7CitzZWxlY3QgKiBmcm9tIGlu c2VydHNldG11bHRpIG9yZGVyIGJ5IGMxOworCistLSBNdWx0aS1yb3cgd2l0aCBkaWZmZXJlbnQg Y29sdW1uIG9yZGVycyAodGVzdCBidWcgZml4KQorLS0gVGhpcyB0ZXN0cyB0aGF0IGNvbHVtbi12 YWx1ZSBtYXRjaGluZyB3b3JrcyBjb3JyZWN0bHkgYWNyb3NzIHJvd3MKK2luc2VydCBpbnRvIGlu c2VydHNldG11bHRpIHNldCAoYzI9MjAsIGMxPTEwLCBjMz0zMCksIChjMT00MCwgYzM9NjAsIGMy PTUwKSwgKGMzPTkwLCBjMj04MCwgYzE9NzApOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0 aSBvcmRlciBieSBjMTsKKworLS0gTXVsdGktcm93IHdpdGggbWl4ZWQgZXhwcmVzc2lvbnMKK2lu c2VydCBpbnRvIGluc2VydHNldG11bHRpIHNldCAoYzE9MTAwLCBjMj0yMDAsIGMzPTMwMCksIChj Mj01MDAsIGMxPTQwMCwgYzM9NjAwKTsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0bXVsdGkgb3Jk ZXIgYnkgYzE7CisKKy0tIEVycm9yIGNhc2U6IHJvd3MgbXVzdCBoYXZlIHNhbWUgY29sdW1ucwor aW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xLCBjMj0yKSwgKGMxPTMsIGMyPTQs IGMzPTUpOworCistLSBFcnJvciBjYXNlOiBzdWJzZXF1ZW50IHJvdyBtaXNzaW5nIGNvbHVtbiBm cm9tIGZpcnN0IHJvdworaW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xLCBjMj0y LCBjMz0zKSwgKGMxPTQsIGMyPTUpOworCistLSBDbGVhbnVwCitkcm9wIHRhYmxlIGluc2VydHNl dHRlc3Q7Citkcm9wIHRhYmxlIGluc2VydHNldHBrOworZHJvcCB0YWJsZSBpbnNlcnRzZXRtdWx0 aTsKLS0gCjIuNDcuMwoK --0000000000002ccdb3064e3bd1bd--