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 1wfnlO-005ghF-2I for pgsql-bugs@arkaria.postgresql.org; Fri, 03 Jul 2026 23:57:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wfnlN-009UMS-2C for pgsql-bugs@arkaria.postgresql.org; Fri, 03 Jul 2026 23:57:41 +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 1wfnlN-009UMI-0A for pgsql-bugs@lists.postgresql.org; Fri, 03 Jul 2026 23:57:41 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wfnlK-00000001Nr6-3wmb for pgsql-bugs@lists.postgresql.org; Fri, 03 Jul 2026 23:57:39 +0000 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-493c7902f47so6601185e9.1 for ; Fri, 03 Jul 2026 16:57:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783123055; cv=none; d=google.com; s=arc-20260327; b=gjs0oxOZzQ4WbFmHAfX6grSnmdh27xa9ZX59ncDqF7FWkhU/C3TKk+nH5wUjE/H8fC wIk//eq7vU6LpG8pGHQ99A7CN4/wyhWbMXjjKftq7S2vckVPYeWcrc6WZVeRijCsDtWn KOICMGtEijh43Pkk5JlAAeGRPaUze0JjEfnUBqve/M/wrLtZBcrQM5om6bV2s5UXu8md bOhJb4BvGPybQca1MLBrgcuibuTdwGB3zR/eW5aa8tWmvDlrxE5SliZRTlHxVKP5+mRM 4hj0IU1ACLqksF2WOG6vroQ7cxm14Jz3P1iRoZMD369Mown2WlB0Mfapjv0Rrbyx56RV b5nQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=4nixbYl/3pmHJVv/rEm9IbuD518wO93kAqBVaLvUGm4=; fh=c+LJFqLly2pzrmyPjPQxBg5vaPk9KxeHbRTE3VXf0OY=; b=DV48xkjjffm5TMaNrMtbAWGpNiSpXBOHS1JIU17Rlw0OPPFj7hBpOQRvfRrXKFtXz6 jael/9hXgNGzfsKc4lNBYwAvCF/ehXSFVeoa2TOB9Op4XTT39E7CeixwXBWmJGZQ4asv 0Qt4CxLD8BvJ/vYjG3SriJ4Y6fUYcTDr3cqROcAjUQiv/Y8K8lAj13SEDnvRExTgRq4E BIn+yxqWwDX/pwD5MjD1tH/9TGXPnZQLeLEjCh3VVFTVgyc9kcBhinJ8KAxEGyAWe7WC nyWjafq2cUGQUucF8K44MLOnZhECWvGckrLhCPoXRnOzTlEYvzajimzqdOiP+TVfb8zE khuA==; 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=gmail.com; s=20251104; t=1783123055; x=1783727855; darn=lists.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=4nixbYl/3pmHJVv/rEm9IbuD518wO93kAqBVaLvUGm4=; b=F/OVVch4QsqPhtEUd4lndKiiAjQoQjVtCglLIVzjVrAqKuB4g8wvSujPkRBV4aosnt NPEeXhgeEwn4Du456nLaaMaNAuNAzTOFDs1Ap9KhGNTijXrV4cbaDzpUC6JOueP6PGcR 2/Qon3NH5/MR6msLt6FfnLmIaVCV/E+FGsI43CoTE0U3tqzv8JHaeY37G6VLZo3J0pok ik680XrL7gYBhnP7+gEMqNL8GqHjScB3G6pze40KB4acvBJ8uGdt1S/5mHXJcxenkFkz eVlJ3r999i9E41RmycCkm2OyKjYVIm7hbKNBgiQCR5shjDNH59D1YaEWO0pIxrF4H30W I5Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783123055; x=1783727855; 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=4nixbYl/3pmHJVv/rEm9IbuD518wO93kAqBVaLvUGm4=; b=b1Wr0cDoZxgH4M2TX1uYxketabkSIrFBkv0zrJc9j6Qy9DvJWhRhgJI4+0GtSenDAb LuCG5O6Reost+FXXy3/bW2t9ekvGG9/GdrjjP3Qkrk+IrvQdjV7xkkulx6cuK8R0YWuX yShZLsqbMfr+5F7dFePIplYpkqMIY5Vlnv/HwDKJql8k4GA6+zZTqyIB8u23f5j0o+8J M7WvJhtyYAhZm8v2RK/8BwG8N0zBVb+q8M66hsqI4je4LeDUVifz1EiciC8xOoYM2OYb a99FZxP58h/0B3GgAcAJwRDk9tfYwsH8K6PGFaevRI9MBKPoU5eABir3+xKrP3UaGBHy zmUA== X-Forwarded-Encrypted: i=1; AFNElJ9PaBy+Uz4EUdU2pnndfeuf859rIyDnZ0csJvgxkuF2zfTKlviNE7/4eij5gbMaYQ1fK3MnJBMBTeDP@lists.postgresql.org X-Gm-Message-State: AOJu0Yyub7LrdHx80ejVzT6r6Sr/zcN4Rum3F73fFKbNRiVWnLOYHVgs pVmVdL8Rs6JphKb4O1GgbLtK3VcwMWDvPLNVtJ1MMVlv0Zuk7man14T02X1eUZa+iAYHKFRNu5f +VQeoB7/L4mkuMvXKyReM3Hl0E/Mmui4= X-Gm-Gg: AfdE7ck+7aAMiuMGFl75VQjyay0JasicLhzqJIMmwDWWNXh+QxlnUePDDYQfUIw7zJT zFujvnbSnuxrs41IluvXKr+L2AJhYLcVaDKV3Q9lR7waxn18HG39/zE454YxXAzTqqGGmTJWVZy tsOKwwsFOu1gOge18wkjTj1aTTorBBoP1fp78UQdtGFDgE0/0RGhoJXm9VMJkQB3fvS+W3e8nF9 v/Tj8jFDpAZyNUJij24PZzXZ9tGQMeEa4b9LshN4swE2I9Nb+LKb2B0Sv5vlH4SruZfvZg9KQYh lTyUBMEcVzZL8FtIM9iB8QTE5NmUL7ETQC/MKL8VxBvudGaQq1C0pf7fbGIYbhM= X-Received: by 2002:a05:600c:4e14:b0:493:d282:8298 with SMTP id 5b1f17b1804b1-493d28283f9mr1461655e9.16.1783123055264; Fri, 03 Jul 2026 16:57:35 -0700 (PDT) MIME-Version: 1.0 References: <19533-413a1014e5d0e766@postgresql.org> In-Reply-To: From: David Rowley Date: Sat, 4 Jul 2026 11:57:23 +1200 X-Gm-Features: AVVi8CfTJgxDwVOqGvuQmvQDil7cH-ru5XYtDd0KggyFhX04EhCIo5y5lEWdRY0 Message-ID: Subject: Re: BUG #19533: Wrong results from WindowAgg run-condition pushdown on count() with EXCLUDE CURRENT ROW To: John Naylor Cc: Richard Guo , Chengpeng Yan , "imchifan@163.com" , "pgsql-bugs@lists.postgresql.org" Content-Type: multipart/mixed; boundary="0000000000004ce42e0655bdb03f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004ce42e0655bdb03f Content-Type: text/plain; charset="UTF-8" On Fri, 3 Jul 2026 at 21:10, John Naylor wrote: > If it was from tooling, it must have stopped with the first case it > found, as is often the case. I just tried myself and found three more > apparent bugs with EXCLUDE both with and without the v1 patch. Do you > want to see the reproducers, or rethink the risk/reward ratio of > what's handled? I'm also not sure how common that clause is. Please share what you discovered. It would be good to understand if it's just a simple missing check that can be added to handle all three, or if there's just more complexity in this than making this work correctly is worth. > Separately, I also I believe I found a counterexample to the part > starting with /* No ORDER BY clause then all rows are peers */ : Thanks for finding that. Looks like I failed to consider ROWs mode for that, where the function is only monotonically increasing. The attached includes a fix for that. David --0000000000004ce42e0655bdb03f Content-Type: application/octet-stream; name="v2-0001-Fix-COUNT-s-logic-for-window-run-condition-suppor.patch" Content-Disposition: attachment; filename="v2-0001-Fix-COUNT-s-logic-for-window-run-condition-suppor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr5le3c30 RnJvbSBkZmY0YjZjOWYxNDNiM2MyY2I4MTVkM2UzNzZiMDk5MmQzNjEwMTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSb3dsZXkgPGRncm93bGV5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAzIEp1bCAyMDI2IDE0OjE3OjQyICsxMjAwClN1YmplY3Q6IFtQQVRDSCB2Ml0gRml4 IENPVU5UJ3MgbG9naWMgZm9yIHdpbmRvdyBydW4gY29uZGl0aW9uIHN1cHBvcnQKCjlkOWMwMmNj ZCBhZGRlZCBjb2RlIHRvIGFsbG93IHRoZSBleGVjdXRvciB0byBzdG9wIGVhcmx5IHdoZW4gcHJv Y2Vzc2luZwpXaW5kb3dBZ2cgbm9kZXMgd2hlcmUgYSBtb25vdG9uaWMgd2luZG93IGZ1bmN0aW9u IHN0YXJ0cyBwcm9kdWNpbmcKdmFsdWVzIHRoYXQgcmVzdWx0IGluIGEgcHVzaGVkLWRvd24gcXVh bCBubyBsb25nZXIgbWF0Y2hpbmcsIGFuZCB3aWxsCm5ldmVyIG1hdGNoIGFnYWluIGR1ZSB0byB0 aGUgd2luZG93IGZ1bmN0aW9uJ3MgbW9ub3RvbmljIHByb3BlcnRpZXMuCgpUaGF0IGNvbW1pdCBy ZXF1aXJlcyBhIFN1cHBvcnRSZXF1ZXN0V0Z1bmNNb25vdG9uaWMgdG8gZXhpc3Qgb24gdGhlCndp bmRvdyBmdW5jdGlvbiBhbmQgZm9yIGl0IHRvIGRldGVjdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBt b25vdG9uaWMuICBGb3IKQ09VTlQoQU5ZKSBhbmQgQ09VTlQoKiksIHRoZSBzdXBwb3J0IGZ1bmN0 aW9uIGZhaWxlZCB0byBjb25zaWRlciBzb21lCmNhc2VzIHdoZXJlIHRoZSBXaW5kb3dDbGF1c2Ug dXNlZCBFWENMVURFIHRvIGV4Y2x1ZGUgY2VydGFpbiByb3dzIGZyb20KYmVpbmcgYWdncmVnYXRl ZC4gIFNvbWUgV2luZG93Q2xhdXNlIGRlZmluaXRpb25zIG1lYW4gd2UgYWdncmVnYXRlIHJvd3MK dGhhdCBjb21lIGFmdGVyIHRoZSBjdXJyZW50IHJvdywgYW5kIHdoZW4gcHJvY2Vzc2luZyB0aG9z ZSByb3dzIGxhdGVyLAppZiB3ZSBFWENMVURFIGNlcnRhaW4gcm93cywgdGhlIG1vbm90b25pYyBw cm9wZXJ0eSBjYW4gYmUgYnJva2VuLgoKQW5vdGhlciBpc3N1ZSB3YXMgdGhhdCB0aGUgc3VwcG9y dCBmdW5jdGlvbiBmb3IgdGhlIENPVU5UIGFnZ3JlZ2F0ZQptaXN0YWtlbmx5IHRob3VnaHQgdGhh dCBhIFdpbmRvd0NsYXVzZSB3aXRob3V0IGFuIE9SREVSIEJZIG1lYW50IHRoYXQKdGhlIHJlc3Vs dHMgd291bGQgYmUgYm90aCBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgYW5kIGRlY3JlYXNpbmcs IGJ1dAp0aGF0J3Mgb25seSB0cnVlIHdoZW4gaW4gUkFOR0UgbW9kZSwgd2hlcmUgYWxsIHJvd3Mg YXJlIHBlZXJzLiAgSW4gUk9XUwptb2RlLCBubyByb3dzIGFyZSBwZWVycywgYW5kIHRoZSByZXN1 bHRzIGFyZSBvbmx5IG1vbnRvbmljYWxseSBpbmNyZWFzaW5nLgoKSGVyZSwgd2UgZml4IHRoZXNl IGJ1Z3MgYnkgZGlzYWJsaW5nIHRoZSAiUnVuIENvbmRpdGlvbiIgcHVzaGRvd24gZm9yIHRoZQpj YXNlcyBpdCBjYW5ub3QgYXBwbHkuCgpCdWc6ICMxOTUzMwpSZXBvcnRlZC1ieTogUWlmYW4gTGl1 IDxpbWNoaWZhbkAxNjMuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE5NTMz LTQxM2ExMDE0ZTVkMGU3NjZAcG9zdGdyZXNxbC5vcmcKLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvaW50OC5jICAgICAgICAgfCAxMDcgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3dpbmRvdy5vdXQgfCA0ODIgKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC93aW5kb3cuc3FsICAgICAgfCAyNDAgKysrKysrKysrKysrLQogMyBmaWxlcyBj aGFuZ2VkLCA4MjAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDgu YwppbmRleCA5YjQyOWRhODZkOS4uYWNmYjBmZTRmMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9pbnQ4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYwpAQCAt Nzk1LDkgKzc5NSwxMTIgQEAgaW50OGluY19zdXBwb3J0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCU1v bm90b25pY0Z1bmN0aW9uIG1vbm90b25pYyA9IE1PTk9UT05JQ0ZVTkNfTk9ORTsKIAkJaW50CQkJ ZnJhbWVPcHRpb25zID0gcmVxLT53aW5kb3dfY2xhdXNlLT5mcmFtZU9wdGlvbnM7CiAKLQkJLyog Tm8gT1JERVIgQlkgY2xhdXNlIHRoZW4gYWxsIHJvd3MgYXJlIHBlZXJzICovCisJCS8qCisJCSAq IFdoZW4gdGhlIGZyYW1lIG9wdGlvbnMgaGFzIGFuIEVYQ0xVREUgY2xhdXNlLCB0aGlzIGNhbiBh ZmZlY3QgdGhlCisJCSAqIG1vbm90b25pYyBndWFyYW50ZWVzLiAgVmFyaW91cyBjYXNlcyBhcmUg aGFuZGxlZCBvciByZWplY3RlZCBiZWxvdy4KKwkJICovCisJCWlmIChmcmFtZU9wdGlvbnMgJiBG UkFNRU9QVElPTl9FWENMVVNJT04pCisJCXsKKwkJCVdpbmRvd0Z1bmMgKndmdW5jID0gcmVxLT53 aW5kb3dfZnVuYzsKKworCQkJaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9PRkZT RVRfUFJFQ0VESU5HKQorCQkJeworCQkJCU5vZGUJICAgKmVuZE9mZnNldCA9IHJlcS0+d2luZG93 X2NsYXVzZS0+ZW5kT2Zmc2V0OworCisJCQkJLyoKKwkJCQkgKiBST1dTIG1vZGUgd2l0aCBFWENM VURFIENVUlJFTlQgUk9XIGlzIGZpbmUsIGFzIHRoZSBjb3VudAorCQkJCSAqIGNhbm5vdCBpbmNs dWRlIHJvd3MgYmV5b25kIHRoZSBjdXJyZW50IHJvdy4gIFdpdGggR1JPVVBTIG9yCisJCQkJICog UkFOR0UsIHBlZXIgcm93cyB3b3VsZCBiZSBpbmNsdWRlZCBhbmQgdGhvc2UgcGVlcnMgY291bGQg YmUKKwkJCQkgKiBhZnRlciB0aGUgY3VycmVudCByb3cuCisJCQkJICovCisJCQkJaWYgKGZyYW1l T3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JPV1MgJiYKKwkJCQkJZnJhbWVPcHRpb25zICYgRlJBTUVP UFRJT05fRVhDTFVERV9DVVJSRU5UX1JPVykKKwkJCQl7CisJCQkJCS8qIEFsbG93ZWQgKi8KKwkJ CQl9CisKKwkJCQkvKgorCQkJCSAqIE90aGVyd2lzZSwgRVhDTFVERSBpcyBmaW5lIHdoZW4gaW4g R1JPVVBTIG9yIFJPV1MgbW9kZSB3aGVuCisJCQkJICogd2UgaGF2ZSBhbiBhYm92ZSB6ZXJvIENv bnN0IGluIHRoZSBOIFBSRUNFRElORy4gIFRoaXMgbWVhbnMKKwkJCQkgKiBhbGwgdGhlIHdvdWxk LWJlLWV4Y2x1ZGVkIHJvd3MgYXJlIG5ldmVyIGluIHRoZSBmcmFtZSdzCisJCQkJICogc2NvcGUu ICBXZSBhbGxvdyBhbnkgdmFsdWUgb2YgUFJFQ0VESU5HLCBpbmNsdWRpbmcKKwkJCQkgKiBub24t Y29uc3RzIHdoZW4gRVhDTFVERSBHUk9VUCBpcyB1c2VkLCBhcyBlZmZlY3RpdmVseQorCQkJCSAq IHRoYXQncyAxIFBSRUNFRElORy4gIFRoZSBleGVjdXRvciBlbnN1cmVzIHRoZSB2YWx1ZSBpcwor CQkJCSAqIG5ldmVyIG5lZ2F0aXZlLiAgUmFuZ2UgbW9kZSBpcyBkaXNhbGxvd2VkIGFzIHRoZSBl bmRPZmZzZXQKKwkJCQkgKiBoYXMgYSBkaWZmZXJlbnQgcHVycG9zZS4KKwkJCQkgKi8KKwkJCQll bHNlIGlmICgoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRVhDTFVERV9HUk9VUCkgPT0gMCkK KwkJCQl7CisJCQkJCWVuZE9mZnNldCA9IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoTlVMTCwgZW5k T2Zmc2V0KTsKKworCQkJCQlpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fUkFOR0UgfHwK KwkJCQkJCSFJc0EoZW5kT2Zmc2V0LCBDb25zdCkgfHwgY2FzdE5vZGUoQ29uc3QsIGVuZE9mZnNl dCktPmNvbnN0aXNudWxsIHx8CisJCQkJCQlEYXR1bUdldEludDY0KGNhc3ROb2RlKENvbnN0LCBl bmRPZmZzZXQpLT5jb25zdHZhbHVlKSA8PSAwKQorCQkJCQl7CisJCQkJCQlyZXEtPm1vbm90b25p YyA9IE1PTk9UT05JQ0ZVTkNfTk9ORTsKKwkJCQkJCVBHX1JFVFVSTl9QT0lOVEVSKHJlcSk7CisJ CQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWVsc2UgaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BU SU9OX0VORF9DVVJSRU5UX1JPVykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gdGhlIGZyYW1l IGVuZHMgYXQgQ1VSUkVOVCBST1csIHdlIG11c3QgZGlzYWxsb3cKKwkJCQkgKiBDT1VOVChBTlkp IHdoZW4gaW4gUkFOR0Ugb3IgR1JPVVBTIG1vZGUgdW5sZXNzIHdlJ3JlCisJCQkJICogZXhjbHVk aW5nIHRoZSBlbnRpcmUgcGVlciBncm91cC4gIFNvbWUgdmFsdWVzIGJlaW5nIGNvdW50ZWQKKwkJ CQkgKiBtYXkgYmUgTlVMTCwgd2hpY2ggY291bGQgcmVzdWx0IGluIHRoZSBjb3VudCBnb2luZyB1 cCB3aXRoCisJCQkJICogRVhDTFVERSBDVVJSRU5UIFJPVywgb3IgZG93biB3aXRoIEVYQ0xVREUg VElFUy4gIFJPV1MgbW9kZQorCQkJCSAqIGlzIGZpbmUgYXMgdGhlIGNvdW50IGRvZXNuJ3QgaW5j bHVkZSBwZWVyIHJvd3MgYWhlYWQgb2YgdGhlCisJCQkJICogY3VycmVudCByb3cuCisJCQkJICov CisJCQkJaWYgKHdmdW5jLT53aW5mbm9pZCA9PSBGX0NPVU5UX0FOWSAmJgorCQkJCQlmcmFtZU9w dGlvbnMgJiAoRlJBTUVPUFRJT05fUkFOR0UgfCBGUkFNRU9QVElPTl9HUk9VUFMpICYmCisJCQkJ CWZyYW1lT3B0aW9ucyAmIChGUkFNRU9QVElPTl9FWENMVURFX0NVUlJFTlRfUk9XIHwgRlJBTUVP UFRJT05fRVhDTFVERV9USUVTKSkKKwkJCQl7CisJCQkJCXJlcS0+bW9ub3RvbmljID0gTU9OT1RP TklDRlVOQ19OT05FOworCQkJCQlQR19SRVRVUk5fUE9JTlRFUihyZXEpOworCQkJCX0KKworCQkJ CS8qCisJCQkJICogQ09VTlQoKikgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gYXMgQ09V TlQoQU5ZKSBzaW5jZQorCQkJCSAqIHJvd3MgaW4gdGhlIHBlZXIgZ3JvdXAgYXJlIGFsd2F5cyBj b3VudGVkIHdpdGggR1JPVVBTIGFuZAorCQkJCSAqIFJBTkdFIG1vZGVzLCBhbmQgYWxsIHRoZSBF WENMVURFIG9wdGlvbnMgYWx3YXlzIGV4Y2x1ZGUgdGhlCisJCQkJICogc2FtZSBudW1iZXIgb2Yg cm93cywganVzdCBub3QgYWx3YXlzIHRoZSBzYW1lIHJvd3MuCisJCQkJICovCisJCQl9CisKKwkJ CWVsc2UgaWYgKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9PRkZTRVRfRk9MTE9XSU5H KQorCQkJeworCQkJCU5vZGUJICAgKmVuZE9mZnNldCA9IHJlcS0+d2luZG93X2NsYXVzZS0+ZW5k T2Zmc2V0OworCisJCQkJZW5kT2Zmc2V0ID0gZXZhbF9jb25zdF9leHByZXNzaW9ucyhOVUxMLCBl bmRPZmZzZXQpOworCisJCQkJLyoKKwkJCQkgKiBJZiB0aGUgZnJhbWUgZW5kcyBiZXlvbmQgdGhl IGN1cnJlbnQgcm93IG9yIHBlZXIgZ3JvdXAsIHdlCisJCQkJICogY2FuJ3QgcHJvdmUgYW55IG1v bm90b25pYyBwcm9wZXJ0aWVzLCBhcyBjb3VudGluZyByb3dzIHRoYXQKKwkJCQkgKiBtYXkgbGF0 ZXIgYmUgZXhjbHVkZWQgYnkgRVhDTFVERSBjb3VsZCByZXN1bHQgaW4gdGhlIGNvdW50CisJCQkJ ICogZ29pbmcgZG93bi4gIFRlY2huaWNhbGx5LCBzb21lb25lIGNvdWxkIHdyaXRlIDAgRk9MTE9X SU5HLAorCQkJCSAqIHdoaWNoIGlzIHRoZSBzYW1lIGFzIENVUlJFTlQgUk9XIGluIEdST1VQUyBv ciBST1dTIG1vZGUsIHNvCisJCQkJICogZG9uJ3QgZGlzYWxsb3cgdGhhdC4KKwkJCQkgKi8KKwkJ CQlpZiAoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fUkFOR0UgfHwKKwkJCQkJIUlzQShlbmRP ZmZzZXQsIENvbnN0KSB8fCBjYXN0Tm9kZShDb25zdCwgZW5kT2Zmc2V0KS0+Y29uc3Rpc251bGwg fHwKKwkJCQkJRGF0dW1HZXRJbnQ2NChjYXN0Tm9kZShDb25zdCwgZW5kT2Zmc2V0KS0+Y29uc3R2 YWx1ZSkgPiAwKQorCQkJCXsKKwkJCQkJcmVxLT5tb25vdG9uaWMgPSBNT05PVE9OSUNGVU5DX05P TkU7CisJCQkJCVBHX1JFVFVSTl9QT0lOVEVSKHJlcSk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJ LyoKKwkJICogT3RoZXJ3aXNlLCBubyBPUkRFUiBCWSBjbGF1c2UgbWVhbnMgZWl0aGVyIGFsbCBy b3dzIGFyZSBwZWVycywgaW4KKwkJICogR1JPVVBTIG1vZGUsIG9yIHRoZSByZXN1bHQgaXMgbW9u b3RvbmljYWxseSBpbmNyZWFzaW5nLgorCQkgKi8KIAkJaWYgKHJlcS0+d2luZG93X2NsYXVzZS0+ b3JkZXJDbGF1c2UgPT0gTklMKQotCQkJbW9ub3RvbmljID0gTU9OT1RPTklDRlVOQ19CT1RIOwor CQkJbW9ub3RvbmljID0gKGZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JPV1MpID8KKwkJCQlN T05PVE9OSUNGVU5DX0lOQ1JFQVNJTkcgOiBNT05PVE9OSUNGVU5DX0JPVEg7CiAJCWVsc2UKIAkJ ewogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2luZG93Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2luZG93Lm91dAppbmRleCA5MGQ5Zjk1M2I4 MS4uOWU0MTRmMGI0MTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2lu ZG93Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpbmRvdy5vdXQKQEAgLTQy MzIsMjMgKzQyMzIsNTkgQEAgV0hFUkUgYyA8PSAzOwogKDggcm93cykKIAogLS0gRW5zdXJlIHdl IGdldCB0aGUgY29ycmVjdCBydW4gY29uZGl0aW9uIHdoZW4gdGhlIHdpbmRvdyBmdW5jdGlvbiBp cyBib3RoCi0tLSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgYW5kIGRlY3JlYXNpbmcuCistLSBt b25vdG9uaWNhbGx5IGluY3JlYXNpbmcgYW5kIGRlY3JlYXNpbmcgaW4gUkFOR0UgbW9kZSB3aXRo b3V0IGFuIE9SREVSIEJZCiBFWFBMQUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgKiBGUk9NCiAgIChT RUxFQ1QgZW1wbm8sCiAgICAgICAgICAgZGVwbmFtZSwKICAgICAgICAgICBzYWxhcnksCi0gICAg ICAgICAgY291bnQoZW1wbm8pIE9WRVIgKCkgYworICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVS IChSQU5HRSBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBDVVJSRU5UIFJPVykgYwogICAgRlJPTSBl bXBzYWxhcnkpIGVtcAogV0hFUkUgYyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgV2luZG93QWdnCi0gICBX aW5kb3c6IHcxIEFTICgpCisgICBXaW5kb3c6IHcxIEFTIChSQU5HRSBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBDVVJSRU5UIFJPVykKICAgIFJ1biBDb25kaXRpb246IChjb3VudChlbXBzYWxhcnku ZW1wbm8pIE9WRVIgdzEgPSAxKQogICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQogKDQgcm93 cykKIAorLS0gRW5zdXJlIHRoYXQgUk9XUyBtb2RlIHdpdGhvdXQgYW4gT1JERVIgQlkgZG9lc24n dCB0aGluayBpdCdzIG1vbm90b25pY2FsbHkKKy0tIGRlY3JlYXNpbmcsIGkuZS4gZG9uJ3QgcHVz aCBkb3duIHRoZSBydW4gY29uZGl0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICog RlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIGRlcG5hbWUsCisgICAgICAgICAgc2Fs YXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjID4g MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAKKyAgIEZpbHRl cjogKGVtcC5jID4gMSkKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdzEgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cpCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNSByb3dzKQorCistLSBBcyBhYm92ZSwgYnV0IGNoZWNr IHdlIGRldGVjdCBpdCdzIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIGRlcG5hbWUs CisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkg ZW1wCitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBDVVJSRU5UIFJPVykKKyAgIFJ1biBDb25k aXRpb246IChjb3VudChlbXBzYWxhcnkuZW1wbm8pIE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTZXEg U2NhbiBvbiBlbXBzYWxhcnkKKyg0IHJvd3MpCisKIC0tIFRyeSBhbm90aGVyIGNhc2Ugd2l0aCBh IFdpbmRvd0Z1bmMgd2l0aCBhIGJ5cmVmIHJldHVybiB0eXBlCiBTRUxFQ1QgKiBGUk9NCiAgIChT RUxFQ1Qgcm93X251bWJlcigpIE9WRVIgKFBBUlRJVElPTiBCWSBzYWxhcnkpIEFTIHJuLApAQCAt NDQzNiw2ICs0NDcyLDQ0MiBAQCBXSEVSRSBjID0gMTsKICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBlbXBzYWxhcnkKICg5IHJvd3MpCiAKKy0tCistLSBFbnN1cmUgd2UgZ2V0IHRoZSBj b3JyZWN0IGJlaGF2aW9yIGZvciBydW4gY29uZGl0aW9uIHB1c2hkb3duIHdoZW4gdGhlCistLSBm cmFtZSBvcHRpb24gaGFzIGFuIEVYQ0xVREUgY2xhdXNlCistLQorLS0gRW5zdXJlIHB1c2hkb3du IG9jY3VycyBmb3IgMCBQUkVDRURJTkcgd2hlbiB3ZSBleGNsdWRlIHRoZSBlbnRpcmUgcGVlciBn cm91cAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5v LAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBz YWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMCBQUkVDRURJTkcg RVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVt cHNhbGFyeS5zYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgJzAn OjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgR1JPVVApCisgICBSdW4gQ29uZGl0aW9uOiAoY291 bnQoKikgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBz YWxhcnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dz KQorCistLSBFbnN1cmUgd2UgZG9uJ3QgZ2V0IHB1c2hkb3duIHdpdGggRVhDTFVERSBDVVJSRU5U IFJPVworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5v LAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBz YWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMCBQUkVDRURJTkcg RVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8 PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBT Y2FuIG9uIGVtcAorICAgRmlsdGVyOiAoZW1wLmMgPD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAg ICAgICAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgR1JPVVBTIEJF VFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgJzAnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xV REUgQ1VSUkVOVCBST1cpCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBL ZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBz YWxhcnkKKyg3IHJvd3MpCisKKy0tIEVuc3VyZSB3ZSBkb24ndCBnZXQgcHVzaGRvd24gd2l0aCBF WENMVURFIFRJRVMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVD VCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JE RVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJF Q0VESU5HIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8 PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAKKyAg IEZpbHRlcjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6 IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRF RCBQUkVDRURJTkcgQU5EICcwJzo6YmlnaW50IFBSRUNFRElORyBFWENMVURFIFRJRVMpCisgICAg ICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg3IHJvd3MpCisKKy0t IEVuc3VyZSBwdXNoZG93biBvY2N1cnMgd2l0aCAwIFBSRUNFRElORyB3aGVuIGluIFJPV1MgbW9k ZSBhbmQgb25seQorLS0gZXhjbHVkaW5nIHRoZSBjdXJyZW50IHJvdworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwK KyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVO Qk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VESU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMK KyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5z YWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EICcwJzo6YmlnaW50IFBS RUNFRElORyBFWENMVURFIENVUlJFTlQgUk9XKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50KCop IE9WRVIgdzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2FsYXJ5 LnNhbGFyeQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykKKwor LS0gRVhDTFVERSBHUk9VUCBpcyBhbHNvIGZpbmUgdG8gcHVzaCBkb3duIHRoZSBydW4gY29uZGl0 aW9uIHdpdGggMCBQUkVDRURJTkcKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00K KyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikg T1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFO RCAwIFBSRUNFRElORyBFWENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitX SEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChP UkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5H IEFORCAnMCc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBHUk9VUCkKKyAgIFJ1biBDb25kaXRp b246IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkK Kyg2IHJvd3MpCisKKy0tIEVuc3VyZSB3ZSBkb24ndCBkbyBydW4gY29uZGl0aW9uIHB1c2hkb3du IGZvciBFWENMVURFIFRJRVMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAg KFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZF UiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAw IFBSRUNFRElORyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJF IGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAKKyAg IEZpbHRlcjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6 IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQg UFJFQ0VESU5HIEFORCAnMCc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBUSUVTKQorICAgICAg ICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5Cisg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNyByb3dzKQorCistLSBF bnN1cmUgdGhlIGZvbGxvd2luZyA2IHRlc3RzIGRvIHB1c2hkb3duIHRoZSBydW4gY29uZGl0aW9u LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAor ICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxh cnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQUkVDRURJTkcgRVhD TFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNh bGFyeS5zYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgJzEnOjpi aWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgR1JPVVApCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQo KikgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxh cnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisg ICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFy eSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBSRUNFRElORyBFWENM VURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBB UyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJF Q0VESU5HIEFORCAnMSc6OmJpZ2ludCBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykKKyAg IFJ1biBDb25kaXRpb246IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBlbXBzYWxhcnkKKyg2IHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZS T00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQo KikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIDEgUFJFQ0VESU5HIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVt cAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcx IEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQ UkVDRURJTkcgQU5EICcxJzo6YmlnaW50IFBSRUNFRElORyBFWENMVURFIFRJRVMpCisgICBSdW4g Q29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAg IFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1w c2FsYXJ5CisoNiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisg IChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9W RVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQg MSBQUkVDRURJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVt cAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBST1dTIEJFVFdFRU4gVU5C T1VOREVEIFBSRUNFRElORyBBTkQgJzEnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgQ1VSUkVO VCBST1cpCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3MSA8PSAzKQorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAg ICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVE IFBSRUNFRElORyBBTkQgMSBQUkVDRURJTkcgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBz YWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VO REVEIFBSRUNFRElORyBBTkQgJzEnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgR1JPVVApCisg ICBSdW4gQ29uZGl0aW9uOiAoY291bnQoKikgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gZW1wc2FsYXJ5CisoNiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBG Uk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50 KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgMSBQUkVDRURJTkcgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1w CitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MSBBUyAo T1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgJzEnOjpiaWdpbnQgUFJFQ0VESU5HIEVYQ0xVREUgVElFUykKKyAgIFJ1biBDb25kaXRp b246IChjb3VudCgqKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkK Kyg2IHJvd3MpCisKKy0tIEZvciB0aGUgZm9sbG93aW5nIDQgdGVzdHMsIGVuc3VyZSB0aGVyZSdz IG5vIHB1c2hkb3duIHdpdGggQ09VTlQoQU5ZKSB3aGVuCistLSBleGNsdWRpbmcgcm93cyBmcm9t IHRoZSBjdXJyZW50IHBlZXIgZ3JvdXAuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBG Uk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50 KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJF Q0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVt cHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkg U2NhbiBvbiBlbXAKKyAgIEZpbHRlcjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2luZG93QWdnCisg ICAgICAgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJBTkdFIEJF VFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBDVVJSRU5U IFJPVykKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogZW1wc2Fs YXJ5LnNhbGFyeQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDcg cm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVt cG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykgT1ZFUiAoT1JE RVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVO VCBST1cgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9 IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gZW1wCisgICBGaWx0ZXI6IChlbXAuYyA8PSAzKQor ICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2Fs YXJ5LnNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQg Uk9XIEVYQ0xVREUgVElFUykKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0 IEtleTogZW1wc2FsYXJ5LnNhbGFyeQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVt cHNhbGFyeQorKDcgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQor ICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBu bykgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJ TkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2Fs YXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNj YW4gb24gZW1wCisgICBGaWx0ZXI6IChlbXAuYyA8PSAzKQorICAgLT4gIFdpbmRvd0FnZworICAg ICAgICAgV2luZG93OiB3MSBBUyAoT1JERVIgQlkgZW1wc2FsYXJ5LnNhbGFyeSBHUk9VUFMgQkVU V0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIENVUlJFTlQg Uk9XKQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxh cnkuc2FsYXJ5CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNyBy b3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1w bm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChPUkRF UiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVO VCBST1cgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9 IDM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAKKyAgIEZpbHRlcjogKGVtcC5jIDw9IDMp CisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBz YWxhcnkuc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJF TlQgUk9XIEVYQ0xVREUgVElFUykKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBT b3J0IEtleTogZW1wc2FsYXJ5LnNhbGFyeQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGVtcHNhbGFyeQorKDcgcm93cykKKworLS0gRW5zdXJlIHRoZSBmb2xsb3dpbmcgMiB0ZXN0cyBw dXNoIGRvd24gdGhlIHJ1biBjb25kaXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAq IEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291 bnQoZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQ UkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2Fs YXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZ IGVtcHNhbGFyeS5zYWxhcnkgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBD VVJSRU5UIFJPVyBFWENMVURFIEdST1VQKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50KGVtcHNh bGFyeS5lbXBubykgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5Ciso NiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1Qg ZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChP UkRFUiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VS UkVOVCBST1cgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUg YyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2Fs YXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVY Q0xVREUgR1JPVVApCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoZW1wc2FsYXJ5LmVtcG5vKSBP VkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGVtcHNhbGFyeS5z YWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkKKyg2IHJvd3MpCisKKy0t IEVuc3VyZSB0aGUgZm9sbG93aW5nIDMgUk9XUyBtb2RlIHRlc3RzIGFsc28gcHVzaCBkb3duCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAg ICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBzYWxh cnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xV REUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2Fs YXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENM VURFIENVUlJFTlQgUk9XKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50KGVtcHNhbGFyeS5lbXBu bykgT1ZFUiB3MSA8PSAzKQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxh cnkuc2FsYXJ5CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQor CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisg ICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBz YWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVY Q0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn CisgICBXaW5kb3c6IHcxIEFTIChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VF TiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIEdST1VQKQorICAg UnVuIENvbmRpdGlvbjogKGNvdW50KGVtcHNhbGFyeS5lbXBubykgT1ZFUiB3MSA8PSAzKQorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5CisgICAgICAgICAt PiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAg ICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVO Qk9VTkRFRCBQUkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgVElFUykgYworICAgRlJP TSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChPUkRF UiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFO RCBDVVJSRU5UIFJPVyBFWENMVURFIFRJRVMpCisgICBSdW4gQ29uZGl0aW9uOiAoY291bnQoZW1w c2FsYXJ5LmVtcG5vKSBPVkVSIHcxIDw9IDMpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBL ZXk6IGVtcHNhbGFyeS5zYWxhcnkKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBlbXBzYWxhcnkK Kyg2IHJvd3MpCisKKy0tIEVuc3VyZSBSQU5HRSBtb2RlIHdpdGggMSBGT0xMT1dJTkcgZG9lcyBu b3QgcHVzaCBkb3duIHRoZSBydW4gY29uZGl0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAg IGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQ UkVDRURJTkcgQU5EIDEgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00g ZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVy eSBTY2FuIG9uIGVtcAorICAgRmlsdGVyOiAoZW1wLmMgPD0gMykKKyAgIC0+ICBXaW5kb3dBZ2cK KyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkgUkFOR0Ug QkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIEZPTExPV0lORyBFWENMVURFIENVUlJF TlQgUk9XKQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBz YWxhcnkuc2FsYXJ5CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5Ciso NyByb3dzKQorCistLSBFbnN1cmUgdGhlcmUncyBubyBydW4gY29uZGl0aW9uIHB1c2hkb3duIHdp dGggYSBub24tY29uc3QgTiBGT0xMT1dJTkcgdmFsdWUKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAg ICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQg UFJFQ0VESU5HIEFORCByYW5kb20oMSwxMCkgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cp IGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiBlbXAKKyAgIEZpbHRl cjogKGVtcC5jIDw9IDMpCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcxIEFT IChPUkRFUiBCWSBlbXBzYWxhcnkuc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VE SU5HIEFORCByYW5kb20oMSwgMTApIEZPTExPV0lORyBFWENMVURFIENVUlJFTlQgUk9XKQorICAg ICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBlbXBzYWxhcnkuc2FsYXJ5 CisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZW1wc2FsYXJ5CisoNyByb3dzKQorCist LSBFbnN1cmUgd2UgcHVzaCBkb3duIHRoZSBydW4gY29uZGl0aW9uIHdpdGggMCBmb2xsb3dpbmcs IHdoaWNoIGlzIHRoZSBzYW1lIGFzIENVUlJFTlQgUk9XLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAg ICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRF RCBQUkVDRURJTkcgQU5EIDAgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZS T00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGVtcHNhbGFyeS5zYWxhcnkg Uk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EICcwJzo6YmlnaW50IEZPTExPV0lO RyBFWENMVURFIENVUlJFTlQgUk9XKQorICAgUnVuIENvbmRpdGlvbjogKGNvdW50KCopIE9WRVIg dzEgPD0gMykKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogZW1wc2FsYXJ5LnNhbGFy eQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGVtcHNhbGFyeQorKDYgcm93cykKKwogLS0gVGVz dCBTb3J0IG5vZGUgY29sbGFwc2luZwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUICogRlJP TQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2luZG93LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpbmRvdy5zcWwKaW5kZXggNWFjM2E0ODZlMTYuLjczM2ViMGNkOGY3IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aW5kb3cuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpbmRvdy5zcWwKQEAgLTEzNjEsMTYgKzEzNjEsMzcgQEAgU0VMRUNUICog RlJPTQogV0hFUkUgYyA8PSAzOwogCiAtLSBFbnN1cmUgd2UgZ2V0IHRoZSBjb3JyZWN0IHJ1biBj b25kaXRpb24gd2hlbiB0aGUgd2luZG93IGZ1bmN0aW9uIGlzIGJvdGgKLS0tIG1vbm90b25pY2Fs bHkgaW5jcmVhc2luZyBhbmQgZGVjcmVhc2luZy4KKy0tIG1vbm90b25pY2FsbHkgaW5jcmVhc2lu ZyBhbmQgZGVjcmVhc2luZyBpbiBSQU5HRSBtb2RlIHdpdGhvdXQgYW4gT1JERVIgQlkKIEVYUExB SU4gKENPU1RTIE9GRikKIFNFTEVDVCAqIEZST00KICAgKFNFTEVDVCBlbXBubywKICAgICAgICAg ICBkZXBuYW1lLAogICAgICAgICAgIHNhbGFyeSwKLSAgICAgICAgICBjb3VudChlbXBubykgT1ZF UiAoKSBjCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIgKFJBTkdFIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIENVUlJFTlQgUk9XKSBjCiAgICBGUk9NIGVtcHNhbGFyeSkgZW1wCiBXSEVSRSBj ID0gMTsKIAorLS0gRW5zdXJlIHRoYXQgUk9XUyBtb2RlIHdpdGhvdXQgYW4gT1JERVIgQlkgZG9l c24ndCB0aGluayBpdCdzIG1vbm90b25pY2FsbHkKKy0tIGRlY3JlYXNpbmcsIGkuZS4gZG9uJ3Qg cHVzaCBkb3duIHRoZSBydW4gY29uZGl0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU ICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIGRlcG5hbWUsCisgICAgICAgICAg c2FsYXJ5LAorICAgICAgICAgIGNvdW50KGVtcG5vKSBPVkVSIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBj ID4gMTsKKworLS0gQXMgYWJvdmUsIGJ1dCBjaGVjayB3ZSBkZXRlY3QgaXQncyBtb25vdG9uaWNh bGx5IGluY3JlYXNpbmcKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBkZXBuYW1lLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAg ICAgICBjb3VudChlbXBubykgT1ZFUiAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBDVVJS RU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworCiAtLSBU cnkgYW5vdGhlciBjYXNlIHdpdGggYSBXaW5kb3dGdW5jIHdpdGggYSBieXJlZiByZXR1cm4gdHlw ZQogU0VMRUNUICogRlJPTQogICAoU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIChQQVJUSVRJT04g Qlkgc2FsYXJ5KSBBUyBybiwKQEAgLTE0NjAsNiArMTQ4MSwyMjEgQEAgU0VMRUNUICogRlJPTQog ICAgRlJPTSBlbXBzYWxhcnkpIGVtcAogV0hFUkUgYyA9IDE7CiAKKy0tCistLSBFbnN1cmUgd2Ug Z2V0IHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciBydW4gY29uZGl0aW9uIHB1c2hkb3duIHdoZW4g dGhlCistLSBmcmFtZSBvcHRpb24gaGFzIGFuIEVYQ0xVREUgY2xhdXNlCistLQorCistLSBFbnN1 cmUgcHVzaGRvd24gb2NjdXJzIGZvciAwIFBSRUNFRElORyB3aGVuIHdlIGV4Y2x1ZGUgdGhlIGVu dGlyZSBwZWVyIGdyb3VwCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChT RUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIg KE9SREVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAw IFBSRUNFRElORyBFWENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVS RSBjIDw9IDM7CisKKy0tIEVuc3VyZSB3ZSBkb24ndCBnZXQgcHVzaGRvd24gd2l0aCBFWENMVURF IENVUlJFTlQgUk9XCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxF Q1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9S REVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIFBS RUNFRElORyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitX SEVSRSBjIDw9IDM7CisKKy0tIEVuc3VyZSB3ZSBkb24ndCBnZXQgcHVzaGRvd24gd2l0aCBFWENM VURFIFRJRVMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBl bXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIg Qlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VE SU5HIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAz OworCisKKy0tIEVuc3VyZSBwdXNoZG93biBvY2N1cnMgd2l0aCAwIFBSRUNFRElORyB3aGVuIGlu IFJPV1MgbW9kZSBhbmQgb25seQorLS0gZXhjbHVkaW5nIHRoZSBjdXJyZW50IHJvdworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAg IHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBC RVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDAgUFJFQ0VESU5HIEVYQ0xVREUgQ1VSUkVO VCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworLS0gRVhD TFVERSBHUk9VUCBpcyBhbHNvIGZpbmUgdG8gcHVzaCBkb3duIHRoZSBydW4gY29uZGl0aW9uIHdp dGggMCBQUkVDRURJTkcKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAo T1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIFBS RUNFRElORyBFWENMVURFIEdST1VQKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBj IDw9IDM7CisKKy0tIEVuc3VyZSB3ZSBkb24ndCBkbyBydW4gY29uZGl0aW9uIHB1c2hkb3duIGZv ciBFWENMVURFIFRJRVMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAo T1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIFBS RUNFRElORyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAKK1dIRVJFIGMg PD0gMzsKKworCistLSBFbnN1cmUgdGhlIGZvbGxvd2luZyA2IHRlc3RzIGRvIHB1c2hkb3duIHRo ZSBydW4gY29uZGl0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAo U0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudCgqKSBPVkVS IChPUkRFUiBCWSBzYWxhcnkgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQg MSBQUkVDRURJTkcgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hF UkUgYyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxF Q1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9S REVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAxIFBS RUNFRElORyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitX SEVSRSBjIDw9IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAo T1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIDEg UFJFQ0VESU5HIEVYQ0xVREUgVElFUykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUg YyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1Qg ZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVS IEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQUkVDRURJ TkcgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUg YyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1Qg ZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVS IEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQUkVDRURJ TkcgRVhDTFVERSBHUk9VUCkgYworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAz OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NCisgIChTRUxFQ1QgZW1wbm8s CisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIHNh bGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBQUkVDRURJTkcgRVhD TFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisKKwor LS0gRm9yIHRoZSBmb2xsb3dpbmcgNCB0ZXN0cywgZW5zdXJlIHRoZXJlJ3Mgbm8gcHVzaGRvd24g d2l0aCBDT1VOVChBTlkpIHdoZW4KKy0tIGV4Y2x1ZGluZyByb3dzIGZyb20gdGhlIGN1cnJlbnQg cGVlciBncm91cC4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVD VCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9WRVIg KE9SREVSIEJZIHNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIENV UlJFTlQgUk9XIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBlbXAK K1dIRVJFIGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTQorICAo U0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChlbXBubykg T1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBB TkQgQ1VSUkVOVCBST1cgRVhDTFVERSBUSUVTKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitX SEVSRSBjIDw9IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNF TEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1wbm8pIE9W RVIgKE9SREVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFO RCBDVVJSRU5UIFJPVyBFWENMVURFIENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkg ZW1wCitXSEVSRSBjIDw9IDM7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00K KyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoZW1w bm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBHUk9VUFMgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VE SU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBl bXAKK1dIRVJFIGMgPD0gMzsKKworLS0gRW5zdXJlIHRoZSBmb2xsb3dpbmcgMiB0ZXN0cyBwdXNo IGRvd24gdGhlIHJ1biBjb25kaXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZS T00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQo ZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBSQU5HRSBCRVRXRUVOIFVOQk9VTkRFRCBQUkVD RURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5 KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJP TQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3VudChl bXBubykgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IEdST1VQUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVD RURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2FsYXJ5 KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworLS0gRW5zdXJlIHRoZSBmb2xsb3dpbmcgMyBST1dTIG1v ZGUgdGVzdHMgYWxzbyBwdXNoIGRvd24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZS T00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQo ZW1wbm8pIE9WRVIgKE9SREVSIEJZIHNhbGFyeSBST1dTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNF RElORyBBTkQgQ1VSUkVOVCBST1cgRVhDTFVERSBDVVJSRU5UIFJPVykgYworICAgRlJPTSBlbXBz YWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg KiBGUk9NCisgIChTRUxFQ1QgZW1wbm8sCisgICAgICAgICAgc2FsYXJ5LAorICAgICAgICAgIGNv dW50KGVtcG5vKSBPVkVSIChPUkRFUiBCWSBzYWxhcnkgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQ UkVDRURJTkcgQU5EIENVUlJFTlQgUk9XIEVYQ0xVREUgR1JPVVApIGMKKyAgIEZST00gZW1wc2Fs YXJ5KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICog RlJPTQorICAoU0VMRUNUIGVtcG5vLAorICAgICAgICAgIHNhbGFyeSwKKyAgICAgICAgICBjb3Vu dChlbXBubykgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJF Q0VESU5HIEFORCBDVVJSRU5UIFJPVyBFWENMVURFIFRJRVMpIGMKKyAgIEZST00gZW1wc2FsYXJ5 KSBlbXAKK1dIRVJFIGMgPD0gMzsKKworLS0gRW5zdXJlIFJBTkdFIG1vZGUgd2l0aCAxIEZPTExP V0lORyBkb2VzIG5vdCBwdXNoIGRvd24gdGhlIHJ1biBjb25kaXRpb24KK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAgICAgICAgICBzYWxhcnks CisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5IFJBTkdFIEJFVFdFRU4g VU5CT1VOREVEIFBSRUNFRElORyBBTkQgMSBGT0xMT1dJTkcgRVhDTFVERSBDVVJSRU5UIFJPVykg YworICAgRlJPTSBlbXBzYWxhcnkpIGVtcAorV0hFUkUgYyA8PSAzOworCistLSBFbnN1cmUgdGhl cmUncyBubyBydW4gY29uZGl0aW9uIHB1c2hkb3duIHdpdGggYSBub24tY29uc3QgTiBGT0xMT1dJ TkcgdmFsdWUKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBl bXBubywKKyAgICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIg Qlkgc2FsYXJ5IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCByYW5kb20oMSwx MCkgRk9MTE9XSU5HIEVYQ0xVREUgQ1VSUkVOVCBST1cpIGMKKyAgIEZST00gZW1wc2FsYXJ5KSBl bXAKK1dIRVJFIGMgPD0gMzsKKworLS0gRW5zdXJlIHdlIHB1c2ggZG93biB0aGUgcnVuIGNvbmRp dGlvbiB3aXRoIDAgZm9sbG93aW5nLCB3aGljaCBpcyB0aGUgc2FtZSBhcyBDVVJSRU5UIFJPVy4K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00KKyAgKFNFTEVDVCBlbXBubywKKyAg ICAgICAgICBzYWxhcnksCisgICAgICAgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgc2FsYXJ5 IFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCAwIEZPTExPV0lORyBFWENMVURF IENVUlJFTlQgUk9XKSBjCisgICBGUk9NIGVtcHNhbGFyeSkgZW1wCitXSEVSRSBjIDw9IDM7CisK IC0tIFRlc3QgU29ydCBub2RlIGNvbGxhcHNpbmcKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVD VCAqIEZST00KLS0gCjIuNTMuMAoK --0000000000004ce42e0655bdb03f--