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 1waZNt-001tk1-0s for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Jun 2026 13:35: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 1waZNs-00GMHp-0a for pgsql-hackers@arkaria.postgresql.org; Fri, 19 Jun 2026 13:35:48 +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 1waZNr-00GMHh-1a for pgsql-hackers@lists.postgresql.org; Fri, 19 Jun 2026 13:35:47 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1waZNo-0000000196E-41iM for pgsql-hackers@postgresql.org; Fri, 19 Jun 2026 13:35:45 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-4629d80fa08so2099317f8f.3 for ; Fri, 19 Jun 2026 06:35:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781876142; cv=none; d=google.com; s=arc-20240605; b=lFMdi4gFPEF9Dt9JAzPTUyrNmAU/Ko5etIMwnrJOMwXm549okR6WY88NOqQv6uMCVs nO4A5Q1EFZdz1/YvD/djwi91izaQTZkM3V+C2zumd/sMc/sOfUOktJQbPyFXu6sqnNe/ 52IwQIkTI2K/fdMMcTTg2TiFBdaOYKwB5lAYcXv9e1dg0u251qg1pkBUAmJKdHtAk3ds 6enLORNYUMnGaU4qhQ/L2j6Wafpg7wVfL9u5/v/NpTsMdSP3J2kZI1WGxOuWCcg6ld0z 6hfCR/lHBpdGUuFRDQL8y0uvaK9XesUOJyVUBLaukoktbi1eWADqDkF2X1oYH5gRT8OZ 35eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YKHm+VHkz5NCBfAtlTHIkt93UkaKd8dXz5f9uAbd9vs=; fh=GNO4PHwY7Hv0QaxBXExNDdOzOm+haG++OuusUx6g/3w=; b=TESkndv+XVmZ9MlUlC3HHhIXSBczUQ/vgyRWHQ/0wSc3FJxEiLFl5oQVZHatAADTXc 5GK5vgP82Up+j8ljIGt/AjQ5yklhqVDMnYDh33yS+pQw/FoxeLLIOkzMOBrjOvoCVuF/ nskLF6Yqs+Fm9GkaPEqWYGRekz3lkJeMR9GcB9EuaINJB819GOomLVERhxuBYdJdszjY wR44Qt3veK+w0clPXI7kaDF/z4XWXLo41/DovyNP9/dp/lCOzzzDfI5ij851MB6i9vvH sueIcX0b049t0Mn3lcD9wg4du5zLjJokbOGsjdLuCIrBZcJw736I/Z+Y7DxgZQuHgtjB w4Dg==; darn=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=1781876142; x=1782480942; 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=YKHm+VHkz5NCBfAtlTHIkt93UkaKd8dXz5f9uAbd9vs=; b=AL540CCgEEqbGYYy+MN4LZ8OwFGYz64Z1Ytql+sHj+9rUCjhvoRHp90YXN7TUbW+7q 6s7L0DrLYyEqk7h2v5SOibqI37RRSEDyU8TiaPsorHH4H/MqjmYBg7PaqG90XobvQQ9W l4ljCwiPRCIWFZTvICbeg25Ee+DYVEFQhoAup5GeLXiNiUGN1BiW2rHg9JgZZI4XlomS drKGjC1hOT01Kp2cNdvpKwseYbvSpu6W41xdmU1GTPYrVL2QW3RiT9Tzf2kUP3upKz4n EJDT/fH+fvwA4EP0AwxkXS2H4qlqxeT4g0lnINSZl/zUshsU3uUvMz2rJupZNXL6KGsz GL6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781876142; x=1782480942; 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=YKHm+VHkz5NCBfAtlTHIkt93UkaKd8dXz5f9uAbd9vs=; b=F22PR36XcGqRV8/w6l5e8Ritj+6E3RebZgFhR1s7LESHSg5LL4wCNukdIyM8YWYQFm 7cY6DOxXoiFp8VTPjwAzOo21ZFy6SfG43wgnBSK99SUdFPHQ4dFTo90OAqsOBlzY5C5Y QYleHFlcxayO5vqLF7/VLo9g6E3zy9buyXANFZ+HKQ1UuJwlNDEKtvIB4GkD9a9oHb0P jdr5fvT3vDLlvcafgo5E5lYLy/nnW6adOc9xEp6f4K/rRiG9VLSewxUuu9+PZinzjSCy XfKIXfmKU2wys73Jx8/txzp5vWP04caSlrDC1Ysd4C1QwPmWPg5JvZqIOpw5x3fvD1FE uc7A== X-Gm-Message-State: AOJu0Yw+/333mIpvG3mxhSzZ9SIUUI4IYew/nA0B8ffQvBen+kyOh6Uu EypF66OV4/yuzWlw+Zp/uNl9IpKBqPaCQ93BHF4oPwOPWMkmUCB/lk8QOjcbQBlQCUmrEg87ruu aih2ob4ED6RpZL9wPCYVnhREx3BZH6O7AqSjDmImgC1hHKKq8ybFQNUfV X-Gm-Gg: AfdE7cnpYWlUcixXbRdgphi5vNAWSuoQ9BvOAe+Li8kqiQ0aqai5Ukshvh/sri+Im7A Z3SQ3vHHZT27hWz7ksOz0u+qfjPl5Oi40JRDXRzAWkt0r4MhKPJtIj3l8X6ZWBW/LUSvb3i+n4t 1i6M2GZjGBauf6IBxuIsZOQg6h42oWARZdMwtthCPwOQqtMqPuVvhrL7Lz4gBd6uSVEdy3QtHmj bECwIcgNQGzlQkSrOohaDghSikqqhkFLddZHz8fbNW3vkAiQR8nU1RQJiASjG015uwoh9Ss06A= X-Received: by 2002:a5d:6a87:0:b0:45e:f381:cd8a with SMTP id ffacd0b85a97d-46506385716mr4790586f8f.2.1781876141119; Fri, 19 Jun 2026 06:35:41 -0700 (PDT) MIME-Version: 1.0 References: <0238206d-81c9-4bce-acb4-127fbc4a96ac@dunslane.net> <202603301544.utwvuj534m36@alvherre.pgsql> In-Reply-To: From: Triveni N Date: Fri, 19 Jun 2026 19:05:03 +0530 X-Gm-Features: AVVi8CfJKl5FsGQtwaTNpFHl36-Dm0YcwgpbMzDxxBw01HJEUxIVeGn6nWGTqa8 Message-ID: Subject: Fwd: [PATCH] Add support for INSERT ... SET syntax To: pgsql-hackers Cc: Suraj Kharage , alvherre@kurilemu.de, "andrew@dunslane.net" , david.g.johnston@gmail.com, Ajay Pal Content-Type: multipart/mixed; boundary="0000000000006d0be406549b5e84" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006d0be406549b5e84 Content-Type: multipart/alternative; boundary="0000000000006d0be306549b5e82" --0000000000006d0be306549b5e82 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable From: Suraj Kharage Date: Mon, Apr 6, 2026 at 4:13=E2=80=AFPM Subject: Re: [PATCH] Add support for INSERT ... SET syntax To: Ajay Pal Cc: =C3=81lvaro Herrera , Andrew Dunstan < andrew@dunslane.net>, David G. Johnston , PostgreSQL Hackers Hi, Rebased the patch with some documentation changes. Also, added commitfest entry - https://commitfest.postgresql.org/patch/6635= / -- Thanks & Regards, Suraj kharage, enterprisedb.com Hi, Sharing an update on testing. Below are the areas that I=E2=80=99ve covered: **Core syntax** - Basic SET syntax (single row, with and without parentheses) - Column order independence - Multi-row insertion =E2=80=94 SET (col=3Dval, ...), (col=3Dval, ...) synt= ax **Value types** - DEFAULT keyword and implicit defaults (column omission) - Expressions, functions, and subqueries (including deeply nested) - NULL values, array columns, composite types, and domain types **Clauses & advanced features** - RETURNING clause (single and multi-row) - ON CONFLICT DO NOTHING / DO UPDATE - OVERRIDING SYSTEM VALUE - CTE (WITH clause) - EXPLAIN / EXPLAIN ANALYZE **Schema & constraints** - CHECK constraints and column-level privileges - Foreign key constraints (valid and failing cases) - Partitioned tables, table inheritance, and schema-qualified table names - Quoted and reserved keyword column names **Procedural contexts** - PL/pgSQL functions and DO blocks (including multi-row) - Dynamic SQL via EXECUTE with parameters - Prepared statements (PREPARE + EXECUTE) - SAVEPOINTs and rollback behavior **Other** - Updatable views - BEFORE and AFTER INSERT triggers - Negative cases covering syntax errors, constraint violations, and privilege violations Note: Issue reported by Ajay Pal has been resolved in v3 patch. --=20 Warm regards, Triveni --0000000000006d0be306549b5e82 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
= From: Suraj Kharage <suraj.kharage@enterprisedb.com>
Date: Mon, A= pr 6, 2026 at 4:13=E2=80=AFPM
Subject: Re: [PATCH] Add support for INSER= T ... SET syntax
To: Ajay Pal <ajay.pal.k@gmail.com>
Cc: =C3=81lvaro Herrera= <alvherre@kur= ilemu.de>, Andrew Dunstan <andrew@dunslane.net>, David G. Johnston <david.g.johnston= @gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org<= /a>>


Hi,

Sharing an update on testing.

Below are the ar= eas that I=E2=80=99ve covered:

**Core syntax**
- Basic SET syntax= (single row, with and without parentheses)
- Column order independence<= br>- Multi-row insertion =E2=80=94 SET (col=3Dval, ...), (col=3Dval, ...) s= yntax

**Value types**
- DEFAULT keyword and implicit defaults (co= lumn omission)
- Expressions, functions, and subqueries (including deepl= y nested)
- NULL values, array columns, composite types, and domain type= s

**Clauses & advanced features**
- RETURNING clause (single = and multi-row)
- ON CONFLICT DO NOTHING / DO UPDATE
- OVERRIDING SYST= EM VALUE
- CTE (WITH clause)
- EXPLAIN / EXPLAIN ANALYZE

**Sch= ema & constraints**
- CHECK constraints and column-level privileges<= br>- Foreign key constraints (valid and failing cases)
- Partitioned tab= les, table inheritance, and schema-qualified table names
- Quoted and re= served keyword column names

**Procedural contexts**
- PL/pgSQL fu= nctions and DO blocks (including multi-row)
- Dynamic SQL via EXECUTE wi= th parameters
- Prepared statements (PREPARE + EXECUTE)
- SAVEPOINTs = and rollback behavior

**Other**
- Updatable views
- BEFORE and= AFTER INSERT triggers
- Negative cases covering syntax errors, constrai= nt violations, and privilege violations

Note: Issue reported by Ajay= Pal has been resolved in v3 patch.

--
Warm=C2=A0regards,
Triveni
--0000000000006d0be306549b5e82-- --0000000000006d0be406549b5e84 Content-Type: application/x-patch; name="v3-0001-Add-support-for-INSERT-.-SET-syntax.patch" Content-Disposition: attachment; filename="v3-0001-Add-support-for-INSERT-.-SET-syntax.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnn1lf150 RnJvbSBkZDUwODc2ODk5ZjI4MGI0MGQ0NTg3ZDQ3YTI2OTRkYzNmYmI2MGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXJhaiBLaGFyYWdlIDxzdXJhai5raGFyYWdlQGVudGVycHJp c2VkYi5jb20+CkRhdGU6IE1vbiwgNiBBcHIgMjAyNiAxNToyOToyOCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjNdIEFkZCBzdXBwb3J0IGZvciBJTlNFUlQgLi4uIFNFVCBzeW50YXgKClRoaXMgY29t bWl0IGFkZHMgc3VwcG9ydCBmb3IgSU5TRVJUIC4uLiBTRVQgc3ludGF4LCB3aGljaCBhbGxvd3MK c3BlY2lmeWluZyBjb2x1bW4gdmFsdWVzIHVzaW5nIG5hbWVkIGFzc2lnbm1lbnRzIGluc3RlYWQg b2YKcmVxdWlyaW5nIGEgc2VwYXJhdGUgY29sdW1uIGxpc3QgYW5kIFZBTFVFUyBjbGF1c2UuCgpT eW50YXg6CiAgICBJTlNFUlQgSU5UTyB0YWJsZV9uYW1lIFNFVCBjb2x1bW4xPXZhbHVlMSwgY29s dW1uMj12YWx1ZTIsIC4uLjsKClRoaXMgc3ludGF4IHByb3ZpZGVzIGEgbW9yZSBjb252ZW5pZW50 IGFuZCByZWFkYWJsZSBhbHRlcm5hdGl2ZSBmb3IKc2luZ2xlLXJvdyBpbnNlcnRzLCBwYXJ0aWN1 bGFybHkgd2hlbiBvbmx5IHNwZWNpZmljIGNvbHVtbnMgbmVlZCB2YWx1ZXMuCkNvbHVtbnMgbm90 IG1lbnRpb25lZCBpbiB0aGUgU0VUIGNsYXVzZSByZWNlaXZlIHRoZWlyIGRlZmF1bHQgdmFsdWVz IG9yCk5VTEwsIGNvbnNpc3RlbnQgd2l0aCBzdGFuZGFyZCBJTlNFUlQgYmVoYXZpb3IuCgpGZWF0 dXJlcyBzdXBwb3J0ZWQ6Ci0gQmFzaWMgc3ludGF4OiBJTlNFUlQgSU5UTyB0IFNFVCBjb2w9dmFs LCAuLi4KLSBERUZBVUxUIGtleXdvcmQ6IFNFVCBjb2w9REVGQVVMVAotIE5VTEwgdmFsdWVzOiBT RVQgY29sPU5VTEwKLSBFeHByZXNzaW9ucyBhbmQgZnVuY3Rpb25zOiBTRVQgY29sPWV4cHIKLSBT dWJxdWVyaWVzOiBTRVQgY29sPShTRUxFQ1QgLi4uKQotIFJFVFVSTklORyBjbGF1c2U6IFNFVCAu Li4gUkVUVVJOSU5HICoKLSBPTiBDT05GTElDVDogU0VUIC4uLiBPTiBDT05GTElDVCBETyBVUERB VEUvTk9USElORwotIE9WRVJSSURJTkcgU1lTVEVNIFZBTFVFOiBPVkVSUklESU5HIFNZU1RFTSBW QUxVRSBTRVQgLi4uCi0gTXVsdGktcm93IHN5bnRheDogU0VUIChjb2wxPXZhbDEsIGNvbDI9dmFs MiksIChjb2wxPXZhbDMsIGNvbDI9dmFsNCkKLSBTdXBwb3J0IGZvciBkaWZmZXJlbnQgY29sdW1u IHNldHMgaW4gbXVsdGktcm93IGluc2VydHMKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2luc2VydC5z Z21sICAgICAgICAgfCAgODAgKysrKysrLQogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg ICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICB8IDE2 MCArKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgIHwg IDY0ICsrKysrKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgIHwgICA2ICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pbnNlcnQub3V0IHwgMjk4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5zZXJ0LnNxbCAgICAgIHwgMjA3ICsrKysrKysr KysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgODE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9pbnNlcnQuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvaW5zZXJ0LnNnbWwKaW5kZXggMTIxYTllZGNiOTkuLjgxMTFjMDQwY2MyIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2luc2VydC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvaW5zZXJ0LnNnbWwKQEAgLTI0LDcgKzI0LDkgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0 aW9uCiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogSU5TRVJUIElOVE8gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4u Ll0gKSBdCiAgICAgWyBPVkVSUklESU5HIHsgU1lTVEVNIHwgVVNFUiB9IFZBTFVFIF0KLSAgICB7 IERFRkFVTFQgVkFMVUVTIHwgVkFMVUVTICggeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0gKSBbLCAuLi5d IHwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnF1ZXJ5PC9yZXBsYWNlYWJsZT4gfQor ICAgIHsgREVGQVVMVCBWQUxVRVMgfCBWQUxVRVMgKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSApIFss IC4uLl0gfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cXVlcnk8L3JlcGxhY2VhYmxl PiB8CisgICAgICBTRVQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gPSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSB8CisgICAgICBTRVQgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8 IERFRkFVTFQgfSBbLCAuLi5dICkgWywgLi4uXSB9CiAgICAgWyBPTiBDT05GTElDVCBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25mbGljdF90YXJnZXQ8L3JlcGxhY2VhYmxlPiBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25mbGljdF9hY3Rpb248L3JlcGxhY2Vh YmxlPiBdCiAgICAgWyBSRVRVUk5JTkcgWyBXSVRIICggeyBPTEQgfCBORVcgfSBBUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2FsaWFzPC9yZXBsYWNlYWJsZT4gWywgLi4u XSApIF0KICAgICAgICAgICAgICAgICB7ICogfCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X25hbWU8L3JlcGxhY2VhYmxlPiBdIH0gWywgLi4uXSBd CkBAIC02NSw2ICs2NywyOSBAQCBJTlNFUlQgSU5UTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgQVMgPHJlcGxhYwogICAgYXNzb2NpYXRl ZCB3aXRoIHRoZSBleHBsaWNpdCBvciBpbXBsaWNpdCBjb2x1bW4gbGlzdCBsZWZ0LXRvLXJpZ2h0 LgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBBcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgPGxp dGVyYWw+VkFMVUVTPC9saXRlcmFsPiBjbGF1c2UsIHlvdSBjYW4gdXNlIHRoZQorICAgPGxpdGVy YWw+U0VUPC9saXRlcmFsPiBjbGF1c2UgdG8gc3BlY2lmeSBjb2x1bW4gdmFsdWVzIHVzaW5nIG5h bWVkCisgICBhc3NpZ25tZW50cy4gVGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIGhh cyB0aGUgZm9ybQorICAgPGxpdGVyYWw+U0VUIDxyZXBsYWNlYWJsZT5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjwvbGl0ZXJh bD4sCisgICB3aXRoIG11bHRpcGxlIGNvbHVtbiBhc3NpZ25tZW50cyBzZXBhcmF0ZWQgYnkgY29t bWFzLiBUaGlzIHN5bnRheCBpcworICAgcGFydGljdWxhcmx5IGNvbnZlbmllbnQgd2hlbiBpbnNl cnRpbmcgYSBzaW5nbGUgcm93IHdpdGggdmFsdWVzIGZvcgorICAgc3BlY2lmaWMgY29sdW1ucywg YXMgaXQgZWxpbWluYXRlcyB0aGUgbmVlZCB0byBzcGVjaWZ5IGEgc2VwYXJhdGUKKyAgIGNvbHVt biBsaXN0LiBXaGVuIHVzaW5nIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4sIGNvbHVtbnMgbm90IG1l bnRpb25lZAorICAgd2lsbCByZWNlaXZlIHRoZWlyIGRlZmF1bHQgdmFsdWVzIG9yIE5VTEwuIFRo ZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+CisgICBzeW50YXggY2Fubm90IGJlIGNvbWJpbmVkIHdp dGggYW4gZXhwbGljaXQgY29sdW1uIGxpc3QuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEZv ciBtdWx0aS1yb3cgaW5zZXJ0cywgdGhlIDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlIHVz ZXMgcGFyZW50aGVzZXMKKyAgIHRvIGdyb3VwIGVhY2ggcm93J3MgYXNzaWdubWVudHM6CisgICA8 bGl0ZXJhbD5TRVQgKGNvbDE9dmFsMSwgY29sMj12YWwyKSwgKGNvbDE9dmFsMywgY29sMj12YWw0 KTwvbGl0ZXJhbD4uCisgICBFYWNoIHJvdyBjYW4gc3BlY2lmeSBhIGRpZmZlcmVudCBzZXQgb2Yg Y29sdW1uczsgY29sdW1ucyBvbWl0dGVkIGZyb20KKyAgIGEgcGFydGljdWxhciByb3cgd2lsbCBy ZWNlaXZlIHRoZWlyIGRlZmF1bHQgdmFsdWUgb3IgTlVMTC4gQ29sdW1uIG5hbWVzCisgICBhcmUg bWF0Y2hlZCBhY3Jvc3Mgcm93cyBieSBuYW1lIHJhdGhlciB0aGFuIHBvc2l0aW9uLCBzbyB0aGUg b3JkZXIgb2YKKyAgIGFzc2lnbm1lbnRzIHdpdGhpbiBlYWNoIHJvdyBkb2VzIG5vdCBuZWVkIHRv IGJlIGNvbnNpc3RlbnQuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIEVhY2ggY29sdW1uIG5v dCBwcmVzZW50IGluIHRoZSBleHBsaWNpdCBvciBpbXBsaWNpdCBjb2x1bW4gbGlzdCB3aWxsIGJl CiAgICBmaWxsZWQgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIGVpdGhlciBpdHMgZGVjbGFyZWQgZGVm YXVsdCB2YWx1ZQpAQCAtNzM2LDYgKzc2MSw1OSBAQCBJTlNFUlQgSU5UTyBmaWxtcyAoY29kZSwg dGl0bGUsIGRpZCwgZGF0ZV9wcm9kLCBraW5kKSBWQUxVRVMKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAg IDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIFRvIGluc2VydCBhIHNpbmdsZSByb3cgdXNpbmcgdGhl IDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gc3ludGF4OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitJTlNF UlQgSU5UTyBmaWxtcyBTRVQgY29kZT0nVUE1MDInLCB0aXRsZT0nQmFuYW5hcycsIGRpZD0xMDUs CisgICAgZGF0ZV9wcm9kPScxOTcxLTA3LTEzJywga2luZD0nQ29tZWR5JywgbGVuPSc4MiBtaW51 dGVzJzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoaXMg ZXhhbXBsZSB1c2VzIHRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IHN5bnRheCB3aXRoCisgICA8 bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiBmb3Igc29tZSBjb2x1bW5zOgorCis8cHJvZ3JhbWxp c3Rpbmc+CitJTlNFUlQgSU5UTyBmaWxtcyBTRVQgY29kZT0nVF82MDEnLCB0aXRsZT0nWW9qaW1i bycsIGRpZD0xMDYsCisgICAgZGF0ZV9wcm9kPURFRkFVTFQsIGtpbmQ9J0RyYW1hJzsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSA8bGl0ZXJhbD5TRVQ8 L2xpdGVyYWw+IHN5bnRheCBjYW4gYmUgdXNlZCB3aXRoIGV4cHJlc3Npb25zCisgICBhbmQgZnVu Y3Rpb25zOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitJTlNFUlQgSU5UTyBmaWxtcyBTRVQgY29kZT0n SEcxMjAnLCB0aXRsZT11cHBlcigndGhlIGRpbm5lciBnYW1lJyksCisgICAgZGlkPTE0MCwgZGF0 ZV9wcm9kPWN1cnJlbnRfZGF0ZSwga2luZD0nQ29tZWR5JzsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRvIGluc2VydCBtdWx0aXBsZSByb3dzIHVzaW5nIHRo ZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IHN5bnRheCwKKyAgIGVuY2xvc2UgZWFjaCByb3cncyBh c3NpZ25tZW50cyBpbiBwYXJlbnRoZXNlczoKKworPHByb2dyYW1saXN0aW5nPgorSU5TRVJUIElO VE8gZmlsbXMgU0VUCisgICAgKGNvZGU9J0I2NzE3JywgdGl0bGU9J1RhbXBvcG8nLCBkaWQ9MTEw LCBkYXRlX3Byb2Q9JzE5ODUtMDItMTAnLCBraW5kPSdDb21lZHknKSwKKyAgICAoY29kZT0nSEcx MjAnLCB0aXRsZT0nVGhlIERpbm5lciBHYW1lJywgZGlkPTE0MCwgZGF0ZV9wcm9kPURFRkFVTFQs IGtpbmQ9J0NvbWVkeScpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgSW4gbXVsdGktcm93IDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gc3ludGF4LCBlYWNoIHJv dyBjYW4gc3BlY2lmeQorICAgZGlmZmVyZW50IGNvbHVtbnMuIENvbHVtbnMgbm90IHNwZWNpZmll ZCBpbiBhIHJvdyB3aWxsIHVzZSB0aGVpcgorICAgZGVmYXVsdCB2YWx1ZXM6CisKKzxwcm9ncmFt bGlzdGluZz4KK0lOU0VSVCBJTlRPIGZpbG1zIFNFVAorICAgIChjb2RlPSdVQTUwMicsIHRpdGxl PSdCYW5hbmFzJywgZGlkPTEwNSwga2luZD0nQ29tZWR5JywgbGVuPSc4MiBtaW51dGVzJyksCisg ICAgKGNvZGU9J1RfNjAxJywgdGl0bGU9J1lvamltYm8nLCBkaWQ9MTA2LCBraW5kPSdEcmFtYScp OworLS0gVGhlIHNlY29uZCByb3cncyBsZW4gYW5kIGRhdGVfcHJvZCBjb2x1bW5zIHdpbGwgcmVj ZWl2ZSBERUZBVUxUIHZhbHVlcworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCiAgIDxw YXJhPgogICAgVGhpcyBleGFtcGxlIGluc2VydHMgc29tZSByb3dzIGludG8gdGFibGUKICAgIDxz dHJ1Y3RuYW1lPmZpbG1zPC9zdHJ1Y3RuYW1lPiBmcm9tIGEgdGFibGUgPHN0cnVjdG5hbWU+dG1w X2ZpbG1zPC9zdHJ1Y3RuYW1lPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBjMGI4ODBlYzIzMy4u NjE3ODZjMWYzZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC00MzI2LDYgKzQzMjYsOCBAQCBy YXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0 cnVlOwogCQkJCWlmIChXQUxLKHN0bXQtPnNlbGVjdFN0bXQpKQogCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCQlpZiAoV0FMSyhzdG10LT5zZXRDbGF1c2VMaXN0KSkKKwkJCQkJcmV0dXJuIHRydWU7CiAJ CQkJaWYgKFdBTEsoc3RtdC0+b25Db25mbGljdENsYXVzZSkpCiAJCQkJCXJldHVybiB0cnVlOwog CQkJCWlmIChXQUxLKHN0bXQtPnJldHVybmluZ0NsYXVzZSkpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRl eCA4NGRlZWQ5YWFhNi4uMzc2NzNjMDVkNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtNzYsNiAr NzYsOCBAQCBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9o b29rID0gTlVMTDsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtT3B0aW9uYWxTZWxlY3RJbnRvKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNm b3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpOwogc3Rh dGljIFF1ZXJ5ICp0cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0 U3RtdCAqc3RtdCk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1JbnNlcnRTZXRDbGF1c2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBMaXN0ICpzZXRDbGF1c2VMaXN0LAorCQkJCQkJCQkJIExpc3QgKipjb2xz X3AsIExpc3QgKip2YWx1ZXNMaXN0c19wKTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNm b3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25D b25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CiBzdGF0aWMgRm9yUG9ydGlvbk9mRXhw ciAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKQEAgLTY0 NSw2ICs2NDcsMTQ0IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBE ZWxldGVTdG10ICpzdG10KQogCXJldHVybiBxcnk7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1JbnNl cnRTZXRDbGF1c2UgLQorICoJICBUcmFuc2Zvcm0gSU5TRVJUIC4uLiBTRVQgY2xhdXNlIGludG8g Y29sdW1uIGxpc3QgYW5kIFZBTFVFUyBsaXN0cy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGhhbmRs ZXMgYm90aCBzaW5nbGUtcm93IGFuZCBtdWx0aS1yb3cgU0VUIHN5bnRheDoKKyAqICAgU2luZ2xl IHJvdzogSU5TRVJUIElOVE8gdCBTRVQgYzE9MSwgYzI9MgorICogICBNdWx0aS1yb3c6ICBJTlNF UlQgSU5UTyB0IFNFVCAoYzE9MSwgYzI9MiksIChjMT0zLCBjMj00KQorICoKKyAqIFRoZSBmdW5j dGlvbiBzdXBwb3J0cyBkaWZmZXJlbnQgY29sdW1uIHNldHMgYWNyb3NzIHJvd3MuIEZvciBleGFt cGxlOgorICogICBJTlNFUlQgSU5UTyB0IFNFVCAoYzE9MSwgYzI9MiwgYzM9MyksIChjMT00LCBj Mj01KQorICogVGhpcyB3aWxsIGdlbmVyYXRlOgorICogICAtIENvbHVtbiBsaXN0OiBjMSwgYzIs IGMzCisgKiAgIC0gVmFsdWVzOiAoMSwgMiwgMyksICg0LCA1LCBERUZBVUxUKQorICoKKyAqIE1p c3NpbmcgY29sdW1ucyBpbiBhbnkgcm93IGFyZSBmaWxsZWQgd2l0aCBERUZBVUxULgorICovCitz dGF0aWMgdm9pZAordHJhbnNmb3JtSW5zZXJ0U2V0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqc2V0Q2xhdXNlTGlzdCwKKwkJCQkJCSBMaXN0ICoqY29sc19wLCBMaXN0ICoqdmFsdWVz TGlzdHNfcCkKK3sKKwlMaXN0CSAgICphbGxfY29scyA9IE5JTDsJCS8qIExpc3Qgb2YgYWxsIHVu aXF1ZSBjb2x1bW4gbmFtZXMgKi8KKwlMaXN0CSAgICp2YWx1ZXNMaXN0cyA9IE5JTDsKKwlMaXN0 Q2VsbCAgICpvdXRlcl9sYzsKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8qCisJICogRmlyc3QgcGFz czogY29sbGVjdCBhbGwgdW5pcXVlIGNvbHVtbiBuYW1lcyBmcm9tIGFsbCByb3dzLgorCSAqIFdl IG5lZWQgdG8gc2NhbiBhbGwgcm93cyBmaXJzdCB0byBkZXRlcm1pbmUgdGhlIGNvbXBsZXRlIHNl dCBvZiBjb2x1bW5zLgorCSAqIEFsc28gY2hlY2sgZm9yIGR1cGxpY2F0ZSBjb2x1bW5zIHdpdGhp biBlYWNoIHJvdy4KKwkgKi8KKwlmb3JlYWNoKG91dGVyX2xjLCBzZXRDbGF1c2VMaXN0KQorCXsK KwkJTGlzdAkgICAqc2V0X2NsYXVzZSA9IChMaXN0ICopIGxmaXJzdChvdXRlcl9sYyk7CisJCUxp c3QJICAgKnJvd19jb2xzID0gTklMOwkJLyogQ29sdW1ucyBzZWVuIGluIHRoaXMgcm93ICovCisJ CUxpc3RDZWxsICAgKnNldF9sYzsKKworCQlmb3JlYWNoKHNldF9sYywgc2V0X2NsYXVzZSkKKwkJ eworCQkJUmVzVGFyZ2V0ICAqcmVzID0gKFJlc1RhcmdldCAqKSBsZmlyc3Qoc2V0X2xjKTsKKwkJ CWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCQlMaXN0Q2VsbCAgICpjb2xfbGM7CisKKwkJCS8qIENo ZWNrIGZvciBkdXBsaWNhdGUgY29sdW1uIGluIHRoZSBzYW1lIHJvdyAqLworCQkJZm9yZWFjaChj b2xfbGMsIHJvd19jb2xzKQorCQkJeworCQkJCVJlc1RhcmdldCAgKnJvd19jb2wgPSAoUmVzVGFy Z2V0ICopIGxmaXJzdChjb2xfbGMpOworCisJCQkJaWYgKHN0cmNtcChyb3dfY29sLT5uYW1lLCBy ZXMtPm5hbWUpID09IDApCisJCQkJeworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSIsCisJCQkJCQkJCQlyZXMtPm5hbWUpLAorCQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByZXMtPmxvY2F0aW9uKSkpOworCQkJCX0KKwkJ CX0KKworCQkJLyogQWRkIHRvIHRoaXMgcm93J3MgY29sdW1uIGxpc3QgKi8KKwkJCXJvd19jb2xz ID0gbGFwcGVuZChyb3dfY29scywgcmVzKTsKKworCQkJLyogQ2hlY2sgaWYgd2UndmUgYWxyZWFk eSBzZWVuIHRoaXMgY29sdW1uIG5hbWUgYWNyb3NzIGFsbCByb3dzICovCisJCQlmb3JlYWNoKGNv bF9sYywgYWxsX2NvbHMpCisJCQl7CisJCQkJUmVzVGFyZ2V0ICAqZXhpc3RpbmcgPSAoUmVzVGFy Z2V0ICopIGxmaXJzdChjb2xfbGMpOworCisJCQkJaWYgKHN0cmNtcChleGlzdGluZy0+bmFtZSwg cmVzLT5uYW1lKSA9PSAwKQorCQkJCXsKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVhazsK KwkJCQl9CisJCQl9CisKKwkJCS8qIElmIHRoaXMgaXMgYSBuZXcgY29sdW1uIGFjcm9zcyBhbGwg cm93cywgYWRkIGl0IHRvIG91ciBsaXN0ICovCisJCQlpZiAoIWZvdW5kKQorCQkJeworCQkJCVJl c1RhcmdldCAgKmNvbCA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQljb2wtPm5hbWUgPSBy ZXMtPm5hbWU7CisJCQkJY29sLT5pbmRpcmVjdGlvbiA9IHJlcy0+aW5kaXJlY3Rpb247CisJCQkJ Y29sLT52YWwgPSBOVUxMOworCQkJCWNvbC0+bG9jYXRpb24gPSByZXMtPmxvY2F0aW9uOworCQkJ CWFsbF9jb2xzID0gbGFwcGVuZChhbGxfY29scywgY29sKTsKKwkJCX0KKwkJfQorCX0KKworCS8q CisJICogU2Vjb25kIHBhc3M6IGZvciBlYWNoIHJvdywgY3JlYXRlIGEgdmFsdWVzIGxpc3QgbWF0 Y2hpbmcgdGhlIGNvbHVtbiBvcmRlcgorCSAqIGZyb20gYWxsX2NvbHMuIFVzZSBERUZBVUxUIGZv ciBhbnkgY29sdW1ucyBub3QgcHJlc2VudCBpbiB0aGlzIHJvdy4KKwkgKi8KKwlmb3JlYWNoKG91 dGVyX2xjLCBzZXRDbGF1c2VMaXN0KQorCXsKKwkJTGlzdAkgICAqc2V0X2NsYXVzZSA9IChMaXN0 ICopIGxmaXJzdChvdXRlcl9sYyk7CisJCUxpc3QJICAgKnZhbHMgPSBOSUw7CisKKwkJLyogRm9y IGVhY2ggY29sdW1uIGluIHRoZSBjb21wbGV0ZSBjb2x1bW4gbGlzdCAqLworCQlmb3JlYWNoKGxj LCBhbGxfY29scykKKwkJeworCQkJUmVzVGFyZ2V0ICAqY29sID0gKFJlc1RhcmdldCAqKSBsZmly c3QobGMpOworCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJCUxpc3RDZWxsICAgKnNldF9sYzsK KworCQkJLyogU2VhcmNoIGZvciB0aGlzIGNvbHVtbiBpbiB0aGUgY3VycmVudCByb3cgKi8KKwkJ CWZvcmVhY2goc2V0X2xjLCBzZXRfY2xhdXNlKQorCQkJeworCQkJCVJlc1RhcmdldCAgKnJlcyA9 IChSZXNUYXJnZXQgKikgbGZpcnN0KHNldF9sYyk7CisKKwkJCQlpZiAoc3RyY21wKGNvbC0+bmFt ZSwgcmVzLT5uYW1lKSA9PSAwKQorCQkJCXsKKwkJCQkJLyogRm91bmQgaXQgLSB1c2UgdGhlIHBy b3ZpZGVkIHZhbHVlICovCisJCQkJCXZhbHMgPSBsYXBwZW5kKHZhbHMsIHJlcy0+dmFsKTsKKwkJ CQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJCS8qCisJCQkg KiBJZiB0aGUgY29sdW1uIGlzIG5vdCBwcmVzZW50IGluIHRoaXMgcm93LCB1c2UgREVGQVVMVC4K KwkJCSAqIENyZWF0ZSBhIFNldFRvRGVmYXVsdCBub2RlIHRvIHJlcHJlc2VudCB0aGUgREVGQVVM VCBrZXl3b3JkLgorCQkJICovCisJCQlpZiAoIWZvdW5kKQorCQkJeworCQkJCVNldFRvRGVmYXVs dCAqZGVmID0gbWFrZU5vZGUoU2V0VG9EZWZhdWx0KTsKKworCQkJCWRlZi0+bG9jYXRpb24gPSAt MTsKKwkJCQl2YWxzID0gbGFwcGVuZCh2YWxzLCBkZWYpOworCQkJfQorCQl9CisKKwkJLyogQWRk IHRoaXMgcm93J3MgdmFsdWVzIHRvIHRoZSB2YWx1ZXNMaXN0cyAqLworCQl2YWx1ZXNMaXN0cyA9 IGxhcHBlbmQodmFsdWVzTGlzdHMsIHZhbHMpOworCX0KKworCS8qIFJldHVybiB0aGUgcmVzdWx0 cyAqLworCSpjb2xzX3AgPSBhbGxfY29sczsKKwkqdmFsdWVzTGlzdHNfcCA9IHZhbHVlc0xpc3Rz OworfQorCiAvKgogICogdHJhbnNmb3JtSW5zZXJ0U3RtdCAtCiAgKgkgIHRyYW5zZm9ybSBhbiBJ bnNlcnQgU3RhdGVtZW50CkBAIC02ODQsNiArODI0LDI2IEBAIHRyYW5zZm9ybUluc2VydFN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KQogCiAJcXJ5LT5vdmVycmlkZSA9 IHN0bXQtPm92ZXJyaWRlOwogCisJLyoKKwkgKiBJZiB3ZSBoYXZlIFNFVCBjbGF1c2UgKElOU0VS VCAuLi4gU0VUIGNvbD12YWwsIC4uLiksIHRyYW5zZm9ybSBpdAorCSAqIGludG8gY29sdW1uIGxp c3QgYW5kIFZBTFVFUyBsaXN0IGJlZm9yZSBmdXJ0aGVyIHByb2Nlc3NpbmcuCisJICovCisJaWYg KHN0bXQtPnNldENsYXVzZUxpc3QgIT0gTklMKQorCXsKKwkJTGlzdAkgICAqY29scyA9IE5JTDsK KwkJTGlzdAkgICAqdmFsdWVzTGlzdHMgPSBOSUw7CisKKwkJLyogVHJhbnNmb3JtIFNFVCBjbGF1 c2UgaW50byBjb2x1bW5zIGFuZCB2YWx1ZXMgKi8KKwkJdHJhbnNmb3JtSW5zZXJ0U2V0Q2xhdXNl KHBzdGF0ZSwgc3RtdC0+c2V0Q2xhdXNlTGlzdCwgJmNvbHMsICZ2YWx1ZXNMaXN0cyk7CisKKwkJ LyogQ3JlYXRlIGEgU2VsZWN0U3RtdCB3aXRoIG11bHRpcGxlIFZBTFVFUyByb3dzICovCisJCXNl bGVjdFN0bXQgPSBtYWtlTm9kZShTZWxlY3RTdG10KTsKKwkJc2VsZWN0U3RtdC0+dmFsdWVzTGlz dHMgPSB2YWx1ZXNMaXN0czsKKwkJc3RtdC0+c2VsZWN0U3RtdCA9IChOb2RlICopIHNlbGVjdFN0 bXQ7CisJCXN0bXQtPmNvbHMgPSBjb2xzOworCQlzdG10LT5zZXRDbGF1c2VMaXN0ID0gTklMOwkv KiBjbGVhciBpdCBzbyB3ZSBkb24ndCBwcm9jZXNzIGFnYWluICovCisJfQorCiAJLyoKIAkgKiBP TiBDT05GTElDVCBETyBVUERBVEUgYW5kIE9OIENPTkZMSUNUIERPIFNFTEVDVCBGT1IgVVBEQVRF L1NIQVJFCiAJICogcmVxdWlyZSBVUERBVEUgcGVybWlzc2lvbiBvbiB0aGUgdGFyZ2V0IHJlbGF0 aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggZjRhMDhiYWE5NWEuLjNhNjE5MGY1ZmE2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKQEAgLTU2Myw2ICs1NjMsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5v ZGU+CWZvcl9wb3J0aW9uX29mX2NsYXVzZQogJXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVz ZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UKICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFy Z2V0IGluc2VydF9jb2x1bW5faXRlbQorJXR5cGUgPGxpc3Q+CWluc2VydF9zZXRfY2xhdXNlIGlu c2VydF9zZXRfY2xhdXNlX2xpc3QKKyV0eXBlIDxsaXN0PglpbnNlcnRfc2V0X2NsYXVzZV9ncm91 cCBpbnNlcnRfc2V0X2NsYXVzZV9ncm91cF9saXN0CiAKICV0eXBlIDxzdHI+CQlnZW5lcmljX29w dGlvbl9uYW1lCiAldHlwZSA8bm9kZT4JZ2VuZXJpY19vcHRpb25fYXJnCkBAIC0xMzA1NSw2ICsx MzA1NywzNiBAQCBpbnNlcnRfcmVzdDoKIAkJCQkJJCQtPmNvbHMgPSBOSUw7CiAJCQkJCSQkLT5z ZWxlY3RTdG10ID0gTlVMTDsKIAkJCQl9CisJCQl8IE9WRVJSSURJTkcgb3ZlcnJpZGVfa2luZCBW QUxVRV9QIFNFVCBpbnNlcnRfc2V0X2NsYXVzZV9saXN0CisJCQkJeworCQkJCQkkJCA9IG1ha2VO b2RlKEluc2VydFN0bXQpOworCQkJCQkkJC0+Y29scyA9IE5JTDsKKwkJCQkJJCQtPnNlbGVjdFN0 bXQgPSBOVUxMOworCQkJCQkkJC0+b3ZlcnJpZGUgPSAkMjsKKwkJCQkJJCQtPnNldENsYXVzZUxp c3QgPSBsaXN0X21ha2UxKCQ1KTsKKwkJCQl9CisJCQl8IE9WRVJSSURJTkcgb3ZlcnJpZGVfa2lu ZCBWQUxVRV9QIFNFVCBpbnNlcnRfc2V0X2NsYXVzZV9ncm91cF9saXN0CisJCQkJeworCQkJCQkk JCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOworCQkJCQkkJC0+Y29scyA9IE5JTDsKKwkJCQkJJCQt PnNlbGVjdFN0bXQgPSBOVUxMOworCQkJCQkkJC0+b3ZlcnJpZGUgPSAkMjsKKwkJCQkJJCQtPnNl dENsYXVzZUxpc3QgPSAkNTsKKwkJCQl9CisJCQl8IFNFVCBpbnNlcnRfc2V0X2NsYXVzZV9ncm91 cF9saXN0CisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKEluc2VydFN0bXQpOworCQkJCQkkJC0+ Y29scyA9IE5JTDsKKwkJCQkJJCQtPnNlbGVjdFN0bXQgPSBOVUxMOworCQkJCQkkJC0+c2V0Q2xh dXNlTGlzdCA9ICQyOworCQkJCX0KKwkJCXwgU0VUIGluc2VydF9zZXRfY2xhdXNlX2xpc3QKKwkJ CQl7CisJCQkJCSQkID0gbWFrZU5vZGUoSW5zZXJ0U3RtdCk7CisJCQkJCSQkLT5jb2xzID0gTklM OworCQkJCQkkJC0+c2VsZWN0U3RtdCA9IE5VTEw7CisJCQkJCSQkLT5zZXRDbGF1c2VMaXN0ID0g bGlzdF9tYWtlMSgkMik7CisJCQkJfQogCQk7CiAKIG92ZXJyaWRlX2tpbmQ6CkBAIC0xMzM2NSw2 ICsxMzM5NywzOCBAQCBzZXRfdGFyZ2V0X2xpc3Q6CiAJCQl8IHNldF90YXJnZXRfbGlzdCAnLCcg c2V0X3RhcmdldAkJeyAkJCA9IGxhcHBlbmQoJDEsJDMpOyB9CiAJCTsKIAorLyoKKyAqIEdyYW1t YXIgcnVsZXMgZm9yIElOU0VSVCAuLi4gU0VUIHN5bnRheAorICogU3VwcG9ydHMgYm90aCBzaW5n bGUtcm93IGFuZCBtdWx0aS1yb3cgc3ludGF4OgorICogICBTaW5nbGUgcm93OiBJTlNFUlQgSU5U TyB0YWJsZSBTRVQgY29sMT12YWwxLCBjb2wyPXZhbDIKKyAqICAgTXVsdGktcm93OiAgSU5TRVJU IElOVE8gdGFibGUgU0VUIChjb2wxPXZhbDEsIGNvbDI9dmFsMiksIChjb2wxPXZhbDMsIGNvbDI9 dmFsNCkKKyAqCisgKiBUaGVzZSBydWxlcyBhcmUgSU5TRVJULXNwZWNpZmljIGFuZCBvbmx5IGFs bG93IHNpbXBsZSBjb2x1bW49dmFsdWUgYXNzaWdubWVudHMuCisgKi8KK2luc2VydF9zZXRfY2xh dXNlOgorCQkJc2V0X3RhcmdldCAnPScgYV9leHByCisJCQkJeworCQkJCQkkMS0+dmFsID0gKE5v ZGUgKikgJDM7CisJCQkJCSQkID0gbGlzdF9tYWtlMSgkMSk7CisJCQkJfQorCQk7CisKK2luc2Vy dF9zZXRfY2xhdXNlX2xpc3Q6CisJCQlpbnNlcnRfc2V0X2NsYXVzZQkJCQkJCXsgJCQgPSAkMTsg fQorCQkJfCBpbnNlcnRfc2V0X2NsYXVzZV9saXN0ICcsJyBpbnNlcnRfc2V0X2NsYXVzZQorCQkJ CQkJCQkJCQkJCXsgJCQgPSBsaXN0X2NvbmNhdCgkMSwgJDMpOyB9CisJCTsKKworaW5zZXJ0X3Nl dF9jbGF1c2VfZ3JvdXA6CisJCQknKCcgaW5zZXJ0X3NldF9jbGF1c2VfbGlzdCAnKScJCQl7ICQk ID0gJDI7IH0KKwkJOworCitpbnNlcnRfc2V0X2NsYXVzZV9ncm91cF9saXN0OgorCQkJaW5zZXJ0 X3NldF9jbGF1c2VfZ3JvdXAJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBpbnNl cnRfc2V0X2NsYXVzZV9ncm91cF9saXN0ICcsJyBpbnNlcnRfc2V0X2NsYXVzZV9ncm91cAorCQkJ CQkJCQkJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCiAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogICoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA1M2JmMWUyMTcyMS4uMDZh MmI0YzFmOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTQ5MjAsMTAgKzQ5MjAsMTAgQEAg bWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIAkvKgogCSAqIENvbXBsZXRl IElOU0VSVCBJTlRPIDx0YWJsZT4gd2l0aCAiKCIgb3IgIlZBTFVFUyIgb3IgIlNFTEVDVCIgb3IK LQkgKiAiVEFCTEUiIG9yICJERUZBVUxUIFZBTFVFUyIgb3IgIk9WRVJSSURJTkciCisJICogIlRB QkxFIiBvciAiREVGQVVMVCBWQUxVRVMiIG9yICJPVkVSUklESU5HIiBvciAiU0VUIgogCSAqLwog CWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJJTlNFUlQiLCAiSU5UTyIsIE1hdGNoQW55KSkKLQkJQ09N UExFVEVfV0lUSCgiKCIsICJERUZBVUxUIFZBTFVFUyIsICJTRUxFQ1QiLCAiVEFCTEUiLCAiVkFM VUVTIiwgIk9WRVJSSURJTkciKTsKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJERUZBVUxUIFZBTFVF UyIsICJTRUxFQ1QiLCAiU0VUIiwgIlRBQkxFIiwgIlZBTFVFUyIsICJPVkVSUklESU5HIik7CiAK IAkvKgogCSAqIENvbXBsZXRlIElOU0VSVCBJTlRPIDx0YWJsZT4gKGF0dHJpYnMpIHdpdGggIlZB TFVFUyIgb3IgIlNFTEVDVCIgb3IKQEAgLTQ5MzksNyArNDkzOSw3IEBAIG1hdGNoX3ByZXZpb3Vz X3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCiAJLyogQ29tcGxldGUgYWZ0ZXIgT1ZFUlJJRElORyBj bGF1c2UgKi8KIAllbHNlIGlmIChUYWlsTWF0Y2hlcygiT1ZFUlJJRElORyIsIE1hdGNoQW55LCAi VkFMVUUiKSkKLQkJQ09NUExFVEVfV0lUSCgiU0VMRUNUIiwgIlRBQkxFIiwgIlZBTFVFUyIpOwor CQlDT01QTEVURV9XSVRIKCJTRUxFQ1QiLCAiU0VUIiwgIlRBQkxFIiwgIlZBTFVFUyIpOwogCiAJ LyogSW5zZXJ0IGFuIG9wZW4gcGFyZW50aGVzaXMgYWZ0ZXIgIlZBTFVFUyIgKi8KIAllbHNlIGlm IChUYWlsTWF0Y2hlcygiVkFMVUVTIikgJiYgIVRhaWxNYXRjaGVzKCJERUZBVUxUIiwgIlZBTFVF UyIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMzc3YTZjZGUzLi43MzExMGU5N2FiNiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjIxNiw2ICsyMjE2LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgSW5zZXJ0U3RtdAogCVJldHVybmluZ0NsYXVzZSAqcmV0dXJuaW5nQ2xhdXNlOwkvKiBSRVRV Uk5JTkcgY2xhdXNlICovCiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNl ICovCiAJT3ZlcnJpZGluZ0tpbmQgb3ZlcnJpZGU7CS8qIE9WRVJSSURJTkcgY2xhdXNlICovCisJ TGlzdAkgICAqc2V0Q2xhdXNlTGlzdDsJLyogU0VUIGNsYXVzZSBsaXN0IChmb3IgSU5TRVJUIC4u LiBTRVQgc3ludGF4KSAqLwogfSBJbnNlcnRTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luc2VydC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luc2VydC5vdXQKaW5kZXggNzViOGRlNzlmY2UuLjk4 MDZhOGE5ZThmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luc2VydC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnNlcnQub3V0CkBAIC0xMDk2LDMg KzEwOTYsMzAxIEBAIGluc2VydCBpbnRvIHJldHVybmluZ3dydGVzdCB2YWx1ZXMgKDIsICdmb28n KSByZXR1cm5pbmcgcmV0dXJuaW5nd3J0ZXN0OwogKDEgcm93KQogCiBkcm9wIHRhYmxlIHJldHVy bmluZ3dydGVzdDsKKy0tCistLSBJTlNFUlQgLi4uIFNFVCBzeW50YXggdGVzdHMKKy0tCitjcmVh dGUgdGFibGUgaW5zZXJ0c2V0dGVzdCAoCisgICAgaWQgaW50LAorICAgIG5hbWUgdGV4dCwKKyAg ICBzYWxhcnkgaW50IGRlZmF1bHQgNTAwMDAsCisgICAgZGVwdCB0ZXh0LAorICAgIGNyZWF0ZWRf YXQgdGltZXN0YW1wIGRlZmF1bHQgbm93KCkKKyk7CistLSBCYXNpYyBJTlNFUlQgU0VUIHN5bnRh eAoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MSwgbmFtZT0nQWxpY2UnLCBzYWxh cnk9NjAwMDAsIGRlcHQ9J0VuZ2luZWVyaW5nJzsKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qg c2V0IG5hbWU9J0JvYicsIGlkPTIsIGRlcHQ9J1NhbGVzJywgc2FsYXJ5PTU1MDAwOworLS0gSU5T RVJUIFNFVCB3aXRoIERFRkFVTFQga2V5d29yZAoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBz ZXQgaWQ9MywgbmFtZT0nQ2hhcmxpZScsIHNhbGFyeT1ERUZBVUxULCBkZXB0PSdIUic7CitpbnNl cnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD00LCBuYW1lPSdEYXZpZCcsIGRlcHQ9J01hcmtl dGluZyc7ICAtLSBzYWxhcnkgc2hvdWxkIHVzZSBkZWZhdWx0CistLSBJTlNFUlQgU0VUIHdpdGgg TlVMTCB2YWx1ZXMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTUsIG5hbWU9J0V2 ZScsIHNhbGFyeT1OVUxMLCBkZXB0PSdGaW5hbmNlJzsKK2luc2VydCBpbnRvIGluc2VydHNldHRl c3Qgc2V0IGlkPTYsIG5hbWU9TlVMTCwgc2FsYXJ5PTcwMDAwLCBkZXB0PSdJVCc7CistLSBJTlNF UlQgU0VUIHdpdGggZXhwcmVzc2lvbnMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlk PTcsIG5hbWU9J0ZyYW5rJywgc2FsYXJ5PTUwMDAwKzEwMDAwLCBkZXB0PSdFbmdpbmVlcmluZyc7 CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD04LCBuYW1lPXVwcGVyKCdncmFjZScp LCBzYWxhcnk9NDUwMDAsIGRlcHQ9bG93ZXIoJ1NBTEVTJyk7CistLSBJTlNFUlQgU0VUIHdpdGgg ZnVuY3Rpb25zCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD05LCBuYW1lPWNvbmNh dCgnSm9obicsICcgJywgJ0RvZScpLCBzYWxhcnk9ODAwMDAsIGRlcHQ9J0V4ZWN1dGl2ZSc7Cist LSBJTlNFUlQgU0VUIHdpdGggc3VicXVlcmllcworaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBz ZXQgaWQ9MTAsIG5hbWU9J0thdGUnLCBzYWxhcnk9KHNlbGVjdCBtYXgoc2FsYXJ5KSArIDUwMDAg ZnJvbSBpbnNlcnRzZXR0ZXN0KSwgZGVwdD0nRW5naW5lZXJpbmcnOworLS0gSU5TRVJUIFNFVCB3 aXRoIGNvbHVtbiBzdWJzZXQgKG90aGVycyBzaG91bGQgYmUgTlVMTCBvciBERUZBVUxUKQoraW5z ZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTEsIG5hbWU9J0xhdXJhJzsKK2luc2VydCBp bnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTEyLCBkZXB0PSdTdXBwb3J0JzsKKy0tIFZlcmlmeSBh bGwgaW5zZXJ0cworc2VsZWN0IGlkLCBuYW1lLCBzYWxhcnksIGRlcHQgZnJvbSBpbnNlcnRzZXR0 ZXN0IG9yZGVyIGJ5IGlkOworIGlkIHwgICBuYW1lICAgfCBzYWxhcnkgfCAgICBkZXB0ICAgICAK Ky0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCBBbGljZSAgICB8 ICA2MDAwMCB8IEVuZ2luZWVyaW5nCisgIDIgfCBCb2IgICAgICB8ICA1NTAwMCB8IFNhbGVzCisg IDMgfCBDaGFybGllICB8ICA1MDAwMCB8IEhSCisgIDQgfCBEYXZpZCAgICB8ICA1MDAwMCB8IE1h cmtldGluZworICA1IHwgRXZlICAgICAgfCAgICAgICAgfCBGaW5hbmNlCisgIDYgfCAgICAgICAg ICB8ICA3MDAwMCB8IElUCisgIDcgfCBGcmFuayAgICB8ICA2MDAwMCB8IEVuZ2luZWVyaW5nCisg IDggfCBHUkFDRSAgICB8ICA0NTAwMCB8IHNhbGVzCisgIDkgfCBKb2huIERvZSB8ICA4MDAwMCB8 IEV4ZWN1dGl2ZQorIDEwIHwgS2F0ZSAgICAgfCAgODUwMDAgfCBFbmdpbmVlcmluZworIDExIHwg TGF1cmEgICAgfCAgNTAwMDAgfCAKKyAxMiB8ICAgICAgICAgIHwgIDUwMDAwIHwgU3VwcG9ydAor KDEyIHJvd3MpCisKKy0tIElOU0VSVCBTRVQgd2l0aCBSRVRVUk5JTkcgY2xhdXNlCitpbnNlcnQg aW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xMywgbmFtZT0nTWlrZScsIHNhbGFyeT05MDAwMCwg ZGVwdD0nTWFuYWdlbWVudCcgcmV0dXJuaW5nIGlkLCBuYW1lLCBzYWxhcnksIGRlcHQ7CisgaWQg fCBuYW1lIHwgc2FsYXJ5IHwgICAgZGVwdCAgICAKKy0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLQorIDEzIHwgTWlrZSB8ICA5MDAwMCB8IE1hbmFnZW1lbnQKKygxIHJvdykKKworaW5z ZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTQsIG5hbWU9J05hbmN5Jywgc2FsYXJ5PTk1 MDAwLCBkZXB0PSdFeGVjdXRpdmUnIHJldHVybmluZyBpZCwgbmFtZSwgc2FsYXJ5OworIGlkIHwg bmFtZSAgfCBzYWxhcnkgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0KKyAxNCB8IE5hbmN5IHwgIDk1 MDAwCisoMSByb3cpCisKKy0tIElOU0VSVCBTRVQgd2l0aCBPTiBDT05GTElDVCBETyBVUERBVEUK K2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRwayAoCisgICAgaWQgaW50IHByaW1hcnkga2V5LAorICAg IHZhbHVlIHRleHQsCisgICAgY291bnRlciBpbnQgZGVmYXVsdCAwCispOworaW5zZXJ0IGludG8g aW5zZXJ0c2V0cGsgc2V0IGlkPTEsIHZhbHVlPSdmaXJzdCcsIGNvdW50ZXI9MTsKK2luc2VydCBp bnRvIGluc2VydHNldHBrIHNldCBpZD0yLCB2YWx1ZT0nc2Vjb25kJywgY291bnRlcj0yOworLS0g VGVzdCBPTiBDT05GTElDVCBETyBVUERBVEUgd2l0aCBJTlNFUlQgU0VUCitpbnNlcnQgaW50byBp bnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J3VwZGF0ZWQnLCBjb3VudGVyPTEwCisgICAgb24g Y29uZmxpY3QgKGlkKSBkbyB1cGRhdGUgc2V0IHZhbHVlPWV4Y2x1ZGVkLnZhbHVlLCBjb3VudGVy PWV4Y2x1ZGVkLmNvdW50ZXI7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9MiwgdmFs dWU9J2Fsc28gdXBkYXRlZCcsIGNvdW50ZXI9MjAKKyAgICBvbiBjb25mbGljdCAoaWQpIGRvIHVw ZGF0ZSBzZXQgY291bnRlcj1pbnNlcnRzZXRway5jb3VudGVyICsgZXhjbHVkZWQuY291bnRlcjsK K3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0cGsgb3JkZXIgYnkgaWQ7CisgaWQgfCAgdmFsdWUgIHwg Y291bnRlciAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorICAxIHwgdXBkYXRlZCB8ICAgICAg MTAKKyAgMiB8IHNlY29uZCAgfCAgICAgIDIyCisoMiByb3dzKQorCistLSBUZXN0IE9OIENPTkZM SUNUIERPIE5PVEhJTkcgd2l0aCBJTlNFUlQgU0VUCitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBz ZXQgaWQ9MSwgdmFsdWU9J2lnbm9yZWQnLCBjb3VudGVyPTEwMAorICAgIG9uIGNvbmZsaWN0IChp ZCkgZG8gbm90aGluZzsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0cGsgb3JkZXIgYnkgaWQ7Cisg aWQgfCAgdmFsdWUgIHwgY291bnRlciAKKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorICAxIHwg dXBkYXRlZCB8ICAgICAgMTAKKyAgMiB8IHNlY29uZCAgfCAgICAgIDIyCisoMiByb3dzKQorCist LSBJTlNFUlQgU0VUIHdpdGggT1ZFUlJJRElORyBTWVNURU0gVkFMVUUgKGZvciBnZW5lcmF0ZWQg Y29sdW1ucykKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRnZW4gKAorICAgIGlkIGludCBnZW5lcmF0 ZWQgYWx3YXlzIGFzIGlkZW50aXR5LAorICAgIGRhdGEgdGV4dAorKTsKKy0tIFRoaXMgc2hvdWxk IGZhaWwgKGNhbid0IG92ZXJyaWRlIHdpdGhvdXQgT1ZFUlJJRElORyBjbGF1c2UpCitpbnNlcnQg aW50byBpbnNlcnRzZXRnZW4gc2V0IGlkPTEwMCwgZGF0YT0ndGVzdCc7CitFUlJPUjogIGNhbm5v dCBpbnNlcnQgYSBub24tREVGQVVMVCB2YWx1ZSBpbnRvIGNvbHVtbiAiaWQiCitERVRBSUw6ICBD b2x1bW4gImlkIiBpcyBhbiBpZGVudGl0eSBjb2x1bW4gZGVmaW5lZCBhcyBHRU5FUkFURUQgQUxX QVlTLgorSElOVDogIFVzZSBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSB0byBvdmVycmlkZS4KKy0t IFRoaXMgc2hvdWxkIHdvcmsKK2luc2VydCBpbnRvIGluc2VydHNldGdlbiBvdmVycmlkaW5nIHN5 c3RlbSB2YWx1ZSBzZXQgaWQ9MTAwLCBkYXRhPSd0ZXN0JzsKK2luc2VydCBpbnRvIGluc2VydHNl dGdlbiBzZXQgZGF0YT0nYXV0by1nZW5lcmF0ZWQnOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRn ZW4gb3JkZXIgYnkgaWQ7CisgaWQgIHwgICAgICBkYXRhICAgICAgCistLS0tLSstLS0tLS0tLS0t LS0tLS0tCisgICAxIHwgYXV0by1nZW5lcmF0ZWQKKyAxMDAgfCB0ZXN0CisoMiByb3dzKQorCitk cm9wIHRhYmxlIGluc2VydHNldGdlbjsKKy0tIElOU0VSVCBTRVQgd2l0aCBDSEVDSyBjb25zdHJh aW50cworY3JlYXRlIHRhYmxlIGluc2VydHNldGNoZWNrICgKKyAgICBpZCBpbnQsCisgICAgYWdl IGludCBjaGVjayAoYWdlID49IDAgYW5kIGFnZSA8PSAxNTApLAorICAgIHNjb3JlIGludCBjaGVj ayAoc2NvcmUgYmV0d2VlbiAwIGFuZCAxMDApCispOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0Y2hl Y2sgc2V0IGlkPTEsIGFnZT0yNSwgc2NvcmU9ODU7CitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGVj ayBzZXQgaWQ9MiwgYWdlPTMwLCBzY29yZT05MjsKKy0tIFRoZXNlIHNob3VsZCBmYWlsCitpbnNl cnQgaW50byBpbnNlcnRzZXRjaGVjayBzZXQgaWQ9MywgYWdlPS01LCBzY29yZT01MDsgIC0tIGFn ZSBjaGVjayBmYWlscworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiaW5zZXJ0c2V0Y2hl Y2siIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImluc2VydHNldGNoZWNrX2FnZV9jaGVjayIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgzLCAtNSwgNTApLgoraW5zZXJ0IGludG8g aW5zZXJ0c2V0Y2hlY2sgc2V0IGlkPTQsIGFnZT0yNSwgc2NvcmU9MTUwOyAtLSBzY29yZSBjaGVj ayBmYWlscworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAiaW5zZXJ0c2V0Y2hlY2siIHZp b2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgImluc2VydHNldGNoZWNrX3Njb3JlX2NoZWNrIgorREVU QUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDQsIDI1LCAxNTApLgorc2VsZWN0ICogZnJvbSBp bnNlcnRzZXRjaGVjayBvcmRlciBieSBpZDsKKyBpZCB8IGFnZSB8IHNjb3JlIAorLS0tLSstLS0t LSstLS0tLS0tCisgIDEgfCAgMjUgfCAgICA4NQorICAyIHwgIDMwIHwgICAgOTIKKygyIHJvd3Mp CisKK2Ryb3AgdGFibGUgaW5zZXJ0c2V0Y2hlY2s7CistLSBJTlNFUlQgU0VUIHdpdGggcGFydGl0 aW9uZWQgdGFibGVzCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydCAoCisgICAgaWQgaW50LAor ICAgIGNhdGVnb3J5IHRleHQsCisgICAgdmFsdWUgaW50CispIHBhcnRpdGlvbiBieSBsaXN0IChj YXRlZ29yeSk7CitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFydF9hIHBhcnRpdGlvbiBvZiBpbnNl cnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdBJyk7CitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0cGFy dF9iIHBhcnRpdGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2YWx1ZXMgaW4gKCdCJyk7CitjcmVh dGUgdGFibGUgaW5zZXJ0c2V0cGFydF9jIHBhcnRpdGlvbiBvZiBpbnNlcnRzZXRwYXJ0IGZvciB2 YWx1ZXMgaW4gKCdDJyk7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwYXJ0IHNldCBpZD0xLCBjYXRl Z29yeT0nQScsIHZhbHVlPTEwMDsKK2luc2VydCBpbnRvIGluc2VydHNldHBhcnQgc2V0IGlkPTIs IGNhdGVnb3J5PSdCJywgdmFsdWU9MjAwOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0cGFydCBzZXQg aWQ9MywgY2F0ZWdvcnk9J0MnLCB2YWx1ZT0zMDA7CitpbnNlcnQgaW50byBpbnNlcnRzZXRwYXJ0 IHNldCBpZD00LCBjYXRlZ29yeT0nQScsIHZhbHVlPTE1MDsKK3NlbGVjdCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogZnJvbSBpbnNlcnRzZXRwYXJ0IG9yZGVyIGJ5IGlkOworICAgIHRhYmxlb2lkICAg ICB8IGlkIHwgY2F0ZWdvcnkgfCB2YWx1ZSAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0t LS0tLSstLS0tLS0tCisgaW5zZXJ0c2V0cGFydF9hIHwgIDEgfCBBICAgICAgICB8ICAgMTAwCisg aW5zZXJ0c2V0cGFydF9iIHwgIDIgfCBCICAgICAgICB8ICAgMjAwCisgaW5zZXJ0c2V0cGFydF9j IHwgIDMgfCBDICAgICAgICB8ICAgMzAwCisgaW5zZXJ0c2V0cGFydF9hIHwgIDQgfCBBICAgICAg ICB8ICAgMTUwCisoNCByb3dzKQorCitkcm9wIHRhYmxlIGluc2VydHNldHBhcnQ7CistLSBJTlNF UlQgU0VUIHdpdGggaW5oZXJpdGFuY2UKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRwYXJlbnQgKAor ICAgIGlkIGludCwKKyAgICBwYXJlbnRfY29sIHRleHQKKyk7CitjcmVhdGUgdGFibGUgaW5zZXJ0 c2V0Y2hpbGQgKAorICAgIGNoaWxkX2NvbCB0ZXh0CispIGluaGVyaXRzIChpbnNlcnRzZXRwYXJl bnQpOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0cGFyZW50IHNldCBpZD0xLCBwYXJlbnRfY29sPSdw YXJlbnQgZGF0YSc7CitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGlsZCBzZXQgaWQ9MiwgcGFyZW50 X2NvbD0nZnJvbSBjaGlsZCcsIGNoaWxkX2NvbD0nY2hpbGQgZGF0YSc7CitzZWxlY3QgKiBmcm9t IGluc2VydHNldHBhcmVudCBvcmRlciBieSBpZDsKKyBpZCB8IHBhcmVudF9jb2wgIAorLS0tLSst LS0tLS0tLS0tLS0tCisgIDEgfCBwYXJlbnQgZGF0YQorICAyIHwgZnJvbSBjaGlsZAorKDIgcm93 cykKKworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRjaGlsZDsKKyBpZCB8IHBhcmVudF9jb2wgfCBj aGlsZF9jb2wgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDIgfCBmcm9tIGNo aWxkIHwgY2hpbGQgZGF0YQorKDEgcm93KQorCitkcm9wIHRhYmxlIGluc2VydHNldGNoaWxkOwor ZHJvcCB0YWJsZSBpbnNlcnRzZXRwYXJlbnQ7CistLSBJTlNFUlQgU0VUIGVycm9yIGNhc2VzCist LSBEdXBsaWNhdGUgY29sdW1uIG5hbWVzIChzaG91bGQgZmFpbCkKK2luc2VydCBpbnRvIGluc2Vy dHNldHRlc3Qgc2V0IGlkPTE1LCBuYW1lPSdUZXN0JywgaWQ9MTY7CitFUlJPUjogIGNvbHVtbiAi aWQiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQorTElORSAxOiBpbnNlcnQgaW50byBpbnNlcnRz ZXR0ZXN0IHNldCBpZD0xNSwgbmFtZT0nVGVzdCcsIGlkPTE2OworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5vbi1leGlzdGVu dCBjb2x1bW4gKHNob3VsZCBmYWlsKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9 MTUsIG5vbmV4aXN0ZW50PSd2YWx1ZSc7CitFUlJPUjogIGNvbHVtbiAibm9uZXhpc3RlbnQiIG9m IHJlbGF0aW9uICJpbnNlcnRzZXR0ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAxOiBpbnNlcnQg aW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xNSwgbm9uZXhpc3RlbnQ9J3ZhbHVlJzsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFR5cGUgbWlzbWF0 Y2ggKHNob3VsZCBmYWlsKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9J25vdCBh IG51bWJlcicsIG5hbWU9J1Rlc3QnOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3Ig dHlwZSBpbnRlZ2VyOiAibm90IGEgbnVtYmVyIgorTElORSAxOiBpbnNlcnQgaW50byBpbnNlcnRz ZXR0ZXN0IHNldCBpZD0nbm90IGEgbnVtYmVyJywgbmFtZT0nVGVzdCcuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTXVsdGktY29sdW1uIGFzc2lnbm1l bnQgc3ludGF4IChzaG91bGQgZmFpbCAtIHRoaXMgaXMgVVBEQVRFIHN5bnRheCkKK2luc2VydCBp bnRvIGluc2VydHNldHRlc3Qgc2V0IChpZCwgbmFtZSkgPSAoMjAsICdUZXN0Jyk7CitFUlJPUjog IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIsIgorTElORSAxOiBpbnNlcnQgaW50byBpbnNlcnRz ZXR0ZXN0IHNldCAoaWQsIG5hbWUpID0gKDIwLCAnVGVzdCcpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBNdWx0aS1jb2x1bW4gYXNzaWdubWVudCB3aXRo IHN1YnF1ZXJ5IChzaG91bGQgZmFpbCkKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IChp ZCwgbmFtZSkgPSAoc2VsZWN0IDIxLCAnVGVzdCcpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQg b3IgbmVhciAiLCIKK0xJTkUgMTogaW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgKGlkLCBu YW1lKSA9IChzZWxlY3QgMjEsICdUZXN0Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KKy0tIElOU0VSVCBTRVQgd2l0aCBDVEUKK3dpdGggbmV3X3ZhbHVlcyBh cyAoCisgICAgc2VsZWN0IDE1IGFzIG5ld19pZCwgJ09saXZlcicgYXMgbmV3X25hbWUsIDg1MDAw IGFzIG5ld19zYWxhcnkKKykKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3QKK3NlbGVjdCBuZXdf aWQsIG5ld19uYW1lLCBuZXdfc2FsYXJ5LCAnU2FsZXMnIGZyb20gbmV3X3ZhbHVlczsKKy0tIFZl cmlmeSBDVEUgaW5zZXJ0IHdvcmtlZCAobm90IHVzaW5nIFNFVCBzeW50YXgsIGJ1dCBmb3IgY29t cGxldGVuZXNzKQorc2VsZWN0IGlkLCBuYW1lLCBzYWxhcnksIGRlcHQgZnJvbSBpbnNlcnRzZXR0 ZXN0IHdoZXJlIGlkID0gMTU7CisgaWQgfCAgbmFtZSAgfCBzYWxhcnkgfCBkZXB0ICAKKy0tLS0r LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLQorIDE1IHwgT2xpdmVyIHwgIDg1MDAwIHwgU2FsZXMK KygxIHJvdykKKworLS0gTXVsdGktcm93IElOU0VSVCBTRVQgc3ludGF4CitjcmVhdGUgdGFibGUg aW5zZXJ0c2V0bXVsdGkgKAorICAgIGMxIGludCwKKyAgICBjMiBpbnQsCisgICAgYzMgaW50Cisp OworLS0gQmFzaWMgbXVsdGktcm93IHdpdGggc2FtZSBjb2x1bW4gb3JkZXIKK2luc2VydCBpbnRv IGluc2VydHNldG11bHRpIHNldCAoYzE9MSwgYzI9MiwgYzM9MyksIChjMT00LCBjMj01LCBjMz02 KTsKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0bXVsdGkgb3JkZXIgYnkgYzE7CisgYzEgfCBjMiB8 IGMzIAorLS0tLSstLS0tKy0tLS0KKyAgMSB8ICAyIHwgIDMKKyAgNCB8ICA1IHwgIDYKKygyIHJv d3MpCisKKy0tIE11bHRpLXJvdyB3aXRoIGRpZmZlcmVudCBjb2x1bW4gb3JkZXJzCistLSBUaGlz IHRlc3RzIHRoYXQgY29sdW1uLXZhbHVlIG1hdGNoaW5nIHdvcmtzIGNvcnJlY3RseSBhY3Jvc3Mg cm93cworaW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMj0yMCwgYzE9MTAsIGMzPTMw KSwgKGMxPTQwLCBjMz02MCwgYzI9NTApLCAoYzM9OTAsIGMyPTgwLCBjMT03MCk7CitzZWxlY3Qg KiBmcm9tIGluc2VydHNldG11bHRpIG9yZGVyIGJ5IGMxOworIGMxIHwgYzIgfCBjMyAKKy0tLS0r LS0tLSstLS0tCisgIDEgfCAgMiB8ICAzCisgIDQgfCAgNSB8ICA2CisgMTAgfCAyMCB8IDMwCisg NDAgfCA1MCB8IDYwCisgNzAgfCA4MCB8IDkwCisoNSByb3dzKQorCistLSBNdWx0aS1yb3cgd2l0 aCBtaXhlZCBleHByZXNzaW9ucworaW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0x MDAsIGMyPTIwMCwgYzM9MzAwKSwgKGMyPTUwMCwgYzE9NDAwLCBjMz02MDApOworc2VsZWN0ICog ZnJvbSBpbnNlcnRzZXRtdWx0aSBvcmRlciBieSBjMTsKKyBjMSAgfCBjMiAgfCBjMyAgCistLS0t LSstLS0tLSstLS0tLQorICAgMSB8ICAgMiB8ICAgMworICAgNCB8ICAgNSB8ICAgNgorICAxMCB8 ICAyMCB8ICAzMAorICA0MCB8ICA1MCB8ICA2MAorICA3MCB8ICA4MCB8ICA5MAorIDEwMCB8IDIw MCB8IDMwMAorIDQwMCB8IDUwMCB8IDYwMAorKDcgcm93cykKKworLS0gVGVzdCBkaWZmZXJlbnQg Y29sdW1uIHNldHMgaW4gbXVsdGktcm93IElOU0VSVCBTRVQKKy0tIEZpcnN0IHJvdyBoYXMgYWxs IGNvbHVtbnMsIHNlY29uZCByb3cgaGFzIHN1YnNldCAoYzMgc2hvdWxkIGdldCBERUZBVUxUL05V TEwpCitpbnNlcnQgaW50byBpbnNlcnRzZXRtdWx0aSBzZXQgKGMxPTEwMDAsIGMyPTIwMDAsIGMz PTMwMDApLCAoYzE9NDAwMCwgYzI9NTAwMCk7CitzZWxlY3QgKiBmcm9tIGluc2VydHNldG11bHRp IHdoZXJlIGMxID49IDEwMDAgb3JkZXIgYnkgYzE7CisgIGMxICB8ICBjMiAgfCAgYzMgIAorLS0t LS0tKy0tLS0tLSstLS0tLS0KKyAxMDAwIHwgMjAwMCB8IDMwMDAKKyA0MDAwIHwgNTAwMCB8ICAg ICAKKygyIHJvd3MpCisKKy0tIEZpcnN0IHJvdyBoYXMgc3Vic2V0LCBzZWNvbmQgcm93IGhhcyBh bGwgY29sdW1ucyAoYzIgaW4gZmlyc3Qgcm93IHNob3VsZCBnZXQgREVGQVVMVC9OVUxMKQoraW5z ZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xMDAxLCBjMz0zMDAxKSwgKGMxPTQwMDEs IGMyPTUwMDEsIGMzPTYwMDEpOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0aSB3aGVyZSBj MSA+PSAxMDAxIG9yZGVyIGJ5IGMxOworICBjMSAgfCAgYzIgIHwgIGMzICAKKy0tLS0tLSstLS0t LS0rLS0tLS0tCisgMTAwMSB8ICAgICAgfCAzMDAxCisgNDAwMCB8IDUwMDAgfCAgICAgCisgNDAw MSB8IDUwMDEgfCA2MDAxCisoMyByb3dzKQorCistLSBEaWZmZXJlbnQgc3Vic2V0cyBpbiBlYWNo IHJvdyAodW5pb24gb2YgYWxsIGNvbHVtbnMgdXNlZCwgbWlzc2luZyBnZXQgREVGQVVMVC9OVUxM KQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xMDAyLCBjMj0yMDAyKSwgKGMx PTQwMDIsIGMzPTYwMDIpOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0aSB3aGVyZSBjMSA+ PSAxMDAyIG9yZGVyIGJ5IGMxOworICBjMSAgfCAgYzIgIHwgIGMzICAKKy0tLS0tLSstLS0tLS0r LS0tLS0tCisgMTAwMiB8IDIwMDIgfCAgICAgCisgNDAwMCB8IDUwMDAgfCAgICAgCisgNDAwMSB8 IDUwMDEgfCA2MDAxCisgNDAwMiB8ICAgICAgfCA2MDAyCisoNCByb3dzKQorCistLSBDbGVhbnVw Citkcm9wIHRhYmxlIGluc2VydHNldHRlc3Q7Citkcm9wIHRhYmxlIGluc2VydHNldHBrOworZHJv cCB0YWJsZSBpbnNlcnRzZXRtdWx0aTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2luc2VydC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnNlcnQuc3FsCmluZGV4IDJiMDg2 ZWViNmQ3Li4zMjNjZWQwNWZiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5z ZXJ0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnNlcnQuc3FsCkBAIC02NzQsMyAr Njc0LDIxMCBAQCBhbHRlciB0YWJsZSByZXR1cm5pbmd3cnRlc3QyIGRyb3AgYzsKIGFsdGVyIHRh YmxlIHJldHVybmluZ3dydGVzdCBhdHRhY2ggcGFydGl0aW9uIHJldHVybmluZ3dydGVzdDIgZm9y IHZhbHVlcyBpbiAoMik7CiBpbnNlcnQgaW50byByZXR1cm5pbmd3cnRlc3QgdmFsdWVzICgyLCAn Zm9vJykgcmV0dXJuaW5nIHJldHVybmluZ3dydGVzdDsKIGRyb3AgdGFibGUgcmV0dXJuaW5nd3J0 ZXN0OworCistLQorLS0gSU5TRVJUIC4uLiBTRVQgc3ludGF4IHRlc3RzCistLQorY3JlYXRlIHRh YmxlIGluc2VydHNldHRlc3QgKAorICAgIGlkIGludCwKKyAgICBuYW1lIHRleHQsCisgICAgc2Fs YXJ5IGludCBkZWZhdWx0IDUwMDAwLAorICAgIGRlcHQgdGV4dCwKKyAgICBjcmVhdGVkX2F0IHRp bWVzdGFtcCBkZWZhdWx0IG5vdygpCispOworCistLSBCYXNpYyBJTlNFUlQgU0VUIHN5bnRheAor aW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MSwgbmFtZT0nQWxpY2UnLCBzYWxhcnk9 NjAwMDAsIGRlcHQ9J0VuZ2luZWVyaW5nJzsKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0 IG5hbWU9J0JvYicsIGlkPTIsIGRlcHQ9J1NhbGVzJywgc2FsYXJ5PTU1MDAwOworCistLSBJTlNF UlQgU0VUIHdpdGggREVGQVVMVCBrZXl3b3JkCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNl dCBpZD0zLCBuYW1lPSdDaGFybGllJywgc2FsYXJ5PURFRkFVTFQsIGRlcHQ9J0hSJzsKK2luc2Vy dCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTQsIG5hbWU9J0RhdmlkJywgZGVwdD0nTWFya2V0 aW5nJzsgIC0tIHNhbGFyeSBzaG91bGQgdXNlIGRlZmF1bHQKKworLS0gSU5TRVJUIFNFVCB3aXRo IE5VTEwgdmFsdWVzCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD01LCBuYW1lPSdF dmUnLCBzYWxhcnk9TlVMTCwgZGVwdD0nRmluYW5jZSc7CitpbnNlcnQgaW50byBpbnNlcnRzZXR0 ZXN0IHNldCBpZD02LCBuYW1lPU5VTEwsIHNhbGFyeT03MDAwMCwgZGVwdD0nSVQnOworCistLSBJ TlNFUlQgU0VUIHdpdGggZXhwcmVzc2lvbnMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0 IGlkPTcsIG5hbWU9J0ZyYW5rJywgc2FsYXJ5PTUwMDAwKzEwMDAwLCBkZXB0PSdFbmdpbmVlcmlu Zyc7CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD04LCBuYW1lPXVwcGVyKCdncmFj ZScpLCBzYWxhcnk9NDUwMDAsIGRlcHQ9bG93ZXIoJ1NBTEVTJyk7CisKKy0tIElOU0VSVCBTRVQg d2l0aCBmdW5jdGlvbnMKK2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTksIG5hbWU9 Y29uY2F0KCdKb2huJywgJyAnLCAnRG9lJyksIHNhbGFyeT04MDAwMCwgZGVwdD0nRXhlY3V0aXZl JzsKKworLS0gSU5TRVJUIFNFVCB3aXRoIHN1YnF1ZXJpZXMKK2luc2VydCBpbnRvIGluc2VydHNl dHRlc3Qgc2V0IGlkPTEwLCBuYW1lPSdLYXRlJywgc2FsYXJ5PShzZWxlY3QgbWF4KHNhbGFyeSkg KyA1MDAwIGZyb20gaW5zZXJ0c2V0dGVzdCksIGRlcHQ9J0VuZ2luZWVyaW5nJzsKKworLS0gSU5T RVJUIFNFVCB3aXRoIGNvbHVtbiBzdWJzZXQgKG90aGVycyBzaG91bGQgYmUgTlVMTCBvciBERUZB VUxUKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTEsIG5hbWU9J0xhdXJhJzsK K2luc2VydCBpbnRvIGluc2VydHNldHRlc3Qgc2V0IGlkPTEyLCBkZXB0PSdTdXBwb3J0JzsKKwor LS0gVmVyaWZ5IGFsbCBpbnNlcnRzCitzZWxlY3QgaWQsIG5hbWUsIHNhbGFyeSwgZGVwdCBmcm9t IGluc2VydHNldHRlc3Qgb3JkZXIgYnkgaWQ7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBSRVRVUk5J TkcgY2xhdXNlCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xMywgbmFtZT0nTWlr ZScsIHNhbGFyeT05MDAwMCwgZGVwdD0nTWFuYWdlbWVudCcgcmV0dXJuaW5nIGlkLCBuYW1lLCBz YWxhcnksIGRlcHQ7CitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0xNCwgbmFtZT0n TmFuY3knLCBzYWxhcnk9OTUwMDAsIGRlcHQ9J0V4ZWN1dGl2ZScgcmV0dXJuaW5nIGlkLCBuYW1l LCBzYWxhcnk7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBPTiBDT05GTElDVCBETyBVUERBVEUKK2Ny ZWF0ZSB0YWJsZSBpbnNlcnRzZXRwayAoCisgICAgaWQgaW50IHByaW1hcnkga2V5LAorICAgIHZh bHVlIHRleHQsCisgICAgY291bnRlciBpbnQgZGVmYXVsdCAwCispOworCitpbnNlcnQgaW50byBp bnNlcnRzZXRwayBzZXQgaWQ9MSwgdmFsdWU9J2ZpcnN0JywgY291bnRlcj0xOworaW5zZXJ0IGlu dG8gaW5zZXJ0c2V0cGsgc2V0IGlkPTIsIHZhbHVlPSdzZWNvbmQnLCBjb3VudGVyPTI7CisKKy0t IFRlc3QgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHdpdGggSU5TRVJUIFNFVAoraW5zZXJ0IGludG8g aW5zZXJ0c2V0cGsgc2V0IGlkPTEsIHZhbHVlPSd1cGRhdGVkJywgY291bnRlcj0xMAorICAgIG9u IGNvbmZsaWN0IChpZCkgZG8gdXBkYXRlIHNldCB2YWx1ZT1leGNsdWRlZC52YWx1ZSwgY291bnRl cj1leGNsdWRlZC5jb3VudGVyOworCitpbnNlcnQgaW50byBpbnNlcnRzZXRwayBzZXQgaWQ9Miwg dmFsdWU9J2Fsc28gdXBkYXRlZCcsIGNvdW50ZXI9MjAKKyAgICBvbiBjb25mbGljdCAoaWQpIGRv IHVwZGF0ZSBzZXQgY291bnRlcj1pbnNlcnRzZXRway5jb3VudGVyICsgZXhjbHVkZWQuY291bnRl cjsKKworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRwayBvcmRlciBieSBpZDsKKworLS0gVGVzdCBP TiBDT05GTElDVCBETyBOT1RISU5HIHdpdGggSU5TRVJUIFNFVAoraW5zZXJ0IGludG8gaW5zZXJ0 c2V0cGsgc2V0IGlkPTEsIHZhbHVlPSdpZ25vcmVkJywgY291bnRlcj0xMDAKKyAgICBvbiBjb25m bGljdCAoaWQpIGRvIG5vdGhpbmc7CisKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0cGsgb3JkZXIg YnkgaWQ7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBPVkVSUklESU5HIFNZU1RFTSBWQUxVRSAoZm9y IGdlbmVyYXRlZCBjb2x1bW5zKQorY3JlYXRlIHRhYmxlIGluc2VydHNldGdlbiAoCisgICAgaWQg aW50IGdlbmVyYXRlZCBhbHdheXMgYXMgaWRlbnRpdHksCisgICAgZGF0YSB0ZXh0CispOworCist LSBUaGlzIHNob3VsZCBmYWlsIChjYW4ndCBvdmVycmlkZSB3aXRob3V0IE9WRVJSSURJTkcgY2xh dXNlKQoraW5zZXJ0IGludG8gaW5zZXJ0c2V0Z2VuIHNldCBpZD0xMDAsIGRhdGE9J3Rlc3QnOwor CistLSBUaGlzIHNob3VsZCB3b3JrCitpbnNlcnQgaW50byBpbnNlcnRzZXRnZW4gb3ZlcnJpZGlu ZyBzeXN0ZW0gdmFsdWUgc2V0IGlkPTEwMCwgZGF0YT0ndGVzdCc7CitpbnNlcnQgaW50byBpbnNl cnRzZXRnZW4gc2V0IGRhdGE9J2F1dG8tZ2VuZXJhdGVkJzsKKworc2VsZWN0ICogZnJvbSBpbnNl cnRzZXRnZW4gb3JkZXIgYnkgaWQ7CisKK2Ryb3AgdGFibGUgaW5zZXJ0c2V0Z2VuOworCistLSBJ TlNFUlQgU0VUIHdpdGggQ0hFQ0sgY29uc3RyYWludHMKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRj aGVjayAoCisgICAgaWQgaW50LAorICAgIGFnZSBpbnQgY2hlY2sgKGFnZSA+PSAwIGFuZCBhZ2Ug PD0gMTUwKSwKKyAgICBzY29yZSBpbnQgY2hlY2sgKHNjb3JlIGJldHdlZW4gMCBhbmQgMTAwKQor KTsKKworaW5zZXJ0IGludG8gaW5zZXJ0c2V0Y2hlY2sgc2V0IGlkPTEsIGFnZT0yNSwgc2NvcmU9 ODU7CitpbnNlcnQgaW50byBpbnNlcnRzZXRjaGVjayBzZXQgaWQ9MiwgYWdlPTMwLCBzY29yZT05 MjsKKworLS0gVGhlc2Ugc2hvdWxkIGZhaWwKK2luc2VydCBpbnRvIGluc2VydHNldGNoZWNrIHNl dCBpZD0zLCBhZ2U9LTUsIHNjb3JlPTUwOyAgLS0gYWdlIGNoZWNrIGZhaWxzCitpbnNlcnQgaW50 byBpbnNlcnRzZXRjaGVjayBzZXQgaWQ9NCwgYWdlPTI1LCBzY29yZT0xNTA7IC0tIHNjb3JlIGNo ZWNrIGZhaWxzCisKK3NlbGVjdCAqIGZyb20gaW5zZXJ0c2V0Y2hlY2sgb3JkZXIgYnkgaWQ7CisK K2Ryb3AgdGFibGUgaW5zZXJ0c2V0Y2hlY2s7CisKKy0tIElOU0VSVCBTRVQgd2l0aCBwYXJ0aXRp b25lZCB0YWJsZXMKK2NyZWF0ZSB0YWJsZSBpbnNlcnRzZXRwYXJ0ICgKKyAgICBpZCBpbnQsCisg ICAgY2F0ZWdvcnkgdGV4dCwKKyAgICB2YWx1ZSBpbnQKKykgcGFydGl0aW9uIGJ5IGxpc3QgKGNh dGVnb3J5KTsKKworY3JlYXRlIHRhYmxlIGluc2VydHNldHBhcnRfYSBwYXJ0aXRpb24gb2YgaW5z ZXJ0c2V0cGFydCBmb3IgdmFsdWVzIGluICgnQScpOworY3JlYXRlIHRhYmxlIGluc2VydHNldHBh cnRfYiBwYXJ0aXRpb24gb2YgaW5zZXJ0c2V0cGFydCBmb3IgdmFsdWVzIGluICgnQicpOworY3Jl YXRlIHRhYmxlIGluc2VydHNldHBhcnRfYyBwYXJ0aXRpb24gb2YgaW5zZXJ0c2V0cGFydCBmb3Ig dmFsdWVzIGluICgnQycpOworCitpbnNlcnQgaW50byBpbnNlcnRzZXRwYXJ0IHNldCBpZD0xLCBj YXRlZ29yeT0nQScsIHZhbHVlPTEwMDsKK2luc2VydCBpbnRvIGluc2VydHNldHBhcnQgc2V0IGlk PTIsIGNhdGVnb3J5PSdCJywgdmFsdWU9MjAwOworaW5zZXJ0IGludG8gaW5zZXJ0c2V0cGFydCBz ZXQgaWQ9MywgY2F0ZWdvcnk9J0MnLCB2YWx1ZT0zMDA7CitpbnNlcnQgaW50byBpbnNlcnRzZXRw YXJ0IHNldCBpZD00LCBjYXRlZ29yeT0nQScsIHZhbHVlPTE1MDsKKworc2VsZWN0IHRhYmxlb2lk OjpyZWdjbGFzcywgKiBmcm9tIGluc2VydHNldHBhcnQgb3JkZXIgYnkgaWQ7CisKK2Ryb3AgdGFi bGUgaW5zZXJ0c2V0cGFydDsKKworLS0gSU5TRVJUIFNFVCB3aXRoIGluaGVyaXRhbmNlCitjcmVh dGUgdGFibGUgaW5zZXJ0c2V0cGFyZW50ICgKKyAgICBpZCBpbnQsCisgICAgcGFyZW50X2NvbCB0 ZXh0CispOworCitjcmVhdGUgdGFibGUgaW5zZXJ0c2V0Y2hpbGQgKAorICAgIGNoaWxkX2NvbCB0 ZXh0CispIGluaGVyaXRzIChpbnNlcnRzZXRwYXJlbnQpOworCitpbnNlcnQgaW50byBpbnNlcnRz ZXRwYXJlbnQgc2V0IGlkPTEsIHBhcmVudF9jb2w9J3BhcmVudCBkYXRhJzsKK2luc2VydCBpbnRv IGluc2VydHNldGNoaWxkIHNldCBpZD0yLCBwYXJlbnRfY29sPSdmcm9tIGNoaWxkJywgY2hpbGRf Y29sPSdjaGlsZCBkYXRhJzsKKworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRwYXJlbnQgb3JkZXIg YnkgaWQ7CitzZWxlY3QgKiBmcm9tIGluc2VydHNldGNoaWxkOworCitkcm9wIHRhYmxlIGluc2Vy dHNldGNoaWxkOworZHJvcCB0YWJsZSBpbnNlcnRzZXRwYXJlbnQ7CisKKy0tIElOU0VSVCBTRVQg ZXJyb3IgY2FzZXMKKy0tIER1cGxpY2F0ZSBjb2x1bW4gbmFtZXMgKHNob3VsZCBmYWlsKQoraW5z ZXJ0IGludG8gaW5zZXJ0c2V0dGVzdCBzZXQgaWQ9MTUsIG5hbWU9J1Rlc3QnLCBpZD0xNjsKKwor LS0gTm9uLWV4aXN0ZW50IGNvbHVtbiAoc2hvdWxkIGZhaWwpCitpbnNlcnQgaW50byBpbnNlcnRz ZXR0ZXN0IHNldCBpZD0xNSwgbm9uZXhpc3RlbnQ9J3ZhbHVlJzsKKworLS0gVHlwZSBtaXNtYXRj aCAoc2hvdWxkIGZhaWwpCitpbnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0IHNldCBpZD0nbm90IGEg bnVtYmVyJywgbmFtZT0nVGVzdCc7CisKKy0tIE11bHRpLWNvbHVtbiBhc3NpZ25tZW50IHN5bnRh eCAoc2hvdWxkIGZhaWwgLSB0aGlzIGlzIFVQREFURSBzeW50YXgpCitpbnNlcnQgaW50byBpbnNl cnRzZXR0ZXN0IHNldCAoaWQsIG5hbWUpID0gKDIwLCAnVGVzdCcpOworCistLSBNdWx0aS1jb2x1 bW4gYXNzaWdubWVudCB3aXRoIHN1YnF1ZXJ5IChzaG91bGQgZmFpbCkKK2luc2VydCBpbnRvIGlu c2VydHNldHRlc3Qgc2V0IChpZCwgbmFtZSkgPSAoc2VsZWN0IDIxLCAnVGVzdCcpOworCistLSBJ TlNFUlQgU0VUIHdpdGggQ1RFCit3aXRoIG5ld192YWx1ZXMgYXMgKAorICAgIHNlbGVjdCAxNSBh cyBuZXdfaWQsICdPbGl2ZXInIGFzIG5ld19uYW1lLCA4NTAwMCBhcyBuZXdfc2FsYXJ5CispCitp bnNlcnQgaW50byBpbnNlcnRzZXR0ZXN0CitzZWxlY3QgbmV3X2lkLCBuZXdfbmFtZSwgbmV3X3Nh bGFyeSwgJ1NhbGVzJyBmcm9tIG5ld192YWx1ZXM7CisKKy0tIFZlcmlmeSBDVEUgaW5zZXJ0IHdv cmtlZCAobm90IHVzaW5nIFNFVCBzeW50YXgsIGJ1dCBmb3IgY29tcGxldGVuZXNzKQorc2VsZWN0 IGlkLCBuYW1lLCBzYWxhcnksIGRlcHQgZnJvbSBpbnNlcnRzZXR0ZXN0IHdoZXJlIGlkID0gMTU7 CisKKy0tIE11bHRpLXJvdyBJTlNFUlQgU0VUIHN5bnRheAorY3JlYXRlIHRhYmxlIGluc2VydHNl dG11bHRpICgKKyAgICBjMSBpbnQsCisgICAgYzIgaW50LAorICAgIGMzIGludAorKTsKKworLS0g QmFzaWMgbXVsdGktcm93IHdpdGggc2FtZSBjb2x1bW4gb3JkZXIKK2luc2VydCBpbnRvIGluc2Vy dHNldG11bHRpIHNldCAoYzE9MSwgYzI9MiwgYzM9MyksIChjMT00LCBjMj01LCBjMz02KTsKK3Nl bGVjdCAqIGZyb20gaW5zZXJ0c2V0bXVsdGkgb3JkZXIgYnkgYzE7CisKKy0tIE11bHRpLXJvdyB3 aXRoIGRpZmZlcmVudCBjb2x1bW4gb3JkZXJzCistLSBUaGlzIHRlc3RzIHRoYXQgY29sdW1uLXZh bHVlIG1hdGNoaW5nIHdvcmtzIGNvcnJlY3RseSBhY3Jvc3Mgcm93cworaW5zZXJ0IGludG8gaW5z ZXJ0c2V0bXVsdGkgc2V0IChjMj0yMCwgYzE9MTAsIGMzPTMwKSwgKGMxPTQwLCBjMz02MCwgYzI9 NTApLCAoYzM9OTAsIGMyPTgwLCBjMT03MCk7CitzZWxlY3QgKiBmcm9tIGluc2VydHNldG11bHRp IG9yZGVyIGJ5IGMxOworCistLSBNdWx0aS1yb3cgd2l0aCBtaXhlZCBleHByZXNzaW9ucworaW5z ZXJ0IGludG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xMDAsIGMyPTIwMCwgYzM9MzAwKSwgKGMy PTUwMCwgYzE9NDAwLCBjMz02MDApOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0aSBvcmRl ciBieSBjMTsKKworLS0gVGVzdCBkaWZmZXJlbnQgY29sdW1uIHNldHMgaW4gbXVsdGktcm93IElO U0VSVCBTRVQKKy0tIEZpcnN0IHJvdyBoYXMgYWxsIGNvbHVtbnMsIHNlY29uZCByb3cgaGFzIHN1 YnNldCAoYzMgc2hvdWxkIGdldCBERUZBVUxUL05VTEwpCitpbnNlcnQgaW50byBpbnNlcnRzZXRt dWx0aSBzZXQgKGMxPTEwMDAsIGMyPTIwMDAsIGMzPTMwMDApLCAoYzE9NDAwMCwgYzI9NTAwMCk7 CitzZWxlY3QgKiBmcm9tIGluc2VydHNldG11bHRpIHdoZXJlIGMxID49IDEwMDAgb3JkZXIgYnkg YzE7CisKKy0tIEZpcnN0IHJvdyBoYXMgc3Vic2V0LCBzZWNvbmQgcm93IGhhcyBhbGwgY29sdW1u cyAoYzIgaW4gZmlyc3Qgcm93IHNob3VsZCBnZXQgREVGQVVMVC9OVUxMKQoraW5zZXJ0IGludG8g aW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xMDAxLCBjMz0zMDAxKSwgKGMxPTQwMDEsIGMyPTUwMDEs IGMzPTYwMDEpOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0aSB3aGVyZSBjMSA+PSAxMDAx IG9yZGVyIGJ5IGMxOworCistLSBEaWZmZXJlbnQgc3Vic2V0cyBpbiBlYWNoIHJvdyAodW5pb24g b2YgYWxsIGNvbHVtbnMgdXNlZCwgbWlzc2luZyBnZXQgREVGQVVMVC9OVUxMKQoraW5zZXJ0IGlu dG8gaW5zZXJ0c2V0bXVsdGkgc2V0IChjMT0xMDAyLCBjMj0yMDAyKSwgKGMxPTQwMDIsIGMzPTYw MDIpOworc2VsZWN0ICogZnJvbSBpbnNlcnRzZXRtdWx0aSB3aGVyZSBjMSA+PSAxMDAyIG9yZGVy IGJ5IGMxOworCistLSBDbGVhbnVwCitkcm9wIHRhYmxlIGluc2VydHNldHRlc3Q7Citkcm9wIHRh YmxlIGluc2VydHNldHBrOworZHJvcCB0YWJsZSBpbnNlcnRzZXRtdWx0aTsKLS0gCjIuNDcuMwoK --0000000000006d0be406549b5e84--