From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id +A8eGwVQqGJthgAAbAwnHQ (envelope-from ) for ; Tue, 14 Jun 2022 11:08:21 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id aD3HGgVQqGKaYgEAauVa8A (envelope-from ) for ; Tue, 14 Jun 2022 11:08:21 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id CACCF2CA75 for ; Tue, 14 Jun 2022 11:08:20 +0200 (CEST) Received: from localhost ([::1]:40680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o12X5-00059T-Ov for larch@yhetil.org; Tue, 14 Jun 2022 05:08:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41616) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o12TZ-00056O-1V for emacs-orgmode@gnu.org; Tue, 14 Jun 2022 05:04:43 -0400 Received: from mail-lj1-x235.google.com ([2a00:1450:4864:20::235]:40569) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o12TX-0002U9-1O for emacs-orgmode@gnu.org; Tue, 14 Jun 2022 05:04:40 -0400 Received: by mail-lj1-x235.google.com with SMTP id y29so8970679ljd.7 for ; Tue, 14 Jun 2022 02:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vicarious-living-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=k/Pn0/Syudfmocsnav8jWAOF0N5P0djUD51nNdbskaU=; b=i+KjxOfQ8v9aLhv72Zn/CkSWxIRY5DYQvZl3upbCEbqxClp3G5f1zM3tRRmLeDIkW0 x0XQQqgAdq6ujMBuI9Ke0FbOUzmHSlrgQ/50u4vIp0oyggLe+U8qWgj4IXxea8fbKURS 9Vt43FE84gzTgYQoh7DNlJChDeyY86+yVOG1jGoFbN4wMPWJjBG6qvi15bbzrw12JQhJ 9W1EvP+iftUBFWgycgXd0+5GDQZA87GrMFUKNYF5R54fSvtJuaRsqMCA5Xqv4Yfr/ldz NukFtoL160mdksxPkl4mOowERomGOeaQJd2X778wyJlZcWFKRXUgZenVQvmE9D/2IcFy MVGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=k/Pn0/Syudfmocsnav8jWAOF0N5P0djUD51nNdbskaU=; b=jikI9+KcP75uhsLkVfVs6SiWzY8nf5pnSUCuWXmkKyZv1KLyT/Q4cNNjIcql1cyilX SjGKPgpLUhyshS2YHRIV6yLBqL/wlPJGari7cukQ4mWnpCyoVs44P0DllQxHplY3/Nk+ Aj+1cLSFzcXiByUfue+4zuawgmlayqZqumDBjyLbaLgJ+r0J1W0IUqfmqAs9+SpHcMQY mTs1x7jedgmB9mUwPrswKoDH2CWL+7n5XaSb/9LQ7uWFXP7PvkCJindKMKHmb+h/+MMF 6wKANvhKh/Rm1pqfK6gk+QGDDjVlj6nJ+Hmccul6sxUaiIGx7Bx54dHXfsDD2il1i4sY +1DA== X-Gm-Message-State: AJIora8+7rPkv2rRJ3y00V0B3JPdIuFjvPfwSVDUY3yZHg3a9NgJqVzp Oi8prkyOuvegzdXenJ6Cd9fiPEcBZY+7sq8FxgHxFA== X-Google-Smtp-Source: AGRyM1vNy2SW4fvlOuT+5sbHjsto2iY4d2Wj4vzj0y24hljeCZJpnjv7mDB307z1TFIoTTDAckv8N7tuURU6DMRh8Pc= X-Received: by 2002:a2e:8898:0:b0:255:877b:5315 with SMTP id k24-20020a2e8898000000b00255877b5315mr1980972lji.191.1655197476454; Tue, 14 Jun 2022 02:04:36 -0700 (PDT) MIME-Version: 1.0 References: <981938.1630590273@apollo2.minshall.org> <87czpqjqvw.fsf@localhost> <87zgkey55y.fsf@localhost> <8735i5u039.fsf@localhost> <87h74rq0ql.fsf@localhost> <87czffbc0r.fsf@localhost> <87sfo7q3xs.fsf@localhost> In-Reply-To: From: Ryan Scott Date: Tue, 14 Jun 2022 02:04:24 -0700 Message-ID: Subject: Re: [PATCH] Re: New source block results option for attaching file to node To: Ihor Radchenko Cc: numbchild@gmail.com, Greg Minshall , Timothy , emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="0000000000009e573005e164b123" Received-SPF: none client-ip=2a00:1450:4864:20::235; envelope-from=ryan@vicarious-living.com; helo=mail-lj1-x235.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1655197701; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=m6ALUhZRBx6KVKefHLGuIz9xUDxLSovTYQlGKD+5NyU=; b=rX2oWVHg5ao+xA7XN6gA+hlglVCEAsFv7K8qSO4241oDe9n28iOwzU5Ev73v8vjsRCCRa8 tpwmgVl6yi0DSnt5S5PLiUUsZS4bYr2yQyTcugtboRXUa2W9lTUVzoFhgm+DLfTNiAxXyi spS7v94Sre1L5x2Bo6eedIZ+EcLaSeDKfRmT7oKtZoEi8nM8OklVaaXOL/BIXtgedmOIZX yKVLbY4Fk0CvQ+IGSQB5aI4CfUjLZI6LBxGZFNcde4jVYU9QM9UKZa03S/0QT0ebg4MdSx VWrxzD2b3r5+WM62HeJi65PvTCa03L/lirxppEn0aFQU5J9V+kkFf0Ioez7WyA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1655197701; a=rsa-sha256; cv=none; b=Vgyct1aWO0qNpcBFU6ThzKBML95hN4DGbs53iai0hTOGv2vT6gal7s6sqxnQlbovw7MFlR rkTDSLl9XawCX4yP5kUE+0fsQtXdLlOI8s+UEyxgjsh4bqsi1ZmKcTNpZZqo5sXoek8iZB RcNGXqRxSFOAbccZG3CKzP4+6jfMdAnNW1QawQtRvhrUh3OHrGJZhKBu5s8/gRzJfZz8z0 R9qghyUT6vfRBxhVdQqCe5Sarkxv3OwnhOm2ZODtEu/LIpuQKZnFr7kZA7iWPu3o4kfuMl oghu3DrNpQ20dmAimMJTsTGlotOQ6qzPwEmp30m2ol1xven8XDzczbgmU90Qsw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b=i+KjxOfQ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 2.11 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b=i+KjxOfQ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: CACCF2CA75 X-Spam-Score: 2.11 X-Migadu-Scanner: scn0.migadu.com X-TUID: IIeIZ88xAxgv --0000000000009e573005e164b123 Content-Type: multipart/alternative; boundary="0000000000009e572e05e164b121" --0000000000009e572e05e164b121 Content-Type: text/plain; charset="UTF-8" I put together a clean setup in docker for running the tests and believe I've gotten to the source of the problem. However I've thought that a few times now. This version of the patch has all tests passing. The problem was in org-results-to-file and the attach dir detection. It both had problems with an introduced assumption that the buffer-file-name would be non-nil (causing several tests to fail) as well as being generally overzealous in detecting file result paths as attachment links. On Mon, Jun 13, 2022 at 10:55 PM Ryan Scott wrote: > Strange. I'll figure out a better setup for running the tests and get to > the bottom of that. > Thanks for the help. > > On Tue, Jun 14, 2022, 00:10 Ihor Radchenko wrote: > >> Ryan Scott writes: >> >> > Ah sorry about that. I'm on a windows laptop and didn't have make, so >> was >> > testing interactively and they were passing. >> > I cleaned that up and remove the f-* usage and verified under Ubuntu (on >> > WSL) that the new tests are passing. I was getting some failures with >> > unrelated tests, but also get those in master as well. >> >> I am still getting test failures using Emacs 28. >> All the tests are passing on main. >> >> Example backtrace: >> >> file-name-directory(nil) >> org-babel-result-to-file("/tmp/test.txt" nil attachment) >> org-babel-insert-result("/tmp/test.txt" ("replace" "value" "file" "g >> org-babel-execute-src-block() >> (progn (org-mode) (let ((point (string-match "" inside-text)) >> (unwind-protect (progn (org-mode) (let ((point (string-match "> (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn >> (let ((temp-buffer (generate-new-buffer " *temp*" t))) (save-current >> (let ((inside-text (if (stringp "\n#+begin_src shell :results >> (let ((lexical-binding nil)) (let ((inside-text (if (stringp "\n> (lambda nil (let ((lexical-binding nil)) (let ((inside-text (if (str >> ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test >> ert-run-test(#s(ert-test :name test-ob/result-graphics-link-type-hea >> ert-run-or-rerun-test(#s(ert--stats :selector "test-ob" :tests ... : >> ert-run-tests("test-ob" #f(compiled-function (event-type &rest event >> ert-run-tests-batch("test-ob") >> ert-run-tests-batch-and-exit("test-ob") >> (let ((org-id-track-globally t) (org-test-selector (if org-test-sele >> org-test-run-batch-tests("test-ob") >> command-line-1(("--eval" "(setq vc-handled-backends nil org-startup- >> command-line() >> normal-top-level() >> Test test-ob/result-graphics-link-type-header-argument condition: >> (wrong-type-argument stringp nil) >> FAILED 129/140 test-ob/result-graphics-link-type-header-argument >> (0.006189 sec) >> >> Best, >> Ihor >> > --0000000000009e572e05e164b121 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I put together a clean setup in docker for running the tes= ts and believe I've gotten to the source of the problem.
However I&= #39;ve thought that a few times now.

This version = of the patch has all tests passing.
The problem was in org-result= s-to-file and the attach dir detection. It both had problems with an introd= uced assumption that the buffer-file-name would be non-nil (causing several= tests to fail) as well as being generally overzealous in detecting file re= sult paths as attachment links.


On Mon, Jun 13, 2022 at= 10:55 PM Ryan Scott <ryan@= vicarious-living.com> wrote:
Strange. I'll fi= gure out a better setup for running the tests and get to the bottom of that= .
Thanks for the help.

=
On Tue, Jun 14, 2022, 00:10 Ihor Radc= henko <yantar92@= gmail.com> wrote:
Ryan Scott <ryan@vicarious-living.com> writes:=

> Ah sorry about that. I'm on a windows laptop and didn't have m= ake, so was
> testing interactively and they were passing.
> I cleaned that up and remove the f-* usage and verified under Ubuntu (= on
> WSL) that the new tests are passing. I was getting some failures with<= br> > unrelated tests, but also get those in master as well.

I am still getting test failures using Emacs 28.
All the tests are passing on main.

Example backtrace:

file-name-directory(nil)
=C2=A0 org-babel-result-to-file("/tmp/test.txt" nil attachment) =C2=A0 org-babel-insert-result("/tmp/test.txt" ("replace&quo= t; "value" "file" "g
=C2=A0 org-babel-execute-src-block()
=C2=A0 (progn (org-mode) (let ((point (string-match "<point>&quo= t; inside-text))
=C2=A0 (unwind-protect (progn (org-mode) (let ((point (string-match "&= lt;point
=C2=A0 (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn=
=C2=A0 (let ((temp-buffer (generate-new-buffer " *temp*" t))) (sa= ve-current
=C2=A0 (let ((inside-text (if (stringp "\n<point>#+begin_src she= ll :results
=C2=A0 (let ((lexical-binding nil)) (let ((inside-text (if (stringp "\= n<poi
=C2=A0 (lambda nil (let ((lexical-binding nil)) (let ((inside-text (if (str=
=C2=A0 ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test=
=C2=A0 ert-run-test(#s(ert-test :name test-ob/result-graphics-link-type-hea=
=C2=A0 ert-run-or-rerun-test(#s(ert--stats :selector "test-ob" :t= ests ... :
=C2=A0 ert-run-tests("test-ob" #f(compiled-function (event-type &= amp;rest event
=C2=A0 ert-run-tests-batch("test-ob")
=C2=A0 ert-run-tests-batch-and-exit("test-ob")
=C2=A0 (let ((org-id-track-globally t) (org-test-selector (if org-test-sele=
=C2=A0 org-test-run-batch-tests("test-ob")
=C2=A0 command-line-1(("--eval" "(setq vc-handled-backends n= il org-startup-
=C2=A0 command-line()
=C2=A0 normal-top-level()
Test test-ob/result-graphics-link-type-header-argument condition:
=C2=A0 =C2=A0 (wrong-type-argument stringp nil)
=C2=A0 =C2=A0FAILED=C2=A0 129/140=C2=A0 test-ob/result-graphics-link-type-h= eader-argument (0.006189 sec)

Best,
Ihor
--0000000000009e572e05e164b121-- --0000000000009e573005e164b123 Content-Type: application/octet-stream; name="org-src-block-results-attach-dir.patch" Content-Disposition: attachment; filename="org-src-block-results-attach-dir.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l4dxg9u00 RnJvbSA3NTc3NjJhZWJlMjUyMjkwMTZiNWRjODU0ZTg5NGZkOTQyN2MwZTNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSeWFuIFNjb3R0IDxyc2NvdHRAcm9ibG94LmNvbT4KRGF0ZTog RnJpLCAxMCBKdW4gMjAyMiAwMDowMTozNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIG9iLWNvcmUu ZWwvYmFiZWw6IFNwZWNpYWwgaGFuZGxpbmcgZm9yIGF0dGFjaG1lbnQgbGlua3MgaW4KIHNyYyBi bG9jawoKKiBvYi1jb3JlLmVsIChvcmctYmFiZWwtbWVyZ2UtcGFyYW1zKTogU3BlY2lmeWluZyB0 aGUgc3ltYm9sICdhdHRhY2hgCm9yIHN0cmluZyAiJ2F0dGFjaCIgYXMgdGhlIHZhbHVlIG9mIHRo ZSBgOmRpcicgaGVhZGVyIG5vdyBmdW5jdGlvbnMgYXMKIjpkaXIgKG9yZy1hdHRhY2gtZGlyIG5p bCB0KSA6bWtkaXJwIHQiCihvcmctYmFiZWwtcmVzdWx0LXRvLWZpbGUpOiBPcHRpb25hbCBgVFlQ RScgYXJndW1lbnQgYWNjZXB0cyBzeW1ib2wKJ2F0dGFjaG1lbnRgIHRvIGZpeHVwIHVwIHBhdGhz IHVuZGVyIGAob3JnLWF0dGFjaC1kaXIpJyBhbmQgdXNlIHRoZQpsaW5rIHR5cGUgImF0dGFjaG1l bnQ6IiB3aGVuIHRoYXQgaXMgZGV0ZWN0ZWQuCihvcmctYmFiZWwtaW5zZXJ0LXJlc3VsdCk6IFBh c3Mgc3ltYm9sIGBhdHRhY2htZW50JyBhcyBgVFlQRScgdG8KYG9yZy1iYWJlbC1yZXN1bHQtdG8t ZmlsZScKKiBvcmctYXR0YWNoLmVsIChvcmctYXR0YWNoLWRpcik6IEFkZGVkIGF1dG9sb2FkIGhl YWRlciB0byBzaW1wbGlmeQpkZXBlbmRlbmNpZXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhpcyBm ZWF0dXJlIChjYWxsZWQgaW4KYG9yZy1iYWJlbC1tZXJnZS1wYXJhbXMnKS4KKiB0ZXN0LW9iLmVs ICh0ZXN0LW9iLWNvcmUvZGlyLWF0dGFjaCk6IEFkZGVkIHVuaXQgdGVzdCBmb3IgbmV3IGF0dGFj aApmZWF0dXJlCi0tLQogZG9jL29yZy1tYW51YWwub3JnICAgICAgfCAgNiArKysrCiBldGMvT1JH LU5FV1MgICAgICAgICAgICB8ICA3ICsrKysKIGxpc3Avb2ItY29yZS5lbCAgICAgICAgIHwgNzkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIGxpc3Avb3JnLWF0dGFj aC5lbCAgICAgIHwgIDEgKwogdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwgfCA2NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEzNiBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvb3JnLW1hbnVhbC5vcmcgYi9k b2Mvb3JnLW1hbnVhbC5vcmcKaW5kZXggMzJhNDVmODg0Li41ZjliMzM1M2IgMTAwNjQ0Ci0tLSBh L2RvYy9vcmctbWFudWFsLm9yZworKysgYi9kb2Mvb3JnLW1hbnVhbC5vcmcKQEAgLTE3NTQxLDYg KzE3NTQxLDEyIEBAIGRpcmVjdG9yeSB3aXRoIHt7e2tiZChNLXggY2QgUkVUIERJUkVDVE9SWSl9 fX0sIGFuZCB0aGVuIG5vdCBzZXR0aW5nCiA9ZGlyPS4gIFVuZGVyIHRoZSBzdXJmYWNlLCA9ZGly PSBzaW1wbHkgc2V0cyB0aGUgdmFsdWUgb2YgdGhlIEVtYWNzCiB2YXJpYWJsZSB+ZGVmYXVsdC1k aXJlY3Rvcnl+LiAgU2V0dGluZyA9bWtkaXJwPSBoZWFkZXIgYXJndW1lbnQgdG8KIGEgbm9uLX5u aWx+IHZhbHVlIGNyZWF0ZXMgdGhlIGRpcmVjdG9yeSwgaWYgbmVjZXNzYXJ5LgorU2V0dGluZyA9 ZGlyPSB0byB0aGUgc3ltYm9sIH5hdHRhY2h+IG9yIHRoZSBzdHJpbmcgfiInYXR0YWNoIn4gd2ls bAorc2V0ID1kaXI9IHRvIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkgfihvcmctYXR0YWNoLWRp cil+LCBzZXQgPTpta2RpcgoreWVzPSwgYW5kIGluc2VydCBhbnkgZmlsZSBwYXRocywgYXMgd2hl biB1c2luZyA9OnJlc3VsdHMgZmlsZT0sIHdoaWNoCithcmUgdW5kZXIgdGhlIG5vZGUncyBhdHRh Y2htZW50IGRpcmVjdG9yeSB1c2luZyA9YXR0YWNobWVudDo9IGxpbmtzCitpbnN0ZWFkIG9mIHRo ZSB1c3VhbCA9ZmlsZTo9IGxpbmtzLiBBbnkgcmV0dXJuZWQgcGF0aCBvdXRzaWRlIG9mIHRoZQor YXR0YWNobWVudCBkaXJlY3Rvcnkgd2lsbCB1c2UgPWZpbGU6PSBsaW5rcyBhcyBwZXIgdXN1YWwu CiAKIEZvciBleGFtcGxlLCB0byBzYXZlIHRoZSBwbG90IGZpbGUgaW4gdGhlID1Xb3JrLz0gZm9s ZGVyIG9mIHRoZSBob21lCiBkaXJlY3RvcnktLS1ub3RpY2UgdGlsZGUgaXMgZXhwYW5kZWQ6CmRp ZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5FV1MKaW5kZXggMzVhZjk0ZjkyLi4w Yzg4Mzc4ZDYgMTAwNjQ0Ci0tLSBhL2V0Yy9PUkctTkVXUworKysgYi9ldGMvT1JHLU5FV1MKQEAg LTc5NSw2ICs3OTUsMTMgQEAgRmluYWxseSwgdGhlIGNsb3N1cmVzIGFyZSBvbmx5IGV2YWx1YXRl ZCBpZiB0aGV5J3JlIG5vdCBvdmVycmlkZGVuIGZvcgogYSBzb3VyY2UgYmxvY2suIFRoaXMgaW1w cm92ZXMgZWZmaWNpZW5jeSBpbiBjYXNlcyB3aGVyZSB0aGUgcmVzdWx0IG9mCiBhIGNvbXB1dGUt ZXhwZW5zaXZlIGNsb3N1cmUgd291bGQgb3RoZXJ3aXNlIGJlIGRpc2NhcmRlZC4KIAorKioqIE5l dyBzcGVjaWFsIHZhbHVlIH4nYXR0YWNofiBmb3Igc3JjIGJsb2NrID06ZGlyPSBvcHRpb24KKwor UGFzc2luZyB0aGUgc3ltYm9sIH5hdHRhY2h+IG9yIHN0cmluZyA9IidhdHRhY2giPSAod2l0aCBx dW90ZXMpIHRvIHRoZSA9OmRpcj0KK29wdGlvbiBvZiBhIHNyYyBibG9jayBpcyBub3cgZXF1aXZh bGVudCB0byA9OmRpciAob3JnLWF0dGFjaC1kaXIpIDpta2RpciB5ZXM9CithbmQgYW55IGZpbGUg cmVzdWx0cyB3aXRoIGEgcGF0aCBkZXNjZW5kZWQgZnJvbSB0aGUgYXR0YWNobWVudCBkaXJlY3Rv cnkgd2lsbAordXNlID1hdHRhY2htZW50Oj0gc3R5bGUgbGlua3MgaW5zdGVhZCBvZiB0aGUgc3Rh bmRhcmQgPWZpbGU6PSBsaW5rIHR5cGUuCisKICoqIE1pc2NlbGxhbmVvdXMKICoqKiA9b3JnLWJp YnRleD0gaW5jbHVkZXMgPWRvaT0gYW5kID11cmw9IGVudHJpZXMgd2hlbiBleHBvcnRpbmcgdG8g QmlCVGVYCiA9ZG9pPSBhbmQgPXVybD0gZW50cmllcyBoYXZlIGJlZW4gbWFkZSBvcHRpb25hbCBm b3Igc29tZSBwdWJsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvbGlzcC9vYi1jb3JlLmVsIGIvbGlzcC9v Yi1jb3JlLmVsCmluZGV4IDA5ZDZhZGZlMC4uYzI0NDZkYWE2IDEwMDY0NAotLS0gYS9saXNwL29i LWNvcmUuZWwKKysrIGIvbGlzcC9vYi1jb3JlLmVsCkBAIC04MDEsNyArODAxLDggQEAgYmxvY2su IgogCQkgICAgKGxldCAoKCp0aGlzKiAoaWYgKG5vdCBmaWxlKSByZXN1bHQKIAkJCQkgICAgKG9y Zy1iYWJlbC1yZXN1bHQtdG8tZmlsZQogCQkJCSAgICAgZmlsZQotCQkJCSAgICAgKG9yZy1iYWJl bC0tZmlsZS1kZXNjIHBhcmFtcyByZXN1bHQpKSkpKQorCQkJCSAgICAgKG9yZy1iYWJlbC0tZmls ZS1kZXNjIHBhcmFtcyByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2F0dGFjaG1lbnQpKSkpCiAJCSAgICAgIChzZXRxIHJlc3VsdCAob3JnLWJhYmVsLXJlZi1y ZXNvbHZlIHBvc3QpKQogCQkgICAgICAod2hlbiBmaWxlCiAJCQkoc2V0cSByZXN1bHQtcGFyYW1z IChyZW1vdmUgImZpbGUiIHJlc3VsdC1wYXJhbXMpKSkpKSkKQEAgLTIyOTgsMTEgKzIyOTksMTQg QEAgSU5GTyBtYXkgcHJvdmlkZSB0aGUgdmFsdWVzIG9mIHRoZXNlIGhlYWRlciBhcmd1bWVudHMg KGluIHRoZQogICAoY29uZCAoKHN0cmluZ3AgcmVzdWx0KQogCSAoc2V0cSByZXN1bHQgKG9yZy1u by1wcm9wZXJ0aWVzIHJlc3VsdCkpCiAJICh3aGVuIChtZW1iZXIgImZpbGUiIHJlc3VsdC1wYXJh bXMpCi0JICAgKHNldHEgcmVzdWx0IChvcmctYmFiZWwtcmVzdWx0LXRvLWZpbGUKLQkJCSByZXN1 bHQKLQkJCSAob3JnLWJhYmVsLS1maWxlLWRlc2MgKG50aCAyIGluZm8pIHJlc3VsdCkpKSkpCisJ ICAgKHNldHEgcmVzdWx0CisgICAgICAgICAgICAgICAgIChvcmctYmFiZWwtcmVzdWx0LXRvLWZp bGUKKwkJICByZXN1bHQKKwkJICAob3JnLWJhYmVsLS1maWxlLWRlc2MgKG50aCAyIGluZm8pIHJl c3VsdCkKKyAgICAgICAgICAgICAgICAgICdhdHRhY2htZW50KSkpKQogCSgobGlzdHAgcmVzdWx0 KSkKIAkodCAoc2V0cSByZXN1bHQgKGZvcm1hdCAiJVMiIHJlc3VsdCkpKSkKKwogICAoaWYgKGFu ZCByZXN1bHQtcGFyYW1zIChtZW1iZXIgInNpbGVudCIgcmVzdWx0LXBhcmFtcykpCiAgICAgICAo cHJvZ24gKG1lc3NhZ2UgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiJSIgIiUlIiAoZm9ybWF0 ICIlUyIgcmVzdWx0KSkpCiAJICAgICByZXN1bHQpCkBAIC0yNjA1LDI3ICsyNjA5LDQ5IEBAIGlu IHRoZSBidWZmZXIuIgogCQkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uIDIpKQogCSAgICAgKHBv aW50KSkpKSkpCiAKLShkZWZ1biBvcmctYmFiZWwtcmVzdWx0LXRvLWZpbGUgKHJlc3VsdCAmb3B0 aW9uYWwgZGVzY3JpcHRpb24pCisoZGVmdW4gb3JnLWJhYmVsLXJlc3VsdC10by1maWxlIChyZXN1 bHQgJm9wdGlvbmFsIGRlc2NyaXB0aW9uIHR5cGUpCiAgICJDb252ZXJ0IFJFU1VMVCBpbnRvIGFu IE9yZyBsaW5rIHdpdGggb3B0aW9uYWwgREVTQ1JJUFRJT04uCiBJZiB0aGUgYGRlZmF1bHQtZGly ZWN0b3J5JyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29udGFpbmluZwotZmlsZSdzIGRpcmVjdG9y eSB0aGVuIGV4cGFuZCByZWxhdGl2ZSBsaW5rcy4iCitmaWxlJ3MgZGlyZWN0b3J5IHRoZW4gZXhw YW5kIHJlbGF0aXZlIGxpbmtzLgorCitJZiB0aGUgb3B0aW9uYWwgVFlQRSBpcyBwYXNzZWQgYXMg J2F0dGFjaG1lbnRgIGFuZCB0aGUgcGF0aCBpcyBhCitkZXNjZW5kYW50IG9mIHRoZSBERUZBVUxU LURJUkVDVE9SWSwgdGhlIGdlbmVyYXRlZCBsaW5rIHdpbGwgYmUKK3NwZWNpZmllZCBhcyBhbiBh biBcImF0dGFjaG1lbnQ6XCIgc3R5bGUgbGluayIKICAgKHdoZW4gKHN0cmluZ3AgcmVzdWx0KQot ICAgIChsZXQgKChzYW1lLWRpcmVjdG9yeT8KLQkgICAoYW5kIChidWZmZXItZmlsZS1uYW1lIChi dWZmZXItYmFzZS1idWZmZXIpKQotCQkobm90IChzdHJpbmc9IChleHBhbmQtZmlsZS1uYW1lIGRl ZmF1bHQtZGlyZWN0b3J5KQotCQkJICAgICAgKGV4cGFuZC1maWxlLW5hbWUKLQkJCSAgICAgICAo ZmlsZS1uYW1lLWRpcmVjdG9yeQotCQkJICAgICAgICAoYnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVy LWJhc2UtYnVmZmVyKSkpKSkpKSkpCi0gICAgICAoZm9ybWF0ICJbW2ZpbGU6JXNdJXNdIgotCSAg ICAgIChpZiAoYW5kIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCSAgICAgICAoYnVmZmVyLWZpbGUtbmFt ZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkgc2FtZS1kaXJlY3Rvcnk/KQotCQkgIChpZiAoZXEgb3Jn LWxpbmstZmlsZS1wYXRoLXR5cGUgJ2FkYXB0aXZlKQotCQkgICAgICAoZmlsZS1yZWxhdGl2ZS1u YW1lCi0JCSAgICAgICAoZXhwYW5kLWZpbGUtbmFtZSByZXN1bHQgZGVmYXVsdC1kaXJlY3Rvcnkp Ci0JCSAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeQotCQkJKGJ1ZmZlci1maWxlLW5hbWUgKGJ1 ZmZlci1iYXNlLWJ1ZmZlcikpKSkKLQkJICAgIChleHBhbmQtZmlsZS1uYW1lIHJlc3VsdCBkZWZh dWx0LWRpcmVjdG9yeSkpCi0JCXJlc3VsdCkKKyAgICAobGV0KiAoKHJlc3VsdC1maWxlLW5hbWUg KGV4cGFuZC1maWxlLW5hbWUgcmVzdWx0KSkKKyAgICAgICAgICAgKGJhc2UtZmlsZS1uYW1lIChi dWZmZXItZmlsZS1uYW1lIChidWZmZXItYmFzZS1idWZmZXIpKSkKKyAgICAgICAgICAgKGJhc2Ut ZGlyZWN0b3J5IChhbmQgYnVmZmVyLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBiYXNlLWZpbGUtbmFtZSkpKQorICAgICAgICAg ICAoc2FtZS1kaXJlY3Rvcnk/CisJICAgIChhbmQgYmFzZS1maWxlLW5hbWUKKwkgICAgICAgICAo bm90IChzdHJpbmc9IChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQtZGlyZWN0b3J5KQorCQkJICAg ICAgIChleHBhbmQtZmlsZS1uYW1lCisJCQkgICAgICAgIGJhc2UtZGlyZWN0b3J5KSkpKSkKKyAg ICAgICAgICAgKHJlcXVlc3QtYXR0YWNobWVudCAoZXEgdHlwZSAnYXR0YWNobWVudCkpCisgICAg ICAgICAgIChhdHRhY2gtZGlyIChsZXQqICgoZGVmYXVsdC1kaXJlY3RvcnkgYmFzZS1kaXJlY3Rv cnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyIChvcmctYXR0YWNoLWRpciBu aWwgdCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGRpcgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgZGlyKSkpKQorICAgICAgICAgICAoaW4t YXR0YWNoLWRpciAoYW5kIHJlcXVlc3QtYXR0YWNobWVudAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF0dGFjaC1kaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLXByZWZpeC1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaC1kaXIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LWZpbGUtbmFtZSkpKSkKKyAg ICAgIChmb3JtYXQgIltbJXM6JXNdJXNdIgorICAgICAgICAgICAgICAocGNhc2UgdHlwZQorICAg ICAgICAgICAgICAgICgoYW5kICdhdHRhY2htZW50IChndWFyZCBpbi1hdHRhY2gtZGlyKSkgImF0 dGFjaG1lbnQiKQorICAgICAgICAgICAgICAgIChfICJmaWxlIikpCisgICAgICAgICAgICAgIChp ZiAoYW5kIHJlcXVlc3QtYXR0YWNobWVudCBpbi1hdHRhY2gtZGlyKQorICAgICAgICAgICAgICAg ICAgKGZpbGUtcmVsYXRpdmUtbmFtZSByZXN1bHQtZmlsZS1uYW1lKQorCSAgICAgICAgKGlmIChh bmQgZGVmYXVsdC1kaXJlY3RvcnkKKwkJICAgICAgICAgYmFzZS1maWxlLW5hbWUgc2FtZS1kaXJl Y3Rvcnk/KQorCQkgICAgKGlmIChlcSBvcmctbGluay1maWxlLXBhdGgtdHlwZSAnYWRhcHRpdmUp CisJCSAgICAgICAgKGZpbGUtcmVsYXRpdmUtbmFtZQorCQkgICAgICAgICByZXN1bHQtZmlsZS1u YW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkKKwkJCSAg YmFzZS1maWxlLW5hbWUpKQorCQkgICAgICByZXN1bHQtZmlsZS1uYW1lKQorCQkgIHJlc3VsdCkp CiAJICAgICAgKGlmIGRlc2NyaXB0aW9uIChjb25jYXQgIlsiIGRlc2NyaXB0aW9uICJdIikgIiIp KSkpKQogCiAoZGVmdW4gb3JnLWJhYmVsLWV4YW1wbGlmeS1yZWdpb24gKGJlZyBlbmQgJm9wdGlv bmFsIHJlc3VsdHMtc3dpdGNoZXMgaW5saW5lKQpAQCAtMjc1NiwxMCArMjc4MiwxNyBAQCBwYXJh bWV0ZXJzIHdoZW4gbWVyZ2luZyBsaXN0cy4iCiAJICAgKHNldHEgZXhwb3J0cyAoZnVuY2FsbCBt ZXJnZQogCQkJCSAgZXhwb3J0cy1leGNsdXNpdmUtZ3JvdXBzCiAJCQkJICBleHBvcnRzCi0JCQkJ ICAoc3BsaXQtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwbGl0 LXN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZCAoKGFuZCB2 YWx1ZSAoZnVuY3Rpb25wIHZhbHVlKSkgKGZ1bmNhbGwgdmFsdWUpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgdmFsdWUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0ICIiKSkpKSkpCisgICAgICAgICAgKChvciAnKDpk aXIgLiBhdHRhY2gpICcoOmRpciAuICInYXR0YWNoIikpCisgICAgICAgICAgICh1bmxlc3MgKG9y Zy1hdHRhY2gtZGlyIG5pbCB0KQorICAgICAgICAgICAgIChlcnJvciAiTm8gYXR0YWNobWVudCBk aXJlY3RvcnkgZm9yIGVsZW1lbnQgKGFkZCA6SUQ6IG9yIDpESVI6IHByb3BlcnR5KSIpKQorICAg ICAgICAgICAoc2V0cSBwYXJhbXMgKGFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgIGAo KDpkaXIgLiAsKG9yZy1hdHRhY2gtZGlyIG5pbCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICg6bWtkaXJwIC4gInllcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChhc3NxLWRl bGV0ZS1hbGwgOmRpciAoYXNzcS1kZWxldGUtYWxsIDpta2RpciBwYXJhbXMpKSkpKQogCSAgOzsg UmVndWxhciBrZXl3b3JkczogYW55IHZhbHVlIG92ZXJ3cml0ZXMgdGhlIHByZXZpb3VzIG9uZS4K IAkgIChfIChzZXRxIHBhcmFtcyAoY29ucyBwYWlyIChhc3NxLWRlbGV0ZS1hbGwgKGNhciBwYWly KSBwYXJhbXMpKSkpKSkpCiAgICAgOzsgSGFuZGxlIGA6dmFyJyBhbmQgY2xlYXIgb3V0IGNvbG5h bWVzIGFuZCByb3duYW1lcyBmb3IgcmVwbGFjZWQKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLWF0dGFj aC5lbCBiL2xpc3Avb3JnLWF0dGFjaC5lbAppbmRleCA1ZWUyYjg0YjIuLjZhMDYxYjJiMyAxMDA2 NDQKLS0tIGEvbGlzcC9vcmctYXR0YWNoLmVsCisrKyBiL2xpc3Avb3JnLWF0dGFjaC5lbApAQCAt MzI0LDYgKzMyNCw3IEBAIFNob3dzIGEgbGlzdCBvZiBjb21tYW5kcyBhbmQgcHJvbXB0cyBmb3Ig YW5vdGhlciBrZXkgdG8gZXhlY3V0ZSBhIGNvbW1hbmQuIgogCSAgICAoY29tbWFuZC1leGVjdXRl IGNvbW1hbmQpCiAJICAoZXJyb3IgIk5vIHN1Y2ggYXR0YWNobWVudCBjb21tYW5kOiAlYyIgYykp KSkpKQogCis7OzsjIyNhdXRvbG9hZAogKGRlZnVuIG9yZy1hdHRhY2gtZGlyICgmb3B0aW9uYWwg Y3JlYXRlLWlmLW5vdC1leGlzdHMtcCBuby1mcy1jaGVjaykKICAgIlJldHVybiB0aGUgZGlyZWN0 b3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBvdXRsaW5lIG5vZGUuCiBGaXJzdCBjaGVj ayBmb3IgRElSIHByb3BlcnR5LCB0aGVuIElEIHByb3BlcnR5LgpkaWZmIC0tZ2l0IGEvdGVzdGlu Zy9saXNwL3Rlc3Qtb2IuZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbAppbmRleCBhYTA1Zjg3 YTMuLmE2MmJkNTZiZiAxMDA2NDQKLS0tIGEvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKKysrIGIv dGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKQEAgLTE3NzAsNiArMTc3MCw3MiBAQCBuaWwKICAgICAg ICAgICAgICAgICAoZmlsZS1tb2RlcyAidC5zaCIpCiAgICAgICAgICAgICAgIChkZWxldGUtZmls ZSAidC5zaCIpKSkpKSkKIAorKGVydC1kZWZ0ZXN0IHRlc3Qtb2ItY29yZS9kaXItYXR0YWNoICgp CisgICJUZXN0IDpkaXIgaGVhZGVyIHVzaW5nIHNwZWNpYWwgJ2F0dGFjaCB2YWx1ZSIKKyAgKHNo b3VsZAorICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0LWluLWZpbGUKKyAgICAiKiAnYXR0YWNo IFN5bWJvbAorPHBvaW50PiMrYmVnaW5fc3JjIGVsaXNwIDpkaXIgJ2F0dGFjaCA6cmVzdWx0cyBm aWxlCisod2l0aC10ZW1wLWZpbGUgXCJ0ZXN0LnR4dFwiIChpbnNlcnQgXCJhdHRhY2htZW50IHRl c3RpbmdcblwiKSkKK1widGVzdC50eHRcIgorIytlbmRfc3JjIgorICAgIChvcmctaWQtZ2V0LWNy ZWF0ZSkKKyAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKQorICAgIChnb3RvLWNoYXIg KG9yZy1iYWJlbC13aGVyZS1pcy1zcmMtYmxvY2stcmVzdWx0KSkKKyAgICAoZm9yd2FyZC1saW5l KQorICAgIChhbmQKKyAgICAgKGZpbGUtZXhpc3RzLXAgKGZvcm1hdCAiJXMvdGVzdC50eHQiIChv cmctYXR0YWNoLWRpciBuaWwgdCkpKQorICAgICAoc3RyaW5nPSAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAg IltbYXR0YWNobWVudDp0ZXN0LnR4dF1dIikpKSkKKyAgKHNob3VsZAorICAgKG9yZy10ZXN0LXdp dGgtdGVtcC10ZXh0LWluLWZpbGUKKyAgICAiKiAnYXR0YWNoIFN0cmluZworPHBvaW50PiMrYmVn aW5fc3JjIGVsaXNwIDpkaXIgXCInYXR0YWNoXCIgOnJlc3VsdHMgZmlsZQorKHdpdGgtdGVtcC1m aWxlIFwidGVzdC50eHRcIiAoaW5zZXJ0IFwiYXR0YWNobWVudCB0ZXN0aW5nXG5cIikpCitcInRl c3QudHh0XCIKKyMrZW5kX3NyYyIKKyAgICAob3JnLWlkLWdldC1jcmVhdGUpCisgICAgKG9yZy1i YWJlbC1leGVjdXRlLXNyYy1ibG9jaykKKyAgICAoZ290by1jaGFyIChvcmctYmFiZWwtd2hlcmUt aXMtc3JjLWJsb2NrLXJlc3VsdCkpCisgICAgKGZvcndhcmQtbGluZSkKKyAgICAoYW5kCisgICAg IChmaWxlLWV4aXN0cy1wIChmb3JtYXQgIiVzL3Rlc3QudHh0IiAob3JnLWF0dGFjaC1kaXIgbmls IHQpKSkKKyAgICAgKHN0cmluZz0gKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9p bnQpIChsaW5lLWVuZC1wb3NpdGlvbikpCisgICAgICAgICAgICAgICJbW2F0dGFjaG1lbnQ6dGVz dC50eHRdXSIpKSkpCisgIChzaG91bGQKKyAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dC1pbi1m aWxlCisgICAgIiogJ2F0dGFjaCB3aXRoIEV4aXN0aW5nIERJUiBwcm9wZXJ0eQorOlBST1BFUlRJ RVM6Cis6RElSOiAgICAgIGN1c3RvbS1hdHRhY2gtZGlyCis6RU5EOgorCis8cG9pbnQ+IytiZWdp bl9zcmMgZWxpc3AgOmRpciAnYXR0YWNoIDpyZXN1bHRzIGZpbGUKKyh3aXRoLXRlbXAtZmlsZSBc InRlc3QudHh0XCIgKGluc2VydCBcImF0dGFjaG1lbnQgdGVzdGluZ1xuXCIpKQorXCJ0ZXN0LnR4 dFwiCisjK2VuZF9zcmMiCisgICAgKG1lc3NhZ2UgIkRJUjogJXMiIChvcmctYXR0YWNoLWRpciB0 KSkKKyAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKQorICAgIChnb3RvLWNoYXIgKG9y Zy1iYWJlbC13aGVyZS1pcy1zcmMtYmxvY2stcmVzdWx0KSkKKyAgICAoZm9yd2FyZC1saW5lKQor ICAgIChhbmQKKyAgICAgKGZpbGUtZXhpc3RzLXAgKGZvcm1hdCAiJXMvdGVzdC50eHQiIChvcmct YXR0YWNoLWRpciBuaWwgdCkpKQorICAgICAoc3RyaW5nPSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgIltb YXR0YWNobWVudDp0ZXN0LnR4dF1dIikpKSkKKyAgKHNob3VsZC1lcnJvcgorICAgKG9yZy10ZXN0 LXdpdGgtdGVtcC10ZXh0LWluLWZpbGUKKyAgICAiKiAnYXR0YWNoIHdpdGggbm8gSUQgb3IgRElS Cis8cG9pbnQ+IytiZWdpbl9zcmMgZWxpc3AgOmRpciAnYXR0YWNoIDpyZXN1bHRzIGZpbGUKKyh3 aXRoLXRlbXAtZmlsZSBcInRlc3QudHh0XCIgKGluc2VydCBcImF0dGFjaG1lbnQgdGVzdGluZ1xu XCIpKQorXCJ0ZXN0LnR4dFwiCisjK2VuZF9zcmMiCisgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNy Yy1ibG9jaykKKyAgICAoZ290by1jaGFyIChvcmctYmFiZWwtd2hlcmUtaXMtc3JjLWJsb2NrLXJl c3VsdCkpCisgICAgKGZvcndhcmQtbGluZSkKKyAgICAoYW5kCisgICAgIChmaWxlLWV4aXN0cy1w IChmb3JtYXQgIiVzL3Rlc3QudHh0IiAob3JnLWF0dGFjaC1kaXIgbmlsIHQpKSkKKyAgICAgKHN0 cmluZz0gKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChsaW5lLWVuZC1w b3NpdGlvbikpCisgICAgICAgICAgICAgICJbW2F0dGFjaG1lbnQ6dGVzdC50eHRdXSIpKSkpKQor CiAoZXJ0LWRlZnRlc3QgdGVzdC1vYi1jb3JlL2Rpci1ta2RpcnAgKCkKICAgIlRlc3QgOm1rZGly cCB3aXRoIDpkaXIgaGVhZGVyIGNvbWJpbmF0aW9uLiIKICAgKHNob3VsZC1ub3QKLS0gCjIuMzMu MC53aW5kb3dzLjIKCg== --0000000000009e573005e164b123--