From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Taylan Kammer Newsgroups: gmane.lisp.guile.devel Subject: Re: [PATCHES] Use a better SRFI-64 implementation. Date: Tue, 11 May 2021 13:32:08 +0200 Message-ID: References: <94ecc225-684f-1d36-bc72-53b8026753b6@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------84F808C0144A42A54748D3E6" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17626"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Tue May 11 13:36:09 2021 Return-path: Envelope-to: guile-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lgQgL-0004Pi-ER for guile-devel@m.gmane-mx.org; Tue, 11 May 2021 13:36:09 +0200 Original-Received: from localhost ([::1]:50274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lgQgK-0002f5-Eo for guile-devel@m.gmane-mx.org; Tue, 11 May 2021 07:36:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56346) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lgQcc-00075s-5K for guile-devel@gnu.org; Tue, 11 May 2021 07:32:18 -0400 Original-Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]:39896) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lgQcW-0006ti-Ss for guile-devel@gnu.org; Tue, 11 May 2021 07:32:17 -0400 Original-Received: by mail-ed1-x52b.google.com with SMTP id g14so22465074edy.6 for ; Tue, 11 May 2021 04:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=V/4ePrrzn86YSocCRu0cSqvZnFdSq/IBiZiiCKu55kU=; b=vEu0kn1oqhodJKwhnwP3lhsZaGx4OT/OVd15VzdlsZN/1ye4YWFMRZBCN1saWEluIS NcOtoxYY37MY9oGqFbr4s5zQ0561OzqM/rGfdOtSxup9L0iPeQS0GldL43aiK9YiKVDI WHrC//L7TnH+2J5I5tcrj1unuokuPG/D3sqtE52N1//4Dm8d5t2uQdYCG1jdOpSzyd/u SGA3yX2ewCvTGqY8wH5YXrAXRGkYZYvEGqmOHl/Nh8qLGnxx9bG+PFn+/uHJQLwwlFSh Z7qbXlLK21oErDjL+gdbb5fqHhvJzpWbSgvzzsIy3TH6a9qk1YSU9i78I6gZgHxbWn9z oYgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=V/4ePrrzn86YSocCRu0cSqvZnFdSq/IBiZiiCKu55kU=; b=QVvayr+WZc7whSmCfPBMCTvnx6IGl3ETnokCwZbBPP5p1qwvFVlhbZgdr/pHnOmg+X 9rS6qkYu/CqP7r+A+1jG/TbT6uIXsj0dt1NX0CC92/BPQG5oqjjf2nX8GcsO9dJbOpNp WsEFfBO6GmaOq2oiVuFG+kHSw+vrfkWg7PG9rpNllNJEoszebJnYwdr0hz/T2pV+DYrC Dr85uhvxIqmgVQMt7zdslwg/Ui3i117C3wqtEcx7oMSUNnTc2P8l89/9ZYr6wSPiM16J fzjOidKjRRXoGXFF+tm5NcdeKyOM5ev//0hC8bNWLnFeWV+mvVLe4R/QF6d6pfNGVulu dDwQ== X-Gm-Message-State: AOAM5339hGsPxBOHE3rOxw4CTFO2Wlsdl5k/RH+Px/U6/pxJgstVheZQ DVxndRsUg3kNhnZ+ykJbiYszyP8t9sg= X-Google-Smtp-Source: ABdhPJzDgErYbh/uOQaSIiwhtd0r1EGqzuugyWNokaxDPAht9acP8g4ByTi/wl50ekUQ1h/eCSOIOQ== X-Received: by 2002:aa7:d14e:: with SMTP id r14mr34907161edo.119.1620732731261; Tue, 11 May 2021 04:32:11 -0700 (PDT) Original-Received: from [192.168.178.20] (b2b-109-90-125-150.unitymedia.biz. [109.90.125.150]) by smtp.gmail.com with ESMTPSA id rs8sm11617984ejb.17.2021.05.11.04.32.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 May 2021 04:32:10 -0700 (PDT) In-Reply-To: <94ecc225-684f-1d36-bc72-53b8026753b6@gmail.com> Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::52b; envelope-from=taylan.kammer@gmail.com; helo=mail-ed1-x52b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:20764 Archived-At: This is a multi-part message in MIME format. --------------84F808C0144A42A54748D3E6 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit While rebasing an old commit on master, I accidentally reinstated the old implementation's .scm file in the first commit that's supposed to delete that file. (module/srfi/srfi-64/testing.scm) Here's a fixed patch-set. - Taylan --------------84F808C0144A42A54748D3E6 Content-Type: text/plain; charset=UTF-8; name="0001-Use-a-different-SRFI-64-implementation.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Use-a-different-SRFI-64-implementation.patch" RnJvbSBiZTdmMjJlNjU4NzhmNWNiNWFhN2U5NDg3M2U0YjM1ZWY0YWUwMDMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYXlsYW4gS2FtbWVyIDx0YXlsYW4ua2FtbWVyQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBNYXkgMjAyMSAxNToyMzoxNyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMS8yXSBVc2UgYSBkaWZmZXJlbnQgU1JGSS02NCBpbXBsZW1lbnRhdGlvbi4K CiogbW9kdWxlL3NyZmkvc3JmaS02NC5zY206IEFkZCBpbXBvcnRzIGFuZCBvdGhlciBib2ls ZXJwbGF0ZSBmb3IgbmV3CiAgaW1wbGVtZW50YXRpb24uCiogbW9kdWxlL3NyZmkvc3JmaS02 NC9leGVjdXRpb24uYm9keS5zY206IE5ldyBmaWxlLgoqIG1vZHVsZS9zcmZpL3NyZmktNjQv c291cmNlLWluZm8uYm9keS5zY206IE5ldyBmaWxlLgoqIG1vZHVsZS9zcmZpL3NyZmktNjQv dGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtOiBOZXcgZmlsZS4KKiBtb2R1bGUvc3JmaS9z cmZpLTY0L3Rlc3QtcnVubmVyLmJvZHkuc2NtOiBOZXcgZmlsZS4KKiBtb2R1bGUvc3JmaS9z cmZpLTY0L3Rlc3Rpbmcuc2NtOiBEZWxldGVkLgoqIG1vZHVsZS9NYWtlZmlsZS5hbSAoc3Jm aS02NC5nbywgTk9DT01QX1NPVVJDRVMpOiBDaGFuZ2UgYWNjb3JkaW5nbHkuCi0tLQogbW9k dWxlL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQog bW9kdWxlL3NyZmkvc3JmaS02NC5zY20gICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCAr LQogbW9kdWxlL3NyZmkvc3JmaS02NC9leGVjdXRpb24uYm9keS5zY20gICAgICAgIHwgIDQy NiArKysrKysrCiBtb2R1bGUvc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHkuc2NtICAg ICAgfCAgIDg4ICsrCiAuLi4vc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLXNpbXBsZS5ib2R5 LnNjbSAgfCAgMTY4ICsrKwogbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci5ib2R5 LnNjbSAgICAgIHwgIDE2NSArKysKIG1vZHVsZS9zcmZpL3NyZmktNjQvdGVzdGluZy5zY20g ICAgICAgICAgICAgICB8IDEwNDQgLS0tLS0tLS0tLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgODY4IGluc2VydGlvbnMoKyksIDEwNDggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgbW9kdWxlL3NyZmkvc3JmaS02NC9leGVjdXRpb24uYm9keS5zY20KIGNyZWF0ZSBt b2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJvZHkuc2NtCiBj cmVhdGUgbW9kZSAxMDA2NDQgbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci1zaW1w bGUuYm9keS5zY20KIGNyZWF0ZSBtb2RlIDEwMDY0NCBtb2R1bGUvc3JmaS9zcmZpLTY0L3Rl c3QtcnVubmVyLmJvZHkuc2NtCiBkZWxldGUgbW9kZSAxMDA2NDQgbW9kdWxlL3NyZmkvc3Jm aS02NC90ZXN0aW5nLnNjbQoKZGlmZiAtLWdpdCBhL21vZHVsZS9NYWtlZmlsZS5hbSBiL21v ZHVsZS9NYWtlZmlsZS5hbQppbmRleCA0MWI3NzA5NWIuLmUxYzUyNjdlNyAxMDA2NDQKLS0t IGEvbW9kdWxlL01ha2VmaWxlLmFtCisrKyBiL21vZHVsZS9NYWtlZmlsZS5hbQpAQCAtMjks NyArMjksMTEgQEAgJChWTV9UQVJHRVRTKTogJCh0b3BfYnVpbGRkaXIpL2xpYmd1aWxlL3Zt LW9wZXJhdGlvbnMuaAogCiBpY2UtOS9ib290LTkuZ286IGljZS05L2Jvb3QtOS5zY20gaWNl LTkvcXVhc2lzeW50YXguc2NtIGljZS05L3I2cnMtbGlicmFyaWVzLnNjbSBpY2UtOS9yN3Jz LWxpYnJhcmllcy5zY20gaWNlLTkvcmVhZC5zY20KIGljZS05L21hdGNoLmdvOiBpY2UtOS9t YXRjaC5zY20gaWNlLTkvbWF0Y2gudXBzdHJlYW0uc2NtCi1zcmZpL3NyZmktNjQuZ286IHNy Zmkvc3JmaS02NC5zY20gc3JmaS9zcmZpLTY0L3Rlc3Rpbmcuc2NtCitzcmZpL3NyZmktNjQu Z286IHNyZmkvc3JmaS02NC5zY20JCVwKKyAgc3JmaS9zcmZpLTY0L2V4ZWN1dGlvbi5ib2R5 LnNjbQkJXAorICBzcmZpL3NyZmktNjQvc291cmNlLWluZm8uYm9keS5zY20JCVwKKyAgc3Jm aS9zcmZpLTY0L3Rlc3QtcnVubmVyLXNpbXBsZS5ib2R5LnNjbQlcCisgIHNyZmkvc3JmaS02 NC90ZXN0LXJ1bm5lci5ib2R5LnNjbQogJChub2Jhc2VfY2NhY2hlX0RBVEEpOiAuLi9ib290 c3RyYXAvaWNlLTkvZXZhbC5nbwogCiAjIEtlZXAgdGhpcyBydWxlIGluIHN5bmMgd2l0aCB0 aGF0IGluIGBhbS9ndWlsZWMnLgpAQCAtNDAzLDcgKzQwNywxMCBAQCBOT0NPTVBfU09VUkNF UyA9CQkJCVwKICAgaWNlLTkvcjdycy1saWJyYXJpZXMuc2NtCQkJXAogICBpY2UtOS9xdWFz aXN5bnRheC5zY20JCQkJXAogICBzcmZpL3NyZmktNDIvZWMuc2NtCQkJCVwKLSAgc3JmaS9z cmZpLTY0L3Rlc3Rpbmcuc2NtCQkJXAorICBzcmZpL3NyZmktNjQvZXhlY3V0aW9uLmJvZHku c2NtCQlcCisgIHNyZmkvc3JmaS02NC9zb3VyY2UtaW5mby5ib2R5LnNjbQkJXAorICBzcmZp L3NyZmktNjQvdGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtCVwKKyAgc3JmaS9zcmZpLTY0 L3Rlc3QtcnVubmVyLmJvZHkuc2NtCQlcCiAgIHNyZmkvc3JmaS02Ny9jb21wYXJlLnNjbQkJ CVwKICAgc3lzdGVtL2Jhc2UvbGFsci51cHN0cmVhbS5zY20JCQlcCiAgIHN5c3RlbS9yZXBs L2Rlc2NyaWJlLnNjbQkJCVwKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktNjQuc2Nt IGIvbW9kdWxlL3NyZmkvc3JmaS02NC5zY20KaW5kZXggOTI1NzI2ZjVjLi5hOGNiMDg4NzQg MTAwNjQ0Ci0tLSBhL21vZHVsZS9zcmZpL3NyZmktNjQuc2NtCisrKyBiL21vZHVsZS9zcmZp L3NyZmktNjQuc2NtCkBAIC0yNCw5ICsyNCw5IEBACiAgICB0ZXN0LW1hdGNoLW50aCB0ZXN0 LW1hdGNoLWFsbCB0ZXN0LW1hdGNoLWFueSB0ZXN0LW1hdGNoLW5hbWUKICAgIHRlc3Qtc2tp cCB0ZXN0LWV4cGVjdC1mYWlsIHRlc3QtcmVhZC1ldmFsLXN0cmluZwogICAgdGVzdC1ydW5u ZXItZ3JvdXAtcGF0aCB0ZXN0LWdyb3VwIHRlc3QtZ3JvdXAtd2l0aC1jbGVhbnVwCisgICB0 ZXN0LWV4aXQKICAgIHRlc3QtcmVzdWx0LXJlZiB0ZXN0LXJlc3VsdC1zZXQhIHRlc3QtcmVz dWx0LWNsZWFyIHRlc3QtcmVzdWx0LXJlbW92ZQogICAgdGVzdC1yZXN1bHQta2luZCB0ZXN0 LXBhc3NlZD8KLSAgIHRlc3QtbG9nLXRvLWZpbGUKICAgIHRlc3QtcnVubmVyPyB0ZXN0LXJ1 bm5lci1yZXNldCB0ZXN0LXJ1bm5lci1udWxsCiAgICB0ZXN0LXJ1bm5lci1zaW1wbGUgdGVz dC1ydW5uZXItY3VycmVudCB0ZXN0LXJ1bm5lci1mYWN0b3J5IHRlc3QtcnVubmVyLWdldAog ICAgdGVzdC1ydW5uZXItY3JlYXRlIHRlc3QtcnVubmVyLXRlc3QtbmFtZQpAQCAtNTMsNCAr NTMsMTQgQEAKIAogKGNvbmQtZXhwYW5kLXByb3ZpZGUgKGN1cnJlbnQtbW9kdWxlKSAnKHNy ZmktNjQpKQogCi0oaW5jbHVkZS1mcm9tLXBhdGggInNyZmkvc3JmaS02NC90ZXN0aW5nLnNj bSIpCisoaW1wb3J0CisgKG9ubHkgKHJucnMgZXhjZXB0aW9ucykgZ3VhcmQpCisgKHNyZmkg c3JmaS0xKQorIChzcmZpIHNyZmktOSkKKyAoc3JmaSBzcmZpLTExKQorIChzcmZpIHNyZmkt MzUpKQorCisoaW5jbHVkZS1mcm9tLXBhdGggInNyZmkvc3JmaS02NC9zb3VyY2UtaW5mby5i b2R5LnNjbSIpCisoaW5jbHVkZS1mcm9tLXBhdGggInNyZmkvc3JmaS02NC90ZXN0LXJ1bm5l ci5ib2R5LnNjbSIpCisoaW5jbHVkZS1mcm9tLXBhdGggInNyZmkvc3JmaS02NC90ZXN0LXJ1 bm5lci1zaW1wbGUuYm9keS5zY20iKQorKGluY2x1ZGUtZnJvbS1wYXRoICJzcmZpL3NyZmkt NjQvZXhlY3V0aW9uLmJvZHkuc2NtIikKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmkt NjQvZXhlY3V0aW9uLmJvZHkuc2NtIGIvbW9kdWxlL3NyZmkvc3JmaS02NC9leGVjdXRpb24u Ym9keS5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi43MTdkNzRi ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUvc3JmaS9zcmZpLTY0L2V4ZWN1dGlvbi5i b2R5LnNjbQpAQCAtMCwwICsxLDQyNiBAQAorOzsgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2 LCAyMDA3LCAyMDEyLCAyMDEzIFBlciBCb3RobmVyCis7OyBBZGRlZCAiZnVsbCIgc3VwcG9y dCBmb3IgQ2hpY2tlbiwgR2F1Y2hlLCBHdWlsZSBhbmQgU0lTQy4KKzs7ICAgQWxleCBTaGlu biwgQ29weXJpZ2h0IChjKSAyMDA1LgorOzsgTW9kaWZpZWQgZm9yIFNjaGVtZSBTcGhlcmVz IGJ5IMOBbHZhcm8gQ2FzdHJvLUNhc3RpbGxhLCBDb3B5cmlnaHQgKGMpIDIwMTIuCis7OyBT dXBwb3J0IGZvciBHdWlsZSAyIGJ5IE1hcmsgSCBXZWF2ZXIgPG1od0BuZXRyaXMub3JnPiwg Q29weXJpZ2h0IChjKSAyMDE0LgorOzsgUmVmYWN0b3JlZCBieSBUYXlsYW4gVWxyaWNoIEJh ecSxcmzEsS9LYW1tZXIsIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNS4KKzs7Cis7OyBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv bgorOzsgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24KKzs7IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorOzsgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVz Cis7OyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZSBTb2Z0d2FyZSBpcworOzsgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKzs7Cis7OyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorOzsgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCis7 OworOzsgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsCis7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKzs7IE1FUkNIQU5UQUJJTElUWSwg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECis7OyBOT05JTkZSSU5HRU1F TlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT Cis7OyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4KKzs7IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCis7OyBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCis7OyBT T0ZUV0FSRS4KKworOzs7IE5vdGU6IHRvIHByZXZlbnQgcHJvZHVjaW5nIG1hc3NpdmUgYW1v dW50cyBvZiBjb2RlIGZyb20gdGhlIG1hY3JvLWV4cGFuZAorOzs7IHBoYXNlICh3aGljaCBt YWtlcyBjb21waWxlIHRpbWVzIHN1ZmZlciBhbmQgbWF5IGhpdCBjb2RlIHNpemUgbGltaXRz IGluIHNvbWUKKzs7OyBzeXN0ZW1zKSwga2VlcCBtYWNybyBib2RpZXMgbWluaW1hbCBieSBk ZWxlZ2F0aW5nIHdvcmsgdG8gcHJvY2VkdXJlcy4KKworDAorOzs7IEdyb3VwaW5nCisKKyhk ZWZpbmUgKG1heWJlLWluc3RhbGwtZGVmYXVsdC1ydW5uZXIgc3VpdGUtbmFtZSkKKyAgKHdo ZW4gKG5vdCAodGVzdC1ydW5uZXItY3VycmVudCkpCisgICAgKGxldCAoKHJ1bm5lciAodGVz dC1ydW5uZXItc2ltcGxlKSkKKyAgICAgICAgICAobG9nLWZpbGUgKHN0cmluZy1hcHBlbmQg c3VpdGUtbmFtZSAiLnNyZmk2NC5sb2ciKSkpCisgICAgICAoJXRlc3QtcnVubmVyLWxvZy1m aWxlISBydW5uZXIgbG9nLWZpbGUpCisgICAgICAodGVzdC1ydW5uZXItY3VycmVudCBydW5u ZXIpKSkpCisKKyhkZWZpbmUgdGVzdC1iZWdpbgorICAoY2FzZS1sYW1iZGEKKyAgICAoKG5h bWUpCisgICAgICh0ZXN0LWJlZ2luIG5hbWUgI2YpKQorICAgICgobmFtZSBjb3VudCkKKyAg ICAgKG1heWJlLWluc3RhbGwtZGVmYXVsdC1ydW5uZXIgbmFtZSkKKyAgICAgKGxldCAoKHIg KHRlc3QtcnVubmVyLWN1cnJlbnQpKSkKKyAgICAgICAobGV0ICgoc2tpcC1saXN0ICgldGVz dC1ydW5uZXItc2tpcC1saXN0IHIpKQorICAgICAgICAgICAgIChza2lwLXNhdmUgKCV0ZXN0 LXJ1bm5lci1za2lwLXNhdmUgcikpCisgICAgICAgICAgICAgKGZhaWwtbGlzdCAoJXRlc3Qt cnVubmVyLWZhaWwtbGlzdCByKSkKKyAgICAgICAgICAgICAoZmFpbC1zYXZlICgldGVzdC1y dW5uZXItZmFpbC1zYXZlIHIpKQorICAgICAgICAgICAgICh0b3RhbC1jb3VudCAoJXRlc3Qt cnVubmVyLXRvdGFsLWNvdW50IHIpKQorICAgICAgICAgICAgIChjb3VudC1saXN0ICgldGVz dC1ydW5uZXItY291bnQtbGlzdCByKSkKKyAgICAgICAgICAgICAoZ3JvdXAtc3RhY2sgKHRl c3QtcnVubmVyLWdyb3VwLXN0YWNrIHIpKSkKKyAgICAgICAgICgodGVzdC1ydW5uZXItb24t Z3JvdXAtYmVnaW4gcikgciBuYW1lIGNvdW50KQorICAgICAgICAgKCV0ZXN0LXJ1bm5lci1z a2lwLXNhdmUhIHIgKGNvbnMgc2tpcC1saXN0IHNraXAtc2F2ZSkpCisgICAgICAgICAoJXRl c3QtcnVubmVyLWZhaWwtc2F2ZSEgciAoY29ucyBmYWlsLWxpc3QgZmFpbC1zYXZlKSkKKyAg ICAgICAgICgldGVzdC1ydW5uZXItY291bnQtbGlzdCEgciAoY29ucyAoY29ucyB0b3RhbC1j b3VudCBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb3VudC1saXN0KSkKKyAgICAgICAgICh0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayEgciAo Y29ucyBuYW1lIGdyb3VwLXN0YWNrKSkpKSkpKQorCisoZGVmaW5lIHRlc3QtZW5kCisgIChj YXNlLWxhbWJkYQorICAgICgoKQorICAgICAodGVzdC1lbmQgI2YpKQorICAgICgobmFtZSkK KyAgICAgKGxldCogKChyICh0ZXN0LXJ1bm5lci1nZXQpKQorICAgICAgICAgICAgKGdyb3Vw cyAodGVzdC1ydW5uZXItZ3JvdXAtc3RhY2sgcikpKQorICAgICAgICh0ZXN0LXJlc3VsdC1j bGVhciByKQorICAgICAgICh3aGVuIChudWxsPyBncm91cHMpCisgICAgICAgICAoZXJyb3Ig InRlc3QtZW5kIG5vdCBpbiBhIGdyb3VwIikpCisgICAgICAgKHdoZW4gKGFuZCBuYW1lIChu b3QgKGVxdWFsPyBuYW1lIChjYXIgZ3JvdXBzKSkpKQorICAgICAgICAgKCh0ZXN0LXJ1bm5l ci1vbi1iYWQtZW5kLW5hbWUgcikgciBuYW1lIChjYXIgZ3JvdXBzKSkpCisgICAgICAgKGxl dCogKChjb3VudC1saXN0ICgldGVzdC1ydW5uZXItY291bnQtbGlzdCByKSkKKyAgICAgICAg ICAgICAgKGV4cGVjdGVkLWNvdW50IChjZGFyIGNvdW50LWxpc3QpKQorICAgICAgICAgICAg ICAoc2F2ZWQtY291bnQgKGNhYXIgY291bnQtbGlzdCkpCisgICAgICAgICAgICAgIChncm91 cC1jb3VudCAoLSAoJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50IHIpIHNhdmVkLWNvdW50KSkp CisgICAgICAgICAod2hlbiAoYW5kIGV4cGVjdGVkLWNvdW50CisgICAgICAgICAgICAgICAg ICAgIChub3QgKD0gZXhwZWN0ZWQtY291bnQgZ3JvdXAtY291bnQpKSkKKyAgICAgICAgICAg KCh0ZXN0LXJ1bm5lci1vbi1iYWQtY291bnQgcikgciBncm91cC1jb3VudCBleHBlY3RlZC1j b3VudCkpCisgICAgICAgICAoKHRlc3QtcnVubmVyLW9uLWdyb3VwLWVuZCByKSByKQorICAg ICAgICAgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrISByIChjZHIgKHRlc3QtcnVubmVyLWdy b3VwLXN0YWNrIHIpKSkKKyAgICAgICAgICgldGVzdC1ydW5uZXItc2tpcC1saXN0ISByIChj YXIgKCV0ZXN0LXJ1bm5lci1za2lwLXNhdmUgcikpKQorICAgICAgICAgKCV0ZXN0LXJ1bm5l ci1za2lwLXNhdmUhIHIgKGNkciAoJXRlc3QtcnVubmVyLXNraXAtc2F2ZSByKSkpCisgICAg ICAgICAoJXRlc3QtcnVubmVyLWZhaWwtbGlzdCEgciAoY2FyICgldGVzdC1ydW5uZXItZmFp bC1zYXZlIHIpKSkKKyAgICAgICAgICgldGVzdC1ydW5uZXItZmFpbC1zYXZlISByIChjZHIg KCV0ZXN0LXJ1bm5lci1mYWlsLXNhdmUgcikpKQorICAgICAgICAgKCV0ZXN0LXJ1bm5lci1j b3VudC1saXN0ISByIChjZHIgY291bnQtbGlzdCkpCisgICAgICAgICAod2hlbiAobnVsbD8g KHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHIpKQorICAgICAgICAgICAoKHRlc3QtcnVubmVy LW9uLWZpbmFsIHIpIHIpKSkpKSkpCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtZ3JvdXAKKyAg KHN5bnRheC1ydWxlcyAoKQorICAgICgoXyA8bmFtZT4gPGJvZHk+IC4gPGJvZHk+KikKKyAg ICAgKCV0ZXN0LWdyb3VwIDxuYW1lPiAobGFtYmRhICgpIDxib2R5PiAuIDxib2R5PiopKSkp KQorCisoZGVmaW5lICgldGVzdC1ncm91cCBuYW1lIHRodW5rKQorICAoYmVnaW4KKyAgICAo bWF5YmUtaW5zdGFsbC1kZWZhdWx0LXJ1bm5lciBuYW1lKQorICAgIChsZXQgKChydW5uZXIg KHRlc3QtcnVubmVyLWdldCkpKQorICAgICAgKHRlc3QtcmVzdWx0LWNsZWFyIHJ1bm5lcikK KyAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnbmFtZSBuYW1lKQorICAgICAgKHVu bGVzcyAodGVzdC1za2lwPyBydW5uZXIpCisgICAgICAgIChkeW5hbWljLXdpbmQKKyAgICAg ICAgICAobGFtYmRhICgpICh0ZXN0LWJlZ2luIG5hbWUpKQorICAgICAgICAgIHRodW5rCisg ICAgICAgICAgKGxhbWJkYSAoKSAodGVzdC1lbmQgbmFtZSkpKSkpKSkKKworKGRlZmluZS1z eW50YXggdGVzdC1ncm91cC13aXRoLWNsZWFudXAKKyAgKHN5bnRheC1ydWxlcyAoKQorICAg ICgoXyA8bmFtZT4gPGJvZHk+IDxib2R5PiogLi4uIDxjbGVhbnVwPikKKyAgICAgKHRlc3Qt Z3JvdXAgPG5hbWU+CisgICAgICAgKGR5bmFtaWMtd2luZCAobGFtYmRhICgpICNmKQorICAg ICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSA8Ym9keT4gPGJvZHk+KiAuLi4pCisgICAg ICAgICAgICAgICAgICAgICAobGFtYmRhICgpIDxjbGVhbnVwPikpKSkpKQorCisMCis7Ozsg U2tpcHBpbmcsIGV4cGVjdGVkLWZhaWxpbmcsIG1hdGNoaW5nCisKKyhkZWZpbmUgKHRlc3Qt c2tpcCAuIHNwZWNzKQorICAobGV0ICgocnVubmVyICh0ZXN0LXJ1bm5lci1nZXQpKSkKKyAg ICAoJXRlc3QtcnVubmVyLXNraXAtbGlzdCEKKyAgICAgcnVubmVyIChjb25zIChhcHBseSB0 ZXN0LW1hdGNoLWFsbCBzcGVjcykKKyAgICAgICAgICAgICAgICAgICgldGVzdC1ydW5uZXIt c2tpcC1saXN0IHJ1bm5lcikpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc2tpcD8gcnVubmVyKQor ICAobGV0ICgocnVuLWxpc3QgKCV0ZXN0LXJ1bm5lci1ydW4tbGlzdCBydW5uZXIpKQorICAg ICAgICAoc2tpcC1saXN0ICgldGVzdC1ydW5uZXItc2tpcC1saXN0IHJ1bm5lcikpKQorICAg IChvciAoYW5kIHJ1bi1saXN0IChub3QgKGFueS1wcmVkIHJ1bi1saXN0IHJ1bm5lcikpKQor ICAgICAgICAoYW55LXByZWQgc2tpcC1saXN0IHJ1bm5lcikpKSkKKworKGRlZmluZSAodGVz dC1leHBlY3QtZmFpbCAuIHNwZWNzKQorICAobGV0ICgocnVubmVyICh0ZXN0LXJ1bm5lci1n ZXQpKSkKKyAgICAoJXRlc3QtcnVubmVyLWZhaWwtbGlzdCEKKyAgICAgcnVubmVyIChjb25z IChhcHBseSB0ZXN0LW1hdGNoLWFsbCBzcGVjcykKKyAgICAgICAgICAgICAgICAgICgldGVz dC1ydW5uZXItZmFpbC1saXN0IHJ1bm5lcikpKSkpCisKKyhkZWZpbmUgKHRlc3QtbWF0Y2gt YW55IC4gc3BlY3MpCisgIChsZXQgKChwcmVkcyAobWFwIG1ha2UtcHJlZCBzcGVjcykpKQor ICAgIChsYW1iZGEgKHJ1bm5lcikKKyAgICAgIChhbnktcHJlZCBwcmVkcyBydW5uZXIpKSkp CisKKyhkZWZpbmUgKHRlc3QtbWF0Y2gtYWxsIC4gc3BlY3MpCisgIChsZXQgKChwcmVkcyAo bWFwIG1ha2UtcHJlZCBzcGVjcykpKQorICAgIChsYW1iZGEgKHJ1bm5lcikKKyAgICAgIChl dmVyeS1wcmVkIHByZWRzIHJ1bm5lcikpKSkKKworKGRlZmluZSAobWFrZS1wcmVkIHNwZWMp CisgIChjb25kCisgICAoKHByb2NlZHVyZT8gc3BlYykKKyAgICBzcGVjKQorICAgKChpbnRl Z2VyPyBzcGVjKQorICAgICh0ZXN0LW1hdGNoLW50aCAxIHNwZWMpKQorICAgKChzdHJpbmc/ IHNwZWMpCisgICAgKHRlc3QtbWF0Y2gtbmFtZSBzcGVjKSkKKyAgIChlbHNlCisgICAgKGVy cm9yICJub3QgYSB2YWxpZCB0ZXN0IHNwZWNpZmllciIgc3BlYykpKSkKKworKGRlZmluZSB0 ZXN0LW1hdGNoLW50aAorICAoY2FzZS1sYW1iZGEKKyAgICAoKG4pICh0ZXN0LW1hdGNoLW50 aCBuIDEpKQorICAgICgobiBjb3VudCkKKyAgICAgKGxldCAoKGkgMCkpCisgICAgICAgKGxh bWJkYSAocnVubmVyKQorICAgICAgICAgKHNldCEgaSAoKyBpIDEpKQorICAgICAgICAgKGFu ZCAoPj0gaSBuKSAoPCBpICgrIG4gY291bnQpKSkpKSkpKQorCisoZGVmaW5lICh0ZXN0LW1h dGNoLW5hbWUgbmFtZSkKKyAgKGxhbWJkYSAocnVubmVyKQorICAgIChlcXVhbD8gbmFtZSAo dGVzdC1ydW5uZXItdGVzdC1uYW1lIHJ1bm5lcikpKSkKKworOzs7IEJld2FyZTogYWxsIHBy ZWRpY2F0ZXMgbXVzdCBiZSBjYWxsZWQgYmVjYXVzZSB0aGV5IG1pZ2h0IGhhdmUgc2lkZS1l ZmZlY3RzOworOzs7IG5vIGVhcmx5IHJldHVybmluZyBvciBhbmQvb3Igc2hvcnQtY2lyY3Vp dGluZyBvZiBwcm9jZWR1cmUgY2FsbHMgYWxsb3dlZC4KKworKGRlZmluZSAoYW55LXByZWQg cHJlZHMgb2JqZWN0KQorICAobGV0IGxvb3AgKChtYXRjaGVkPyAjZikKKyAgICAgICAgICAg ICAocHJlZHMgcHJlZHMpKQorICAgIChpZiAobnVsbD8gcHJlZHMpCisgICAgICAgIG1hdGNo ZWQ/CisgICAgICAgIChsZXQgKChyZXN1bHQgKChjYXIgcHJlZHMpIG9iamVjdCkpKQorICAg ICAgICAgIChsb29wIChvciBtYXRjaGVkPyByZXN1bHQpCisgICAgICAgICAgICAgICAgKGNk ciBwcmVkcykpKSkpKQorCisoZGVmaW5lIChldmVyeS1wcmVkIHByZWRzIG9iamVjdCkKKyAg KGxldCBsb29wICgoZmFpbGVkPyAjZikKKyAgICAgICAgICAgICAocHJlZHMgcHJlZHMpKQor ICAgIChpZiAobnVsbD8gcHJlZHMpCisgICAgICAgIChub3QgZmFpbGVkPykKKyAgICAgICAg KGxldCAoKHJlc3VsdCAoKGNhciBwcmVkcykgb2JqZWN0KSkpCisgICAgICAgICAgKGxvb3Ag KG9yIGZhaWxlZD8gKG5vdCByZXN1bHQpKQorICAgICAgICAgICAgICAgIChjZHIgcHJlZHMp KSkpKSkKKwwKKzs7OyBBY3R1YWwgdGVzdGluZworCisoZGVmaW5lLXN5bnRheCBmYWxzZS1p Zi1lcnJvcgorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIDxleHByZXNzaW9uPiA8cnVu bmVyPikKKyAgICAgKGd1YXJkIChlcnJvcgorICAgICAgICAgICAgIChlbHNlCisgICAgICAg ICAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIDxydW5uZXI+ICdhY3R1YWwtZXJyb3IgZXJyb3Ip CisgICAgICAgICAgICAgICNmKSkKKyAgICAgICA8ZXhwcmVzc2lvbj4pKSkpCisKKyhkZWZp bmUgKHRlc3QtcHJlbHVkZSBzb3VyY2UtaW5mbyBydW5uZXIgbmFtZSBmb3JtKQorICAodGVz dC1yZXN1bHQtY2xlYXIgcnVubmVyKQorICAoc2V0LXNvdXJjZS1pbmZvISBydW5uZXIgc291 cmNlLWluZm8pCisgICh3aGVuIG5hbWUKKyAgICAodGVzdC1yZXN1bHQtc2V0ISBydW5uZXIg J25hbWUgbmFtZSkpCisgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnc291cmNlLWZvcm0g Zm9ybSkKKyAgKGxldCAoKHNraXA/ICh0ZXN0LXNraXA/IHJ1bm5lcikpKQorICAgIChpZiBz a2lwPworICAgICAgICAodGVzdC1yZXN1bHQtc2V0ISBydW5uZXIgJ3Jlc3VsdC1raW5kICdz a2lwKQorICAgICAgICAobGV0ICgoZmFpbC1saXN0ICgldGVzdC1ydW5uZXItZmFpbC1saXN0 IHJ1bm5lcikpKQorICAgICAgICAgICh3aGVuIChhbnktcHJlZCBmYWlsLWxpc3QgcnVubmVy KQorICAgICAgICAgICAgOzsgRm9yIGxhdGVyIGluc3BlY3Rpb24gb25seS4KKyAgICAgICAg ICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAncmVzdWx0LWtpbmQgJ3hmYWlsKSkpKQor ICAgICgodGVzdC1ydW5uZXItb24tdGVzdC1iZWdpbiBydW5uZXIpIHJ1bm5lcikKKyAgICAo bm90IHNraXA/KSkpCisKKyhkZWZpbmUgKHRlc3QtcG9zdGx1ZGUgcnVubmVyKQorICAobGV0 ICgocmVzdWx0LWtpbmQgKHRlc3QtcmVzdWx0LWtpbmQgcnVubmVyKSkpCisgICAgKGNhc2Ug cmVzdWx0LWtpbmQKKyAgICAgICgocGFzcykKKyAgICAgICAodGVzdC1ydW5uZXItcGFzcy1j b3VudCEgcnVubmVyICgrIDEgKHRlc3QtcnVubmVyLXBhc3MtY291bnQgcnVubmVyKSkpKQor ICAgICAgKChmYWlsKQorICAgICAgICh0ZXN0LXJ1bm5lci1mYWlsLWNvdW50ISBydW5uZXIg KCsgMSAodGVzdC1ydW5uZXItZmFpbC1jb3VudCBydW5uZXIpKSkpCisgICAgICAoKHhwYXNz KQorICAgICAgICh0ZXN0LXJ1bm5lci14cGFzcy1jb3VudCEgcnVubmVyICgrIDEgKHRlc3Qt cnVubmVyLXhwYXNzLWNvdW50IHJ1bm5lcikpKSkKKyAgICAgICgoeGZhaWwpCisgICAgICAg KHRlc3QtcnVubmVyLXhmYWlsLWNvdW50ISBydW5uZXIgKCsgMSAodGVzdC1ydW5uZXIteGZh aWwtY291bnQgcnVubmVyKSkpKQorICAgICAgKChza2lwKQorICAgICAgICh0ZXN0LXJ1bm5l ci1za2lwLWNvdW50ISBydW5uZXIgKCsgMSAodGVzdC1ydW5uZXItc2tpcC1jb3VudCBydW5u ZXIpKSkpKQorICAgICgldGVzdC1ydW5uZXItdG90YWwtY291bnQhIHJ1bm5lciAoKyAxICgl dGVzdC1ydW5uZXItdG90YWwtY291bnQgcnVubmVyKSkpCisgICAgKCh0ZXN0LXJ1bm5lci1v bi10ZXN0LWVuZCBydW5uZXIpIHJ1bm5lcikpKQorCisoZGVmaW5lIChzZXQtcmVzdWx0LWtp bmQhIHJ1bm5lciBwYXNzPykKKyAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdyZXN1bHQt a2luZAorICAgICAgICAgICAgICAgICAgICAoaWYgKGVxPyAodGVzdC1yZXN1bHQta2luZCBy dW5uZXIpICd4ZmFpbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChpZiBwYXNzPyAneHBh c3MgJ3hmYWlsKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHBhc3M/ICdwYXNzICdm YWlsKSkpKQorCis7OzsgV2UgbmVlZCB0byB1c2Ugc29tZSB0cmlja2VyeSB0byBnZXQgdGhl IHNvdXJjZSBpbmZvIHJpZ2h0LiAgVGhlIGltcG9ydGFudAorOzs7IHRoaW5nIGlzIHRvIHBh c3MgYSBzeW50YXggb2JqZWN0IHRoYXQgaXMgYSBwYWlyIHRvIGBzb3VyY2UtaW5mbycsIGFu ZCBtYWtlCis7Ozsgc3VyZSB0aGlzIHN5bnRheCBvYmplY3QgY29tZXMgZnJvbSB1c2VyIGNv ZGUgYW5kIG5vdCBmcm9tIG91cnNlbHZlcy4KKworKGRlZmluZS1zeW50YXggdGVzdC1hc3Nl cnQKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyAuIDxyZXN0PikKKyAgICAgKHRlc3Qt YXNzZXJ0L3NvdXJjZS1pbmZvIChzb3VyY2UtaW5mbyA8cmVzdD4pIC4gPHJlc3Q+KSkpKQor CisoZGVmaW5lLXN5bnRheCB0ZXN0LWFzc2VydC9zb3VyY2UtaW5mbworICAoc3ludGF4LXJ1 bGVzICgpCisgICAgKChfIDxzb3VyY2UtaW5mbz4gPGV4cHI+KQorICAgICAodGVzdC1hc3Nl cnQvc291cmNlLWluZm8gPHNvdXJjZS1pbmZvPiAjZiA8ZXhwcj4pKQorICAgICgoXyA8c291 cmNlLWluZm8+IDxuYW1lPiA8ZXhwcj4pCisgICAgICgldGVzdC1hc3NlcnQgPHNvdXJjZS1p bmZvPiA8bmFtZT4gJzxleHByPiAobGFtYmRhICgpIDxleHByPikpKSkpCisKKyhkZWZpbmUg KCV0ZXN0LWFzc2VydCBzb3VyY2UtaW5mbyBuYW1lIGZvcm0gdGh1bmspCisgIChsZXQgKChy dW5uZXIgKHRlc3QtcnVubmVyLWdldCkpKQorICAgICh3aGVuICh0ZXN0LXByZWx1ZGUgc291 cmNlLWluZm8gcnVubmVyIG5hbWUgZm9ybSkKKyAgICAgIChsZXQgKCh2YWwgKGZhbHNlLWlm LWVycm9yICh0aHVuaykgcnVubmVyKSkpCisgICAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1 bm5lciAnYWN0dWFsLXZhbHVlIHZhbCkKKyAgICAgICAgKHNldC1yZXN1bHQta2luZCEgcnVu bmVyIHZhbCkpKQorICAgICh0ZXN0LXBvc3RsdWRlIHJ1bm5lcikpKQorCisoZGVmaW5lLXN5 bnRheCB0ZXN0LWNvbXBhcmUKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyAuIDxyZXN0 PikKKyAgICAgKHRlc3QtY29tcGFyZS9zb3VyY2UtaW5mbyAoc291cmNlLWluZm8gPHJlc3Q+ KSAuIDxyZXN0PikpKSkKKworKGRlZmluZS1zeW50YXggdGVzdC1jb21wYXJlL3NvdXJjZS1p bmZvCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gPHNvdXJjZS1pbmZvPiA8Y29tcGFy ZT4gPGV4cGVjdGVkPiA8ZXhwcj4pCisgICAgICh0ZXN0LWNvbXBhcmUvc291cmNlLWluZm8g PHNvdXJjZS1pbmZvPiA8Y29tcGFyZT4gI2YgPGV4cGVjdGVkPiA8ZXhwcj4pKQorICAgICgo XyA8c291cmNlLWluZm8+IDxjb21wYXJlPiA8bmFtZT4gPGV4cGVjdGVkPiA8ZXhwcj4pCisg ICAgICgldGVzdC1jb21wYXJlIDxzb3VyY2UtaW5mbz4gPGNvbXBhcmU+IDxuYW1lPiA8ZXhw ZWN0ZWQ+ICc8ZXhwcj4KKyAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSA8ZXhwcj4p KSkpKQorCisoZGVmaW5lICgldGVzdC1jb21wYXJlIHNvdXJjZS1pbmZvIGNvbXBhcmUgbmFt ZSBleHBlY3RlZCBmb3JtIHRodW5rKQorICAobGV0ICgocnVubmVyICh0ZXN0LXJ1bm5lci1n ZXQpKSkKKyAgICAod2hlbiAodGVzdC1wcmVsdWRlIHNvdXJjZS1pbmZvIHJ1bm5lciBuYW1l IGZvcm0pCisgICAgICAodGVzdC1yZXN1bHQtc2V0ISBydW5uZXIgJ2V4cGVjdGVkLXZhbHVl IGV4cGVjdGVkKQorICAgICAgKGxldCAoKHBhc3M/IChmYWxzZS1pZi1lcnJvcgorICAgICAg ICAgICAgICAgICAgICAobGV0ICgodmFsICh0aHVuaykpKQorICAgICAgICAgICAgICAgICAg ICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnYWN0dWFsLXZhbHVlIHZhbCkKKyAgICAg ICAgICAgICAgICAgICAgICAoY29tcGFyZSBleHBlY3RlZCB2YWwpKQorICAgICAgICAgICAg ICAgICAgICBydW5uZXIpKSkKKyAgICAgICAgKHNldC1yZXN1bHQta2luZCEgcnVubmVyIHBh c3M/KSkpCisgICAgKHRlc3QtcG9zdGx1ZGUgcnVubmVyKSkpCisKKyhkZWZpbmUtc3ludGF4 IHRlc3QtZXF1YWwKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyAuIDxyZXN0PikKKyAg ICAgKHRlc3QtY29tcGFyZS9zb3VyY2UtaW5mbyAoc291cmNlLWluZm8gPHJlc3Q+KSBlcXVh bD8gLiA8cmVzdD4pKSkpCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtZXF2CisgIChzeW50YXgt cnVsZXMgKCkKKyAgICAoKF8gLiA8cmVzdD4pCisgICAgICh0ZXN0LWNvbXBhcmUvc291cmNl LWluZm8gKHNvdXJjZS1pbmZvIDxyZXN0PikgZXF2PyAuIDxyZXN0PikpKSkKKworKGRlZmlu ZS1zeW50YXggdGVzdC1lcQorICAoc3ludGF4LXJ1bGVzICgpCisgICAgKChfIC4gPHJlc3Q+ KQorICAgICAodGVzdC1jb21wYXJlL3NvdXJjZS1pbmZvIChzb3VyY2UtaW5mbyA8cmVzdD4p IGVxPyAuIDxyZXN0PikpKSkKKworKGRlZmluZSAoYXBwcm94PSBtYXJnaW4pCisgIChsYW1i ZGEgKHZhbHVlIGV4cGVjdGVkKQorICAgIChsZXQgKChydmFsIChyZWFsLXBhcnQgdmFsdWUp KQorICAgICAgICAgIChpdmFsIChpbWFnLXBhcnQgdmFsdWUpKQorICAgICAgICAgIChyZXhw IChyZWFsLXBhcnQgZXhwZWN0ZWQpKQorICAgICAgICAgIChpZXhwIChpbWFnLXBhcnQgZXhw ZWN0ZWQpKSkKKyAgICAgIChhbmQgKD49IHJ2YWwgKC0gcmV4cCBtYXJnaW4pKQorICAgICAg ICAgICAoPj0gaXZhbCAoLSBpZXhwIG1hcmdpbikpCisgICAgICAgICAgICg8PSBydmFsICgr IHJleHAgbWFyZ2luKSkKKyAgICAgICAgICAgKDw9IGl2YWwgKCsgaWV4cCBtYXJnaW4pKSkp KSkKKworKGRlZmluZS1zeW50YXggdGVzdC1hcHByb3hpbWF0ZQorICAoc3ludGF4LXJ1bGVz ICgpCisgICAgKChfIC4gPHJlc3Q+KQorICAgICAodGVzdC1hcHByb3hpbWF0ZS9zb3VyY2Ut aW5mbyAoc291cmNlLWluZm8gPHJlc3Q+KSAuIDxyZXN0PikpKSkKKworKGRlZmluZS1zeW50 YXggdGVzdC1hcHByb3hpbWF0ZS9zb3VyY2UtaW5mbworICAoc3ludGF4LXJ1bGVzICgpCisg ICAgKChfIDxzb3VyY2UtaW5mbz4gPGV4cGVjdGVkPiA8ZXhwcj4gPGVycm9yLW1hcmdpbj4p CisgICAgICh0ZXN0LWFwcHJveGltYXRlL3NvdXJjZS1pbmZvCisgICAgICA8c291cmNlLWlu Zm8+ICNmIDxleHBlY3RlZD4gPGV4cHI+IDxlcnJvci1tYXJnaW4+KSkKKyAgICAoKF8gPHNv dXJjZS1pbmZvPiA8bmFtZT4gPGV4cGVjdGVkPiA8ZXhwcj4gPGVycm9yLW1hcmdpbj4pCisg ICAgICh0ZXN0LWNvbXBhcmUvc291cmNlLWluZm8KKyAgICAgIDxzb3VyY2UtaW5mbz4gKGFw cHJveD0gPGVycm9yLW1hcmdpbj4pIDxuYW1lPiA8ZXhwZWN0ZWQ+IDxleHByPikpKSkKKwor KGRlZmluZSAoZXJyb3ItbWF0Y2hlcz8gZXJyb3IgdHlwZSkKKyAgKGNvbmQKKyAgICgoZXE/ IHR5cGUgI3QpCisgICAgI3QpCisgICAoKGNvbmRpdGlvbi10eXBlPyB0eXBlKQorICAgIChh bmQgKGNvbmRpdGlvbj8gZXJyb3IpIChjb25kaXRpb24taGFzLXR5cGU/IGVycm9yIHR5cGUp KSkKKyAgICgocHJvY2VkdXJlPyB0eXBlKQorICAgICh0eXBlIGVycm9yKSkKKyAgIChlbHNl CisgICAgKGxldCAoKHJ1bm5lciAodGVzdC1ydW5uZXItZ2V0KSkpCisgICAgICAoKCV0ZXN0 LXJ1bm5lci1vbi1iYWQtZXJyb3ItdHlwZSBydW5uZXIpIHJ1bm5lciB0eXBlIGVycm9yKSkK KyAgICAjZikpKQorCisoZGVmaW5lLXN5bnRheCB0ZXN0LWVycm9yCisgIChzeW50YXgtcnVs ZXMgKCkKKyAgICAoKF8gLiA8cmVzdD4pCisgICAgICh0ZXN0LWVycm9yL3NvdXJjZS1pbmZv IChzb3VyY2UtaW5mbyA8cmVzdD4pIC4gPHJlc3Q+KSkpKQorCisoZGVmaW5lLXN5bnRheCB0 ZXN0LWVycm9yL3NvdXJjZS1pbmZvCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gPHNv dXJjZS1pbmZvPiA8ZXhwcj4pCisgICAgICh0ZXN0LWVycm9yL3NvdXJjZS1pbmZvIDxzb3Vy Y2UtaW5mbz4gI2YgI3QgPGV4cHI+KSkKKyAgICAoKF8gPHNvdXJjZS1pbmZvPiA8ZXJyb3It dHlwZT4gPGV4cHI+KQorICAgICAodGVzdC1lcnJvci9zb3VyY2UtaW5mbyA8c291cmNlLWlu Zm8+ICNmIDxlcnJvci10eXBlPiA8ZXhwcj4pKQorICAgICgoXyA8c291cmNlLWluZm8+IDxu YW1lPiA8ZXJyb3ItdHlwZT4gPGV4cHI+KQorICAgICAoJXRlc3QtZXJyb3IgPHNvdXJjZS1p bmZvPiA8bmFtZT4gPGVycm9yLXR5cGU+ICc8ZXhwcj4KKyAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkgPGV4cHI+KSkpKSkKKworKGRlZmluZSAoJXRlc3QtZXJyb3Igc291cmNlLWlu Zm8gbmFtZSBlcnJvci10eXBlIGZvcm0gdGh1bmspCisgIChsZXQgKChydW5uZXIgKHRlc3Qt cnVubmVyLWdldCkpKQorICAgICh3aGVuICh0ZXN0LXByZWx1ZGUgc291cmNlLWluZm8gcnVu bmVyIG5hbWUgZm9ybSkKKyAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAnZXhwZWN0 ZWQtZXJyb3IgZXJyb3ItdHlwZSkKKyAgICAgIChsZXQgKChwYXNzPyAoZ3VhcmQgKGVycm9y IChlbHNlICh0ZXN0LXJlc3VsdC1zZXQhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnVubmVyICdhY3R1YWwtZXJyb3IgZXJyb3IpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3ItbWF0Y2hlcz8gZXJyb3IgZXJyb3It dHlwZSkpKQorICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHZhbCAodGh1bmspKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgKHRlc3QtcmVzdWx0LXNldCEgcnVubmVyICdhY3R1YWwt dmFsdWUgdmFsKSkKKyAgICAgICAgICAgICAgICAgICAgICNmKSkpCisgICAgICAgIChzZXQt cmVzdWx0LWtpbmQhIHJ1bm5lciBwYXNzPykpKQorICAgICh0ZXN0LXBvc3RsdWRlIHJ1bm5l cikpKQorCisoZGVmaW5lIChkZWZhdWx0LW1vZHVsZSkKKyAgKGNvbmQtZXhwYW5kCisgICAo Z3VpbGUgKGN1cnJlbnQtbW9kdWxlKSkKKyAgIChlbHNlICNmKSkpCisKKyhkZWZpbmUgdGVz dC1yZWFkLWV2YWwtc3RyaW5nCisgIChjYXNlLWxhbWJkYQorICAgICgoc3RyaW5nKQorICAg ICAodGVzdC1yZWFkLWV2YWwtc3RyaW5nIHN0cmluZyAoZGVmYXVsdC1tb2R1bGUpKSkKKyAg ICAoKHN0cmluZyBlbnYpCisgICAgIChsZXQqICgocG9ydCAob3Blbi1pbnB1dC1zdHJpbmcg c3RyaW5nKSkKKyAgICAgICAgICAgIChmb3JtIChyZWFkIHBvcnQpKSkKKyAgICAgICAoaWYg KGVvZi1vYmplY3Q/IChyZWFkLWNoYXIgcG9ydCkpCisgICAgICAgICAgIChpZiBlbnYKKyAg ICAgICAgICAgICAgIChldmFsIGZvcm0gZW52KQorICAgICAgICAgICAgICAgKGV2YWwgZm9y bSkpCisgICAgICAgICAgIChlcnJvciAiKG5vdCBhdCBlb2YpIikpKSkpKQorCisMCis7Ozsg VGVzdCBydW5uZXIgY29udHJvbCBmbG93CisKKyhkZWZpbmUtc3ludGF4IHRlc3Qtd2l0aC1y dW5uZXIKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyA8cnVubmVyPiA8Ym9keT4gLiA8 Ym9keT4qKQorICAgICAobGV0ICgoc2F2ZWQtcnVubmVyICh0ZXN0LXJ1bm5lci1jdXJyZW50 KSkpCisgICAgICAgKGR5bmFtaWMtd2luZAorICAgICAgICAgKGxhbWJkYSAoKSAodGVzdC1y dW5uZXItY3VycmVudCA8cnVubmVyPikpCisgICAgICAgICAobGFtYmRhICgpIDxib2R5PiAu IDxib2R5PiopCisgICAgICAgICAobGFtYmRhICgpICh0ZXN0LXJ1bm5lci1jdXJyZW50IHNh dmVkLXJ1bm5lcikpKSkpKSkKKworKGRlZmluZSAodGVzdC1hcHBseSBmaXJzdCAuIHJlc3Qp CisgIChsZXQgKChydW5uZXIgKGlmICh0ZXN0LXJ1bm5lcj8gZmlyc3QpCisgICAgICAgICAg ICAgICAgICAgIGZpcnN0CisgICAgICAgICAgICAgICAgICAgIChvciAodGVzdC1ydW5uZXIt Y3VycmVudCkgKHRlc3QtcnVubmVyLWNyZWF0ZSkpKSkKKyAgICAgICAgKHJ1bi1saXN0IChp ZiAodGVzdC1ydW5uZXI/IGZpcnN0KQorICAgICAgICAgICAgICAgICAgICAgIChkcm9wLXJp Z2h0IHJlc3QgMSkKKyAgICAgICAgICAgICAgICAgICAgICAoY29ucyBmaXJzdCAoZHJvcC1y aWdodCByZXN0IDEpKSkpCisgICAgICAgIChwcm9jIChsYXN0IHJlc3QpKSkKKyAgICAodGVz dC13aXRoLXJ1bm5lciBydW5uZXIKKyAgICAgIChsZXQgKChzYXZlZC1ydW4tbGlzdCAoJXRl c3QtcnVubmVyLXJ1bi1saXN0IHJ1bm5lcikpKQorICAgICAgICAoJXRlc3QtcnVubmVyLXJ1 bi1saXN0ISBydW5uZXIgcnVuLWxpc3QpCisgICAgICAgIChwcm9jKQorICAgICAgICAoJXRl c3QtcnVubmVyLXJ1bi1saXN0ISBydW5uZXIgc2F2ZWQtcnVuLWxpc3QpKSkpKQorCisMCis7 OzsgSW5kaWNhdGUgc3VjY2Vzcy9mYWlsdXJlIHZpYSBleGl0IHN0YXR1cworCisoZGVmaW5l ICh0ZXN0LWV4aXQpCisgIChsZXQgKChydW5uZXIgKHRlc3QtcnVubmVyLWN1cnJlbnQpKSkK KyAgICAoaWYgKGFuZCAoemVybz8gKHRlc3QtcnVubmVyLXhwYXNzLWNvdW50IHJ1bm5lcikp CisgICAgICAgICAgICAgKHplcm8/ICh0ZXN0LXJ1bm5lci1mYWlsLWNvdW50IHJ1bm5lcikp KQorICAgICAgICAoZXhpdCAwKQorICAgICAgICAoZXhpdCAxKSkpKQorCis7OzsgZXhlY3V0 aW9uLnNjbSBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktNjQvc291 cmNlLWluZm8uYm9keS5zY20gYi9tb2R1bGUvc3JmaS9zcmZpLTY0L3NvdXJjZS1pbmZvLmJv ZHkuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjg0ODczNTg3 Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlL3NyZmkvc3JmaS02NC9zb3VyY2UtaW5mby5i b2R5LnNjbQpAQCAtMCwwICsxLDg4IEBACis7OyBDb3B5cmlnaHQgKGMpIDIwMTUgVGF5bGFu IFVscmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlpcmxpQGdtYWlsLmNvbT4KKzs7 Cis7OyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbgorOzsgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKzs7IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKzs7IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorOzsgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl bGwgY29waWVzCis7OyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworOzsgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKzs7Cis7OyBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorOzsgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCis7OworOzsgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCis7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKzs7IE1FUkNIQU5U QUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECis7OyBOT05J TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTCis7OyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KKzs7IEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCis7OyBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4g VEhFCis7OyBTT0ZUV0FSRS4KKworOzs7IEluIHNvbWUgc3lzdGVtcywgYSBtYWNybyB1c2Ug bGlrZSAoc291cmNlLWluZm8gLi4uKSwgdGhhdCByZXNpZGVzIGluIGEKKzs7OyBzeW50YXgt cnVsZXMgbWFjcm8gYm9keSwgZmlyc3QgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBwbGFjZSB3 aGVyZSB0aGUKKzs7OyBzeW50YXgtcnVsZXMgbWFjcm8gd2FzIHVzZWQsIGFuZCB0aGVuIHRo ZSB0cmFuc2Zvcm1lciBvZiAnc291cmNlLWluZm8nIGlzCis7OzsgY2FsbGVkIHdpdGggYSBz eW50YXggb2JqZWN0IHRoYXQgaGFzIHRoZSBzb3VyY2UgbG9jYXRpb24gaW5mb3JtYXRpb24g b2YgdGhhdAorOzs7IHBvc2l0aW9uLiAgVGhhdCB3b3JrcyBmaW5lIHdoZW4gdGhlIHVzZXIg Y2FsbHMgZS5nLiAodGVzdC1hc3NlcnQgLi4uKSwgd2hvc2UKKzs7OyBib2R5IGNvbnRhaW5z IChzb3VyY2UtaW5mbyAuLi4pOyB0aGUgdXNlciBnZXRzIHRoZSBzb3VyY2UgbG9jYXRpb24g b2YgdGhlCis7OzsgKHRlc3QtYXNzZXJ0IC4uLikgY2FsbCBhcyBpbnRlbmRlZCwgYW5kIG5v dCB0aGUgc291cmNlIGxvY2F0aW9uIG9mIHRoZSByZWFsCis7OzsgKHNvdXJjZS1pbmZvIC4u LikgY2FsbC4KKworOzs7IEluIG90aGVyIHN5c3RlbXMsICpmaXJzdCogdGhlIChzb3VyY2Ut aW5mbyAuLi4pIGlzIHByb2Nlc3NlZCB0byBnZXQgaXRzIHJlYWwKKzs7OyBwb3NpdGlvbiwg d2hpY2ggaXMgd2l0aGluIHRoZSBib2R5IG9mIGEgc3ludGF4LXJ1bGVzIG1hY3JvIGxpa2Ug dGVzdC1hc3NlcnQsCis7Ozsgc28gbm8gbWF0dGVyIHdoZXJlIHRoZSB1c2VyIGNhbGxzICh0 ZXN0LWFzc2VydCAuLi4pLCB0aGV5IGdldCBzb3VyY2UKKzs7OyBsb2NhdGlvbiBpbmZvcm1h dGlvbiBvZiB3aGVyZSB3ZSBkZWZpbmVkIHRlc3QtYXNzZXJ0IHdpdGggdGhlIGNhbGwgdG8K Kzs7OyAoc291cmNlLWluZm8gLi4uKSBpbiBpdHMgYm9keS4gIFRoYXQncyBhcmd1YWJseSBt b3JlIGNvcnJlY3QgYmVoYXZpb3IsCis7OzsgYWx0aG91Z2ggaW4gdGhpcyBjYXNlIGl0IG1h a2VzIG91ciBqb2IgYSBiaXQgaGFyZGVyOyB3ZSBuZWVkIHRvIGdldCB0aGUKKzs7OyBzb3Vy Y2UgbG9jYXRpb24gZnJvbSBhbiBhcmd1bWVudCB0byAnc291cmNlLWluZm8nIGluc3RlYWQu CisKKyhkZWZpbmUgKGNhbm9uaWNhbC1zeW50YXggZm9ybSBhcmcpCisgIChjb25kLWV4cGFu ZAorICAgKGthd2EgYXJnKQorICAgKGd1aWxlLTIgZm9ybSkKKyAgIChlbHNlICNmKSkpCisK Kyhjb25kLWV4cGFuZAorICgob3Iga2F3YSBndWlsZS0yKQorICAoZGVmaW5lLXN5bnRheCBz b3VyY2UtaW5mbworICAgIChsYW1iZGEgKHN0eCkKKyAgICAgIChzeW50YXgtY2FzZSBzdHgg KCkKKyAgICAgICAgKChfIDx4PikKKyAgICAgICAgIChsZXQqICgoc3R4IChjYW5vbmljYWwt c3ludGF4IHN0eCAoc3ludGF4IDx4PikpKQorICAgICAgICAgICAgICAgIChmaWxlIChzeW50 YXgtc291cmNlLWZpbGUgc3R4KSkKKyAgICAgICAgICAgICAgICAobGluZSAoc3ludGF4LXNv dXJjZS1saW5lIHN0eCkpKQorICAgICAgICAgICAocXVhc2lzeW50YXgKKyAgICAgICAgICAg IChjb25zICh1bnN5bnRheCBmaWxlKSAodW5zeW50YXggbGluZSkpKSkpKSkpKQorIChlbHNl CisgIChkZWZpbmUtc3ludGF4IHNvdXJjZS1pbmZvCisgICAgKHN5bnRheC1ydWxlcyAoKQor ICAgICAgKChfIDx4PikKKyAgICAgICAjZikpKSkpCisKKyhkZWZpbmUgKHN5bnRheC1zb3Vy Y2UtZmlsZSBzdHgpCisgIChjb25kLWV4cGFuZAorICAgKGthd2EKKyAgICAoc3ludGF4LXNv dXJjZSBzdHgpKQorICAgKGd1aWxlLTIKKyAgICAobGV0ICgoc291cmNlIChzeW50YXgtc291 cmNlIHN0eCkpKQorICAgICAgKGFuZCBzb3VyY2UgKGFzc3EtcmVmIHNvdXJjZSAnZmlsZW5h bWUpKSkpCisgICAoZWxzZQorICAgICNmKSkpCisKKyhkZWZpbmUgKHN5bnRheC1zb3VyY2Ut bGluZSBzdHgpCisgIChjb25kLWV4cGFuZAorICAgKGthd2EKKyAgICAoc3ludGF4LWxpbmUg c3R4KSkKKyAgIChndWlsZS0yCisgICAgKGxldCAoKHNvdXJjZSAoc3ludGF4LXNvdXJjZSBz dHgpKSkKKyAgICAgIChhbmQgc291cmNlIChhc3NxLXJlZiBzb3VyY2UgJ2xpbmUpKSkpCisg ICAoZWxzZQorICAgICNmKSkpCisKKyhkZWZpbmUgKHNldC1zb3VyY2UtaW5mbyEgcnVubmVy IHNvdXJjZS1pbmZvKQorICAod2hlbiBzb3VyY2UtaW5mbworICAgICh0ZXN0LXJlc3VsdC1z ZXQhIHJ1bm5lciAnc291cmNlLWZpbGUgKGNhciBzb3VyY2UtaW5mbykpCisgICAgKHRlc3Qt cmVzdWx0LXNldCEgcnVubmVyICdzb3VyY2UtbGluZSAoY2RyIHNvdXJjZS1pbmZvKSkpKQor Cis7Ozsgc291cmNlLWluZm8uYm9keS5zY20gZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9tb2R1 bGUvc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLXNpbXBsZS5ib2R5LnNjbSBiL21vZHVsZS9z cmZpL3NyZmktNjQvdGVzdC1ydW5uZXItc2ltcGxlLmJvZHkuc2NtCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjdjZTJlMzgzCi0tLSAvZGV2L251bGwKKysrIGIv bW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci1zaW1wbGUuYm9keS5zY20KQEAgLTAs MCArMSwxNjggQEAKKzs7IENvcHlyaWdodCAoYykgMjAwNSwgMjAwNiwgMjAwNywgMjAxMiwg MjAxMyBQZXIgQm90aG5lcgorOzsgQWRkZWQgImZ1bGwiIHN1cHBvcnQgZm9yIENoaWNrZW4s IEdhdWNoZSwgR3VpbGUgYW5kIFNJU0MuCis7OyAgIEFsZXggU2hpbm4sIENvcHlyaWdodCAo YykgMjAwNS4KKzs7IE1vZGlmaWVkIGZvciBTY2hlbWUgU3BoZXJlcyBieSDDgWx2YXJvIENh c3Ryby1DYXN0aWxsYSwgQ29weXJpZ2h0IChjKSAyMDEyLgorOzsgU3VwcG9ydCBmb3IgR3Vp bGUgMiBieSBNYXJrIEggV2VhdmVyIDxtaHdAbmV0cmlzLm9yZz4sIENvcHlyaWdodCAoYykg MjAxNC4KKzs7IFJlZmFjdG9yZWQgYnkgVGF5bGFuIFVscmljaCBCYXnEsXJsxLEvS2FtbWVy LCBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUuCis7OworOzsgUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKzs7IG9idGFpbmlu ZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u Cis7OyBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0Cis7OyByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKKzs7IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworOzsgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK Kzs7IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cis7OworOzsgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKzs7IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorOzsKKzs7IFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LAorOzsgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GCis7OyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORAorOzsgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO VCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUworOzsgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO IEFOCis7OyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTgorOzsgQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorOzsgU09GVFdBUkUuCisKKzs7 OyBIZWxwZXJzCisKKyhkZWZpbmUgKHN0cmluZy1qb2luIHN0cmluZ3MgZGVsaW1pdGVyKQor ICAoaWYgKG51bGw/IHN0cmluZ3MpCisgICAgICAiIgorICAgICAgKGxldCBsb29wICgocmVz dWx0IChjYXIgc3RyaW5ncykpCisgICAgICAgICAgICAgICAgIChyZXN0IChjZHIgc3RyaW5n cykpKQorICAgICAgICAoaWYgKG51bGw/IHJlc3QpCisgICAgICAgICAgICByZXN1bHQKKyAg ICAgICAgICAgIChsb29wIChzdHJpbmctYXBwZW5kIHJlc3VsdCBkZWxpbWl0ZXIgKGNhciBy ZXN0KSkKKyAgICAgICAgICAgICAgICAgIChjZHIgcmVzdCkpKSkpKQorCisoZGVmaW5lICh0 cnVuY2F0ZS1zdHJpbmcgc3RyaW5nIGxlbmd0aCkKKyAgKGRlZmluZSAobmV3bGluZS0+c3Bh Y2UgYykgKGlmIChjaGFyPT8gI1xuZXdsaW5lIGMpICNcc3BhY2UgYykpCisgIChsZXQqICgo c3RyaW5nIChzdHJpbmctbWFwIG5ld2xpbmUtPnNwYWNlIHN0cmluZykpCisgICAgICAgICAo ZmlsbCAiLi4uIikKKyAgICAgICAgIChmaWxsLWxlbiAoc3RyaW5nLWxlbmd0aCBmaWxsKSkK KyAgICAgICAgIChzdHJpbmctbGVuIChzdHJpbmctbGVuZ3RoIHN0cmluZykpKQorICAgIChp ZiAoPD0gc3RyaW5nLWxlbiAoKyBsZW5ndGggZmlsbC1sZW4pKQorICAgICAgICBzdHJpbmcK KyAgICAgICAgKGxldC12YWx1ZXMgKCgocSByKSAoZmxvb3IvIGxlbmd0aCA0KSkpCisgICAg ICAgICAgOzsgTGVmdCBwYXJ0IGdldHMgMy80IHBsdXMgdGhlIHJlbWFpbmRlci4KKyAgICAg ICAgICAobGV0ICgobGVmdC1lbmQgKCsgKCogcSAzKSByKSkKKyAgICAgICAgICAgICAgICAo cmlnaHQtc3RhcnQgKC0gc3RyaW5nLWxlbiBxKSkpCisgICAgICAgICAgICAoc3RyaW5nLWFw cGVuZCAoc3Vic3RyaW5nIHN0cmluZyAwIGxlZnQtZW5kKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmlsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBz dHJpbmcgcmlnaHQtc3RhcnQgc3RyaW5nLWxlbikpKSkpKSkKKworKGRlZmluZSAocHJpbnQg cnVubmVyIGZvcm1hdC1zdHJpbmcgLiBhcmdzKQorICAoYXBwbHkgZm9ybWF0ICN0IGZvcm1h dC1zdHJpbmcgYXJncykKKyAgKGxldCAoKHBvcnQgKCV0ZXN0LXJ1bm5lci1sb2ctcG9ydCBy dW5uZXIpKSkKKyAgICAod2hlbiBwb3J0CisgICAgICAoYXBwbHkgZm9ybWF0IHBvcnQgZm9y bWF0LXN0cmluZyBhcmdzKSkpKQorCis7OzsgTWFpbgorCisoZGVmaW5lICh0ZXN0LXJ1bm5l ci1zaW1wbGUpCisgIChsZXQgKChydW5uZXIgKHRlc3QtcnVubmVyLW51bGwpKSkKKyAgICAo dGVzdC1ydW5uZXItcmVzZXQgcnVubmVyKQorICAgICh0ZXN0LXJ1bm5lci1vbi1ncm91cC1i ZWdpbiEgICAgIHJ1bm5lciB0ZXN0LW9uLWdyb3VwLWJlZ2luLXNpbXBsZSkKKyAgICAodGVz dC1ydW5uZXItb24tZ3JvdXAtZW5kISAgICAgICBydW5uZXIgdGVzdC1vbi1ncm91cC1lbmQt c2ltcGxlKQorICAgICh0ZXN0LXJ1bm5lci1vbi1maW5hbCEgICAgICAgICAgIHJ1bm5lciB0 ZXN0LW9uLWZpbmFsLXNpbXBsZSkKKyAgICAodGVzdC1ydW5uZXItb24tdGVzdC1iZWdpbiEg ICAgICBydW5uZXIgdGVzdC1vbi10ZXN0LWJlZ2luLXNpbXBsZSkKKyAgICAodGVzdC1ydW5u ZXItb24tdGVzdC1lbmQhICAgICAgICBydW5uZXIgdGVzdC1vbi10ZXN0LWVuZC1zaW1wbGUp CisgICAgKHRlc3QtcnVubmVyLW9uLWJhZC1jb3VudCEgICAgICAgcnVubmVyIHRlc3Qtb24t YmFkLWNvdW50LXNpbXBsZSkKKyAgICAodGVzdC1ydW5uZXItb24tYmFkLWVuZC1uYW1lISAg ICBydW5uZXIgdGVzdC1vbi1iYWQtZW5kLW5hbWUtc2ltcGxlKQorICAgICgldGVzdC1ydW5u ZXItb24tYmFkLWVycm9yLXR5cGUhIHJ1bm5lciBvbi1iYWQtZXJyb3ItdHlwZSkKKyAgICBy dW5uZXIpKQorCisod2hlbiAobm90ICh0ZXN0LXJ1bm5lci1mYWN0b3J5KSkKKyAgKHRlc3Qt cnVubmVyLWZhY3RvcnkgdGVzdC1ydW5uZXItc2ltcGxlKSkKKworKGRlZmluZSAodGVzdC1v bi1ncm91cC1iZWdpbi1zaW1wbGUgcnVubmVyIG5hbWUgY291bnQpCisgICh3aGVuIChudWxs PyAodGVzdC1ydW5uZXItZ3JvdXAtc3RhY2sgcnVubmVyKSkKKyAgICAobWF5YmUtc3RhcnQt bG9nZ2luZyBydW5uZXIpCisgICAgKHByaW50IHJ1bm5lciAiVGVzdCBzdWl0ZSBiZWdpbjog fmF+JSIgbmFtZSkpKQorCisoZGVmaW5lICh0ZXN0LW9uLWdyb3VwLWVuZC1zaW1wbGUgcnVu bmVyKQorICAobGV0ICgobmFtZSAoY2FyICh0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayBydW5u ZXIpKSkpCisgICAgKHdoZW4gKD0gMSAobGVuZ3RoICh0ZXN0LXJ1bm5lci1ncm91cC1zdGFj ayBydW5uZXIpKSkKKyAgICAgIChwcmludCBydW5uZXIgIlRlc3Qgc3VpdGUgZW5kOiB+YX4l IiBuYW1lKSkpKQorCisoZGVmaW5lICh0ZXN0LW9uLWZpbmFsLXNpbXBsZSBydW5uZXIpCisg IChwcmludCBydW5uZXIgIlBhc3NlczogICAgICAgICAgICB+YVxuIiAodGVzdC1ydW5uZXIt cGFzcy1jb3VudCBydW5uZXIpKQorICAocHJpbnQgcnVubmVyICJFeHBlY3RlZCBmYWlsdXJl czogfmFcbiIgKHRlc3QtcnVubmVyLXhmYWlsLWNvdW50IHJ1bm5lcikpCisgIChwcmludCBy dW5uZXIgIkZhaWx1cmVzOiAgICAgICAgICB+YVxuIiAodGVzdC1ydW5uZXItZmFpbC1jb3Vu dCBydW5uZXIpKQorICAocHJpbnQgcnVubmVyICJVbmV4cGVjdGVkIHBhc3NlczogfmFcbiIg KHRlc3QtcnVubmVyLXhwYXNzLWNvdW50IHJ1bm5lcikpCisgIChwcmludCBydW5uZXIgIlNr aXBwZWQgdGVzdHM6ICAgICB+YX4lIiAodGVzdC1ydW5uZXItc2tpcC1jb3VudCBydW5uZXIp KQorICAobWF5YmUtZmluaXNoLWxvZ2dpbmcgcnVubmVyKSkKKworKGRlZmluZSAobWF5YmUt c3RhcnQtbG9nZ2luZyBydW5uZXIpCisgIChsZXQgKChsb2ctZmlsZSAoJXRlc3QtcnVubmVy LWxvZy1maWxlIHJ1bm5lcikpKQorICAgICh3aGVuIGxvZy1maWxlCisgICAgICA7OyBUaGUg cG9zc2libGUgcmFjZS1jb25kaXRpb24gaGVyZSBkb2Vzbid0IGJvdGhlciB1cy4KKyAgICAg ICh3aGVuIChmaWxlLWV4aXN0cz8gbG9nLWZpbGUpCisgICAgICAgIChkZWxldGUtZmlsZSBs b2ctZmlsZSkpCisgICAgICAoJXRlc3QtcnVubmVyLWxvZy1wb3J0ISBydW5uZXIgKG9wZW4t b3V0cHV0LWZpbGUgbG9nLWZpbGUpKQorICAgICAgKHByaW50IHJ1bm5lciAiV3JpdGluZyBs b2cgZmlsZTogfmF+JSIgbG9nLWZpbGUpKSkpCisKKyhkZWZpbmUgKG1heWJlLWZpbmlzaC1s b2dnaW5nIHJ1bm5lcikKKyAgKGxldCAoKGxvZy1maWxlICgldGVzdC1ydW5uZXItbG9nLWZp bGUgcnVubmVyKSkpCisgICAgKHdoZW4gbG9nLWZpbGUKKyAgICAgIChwcmludCBydW5uZXIg Ildyb3RlIGxvZyBmaWxlOiB+YX4lIiBsb2ctZmlsZSkKKyAgICAgIChjbG9zZS1vdXRwdXQt cG9ydCAoJXRlc3QtcnVubmVyLWxvZy1wb3J0IHJ1bm5lcikpKSkpCisKKyhkZWZpbmUgKHRl c3Qtb24tdGVzdC1iZWdpbi1zaW1wbGUgcnVubmVyKQorICAodmFsdWVzKSkKKworKGRlZmlu ZSAodGVzdC1vbi10ZXN0LWVuZC1zaW1wbGUgcnVubmVyKQorICAobGV0KiAoKHJlc3VsdC1r aW5kICh0ZXN0LXJlc3VsdC1raW5kIHJ1bm5lcikpCisgICAgICAgICAocmVzdWx0LWtpbmQt bmFtZSAoY2FzZSByZXN1bHQta2luZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KHBhc3MpICJQQVNTIikgKChmYWlsKSAiRkFJTCIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgoeHBhc3MpICJYUEFTUyIpICgoeGZhaWwpICJYRkFJTCIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoc2tpcCkgIlNLSVAiKSkpCisgICAgICAgICAobmFtZSAo bGV0ICgobmFtZSAodGVzdC1ydW5uZXItdGVzdC1uYW1lIHJ1bm5lcikpKQorICAgICAgICAg ICAgICAgICAoaWYgKHN0cmluZz0/ICIiIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAo dHJ1bmNhdGUtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAjZiAifmEi ICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdzb3VyY2UtZm9ybSkpCisgICAgICAgICAgICAg ICAgICAgICAgMzApCisgICAgICAgICAgICAgICAgICAgICBuYW1lKSkpCisgICAgICAgICAo bGFiZWwgKHN0cmluZy1qb2luIChhcHBlbmQgKHRlc3QtcnVubmVyLWdyb3VwLXBhdGggcnVu bmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IG5hbWUp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiKSkpCisgICAgKHByaW50IHJ1 bm5lciAiW35hXSB+YX4lIiByZXN1bHQta2luZC1uYW1lIGxhYmVsKQorICAgICh3aGVuICht ZW1xIHJlc3VsdC1raW5kICcoZmFpbCB4cGFzcykpCisgICAgICAobGV0ICgobmlsIChjb25z ICNmICNmKSkpCisgICAgICAgIChkZWZpbmUgKGZvdW5kPyB2YWx1ZSkKKyAgICAgICAgICAo bm90IChlcT8gbmlsIHZhbHVlKSkpCisgICAgICAgIChkZWZpbmUgKG1heWJlLXByaW50IHZh bHVlIG1lc3NhZ2UpCisgICAgICAgICAgKHdoZW4gKGZvdW5kPyB2YWx1ZSkKKyAgICAgICAg ICAgIChwcmludCBydW5uZXIgbWVzc2FnZSB2YWx1ZSkpKQorICAgICAgICAobGV0ICgoZmls ZSAodGVzdC1yZXN1bHQtcmVmIHJ1bm5lciAnc291cmNlLWZpbGUgIih1bmtub3duIGZpbGUp IikpCisgICAgICAgICAgICAgIChsaW5lICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdzb3Vy Y2UtbGluZSAiKHVua25vd24gbGluZSkiKSkKKyAgICAgICAgICAgICAgKGV4cHJlc3Npb24g KHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgJ3NvdXJjZS1mb3JtKSkKKyAgICAgICAgICAgICAg KGV4cGVjdGVkLXZhbHVlICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdleHBlY3RlZC12YWx1 ZSBuaWwpKQorICAgICAgICAgICAgICAoYWN0dWFsLXZhbHVlICh0ZXN0LXJlc3VsdC1yZWYg cnVubmVyICdhY3R1YWwtdmFsdWUgbmlsKSkKKyAgICAgICAgICAgICAgKGV4cGVjdGVkLWVy cm9yICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdleHBlY3RlZC1lcnJvciBuaWwpKQorICAg ICAgICAgICAgICAoYWN0dWFsLWVycm9yICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdhY3R1 YWwtZXJyb3IgbmlsKSkpCisgICAgICAgICAgKHByaW50IHJ1bm5lciAifmE6fmE6IH5zfiUi IGZpbGUgbGluZSBleHByZXNzaW9uKQorICAgICAgICAgIChtYXliZS1wcmludCBleHBlY3Rl ZC12YWx1ZSAiRXhwZWN0ZWQgdmFsdWU6IH5zfiUiKQorICAgICAgICAgIChtYXliZS1wcmlu dCBleHBlY3RlZC1lcnJvciAiRXhwZWN0ZWQgZXJyb3I6IH5hfiUiKQorICAgICAgICAgICh3 aGVuIChvciAoZm91bmQ/IGV4cGVjdGVkLXZhbHVlKSAoZm91bmQ/IGV4cGVjdGVkLWVycm9y KSkKKyAgICAgICAgICAgIChtYXliZS1wcmludCBhY3R1YWwtdmFsdWUgIlJldHVybmVkIHZh bHVlOiB+c34lIikpCisgICAgICAgICAgKG1heWJlLXByaW50IGFjdHVhbC1lcnJvciAiUmFp c2VkIGVycm9yOiB+YX4lIikKKyAgICAgICAgICAobmV3bGluZSkpKSkpKQorCisoZGVmaW5l ICh0ZXN0LW9uLWJhZC1jb3VudC1zaW1wbGUgcnVubmVyIGNvdW50IGV4cGVjdGVkLWNvdW50 KQorICAocHJpbnQgcnVubmVyICIqKiogVG90YWwgbnVtYmVyIG9mIHRlc3RzIHdhcyB+YSBi dXQgc2hvdWxkIGJlIH5hLiAqKip+JSIKKyAgICAgICAgICBjb3VudCBleHBlY3RlZC1jb3Vu dCkKKyAgKHByaW50IHJ1bm5lcgorICAgICAgICAgIioqKiBEaXNjcmVwYW5jeSBpbmRpY2F0 ZXMgdGVzdHN1aXRlIGVycm9yIG9yIGV4Y2VwdGlvbnMuICoqKn4lIikpCisKKyhkZWZpbmUg KHRlc3Qtb24tYmFkLWVuZC1uYW1lLXNpbXBsZSBydW5uZXIgYmVnaW4tbmFtZSBlbmQtbmFt ZSkKKyAgKGVycm9yIChmb3JtYXQgI2YgIlRlc3QtZW5kIFwifmFcIiBkb2VzIG5vdCBtYXRj aCB0ZXN0LWJlZ2luIFwifmFcIi4iCisgICAgICAgICAgICAgICAgIGVuZC1uYW1lIGJlZ2lu LW5hbWUpKSkKKworKGRlZmluZSAob24tYmFkLWVycm9yLXR5cGUgcnVubmVyIHR5cGUgZXJy b3IpCisgIChwcmludCBydW5uZXIgIldBUk5JTkc6IHVua25vd24gZXJyb3IgdHlwZSBwcmVk aWNhdGU6IH5hfiUiIHR5cGUpCisgIChwcmludCBydW5uZXIgIiAgICAgICAgIGVycm9yIHdh czogfmF+JSIgZXJyb3IpKQorCis7OzsgdGVzdC1ydW5uZXItc2ltcGxlLnNjbSBlbmRzIGhl cmUKZGlmZiAtLWdpdCBhL21vZHVsZS9zcmZpL3NyZmktNjQvdGVzdC1ydW5uZXIuYm9keS5z Y20gYi9tb2R1bGUvc3JmaS9zcmZpLTY0L3Rlc3QtcnVubmVyLmJvZHkuc2NtCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjgxMzFlYmNmCi0tLSAvZGV2L251bGwK KysrIGIvbW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0LXJ1bm5lci5ib2R5LnNjbQpAQCAtMCww ICsxLDE2NSBAQAorOzsgQ29weXJpZ2h0IChjKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDEyLCAy MDEzIFBlciBCb3RobmVyCis7OyBBZGRlZCAiZnVsbCIgc3VwcG9ydCBmb3IgQ2hpY2tlbiwg R2F1Y2hlLCBHdWlsZSBhbmQgU0lTQy4KKzs7ICAgQWxleCBTaGlubiwgQ29weXJpZ2h0IChj KSAyMDA1LgorOzsgTW9kaWZpZWQgZm9yIFNjaGVtZSBTcGhlcmVzIGJ5IMOBbHZhcm8gQ2Fz dHJvLUNhc3RpbGxhLCBDb3B5cmlnaHQgKGMpIDIwMTIuCis7OyBTdXBwb3J0IGZvciBHdWls ZSAyIGJ5IE1hcmsgSCBXZWF2ZXIgPG1od0BuZXRyaXMub3JnPiwgQ29weXJpZ2h0IChjKSAy MDE0LgorOzsgUmVmYWN0b3JlZCBieSBUYXlsYW4gVWxyaWNoIEJhecSxcmzEsS9LYW1tZXIs IENvcHlyaWdodCAoYykgMjAxNCwgMjAxNS4KKzs7Cis7OyBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgorOzsgb2J0YWluaW5n IGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24K Kzs7IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQKKzs7IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LAorOzsgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCis7OyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor OzsgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKzs7Cis7OyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSBzaGFsbCBiZQorOzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCis7OworOzsgVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs Cis7OyBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YKKzs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5ECis7OyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCis7OyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4KKzs7IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcg RlJPTSwgT1VUIE9GIE9SIElOCis7OyBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCis7OyBTT0ZUV0FSRS4KKworDAor Ozs7IFRoZSBkYXRhIHR5cGUKKworKGRlZmluZS1yZWNvcmQtdHlwZSA8dGVzdC1ydW5uZXI+ CisgIChtYWtlLXRlc3QtcnVubmVyKSB0ZXN0LXJ1bm5lcj8KKworICAocmVzdWx0LWFsaXN0 IHRlc3QtcmVzdWx0LWFsaXN0IHRlc3QtcmVzdWx0LWFsaXN0ISkKKworICAocGFzcy1jb3Vu dCB0ZXN0LXJ1bm5lci1wYXNzLWNvdW50IHRlc3QtcnVubmVyLXBhc3MtY291bnQhKQorICAo ZmFpbC1jb3VudCB0ZXN0LXJ1bm5lci1mYWlsLWNvdW50IHRlc3QtcnVubmVyLWZhaWwtY291 bnQhKQorICAoeHBhc3MtY291bnQgdGVzdC1ydW5uZXIteHBhc3MtY291bnQgdGVzdC1ydW5u ZXIteHBhc3MtY291bnQhKQorICAoeGZhaWwtY291bnQgdGVzdC1ydW5uZXIteGZhaWwtY291 bnQgdGVzdC1ydW5uZXIteGZhaWwtY291bnQhKQorICAoc2tpcC1jb3VudCB0ZXN0LXJ1bm5l ci1za2lwLWNvdW50IHRlc3QtcnVubmVyLXNraXAtY291bnQhKQorICAodG90YWwtY291bnQg JXRlc3QtcnVubmVyLXRvdGFsLWNvdW50ICV0ZXN0LXJ1bm5lci10b3RhbC1jb3VudCEpCisK KyAgOzsgU3RhY2sgKGxpc3QpIG9mIChjb3VudC1hdC1zdGFydCAuIGV4cGVjdGVkLWNvdW50 KToKKyAgKGNvdW50LWxpc3QgJXRlc3QtcnVubmVyLWNvdW50LWxpc3QgJXRlc3QtcnVubmVy LWNvdW50LWxpc3QhKQorCisgIDs7IE5vcm1hbGx5ICNmLCBleGNlcHQgd2hlbiBpbiBhIHRl c3QtYXBwbHkuCisgIChydW4tbGlzdCAldGVzdC1ydW5uZXItcnVuLWxpc3QgJXRlc3QtcnVu bmVyLXJ1bi1saXN0ISkKKworICAoc2tpcC1saXN0ICV0ZXN0LXJ1bm5lci1za2lwLWxpc3Qg JXRlc3QtcnVubmVyLXNraXAtbGlzdCEpCisgIChmYWlsLWxpc3QgJXRlc3QtcnVubmVyLWZh aWwtbGlzdCAldGVzdC1ydW5uZXItZmFpbC1saXN0ISkKKworICAoc2tpcC1zYXZlICV0ZXN0 LXJ1bm5lci1za2lwLXNhdmUgJXRlc3QtcnVubmVyLXNraXAtc2F2ZSEpCisgIChmYWlsLXNh dmUgJXRlc3QtcnVubmVyLWZhaWwtc2F2ZSAldGVzdC1ydW5uZXItZmFpbC1zYXZlISkKKwor ICAoZ3JvdXAtc3RhY2sgdGVzdC1ydW5uZXItZ3JvdXAtc3RhY2sgdGVzdC1ydW5uZXItZ3Jv dXAtc3RhY2shKQorCisgIDs7IE5vdGU6IG9uLXRlc3QtYmVnaW4gYW5kIG9uLXRlc3QtZW5k IGFyZSB1bnJlbGF0ZWQgdG8gdGhlIHRlc3QtYmVnaW4gYW5kCisgIDs7IHRlc3QtZW5kIGZv cm1zIGluIHRoZSBleGVjdXRpb24gbGlicmFyeS4gIFRoZXkncmUgY2FsbGVkIGF0IHRoZQor ICA7OyBiZWdpbm5pbmcvZW5kIG9mIGVhY2ggaW5kaXZpZHVhbCB0ZXN0LCB3aGVyZWFzIHRo ZSB0ZXN0LWJlZ2luIGFuZCB0ZXN0LWVuZAorICA7OyBmb3JtcyBkZW1hcmNhdGUgdGVzdCBn cm91cHMuCisKKyAgKG9uLWdyb3VwLWJlZ2luIHRlc3QtcnVubmVyLW9uLWdyb3VwLWJlZ2lu IHRlc3QtcnVubmVyLW9uLWdyb3VwLWJlZ2luISkKKyAgKG9uLXRlc3QtYmVnaW4gdGVzdC1y dW5uZXItb24tdGVzdC1iZWdpbiB0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISkKKyAgKG9u LXRlc3QtZW5kIHRlc3QtcnVubmVyLW9uLXRlc3QtZW5kIHRlc3QtcnVubmVyLW9uLXRlc3Qt ZW5kISkKKyAgKG9uLWdyb3VwLWVuZCB0ZXN0LXJ1bm5lci1vbi1ncm91cC1lbmQgdGVzdC1y dW5uZXItb24tZ3JvdXAtZW5kISkKKyAgKG9uLWZpbmFsIHRlc3QtcnVubmVyLW9uLWZpbmFs IHRlc3QtcnVubmVyLW9uLWZpbmFsISkKKyAgKG9uLWJhZC1jb3VudCB0ZXN0LXJ1bm5lci1v bi1iYWQtY291bnQgdGVzdC1ydW5uZXItb24tYmFkLWNvdW50ISkKKyAgKG9uLWJhZC1lbmQt bmFtZSB0ZXN0LXJ1bm5lci1vbi1iYWQtZW5kLW5hbWUgdGVzdC1ydW5uZXItb24tYmFkLWVu ZC1uYW1lISkKKworICAob24tYmFkLWVycm9yLXR5cGUgJXRlc3QtcnVubmVyLW9uLWJhZC1l cnJvci10eXBlCisgICAgICAgICAgICAgICAgICAgICAldGVzdC1ydW5uZXItb24tYmFkLWVy cm9yLXR5cGUhKQorCisgIChhdXgtdmFsdWUgdGVzdC1ydW5uZXItYXV4LXZhbHVlIHRlc3Qt cnVubmVyLWF1eC12YWx1ZSEpCisKKyAgKGxvZy1maWxlICV0ZXN0LXJ1bm5lci1sb2ctZmls ZSAldGVzdC1ydW5uZXItbG9nLWZpbGUhKQorICAobG9nLXBvcnQgJXRlc3QtcnVubmVyLWxv Zy1wb3J0ICV0ZXN0LXJ1bm5lci1sb2ctcG9ydCEpKQorCisoZGVmaW5lICh0ZXN0LXJ1bm5l ci1ncm91cC1wYXRoIHJ1bm5lcikKKyAgKHJldmVyc2UgKHRlc3QtcnVubmVyLWdyb3VwLXN0 YWNrIHJ1bm5lcikpKQorCisoZGVmaW5lICh0ZXN0LXJ1bm5lci1yZXNldCBydW5uZXIpCisg ICh0ZXN0LXJlc3VsdC1hbGlzdCEgcnVubmVyICcoKSkKKyAgKHRlc3QtcnVubmVyLXBhc3Mt Y291bnQhIHJ1bm5lciAwKQorICAodGVzdC1ydW5uZXItZmFpbC1jb3VudCEgcnVubmVyIDAp CisgICh0ZXN0LXJ1bm5lci14cGFzcy1jb3VudCEgcnVubmVyIDApCisgICh0ZXN0LXJ1bm5l ci14ZmFpbC1jb3VudCEgcnVubmVyIDApCisgICh0ZXN0LXJ1bm5lci1za2lwLWNvdW50ISBy dW5uZXIgMCkKKyAgKCV0ZXN0LXJ1bm5lci10b3RhbC1jb3VudCEgcnVubmVyIDApCisgICgl dGVzdC1ydW5uZXItY291bnQtbGlzdCEgcnVubmVyICcoKSkKKyAgKCV0ZXN0LXJ1bm5lci1y dW4tbGlzdCEgcnVubmVyICNmKQorICAoJXRlc3QtcnVubmVyLXNraXAtbGlzdCEgcnVubmVy ICcoKSkKKyAgKCV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QhIHJ1bm5lciAnKCkpCisgICgldGVz dC1ydW5uZXItc2tpcC1zYXZlISBydW5uZXIgJygpKQorICAoJXRlc3QtcnVubmVyLWZhaWwt c2F2ZSEgcnVubmVyICcoKSkKKyAgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrISBydW5uZXIg JygpKSkKKworKGRlZmluZSAodGVzdC1ydW5uZXItbnVsbCkKKyAgKGRlZmluZSAodGVzdC1u dWxsLWNhbGxiYWNrIC4gYXJncykgI2YpCisgIChsZXQgKChydW5uZXIgKG1ha2UtdGVzdC1y dW5uZXIpKSkKKyAgICAodGVzdC1ydW5uZXItcmVzZXQgcnVubmVyKQorICAgICh0ZXN0LXJ1 bm5lci1vbi1ncm91cC1iZWdpbiEgcnVubmVyIHRlc3QtbnVsbC1jYWxsYmFjaykKKyAgICAo dGVzdC1ydW5uZXItb24tZ3JvdXAtZW5kISBydW5uZXIgdGVzdC1udWxsLWNhbGxiYWNrKQor ICAgICh0ZXN0LXJ1bm5lci1vbi1maW5hbCEgcnVubmVyIHRlc3QtbnVsbC1jYWxsYmFjaykK KyAgICAodGVzdC1ydW5uZXItb24tdGVzdC1iZWdpbiEgcnVubmVyIHRlc3QtbnVsbC1jYWxs YmFjaykKKyAgICAodGVzdC1ydW5uZXItb24tdGVzdC1lbmQhIHJ1bm5lciB0ZXN0LW51bGwt Y2FsbGJhY2spCisgICAgKHRlc3QtcnVubmVyLW9uLWJhZC1jb3VudCEgcnVubmVyIHRlc3Qt bnVsbC1jYWxsYmFjaykKKyAgICAodGVzdC1ydW5uZXItb24tYmFkLWVuZC1uYW1lISBydW5u ZXIgdGVzdC1udWxsLWNhbGxiYWNrKQorICAgICgldGVzdC1ydW5uZXItb24tYmFkLWVycm9y LXR5cGUhIHJ1bm5lciB0ZXN0LW51bGwtY2FsbGJhY2spCisgICAgKCV0ZXN0LXJ1bm5lci1s b2ctZmlsZSEgcnVubmVyICNmKQorICAgICgldGVzdC1ydW5uZXItbG9nLXBvcnQhIHJ1bm5l ciAjZikKKyAgICBydW5uZXIpKQorCisMCis7OzsgU3RhdGUKKworKGRlZmluZSB0ZXN0LXJl c3VsdC1yZWYKKyAgKGNhc2UtbGFtYmRhCisgICAgKChydW5uZXIga2V5KQorICAgICAodGVz dC1yZXN1bHQtcmVmIHJ1bm5lciBrZXkgI2YpKQorICAgICgocnVubmVyIGtleSBkZWZhdWx0 KQorICAgICAobGV0ICgoZW50cnkgKGFzc3Ega2V5ICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5u ZXIpKSkpCisgICAgICAgKGlmIGVudHJ5IChjZHIgZW50cnkpIGRlZmF1bHQpKSkpKQorCiso ZGVmaW5lICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciBrZXkgdmFsdWUpCisgIChsZXQqICgo YWxpc3QgKHRlc3QtcmVzdWx0LWFsaXN0IHJ1bm5lcikpCisgICAgICAgICAoZW50cnkgKGFz c3Ega2V5IGFsaXN0KSkpCisgICAgKGlmIGVudHJ5CisgICAgICAgIChzZXQtY2RyISBlbnRy eSB2YWx1ZSkKKyAgICAgICAgKHRlc3QtcmVzdWx0LWFsaXN0ISBydW5uZXIgKGNvbnMgKGNv bnMga2V5IHZhbHVlKSBhbGlzdCkpKSkpCisKKyhkZWZpbmUgKHRlc3QtcmVzdWx0LXJlbW92 ZSBydW5uZXIga2V5KQorICAodGVzdC1yZXN1bHQtYWxpc3QhIHJ1bm5lciAocmVtb3ZlIChs YW1iZGEgKGVudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGVxPyBrZXkgKGNhciBlbnRyeSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5uZXIpKSkpCisKKyhkZWZpbmUgKHRlc3Qt cmVzdWx0LWNsZWFyIHJ1bm5lcikKKyAgKHRlc3QtcmVzdWx0LWFsaXN0ISBydW5uZXIgJygp KSkKKworKGRlZmluZSAodGVzdC1ydW5uZXItdGVzdC1uYW1lIHJ1bm5lcikKKyAgKG9yICh0 ZXN0LXJlc3VsdC1yZWYgcnVubmVyICduYW1lKSAiIikpCisKKyhkZWZpbmUgdGVzdC1yZXN1 bHQta2luZAorICAoY2FzZS1sYW1iZGEKKyAgICAoKCkgKHRlc3QtcmVzdWx0LWtpbmQgKHRl c3QtcnVubmVyLWdldCkpKQorICAgICgocnVubmVyKSAodGVzdC1yZXN1bHQtcmVmIHJ1bm5l ciAncmVzdWx0LWtpbmQpKSkpCisKKyhkZWZpbmUgdGVzdC1wYXNzZWQ/CisgIChjYXNlLWxh bWJkYQorICAgICgoKSAodGVzdC1wYXNzZWQ/ICh0ZXN0LXJ1bm5lci1nZXQpKSkKKyAgICAo KHJ1bm5lcikgKG1lbXEgKHRlc3QtcmVzdWx0LWtpbmQgcnVubmVyKSAnKHBhc3MgeHBhc3Mp KSkpKQorCisMCis7OzsgRmFjdG9yeSBhbmQgY3VycmVudCBpbnN0YW5jZQorCisoZGVmaW5l IHRlc3QtcnVubmVyLWZhY3RvcnkgKG1ha2UtcGFyYW1ldGVyICNmKSkKKworKGRlZmluZSAo dGVzdC1ydW5uZXItY3JlYXRlKSAoKHRlc3QtcnVubmVyLWZhY3RvcnkpKSkKKworKGRlZmlu ZSB0ZXN0LXJ1bm5lci1jdXJyZW50IChtYWtlLXBhcmFtZXRlciAjZikpCisKKyhkZWZpbmUg KHRlc3QtcnVubmVyLWdldCkKKyAgKG9yICh0ZXN0LXJ1bm5lci1jdXJyZW50KQorICAgICAg KGVycm9yICJ0ZXN0LXJ1bm5lciBub3QgaW5pdGlhbGl6ZWQgLSB0ZXN0LWJlZ2luIG1pc3Np bmc/IikpKQorCis7OzsgdGVzdC1ydW5uZXIuc2NtIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEv bW9kdWxlL3NyZmkvc3JmaS02NC90ZXN0aW5nLnNjbSBiL21vZHVsZS9zcmZpL3NyZmktNjQv dGVzdGluZy5zY20KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYWFiMTQwZi4u MDAwMDAwMDAwCi0tLSBhL21vZHVsZS9zcmZpL3NyZmktNjQvdGVzdGluZy5zY20KKysrIC9k ZXYvbnVsbApAQCAtMSwxMDQ0ICswLDAgQEAKLTs7IENvcHlyaWdodCAoYykgMjAwNSwgMjAw NiwgMjAwNywgMjAxMiwgMjAxMyBQZXIgQm90aG5lcgotOzsgQWRkZWQgImZ1bGwiIHN1cHBv cnQgZm9yIENoaWNrZW4sIEdhdWNoZSwgR3VpbGUgYW5kIFNJU0MuCi07OyAgIEFsZXggU2hp bm4sIENvcHlyaWdodCAoYykgMjAwNS4KLTs7IE1vZGlmaWVkIGZvciBTY2hlbWUgU3BoZXJl cyBieSDDgWx2YXJvIENhc3Ryby1DYXN0aWxsYSwgQ29weXJpZ2h0IChjKSAyMDEyLgotOzsg U3VwcG9ydCBmb3IgR3VpbGUgMiBieSBNYXJrIEggV2VhdmVyIDxtaHdAbmV0cmlzLm9yZz4s IENvcHlyaWdodCAoYykgMjAxNC4KLTs7Ci07OyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgotOzsgb2J0YWluaW5nIGEgY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KLTs7IGZp bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQK LTs7IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LAotOzsgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCi07OyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotOzsgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK LTs7Ci07OyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZQotOzsgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi07OwotOzsgVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi07OyBF WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YKLTs7IE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5ECi07OyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCi07OyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLTs7 IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwg T1VUIE9GIE9SIElOCi07OyBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi07OyBTT0ZUV0FSRS4KLQotKGNvbmQtZXhw YW5kCi0gKGNoaWNrZW4KLSAgKHJlcXVpcmUtZXh0ZW5zaW9uIHN5bnRheC1jYXNlKSkKLSAo Z3VpbGUtMgotICAodXNlLW1vZHVsZXMgKHNyZmkgc3JmaS05KQotICAgICAgICAgICAgICAg OzsgSW4gMi4wLjksIHNyZmktMzQgYW5kIHNyZmktMzUgYXJlIG5vdCB3ZWxsIGludGVncmF0 ZWQKLSAgICAgICAgICAgICAgIDs7IHdpdGggZWl0aGVyIEd1aWxlJ3MgbmF0aXZlIGV4Y2Vw dGlvbnMgb3IgUjZSUyBleGNlcHRpb25zLgotICAgICAgICAgICAgICAgOzsoc3JmaSBzcmZp LTM0KSAoc3JmaSBzcmZpLTM1KQotICAgICAgICAgICAgICAgKHNyZmkgc3JmaS0zOSkpKQot IChndWlsZQotICAodXNlLW1vZHVsZXMgKGljZS05IHN5bmNhc2UpIChzcmZpIHNyZmktOSkK LQkgICAgICAgOzsoc3JmaSBzcmZpLTM0KSAoc3JmaSBzcmZpLTM1KSAtIG5vdCBpbiBHdWls ZSAxLjYuNwotCSAgICAgICAoc3JmaSBzcmZpLTM5KSkpCi0gKHNpc2MKLSAgKHJlcXVpcmUt ZXh0ZW5zaW9uIChzcmZpIDkgMzQgMzUgMzkpKSkKLSAoa2F3YQotICAobW9kdWxlLWNvbXBp bGUtb3B0aW9ucyB3YXJuLXVuZGVmaW5lZC12YXJpYWJsZTogI3QKLQkJCSAgd2Fybi1pbnZv a2UtdW5rbm93bi1tZXRob2Q6ICN0KQotICAocHJvdmlkZSAnc3JmaS02NCkKLSAgKHByb3Zp ZGUgJ3Rlc3RpbmcpCi0gIChyZXF1aXJlICdzcmZpLTM0KQotICAocmVxdWlyZSAnc3JmaS0z NSkpCi0gKGVsc2UgKCkKLSAgKSkKLQotKGNvbmQtZXhwYW5kCi0gKGthd2EKLSAgKGRlZmlu ZS1zeW50YXggJXRlc3QtZXhwb3J0Ci0gICAgKHN5bnRheC1ydWxlcyAoKQotICAgICAgKCgl dGVzdC1leHBvcnQgdGVzdC1iZWdpbiAuIG90aGVyLW5hbWVzKQotICAgICAgIChtb2R1bGUt ZXhwb3J0ICV0ZXN0LWJlZ2luIC4gb3RoZXItbmFtZXMpKSkpKQotIChlbHNlCi0gIChkZWZp bmUtc3ludGF4ICV0ZXN0LWV4cG9ydAotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgo JXRlc3QtZXhwb3J0IC4gbmFtZXMpIChpZiAjZiAjZikpKSkpKQotCi07OyBMaXN0IG9mIGV4 cG9ydGVkIG5hbWVzCi0oJXRlc3QtZXhwb3J0Ci0gdGVzdC1iZWdpbiA7OyBtdXN0IGJlIGxp c3RlZCBmaXJzdCwgc2luY2UgaW4gS2F3YSAoYXQgbGVhc3QpIGl0IGlzICJtYWdpYyIuCi0g dGVzdC1lbmQgdGVzdC1hc3NlcnQgdGVzdC1lcXYgdGVzdC1lcSB0ZXN0LWVxdWFsCi0gdGVz dC1hcHByb3hpbWF0ZSB0ZXN0LWFzc2VydCB0ZXN0LWVycm9yIHRlc3QtYXBwbHkgdGVzdC13 aXRoLXJ1bm5lcgotIHRlc3QtbWF0Y2gtbnRoIHRlc3QtbWF0Y2gtYWxsIHRlc3QtbWF0Y2gt YW55IHRlc3QtbWF0Y2gtbmFtZQotIHRlc3Qtc2tpcCB0ZXN0LWV4cGVjdC1mYWlsIHRlc3Qt cmVhZC1ldmFsLXN0cmluZwotIHRlc3QtcnVubmVyLWdyb3VwLXBhdGggdGVzdC1ncm91cCB0 ZXN0LWdyb3VwLXdpdGgtY2xlYW51cAotIHRlc3QtcmVzdWx0LXJlZiB0ZXN0LXJlc3VsdC1z ZXQhIHRlc3QtcmVzdWx0LWNsZWFyIHRlc3QtcmVzdWx0LXJlbW92ZQotIHRlc3QtcmVzdWx0 LWtpbmQgdGVzdC1wYXNzZWQ/Ci0gdGVzdC1sb2ctdG8tZmlsZQotIDsgTWlzYyB0ZXN0LXJ1 bm5lciBmdW5jdGlvbnMKLSB0ZXN0LXJ1bm5lcj8gdGVzdC1ydW5uZXItcmVzZXQgdGVzdC1y dW5uZXItbnVsbAotIHRlc3QtcnVubmVyLXNpbXBsZSB0ZXN0LXJ1bm5lci1jdXJyZW50IHRl c3QtcnVubmVyLWZhY3RvcnkgdGVzdC1ydW5uZXItZ2V0Ci0gdGVzdC1ydW5uZXItY3JlYXRl IHRlc3QtcnVubmVyLXRlc3QtbmFtZQotIDs7IHRlc3QtcnVubmVyIGZpZWxkIHNldHRlciBh bmQgZ2V0dGVyIGZ1bmN0aW9ucyAtIHNlZSAldGVzdC1yZWNvcmQtZGVmaW5lOgotIHRlc3Qt cnVubmVyLXBhc3MtY291bnQgdGVzdC1ydW5uZXItcGFzcy1jb3VudCEKLSB0ZXN0LXJ1bm5l ci1mYWlsLWNvdW50IHRlc3QtcnVubmVyLWZhaWwtY291bnQhCi0gdGVzdC1ydW5uZXIteHBh c3MtY291bnQgdGVzdC1ydW5uZXIteHBhc3MtY291bnQhCi0gdGVzdC1ydW5uZXIteGZhaWwt Y291bnQgdGVzdC1ydW5uZXIteGZhaWwtY291bnQhCi0gdGVzdC1ydW5uZXItc2tpcC1jb3Vu dCB0ZXN0LXJ1bm5lci1za2lwLWNvdW50IQotIHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHRl c3QtcnVubmVyLWdyb3VwLXN0YWNrIQotIHRlc3QtcnVubmVyLW9uLXRlc3QtYmVnaW4gdGVz dC1ydW5uZXItb24tdGVzdC1iZWdpbiEKLSB0ZXN0LXJ1bm5lci1vbi10ZXN0LWVuZCB0ZXN0 LXJ1bm5lci1vbi10ZXN0LWVuZCEKLSB0ZXN0LXJ1bm5lci1vbi1ncm91cC1iZWdpbiB0ZXN0 LXJ1bm5lci1vbi1ncm91cC1iZWdpbiEKLSB0ZXN0LXJ1bm5lci1vbi1ncm91cC1lbmQgdGVz dC1ydW5uZXItb24tZ3JvdXAtZW5kIQotIHRlc3QtcnVubmVyLW9uLWZpbmFsIHRlc3QtcnVu bmVyLW9uLWZpbmFsIQotIHRlc3QtcnVubmVyLW9uLWJhZC1jb3VudCB0ZXN0LXJ1bm5lci1v bi1iYWQtY291bnQhCi0gdGVzdC1ydW5uZXItb24tYmFkLWVuZC1uYW1lIHRlc3QtcnVubmVy LW9uLWJhZC1lbmQtbmFtZSEKLSB0ZXN0LXJlc3VsdC1hbGlzdCB0ZXN0LXJlc3VsdC1hbGlz dCEKLSB0ZXN0LXJ1bm5lci1hdXgtdmFsdWUgdGVzdC1ydW5uZXItYXV4LXZhbHVlIQotIDs7 IGRlZmF1bHQvc2ltcGxlIGNhbGwtYmFjayBmdW5jdGlvbnMsIHVzZWQgaW4gZGVmYXVsdCB0 ZXN0LXJ1bm5lciwKLSA7OyBidXQgY2FuIGJlIGNhbGxlZCB0byBjb25zdHJ1Y3QgbW9yZSBj b21wbGV4IG9uZXMuCi0gdGVzdC1vbi1ncm91cC1iZWdpbi1zaW1wbGUgdGVzdC1vbi1ncm91 cC1lbmQtc2ltcGxlCi0gdGVzdC1vbi1iYWQtY291bnQtc2ltcGxlIHRlc3Qtb24tYmFkLWVu ZC1uYW1lLXNpbXBsZQotIHRlc3Qtb24tZmluYWwtc2ltcGxlIHRlc3Qtb24tdGVzdC1lbmQt c2ltcGxlCi0gdGVzdC1vbi1maW5hbC1zaW1wbGUpCi0KLShjb25kLWV4cGFuZAotIChzcmZp LTkKLSAgKGRlZmluZS1zeW50YXggJXRlc3QtcmVjb3JkLWRlZmluZQotICAgIChzeW50YXgt cnVsZXMgKCkKLSAgICAgICgoJXRlc3QtcmVjb3JkLWRlZmluZSBhbGxvYyBydW5uZXI/IChu YW1lIGluZGV4IHNldHRlciBnZXR0ZXIpIC4uLikKLSAgICAgICAoZGVmaW5lLXJlY29yZC10 eXBlIHRlc3QtcnVubmVyCi0JIChhbGxvYykKLQkgcnVubmVyPwotCSAobmFtZSBzZXR0ZXIg Z2V0dGVyKSAuLi4pKSkpKQotIChlbHNlCi0gIChkZWZpbmUgJXRlc3QtcnVubmVyLWNvb2tp ZSAobGlzdCAidGVzdC1ydW5uZXIiKSkKLSAgKGRlZmluZS1zeW50YXggJXRlc3QtcmVjb3Jk LWRlZmluZQotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgoJXRlc3QtcmVjb3JkLWRl ZmluZSBhbGxvYyBydW5uZXI/IChuYW1lIGluZGV4IGdldHRlciBzZXR0ZXIpIC4uLikKLSAg ICAgICAoYmVnaW4KLQkgKGRlZmluZSAocnVubmVyPyBvYmopCi0JICAgKGFuZCAodmVjdG9y PyBvYmopCi0JCSg+ICh2ZWN0b3ItbGVuZ3RoIG9iaikgMSkKLQkJKGVxICh2ZWN0b3ItcmVm IG9iaiAwKSAldGVzdC1ydW5uZXItY29va2llKSkpCi0JIChkZWZpbmUgKGFsbG9jKQotCSAg IChsZXQgKChydW5uZXIgKG1ha2UtdmVjdG9yIDIzKSkpCi0JICAgICAodmVjdG9yLXNldCEg cnVubmVyIDAgJXRlc3QtcnVubmVyLWNvb2tpZSkKLQkgICAgIHJ1bm5lcikpCi0JIChiZWdp bgotCSAgIChkZWZpbmUgKGdldHRlciBydW5uZXIpCi0JICAgICAodmVjdG9yLXJlZiBydW5u ZXIgaW5kZXgpKSAuLi4pCi0JIChiZWdpbgotCSAgIChkZWZpbmUgKHNldHRlciBydW5uZXIg dmFsdWUpCi0JICAgICAodmVjdG9yLXNldCEgcnVubmVyIGluZGV4IHZhbHVlKSkgLi4uKSkp KSkpKQotCi0oJXRlc3QtcmVjb3JkLWRlZmluZQotICV0ZXN0LXJ1bm5lci1hbGxvYyB0ZXN0 LXJ1bm5lcj8KLSA7OyBDdW11bGF0ZSBjb3VudCBvZiBhbGwgdGVzdHMgdGhhdCBoYXZlIHBh c3NlZCBhbmQgd2VyZSBleHBlY3RlZCB0by4KLSAocGFzcy1jb3VudCAxIHRlc3QtcnVubmVy LXBhc3MtY291bnQgdGVzdC1ydW5uZXItcGFzcy1jb3VudCEpCi0gKGZhaWwtY291bnQgMiB0 ZXN0LXJ1bm5lci1mYWlsLWNvdW50IHRlc3QtcnVubmVyLWZhaWwtY291bnQhKQotICh4cGFz cy1jb3VudCAzIHRlc3QtcnVubmVyLXhwYXNzLWNvdW50IHRlc3QtcnVubmVyLXhwYXNzLWNv dW50ISkKLSAoeGZhaWwtY291bnQgNCB0ZXN0LXJ1bm5lci14ZmFpbC1jb3VudCB0ZXN0LXJ1 bm5lci14ZmFpbC1jb3VudCEpCi0gKHNraXAtY291bnQgNSB0ZXN0LXJ1bm5lci1za2lwLWNv dW50IHRlc3QtcnVubmVyLXNraXAtY291bnQhKQotIChza2lwLWxpc3QgNiAldGVzdC1ydW5u ZXItc2tpcC1saXN0ICV0ZXN0LXJ1bm5lci1za2lwLWxpc3QhKQotIChmYWlsLWxpc3QgNyAl dGVzdC1ydW5uZXItZmFpbC1saXN0ICV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QhKQotIDs7IE5v cm1hbGx5ICN0LCBleGNlcHQgd2hlbiBpbiBhIHRlc3QtYXBwbHkuCi0gKHJ1bi1saXN0IDgg JXRlc3QtcnVubmVyLXJ1bi1saXN0ICV0ZXN0LXJ1bm5lci1ydW4tbGlzdCEpCi0gKHNraXAt c2F2ZSA5ICV0ZXN0LXJ1bm5lci1za2lwLXNhdmUgJXRlc3QtcnVubmVyLXNraXAtc2F2ZSEp Ci0gKGZhaWwtc2F2ZSAxMCAldGVzdC1ydW5uZXItZmFpbC1zYXZlICV0ZXN0LXJ1bm5lci1m YWlsLXNhdmUhKQotIChncm91cC1zdGFjayAxMSB0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayB0 ZXN0LXJ1bm5lci1ncm91cC1zdGFjayEpCi0gKG9uLXRlc3QtYmVnaW4gMTIgdGVzdC1ydW5u ZXItb24tdGVzdC1iZWdpbiB0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISkKLSAob24tdGVz dC1lbmQgMTMgdGVzdC1ydW5uZXItb24tdGVzdC1lbmQgdGVzdC1ydW5uZXItb24tdGVzdC1l bmQhKQotIDs7IENhbGwtYmFjayB3aGVuIGVudGVyaW5nIGEgZ3JvdXAuIFRha2VzIChydW5u ZXIgc3VpdGUtbmFtZSBjb3VudCkuCi0gKG9uLWdyb3VwLWJlZ2luIDE0IHRlc3QtcnVubmVy LW9uLWdyb3VwLWJlZ2luIHRlc3QtcnVubmVyLW9uLWdyb3VwLWJlZ2luISkKLSA7OyBDYWxs LWJhY2sgd2hlbiBsZWF2aW5nIGEgZ3JvdXAuCi0gKG9uLWdyb3VwLWVuZCAxNSB0ZXN0LXJ1 bm5lci1vbi1ncm91cC1lbmQgdGVzdC1ydW5uZXItb24tZ3JvdXAtZW5kISkKLSA7OyBDYWxs LWJhY2sgd2hlbiBsZWF2aW5nIHRoZSBvdXRlcm1vc3QgZ3JvdXAuCi0gKG9uLWZpbmFsIDE2 IHRlc3QtcnVubmVyLW9uLWZpbmFsIHRlc3QtcnVubmVyLW9uLWZpbmFsISkKLSA7OyBDYWxs LWJhY2sgd2hlbiBleHBlY3RlZCBudW1iZXIgb2YgdGVzdHMgd2FzIHdyb25nLgotIChvbi1i YWQtY291bnQgMTcgdGVzdC1ydW5uZXItb24tYmFkLWNvdW50IHRlc3QtcnVubmVyLW9uLWJh ZC1jb3VudCEpCi0gOzsgQ2FsbC1iYWNrIHdoZW4gbmFtZSBpbiB0ZXN0PWVuZCBkb2Vzbid0 IG1hdGNoIHRlc3QtYmVnaW4uCi0gKG9uLWJhZC1lbmQtbmFtZSAxOCB0ZXN0LXJ1bm5lci1v bi1iYWQtZW5kLW5hbWUgdGVzdC1ydW5uZXItb24tYmFkLWVuZC1uYW1lISkKLSA7OyBDdW11 bGF0ZSBjb3VudCBvZiBhbGwgdGVzdHMgdGhhdCBoYXZlIGJlZW4gZG9uZS4KLSAodG90YWwt Y291bnQgMTkgJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50ICV0ZXN0LXJ1bm5lci10b3RhbC1j b3VudCEpCi0gOzsgU3RhY2sgKGxpc3QpIG9mIChjb3VudC1hdC1zdGFydCAuIGV4cGVjdGVk LWNvdW50KToKLSAoY291bnQtbGlzdCAyMCAldGVzdC1ydW5uZXItY291bnQtbGlzdCAldGVz dC1ydW5uZXItY291bnQtbGlzdCEpCi0gKHJlc3VsdC1hbGlzdCAyMSB0ZXN0LXJlc3VsdC1h bGlzdCB0ZXN0LXJlc3VsdC1hbGlzdCEpCi0gOzsgRmllbGQgY2FuIGJlIHVzZWQgYnkgdGVz dC1ydW5uZXIgZm9yIGFueSBwdXJwb3NlLgotIDs7IHRlc3QtcnVubmVyLXNpbXBsZSB1c2Vz IGl0IGZvciBhIGxvZyBmaWxlLgotIChhdXgtdmFsdWUgMjIgdGVzdC1ydW5uZXItYXV4LXZh bHVlIHRlc3QtcnVubmVyLWF1eC12YWx1ZSEpCi0pCi0KLShkZWZpbmUgKHRlc3QtcnVubmVy LXJlc2V0IHJ1bm5lcikKLSAgKHRlc3QtcmVzdWx0LWFsaXN0ISBydW5uZXIgJygpKQotICAo dGVzdC1ydW5uZXItcGFzcy1jb3VudCEgcnVubmVyIDApCi0gICh0ZXN0LXJ1bm5lci1mYWls LWNvdW50ISBydW5uZXIgMCkKLSAgKHRlc3QtcnVubmVyLXhwYXNzLWNvdW50ISBydW5uZXIg MCkKLSAgKHRlc3QtcnVubmVyLXhmYWlsLWNvdW50ISBydW5uZXIgMCkKLSAgKHRlc3QtcnVu bmVyLXNraXAtY291bnQhIHJ1bm5lciAwKQotICAoJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50 ISBydW5uZXIgMCkKLSAgKCV0ZXN0LXJ1bm5lci1jb3VudC1saXN0ISBydW5uZXIgJygpKQot ICAoJXRlc3QtcnVubmVyLXJ1bi1saXN0ISBydW5uZXIgI3QpCi0gICgldGVzdC1ydW5uZXIt c2tpcC1saXN0ISBydW5uZXIgJygpKQotICAoJXRlc3QtcnVubmVyLWZhaWwtbGlzdCEgcnVu bmVyICcoKSkKLSAgKCV0ZXN0LXJ1bm5lci1za2lwLXNhdmUhIHJ1bm5lciAnKCkpCi0gICgl dGVzdC1ydW5uZXItZmFpbC1zYXZlISBydW5uZXIgJygpKQotICAodGVzdC1ydW5uZXItZ3Jv dXAtc3RhY2shIHJ1bm5lciAnKCkpKQotCi0oZGVmaW5lICh0ZXN0LXJ1bm5lci1ncm91cC1w YXRoIHJ1bm5lcikKLSAgKHJldmVyc2UgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHJ1bm5l cikpKQotCi0oZGVmaW5lICgldGVzdC1udWxsLWNhbGxiYWNrIHJ1bm5lcikgI2YpCi0KLShk ZWZpbmUgKHRlc3QtcnVubmVyLW51bGwpCi0gIChsZXQgKChydW5uZXIgKCV0ZXN0LXJ1bm5l ci1hbGxvYykpKQotICAgICh0ZXN0LXJ1bm5lci1yZXNldCBydW5uZXIpCi0gICAgKHRlc3Qt cnVubmVyLW9uLWdyb3VwLWJlZ2luISBydW5uZXIgKGxhbWJkYSAocnVubmVyIG5hbWUgY291 bnQpICNmKSkKLSAgICAodGVzdC1ydW5uZXItb24tZ3JvdXAtZW5kISBydW5uZXIgJXRlc3Qt bnVsbC1jYWxsYmFjaykKLSAgICAodGVzdC1ydW5uZXItb24tZmluYWwhIHJ1bm5lciAldGVz dC1udWxsLWNhbGxiYWNrKQotICAgICh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISBydW5u ZXIgJXRlc3QtbnVsbC1jYWxsYmFjaykKLSAgICAodGVzdC1ydW5uZXItb24tdGVzdC1lbmQh IHJ1bm5lciAldGVzdC1udWxsLWNhbGxiYWNrKQotICAgICh0ZXN0LXJ1bm5lci1vbi1iYWQt Y291bnQhIHJ1bm5lciAobGFtYmRhIChydW5uZXIgY291bnQgZXhwZWN0ZWQpICNmKSkKLSAg ICAodGVzdC1ydW5uZXItb24tYmFkLWVuZC1uYW1lISBydW5uZXIgKGxhbWJkYSAocnVubmVy IGJlZ2luIGVuZCkgI2YpKQotICAgIHJ1bm5lcikpCi0KLTs7IE5vdCBwYXJ0IG9mIHRoZSBz cGVjaWZpY2F0aW9uLiAgRklYTUUKLTs7IENvbnRyb2xzIHdoZXRoZXIgYSBsb2cgZmlsZSBp cyBnZW5lcmF0ZWQuCi0oZGVmaW5lIHRlc3QtbG9nLXRvLWZpbGUgI3QpCi0KLShkZWZpbmUg KHRlc3QtcnVubmVyLXNpbXBsZSkKLSAgKGxldCAoKHJ1bm5lciAoJXRlc3QtcnVubmVyLWFs bG9jKSkpCi0gICAgKHRlc3QtcnVubmVyLXJlc2V0IHJ1bm5lcikKLSAgICAodGVzdC1ydW5u ZXItb24tZ3JvdXAtYmVnaW4hIHJ1bm5lciB0ZXN0LW9uLWdyb3VwLWJlZ2luLXNpbXBsZSkK LSAgICAodGVzdC1ydW5uZXItb24tZ3JvdXAtZW5kISBydW5uZXIgdGVzdC1vbi1ncm91cC1l bmQtc2ltcGxlKQotICAgICh0ZXN0LXJ1bm5lci1vbi1maW5hbCEgcnVubmVyIHRlc3Qtb24t ZmluYWwtc2ltcGxlKQotICAgICh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luISBydW5uZXIg dGVzdC1vbi10ZXN0LWJlZ2luLXNpbXBsZSkKLSAgICAodGVzdC1ydW5uZXItb24tdGVzdC1l bmQhIHJ1bm5lciB0ZXN0LW9uLXRlc3QtZW5kLXNpbXBsZSkKLSAgICAodGVzdC1ydW5uZXIt b24tYmFkLWNvdW50ISBydW5uZXIgdGVzdC1vbi1iYWQtY291bnQtc2ltcGxlKQotICAgICh0 ZXN0LXJ1bm5lci1vbi1iYWQtZW5kLW5hbWUhIHJ1bm5lciB0ZXN0LW9uLWJhZC1lbmQtbmFt ZS1zaW1wbGUpCi0gICAgcnVubmVyKSkKLQotKGNvbmQtZXhwYW5kCi0gKHNyZmktMzkKLSAg KGRlZmluZSB0ZXN0LXJ1bm5lci1jdXJyZW50IChtYWtlLXBhcmFtZXRlciAjZikpCi0gIChk ZWZpbmUgdGVzdC1ydW5uZXItZmFjdG9yeSAobWFrZS1wYXJhbWV0ZXIgdGVzdC1ydW5uZXIt c2ltcGxlKSkpCi0gKGVsc2UKLSAgKGRlZmluZSAldGVzdC1ydW5uZXItY3VycmVudCAjZikK LSAgKGRlZmluZS1zeW50YXggdGVzdC1ydW5uZXItY3VycmVudAotICAgIChzeW50YXgtcnVs ZXMgKCkKLSAgICAgICgodGVzdC1ydW5uZXItY3VycmVudCkKLSAgICAgICAldGVzdC1ydW5u ZXItY3VycmVudCkKLSAgICAgICgodGVzdC1ydW5uZXItY3VycmVudCBydW5uZXIpCi0gICAg ICAgKHNldCEgJXRlc3QtcnVubmVyLWN1cnJlbnQgcnVubmVyKSkpKQotICAoZGVmaW5lICV0 ZXN0LXJ1bm5lci1mYWN0b3J5IHRlc3QtcnVubmVyLXNpbXBsZSkKLSAgKGRlZmluZS1zeW50 YXggdGVzdC1ydW5uZXItZmFjdG9yeQotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgo dGVzdC1ydW5uZXItZmFjdG9yeSkKLSAgICAgICAldGVzdC1ydW5uZXItZmFjdG9yeSkKLSAg ICAgICgodGVzdC1ydW5uZXItZmFjdG9yeSBydW5uZXIpCi0gICAgICAgKHNldCEgJXRlc3Qt cnVubmVyLWZhY3RvcnkgcnVubmVyKSkpKSkpCi0KLTs7IEEgc2FmZXIgd3JhcHBlciB0byB0 ZXN0LXJ1bm5lci1jdXJyZW50LgotKGRlZmluZSAodGVzdC1ydW5uZXItZ2V0KQotICAobGV0 ICgociAodGVzdC1ydW5uZXItY3VycmVudCkpKQotICAgIChpZiAobm90IHIpCi0JKGNvbmQt ZXhwYW5kCi0JIChzcmZpLTIzIChlcnJvciAidGVzdC1ydW5uZXIgbm90IGluaXRpYWxpemVk IC0gdGVzdC1iZWdpbiBtaXNzaW5nPyIpKQotCSAoZWxzZSAjdCkpKQotICAgIHIpKQotCi0o ZGVmaW5lICgldGVzdC1zcGVjaWZpZXItbWF0Y2hlcyBzcGVjIHJ1bm5lcikKLSAgKHNwZWMg cnVubmVyKSkKLQotKGRlZmluZSAodGVzdC1ydW5uZXItY3JlYXRlKQotICAoKHRlc3QtcnVu bmVyLWZhY3RvcnkpKSkKLQotKGRlZmluZSAoJXRlc3QtYW55LXNwZWNpZmllci1tYXRjaGVz IGxpc3QgcnVubmVyKQotICAobGV0ICgocmVzdWx0ICNmKSkKLSAgICAobGV0IGxvb3AgKChs IGxpc3QpKQotICAgICAgKGNvbmQgKChudWxsPyBsKSByZXN1bHQpCi0JICAgIChlbHNlCi0J ICAgICAoaWYgKCV0ZXN0LXNwZWNpZmllci1tYXRjaGVzIChjYXIgbCkgcnVubmVyKQotCQkg KHNldCEgcmVzdWx0ICN0KSkKLQkgICAgIChsb29wIChjZHIgbCkpKSkpKSkKLQotOzsgUmV0 dXJucyAjZiwgI3QsIG9yICd4ZmFpbC4KLShkZWZpbmUgKCV0ZXN0LXNob3VsZC1leGVjdXRl IHJ1bm5lcikKLSAgKGxldCAoKHJ1biAoJXRlc3QtcnVubmVyLXJ1bi1saXN0IHJ1bm5lcikp KQotICAgIChjb25kICgob3IKLQkgICAgKG5vdCAob3IgKGVxdj8gcnVuICN0KQotCQkgICAg ICgldGVzdC1hbnktc3BlY2lmaWVyLW1hdGNoZXMgcnVuIHJ1bm5lcikpKQotCSAgICAoJXRl c3QtYW55LXNwZWNpZmllci1tYXRjaGVzCi0JICAgICAoJXRlc3QtcnVubmVyLXNraXAtbGlz dCBydW5uZXIpCi0JICAgICBydW5uZXIpKQotCSAgICAodGVzdC1yZXN1bHQtc2V0ISBydW5u ZXIgJ3Jlc3VsdC1raW5kICdza2lwKQotCSAgICAjZikKLQkgICgoJXRlc3QtYW55LXNwZWNp Zmllci1tYXRjaGVzCi0JICAgICgldGVzdC1ydW5uZXItZmFpbC1saXN0IHJ1bm5lcikKLQkg ICAgcnVubmVyKQotCSAgICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciAncmVzdWx0LWtpbmQg J3hmYWlsKQotCSAgICd4ZmFpbCkKLQkgIChlbHNlICN0KSkpKQotCi0oZGVmaW5lICgldGVz dC1iZWdpbiBzdWl0ZS1uYW1lIGNvdW50KQotICAoaWYgKG5vdCAodGVzdC1ydW5uZXItY3Vy cmVudCkpCi0gICAgICAobGV0ICgociAodGVzdC1ydW5uZXItY3JlYXRlKSkpCi0JKHRlc3Qt cnVubmVyLWN1cnJlbnQgcikKLQkodGVzdC1ydW5uZXItb24tZmluYWwhIHIKLQkgIChsZXQg KChvbGQtZmluYWwgKHRlc3QtcnVubmVyLW9uLWZpbmFsIHIpKSkKLQkgICAgKGxhbWJkYSAo cikgKG9sZC1maW5hbCByKSAodGVzdC1ydW5uZXItY3VycmVudCAjZikpKSkpKQotICAobGV0 ICgocnVubmVyICh0ZXN0LXJ1bm5lci1jdXJyZW50KSkpCi0gICAgKCh0ZXN0LXJ1bm5lci1v bi1ncm91cC1iZWdpbiBydW5uZXIpIHJ1bm5lciBzdWl0ZS1uYW1lIGNvdW50KQotICAgICgl dGVzdC1ydW5uZXItc2tpcC1zYXZlISBydW5uZXIKLQkJCSAgICAgICAoY29ucyAoJXRlc3Qt cnVubmVyLXNraXAtbGlzdCBydW5uZXIpCi0JCQkJICAgICAoJXRlc3QtcnVubmVyLXNraXAt c2F2ZSBydW5uZXIpKSkKLSAgICAoJXRlc3QtcnVubmVyLWZhaWwtc2F2ZSEgcnVubmVyCi0J CQkgICAgICAgKGNvbnMgKCV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QgcnVubmVyKQotCQkJCSAg ICAgKCV0ZXN0LXJ1bm5lci1mYWlsLXNhdmUgcnVubmVyKSkpCi0gICAgKCV0ZXN0LXJ1bm5l ci1jb3VudC1saXN0ISBydW5uZXIKLQkJCSAgICAgKGNvbnMgKGNvbnMgKCV0ZXN0LXJ1bm5l ci10b3RhbC1jb3VudCBydW5uZXIpCi0JCQkJCSBjb3VudCkKLQkJCQkgICAoJXRlc3QtcnVu bmVyLWNvdW50LWxpc3QgcnVubmVyKSkpCi0gICAgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNr ISBydW5uZXIgKGNvbnMgc3VpdGUtbmFtZQotCQkJCQkodGVzdC1ydW5uZXItZ3JvdXAtc3Rh Y2sgcnVubmVyKSkpKSkKLShjb25kLWV4cGFuZAotIChrYXdhCi0gIDs7IEthd2EgaGFzIHRl c3QtYmVnaW4gYnVpbHQgaW4sIGltcGxlbWVudGVkIGFzOgotICA7OyAoYmVnaW4KLSAgOzsg ICAoY29uZC1leHBhbmQgKHNyZmktNjQgIyF2b2lkKSAoZWxzZSAocmVxdWlyZSAnc3JmaS02 NCkpKQotICA7OyAgICgldGVzdC1iZWdpbiBzdWl0ZS1uYW1lIFtjb3VudF0pKQotICA7OyBU aGlzIHB1dHMgdGVzdC1iZWdpbiBidXQgb25seSB0ZXN0LWJlZ2luIGluIHRoZSBkZWZhdWx0 IGVudmlyb25tZW50LiwKLSAgOzsgd2hpY2ggbWFrZXMgbm9ybWFsIHRlc3Qgc3VpdGVzIGxv YWRhYmxlIHdpdGhvdXQgbm9uLXBvcnRhYmxlIGNvbW1hbmRzLgotICApCi0gKGVsc2UKLSAg KGRlZmluZS1zeW50YXggdGVzdC1iZWdpbgotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAg ICgodGVzdC1iZWdpbiBzdWl0ZS1uYW1lKQotICAgICAgICgldGVzdC1iZWdpbiBzdWl0ZS1u YW1lICNmKSkKLSAgICAgICgodGVzdC1iZWdpbiBzdWl0ZS1uYW1lIGNvdW50KQotICAgICAg ICgldGVzdC1iZWdpbiBzdWl0ZS1uYW1lIGNvdW50KSkpKSkpCi0KLShkZWZpbmUgKHRlc3Qt b24tZ3JvdXAtYmVnaW4tc2ltcGxlIHJ1bm5lciBzdWl0ZS1uYW1lIGNvdW50KQotICAoaWYg KG51bGw/ICh0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayBydW5uZXIpKQotICAgICAgKGJlZ2lu Ci0JKGRpc3BsYXkgIiUlJSUgU3RhcnRpbmcgdGVzdCAiKQotCShkaXNwbGF5IHN1aXRlLW5h bWUpCi0JKGlmIHRlc3QtbG9nLXRvLWZpbGUKLQkgICAgKGxldCogKChsb2ctZmlsZS1uYW1l Ci0JCSAgICAoaWYgKHN0cmluZz8gdGVzdC1sb2ctdG8tZmlsZSkgdGVzdC1sb2ctdG8tZmls ZQotCQkJKHN0cmluZy1hcHBlbmQgc3VpdGUtbmFtZSAiLmxvZyIpKSkKLQkJICAgKGxvZy1m aWxlCi0JCSAgICAoY29uZC1leHBhbmQgKG16c2NoZW1lCi0JCQkJICAob3Blbi1vdXRwdXQt ZmlsZSBsb2ctZmlsZS1uYW1lICd0cnVuY2F0ZS9yZXBsYWNlKSkKLQkJCQkgKGVsc2UgKG9w ZW4tb3V0cHV0LWZpbGUgbG9nLWZpbGUtbmFtZSkpKSkpCi0JICAgICAgKGRpc3BsYXkgIiUl JSUgU3RhcnRpbmcgdGVzdCAiIGxvZy1maWxlKQotCSAgICAgIChkaXNwbGF5IHN1aXRlLW5h bWUgbG9nLWZpbGUpCi0JICAgICAgKG5ld2xpbmUgbG9nLWZpbGUpCi0JICAgICAgKHRlc3Qt cnVubmVyLWF1eC12YWx1ZSEgcnVubmVyIGxvZy1maWxlKQotCSAgICAgIChkaXNwbGF5ICIg IChXcml0aW5nIGZ1bGwgbG9nIHRvIFwiIikKLQkgICAgICAoZGlzcGxheSBsb2ctZmlsZS1u YW1lKQotCSAgICAgIChkaXNwbGF5ICJcIikiKSkpCi0JKG5ld2xpbmUpKSkKLSAgKGxldCAo KGxvZyAodGVzdC1ydW5uZXItYXV4LXZhbHVlIHJ1bm5lcikpKQotICAgIChpZiAob3V0cHV0 LXBvcnQ/IGxvZykKLQkoYmVnaW4KLQkgIChkaXNwbGF5ICJHcm91cCBiZWdpbjogIiBsb2cp Ci0JICAoZGlzcGxheSBzdWl0ZS1uYW1lIGxvZykKLQkgIChuZXdsaW5lIGxvZykpKSkKLSAg I2YpCi0KLShkZWZpbmUgKHRlc3Qtb24tZ3JvdXAtZW5kLXNpbXBsZSBydW5uZXIpCi0gIChs ZXQgKChsb2cgKHRlc3QtcnVubmVyLWF1eC12YWx1ZSBydW5uZXIpKSkKLSAgICAoaWYgKG91 dHB1dC1wb3J0PyBsb2cpCi0JKGJlZ2luCi0JICAoZGlzcGxheSAiR3JvdXAgZW5kOiAiIGxv ZykKLQkgIChkaXNwbGF5IChjYXIgKHRlc3QtcnVubmVyLWdyb3VwLXN0YWNrIHJ1bm5lcikp IGxvZykKLQkgIChuZXdsaW5lIGxvZykpKSkKLSAgI2YpCi0KLShkZWZpbmUgKCV0ZXN0LW9u LWJhZC1jb3VudC13cml0ZSBydW5uZXIgY291bnQgZXhwZWN0ZWQtY291bnQgcG9ydCkKLSAg KGRpc3BsYXkgIioqKiBUb3RhbCBudW1iZXIgb2YgdGVzdHMgd2FzICIgcG9ydCkKLSAgKGRp c3BsYXkgY291bnQgcG9ydCkKLSAgKGRpc3BsYXkgIiBidXQgc2hvdWxkIGJlICIgcG9ydCkK LSAgKGRpc3BsYXkgZXhwZWN0ZWQtY291bnQgcG9ydCkKLSAgKGRpc3BsYXkgIi4gKioqIiBw b3J0KQotICAobmV3bGluZSBwb3J0KQotICAoZGlzcGxheSAiKioqIERpc2NyZXBhbmN5IGlu ZGljYXRlcyB0ZXN0c3VpdGUgZXJyb3Igb3IgZXhjZXB0aW9ucy4gKioqIiBwb3J0KQotICAo bmV3bGluZSBwb3J0KSkKLQotKGRlZmluZSAodGVzdC1vbi1iYWQtY291bnQtc2ltcGxlIHJ1 bm5lciBjb3VudCBleHBlY3RlZC1jb3VudCkKLSAgKCV0ZXN0LW9uLWJhZC1jb3VudC13cml0 ZSBydW5uZXIgY291bnQgZXhwZWN0ZWQtY291bnQgKGN1cnJlbnQtb3V0cHV0LXBvcnQpKQot ICAobGV0ICgobG9nICh0ZXN0LXJ1bm5lci1hdXgtdmFsdWUgcnVubmVyKSkpCi0gICAgKGlm IChvdXRwdXQtcG9ydD8gbG9nKQotCSgldGVzdC1vbi1iYWQtY291bnQtd3JpdGUgcnVubmVy IGNvdW50IGV4cGVjdGVkLWNvdW50IGxvZykpKSkKLQotKGRlZmluZSAodGVzdC1vbi1iYWQt ZW5kLW5hbWUtc2ltcGxlIHJ1bm5lciBiZWdpbi1uYW1lIGVuZC1uYW1lKQotICAobGV0ICgo bXNnIChzdHJpbmctYXBwZW5kICgldGVzdC1mb3JtYXQtbGluZSBydW5uZXIpICJ0ZXN0LWVu ZCAiIGJlZ2luLW5hbWUKLQkJCSAgICAiIGRvZXMgbm90IG1hdGNoIHRlc3QtYmVnaW4gIiBl bmQtbmFtZSkpKQotICAgIChjb25kLWV4cGFuZAotICAgICAoc3JmaS0yMyAoZXJyb3IgbXNn KSkKLSAgICAgKGVsc2UgKGRpc3BsYXkgbXNnKSAobmV3bGluZSkpKSkpCi0gIAotCi0oZGVm aW5lICgldGVzdC1maW5hbC1yZXBvcnQxIHZhbHVlIGxhYmVsIHBvcnQpCi0gIChpZiAoPiB2 YWx1ZSAwKQotICAgICAgKGJlZ2luCi0JKGRpc3BsYXkgbGFiZWwgcG9ydCkKLQkoZGlzcGxh eSB2YWx1ZSBwb3J0KQotCShuZXdsaW5lIHBvcnQpKSkpCi0KLShkZWZpbmUgKCV0ZXN0LWZp bmFsLXJlcG9ydC1zaW1wbGUgcnVubmVyIHBvcnQpCi0gICgldGVzdC1maW5hbC1yZXBvcnQx ICh0ZXN0LXJ1bm5lci1wYXNzLWNvdW50IHJ1bm5lcikKLQkJICAgICAgIiMgb2YgZXhwZWN0 ZWQgcGFzc2VzICAgICAgIiBwb3J0KQotICAoJXRlc3QtZmluYWwtcmVwb3J0MSAodGVzdC1y dW5uZXIteGZhaWwtY291bnQgcnVubmVyKQotCQkgICAgICAiIyBvZiBleHBlY3RlZCBmYWls dXJlcyAgICAiIHBvcnQpCi0gICgldGVzdC1maW5hbC1yZXBvcnQxICh0ZXN0LXJ1bm5lci14 cGFzcy1jb3VudCBydW5uZXIpCi0JCSAgICAgICIjIG9mIHVuZXhwZWN0ZWQgc3VjY2Vzc2Vz ICIgcG9ydCkKLSAgKCV0ZXN0LWZpbmFsLXJlcG9ydDEgKHRlc3QtcnVubmVyLWZhaWwtY291 bnQgcnVubmVyKQotCQkgICAgICAiIyBvZiB1bmV4cGVjdGVkIGZhaWx1cmVzICAiIHBvcnQp Ci0gICgldGVzdC1maW5hbC1yZXBvcnQxICh0ZXN0LXJ1bm5lci1za2lwLWNvdW50IHJ1bm5l cikKLQkJICAgICAgIiMgb2Ygc2tpcHBlZCB0ZXN0cyAgICAgICAgIiBwb3J0KSkKLQotKGRl ZmluZSAodGVzdC1vbi1maW5hbC1zaW1wbGUgcnVubmVyKQotICAoJXRlc3QtZmluYWwtcmVw b3J0LXNpbXBsZSBydW5uZXIgKGN1cnJlbnQtb3V0cHV0LXBvcnQpKQotICAobGV0ICgobG9n ICh0ZXN0LXJ1bm5lci1hdXgtdmFsdWUgcnVubmVyKSkpCi0gICAgKGlmIChvdXRwdXQtcG9y dD8gbG9nKQotCSgldGVzdC1maW5hbC1yZXBvcnQtc2ltcGxlIHJ1bm5lciBsb2cpKSkpCi0K LShkZWZpbmUgKCV0ZXN0LWZvcm1hdC1saW5lIHJ1bm5lcikKLSAgIChsZXQqICgobGluZS1p bmZvICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5uZXIpKQotCSAgKHNvdXJjZS1maWxlIChhc3Nx ICdzb3VyY2UtZmlsZSBsaW5lLWluZm8pKQotCSAgKHNvdXJjZS1saW5lIChhc3NxICdzb3Vy Y2UtbGluZSBsaW5lLWluZm8pKQotCSAgKGZpbGUgKGlmIHNvdXJjZS1maWxlIChjZHIgc291 cmNlLWZpbGUpICIiKSkpCi0gICAgIChpZiBzb3VyY2UtbGluZQotCSAoc3RyaW5nLWFwcGVu ZCBmaWxlICI6IgotCQkJKG51bWJlci0+c3RyaW5nIChjZHIgc291cmNlLWxpbmUpKSAiOiAi KQotCSAiIikpKQotCi0oZGVmaW5lICgldGVzdC1lbmQgc3VpdGUtbmFtZSBsaW5lLWluZm8p Ci0gIChsZXQqICgociAodGVzdC1ydW5uZXItZ2V0KSkKLQkgKGdyb3VwcyAodGVzdC1ydW5u ZXItZ3JvdXAtc3RhY2sgcikpCi0JIChsaW5lICgldGVzdC1mb3JtYXQtbGluZSByKSkpCi0g ICAgKHRlc3QtcmVzdWx0LWFsaXN0ISByIGxpbmUtaW5mbykKLSAgICAoaWYgKG51bGw/IGdy b3VwcykKLQkobGV0ICgobXNnIChzdHJpbmctYXBwZW5kIGxpbmUgInRlc3QtZW5kIG5vdCBp biBhIGdyb3VwIikpKQotCSAgKGNvbmQtZXhwYW5kCi0JICAgKHNyZmktMjMgKGVycm9yIG1z ZykpCi0JICAgKGVsc2UgKGRpc3BsYXkgbXNnKSAobmV3bGluZSkpKSkpCi0gICAgKGlmIChh bmQgc3VpdGUtbmFtZSAobm90IChlcXVhbD8gc3VpdGUtbmFtZSAoY2FyIGdyb3VwcykpKSkK LQkoKHRlc3QtcnVubmVyLW9uLWJhZC1lbmQtbmFtZSByKSByIHN1aXRlLW5hbWUgKGNhciBn cm91cHMpKSkKLSAgICAobGV0KiAoKGNvdW50LWxpc3QgKCV0ZXN0LXJ1bm5lci1jb3VudC1s aXN0IHIpKQotCSAgIChleHBlY3RlZC1jb3VudCAoY2RhciBjb3VudC1saXN0KSkKLQkgICAo c2F2ZWQtY291bnQgKGNhYXIgY291bnQtbGlzdCkpCi0JICAgKGdyb3VwLWNvdW50ICgtICgl dGVzdC1ydW5uZXItdG90YWwtY291bnQgcikgc2F2ZWQtY291bnQpKSkKLSAgICAgIChpZiAo YW5kIGV4cGVjdGVkLWNvdW50Ci0JICAgICAgIChub3QgKD0gZXhwZWN0ZWQtY291bnQgZ3Jv dXAtY291bnQpKSkKLQkgICgodGVzdC1ydW5uZXItb24tYmFkLWNvdW50IHIpIHIgZ3JvdXAt Y291bnQgZXhwZWN0ZWQtY291bnQpKQotICAgICAgKCh0ZXN0LXJ1bm5lci1vbi1ncm91cC1l bmQgcikgcikKLSAgICAgICh0ZXN0LXJ1bm5lci1ncm91cC1zdGFjayEgciAoY2RyICh0ZXN0 LXJ1bm5lci1ncm91cC1zdGFjayByKSkpCi0gICAgICAoJXRlc3QtcnVubmVyLXNraXAtbGlz dCEgciAoY2FyICgldGVzdC1ydW5uZXItc2tpcC1zYXZlIHIpKSkKLSAgICAgICgldGVzdC1y dW5uZXItc2tpcC1zYXZlISByIChjZHIgKCV0ZXN0LXJ1bm5lci1za2lwLXNhdmUgcikpKQot ICAgICAgKCV0ZXN0LXJ1bm5lci1mYWlsLWxpc3QhIHIgKGNhciAoJXRlc3QtcnVubmVyLWZh aWwtc2F2ZSByKSkpCi0gICAgICAoJXRlc3QtcnVubmVyLWZhaWwtc2F2ZSEgciAoY2RyICgl dGVzdC1ydW5uZXItZmFpbC1zYXZlIHIpKSkKLSAgICAgICgldGVzdC1ydW5uZXItY291bnQt bGlzdCEgciAoY2RyIGNvdW50LWxpc3QpKQotICAgICAgKGlmIChudWxsPyAodGVzdC1ydW5u ZXItZ3JvdXAtc3RhY2sgcikpCi0JICAoKHRlc3QtcnVubmVyLW9uLWZpbmFsIHIpIHIpKSkp KQotCi0oZGVmaW5lLXN5bnRheCB0ZXN0LWdyb3VwCi0gIChzeW50YXgtcnVsZXMgKCkKLSAg ICAoKHRlc3QtZ3JvdXAgc3VpdGUtbmFtZSAuIGJvZHkpCi0gICAgIChsZXQgKChyICh0ZXN0 LXJ1bm5lci1jdXJyZW50KSkpCi0gICAgICAgOzsgSWRlYWxseSBzaG91bGQgYWxzbyBzZXQg bGluZS1udW1iZXIsIGlmIGF2YWlsYWJsZS4KLSAgICAgICAodGVzdC1yZXN1bHQtYWxpc3Qh IHIgKGxpc3QgKGNvbnMgJ3Rlc3QtbmFtZSBzdWl0ZS1uYW1lKSkpCi0gICAgICAgKGlmICgl dGVzdC1zaG91bGQtZXhlY3V0ZSByKQotCSAgIChkeW5hbWljLXdpbmQKLQkgICAgICAgKGxh bWJkYSAoKSAodGVzdC1iZWdpbiBzdWl0ZS1uYW1lKSkKLQkgICAgICAgKGxhbWJkYSAoKSAu IGJvZHkpCi0JICAgICAgIChsYW1iZGEgKCkgKHRlc3QtZW5kICBzdWl0ZS1uYW1lKSkpKSkp KSkKLQotKGRlZmluZS1zeW50YXggdGVzdC1ncm91cC13aXRoLWNsZWFudXAKLSAgKHN5bnRh eC1ydWxlcyAoKQotICAgICgodGVzdC1ncm91cC13aXRoLWNsZWFudXAgc3VpdGUtbmFtZSBm b3JtIGNsZWFudXAtZm9ybSkKLSAgICAgKHRlc3QtZ3JvdXAgc3VpdGUtbmFtZQotCQkgICAg KGR5bmFtaWMtd2luZAotCQkJKGxhbWJkYSAoKSAjZikKLQkJCShsYW1iZGEgKCkgZm9ybSkK LQkJCShsYW1iZGEgKCkgY2xlYW51cC1mb3JtKSkpKQotICAgICgodGVzdC1ncm91cC13aXRo LWNsZWFudXAgc3VpdGUtbmFtZSBjbGVhbnVwLWZvcm0pCi0gICAgICh0ZXN0LWdyb3VwLXdp dGgtY2xlYW51cCBzdWl0ZS1uYW1lICNmIGNsZWFudXAtZm9ybSkpCi0gICAgKCh0ZXN0LWdy b3VwLXdpdGgtY2xlYW51cCBzdWl0ZS1uYW1lIGZvcm0xIGZvcm0yIGZvcm0zIC4gcmVzdCkK LSAgICAgKHRlc3QtZ3JvdXAtd2l0aC1jbGVhbnVwIHN1aXRlLW5hbWUgKGJlZ2luIGZvcm0x IGZvcm0yKSBmb3JtMyAuIHJlc3QpKSkpCi0KLShkZWZpbmUgKHRlc3Qtb24tdGVzdC1iZWdp bi1zaW1wbGUgcnVubmVyKQotIChsZXQgKChsb2cgKHRlc3QtcnVubmVyLWF1eC12YWx1ZSBy dW5uZXIpKSkKLSAgICAoaWYgKG91dHB1dC1wb3J0PyBsb2cpCi0JKGxldCogKChyZXN1bHRz ICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5uZXIpKQotCSAgICAgICAoc291cmNlLWZpbGUgKGFz c3EgJ3NvdXJjZS1maWxlIHJlc3VsdHMpKQotCSAgICAgICAoc291cmNlLWxpbmUgKGFzc3Eg J3NvdXJjZS1saW5lIHJlc3VsdHMpKQotCSAgICAgICAoc291cmNlLWZvcm0gKGFzc3EgJ3Nv dXJjZS1mb3JtIHJlc3VsdHMpKQotCSAgICAgICAodGVzdC1uYW1lIChhc3NxICd0ZXN0LW5h bWUgcmVzdWx0cykpKQotCSAgKGRpc3BsYXkgIlRlc3QgYmVnaW46IiBsb2cpCi0JICAobmV3 bGluZSBsb2cpCi0JICAoaWYgdGVzdC1uYW1lICgldGVzdC13cml0ZS1yZXN1bHQxIHRlc3Qt bmFtZSBsb2cpKQotCSAgKGlmIHNvdXJjZS1maWxlICgldGVzdC13cml0ZS1yZXN1bHQxIHNv dXJjZS1maWxlIGxvZykpCi0JICAoaWYgc291cmNlLWxpbmUgKCV0ZXN0LXdyaXRlLXJlc3Vs dDEgc291cmNlLWxpbmUgbG9nKSkKLQkgIChpZiBzb3VyY2UtZm9ybSAoJXRlc3Qtd3JpdGUt cmVzdWx0MSBzb3VyY2UtZm9ybSBsb2cpKSkpKSkKLQotKGRlZmluZS1zeW50YXggdGVzdC1y ZXN1bHQtcmVmCi0gIChzeW50YXgtcnVsZXMgKCkKLSAgICAoKHRlc3QtcmVzdWx0LXJlZiBy dW5uZXIgcG5hbWUpCi0gICAgICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyIHBuYW1lICNmKSkK LSAgICAoKHRlc3QtcmVzdWx0LXJlZiBydW5uZXIgcG5hbWUgZGVmYXVsdCkKLSAgICAgKGxl dCAoKHAgKGFzc3EgcG5hbWUgKHRlc3QtcmVzdWx0LWFsaXN0IHJ1bm5lcikpKSkKLSAgICAg ICAoaWYgcCAoY2RyIHApIGRlZmF1bHQpKSkpKQotCi0oZGVmaW5lICh0ZXN0LW9uLXRlc3Qt ZW5kLXNpbXBsZSBydW5uZXIpCi0gIChsZXQgKChsb2cgKHRlc3QtcnVubmVyLWF1eC12YWx1 ZSBydW5uZXIpKQotCShraW5kICh0ZXN0LXJlc3VsdC1yZWYgcnVubmVyICdyZXN1bHQta2lu ZCkpKQotICAgIChpZiAobWVtcSBraW5kICcoZmFpbCB4cGFzcykpCi0JKGxldCogKChyZXN1 bHRzICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5uZXIpKQotCSAgICAgICAoc291cmNlLWZpbGUg KGFzc3EgJ3NvdXJjZS1maWxlIHJlc3VsdHMpKQotCSAgICAgICAoc291cmNlLWxpbmUgKGFz c3EgJ3NvdXJjZS1saW5lIHJlc3VsdHMpKQotCSAgICAgICAodGVzdC1uYW1lIChhc3NxICd0 ZXN0LW5hbWUgcmVzdWx0cykpKQotCSAgKGlmIChvciBzb3VyY2UtZmlsZSBzb3VyY2UtbGlu ZSkKLQkgICAgICAoYmVnaW4KLQkJKGlmIHNvdXJjZS1maWxlIChkaXNwbGF5IChjZHIgc291 cmNlLWZpbGUpKSkKLQkJKGRpc3BsYXkgIjoiKQotCQkoaWYgc291cmNlLWxpbmUgKGRpc3Bs YXkgKGNkciBzb3VyY2UtbGluZSkpKQotCQkoZGlzcGxheSAiOiAiKSkpCi0JICAoZGlzcGxh eSAoaWYgKGVxPyBraW5kICd4cGFzcykgIlhQQVNTIiAiRkFJTCIpKQotCSAgKGlmIHRlc3Qt bmFtZQotCSAgICAgIChiZWdpbgotCQkoZGlzcGxheSAiICIpCi0JCShkaXNwbGF5IChjZHIg dGVzdC1uYW1lKSkpKQotCSAgKG5ld2xpbmUpKSkKLSAgICAoaWYgKG91dHB1dC1wb3J0PyBs b2cpCi0JKGJlZ2luCi0JICAoZGlzcGxheSAiVGVzdCBlbmQ6IiBsb2cpCi0JICAobmV3bGlu ZSBsb2cpCi0JICAobGV0IGxvb3AgKChsaXN0ICh0ZXN0LXJlc3VsdC1hbGlzdCBydW5uZXIp KSkKLQkgICAgKGlmIChwYWlyPyBsaXN0KQotCQkobGV0ICgocGFpciAoY2FyIGxpc3QpKSkK LQkJICA7OyBXcml0ZSBvdXQgcHJvcGVydGllcyBub3Qgd3JpdHRlbiBvdXQgYnkgb24tdGVz dC1iZWdpbi4KLQkJICAoaWYgKG5vdCAobWVtcSAoY2FyIHBhaXIpCi0JCQkJICcodGVzdC1u YW1lIHNvdXJjZS1maWxlIHNvdXJjZS1saW5lIHNvdXJjZS1mb3JtKSkpCi0JCSAgICAgICgl dGVzdC13cml0ZS1yZXN1bHQxIHBhaXIgbG9nKSkKLQkJICAobG9vcCAoY2RyIGxpc3QpKSkp KSkpKSkKLQotKGRlZmluZSAoJXRlc3Qtd3JpdGUtcmVzdWx0MSBwYWlyIHBvcnQpCi0gIChk aXNwbGF5ICIgICIgcG9ydCkKLSAgKGRpc3BsYXkgKGNhciBwYWlyKSBwb3J0KQotICAoZGlz cGxheSAiOiAiIHBvcnQpCi0gICh3cml0ZSAoY2RyIHBhaXIpIHBvcnQpCi0gIChuZXdsaW5l IHBvcnQpKQotCi0oZGVmaW5lICh0ZXN0LXJlc3VsdC1zZXQhIHJ1bm5lciBwbmFtZSB2YWx1 ZSkKLSAgKGxldCogKChhbGlzdCAodGVzdC1yZXN1bHQtYWxpc3QgcnVubmVyKSkKLQkgKHAg KGFzc3EgcG5hbWUgYWxpc3QpKSkKLSAgICAoaWYgcAotCShzZXQtY2RyISBwIHZhbHVlKQot CSh0ZXN0LXJlc3VsdC1hbGlzdCEgcnVubmVyIChjb25zIChjb25zIHBuYW1lIHZhbHVlKSBh bGlzdCkpKSkpCi0KLShkZWZpbmUgKHRlc3QtcmVzdWx0LWNsZWFyIHJ1bm5lcikKLSAgKHRl c3QtcmVzdWx0LWFsaXN0ISBydW5uZXIgJygpKSkKLQotKGRlZmluZSAodGVzdC1yZXN1bHQt cmVtb3ZlIHJ1bm5lciBwbmFtZSkKLSAgKGxldCogKChhbGlzdCAodGVzdC1yZXN1bHQtYWxp c3QgcnVubmVyKSkKLQkgKHAgKGFzc3EgcG5hbWUgYWxpc3QpKSkKLSAgICAoaWYgcAotCSh0 ZXN0LXJlc3VsdC1hbGlzdCEgcnVubmVyCi0JCQkJICAgKGxldCBsb29wICgociBhbGlzdCkp Ci0JCQkJICAgICAoaWYgKGVxPyByIHApIChjZHIgcikKLQkJCQkJIChjb25zIChjYXIgcikg KGxvb3AgKGNkciByKSkpKSkpKSkpCi0KLShkZWZpbmUgKHRlc3QtcmVzdWx0LWtpbmQgLiBy ZXN0KQotICAobGV0ICgocnVubmVyIChpZiAocGFpcj8gcmVzdCkgKGNhciByZXN0KSAodGVz dC1ydW5uZXItY3VycmVudCkpKSkKLSAgICAodGVzdC1yZXN1bHQtcmVmIHJ1bm5lciAncmVz dWx0LWtpbmQpKSkKLQotKGRlZmluZSAodGVzdC1wYXNzZWQ/IC4gcmVzdCkKLSAgKGxldCAo KHJ1bm5lciAoaWYgKHBhaXI/IHJlc3QpIChjYXIgcmVzdCkgKHRlc3QtcnVubmVyLWdldCkp KSkKLSAgICAobWVtcSAodGVzdC1yZXN1bHQtcmVmIHJ1bm5lciAncmVzdWx0LWtpbmQpICco cGFzcyB4cGFzcykpKSkKLQotKGRlZmluZSAoJXRlc3QtcmVwb3J0LXJlc3VsdCkKLSAgKGxl dCogKChyICh0ZXN0LXJ1bm5lci1nZXQpKQotCSAocmVzdWx0LWtpbmQgKHRlc3QtcmVzdWx0 LWtpbmQgcikpKQotICAgIChjYXNlIHJlc3VsdC1raW5kCi0gICAgICAoKHBhc3MpCi0gICAg ICAgKHRlc3QtcnVubmVyLXBhc3MtY291bnQhIHIgKCsgMSAodGVzdC1ydW5uZXItcGFzcy1j b3VudCByKSkpKQotICAgICAgKChmYWlsKQotICAgICAgICh0ZXN0LXJ1bm5lci1mYWlsLWNv dW50IQlyICgrIDEgKHRlc3QtcnVubmVyLWZhaWwtY291bnQgcikpKSkKLSAgICAgICgoeHBh c3MpCi0gICAgICAgKHRlc3QtcnVubmVyLXhwYXNzLWNvdW50ISByICgrIDEgKHRlc3QtcnVu bmVyLXhwYXNzLWNvdW50IHIpKSkpCi0gICAgICAoKHhmYWlsKQotICAgICAgICh0ZXN0LXJ1 bm5lci14ZmFpbC1jb3VudCEgciAoKyAxICh0ZXN0LXJ1bm5lci14ZmFpbC1jb3VudCByKSkp KQotICAgICAgKGVsc2UKLSAgICAgICAodGVzdC1ydW5uZXItc2tpcC1jb3VudCEgciAoKyAx ICh0ZXN0LXJ1bm5lci1za2lwLWNvdW50IHIpKSkpKQotICAgICgldGVzdC1ydW5uZXItdG90 YWwtY291bnQhIHIgKCsgMSAoJXRlc3QtcnVubmVyLXRvdGFsLWNvdW50IHIpKSkKLSAgICAo KHRlc3QtcnVubmVyLW9uLXRlc3QtZW5kIHIpIHIpKSkKLQotKGNvbmQtZXhwYW5kCi0gKGd1 aWxlCi0gIChkZWZpbmUtc3ludGF4ICV0ZXN0LWV2YWx1YXRlLXdpdGgtY2F0Y2gKLSAgICAo c3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0ZXN0LWV2YWx1YXRlLXdpdGgtY2F0Y2ggdGVz dC1leHByZXNzaW9uKQotICAgICAgIChjYXRjaCAjdAotICAgICAgICAgKGxhbWJkYSAoKSB0 ZXN0LWV4cHJlc3Npb24pCi0gICAgICAgICAobGFtYmRhIChrZXkgLiBhcmdzKQotICAgICAg ICAgICAodGVzdC1yZXN1bHQtc2V0ISAodGVzdC1ydW5uZXItY3VycmVudCkgJ2FjdHVhbC1l cnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBrZXkgYXJncykpCi0g ICAgICAgICAgICNmKSkpKSkpCi0gKGthd2EKLSAgKGRlZmluZS1zeW50YXggJXRlc3QtZXZh bHVhdGUtd2l0aC1jYXRjaAotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgoJXRlc3Qt ZXZhbHVhdGUtd2l0aC1jYXRjaCB0ZXN0LWV4cHJlc3Npb24pCi0gICAgICAgKHRyeS1jYXRj aCB0ZXN0LWV4cHJlc3Npb24KLQkJICAoZXggPGphdmEubGFuZy5UaHJvd2FibGU+Ci0JCSAg ICAgICh0ZXN0LXJlc3VsdC1zZXQhICh0ZXN0LXJ1bm5lci1jdXJyZW50KSAnYWN0dWFsLWVy cm9yIGV4KQotCQkgICAgICAjZikpKSkpKQotIChzcmZpLTM0Ci0gIChkZWZpbmUtc3ludGF4 ICV0ZXN0LWV2YWx1YXRlLXdpdGgtY2F0Y2gKLSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAg ICAoKCV0ZXN0LWV2YWx1YXRlLXdpdGgtY2F0Y2ggdGVzdC1leHByZXNzaW9uKQotICAgICAg IChndWFyZCAoZXJyIChlbHNlICNmKSkgdGVzdC1leHByZXNzaW9uKSkpKSkKLSAoY2hpY2tl bgotICAoZGVmaW5lLXN5bnRheCAldGVzdC1ldmFsdWF0ZS13aXRoLWNhdGNoCi0gICAgKHN5 bnRheC1ydWxlcyAoKQotICAgICAgKCgldGVzdC1ldmFsdWF0ZS13aXRoLWNhdGNoIHRlc3Qt ZXhwcmVzc2lvbikKLSAgICAgICAoY29uZGl0aW9uLWNhc2UgdGVzdC1leHByZXNzaW9uIChl eCAoKSAjZikpKSkpKQotIChlbHNlCi0gIChkZWZpbmUtc3ludGF4ICV0ZXN0LWV2YWx1YXRl LXdpdGgtY2F0Y2gKLSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0ZXN0LWV2YWx1 YXRlLXdpdGgtY2F0Y2ggdGVzdC1leHByZXNzaW9uKQotICAgICAgIHRlc3QtZXhwcmVzc2lv bikpKSkpCi0JICAgIAotKGNvbmQtZXhwYW5kCi0gKChvciBrYXdhIG16c2NoZW1lKQotICAo Y29uZC1leHBhbmQKLSAgIChtenNjaGVtZQotICAgIChkZWZpbmUtZm9yLXN5bnRheCAoJXRl c3Qtc3ludGF4LWZpbGUgZm9ybSkKLSAgICAgIChsZXQgKChzb3VyY2UgKHN5bnRheC1zb3Vy Y2UgZm9ybSkpKQotCShjb25kICgoc3RyaW5nPyBzb3VyY2UpIGZpbGUpCi0JCQkJKChwYXRo PyBzb3VyY2UpIChwYXRoLT5zdHJpbmcgc291cmNlKSkKLQkJCQkoZWxzZSAjZikpKSkpCi0g ICAoa2F3YQotICAgIChkZWZpbmUgKCV0ZXN0LXN5bnRheC1maWxlIGZvcm0pCi0gICAgICAo c3ludGF4LXNvdXJjZSBmb3JtKSkpKQotICAoZGVmaW5lICgldGVzdC1zb3VyY2UtbGluZTIg Zm9ybSkKLSAgICAobGV0KiAoKGxpbmUgKHN5bnRheC1saW5lIGZvcm0pKQotCSAgIChmaWxl ICgldGVzdC1zeW50YXgtZmlsZSBmb3JtKSkKLQkgICAobGluZS1wYWlyIChpZiBsaW5lIChs aXN0IChjb25zICdzb3VyY2UtbGluZSBsaW5lKSkgJygpKSkpCi0gICAgICAoY29ucyAoY29u cyAnc291cmNlLWZvcm0gKHN5bnRheC1vYmplY3QtPmRhdHVtIGZvcm0pKQotCSAgICAoaWYg ZmlsZSAoY29ucyAoY29ucyAnc291cmNlLWZpbGUgZmlsZSkgbGluZS1wYWlyKSBsaW5lLXBh aXIpKSkpKQotIChndWlsZS0yCi0gIChkZWZpbmUgKCV0ZXN0LXNvdXJjZS1saW5lMiBmb3Jt KQotICAgIChsZXQqICgoc3JjLXByb3BzIChzeW50YXgtc291cmNlIGZvcm0pKQotICAgICAg ICAgICAoZmlsZSAoYW5kIHNyYy1wcm9wcyAoYXNzcS1yZWYgc3JjLXByb3BzICdmaWxlbmFt ZSkpKQotICAgICAgICAgICAobGluZSAoYW5kIHNyYy1wcm9wcyAoYXNzcS1yZWYgc3JjLXBy b3BzICdsaW5lKSkpCi0gICAgICAgICAgIChmaWxlLWFsaXN0IChpZiBmaWxlCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBgKChzb3VyY2UtZmlsZSAuICxmaWxlKSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICcoKSkpCi0gICAgICAgICAgIChsaW5lLWFsaXN0IChpZiBs aW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBgKChzb3VyY2UtbGluZSAuICwoKyBs aW5lIDEpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKSkpKQotICAgICAgKGRh dHVtLT5zeW50YXggKHN5bnRheCBoZXJlKQotICAgICAgICAgICAgICAgICAgICAgYCgoc291 cmNlLWZvcm0gLiAsKHN5bnRheC0+ZGF0dW0gZm9ybSkpCi0gICAgICAgICAgICAgICAgICAg ICAgICxAZmlsZS1hbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAsQGxpbmUtYWxpc3Qp KSkpKQotIChlbHNlCi0gIChkZWZpbmUgKCV0ZXN0LXNvdXJjZS1saW5lMiBmb3JtKQotICAg ICcoKSkpKQotCi0oZGVmaW5lICgldGVzdC1vbi10ZXN0LWJlZ2luIHIpCi0gICgldGVzdC1z aG91bGQtZXhlY3V0ZSByKQotICAoKHRlc3QtcnVubmVyLW9uLXRlc3QtYmVnaW4gcikgcikK LSAgKG5vdCAoZXE/ICdza2lwICh0ZXN0LXJlc3VsdC1yZWYgciAncmVzdWx0LWtpbmQpKSkp Ci0KLShkZWZpbmUgKCV0ZXN0LW9uLXRlc3QtZW5kIHIgcmVzdWx0KQotICAgICh0ZXN0LXJl c3VsdC1zZXQhIHIgJ3Jlc3VsdC1raW5kCi0JCSAgICAgIChpZiAoZXE/ICh0ZXN0LXJlc3Vs dC1yZWYgciAncmVzdWx0LWtpbmQpICd4ZmFpbCkKLQkJCSAgKGlmIHJlc3VsdCAneHBhc3Mg J3hmYWlsKQotCQkJICAoaWYgcmVzdWx0ICdwYXNzICdmYWlsKSkpKQotCi0oZGVmaW5lICh0 ZXN0LXJ1bm5lci10ZXN0LW5hbWUgcnVubmVyKQotICAodGVzdC1yZXN1bHQtcmVmIHJ1bm5l ciAndGVzdC1uYW1lICIiKSkKLQotKGRlZmluZS1zeW50YXggJXRlc3QtY29tcDJib2R5Ci0g IChzeW50YXgtcnVsZXMgKCkKLQkJKCgldGVzdC1jb21wMmJvZHkgciBjb21wIGV4cGVjdGVk IGV4cHIpCi0JCSAobGV0ICgpCi0JCSAgIChpZiAoJXRlc3Qtb24tdGVzdC1iZWdpbiByKQot CQkgICAgICAgKGxldCAoKGV4cCBleHBlY3RlZCkpCi0JCQkgKHRlc3QtcmVzdWx0LXNldCEg ciAnZXhwZWN0ZWQtdmFsdWUgZXhwKQotCQkJIChsZXQgKChyZXMgKCV0ZXN0LWV2YWx1YXRl LXdpdGgtY2F0Y2ggZXhwcikpKQotCQkJICAgKHRlc3QtcmVzdWx0LXNldCEgciAnYWN0dWFs LXZhbHVlIHJlcykKLQkJCSAgICgldGVzdC1vbi10ZXN0LWVuZCByIChjb21wIGV4cCByZXMp KSkpKQotCQkgICAoJXRlc3QtcmVwb3J0LXJlc3VsdCkpKSkpCi0KLShkZWZpbmUgKCV0ZXN0 LWFwcHJveGltYXRlPSBlcnJvcikKLSAgKGxhbWJkYSAodmFsdWUgZXhwZWN0ZWQpCi0gICAg KGxldCAoKHJ2YWwgKHJlYWwtcGFydCB2YWx1ZSkpCi0gICAgICAgICAgKGl2YWwgKGltYWct cGFydCB2YWx1ZSkpCi0gICAgICAgICAgKHJleHAgKHJlYWwtcGFydCBleHBlY3RlZCkpCi0g ICAgICAgICAgKGlleHAgKGltYWctcGFydCBleHBlY3RlZCkpKQotICAgICAgKGFuZCAoPj0g cnZhbCAoLSByZXhwIGVycm9yKSkKLSAgICAgICAgICAgKD49IGl2YWwgKC0gaWV4cCBlcnJv cikpCi0gICAgICAgICAgICg8PSBydmFsICgrIHJleHAgZXJyb3IpKQotICAgICAgICAgICAo PD0gaXZhbCAoKyBpZXhwIGVycm9yKSkpKSkpCi0KLShkZWZpbmUtc3ludGF4ICV0ZXN0LWNv bXAxYm9keQotICAoc3ludGF4LXJ1bGVzICgpCi0gICAgKCgldGVzdC1jb21wMWJvZHkgciBl eHByKQotICAgICAobGV0ICgpCi0gICAgICAgKGlmICgldGVzdC1vbi10ZXN0LWJlZ2luIHIp Ci0JICAgKGxldCAoKQotCSAgICAgKGxldCAoKHJlcyAoJXRlc3QtZXZhbHVhdGUtd2l0aC1j YXRjaCBleHByKSkpCi0JICAgICAgICh0ZXN0LXJlc3VsdC1zZXQhIHIgJ2FjdHVhbC12YWx1 ZSByZXMpCi0JICAgICAgICgldGVzdC1vbi10ZXN0LWVuZCByIHJlcykpKSkKLSAgICAgICAo JXRlc3QtcmVwb3J0LXJlc3VsdCkpKSkpCi0KLShjb25kLWV4cGFuZAotICgob3Iga2F3YSBt enNjaGVtZSBndWlsZS0yKQotICA7OyBTaG91bGQgYmUgbWFkZSB0byB3b3JrIGZvciBhbnkg U2NoZW1lIHdpdGggc3ludGF4LWNhc2UKLSAgOzsgSG93ZXZlciwgSSBoYXZlbid0IGdvdHRl biB0aGUgcXVvdGluZyB3b3JraW5nLiAgRklYTUUuCi0gIChkZWZpbmUtc3ludGF4IHRlc3Qt ZW5kCi0gICAgKGxhbWJkYSAoeCkKLSAgICAgIChzeW50YXgtY2FzZSAobGlzdCB4IChsaXN0 IChzeW50YXggcXVvdGUpICgldGVzdC1zb3VyY2UtbGluZTIgeCkpKSAoKQotCSgoKG1hYyBz dWl0ZS1uYW1lKSBsaW5lKQotCSAoc3ludGF4Ci0JICAoJXRlc3QtZW5kIHN1aXRlLW5hbWUg bGluZSkpKQotCSgoKG1hYykgbGluZSkKLQkgKHN5bnRheAotCSAgKCV0ZXN0LWVuZCAjZiBs aW5lKSkpKSkpCi0gIChkZWZpbmUtc3ludGF4IHRlc3QtYXNzZXJ0Ci0gICAgKGxhbWJkYSAo eCkKLSAgICAgIChzeW50YXgtY2FzZSAobGlzdCB4IChsaXN0IChzeW50YXggcXVvdGUpICgl dGVzdC1zb3VyY2UtbGluZTIgeCkpKSAoKQotCSgoKG1hYyB0bmFtZSBleHByKSBsaW5lKQot CSAoc3ludGF4Ci0JICAobGV0KiAoKHIgKHRlc3QtcnVubmVyLWdldCkpCi0JCSAobmFtZSB0 bmFtZSkpCi0JICAgICh0ZXN0LXJlc3VsdC1hbGlzdCEgciAoY29ucyAoY29ucyAndGVzdC1u YW1lIHRuYW1lKSBsaW5lKSkKLQkgICAgKCV0ZXN0LWNvbXAxYm9keSByIGV4cHIpKSkpCi0J KCgobWFjIGV4cHIpIGxpbmUpCi0JIChzeW50YXgKLQkgIChsZXQqICgociAodGVzdC1ydW5u ZXItZ2V0KSkpCi0JICAgICh0ZXN0LXJlc3VsdC1hbGlzdCEgciBsaW5lKQotCSAgICAoJXRl c3QtY29tcDFib2R5IHIgZXhwcikpKSkpKSkKLSAgKGRlZmluZSAoJXRlc3QtY29tcDIgY29t cCB4KQotICAgIChzeW50YXgtY2FzZSAobGlzdCB4IChsaXN0IChzeW50YXggcXVvdGUpICgl dGVzdC1zb3VyY2UtbGluZTIgeCkpIGNvbXApICgpCi0gICAgICAoKChtYWMgdG5hbWUgZXhw ZWN0ZWQgZXhwcikgbGluZSBjb21wKQotICAgICAgIChzeW50YXgKLQkobGV0KiAoKHIgKHRl c3QtcnVubmVyLWdldCkpCi0JICAgICAgIChuYW1lIHRuYW1lKSkKLQkgICh0ZXN0LXJlc3Vs dC1hbGlzdCEgciAoY29ucyAoY29ucyAndGVzdC1uYW1lIHRuYW1lKSBsaW5lKSkKLQkgICgl dGVzdC1jb21wMmJvZHkgciBjb21wIGV4cGVjdGVkIGV4cHIpKSkpCi0gICAgICAoKChtYWMg ZXhwZWN0ZWQgZXhwcikgbGluZSBjb21wKQotICAgICAgIChzeW50YXgKLQkobGV0KiAoKHIg KHRlc3QtcnVubmVyLWdldCkpKQotCSAgKHRlc3QtcmVzdWx0LWFsaXN0ISByIGxpbmUpCi0J ICAoJXRlc3QtY29tcDJib2R5IHIgY29tcCBleHBlY3RlZCBleHByKSkpKSkpCi0gIChkZWZp bmUtc3ludGF4IHRlc3QtZXF2Ci0gICAgKGxhbWJkYSAoeCkgKCV0ZXN0LWNvbXAyIChzeW50 YXggZXF2PykgeCkpKQotICAoZGVmaW5lLXN5bnRheCB0ZXN0LWVxCi0gICAgKGxhbWJkYSAo eCkgKCV0ZXN0LWNvbXAyIChzeW50YXggZXE/KSB4KSkpCi0gIChkZWZpbmUtc3ludGF4IHRl c3QtZXF1YWwKLSAgICAobGFtYmRhICh4KSAoJXRlc3QtY29tcDIgKHN5bnRheCBlcXVhbD8p IHgpKSkKLSAgKGRlZmluZS1zeW50YXggdGVzdC1hcHByb3hpbWF0ZSA7OyBGSVhNRSAtIG5l ZWRlZCBmb3Igbm9uLUthd2EKLSAgICAobGFtYmRhICh4KQotICAgICAgKHN5bnRheC1jYXNl IChsaXN0IHggKGxpc3QgKHN5bnRheCBxdW90ZSkgKCV0ZXN0LXNvdXJjZS1saW5lMiB4KSkp ICgpCi0gICAgICAoKChtYWMgdG5hbWUgZXhwZWN0ZWQgZXhwciBlcnJvcikgbGluZSkKLSAg ICAgICAoc3ludGF4Ci0JKGxldCogKChyICh0ZXN0LXJ1bm5lci1nZXQpKQotCSAgICAgICAo bmFtZSB0bmFtZSkpCi0JICAodGVzdC1yZXN1bHQtYWxpc3QhIHIgKGNvbnMgKGNvbnMgJ3Rl c3QtbmFtZSB0bmFtZSkgbGluZSkpCi0JICAoJXRlc3QtY29tcDJib2R5IHIgKCV0ZXN0LWFw cHJveGltYXRlPSBlcnJvcikgZXhwZWN0ZWQgZXhwcikpKSkKLSAgICAgICgoKG1hYyBleHBl Y3RlZCBleHByIGVycm9yKSBsaW5lKQotICAgICAgIChzeW50YXgKLQkobGV0KiAoKHIgKHRl c3QtcnVubmVyLWdldCkpKQotCSAgKHRlc3QtcmVzdWx0LWFsaXN0ISByIGxpbmUpCi0JICAo JXRlc3QtY29tcDJib2R5IHIgKCV0ZXN0LWFwcHJveGltYXRlPSBlcnJvcikgZXhwZWN0ZWQg ZXhwcikpKSkpKSkpCi0gKGVsc2UKLSAgKGRlZmluZS1zeW50YXggdGVzdC1lbmQKLSAgICAo c3ludGF4LXJ1bGVzICgpCi0gICAgICAoKHRlc3QtZW5kKQotICAgICAgICgldGVzdC1lbmQg I2YgJygpKSkKLSAgICAgICgodGVzdC1lbmQgc3VpdGUtbmFtZSkKLSAgICAgICAoJXRlc3Qt ZW5kIHN1aXRlLW5hbWUgJygpKSkpKQotICAoZGVmaW5lLXN5bnRheCB0ZXN0LWFzc2VydAot ICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgodGVzdC1hc3NlcnQgdG5hbWUgdGVzdC1l eHByZXNzaW9uKQotICAgICAgIChsZXQqICgociAodGVzdC1ydW5uZXItZ2V0KSkKLQkgICAg ICAobmFtZSB0bmFtZSkpCi0JICh0ZXN0LXJlc3VsdC1hbGlzdCEgciAnKCh0ZXN0LW5hbWUg LiB0bmFtZSkpKQotCSAoJXRlc3QtY29tcDFib2R5IHIgdGVzdC1leHByZXNzaW9uKSkpCi0g ICAgICAoKHRlc3QtYXNzZXJ0IHRlc3QtZXhwcmVzc2lvbikKLSAgICAgICAobGV0KiAoKHIg KHRlc3QtcnVubmVyLWdldCkpKQotCSAodGVzdC1yZXN1bHQtYWxpc3QhIHIgJygpKQotCSAo JXRlc3QtY29tcDFib2R5IHIgdGVzdC1leHByZXNzaW9uKSkpKSkKLSAgKGRlZmluZS1zeW50 YXggJXRlc3QtY29tcDIKLSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0ZXN0LWNv bXAyIGNvbXAgdG5hbWUgZXhwZWN0ZWQgZXhwcikKLSAgICAgICAobGV0KiAoKHIgKHRlc3Qt cnVubmVyLWdldCkpCi0JICAgICAgKG5hbWUgdG5hbWUpKQotCSAodGVzdC1yZXN1bHQtYWxp c3QhIHIgKGxpc3QgKGNvbnMgJ3Rlc3QtbmFtZSB0bmFtZSkpKQotCSAoJXRlc3QtY29tcDJi b2R5IHIgY29tcCBleHBlY3RlZCBleHByKSkpCi0gICAgICAoKCV0ZXN0LWNvbXAyIGNvbXAg ZXhwZWN0ZWQgZXhwcikKLSAgICAgICAobGV0KiAoKHIgKHRlc3QtcnVubmVyLWdldCkpKQot CSAodGVzdC1yZXN1bHQtYWxpc3QhIHIgJygpKQotCSAoJXRlc3QtY29tcDJib2R5IHIgY29t cCBleHBlY3RlZCBleHByKSkpKSkKLSAgKGRlZmluZS1zeW50YXggdGVzdC1lcXVhbAotICAg IChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgodGVzdC1lcXVhbCAuIHJlc3QpCi0gICAgICAg KCV0ZXN0LWNvbXAyIGVxdWFsPyAuIHJlc3QpKSkpCi0gIChkZWZpbmUtc3ludGF4IHRlc3Qt ZXF2Ci0gICAgKHN5bnRheC1ydWxlcyAoKQotICAgICAgKCh0ZXN0LWVxdiAuIHJlc3QpCi0g ICAgICAgKCV0ZXN0LWNvbXAyIGVxdj8gLiByZXN0KSkpKQotICAoZGVmaW5lLXN5bnRheCB0 ZXN0LWVxCi0gICAgKHN5bnRheC1ydWxlcyAoKQotICAgICAgKCh0ZXN0LWVxIC4gcmVzdCkK LSAgICAgICAoJXRlc3QtY29tcDIgZXE/IC4gcmVzdCkpKSkKLSAgKGRlZmluZS1zeW50YXgg dGVzdC1hcHByb3hpbWF0ZQotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgodGVzdC1h cHByb3hpbWF0ZSB0bmFtZSBleHBlY3RlZCBleHByIGVycm9yKQotICAgICAgICgldGVzdC1j b21wMiAoJXRlc3QtYXBwcm94aW1hdGU9IGVycm9yKSB0bmFtZSBleHBlY3RlZCBleHByKSkK LSAgICAgICgodGVzdC1hcHByb3hpbWF0ZSBleHBlY3RlZCBleHByIGVycm9yKQotICAgICAg ICgldGVzdC1jb21wMiAoJXRlc3QtYXBwcm94aW1hdGU9IGVycm9yKSBleHBlY3RlZCBleHBy KSkpKSkpCi0KLShjb25kLWV4cGFuZAotIChndWlsZQotICAoZGVmaW5lLXN5bnRheCAldGVz dC1lcnJvcgotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgoJXRlc3QtZXJyb3IgciBl dHlwZSBleHByKQotICAgICAgIChjb25kICgoJXRlc3Qtb24tdGVzdC1iZWdpbiByKQotICAg ICAgICAgICAgICAobGV0ICgoZXQgZXR5cGUpKQotICAgICAgICAgICAgICAgICh0ZXN0LXJl c3VsdC1zZXQhIHIgJ2V4cGVjdGVkLWVycm9yIGV0KQotICAgICAgICAgICAgICAgICgldGVz dC1vbi10ZXN0LWVuZCByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj YXRjaCAjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LXJlc3Vs dC1zZXQhIHIgJ2FjdHVhbC12YWx1ZSBleHByKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgI2YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxhbWJkYSAoa2V5IC4gYXJncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IFRPRE86IGRlY2lkZSBob3cgdG8gc3BlY2lmeSBleHBlY3RlZAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZXJyb3IgdHlwZXMgZm9y IEd1aWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3Qt cmVzdWx0LXNldCEgciAnYWN0dWFsLWVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyBrZXkgYXJncykpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdCkpKQotICAgICAgICAgICAg ICAgICgldGVzdC1yZXBvcnQtcmVzdWx0KSkpKSkpKSkKLSAobXpzY2hlbWUKLSAgKGRlZmlu ZS1zeW50YXggJXRlc3QtZXJyb3IKLSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0 ZXN0LWVycm9yIHIgZXR5cGUgZXhwcikKLSAgICAgICAoJXRlc3QtY29tcDFib2R5IHIgKHdp dGgtaGFuZGxlcnMgKCgobGFtYmRhIChoKSAjdCkgKGxhbWJkYSAoaCkgI3QpKSkKLQkJCQkJ IChsZXQgKCkKLQkJCQkJICAgKHRlc3QtcmVzdWx0LXNldCEgciAnYWN0dWFsLXZhbHVlIGV4 cHIpCi0JCQkJCSAgICNmKSkpKSkpKQotIChjaGlja2VuCi0gIChkZWZpbmUtc3ludGF4ICV0 ZXN0LWVycm9yCi0gICAgKHN5bnRheC1ydWxlcyAoKQotICAgICAgKCgldGVzdC1lcnJvciBy IGV0eXBlIGV4cHIpCi0gICAgICAgICgldGVzdC1jb21wMWJvZHkgciAoY29uZGl0aW9uLWNh c2UgZXhwciAoZXggKCkgI3QpKSkpKSkpCi0gKGthd2EKLSAgKGRlZmluZS1zeW50YXggJXRl c3QtZXJyb3IKLSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0ZXN0LWVycm9yIHIg I3QgZXhwcikKLSAgICAgICAoY29uZCAoKCV0ZXN0LW9uLXRlc3QtYmVnaW4gcikKLQkgICAg ICAodGVzdC1yZXN1bHQtc2V0ISByICdleHBlY3RlZC1lcnJvciAjdCkKLQkgICAgICAoJXRl c3Qtb24tdGVzdC1lbmQgcgotCQkJCSAodHJ5LWNhdGNoCi0JCQkJICAobGV0ICgpCi0JCQkJ ICAgICh0ZXN0LXJlc3VsdC1zZXQhIHIgJ2FjdHVhbC12YWx1ZSBleHByKQotCQkJCSAgICAj ZikKLQkJCQkgIChleCA8amF2YS5sYW5nLlRocm93YWJsZT4KLQkJCQkgICAgICAodGVzdC1y ZXN1bHQtc2V0ISByICdhY3R1YWwtZXJyb3IgZXgpCi0JCQkJICAgICAgI3QpKSkKLQkgICAg ICAoJXRlc3QtcmVwb3J0LXJlc3VsdCkpKSkKLSAgICAgICgoJXRlc3QtZXJyb3IgciBldHlw ZSBleHByKQotICAgICAgIChpZiAoJXRlc3Qtb24tdGVzdC1iZWdpbiByKQotCSAgIChsZXQg KChldCBldHlwZSkpCi0JICAgICAodGVzdC1yZXN1bHQtc2V0ISByICdleHBlY3RlZC1lcnJv ciBldCkKLQkgICAgICgldGVzdC1vbi10ZXN0LWVuZCByCi0JCQkJKHRyeS1jYXRjaAotCQkJ CSAobGV0ICgpCi0JCQkJICAgKHRlc3QtcmVzdWx0LXNldCEgciAnYWN0dWFsLXZhbHVlIGV4 cHIpCi0JCQkJICAgI2YpCi0JCQkJIChleCA8amF2YS5sYW5nLlRocm93YWJsZT4KLQkJCQkg ICAgICh0ZXN0LXJlc3VsdC1zZXQhIHIgJ2FjdHVhbC1lcnJvciBleCkKLQkJCQkgICAgIChj b25kICgoYW5kIChpbnN0YW5jZT8gZXQgPGdudS5ieXRlY29kZS5DbGFzc1R5cGU+KQotCQkJ CQkJIChnbnUuYnl0ZWNvZGUuQ2xhc3NUeXBlOmlzU3ViY2xhc3MgZXQgPGphdmEubGFuZy5U aHJvd2FibGU+KSkKLQkJCQkJICAgIChpbnN0YW5jZT8gZXggZXQpKQotCQkJCQkgICAoZWxz ZSAjdCkpKSkpCi0JICAgICAoJXRlc3QtcmVwb3J0LXJlc3VsdCkpKSkpKSkKLSAoKGFuZCBz cmZpLTM0IHNyZmktMzUpCi0gIChkZWZpbmUtc3ludGF4ICV0ZXN0LWVycm9yCi0gICAgKHN5 bnRheC1ydWxlcyAoKQotICAgICAgKCgldGVzdC1lcnJvciByIGV0eXBlIGV4cHIpCi0gICAg ICAgKCV0ZXN0LWNvbXAxYm9keSByIChndWFyZCAoZXggKChjb25kaXRpb24tdHlwZT8gZXR5 cGUpCi0JCSAgIChhbmQgKGNvbmRpdGlvbj8gZXgpIChjb25kaXRpb24taGFzLXR5cGU/IGV4 IGV0eXBlKSkpCi0JCSAgKChwcm9jZWR1cmU/IGV0eXBlKQotCQkgICAoZXR5cGUgZXgpKQot CQkgICgoZXF1YWw/IGV0eXBlICN0KQotCQkgICAjdCkKLQkJICAoZWxzZSAjdCkpCi0JICAg ICAgZXhwciAjZikpKSkpKQotIChzcmZpLTM0Ci0gIChkZWZpbmUtc3ludGF4ICV0ZXN0LWVy cm9yCi0gICAgKHN5bnRheC1ydWxlcyAoKQotICAgICAgKCgldGVzdC1lcnJvciByIGV0eXBl IGV4cHIpCi0gICAgICAgKCV0ZXN0LWNvbXAxYm9keSByIChndWFyZCAoZXggKGVsc2UgI3Qp KSBleHByICNmKSkpKSkpCi0gKGVsc2UKLSAgKGRlZmluZS1zeW50YXggJXRlc3QtZXJyb3IK LSAgICAoc3ludGF4LXJ1bGVzICgpCi0gICAgICAoKCV0ZXN0LWVycm9yIHIgZXR5cGUgZXhw cikKLSAgICAgICAoYmVnaW4KLQkgKCh0ZXN0LXJ1bm5lci1vbi10ZXN0LWJlZ2luIHIpIHIp Ci0JICh0ZXN0LXJlc3VsdC1zZXQhIHIgJ3Jlc3VsdC1raW5kICdza2lwKQotCSAoJXRlc3Qt cmVwb3J0LXJlc3VsdCkpKSkpKSkKLQotKGNvbmQtZXhwYW5kCi0gKChvciBrYXdhIG16c2No ZW1lIGd1aWxlLTIpCi0KLSAgKGRlZmluZS1zeW50YXggdGVzdC1lcnJvcgotICAgIChsYW1i ZGEgKHgpCi0gICAgICAoc3ludGF4LWNhc2UgKGxpc3QgeCAobGlzdCAoc3ludGF4IHF1b3Rl KSAoJXRlc3Qtc291cmNlLWxpbmUyIHgpKSkgKCkKLQkoKChtYWMgdG5hbWUgZXR5cGUgZXhw cikgbGluZSkKLQkgKHN5bnRheAotCSAgKGxldCogKChyICh0ZXN0LXJ1bm5lci1nZXQpKQot CQkgKG5hbWUgdG5hbWUpKQotCSAgICAodGVzdC1yZXN1bHQtYWxpc3QhIHIgKGNvbnMgKGNv bnMgJ3Rlc3QtbmFtZSB0bmFtZSkgbGluZSkpCi0JICAgICgldGVzdC1lcnJvciByIGV0eXBl IGV4cHIpKSkpCi0JKCgobWFjIGV0eXBlIGV4cHIpIGxpbmUpCi0JIChzeW50YXgKLQkgIChs ZXQqICgociAodGVzdC1ydW5uZXItZ2V0KSkpCi0JICAgICh0ZXN0LXJlc3VsdC1hbGlzdCEg ciBsaW5lKQotCSAgICAoJXRlc3QtZXJyb3IgciBldHlwZSBleHByKSkpKQotCSgoKG1hYyBl eHByKSBsaW5lKQotCSAoc3ludGF4Ci0JICAobGV0KiAoKHIgKHRlc3QtcnVubmVyLWdldCkp KQotCSAgICAodGVzdC1yZXN1bHQtYWxpc3QhIHIgbGluZSkKLQkgICAgKCV0ZXN0LWVycm9y IHIgI3QgZXhwcikpKSkpKSkpCi0gKGVsc2UKLSAgKGRlZmluZS1zeW50YXggdGVzdC1lcnJv cgotICAgIChzeW50YXgtcnVsZXMgKCkKLSAgICAgICgodGVzdC1lcnJvciBuYW1lIGV0eXBl IGV4cHIpCi0gICAgICAgKGxldCAoKHIgKHRlc3QtcnVubmVyLWdldCkpKQotICAgICAgICAg KHRlc3QtcmVzdWx0LWFsaXN0ISByIGAoKHRlc3QtbmFtZSAuICxuYW1lKSkpCi0gICAgICAg ICAoJXRlc3QtZXJyb3IgciBldHlwZSBleHByKSkpCi0gICAgICAoKHRlc3QtZXJyb3IgZXR5 cGUgZXhwcikKLSAgICAgICAobGV0ICgociAodGVzdC1ydW5uZXItZ2V0KSkpCi0gICAgICAg ICAodGVzdC1yZXN1bHQtYWxpc3QhIHIgJygpKQotICAgICAgICAgKCV0ZXN0LWVycm9yIHIg ZXR5cGUgZXhwcikpKQotICAgICAgKCh0ZXN0LWVycm9yIGV4cHIpCi0gICAgICAgKGxldCAo KHIgKHRlc3QtcnVubmVyLWdldCkpKQotICAgICAgICAgKHRlc3QtcmVzdWx0LWFsaXN0ISBy ICcoKSkKLSAgICAgICAgICgldGVzdC1lcnJvciByICN0IGV4cHIpKSkpKSkpCi0KLShkZWZp bmUgKHRlc3QtYXBwbHkgZmlyc3QgLiByZXN0KQotICAoaWYgKHRlc3QtcnVubmVyPyBmaXJz dCkKLSAgICAgICh0ZXN0LXdpdGgtcnVubmVyIGZpcnN0IChhcHBseSB0ZXN0LWFwcGx5IHJl c3QpKQotICAgICAgKGxldCAoKHIgKHRlc3QtcnVubmVyLWN1cnJlbnQpKSkKLQkoaWYgcgot CSAgICAobGV0ICgocnVuLWxpc3QgKCV0ZXN0LXJ1bm5lci1ydW4tbGlzdCByKSkpCi0JICAg ICAgKGNvbmQgKChudWxsPyByZXN0KQotCQkgICAgICgldGVzdC1ydW5uZXItcnVuLWxpc3Qh IHIgKHJldmVyc2UgcnVuLWxpc3QpKQotCQkgICAgIChmaXJzdCkpIDs7IGFjdHVhbGx5IGFw cGx5IHByb2NlZHVyZSB0aHVuawotCQkgICAgKGVsc2UKLQkJICAgICAoJXRlc3QtcnVubmVy LXJ1bi1saXN0IQotCQkgICAgICByCi0JCSAgICAgIChpZiAoZXE/IHJ1bi1saXN0ICN0KSAo bGlzdCBmaXJzdCkgKGNvbnMgZmlyc3QgcnVuLWxpc3QpKSkKLQkJICAgICAoYXBwbHkgdGVz dC1hcHBseSByZXN0KQotCQkgICAgICgldGVzdC1ydW5uZXItcnVuLWxpc3QhIHIgcnVuLWxp c3QpKSkpCi0JICAgIChsZXQgKChyICh0ZXN0LXJ1bm5lci1jcmVhdGUpKSkKLQkgICAgICAo dGVzdC13aXRoLXJ1bm5lciByIChhcHBseSB0ZXN0LWFwcGx5IGZpcnN0IHJlc3QpKQotCSAg ICAgICgodGVzdC1ydW5uZXItb24tZmluYWwgcikgcikpKSkpKQotCi0oZGVmaW5lLXN5bnRh eCB0ZXN0LXdpdGgtcnVubmVyCi0gIChzeW50YXgtcnVsZXMgKCkKLSAgICAoKHRlc3Qtd2l0 aC1ydW5uZXIgcnVubmVyIGZvcm0gLi4uKQotICAgICAobGV0ICgoc2F2ZWQtcnVubmVyICh0 ZXN0LXJ1bm5lci1jdXJyZW50KSkpCi0gICAgICAgKGR5bmFtaWMtd2luZAotICAgICAgICAg ICAobGFtYmRhICgpICh0ZXN0LXJ1bm5lci1jdXJyZW50IHJ1bm5lcikpCi0gICAgICAgICAg IChsYW1iZGEgKCkgZm9ybSAuLi4pCi0gICAgICAgICAgIChsYW1iZGEgKCkgKHRlc3QtcnVu bmVyLWN1cnJlbnQgc2F2ZWQtcnVubmVyKSkpKSkpKQotCi07OzsgUHJlZGljYXRlcwotCi0o ZGVmaW5lICgldGVzdC1tYXRjaC1udGggbiBjb3VudCkKLSAgKGxldCAoKGkgMCkpCi0gICAg KGxhbWJkYSAocnVubmVyKQotICAgICAgKHNldCEgaSAoKyBpIDEpKQotICAgICAgKGFuZCAo Pj0gaSBuKSAoPCBpICgrIG4gY291bnQpKSkpKSkKLQotKGRlZmluZS1zeW50YXggdGVzdC1t YXRjaC1udGgKLSAgKHN5bnRheC1ydWxlcyAoKQotICAgICgodGVzdC1tYXRjaC1udGggbikK LSAgICAgKHRlc3QtbWF0Y2gtbnRoIG4gMSkpCi0gICAgKCh0ZXN0LW1hdGNoLW50aCBuIGNv dW50KQotICAgICAoJXRlc3QtbWF0Y2gtbnRoIG4gY291bnQpKSkpCi0KLShkZWZpbmUgKCV0 ZXN0LW1hdGNoLWFsbCAuIHByZWQtbGlzdCkKLSAgKGxhbWJkYSAocnVubmVyKQotICAgIChs ZXQgKChyZXN1bHQgI3QpKQotICAgICAgKGxldCBsb29wICgobCBwcmVkLWxpc3QpKQotCShp ZiAobnVsbD8gbCkKLQkgICAgcmVzdWx0Ci0JICAgIChiZWdpbgotCSAgICAgIChpZiAobm90 ICgoY2FyIGwpIHJ1bm5lcikpCi0JCSAgKHNldCEgcmVzdWx0ICNmKSkKLQkgICAgICAobG9v cCAoY2RyIGwpKSkpKSkpKQotICAKLShkZWZpbmUtc3ludGF4IHRlc3QtbWF0Y2gtYWxsCi0g IChzeW50YXgtcnVsZXMgKCkKLSAgICAoKHRlc3QtbWF0Y2gtYWxsIHByZWQgLi4uKQotICAg ICAoJXRlc3QtbWF0Y2gtYWxsICgldGVzdC1hcy1zcGVjaWZpZXIgcHJlZCkgLi4uKSkpKQot Ci0oZGVmaW5lICgldGVzdC1tYXRjaC1hbnkgLiBwcmVkLWxpc3QpCi0gIChsYW1iZGEgKHJ1 bm5lcikKLSAgICAobGV0ICgocmVzdWx0ICNmKSkKLSAgICAgIChsZXQgbG9vcCAoKGwgcHJl ZC1saXN0KSkKLQkoaWYgKG51bGw/IGwpCi0JICAgIHJlc3VsdAotCSAgICAoYmVnaW4KLQkg ICAgICAoaWYgKChjYXIgbCkgcnVubmVyKQotCQkgIChzZXQhIHJlc3VsdCAjdCkpCi0JICAg ICAgKGxvb3AgKGNkciBsKSkpKSkpKSkKLSAgCi0oZGVmaW5lLXN5bnRheCB0ZXN0LW1hdGNo LWFueQotICAoc3ludGF4LXJ1bGVzICgpCi0gICAgKCh0ZXN0LW1hdGNoLWFueSBwcmVkIC4u LikKLSAgICAgKCV0ZXN0LW1hdGNoLWFueSAoJXRlc3QtYXMtc3BlY2lmaWVyIHByZWQpIC4u LikpKSkKLQotOzsgQ29lcmNlIHRvIGEgcHJlZGljYXRlIGZ1bmN0aW9uOgotKGRlZmluZSAo JXRlc3QtYXMtc3BlY2lmaWVyIHNwZWNpZmllcikKLSAgKGNvbmQgKChwcm9jZWR1cmU/IHNw ZWNpZmllcikgc3BlY2lmaWVyKQotCSgoaW50ZWdlcj8gc3BlY2lmaWVyKSAodGVzdC1tYXRj aC1udGggMSBzcGVjaWZpZXIpKQotCSgoc3RyaW5nPyBzcGVjaWZpZXIpICh0ZXN0LW1hdGNo LW5hbWUgc3BlY2lmaWVyKSkKLQkoZWxzZQotCSAoZXJyb3IgIm5vdCBhIHZhbGlkIHRlc3Qg c3BlY2lmaWVyIikpKSkKLQotKGRlZmluZS1zeW50YXggdGVzdC1za2lwCi0gIChzeW50YXgt cnVsZXMgKCkKLSAgICAoKHRlc3Qtc2tpcCBwcmVkIC4uLikKLSAgICAgKGxldCAoKHJ1bm5l ciAodGVzdC1ydW5uZXItZ2V0KSkpCi0gICAgICAgKCV0ZXN0LXJ1bm5lci1za2lwLWxpc3Qh IHJ1bm5lcgotCQkJCSAgKGNvbnMgKHRlc3QtbWF0Y2gtYWxsICgldGVzdC1hcy1zcGVjaWZp ZXIgcHJlZCkgIC4uLikKLQkJCQkJKCV0ZXN0LXJ1bm5lci1za2lwLWxpc3QgcnVubmVyKSkp KSkpKQotCi0oZGVmaW5lLXN5bnRheCB0ZXN0LWV4cGVjdC1mYWlsCi0gIChzeW50YXgtcnVs ZXMgKCkKLSAgICAoKHRlc3QtZXhwZWN0LWZhaWwgcHJlZCAuLi4pCi0gICAgIChsZXQgKChy dW5uZXIgKHRlc3QtcnVubmVyLWdldCkpKQotICAgICAgICgldGVzdC1ydW5uZXItZmFpbC1s aXN0ISBydW5uZXIKLQkJCQkgIChjb25zICh0ZXN0LW1hdGNoLWFsbCAoJXRlc3QtYXMtc3Bl Y2lmaWVyIHByZWQpICAuLi4pCi0JCQkJCSgldGVzdC1ydW5uZXItZmFpbC1saXN0IHJ1bm5l cikpKSkpKSkKLQotKGRlZmluZSAodGVzdC1tYXRjaC1uYW1lIG5hbWUpCi0gIChsYW1iZGEg KHJ1bm5lcikKLSAgICAoZXF1YWw/IG5hbWUgKHRlc3QtcnVubmVyLXRlc3QtbmFtZSBydW5u ZXIpKSkpCi0KLShkZWZpbmUgKHRlc3QtcmVhZC1ldmFsLXN0cmluZyBzdHJpbmcpCi0gIChs ZXQqICgocG9ydCAob3Blbi1pbnB1dC1zdHJpbmcgc3RyaW5nKSkKLQkgKGZvcm0gKHJlYWQg cG9ydCkpKQotICAgIChpZiAoZW9mLW9iamVjdD8gKHJlYWQtY2hhciBwb3J0KSkKLQkoY29u ZC1leHBhbmQKLQkgKGd1aWxlIChldmFsIGZvcm0gKGN1cnJlbnQtbW9kdWxlKSkpCi0JIChl bHNlIChldmFsIGZvcm0pKSkKLQkoY29uZC1leHBhbmQKLQkgKHNyZmktMjMgKGVycm9yICIo bm90IGF0IGVvZikiKSkKLQkgKGVsc2UgImVycm9yIikpKSkpCi0KLS0gCjIuMzAuMgoK --------------84F808C0144A42A54748D3E6 Content-Type: text/plain; charset=UTF-8; name="0002-Augment-SRFI-64-test-suite.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Augment-SRFI-64-test-suite.patch" RnJvbSA1ZjdiMWUzNzkwZjM5NDFhMTIzMjZhZWMxMGY5MGNhNTVmZTBlMWMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYXlsYW4gS2FtbWVyIDx0YXlsYW4ua2FtbWVyQGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAxMCBNYXkgMjAyMSAxNToyNjoxMCArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMi8yXSBBdWdtZW50IFNSRkktNjQgdGVzdC1zdWl0ZS4KCiogdGVzdC1zdWl0 ZS90ZXN0cy9zcmZpLTY0LXRlc3Quc2NtICgiMS4zLiB0ZXN0LWFwcHJveGltYXRlIik6IE5l dwogIHNlY3Rpb24uCigiMi4xLjQuIEZBSUwgd2l0aCBhIHRlc3QgbmFtZSBhbmQgZXJyb3Ig dHlwZSIpOgooIjIuMS41LiBQQVNTIHdpdGggYW4gZXJyb3IgdHlwZSBidXQgbm8gbmFtZSIp OgooIjIuMS42LiBGQUlMIHdpdGggYW4gZXJyb3IgdHlwZSBidXQgbm8gbmFtZSIpOiBOZXcg dGVzdHMuCi0tLQogdGVzdC1zdWl0ZS90ZXN0cy9zcmZpLTY0LXRlc3Quc2NtIHwgMzcgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM3IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5z Y20gYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5zY20KaW5kZXggY2EwYjU4OTQz Li5iN2Y2ZDI5MzQgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS02NC10ZXN0 LnNjbQorKysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktNjQtdGVzdC5zY20KQEAgLTE2Nyw2 ICsxNjcsMTkgQEAKIAogKHRlc3QtZW5kKTsxLjIKIAorKHRlc3QtYmVnaW4gIjEuMy4gdGVz dC1hcHByb3hpbWF0ZSIpCisKKyh0ZXN0LWVxdWFsCisgIjEuMy4xLiBTaW1wbGUgbnVtZXJp Y2FsIGFwcHJveGltYXRpb24iCisgJygoImEiICJjIikgKCJiIikgKCkgKCkgKCkgKDIgMSAw IDAgMCkpCisgKHRyaXYtcnVubmVyCisgIChsYW1iZGEgKCkKKyAgICAodGVzdC1hcHByb3hp bWF0ZSAiYSIgKG1lYW4gMyA1KSA0ICAgMC4wMDEpCisgICAgKHRlc3QtYXBwcm94aW1hdGUg ImIiIChtZWFuIDMgNSkgNC41IDAuMDAxKQorICAgICh0ZXN0LWFwcHJveGltYXRlICJjIiAo bWVhbiAzIDUpIDQuMCAwLjAwMSkpKSkKKworKHRlc3QtZW5kKTsxLjMKKwogKHRlc3QtZW5k ICIxLiBTaW1wbGUgdGVzdC1jYXNlcyIpCiAKIDs7OwpAQCAtMjAyLDYgKzIxNSwzMCBAQAog ICAgIDs7IFBBU1MKICAgICAodGVzdC1lcnJvciAiYSIgI3QgKHZlY3Rvci1yZWYgJyMoMSAy KSA5KSkpKSkKIAorKHRlc3QtZXF1YWwKKyAiMi4xLjQuIEZBSUwgd2l0aCBhIHRlc3QgbmFt ZSBhbmQgZXJyb3IgdHlwZSIKKyAnKCgpICgiYSIpICgpICgpICgpICgwIDEgMCAwIDApKQor ICh0cml2LXJ1bm5lcgorICAobGFtYmRhICgpCisgICAgOzsgRkFJTAorICAgICh0ZXN0LWVy cm9yICJhIiAjdCAodmVjdG9yLXJlZiAnIygxIDIpIDApKSkpKQorCisodGVzdC1lcXVhbAor ICIyLjEuNS4gUEFTUyB3aXRoIGFuIGVycm9yIHR5cGUgYnV0IG5vIG5hbWUiCisgJygoIiIp ICgpICgpICgpICgpICgxIDAgMCAwIDApKQorICh0cml2LXJ1bm5lcgorICAobGFtYmRhICgp CisgICAgOzsgUEFTUworICAgICh0ZXN0LWVycm9yICN0ICh2ZWN0b3ItcmVmICcjKDEgMikg OSkpKSkpCisKKyh0ZXN0LWVxdWFsCisgIjIuMS42LiBGQUlMIHdpdGggYW4gZXJyb3IgdHlw ZSBidXQgbm8gbmFtZSIKKyAnKCgpICgiIikgKCkgKCkgKCkgKDAgMSAwIDAgMCkpCisgKHRy aXYtcnVubmVyCisgIChsYW1iZGEgKCkKKyAgICA7OyBGQUlMCisgICAgKHRlc3QtZXJyb3Ig I3QgKHZlY3Rvci1yZWYgJyMoMSAyKSAwKSkpKSkKKwogKHRlc3QtZW5kICIyLjEuIHRlc3Qt ZXJyb3IiKQogCiAodGVzdC1lbmQgIjIuIFRlc3RzIGZvciBjYXRjaGluZyBlcnJvcnMiKQot LSAKMi4zMC4yCgo= --------------84F808C0144A42A54748D3E6--