From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Freja Nordsiek Newsgroups: gmane.lisp.guile.devel Subject: Re: On adding Kawa/Chibi R7RS test-suite to the r7rs-wip branch Date: Mon, 19 Jun 2017 08:41:24 +0200 Message-ID: References: <87efuga6qs.fsf@netris.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1146e4b08b1b2005524a6c94" X-Trace: blaine.gmane.org 1497854524 11487 195.159.176.226 (19 Jun 2017 06:42:04 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 19 Jun 2017 06:42:04 +0000 (UTC) Cc: guile-devel@gnu.org To: Mark H Weaver Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Jun 19 08:41:54 2017 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dMqNl-0002Mk-E4 for guile-devel@m.gmane.org; Mon, 19 Jun 2017 08:41:54 +0200 Original-Received: from localhost ([::1]:40837 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dMqNq-0007Ru-Bw for guile-devel@m.gmane.org; Mon, 19 Jun 2017 02:41:58 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47312) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dMqNV-0007Re-SI for guile-devel@gnu.org; Mon, 19 Jun 2017 02:41:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dMqNL-0007vf-BL for guile-devel@gnu.org; Mon, 19 Jun 2017 02:41:37 -0400 Original-Received: from mail-pf0-x234.google.com ([2607:f8b0:400e:c00::234]:35871) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dMqNK-0007vZ-My for guile-devel@gnu.org; Mon, 19 Jun 2017 02:41:27 -0400 Original-Received: by mail-pf0-x234.google.com with SMTP id x63so49600112pff.3 for ; Sun, 18 Jun 2017 23:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=YTpL83yzfn+/6BF28ak3mcM2/p7TXVf4lOF6W0Ss0PY=; b=UWU9AmYWMjwKf9KaIpGCmV42PUZu4u4YufdsN001DnxGfzSRb6FL3cqb1S/sdRMkHT NaORbpPWb+8C4G3x1CvvGi+qPPTKhzhQzUJ5+GR5y9QvChgck5YCAYg6y4sywP/BhLnI f/grYjliD0D+erinA9H+s9xPoz8U4NBO1nBF8bIUZ3K8wbxIkFs9oReT5w7qh+HyrIYK Jr/BTDyigJX5eeuPMCC99ZISkYSWdYjuyg9aKRR7d6UvYinpDGK20URB6BYBeXjc3Y8B O4ezgMtISVfBQjiDBaR260AvCofSkE/4zqx8VXHIN8tdoERAl64wSA3GrSPiwWEjgZtT xoyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YTpL83yzfn+/6BF28ak3mcM2/p7TXVf4lOF6W0Ss0PY=; b=VX0UJE5K7yLye0yNbDILEuAwWjaib4VxewCbdiCPoqdIpz7BENRLEfyvBddAKlEVw0 XlZkysQq8DmnPXdYaCPENocTW6TmjXpxSRmvd8JGOHeigkmCgakzNOzwv2Posyksx4l+ I/8LtRnHc9Uc68g3M7Bp23u3yUVY+IawvLJNvKIw60wOlHKrRGq5BNtDndRlo3HTygV6 Rt89JndLjpjceeDPQufkF+ZU9Sdguh7H6pWLGblnoZuZsw0kidT43bUVp8EcYdkrdCc2 zAZ8TF8M8BYWyYya0OZVw6Y9HcBGsmrwQUCd68jjNhw8Iy5xxMP0kzrE7Z47TtW10EL8 oO2A== X-Gm-Message-State: AKS2vOzYr4epCOovPI+oVuAJiOPUknp5Xw+2pnUi/w0270f8FfiKU9y1 Xu7xZXTLynVDXsNXm83si1unwW+ymmtX1cM= X-Received: by 10.99.2.70 with SMTP id 67mr24861067pgc.61.1497854485650; Sun, 18 Jun 2017 23:41:25 -0700 (PDT) Original-Received: by 10.100.177.205 with HTTP; Sun, 18 Jun 2017 23:41:24 -0700 (PDT) In-Reply-To: <87efuga6qs.fsf@netris.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::234 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:19217 Archived-At: --001a1146e4b08b1b2005524a6c94 Content-Type: multipart/alternative; boundary="001a1146e4b08b1b1b05524a6c92" --001a1146e4b08b1b1b05524a6c92 Content-Type: text/plain; charset="UTF-8" Mark, It turned out to be pretty easy to add it as a standalone test file (patch is attached). Chibi's (chibi test) and (chibi term ansi) just had to be copy and pasted into the top of the file, a few things added at the top to import the modules and enable the right read and print options, and a few modifications applied and it runs. Note that I enabled the r7rs-bytevectors reader and print options in the patch I submitted last night ( https://lists.gnu.org/archive/html/guile-devel/2017-06/msg00035.html ). Also note that the (test-exit) command I added at the end is commented out so that this test failing due to some failed tests doesn't stop all the non-standalone tests from running. Two tests have to be disabled which cause the script to break when they are reached, which are (test-write-syntax "|\"|" '|\"|) and (let () (define 7 1) (let-syntax () (define x 2) #f) (test 1 x)) Overall, the test results are pretty good. They are, as printed by the test-suite at the end, 1110 out of 1145 (96.9%) tests passed in 1.3156378269195557 seconds. 32 failures (2.8%). 3 errors (0.3%). 15 out of 18 (83.3%) subgroups passed. Weak areas are Strings, Read Syntax, and Numeric Syntax. Freja Nordsiek On Mon, Jun 19, 2017 at 7:25 AM, Mark H Weaver wrote: > Hi Freja, > > Freja Nordsiek writes: > > > On Mark Weaver's suggestion, I looked up the Kawa and Chibi R7RS-small > > test suites. Kawa uses Chibi's test-suite, though it is wrapped in a > > bit of extra code at the top. Kawa's license is not likely to be a > > problem, as it is a MIT license ( > > https://www.gnu.org/software/kawa/Software-License.html ). But, > > Chibi's license is a modified BSD license ( > > http://synthcode.com/license.txt ), which is compatible with the GPL ( > > https://www.gnu.org/licenses/license-list.html#ModifiedBSD ). > > Sounds good, thanks for checking it! > > > So, we could realistically take the Chibi test-suite (possibly with > > the Kawa modifications) and incorporate it into the r7rs-wip > > branch. The only question is whether to incorporate them as is or to > > modify them to use the same unit testing code as the rest of the unit > > tests in the guile test suite. > > I would prefer to use Chibi's test suite with minimal changes. I > suppose that we will need to add some code at the top, and it is > possible that we'll need to make some other modifications. > > Thanks! > Mark > --001a1146e4b08b1b1b05524a6c92 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Mark,


It turned = out to be pretty easy to add it as a standalone test file (patch is attache= d). Chibi's (chibi test) and (chibi term ansi) just had to be copy and = pasted into the top of the file, a few things added at the top to import th= e modules and enable the right read and print options, and a few modificati= ons applied and it runs. Note that I enabled the r7rs-bytevectors reader an= d print options in the patch I submitted last night ( https://lists.g= nu.org/archive/html/guile-devel/2017-06/msg00035.html ). Also note that= the (test-exit) command I added at the end is commented out so that this t= est failing due to some failed tests doesn't stop all the non-standalon= e tests from running. Two tests have to be disabled which cause the script = to break when they are reached, which are

=C2=A0=C2=A0=C2=A0 (test-w= rite-syntax "|\"|" '|\"|)

and

= =C2=A0=C2=A0=C2=A0 (let ()
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (define 7 1)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (let-syntax ()
=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 (define x 2)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 #f)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (test 1 x))


Over= all, the test results are pretty good. They are, as printed by the test-sui= te at the end,

=C2=A0=C2=A0=C2=A0 1110 out of 1145 (96.9%) tests pas= sed in 1.3156378269195557 seconds.
=C2=A0=C2=A0=C2=A0 32 failures (2.8%)= .
=C2=A0=C2=A0=C2=A0 3 errors (0.3%).
=C2=A0=C2=A0=C2=A0 15 out of 18= (83.3%) subgroups passed.


Weak areas are Strings, Read Sy= ntax, and Numeric Syntax.


Freja Nordsiek


On Mon, Jun 19, 2017 at 7:25 AM, Mark H Weaver <mhw@netris.org> wrote:
Hi Freja,

Freja Nordsiek <
fnordsie@gmail.com= > writes:

> On Mark Weaver's suggestion, I looked up the Kawa and Chibi R7RS-s= mall
> test suites. Kawa uses Chibi's test-suite, though it is wrapped in= a
> bit of extra code at the top. Kawa's license is not likely to be a=
> problem, as it is a MIT license (
> https://www.gnu.org/software/kawa/S= oftware-License.html ). But,
> Chibi's license is a modified BSD license (
> http://synthcode.com/license.txt ), which is compatibl= e with the GPL (
> https://www.gnu.org/licenses/lic= ense-list.html#ModifiedBSD ).

Sounds good, thanks for checking it!

> So, we could realistically take the Chibi test-suite (possibly with > the Kawa modifications) and incorporate it into the r7rs-wip
> branch. The only question is whether to incorporate them as is or to > modify them to use the same unit testing code as the rest of the unit<= br> > tests in the guile test suite.

I would prefer to use Chibi's test suite with minimal changes.= =C2=A0 I
suppose that we will need to add some code at the top, and it is
possible that we'll need to make some other modifications.

=C2=A0 =C2=A0 Thanks!
=C2=A0 =C2=A0 =C2=A0 Mark

--001a1146e4b08b1b1b05524a6c92-- --001a1146e4b08b1b2005524a6c94 Content-Type: text/x-patch; charset="UTF-8"; name="0001-Added-Chibi-s-R7RS-test-suite-as-a-standalone-test-s.patch" Content-Disposition: attachment; filename="0001-Added-Chibi-s-R7RS-test-suite-as-a-standalone-test-s.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j43rvd0r0 RnJvbSA1MWY5NTNjZjMxNTJhODY1M2VkMDBmZjY2ZmNjZDljZWQyMjc1NTFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVqYSBOb3Jkc2llayA8Zm5vcmRzaWVAZ21haWwuY29tPgpE YXRlOiBNb24sIDE5IEp1biAyMDE3IDA4OjI2OjQ5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQWRk ZWQgQ2hpYmkncyBSN1JTIHRlc3Qtc3VpdGUgYXMgYSBzdGFuZGFsb25lIHRlc3Qtc3VpdGUuCgoq IHRlc3Qtc3VpdGUvc3RhbmRhbG9uZS9NYWtlZmlsZS5hbTogQWRkZWQgdGVzdC1zdWl0ZSB0byB0 aGUgbGlzdCB0byB0ZXN0LgoqIHRlc3Qtc3VpdGUvc3RhbmRhbG9uZS90ZXN0LXI3cnMtY2hpYmkg KG5ldyBmaWxlKTogQ2hpYmkncyBSN1JTLXNtYWxsJ3MKICB0ZXN0LXN1aXRlIHdpdGggQ2hpYmkn cyAoY2hpYmkgdGVzdCkgYW5kIChjaGliaSB0ZXJtIGFuc2kpIG1vZHVsZXMgaW5jbHVkZWQKICBp bnRvIHRoZSBzb3VyY2UgYWxvbmcgd2l0aCBzb21lIEd1aWxlIG1vZGlmaWNhdGlvbnMuCi0tLQog dGVzdC1zdWl0ZS9zdGFuZGFsb25lL01ha2VmaWxlLmFtICAgICB8ICAgIDMgKwogdGVzdC1zdWl0 ZS9zdGFuZGFsb25lL3Rlc3Qtcjdycy1jaGliaSB8IDM3MTUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM3MTggaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNzU1IHRlc3Qtc3VpdGUvc3RhbmRhbG9uZS90ZXN0LXI3cnMtY2hpYmkKCmRpZmYg LS1naXQgYS90ZXN0LXN1aXRlL3N0YW5kYWxvbmUvTWFrZWZpbGUuYW0gYi90ZXN0LXN1aXRlL3N0 YW5kYWxvbmUvTWFrZWZpbGUuYW0KaW5kZXggNmY2NzZlYi4uZmI0MDI2OCAxMDA2NDQKLS0tIGEv dGVzdC1zdWl0ZS9zdGFuZGFsb25lL01ha2VmaWxlLmFtCisrKyBiL3Rlc3Qtc3VpdGUvc3RhbmRh bG9uZS9NYWtlZmlsZS5hbQpAQCAtOTYsNiArOTYsOSBAQCBFWFRSQV9ESVNUICs9IHRlc3QtbGFu Z3VhZ2UuZWwgdGVzdC1sYW5ndWFnZS5qcwogY2hlY2tfU0NSSVBUUyArPSB0ZXN0LWd1aWxkLWNv bXBpbGUKIFRFU1RTICs9IHRlc3QtZ3VpbGQtY29tcGlsZQogCitjaGVja19TQ1JJUFRTICs9IHRl c3Qtcjdycy1jaGliaQorVEVTVFMgKz0gdGVzdC1yN3JzLWNoaWJpCisKICMgdGVzdC1udW0yaW50 ZWdyYWwKIHRlc3RfbnVtMmludGVncmFsX1NPVVJDRVMgPSB0ZXN0LW51bTJpbnRlZ3JhbC5jCiB0 ZXN0X251bTJpbnRlZ3JhbF9DRkxBR1MgPSAke3Rlc3RfY2ZsYWdzfQpkaWZmIC0tZ2l0IGEvdGVz dC1zdWl0ZS9zdGFuZGFsb25lL3Rlc3Qtcjdycy1jaGliaSBiL3Rlc3Qtc3VpdGUvc3RhbmRhbG9u ZS90ZXN0LXI3cnMtY2hpYmkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDE5 NThlOQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtc3VpdGUvc3RhbmRhbG9uZS90ZXN0LXI3cnMt Y2hpYmkKQEAgLTAsMCArMSwzNzE1IEBACisjIS9iaW4vc2gKK2V4ZWMgZ3VpbGUgLXEgLXMgIiQw IiAiJEAiCishIworCis7OyBDaGliaSdzIHI3cnMtdGVzdHMuc2NtLCAoY2hpYmkgdGVzdCksIGFu ZCAoY2hpYmkgdGVybSBhbnNpKSBjb21iaW5lZCBpbnRvIGEKKzs7IHN0YW5kYWxvbmUgdGVzdCBz dWl0ZSBmb3IgUjdSUy1zbWFsbCwgd2l0aCBtb2RpZmljYXRpb25zIHRvIGZpdCBpbnRvIEd1aWxl J3MKKzs7IHRlc3RzIHN1aXRlLgorOzsKKzs7Cis7OyBDb3B5cmlnaHQgb2YgR3VpbGUgbW9kaWZp Y2F0aW9ucyBhcmUKKzs7Cis7OworOzsgICAgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCis7OworOzsgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OworOzsgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsg TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorOzsgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorOzsKKzs7Cis7OworOzsgVGhlIGNv cHlyaWdodCBvZiB0aGUgQ2hpYmkgY29kZSBpcworOzsKKzs7IENvcHlyaWdodCAoYykgMjAxMC0y MDE0IEFsZXggU2hpbm4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIEJTRC1zdHlsZQorOzsgbGljZW5z ZTogaHR0cDovL3N5bnRoY29kZS5jb20vbGljZW5zZS50eHQKKworCisocmVhZC1lbmFibGUgJ3I3 cnMtc3ltYm9scykKKyhwcmludC1lbmFibGUgJ3I3cnMtc3ltYm9scykKKworKHJlYWQtZW5hYmxl ICdyN3JzLWJ5dGV2ZWN0b3JzKQorKHByaW50LWVuYWJsZSAncjdycy1ieXRldmVjdG9ycykKKwor CisKKyhpbXBvcnQgKHNjaGVtZSBiYXNlKQorICAgICAgICAoc2NoZW1lIGNoYXIpCisgICAgICAg IChzY2hlbWUgbGF6eSkKKyAgICAgICAgKHNjaGVtZSBpbmV4YWN0KQorICAgICAgICAoc2NoZW1l IGNvbXBsZXgpCisgICAgICAgIChzY2hlbWUgdGltZSkKKyAgICAgICAgKHNjaGVtZSBmaWxlKQor ICAgICAgICAoc2NoZW1lIHJlYWQpCisgICAgICAgIChzY2hlbWUgd3JpdGUpCisgICAgICAgIChz Y2hlbWUgZXZhbCkKKyAgICAgICAgKHNjaGVtZSBwcm9jZXNzLWNvbnRleHQpCisgICAgICAgIChz Y2hlbWUgY2FzZS1sYW1iZGEpCisgICAgICAgIChzY2hlbWUgcjVycykpCisKKworOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7OzsKKzs7OworOzs7IENoaWJpJ3MgKGNoaWJpIHRlcm0gYW5zaSkgbW9kdWxl Cis7OzsKKzs7OyBHdWlsZSBtb2RpZmljYXRpb25zOgorOzs7ICAgKiBBTlNJIGVzY2FwZSBjb2Rl cyBkaXNhYmxlZAorOzs7Cis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworCisKKworOzsgQ29weXJp Z2h0IChjKSAyMDEwLTIwMTQgQWxleCBTaGlubi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gQlNELXN0 eWxlCis7OyBsaWNlbnNlOiBodHRwOi8vc3ludGhjb2RlLmNvbS9saWNlbnNlLnR4dAorCis7Oz4g QSBsaWJyYXJ5IHRvIHVzZSBBTlNJIGVzY2FwZSBjb2RlcyB0byBmb3JtYXQgdGV4dCBhbmQgYmFj a2dyb3VuZAorOzs+IGNvbG9yLCBmb250IHdlaWdoLCBhbmQgdW5kZXJsaW5pbmcuCisKKzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7OworCisoZGVmaW5lIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIHBhcmFt ZXRlcikKKyAgKGxldCAoKGNvZGUgKHN0cmluZy1hcHBlbmQgIlx4MUI7WyIgKG51bWJlci0+c3Ry aW5nIHBhcmFtZXRlcikgIm0iKSkpCisgICAgKGxhbWJkYSAoKSBjb2RlKSkpCisKKyhkZWZpbmUg KG1ha2Utd3JhcC1wcm9jZWR1cmUgc3RhcnQtZXNjYXBlIGVuZC1lc2NhcGUpCisgIChsYW1iZGEg KHN0cikKKyAgICAoaWYgKG5vdCAoc3RyaW5nPyBzdHIpKQorICAgICAgICAoZXJyb3IgImFyZ3Vt ZW50IG11c3QgYmUgYSBzdHJpbmciIHN0cikpCisgICAgKGlmIChhbnNpLWVzY2FwZXMtZW5hYmxl ZD8pCisgICAgICAgIChzdHJpbmctYXBwZW5kIHN0YXJ0LWVzY2FwZSBzdHIgZW5kLWVzY2FwZSkK KyAgICAgICAgc3RyKSkpCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworCis7OyBTb21lIGRlZmluaXRpb25z IGFyZSB3cmFwcGVkIGluIGJlZ2luIGluIG9yZGVyIHRvIGF2b2lkIFNjcmliYmxlCis7OyBnZW5l cmF0aW5nIGR1cGxpY2F0ZSBzaWduYXR1cmVzLgorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKworOzs+IFxz ZWN0aW9ue0xpYnJhcnl9CisKKyhkZWZpbmUgYmxhY2stZXNjYXBlCisgICAobWFrZS1zaW1wbGUt ZXNjYXBlLXByb2NlZHVyZSAzMCkpCisoZGVmaW5lIHJlZC1lc2NhcGUKKyAgKG1ha2Utc2ltcGxl LWVzY2FwZS1wcm9jZWR1cmUgMzEpKQorKGRlZmluZSBncmVlbi1lc2NhcGUKKyAgKG1ha2Utc2lt cGxlLWVzY2FwZS1wcm9jZWR1cmUgMzIpKQorKGRlZmluZSB5ZWxsb3ctZXNjYXBlCisgIChtYWtl LXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDMzKSkKKyhkZWZpbmUgYmx1ZS1lc2NhcGUKKyAgKG1h a2Utc2ltcGxlLWVzY2FwZS1wcm9jZWR1cmUgMzQpKQorKGRlZmluZSBtYWdlbnRhLWVzY2FwZQor ICAobWFrZS1zaW1wbGUtZXNjYXBlLXByb2NlZHVyZSAzNSkpCisoZGVmaW5lIGN5YW4tZXNjYXBl CisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDM2KSkKKyhkZWZpbmUgd2hpdGUtZXNj YXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDM3KSkKKworOzs+IFJldHVybiBh IHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIEFOU0kgZXNjYXBlIGNvZGUgdG8gc2VsZWN0IHRoZQor Ozs+IHNwZWNpZmllZCB0ZXh0IGNvbG9yLgorOzsvCisKKzs7PiBSZXR1cm4gYSBzdHJpbmcgY29u c2lzdGluZyBvZiBhbiBBTlNJIGVzY2FwZSBjb2RlIHRvIHNlbGVjdCB0aGUKKzs7PiB0ZXh0IGNv bG9yIHNwZWNpZmllZCBieSB0aGUgXHZhcntyZWQtbGV2ZWx9LCBcdmFye2dyZWVuLWxldmVsfSwK Kzs7PiBhbmQgXHZhcntibHVlLWxldmVsfSBhcmd1bWVudHMsIGVhY2ggb2Ygd2hpY2ggbXVzdCBi ZSBhbiBleGFjdAorOzs+IGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA1XS4KKzs7PgorOzs+IFRo ZSBjYWxsZXIgaXMgcmVzb25zaWJsZSBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhlIHRlcm1pbmFsIHN1 cHBvcnRzCis7Oz4gMjU2IGNvbG9ycy4KKworKGRlZmluZSAocmdiLWVzY2FwZSByZWQtbGV2ZWwg Z3JlZW4tbGV2ZWwgYmx1ZS1sZXZlbCkKKyAgKHdoZW4gKG5vdCAoYW5kIChleGFjdC1pbnRlZ2Vy PyByZWQtbGV2ZWwpICg8PSAwIHJlZC1sZXZlbCA1KSkpCisgICAgKGVycm9yICJpbnZhbGlkIHJl ZC1sZXZlbCB2YWx1ZSIgcmVkLWxldmVsKSkKKyAgKHdoZW4gKG5vdCAoYW5kIChleGFjdC1pbnRl Z2VyPyBncmVlbi1sZXZlbCkgKDw9IDAgZ3JlZW4tbGV2ZWwgNSkpKQorICAgIChlcnJvciAiaW52 YWxpZCBncmVlbi1sZXZlbCB2YWx1ZSIgZ3JlZW4tbGV2ZWwpKQorICAod2hlbiAobm90IChhbmQg KGV4YWN0LWludGVnZXI/IGJsdWUtbGV2ZWwpICg8PSAwIGJsdWUtbGV2ZWwgNSkpKQorICAgIChl cnJvciAiaW52YWxpZCBibHVlLWxldmVsIHZhbHVlIiBibHVlLWxldmVsKSkKKyAgKHN0cmluZy1h cHBlbmQKKyAgICJceDFCO1szODs1OyIKKyAgIChudW1iZXItPnN0cmluZyAoKyAoKiAzNiByZWQt bGV2ZWwpICgqIDYgZ3JlZW4tbGV2ZWwpIGJsdWUtbGV2ZWwgMTYpKQorICAgIm0iKSkKKworOzs+ IFJldHVybiBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIEFOU0kgZXNjYXBlIGNvZGUgdG8gc2Vs ZWN0IHRoZQorOzs+IHRleHQgY29sb3Igc3BlY2lmaWVkIGJ5IHRoZSBcdmFye2dyYXktbGV2ZWx9 IGFyZ3VtZW50LCB3aGljaCBtdXN0Cis7Oz4gYmUgYW4gZXhhY3QgaW50ZWdlciBpbiB0aGUgcmFu Z2UgWzAsIDIzXS4KKzs7PgorOzs+IFRoZSBjYWxsZXIgaXMgcmVzb25zaWJsZSBmb3IgdmVyaWZ5 aW5nIHRoYXQgdGhlIHRlcm1pbmFsIHN1cHBvcnRzCis7Oz4gMjU2IGNvbG9ycy4KKworKGRlZmlu ZSAoZ3JheS1lc2NhcGUgZ3JheS1sZXZlbCkKKyAgKHdoZW4gKG5vdCAoYW5kIChleGFjdC1pbnRl Z2VyPyBncmF5LWxldmVsKSAoPD0gMCBncmF5LWxldmVsIDIzKSkpCisgICAgKGVycm9yICJpbnZh bGlkIGdyYXktbGV2ZWwgdmFsdWUiIGdyYXktbGV2ZWwpKQorICAoc3RyaW5nLWFwcGVuZCAiXHgx QjtbMzg7NTsiCisgICAgICAgICAgICAgICAgIChudW1iZXItPnN0cmluZyAoKyBncmF5LWxldmVs IDIzMikpCisgICAgICAgICAgICAgICAgICJtIikpCisKKzs7PiBSZXR1cm4gYSBzdHJpbmcgY29u c2lzdGluZyBvZiBhbiBBTlNJIGVzY2FwZSBjb2RlIHRvIHNlbGVjdCB0aGUKKzs7PiBkZWZhdWx0 IHRleHQgY29sb3IuCisKKyhkZWZpbmUgcmVzZXQtY29sb3ItZXNjYXBlCisgIChtYWtlLXNpbXBs ZS1lc2NhcGUtcHJvY2VkdXJlIDM5KSkKKworKGRlZmluZSBibGFjaworICAobWFrZS13cmFwLXBy b2NlZHVyZSAoYmxhY2stZXNjYXBlKQorICAgICAgICAgICAgICAgICAgICAgICAocmVzZXQtY29s b3ItZXNjYXBlKSkpCisoZGVmaW5lIHJlZAorICAobWFrZS13cmFwLXByb2NlZHVyZSAocmVkLWVz Y2FwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWNvbG9yLWVzY2FwZSkpKQorKGRl ZmluZSBncmVlbgorICAobWFrZS13cmFwLXByb2NlZHVyZSAoZ3JlZW4tZXNjYXBlKQorICAgICAg ICAgICAgICAgICAgICAgICAocmVzZXQtY29sb3ItZXNjYXBlKSkpCisoZGVmaW5lIHllbGxvdwor ICAobWFrZS13cmFwLXByb2NlZHVyZSAoeWVsbG93LWVzY2FwZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgKHJlc2V0LWNvbG9yLWVzY2FwZSkpKQorKGRlZmluZSBibHVlCisgIChtYWtlLXdyYXAt cHJvY2VkdXJlIChibHVlLWVzY2FwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWNv bG9yLWVzY2FwZSkpKQorKGRlZmluZSBtYWdlbnRhCisgIChtYWtlLXdyYXAtcHJvY2VkdXJlICht YWdlbnRhLWVzY2FwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWNvbG9yLWVzY2Fw ZSkpKQorKGRlZmluZSBjeWFuCisgIChtYWtlLXdyYXAtcHJvY2VkdXJlIChjeWFuLWVzY2FwZSkK KyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWNvbG9yLWVzY2FwZSkpKQorKGRlZmluZSB3 aGl0ZQorICAobWFrZS13cmFwLXByb2NlZHVyZSAod2hpdGUtZXNjYXBlKQorICAgICAgICAgICAg ICAgICAgICAgICAocmVzZXQtY29sb3ItZXNjYXBlKSkpCisKKzs7PiBJZiBBTlNJIGVzY2FwZXMg YXJlIGVuYWJsZWQsIHJldHVybiBhIHN0cmluZyBjb25zaXN0aW5nIG9mIHRoZQorOzs+IHN0cmlu ZyBcdmFye3N0cn0gd2l0aCBhIHByZWZpeCB0aGF0IHNlbGVjdHMgc3BlY2lmaWVkIHRleHQgY29s b3IKKzs7PiBhbmQgYSBzdWZmaXggdGhhdCBzZWxlY3RzIHRoZSBkZWZhdWx0IHRleHQgY29sb3Iu Cis7Oz4KKzs7PiBJZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBlbmFibGVkLCByZXR1cm4gXHZhcntz dHJ9LgorOzsvCisKKzs7PiBSZXR1cm5zIGEgcHJvY2VkdXJlIHdoaWNoIHRha2VzIGEgc2luZ2xl IGFyZ3VtZW50LCBhIHN0cmluZywgYW5kCis7Oz4gd2hpY2ggd2hlbiBjYWxsZWQgYmVoYXZlcyBh cyBmb2xsb3dzLgorOzs+Cis7Oz4gSWYgQU5TSSBlc2NhcGVzIGFyZSBlbmFibGVkLCB0aGUgcHJv Y2VkdXJlIHJldHVybnMgYSBzdHJpbmcKKzs7PiBjb25zaXN0aW5nIG9mIGl0cyBhcmd1bWVudCB3 aXRoIGEgcHJlZml4IHRoYXQgc2VsZWN0cyBzcGVjaWZpZWQKKzs7PiB0ZXh0IGNvbG9yIChvYnRh aW5lZCBieSBjYWxsaW5nIHRoZSBcc2NoZW1le3JnYi1lc2NhcGV9IHByb2NlZHVyZQorOzs+IHdp dGggdGhlIHZhbHVlcyBvZiB0aGUgXHZhcntyZWQtbGV2ZWx9LCBcdmFye2dyZWVuLWxldmVsfSwg YW5kCis7Oz4gXHZhcntibHVlLWxldmVsfSBhcmd1bWVudHMpIGFuZCBhIHN1ZmZpeCB0aGF0IHNl bGVjdHMgdGhlIGRlZmF1bHQKKzs7PiB0ZXh0IGNvbG9yLgorOzs+Cis7Oz4gSWYgQU5TSSBlc2Nh cGVzIGFyZSBub3QgZW5hYmxlZCwgdGhlIHByb2NlZHVyZSByZXR1cm5zIGl0cyBhcmd1bWVudC4K Kzs7PgorOzs+IFRoZSBjYWxsZXIgaXMgcmVzb25zaWJsZSBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhl IHRlcm1pbmFsIHN1cHBvcnRzCis7Oz4gMjU2IGNvbG9ycy4KKworKGRlZmluZSAocmdiIHJlZC1s ZXZlbCBncmVlbi1sZXZlbCBibHVlLWxldmVsKQorICAobWFrZS13cmFwLXByb2NlZHVyZSAocmdi LWVzY2FwZSByZWQtbGV2ZWwgZ3JlZW4tbGV2ZWwgYmx1ZS1sZXZlbCkKKyAgICAgICAgICAgICAg ICAgICAgICAgKHJlc2V0LWNvbG9yLWVzY2FwZSkpKQorCis7Oz4gUmV0dXJucyBhIHByb2NlZHVy ZSB3aGljaCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSBzdHJpbmcsIGFuZAorOzs+IHdoaWNo IHdoZW4gY2FsbGVkIGJlaGF2ZXMgYXMgZm9sbG93cy4KKzs7PgorOzs+IElmIEFOU0kgZXNjYXBl cyBhcmUgZW5hYmxlZCwgdGhlIHByb2NlZHVyZSByZXR1cm5zIGEgc3RyaW5nCis7Oz4gY29uc2lz dGluZyBvZiBpdHMgYXJndW1lbnQgd2l0aCBhIHByZWZpeCB0aGF0IHNlbGVjdHMgc3BlY2lmaWVk Cis7Oz4gdGV4dCBjb2xvciAob2J0YWluZWQgYnkgY2FsbGluZyB0aGUgXHNjaGVtZXtncmF5LWVz Y2FwZX0gcHJvY2VkdXJlCis7Oz4gd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBcdmFye2dyYXktbGV2 ZWx9IGFyZ3VtZW50KSBhbmQgYSBzdWZmaXgKKzs7PiB0aGF0IHNlbGVjdHMgdGhlIGRlZmF1bHQg dGV4dCBjb2xvci4KKzs7PgorOzs+IElmIEFOU0kgZXNjYXBlcyBhcmUgbm90IGVuYWJsZWQsIHRo ZSBwcm9jZWR1cmUgcmV0dXJucyBpdHMgYXJndW1lbnQuCis7Oz4KKzs7PiBUaGUgY2FsbGVyIGlz IHJlc29uc2libGUgZm9yIHZlcmlmeWluZyB0aGF0IHRoZSB0ZXJtaW5hbCBzdXBwb3J0cworOzs+ IDI1NiBjb2xvcnMuCisKKyhkZWZpbmUgKGdyYXkgZ3JheS1sZXZlbCkKKyAgKG1ha2Utd3JhcC1w cm9jZWR1cmUgKGdyYXktZXNjYXBlIGdyYXktbGV2ZWwpCisgICAgICAgICAgICAgICAgICAgICAg IChyZXNldC1jb2xvci1lc2NhcGUpKSkKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CisKKyhkZWZpbmUgYmxh Y2stYmFja2dyb3VuZC1lc2NhcGUKKyAgKG1ha2Utc2ltcGxlLWVzY2FwZS1wcm9jZWR1cmUgNDAp KQorKGRlZmluZSByZWQtYmFja2dyb3VuZC1lc2NhcGUKKyAgKG1ha2Utc2ltcGxlLWVzY2FwZS1w cm9jZWR1cmUgNDEpKQorKGRlZmluZSBncmVlbi1iYWNrZ3JvdW5kLWVzY2FwZQorICAobWFrZS1z aW1wbGUtZXNjYXBlLXByb2NlZHVyZSA0MikpCisoZGVmaW5lIHllbGxvdy1iYWNrZ3JvdW5kLWVz Y2FwZQorICAobWFrZS1zaW1wbGUtZXNjYXBlLXByb2NlZHVyZSA0MykpCisoZGVmaW5lIGJsdWUt YmFja2dyb3VuZC1lc2NhcGUKKyAgKG1ha2Utc2ltcGxlLWVzY2FwZS1wcm9jZWR1cmUgNDQpKQor KGRlZmluZSBtYWdlbnRhLWJhY2tncm91bmQtZXNjYXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUt cHJvY2VkdXJlIDQ1KSkKKyhkZWZpbmUgY3lhbi1iYWNrZ3JvdW5kLWVzY2FwZQorICAobWFrZS1z aW1wbGUtZXNjYXBlLXByb2NlZHVyZSA0NikpCisoZGVmaW5lIHdoaXRlLWJhY2tncm91bmQtZXNj YXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDQ3KSkKKworOzs+IFJldHVybiBh IHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIEFOU0kgZXNjYXBlIGNvZGUgdG8gc2VsZWN0IHRoZQor Ozs+IHNwZWNpZmllZCBiYWNrZ3JvdW5kIGNvbG9yLgorOzsvCisKKzs7PiBSZXR1cm4gYSBzdHJp bmcgY29uc2lzdGluZyBvZiBhbiBBTlNJIGVzY2FwZSBjb2RlIHRvIHNlbGVjdCB0aGUKKzs7PiBi YWNrZ3JvdW5kIGNvbG9yIHNwZWNpZmllZCBieSB0aGUgXHZhcntyZWQtbGV2ZWx9LCBcdmFye2dy ZWVuLWxldmVsfSwKKzs7PiBhbmQgXHZhcntibHVlLWxldmVsfSBhcmd1bWVudHMsIGVhY2ggb2Yg d2hpY2ggbXVzdCBiZSBhbiBleGFjdAorOzs+IGludGVnZXIgaW4gdGhlIHJhbmdlIFswLCA1XS4K Kzs7PgorOzs+IFRoZSBjYWxsZXIgaXMgcmVzb25zaWJsZSBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhl IHRlcm1pbmFsIHN1cHBvcnRzCis7Oz4gMjU2IGNvbG9ycy4KKworKGRlZmluZSAocmdiLWJhY2tn cm91bmQtZXNjYXBlIHJlZC1sZXZlbCBncmVlbi1sZXZlbCBibHVlLWxldmVsKQorICAod2hlbiAo bm90IChhbmQgKGV4YWN0LWludGVnZXI/IHJlZC1sZXZlbCkgKDw9IDAgcmVkLWxldmVsIDUpKSkK KyAgICAoZXJyb3IgImludmFsaWQgcmVkLWxldmVsIHZhbHVlIiByZWQtbGV2ZWwpKQorICAod2hl biAobm90IChhbmQgKGV4YWN0LWludGVnZXI/IGdyZWVuLWxldmVsKSAoPD0gMCBncmVlbi1sZXZl bCA1KSkpCisgICAgKGVycm9yICJpbnZhbGlkIGdyZWVuLWxldmVsIHZhbHVlIiBncmVlbi1sZXZl bCkpCisgICh3aGVuIChub3QgKGFuZCAoZXhhY3QtaW50ZWdlcj8gYmx1ZS1sZXZlbCkgKDw9IDAg Ymx1ZS1sZXZlbCA1KSkpCisgICAgKGVycm9yICJpbnZhbGlkIGJsdWUtbGV2ZWwgdmFsdWUiIGJs dWUtbGV2ZWwpKQorICAoc3RyaW5nLWFwcGVuZAorICAgIlx4MUI7WzQ4OzU7IgorICAgKG51bWJl ci0+c3RyaW5nICgrICgqIDM2IHJlZC1sZXZlbCkgKCogNiBncmVlbi1sZXZlbCkgYmx1ZS1sZXZl bCAxNikpCisgICAibSIpKQorCis7Oz4gUmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4g QU5TSSBlc2NhcGUgY29kZSB0byBzZWxlY3QgdGhlCis7Oz4gYmFja2dyb3VuZCBjb2xvciBzcGVj aWZpZWQgYnkgdGhlIFx2YXJ7Z3JheS1sZXZlbH0gYXJndW1lbnQsIHdoaWNoCis7Oz4gbXVzdCBi ZSBhbiBleGFjdCBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgMjNdLgorOzs+Cis7Oz4gVGhlIGNh bGxlciBpcyByZXNvbnNpYmxlIGZvciB2ZXJpZnlpbmcgdGhhdCB0aGUgdGVybWluYWwgc3VwcG9y dHMKKzs7PiAyNTYgY29sb3JzLgorCisoZGVmaW5lIChncmF5LWJhY2tncm91bmQtZXNjYXBlIGdy YXktbGV2ZWwpCisgICh3aGVuIChub3QgKGFuZCAoZXhhY3QtaW50ZWdlcj8gZ3JheS1sZXZlbCkg KDw9IDAgZ3JheS1sZXZlbCAyMykpKQorICAgIChlcnJvciAiaW52YWxpZCBncmF5LWxldmVsIHZh bHVlIiBncmF5LWxldmVsKSkKKyAgKHN0cmluZy1hcHBlbmQgIlx4MUI7WzQ4OzU7IgorICAgICAg ICAgICAgICAgICAobnVtYmVyLT5zdHJpbmcgKCsgZ3JheS1sZXZlbCAyMzIpKQorICAgICAgICAg ICAgICAgICAibSIpKQorCis7Oz4gXHByb2NlZHVyZXsocmVzZXQtYmFja2dyb3VuZC1jb2xvci1l c2NhcGUpfQorOzs+Cis7Oz4gUmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gQU5TSSBl c2NhcGUgY29kZSB0byBzZWxlY3QgdGhlCis7Oz4gZGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yLgor CisoZGVmaW5lIHJlc2V0LWJhY2tncm91bmQtY29sb3ItZXNjYXBlCisgIChtYWtlLXNpbXBsZS1l c2NhcGUtcHJvY2VkdXJlIDQ5KSkKKworKGRlZmluZSBibGFjay1iYWNrZ3JvdW5kCisgIChtYWtl LXdyYXAtcHJvY2VkdXJlIChibGFjay1iYWNrZ3JvdW5kLWVzY2FwZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgKHJlc2V0LWJhY2tncm91bmQtY29sb3ItZXNjYXBlKSkpCisoZGVmaW5lIHJlZC1i YWNrZ3JvdW5kCisgIChtYWtlLXdyYXAtcHJvY2VkdXJlIChyZWQtYmFja2dyb3VuZC1lc2NhcGUp CisgICAgICAgICAgICAgICAgICAgICAgIChyZXNldC1iYWNrZ3JvdW5kLWNvbG9yLWVzY2FwZSkp KQorKGRlZmluZSBncmVlbi1iYWNrZ3JvdW5kCisgIChtYWtlLXdyYXAtcHJvY2VkdXJlIChncmVl bi1iYWNrZ3JvdW5kLWVzY2FwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWJhY2tn cm91bmQtY29sb3ItZXNjYXBlKSkpCisoZGVmaW5lIHllbGxvdy1iYWNrZ3JvdW5kCisgIChtYWtl LXdyYXAtcHJvY2VkdXJlICh5ZWxsb3ctYmFja2dyb3VuZC1lc2NhcGUpCisgICAgICAgICAgICAg ICAgICAgICAgIChyZXNldC1iYWNrZ3JvdW5kLWNvbG9yLWVzY2FwZSkpKQorKGRlZmluZSBibHVl LWJhY2tncm91bmQKKyAgKG1ha2Utd3JhcC1wcm9jZWR1cmUgKGJsdWUtYmFja2dyb3VuZC1lc2Nh cGUpCisgICAgICAgICAgICAgICAgICAgICAgIChyZXNldC1iYWNrZ3JvdW5kLWNvbG9yLWVzY2Fw ZSkpKQorKGRlZmluZSBtYWdlbnRhLWJhY2tncm91bmQKKyAgKG1ha2Utd3JhcC1wcm9jZWR1cmUg KG1hZ2VudGEtYmFja2dyb3VuZC1lc2NhcGUpCisgICAgICAgICAgICAgICAgICAgICAgIChyZXNl dC1iYWNrZ3JvdW5kLWNvbG9yLWVzY2FwZSkpKQorKGRlZmluZSBjeWFuLWJhY2tncm91bmQKKyAg KG1ha2Utd3JhcC1wcm9jZWR1cmUgKGN5YW4tYmFja2dyb3VuZC1lc2NhcGUpCisgICAgICAgICAg ICAgICAgICAgICAgIChyZXNldC1iYWNrZ3JvdW5kLWNvbG9yLWVzY2FwZSkpKQorKGRlZmluZSB3 aGl0ZS1iYWNrZ3JvdW5kCisgIChtYWtlLXdyYXAtcHJvY2VkdXJlICh3aGl0ZS1iYWNrZ3JvdW5k LWVzY2FwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWJhY2tncm91bmQtY29sb3It ZXNjYXBlKSkpCisKKzs7PiBJZiBBTlNJIGVzY2FwZXMgYXJlIGVuYWJsZWQsIHJldHVybiBhIHN0 cmluZyBjb25zaXN0aW5nIG9mIHRoZQorOzs+IHN0cmluZyBcdmFye3N0cn0gd2l0aCBhIHByZWZp eCB0aGF0IHNlbGVjdHMgc3BlY2lmaWVkIGJhY2tncm91bmQKKzs7PiBjb2xvciBhbmQgYSBzdWZm aXggdGhhdCBzZWxlY3RzIHRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IuCis7Oz4KKzs7PiBJ ZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBlbmFibGVkLCByZXR1cm4gXHZhcntzdHJ9LgorOzsvCisK Kzs7PiBSZXR1cm5zIGEgcHJvY2VkdXJlIHdoaWNoIHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50LCBh IHN0cmluZywgYW5kCis7Oz4gd2hpY2ggd2hlbiBjYWxsZWQgYmVoYXZlcyBhcyBmb2xsb3dzLgor Ozs+Cis7Oz4gSWYgQU5TSSBlc2NhcGVzIGFyZSBlbmFibGVkLCB0aGUgcHJvY2VkdXJlIHJldHVy bnMgYSBzdHJpbmcKKzs7PiBjb25zaXN0aW5nIG9mIGl0cyBhcmd1bWVudCB3aXRoIGEgcHJlZml4 IHRoYXQgc2VsZWN0cyBzcGVjaWZpZWQKKzs7PiBiYWNrZ3JvdW5kIGNvbG9yIChvYnRhaW5lZCBi eSBjYWxsaW5nIHRoZSBcc2NoZW1le3JnYi1iYWNrZ3JvdW5kLWVzY2FwZX0KKzs7PiBwcm9jZWR1 cmUgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBcdmFye3JlZC1sZXZlbH0sIFx2YXJ7Z3JlZW4tbGV2 ZWx9LAorOzs+IGFuZCBcdmFye2JsdWUtbGV2ZWx9IGFyZ3VtZW50cykgYW5kIGEgc3VmZml4IHRo YXQgc2VsZWN0cyB0aGUKKzs7PiBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IuCis7Oz4KKzs7PiBJ ZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBlbmFibGVkLCB0aGUgcHJvY2VkdXJlIHJldHVybnMgaXRz IGFyZ3VtZW50LgorOzs+Cis7Oz4gVGhlIGNhbGxlciBpcyByZXNvbnNpYmxlIGZvciB2ZXJpZnlp bmcgdGhhdCB0aGUgdGVybWluYWwgc3VwcG9ydHMKKzs7PiAyNTYgY29sb3JzLgorCisoZGVmaW5l IChyZ2ItYmFja2dyb3VuZCByZWQtbGV2ZWwgZ3JlZW4tbGV2ZWwgYmx1ZS1sZXZlbCkKKyAgKG1h a2Utd3JhcC1wcm9jZWR1cmUgKHJnYi1iYWNrZ3JvdW5kLWVzY2FwZSByZWQtbGV2ZWwgZ3JlZW4t bGV2ZWwgYmx1ZS1sZXZlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWJhY2tncm91 bmQtY29sb3ItZXNjYXBlKSkpCisKKzs7PiBSZXR1cm5zIGEgcHJvY2VkdXJlIHdoaWNoIHRha2Vz IGEgc2luZ2xlIGFyZ3VtZW50LCBhIHN0cmluZywgYW5kCis7Oz4gd2hpY2ggd2hlbiBjYWxsZWQg YmVoYXZlcyBhcyBmb2xsb3dzLgorOzs+Cis7Oz4gSWYgQU5TSSBlc2NhcGVzIGFyZSBlbmFibGVk LCB0aGUgcHJvY2VkdXJlIHJldHVybnMgYSBzdHJpbmcKKzs7PiBjb25zaXN0aW5nIG9mIGl0cyBh cmd1bWVudCB3aXRoIGEgcHJlZml4IHRoYXQgc2VsZWN0cyBzcGVjaWZpZWQKKzs7PiBiYWNrZ3Jv dW5kIGNvbG9yIChvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBcc2NoZW1le2dyYXktYmFja2dyb3Vu ZC1lc2NhcGV9Cis7Oz4gcHJvY2VkdXJlIHdpdGggdGhlIHZhbHVlcyBvZiB0aGUgXHZhcntncmF5 LWxldmVsfSBhcmd1bWVudCkgYW5kIGEKKzs7PiBzdWZmaXggdGhhdCBzZWxlY3RzIHRoZSBkZWZh dWx0IGJhY2tncm91bmQgY29sb3IuCis7Oz4KKzs7PiBJZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBl bmFibGVkLCB0aGUgcHJvY2VkdXJlIHJldHVybnMgaXRzIGFyZ3VtZW50LgorOzs+Cis7Oz4gVGhl IGNhbGxlciBpcyByZXNvbnNpYmxlIGZvciB2ZXJpZnlpbmcgdGhhdCB0aGUgdGVybWluYWwgc3Vw cG9ydHMKKzs7PiAyNTYgY29sb3JzLgorCisoZGVmaW5lIChncmF5LWJhY2tncm91bmQgZ3JheS1s ZXZlbCkKKyAgKG1ha2Utd3JhcC1wcm9jZWR1cmUgKGdyYXktYmFja2dyb3VuZC1lc2NhcGUgZ3Jh eS1sZXZlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc2V0LWJhY2tncm91bmQtY29sb3It ZXNjYXBlKSkpCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworCis7Oz4gUmV0dXJuIGEgc3RyaW5nIGNvbnNp c3Rpbmcgb2YgYW4gQU5TSSBlc2NhcGUgY29kZSB0byBzZWxlY3QgYm9sZAorOzs+IHN0eWxlLgor CisoZGVmaW5lIGJvbGQtZXNjYXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDEp KQorCis7Oz4gUmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gQU5TSSBlc2NhcGUgY29k ZSB0byBzZWxlY3Qgbm9uLWJvbGQKKzs7PiBzdHlsZS4KKworKGRlZmluZSByZXNldC1ib2xkLWVz Y2FwZQorICAobWFrZS1zaW1wbGUtZXNjYXBlLXByb2NlZHVyZSAyMikpCisKKzs7PiBJZiBBTlNJ IGVzY2FwZXMgYXJlIGVuYWJsZWQsIHJldHVybiBhIHN0cmluZyBjb25zaXN0aW5nIG9mIHRoZQor Ozs+IHN0cmluZyBcdmFye3N0cn0gd2l0aCBhIHByZWZpeCB0aGF0IHNlbGVjdHMgYm9sZCBzdHls ZSBhbmQgYSBzdWZmaXgKKzs7PiB0aGF0IHNlbGVjdHMgbm9uLWJvbGQgc3R5bGUuCis7Oz4KKzs7 PiBJZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBlbmFibGVkLCByZXR1cm4gXHZhcntzdHJ9LgorCiso ZGVmaW5lIGJvbGQgKG1ha2Utd3JhcC1wcm9jZWR1cmUgKGJvbGQtZXNjYXBlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNldC1ib2xkLWVzY2FwZSkpKQorCis7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKKworOzs+IFJldHVybiBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIEFOU0kgZXNj YXBlIGNvZGUgdG8gc2VsZWN0Cis7Oz4gdW5kZXJsaW5lZCBzdHlsZS4KKworKGRlZmluZSB1bmRl cmxpbmUtZXNjYXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDQpKQorCis7Oz4g UmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gQU5TSSBlc2NhcGUgY29kZSB0byBzZWxl Y3QKKzs7PiBub24tdW5kZXJsaW5lZCBzdHlsZS4KKworKGRlZmluZSByZXNldC11bmRlcmxpbmUt ZXNjYXBlCisgIChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDI0KSkKKworOzs+IElmIEFO U0kgZXNjYXBlcyBhcmUgZW5hYmxlZCwgcmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgdGhl Cis7Oz4gc3RyaW5nIFx2YXJ7c3RyfSB3aXRoIGEgcHJlZml4IHRoYXQgc2VsZWN0cyB1bmRlcmxp bmVkIHN0eWxlIGFuZAorOzs+IGEgc3VmZml4IHRoYXQgc2VsZWN0cyBub24tdW5kZXJsaW5lZCBz dHlsZS4KKzs7PgorOzs+IElmIEFOU0kgZXNjYXBlcyBhcmUgbm90IGVuYWJsZWQsIHJldHVybiBc dmFye3N0cn0uCisKKyhkZWZpbmUgdW5kZXJsaW5lIChtYWtlLXdyYXAtcHJvY2VkdXJlICh1bmRl cmxpbmUtZXNjYXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJl c2V0LXVuZGVybGluZS1lc2NhcGUpKSkKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CisKKzs7PiBSZXR1cm4g YSBzdHJpbmcgY29uc2lzdGluZyBvZiBhbiBBTlNJIGVzY2FwZSBjb2RlIHRvIHNlbGVjdCBuZWdh dGl2ZQorOzs+IHN0eWxlICh0ZXh0IGluIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBiYWNrZ3Jv dW5kIGluIHRoZSB0ZXh0Cis7Oz4gY29sb3IpLgorCisoZGVmaW5lIG5lZ2F0aXZlLWVzY2FwZQor ICAobWFrZS1zaW1wbGUtZXNjYXBlLXByb2NlZHVyZSA3KSkKKworOzs+IFJldHVybiBhIHN0cmlu ZyBjb25zaXN0aW5nIG9mIGFuIEFOU0kgZXNjYXBlIGNvZGUgdG8gc2VsZWN0IHBvc2l0aXZlCis7 Oz4gc3R5bGUgKHRleHQgaW4gdGhlIHRleHQgY29sb3IgYW5kIGJhY2tncm91bmQgaW4gdGhlIGJh Y2tncm91bmQKKzs7PiBjb2xvcikuCisKKyhkZWZpbmUgcmVzZXQtbmVnYXRpdmUtZXNjYXBlCisg IChtYWtlLXNpbXBsZS1lc2NhcGUtcHJvY2VkdXJlIDI3KSkKKworOzs+IElmIEFOU0kgZXNjYXBl cyBhcmUgZW5hYmxlZCwgcmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgdGhlCis7Oz4gc3Ry aW5nIFx2YXJ7c3RyfSB3aXRoIGEgcHJlZml4IHRoYXQgc2VsZWN0cyBuZWdhdGl2ZSBzdHlsZSAo dGV4dAorOzs+IGluIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBiYWNrZ3JvdW5kIGluIHRoZSB0 ZXh0IGNvbG9yKSBhbmQgYQorOzs+IHN1ZmZpeCB0aGF0IHNlbGVjdHMgcG9zaXRpdmUgc3R5bGUg KHRleHQgaW4gdGhlIHRleHQgY29sb3IgYW5kCis7Oz4gYmFja2dyb3VuZCBpbiB0aGUgYmFja2dy b3VuZCBjb2xvcikuCis7Oz4KKzs7PiBJZiBBTlNJIGVzY2FwZXMgYXJlIG5vdCBlbmFibGVkLCBy ZXR1cm4gXHZhcntzdHJ9LgorCisoZGVmaW5lIG5lZ2F0aXZlIChtYWtlLXdyYXAtcHJvY2VkdXJl IChuZWdhdGl2ZS1lc2NhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChyZXNldC1uZWdhdGl2ZS1lc2NhcGUpKSkKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CisKKzs7PiBBIHBh cmFtZXRlciBvYmplY3QgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgQU5TSSBlc2NhcGVzIGFyZSBl bmFibGVkCis7Oz4gaW4gc29tZSBvZiB0aGUgcHJlY2VkaW5nIHByb2NlZHVyZXMuIFRoZXkgYXJl IGRpc2FibGVkIGlmCis7Oz4gXHNjaGVtZXsoYW5zaS1lc2NhcGVzLWVuYWJsZWQ/KX0gcmV0dXJu cyBcc2NoZW1leyNmfSwgYW5kIG90aGVyd2lzZQorOzs+IHRoZXkgYXJlIGVuYWJsZWQuCis7Oz4K Kzs7PiBUaGUgaW5pdGlhbCB2YWx1ZSByZXR1cm5lZCBieSBcc2NoZW1leyhhbnNpLWVzY2FwZXMt ZW5hYmxlZD8pfSBpcworOzs+IGRldGVybWluZWQgYnkgdGhlIGVudmlyb25tZW50LgorOzs+Cis7 Oz4gSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFxzY2hlbWV7QU5TSV9FU0NBUEVTX0VOQUJM RUR9IGlzIHNldCwKKzs7PiBpdHMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgaW5pdGlhbCB2YWx1ZSBy ZXR1cm5lZCBieQorOzs+IFxzY2hlbWV7KGFuc2ktZXNjYXBlcy1lbmFibGVkPyl9LiBJZiB0aGUg dmFsdWUgb2YKKzs7PiBcc2NoZW1le0FOU0lfRVNDQVBFU19FTkFCTEVEfSBpcyBcc2NoZW1leyIw In0sIHRoZSBpbml0aWFsIHZhbHVlCis7Oz4gaXMgXHNjaGVtZXsjZn0sIG90aGVyd2lzZSB0aGUg aW5pdGlhbCB2YWx1ZSBpcyBcc2NoZW1leyN0fS4KKzs7PgorOzs+IElmIHRoZSBlbnZpcm9ubWVu dCB2YXJpYWJsZSBcc2NoZW1le0FOU0lfRVNDQVBFU19FTkFCTEVEfSBpcyBub3QKKzs7PiBzZXQs IGJ1dCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgXHNjaGVtZXtURVJNfSBpcyBzZXQsIHRoZSB2 YWx1ZQorOzs+IG9mIHRoZSBsYXR0ZXIgZGV0ZXJtaW5lcyB0aGUgaW5pdGlhbCB2YWx1ZSByZXR1 cm5lZCBieQorOzs+IFxzY2hlbWV7KGFuc2ktZXNjYXBlcy1lbmFibGVkPyl9LiBJZiB0aGUgdmFs dWUgb2YgXHNjaGVtZXtURVJNfQorOzs+IGlzIFxzY2hlbWV7Inh0ZXJtIn0sIFxzY2hlbWV7Inh0 ZXJtLWNvbG9yIn0sIFxzY2hlbWV7Inh0ZXJtLTI1NmNvbG9yIn0sCis7Oz4gXHNjaGVtZXsicnh2 dCJ9LCBcc2NoZW1leyJyeHZ0LXVuaWNvZGUtMjU2Y29sb3IifSwgXHNjaGVtZXsia3Rlcm0ifSwK Kzs7PiBcc2NoZW1leyJsaW51eCJ9LCBcc2NoZW1leyJzY3JlZW4ifSwgXHNjaGVtZXsic2NyZWVu LTI1NmNvbG9yIn0sCis7Oz4gb3IgXHNjaGVtZXsidnQxMDAifSwgdGhlIGluaXRpYWwgdmFsdWUg aXMgXHNjaGVtZXsjdH0sIG90aGVyd2lzZQorOzs+IHRoZSBpbml0aWFsIHZhbHVlIGlzIFxzY2hl bWV7I2Z9LgorOzs+Cis7Oz4gSWYgbmVpdGhlciBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVz IFxzY2hlbWV7QU5TSV9FU0NBUEVTX0VOQUJMRUR9Cis7Oz4gYW5kIFxzY2hlbWV7VEVSTX0gYXJl IHNldCwgdGhlIGluaXRpYWwgdmFsdWUgcmV0dXJuZWQgYnkKKzs7PiBcc2NoZW1leyhhbnNpLWVz Y2FwZXMtZW5hYmxlZD8pfSBpcyBcc2NoZW1leyNmfS4KKworKGRlZmluZSBhbnNpLWVzY2FwZXMt ZW5hYmxlZD8KKyAgKG1ha2UtcGFyYW1ldGVyICNmKSkKKyAgIDs7IChjb25kCisgICA7OyAgKChn ZXQtZW52aXJvbm1lbnQtdmFyaWFibGUgIkFOU0lfRVNDQVBFU19FTkFCTEVEIikKKyAgIDs7ICAg PT4gKGxhbWJkYSAocykgKG5vdCAoZXF1YWw/IHMgIjAiKSkpKQorICAgOzsgIChlbHNlCisgICA7 OyAgIChtZW1iZXIgKGdldC1lbnZpcm9ubWVudC12YXJpYWJsZSAiVEVSTSIpCisgICA7OyAgICAg ICAgICAgJygieHRlcm0iICJ4dGVybS1jb2xvciIgInh0ZXJtLTI1NmNvbG9yIiAicnh2dCIgImt0 ZXJtIgorICAgOzsgICAgICAgICAgICAgImxpbnV4IiAic2NyZWVuIiAic2NyZWVuLTI1NmNvbG9y IiAidnQxMDAiCisgICA7OyAgICAgICAgICAgICAicnh2dC11bmljb2RlLTI1NmNvbG9yIikpKSkp KQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKworOzs+IFxzZWN0aW9ue05vdGVzfQorOzs+Cis7Oz4gSXQg aXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIGZvcm1hdHRpbmcgcHJvY2VkdXJlcyBh cHBseQorOzs+IGEgcHJlZml4IHRvIHNldCBhIHBhcnRpY3VsYXIgZ3JhcGhpY3MgcGFyYW1ldGVy IGFuZCBhIHN1ZmZpeCB0bworOzs+IHJlc2V0IHRoZSBwYXJhbWV0ZXIgdG8gaXRzIGRlZmF1bHQg dmFsdWUuIFRoaXMgY2FuIGxlYWQgdG8gc3VycHJpc2VzLgorOzs+IEZvciBleGFtcGxlLCBvbiBh biBBTlNJIHRlcm1pbmFsLCBvbmUgbWlnaHQgbWlzdGFrZW5seSBleHBlY3QgdGhlCis7Oz4gZm9s bG93aW5nIHRvIGRpc3BsYXkgR1JFRU4gaW4gZ3JlZW4gdGV4dCBhbmQgdGhlbiBSRUQgaW4gcmVk IHRleHQ6Cis7Oz4KKzs7PiBcY29kZWJsb2NreyhkaXNwbGF5IChyZWQgKHN0cmluZy1hcHBlbmQg KGdyZWVuICJHUkVFTiIpICJSRUQiKSkpfQorOzs+Cis7Oz4gSG93ZXZlciwgaXQgd2lsbCBhY3R1 YWxseSBkaXNwbGF5IEdSRUVOIGluIGdyZWVuIHRleHQgYW5kIHRoZW4gUkVECis7Oz4gaW4gdGhl IGRlZmF1bHQgdGV4dCBjb2xvci4gVGhpcyBpcyBhIGxpbWl0YXRpb24gb2YgQU5TSSBjb250cm9s Cis7Oz4gY29kZXM7IGdyYXBoaWNzIGF0dHJpYnV0ZXMgYXJlIG5vdCBzYXZlZCB0byBhbmQgcmVz dG9yZWQgZnJvbSBhCis7Oz4gc3RhY2ssIGJ1dCBpbnN0ZWFkIGFyZSBzaW1wbHkgc2V0LiBPbmUg d2F5IHRvIGRpc3BsYXkgR1JFRU4gaW4KKzs7PiBncmVlbiB0ZXh0IGFuZCB0aGVuIFJFRCBpbiBy ZWQgdGV4dCBpczoKKzs7PgorOzs+IFxjb2RlYmxvY2t7KGRpc3BsYXkgKHN0cmluZy1hcHBlbmQg KGdyZWVuICJHUkVFTiIpIChyZWQgIlJFRCIpKSl9Cis7Oz4KKzs7PiBPbiB0aGUgb3RoZXIgaGFu ZCwgdGV4dCBjb2xvciwgYmFja2dyb3VuZCBjb2xvciwgZm9udCB3ZWlnaHQgKGJvbGQKKzs7PiBv ciBkZWZhdWx0KSwgdW5kZXJsaW5lIChvbiBvciBvZmYpLCBpbWFnZSAocG9zaXRpdmUgb3IgbmVn YXRpdmUpCis7Oz4gYXJlIG9ydGhvZ29uYWwuIFNvLCBmb3IgZXhhbXBsZSwgb24gYW4gQU5TSSB0 ZXJtaW5hbCB0aGUgZm9sbG93aW5nCis7Oz4gc2hvdWxkIGRpc3BsYXkgR1JFRU4gaW4gZ3JlZW4g dGV4dCBhbmQgdGhlbiBSRUQgaW4gcmVkIHRleHQsIHdpdGgKKzs7PiBib3RoIGluIGJvbGQgYW5k IEdSRUVOIHVuZGVybGluZWQuCis7Oz4KKzs7PiBcY29kZWJsb2NreyhkaXNwbGF5IChib2xkIChz dHJpbmctYXBwZW5kICh1bmRlcmxpbmUgKGdyZWVuICJHUkVFTiIpKSAocmVkICJSRUQiKSkpKX0K Kzs7PgorCisKKworCisKKworCisKKworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKzs7OworOzs7 IENoaWJpJ3MgKGNoaWJpIHRlc3QpIG1vZHVsZS4KKzs7OworOzs7IEd1aWxlIG1vZGlmaWNhdGlv bnM6Cis7OzsgICAqIGN1cnJlbnQtY29sdW1uLXdpZHRoJ3MgZGVmYXVsdCBjaGFuZ2VkIGZyb20g NzggdG8gNzIKKzs7OworOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKworCisKKyhkZWZpbmUgKHBh aXItc291cmNlIHgpICNmKQorKGRlZmluZSBwcmludC1leGNlcHRpb24gd3JpdGUpCisKKzs7IENv cHlyaWdodCAoYykgMjAxMC0yMDE0IEFsZXggU2hpbm4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAor OzsgQlNELXN0eWxlIGxpY2Vuc2U6IGh0dHA6Ly9zeW50aGNvZGUuY29tL2xpY2Vuc2UudHh0CisK Kzs7PiBTaW1wbGUgdGVzdGluZyBmcmFtZXdvcmsgYWRhcHRlZCBmcm9tIHRoZSBDaGlja2VuIFxz Y2hlbWV7dGVzdH0KKzs7PiBtb2R1bGUuCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzsgbGlzdCB1dGls aXRpZXMKKworOzsgU2ltcGxpZmllZCB2ZXJzaW9uIG9mIFNSRkktMSBldmVyeS4KKyhkZWZpbmUg KGV2ZXJ5IHByZWQgbHMpCisgIChvciAobnVsbD8gbHMpCisgICAgICAoaWYgKG51bGw/IChjZHIg bHMpKQorICAgICAgICAgIChwcmVkIChjYXIgbHMpKQorICAgICAgICAgIChpZiAocHJlZCAoY2Fy IGxzKSkgKGV2ZXJ5IHByZWQgKGNkciBscykpICNmKSkpKQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKzs7 IGV4Y2VwdGlvbiB1dGlsaXRpZXMKKworKGRlZmluZSAod2FybmluZyBtc2cgLiBhcmdzKQorICAo ZGlzcGxheSBtc2cgKGN1cnJlbnQtZXJyb3ItcG9ydCkpCisgIChmb3ItZWFjaCAobGFtYmRhICh4 KQorICAgICAgICAgICAgICAod3JpdGUtY2hhciAjXHNwYWNlIChjdXJyZW50LWVycm9yLXBvcnQp KQorICAgICAgICAgICAgICAod3JpdGUgeCAoY3VycmVudC1lcnJvci1wb3J0KSkpCisgICAgICAg ICAgICBhcmdzKQorICAobmV3bGluZSAoY3VycmVudC1lcnJvci1wb3J0KSkpCisKKzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OworOzsgc3RyaW5nIHV0aWxpdGllcworCisoZGVmaW5lIChzdHJpbmctc2VhcmNoIHBh dCBzdHIpCisgIChsZXQqICgocGF0LWxlbiAoc3RyaW5nLWxlbmd0aCBwYXQpKQorICAgICAgICAg KGxpbWl0ICgtIChzdHJpbmctbGVuZ3RoIHN0cikgcGF0LWxlbikpKQorICAgIChsZXQgbHAxICgo aSAwKSkKKyAgICAgIChjb25kCisgICAgICAgKCg+PSBpIGxpbWl0KSAjZikKKyAgICAgICAoZWxz ZQorICAgICAgICAobGV0IGxwMiAoKGogaSkgKGsgMCkpCisgICAgICAgICAgKGNvbmQgKCg+PSBr IHBhdC1sZW4pICN0KQorICAgICAgICAgICAgICAgICgobm90IChlcXY/IChzdHJpbmctcmVmIHN0 ciBqKSAoc3RyaW5nLXJlZiBwYXQgaykpKQorICAgICAgICAgICAgICAgICAobHAxICgrIGkgMSkp KQorICAgICAgICAgICAgICAgIChlbHNlIChscDIgKCsgaiAxKSAoKyBrIDEpKSkpKSkpKSkpCisK Kzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7OworOzsgdGVzdCBpbnRlcmZhY2UKKworOzs+IFxtYWNyb3sodGVzdCBb bmFtZV0gZXhwZWN0IGV4cHIpfQorCis7Oz4gRXZhbHVhdGUgXHZhcntleHByfSBhbmQgY2hlY2sg dGhhdCBpdCBpcyBcc2NoZW1le2VxdWFsP30KKzs7PiB0byBcdmFye2V4cGVjdH0uICBcdmFye25h bWV9IGlzIHVzZWQgaW4gcmVwb3J0aW5nLCBhbmQKKzs7PiBkZWZhdWx0cyB0byBhIHByaW50ZWQg c3VtbWFyeSBvZiBcdmFye2V4cHJ9LgorCisoZGVmaW5lLXN5bnRheCB0ZXN0CisgIChzeW50YXgt cnVsZXMgKHF1b3RlKQorICAgICgodGVzdCBleHBlY3QgZXhwcikKKyAgICAgKHRlc3QgI2YgZXhw ZWN0IGV4cHIpKQorICAgICgodGVzdCBuYW1lIGV4cGVjdCAoZXhwciAuLi4pKQorICAgICAodGVz dC1wcm9wYWdhdGUtaW5mbyBuYW1lIGV4cGVjdCAoZXhwciAuLi4pICgpKSkKKyAgICAoKHRlc3Qg bmFtZSAnZXhwZWN0IGV4cHIpCisgICAgICh0ZXN0LXByb3BhZ2F0ZS1pbmZvIG5hbWUgJ2V4cGVj dCBleHByICgpKSkKKyAgICAoKHRlc3QgbmFtZSAoZXhwZWN0IC4uLikgZXhwcikKKyAgICAgKHRl c3Qtc3ludGF4LWVycm9yCisgICAgICAndGVzdAorICAgICAgInRoZSB0ZXN0IGV4cHJlc3Npb24g c2hvdWxkIGNvbWUgbGFzdDogKHRlc3QgPGV4cGVjdGVkPiAoPGV4cHI+IC4uLikpICIKKyAgICAg ICh0ZXN0IG5hbWUgKGV4cGVjdCAuLi4pIGV4cHIpKSkKKyAgICAoKHRlc3QgbmFtZSBleHBlY3Qg ZXhwcikKKyAgICAgKHRlc3QtcHJvcGFnYXRlLWluZm8gbmFtZSBleHBlY3QgZXhwciAoKSkpCisg ICAgKCh0ZXN0IGEgLi4uKQorICAgICAodGVzdC1zeW50YXgtZXJyb3IgJ3Rlc3QgInRlc3QgcmVx dWlyZXMgMiBvciAzIGFyZ3VtZW50cyIgKHRlc3QgYSAuLi4pKSkpKQorCis7Oz4gXG1hY3Jveyh0 ZXN0LWVxdWFsIGVxdWFsIFtuYW1lXSBleHBlY3QgZXhwcil9CisKKzs7PiBFcXVpdmFsZW50IHRv IHRlc3QsIHVzaW5nIFx2YXJ7ZXF1YWx9IGZvciBjb21wYXJpc29uIGluc3RlYWQgb2YKKzs7PiBc c2NoZW1le2VxdWFsP30uCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtZXF1YWwKKyAgKHN5bnRheC1y dWxlcyAoKQorICAgICgodGVzdC1lcXVhbCBlcXVhbCAuIGFyZ3MpCisgICAgIChwYXJhbWV0ZXJp emUgKChjdXJyZW50LXRlc3QtY29tcGFyYXRvciBlcXVhbCkpCisgICAgICAgKHRlc3QgLiBhcmdz KSkpKSkKKworOzs+IFxtYWNyb3sodGVzdC1hc3NlcnQgW25hbWVdIGV4cHIpfQorCis7Oz4gTGlr ZSBcc2NoZW1le3Rlc3R9IGJ1dCBldmFsdWF0ZXMgXHZhcntleHByfSBhbmQgY2hlY2tzIHRoYXQg aXQncyB0cnVlLgorCisoZGVmaW5lLXN5bnRheCB0ZXN0LWFzc2VydAorICAoc3ludGF4LXJ1bGVz ICgpCisgICAgKChfIGV4cHIpCisgICAgICh0ZXN0LWFzc2VydCAjZiBleHByKSkKKyAgICAoKF8g bmFtZSBleHByKQorICAgICAodGVzdC1wcm9wYWdhdGUtaW5mbyBuYW1lICNmIGV4cHIgKChhc3Nl cnRpb24gLiAjdCkpKSkKKyAgICAoKHRlc3QgYSAuLi4pCisgICAgICh0ZXN0LXN5bnRheC1lcnJv ciAndGVzdC1hc3NlcnQgIjEgb3IgMiBhcmd1bWVudHMgcmVxdWlyZWQiCisgICAgICAgICAgICAg ICAgICAgICAgICAodGVzdCBhIC4uLikpKSkpCisKKzs7PiBcbWFjcm97KHRlc3Qtbm90IFtuYW1l XSBleHByKX0KKworOzs+IExpa2UgXHNjaGVtZXt0ZXN0fSBidXQgZXZhbHVhdGVzIFx2YXJ7ZXhw cn0gYW5kIGNoZWNrcyB0aGF0IGl0J3MgZmFsc2UuCisKKyhkZWZpbmUtc3ludGF4IHRlc3Qtbm90 CisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gZXhwcikgKHRlc3QtYXNzZXJ0IChub3QgZXhw cikpKQorICAgICgoXyBuYW1lIGV4cHIpICh0ZXN0LWFzc2VydCBuYW1lIChub3QgZXhwcikpKSkp CisKKzs7PiBcbWFjcm97KHRlc3QtdmFsdWVzIFtuYW1lXSBleHBlY3QgZXhwcil9CisKKzs7PiBM aWtlIFxzY2hlbWV7dGVzdH0gYnV0IFx2YXJ7ZXhwZWN0fSBhbmQgXHZhcntleHByfSBjYW4gYm90 aAorOzs+IHJldHVybiBtdWx0aXBsZSB2YWx1ZXMuCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtdmFs dWVzCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gZXhwZWN0IGV4cHIpCisgICAgICh0ZXN0 LXZhbHVlcyAjZiBleHBlY3QgZXhwcikpCisgICAgKChfIG5hbWUgZXhwZWN0IGV4cHIpCisgICAg ICh0ZXN0IG5hbWUgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJkYSAoKSBleHBlY3QpIChsYW1iZGEg cmVzdWx0cyByZXN1bHRzKSkKKyAgICAgICAoY2FsbC13aXRoLXZhbHVlcyAobGFtYmRhICgpIGV4 cHIpIChsYW1iZGEgcmVzdWx0cyByZXN1bHRzKSkpKSkpCisKKzs7PiBcbWFjcm97KHRlc3QtZXJy b3IgW25hbWVdIGV4cHIpfQorCis7Oz4gTGlrZSBcc2NoZW1le3Rlc3R9IGJ1dCBldmFsdWF0ZXMg XHZhcntleHByfSBhbmQgY2hlY2tzIHRoYXQgaXQKKzs7PiByYWlzZXMgYW4gZXJyb3IuCisKKyhk ZWZpbmUtc3ludGF4IHRlc3QtZXJyb3IKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoXyBleHBy KQorICAgICAodGVzdC1lcnJvciAjZiBleHByKSkKKyAgICAoKF8gbmFtZSBleHByKQorICAgICAo dGVzdC1wcm9wYWdhdGUtaW5mbyBuYW1lICNmIGV4cHIgKChleHBlY3QtZXJyb3IgLiAjdCkpKSkK KyAgICAoKHRlc3QgYSAuLi4pCisgICAgICh0ZXN0LXN5bnRheC1lcnJvciAndGVzdC1lcnJvciAi MSBvciAyIGFyZ3VtZW50cyByZXF1aXJlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0 IGEgLi4uKSkpKSkKKworOzsgVE9ETzogRXh0cmFjdCBpbnRlcmVzdGluZyB2YXJpYWJsZXMgc28g d2UgY2FuIHNob3cgdGhlaXIgdmFsdWVzIG9uCis7OyBmYWlsdXJlLgorKGRlZmluZS1zeW50YXgg dGVzdC1wcm9wYWdhdGUtaW5mbworICAoc3ludGF4LXJ1bGVzICgpCisgICAgKCh0ZXN0LXByb3Bh Z2F0ZS1pbmZvIG5hbWUgZXhwZWN0IGV4cHIgaW5mbykKKyAgICAgKHRlc3QtdmFycyAoKSBuYW1l IGV4cGVjdCBleHByIGluZm8pKSkpCisKKyhkZWZpbmUtc3ludGF4IHRlc3QtdmFycworICAoc3lu dGF4LXJ1bGVzICgpCisgICAgKChfICh2YXJzIC4uLikgbiBleHBlY3QgZXhwciAoKGtleSAuIHZh bCkgLi4uKSkKKyAgICAgKHRlc3QtcnVuIChsYW1iZGEgKCkgZXhwZWN0KQorICAgICAgICAgICAg ICAgKGxhbWJkYSAoKSBleHByKQorICAgICAgICAgICAgICAgYCgobmFtZSAuICxuKQorICAgICAg ICAgICAgICAgICAoc291cmNlIC4gZXhwcikKKyAgICAgICAgICAgICAgICAgKHZhci1uYW1lcyAu ICh2YXJzIC4uLikpCisgICAgICAgICAgICAgICAgICh2YXItdmFsdWVzIC4gLChsaXN0IHZhcnMg Li4uKSkKKyAgICAgICAgICAgICAgICAgKGtleSAuIHZhbCkgLi4uKSkpKSkKKworOzs+IFxtYWNy b3sodGVzdC1leGl0KX0KKworOzs+IEV4aXRzIHdpdGggYSBmYWlsdXJlIHN0YXR1cyBpZiBhbnkg dGVzdHMgaGF2ZSBmYWlsZWQsCis7Oz4gYW5kIGEgc3VjY2Vzc2Z1bCBzdGF0dXMgb3RoZXJ3aXNl LgorCisoZGVmaW5lICh0ZXN0LWV4aXQpCisgIChleGl0ICh6ZXJvPyAodGVzdC1mYWlsdXJlLWNv dW50KSkpKQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKzs7IGdyb3VwIGludGVyZmFjZQorCis7Oz4gV3Jh cHMgXHZhcntib2R5fSBhcyBhIHNpbmdsZSB0ZXN0IGdyb3VwLCB3aGljaCBjYW4gYmUgZmlsdGVy ZWQKKzs7PiBhbmQgc3VtbWFyaXplZCBzZXBhcmF0ZWx5LgorCisoZGVmaW5lLXN5bnRheCB0ZXN0 LWdyb3VwCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8gbmFtZS1leHByIGJvZHkgLi4uKQor ICAgICAobGV0ICgobmFtZSBuYW1lLWV4cHIpCisgICAgICAgICAgIChvbGQtZ3JvdXAgKGN1cnJl bnQtdGVzdC1ncm91cCkpKQorICAgICAgIChpZiAobm90IChzdHJpbmc/IG5hbWUpKQorICAgICAg ICAgICAoZXJyb3IgImEgbmFtZSBpcyByZXF1aXJlZCwgZ290ICIgJ25hbWUtZXhwciBuYW1lKSkK KyAgICAgICAodGVzdC1iZWdpbiBuYW1lKQorICAgICAgIChndWFyZAorICAgICAgICAgICAoZXhu CisgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICh3YXJuaW5nICJlcnJvciBpbiBncm91 cCBvdXRzaWRlIG9mIHRlc3RzIikKKyAgICAgICAgICAgICAocHJpbnQtZXhjZXB0aW9uIGV4biAo Y3VycmVudC1lcnJvci1wb3J0KSkKKyAgICAgICAgICAgICAodGVzdC1ncm91cC1pbmMhIChjdXJy ZW50LXRlc3QtZ3JvdXApICdjb3VudCkKKyAgICAgICAgICAgICAodGVzdC1ncm91cC1pbmMhIChj dXJyZW50LXRlc3QtZ3JvdXApICdFUlJPUikKKyAgICAgICAgICAgICAodGVzdC1mYWlsdXJlLWNv dW50ICgrIDEgKHRlc3QtZmFpbHVyZS1jb3VudCkpKSkpCisgICAgICAgICBib2R5IC4uLikKKyAg ICAgICAodGVzdC1lbmQgbmFtZSkKKyAgICAgICAoY3VycmVudC10ZXN0LWdyb3VwIG9sZC1ncm91 cCkpKSkpCisKKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzsgdXRpbGl0aWVzCisKKyhkZWZpbmUtc3ludGF4 IHRlc3Qtc3ludGF4LWVycm9yCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8pIChzeW50YXgt ZXJyb3IgImludmFsaWQgdXNlIG9mIHRlc3Qtc3ludGF4LWVycm9yIikpKSkKKworOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Cis7OyB0ZXN0LWdyb3VwIHJlcHJlc2VudGF0aW9uCisKKzs7IChuYW1lIChwcm9wIHZh bHVlKSAuLi4pCisoZGVmaW5lIChtYWtlLXRlc3QtZ3JvdXAgbmFtZSAuIG8pCisgIChsZXQgKChw YXJlbnQgKGFuZCAocGFpcj8gbykgKGNhciBvKSkpCisgICAgICAgIChncm91cCAobGlzdCBuYW1l IChjb25zICdzdGFydC10aW1lIChjdXJyZW50LXNlY29uZCkpKSkpCisgICAgKHRlc3QtZ3JvdXAt c2V0ISBncm91cCAncGFyZW50IHBhcmVudCkKKyAgICAodGVzdC1ncm91cC1zZXQhIGdyb3VwICd2 ZXJib3NlCisgICAgICAgICAgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAg ICAgICAgICAgKHRlc3QtZ3JvdXAtcmVmIHBhcmVudCAndmVyYm9zZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoY3VycmVudC10ZXN0LXZlcmJvc2l0eSkpKQorICAgICh0ZXN0LWdyb3VwLXNl dCEgZ3JvdXAgJ2xldmVsCisgICAgICAgICAgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAg ICAgICAgICAgICAgICAgICAgKCsgMSAodGVzdC1ncm91cC1yZWYgcGFyZW50ICdsZXZlbCAwKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKKyAgICAodGVzdC1ncm91cC1zZXQhCisgICAg IGdyb3VwCisgICAgICdza2lwLWdyb3VwPworICAgICAob3IgKGFuZCBwYXJlbnQgKHRlc3QtZ3Jv dXAtcmVmIHBhcmVudCAnc2tpcC1ncm91cD8pKQorICAgICAgICAgKG5vdCAoZXZlcnkgKGxhbWJk YSAoZikgKGYgZ3JvdXApKSAoY3VycmVudC10ZXN0LWdyb3VwLWZpbHRlcnMpKSkpKQorICAgIGdy b3VwKSkKKworKGRlZmluZSB0ZXN0LWdyb3VwLW5hbWUgY2FyKQorCisoZGVmaW5lICh0ZXN0LWdy b3VwLXJlZiBncm91cCBmaWVsZCAuIG8pCisgIChpZiBncm91cAorICAgICAgKGFwcGx5IGFzc3Et cmVmIChjZHIgZ3JvdXApIGZpZWxkIG8pCisgICAgICAoYW5kIChwYWlyPyBvKSAoY2FyIG8pKSkp CisKKyhkZWZpbmUgKHRlc3QtZ3JvdXAtc2V0ISBncm91cCBmaWVsZCB2YWx1ZSkKKyAgKGNvbmQK KyAgICgoYXNzcSBmaWVsZCAoY2RyIGdyb3VwKSkKKyAgICA9PiAobGFtYmRhICh4KSAoc2V0LWNk ciEgeCB2YWx1ZSkpKQorICAgKGVsc2UgKHNldC1jZHIhIGdyb3VwIChjb25zIChjb25zIGZpZWxk IHZhbHVlKSAoY2RyIGdyb3VwKSkpKSkpCisKKyhkZWZpbmUgKHRlc3QtZ3JvdXAtaW5jISBncm91 cCBmaWVsZCAuIG8pCisgIChsZXQgKChhbW91bnQgKGlmIChwYWlyPyBvKSAoY2FyIG8pIDEpKSkK KyAgICAoY29uZAorICAgICAoKGFzc3EgZmllbGQgKGNkciBncm91cCkpCisgICAgICA9PiAobGFt YmRhICh4KSAoc2V0LWNkciEgeCAoKyBhbW91bnQgKGNkciB4KSkpKSkKKyAgICAgKGVsc2UgKHNl dC1jZHIhIGdyb3VwIChjb25zIChjb25zIGZpZWxkIGFtb3VudCkgKGNkciBncm91cCkpKSkpKSkK KworKGRlZmluZSAodGVzdC1ncm91cC1wdXNoISBncm91cCBmaWVsZCB2YWx1ZSkKKyAgKGNvbmQK KyAgICgoYXNzcSBmaWVsZCAoY2RyIGdyb3VwKSkKKyAgICA9PiAobGFtYmRhICh4KSAoc2V0LWNk ciEgeCAoY29ucyB2YWx1ZSAoY2RyIHgpKSkpKQorICAgKGVsc2UgKHNldC1jZHIhIGdyb3VwIChj b25zIChjb25zIGZpZWxkIChsaXN0IHZhbHVlKSkgKGNkciBncm91cCkpKSkpKQorCis7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7OzsKKzs7IHV0aWxpdGllcworCisoZGVmaW5lIChhc3NxLXJlZiBscyBrZXkgLiBvKQor ICAoY29uZCAoKGFzc3Ega2V5IGxzKSA9PiBjZHIpCisgICAgICAgICgocGFpcj8gbykgKGNhciBv KSkKKyAgICAgICAgKGVsc2UgI2YpKSkKKworKGRlZmluZSAoYXBwcm94LWVxdWFsPyBhIGIgZXBz aWxvbikKKyAgKGNvbmQKKyAgICgoPiAoYWJzIGEpIChhYnMgYikpCisgICAgKGFwcHJveC1lcXVh bD8gYiBhIGVwc2lsb24pKQorICAgKCh6ZXJvPyBhKQorICAgICg8IChhYnMgYikgZXBzaWxvbikp CisgICAoZWxzZQorICAgICg8IChhYnMgKC8gKC0gYSBiKSBiKSkgZXBzaWxvbikpKSkKKworKGRl ZmluZSAoY2FsbC13aXRoLW91dHB1dC1zdHJpbmcgcHJvYykKKyAgKGxldCAoKG91dCAob3Blbi1v dXRwdXQtc3RyaW5nKSkpCisgICAgKHByb2Mgb3V0KQorICAgIChnZXQtb3V0cHV0LXN0cmluZyBv dXQpKSkKKworOzsgcGFydGlhbCBwcmV0dHkgcHJpbnRpbmcgdG8gYWJicmV2aWF0ZSBgcXVvdGUn IGZvcm1zIGFuZCB0aGUgbGlrZQorKGRlZmluZSAod3JpdGUtdG8tc3RyaW5nIHgpCisgIChjYWxs LXdpdGgtb3V0cHV0LXN0cmluZworICAgIChsYW1iZGEgKG91dCkKKyAgICAgIChsZXQgd3IgKCh4 IHgpKQorICAgICAgICAoaWYgKHBhaXI/IHgpCisgICAgICAgICAgICAoY29uZAorICAgICAgICAg ICAgICgoYW5kIChzeW1ib2w/IChjYXIgeCkpIChwYWlyPyAoY2RyIHgpKSAobnVsbD8gKGNkZHIg eCkpCisgICAgICAgICAgICAgICAgICAgKGFzc3EgKGNhciB4KQorICAgICAgICAgICAgICAgICAg ICAgICAgICcoKHF1b3RlIC4gIiciKSAocXVhc2lxdW90ZSAuICJgIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICh1bnF1b3RlIC4gIiwiKSAodW5xdW90ZS1zcGxpY2luZyAuICIsQCIpKSkp CisgICAgICAgICAgICAgID0+IChsYW1iZGEgKHMpIChkaXNwbGF5IChjZHIgcykgb3V0KSAod3Ig KGNhZHIgeCkpKSkKKyAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAoZGlzcGxheSAi KCIgb3V0KQorICAgICAgICAgICAgICAod3IgKGNhciB4KSkKKyAgICAgICAgICAgICAgKGxldCBs cCAoKGxzIChjZHIgeCkpKQorICAgICAgICAgICAgICAgIChjb25kICgocGFpcj8gbHMpCisgICAg ICAgICAgICAgICAgICAgICAgIChkaXNwbGF5ICIgIiBvdXQpCisgICAgICAgICAgICAgICAgICAg ICAgICh3ciAoY2FyIGxzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxwIChjZHIgbHMpKSkK KyAgICAgICAgICAgICAgICAgICAgICAoKG5vdCAobnVsbD8gbHMpKQorICAgICAgICAgICAgICAg ICAgICAgICAoZGlzcGxheSAiIC4gIiBvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICh3cml0 ZSBscyBvdXQpKSkpCisgICAgICAgICAgICAgIChkaXNwbGF5ICIpIiBvdXQpKSkKKyAgICAgICAg ICAgICh3cml0ZSB4IG91dCkpKSkpKQorCisoZGVmaW5lIChkaXNwbGF5LXRvLXN0cmluZyB4KQor ICAoaWYgKHN0cmluZz8geCkgeCAoY2FsbC13aXRoLW91dHB1dC1zdHJpbmcgKGxhbWJkYSAob3V0 KSAoZGlzcGxheSB4IG91dCkpKSkpCisKKzs7IGlmIHdlIG5lZWQgdG8gdHJ1bmNhdGUsIHRyeSBm aXJzdCBkcm9wcGluZyBsZXQncyB0byBnZXQgYXQgdGhlCis7OyBoZWFydCBvZiB0aGUgZXhwcmVz c2lvbgorKGRlZmluZSAodHJ1bmNhdGUtc291cmNlIHggd2lkdGggLiBvKQorICAobGV0KiAoKHN0 ciAod3JpdGUtdG8tc3RyaW5nIHgpKQorICAgICAgICAgKGxlbiAoc3RyaW5nLWxlbmd0aCBzdHIp KSkKKyAgICAoY29uZAorICAgICAoKDw9IGxlbiB3aWR0aCkKKyAgICAgIHN0cikKKyAgICAgKChh bmQgKHBhaXI/IHgpIChlcT8gJ2xldCAoY2FyIHgpKSkKKyAgICAgIChpZiAoYW5kIChwYWlyPyBv KSAoY2FyIG8pKQorICAgICAgICAgICh0cnVuY2F0ZS1zb3VyY2UgKGNhciAocmV2ZXJzZSB4KSkg d2lkdGggI3QpCisgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi4uLiIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAodHJ1bmNhdGUtc291cmNlIChjYXIgKHJldmVyc2UgeCkpICgtIHdpZHRoIDMp ICN0KSkpKQorICAgICAoKGFuZCAocGFpcj8geCkgKGVxPyAnY2FsbC13aXRoLWN1cnJlbnQtY29u dGludWF0aW9uIChjYXIgeCkpKQorICAgICAgKHRydW5jYXRlLXNvdXJjZSAoY29ucyAnY2FsbC9j YyAoY2RyIHgpKSB3aWR0aCAoYW5kIChwYWlyPyBvKSAoY2FyIG8pKSkpCisgICAgICgoYW5kIChw YWlyPyB4KSAoZXE/ICdjYWxsLXdpdGgtdmFsdWVzIChjYXIgeCkpKQorICAgICAgKHN0cmluZy1h cHBlbmQKKyAgICAgICAiLi4uIgorICAgICAgICh0cnVuY2F0ZS1zb3VyY2UgKGlmIChhbmQgKHBh aXI/IChjYWRyIHgpKSAoZXE/ICdsYW1iZGEgKGNhciAoY2FkciB4KSkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjYXIgKHJldmVyc2UgKGNhZHIgeCkpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjYWRyIHgpKQorICAgICAgICAgICAgICAgICAgICAgICAgKC0gd2lkdGgg MykKKyAgICAgICAgICAgICAgICAgICAgICAgICN0KSkpCisgICAgIChlbHNlCisgICAgICAoc3Ry aW5nLWFwcGVuZAorICAgICAgIChzdWJzdHJpbmcgc3RyIDAgKG1pbiAobWF4IDAgKC0gd2lkdGgg MykpIChzdHJpbmctbGVuZ3RoIHN0cikpKQorICAgICAgICIuLi4iKSkpKSkKKworKGRlZmluZSAo dGVzdC1nZXQtbmFtZSEgaW5mbykKKyAgKG9yCisgICAoYXNzcS1yZWYgaW5mbyAnbmFtZSkKKyAg IChhc3NxLXJlZiBpbmZvICdnZW4tbmFtZSkKKyAgIChsZXQgKChuYW1lCisgICAgICAgICAgKGNv bmQKKyAgICAgICAgICAgKChhc3NxICdzb3VyY2UgaW5mbykKKyAgICAgICAgICAgID0+IChsYW1i ZGEgKHNyYykKKyAgICAgICAgICAgICAgICAgKHRydW5jYXRlLXNvdXJjZSAoY2RyIHNyYykgKC0g KGN1cnJlbnQtY29sdW1uLXdpZHRoKSAxMikpKSkKKyAgICAgICAgICAgKChjdXJyZW50LXRlc3Qt Z3JvdXApCisgICAgICAgICAgICA9PiAobGFtYmRhIChnKQorICAgICAgICAgICAgICAgICAoZGlz cGxheSAibm8gc291cmNlIGluOiAiIChjdXJyZW50LWVycm9yLXBvcnQpKQorICAgICAgICAgICAg ICAgICAod3JpdGUgaW5mbyAoY3VycmVudC1lcnJvci1wb3J0KSkKKyAgICAgICAgICAgICAgICAg KGRpc3BsYXkgIlxuIiAoY3VycmVudC1lcnJvci1wb3J0KSkKKyAgICAgICAgICAgICAgICAgKHN0 cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgICJ0ZXN0LSIKKyAgICAgICAgICAgICAgICAg IChudW1iZXItPnN0cmluZyAodGVzdC1ncm91cC1yZWYgZyAnY291bnQgMCkpKSkpCisgICAgICAg ICAgIChlbHNlICIiKSkpKQorICAgICAoaWYgKHBhaXI/IGluZm8pCisgICAgICAgICAoc2V0LWNk ciEgaW5mbyAoY29ucyAoY29ucyAnZ2VuLW5hbWUgbmFtZSkgKGNkciBpbmZvKSkpKQorICAgICBu YW1lKSkpCisKKyhkZWZpbmUgKHRlc3QtcHJpbnQtbmFtZSBpbmZvIC4gaW5kZW50KQorICAobGV0 ICgod2lkdGggKC0gKGN1cnJlbnQtY29sdW1uLXdpZHRoKQorICAgICAgICAgICAgICAgICAgKG9y IChhbmQgKHBhaXI/IGluZGVudCkgKGNhciBpbmRlbnQpKSAwKSkpCisgICAgICAgIChuYW1lICh0 ZXN0LWdldC1uYW1lISBpbmZvKSkpCisgICAgKGRpc3BsYXkgbmFtZSkKKyAgICAoZGlzcGxheSAi ICIpCisgICAgKGxldCAoKGRpZmYgKC0gd2lkdGggOSAoc3RyaW5nLWxlbmd0aCBuYW1lKSkpKQor ICAgICAgKGNvbmQKKyAgICAgICAoKHBvc2l0aXZlPyBkaWZmKQorICAgICAgICAoZGlzcGxheSAo bWFrZS1zdHJpbmcgZGlmZiAjXC4pKSkpKQorICAgIChkaXNwbGF5ICIgIikKKyAgICAoZmx1c2gt b3V0cHV0LXBvcnQpKSkKKworKGRlZmluZSAodGVzdC1ncm91cC1pbmRlbnQtd2lkdGggZ3JvdXAp CisgIChsZXQgKChsZXZlbCAobWF4IDAgKCsgMSAoLSAodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ2xl dmVsIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdC1maXJzdC1pbmRlbnRh dGlvbikpKSkpKQorICAgICgqIDQgKG1pbiBsZXZlbCAodGVzdC1tYXgtaW5kZW50YXRpb24pKSkp KQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKworKGRlZmluZSAodGVzdC1leHBhbmQtaW5mbyBpbmZvKQor ICAobGV0ICgoZXhwciAoYXNzcS1yZWYgaW5mbyAnc291cmNlKSkpCisgICAgKGlmIChhbmQgKHBh aXI/IGV4cHIpCisgICAgICAgICAgICAgKHBhaXItc291cmNlIGV4cHIpCisgICAgICAgICAgICAg KG5vdCAoYXNzcS1yZWYgaW5mbyAnbGluZS1udW1iZXIpKSkKKyAgICAgICAgYCgoZmlsZS1uYW1l IC4gLChjYXIgKHBhaXItc291cmNlIGV4cHIpKSkKKyAgICAgICAgICAobGluZS1udW1iZXIgLiAs KGNkciAocGFpci1zb3VyY2UgZXhwcikpKQorICAgICAgICAgICxAaW5mbykKKyAgICAgICAgaW5m bykpKQorCisoZGVmaW5lICh0ZXN0LXJ1biBleHBlY3QgZXhwciBpbmZvKQorICAobGV0ICgoaW5m byAodGVzdC1leHBhbmQtaW5mbyBpbmZvKSkpCisgICAgKGlmIChhbmQgKGNvbmQgKChjdXJyZW50 LXRlc3QtZ3JvdXApCisgICAgICAgICAgICAgICAgICAgID0+IChsYW1iZGEgKGcpIChub3QgKHRl c3QtZ3JvdXAtcmVmIGcgJ3NraXAtZ3JvdXA/KSkpKQorICAgICAgICAgICAgICAgICAgIChlbHNl ICN0KSkKKyAgICAgICAgICAgICAoZXZlcnkgKGxhbWJkYSAoZikgKGYgaW5mbykpIChjdXJyZW50 LXRlc3QtZmlsdGVycykpKQorICAgICAgICAoKGN1cnJlbnQtdGVzdC1hcHBsaWVyKSBleHBlY3Qg ZXhwciBpbmZvKQorICAgICAgICAoKGN1cnJlbnQtdGVzdC1za2lwcGVyKSBpbmZvKSkpKQorCiso ZGVmaW5lICh0ZXN0LWRlZmF1bHQtYXBwbGllciBleHBlY3QgZXhwciBpbmZvKQorICAobGV0KiAo KGdyb3VwIChjdXJyZW50LXRlc3QtZ3JvdXApKQorICAgICAgICAgKGluZGVudCAoYW5kIGdyb3Vw ICh0ZXN0LWdyb3VwLWluZGVudC13aWR0aCBncm91cCkpKSkKKyAgICAoY29uZAorICAgICAoKHRl c3QtZ3JvdXAtcmVmIGdyb3VwICd2ZXJib3NlKQorICAgICAgKGlmIChhbmQgaW5kZW50IChwb3Np dGl2ZT8gaW5kZW50KSkKKyAgICAgICAgICAoZGlzcGxheSAobWFrZS1zdHJpbmcgaW5kZW50ICNc c3BhY2UpKSkKKyAgICAgICh0ZXN0LXByaW50LW5hbWUgaW5mbyBpbmRlbnQpKSkKKyAgICAobGV0 ICgoZXhwZWN0LXZhbAorICAgICAgICAgICAoZ3VhcmQKKyAgICAgICAgICAgICAgIChleG4KKyAg ICAgICAgICAgICAgICAoZWxzZQorICAgICAgICAgICAgICAgICAod2FybmluZyAiYmFkIGV4cGVj dCB2YWx1ZSIpCisgICAgICAgICAgICAgICAgIChwcmludC1leGNlcHRpb24gZXhuIChjdXJyZW50 LWVycm9yLXBvcnQpKQorICAgICAgICAgICAgICAgICAjZikpCisgICAgICAgICAgICAgKGV4cGVj dCkpKSkKKyAgICAgIChndWFyZAorICAgICAgICAgIChleG4KKyAgICAgICAgICAgKGVsc2UKKyAg ICAgICAgICAgICgoY3VycmVudC10ZXN0LWhhbmRsZXIpCisgICAgICAgICAgICAgKGlmIChhc3Nx LXJlZiBpbmZvICdleHBlY3QtZXJyb3IpICdQQVNTICdFUlJPUikKKyAgICAgICAgICAgICAoYXBw ZW5kIGAoKGV4Y2VwdGlvbiAuICxleG4pKSBpbmZvKSkpKQorICAgICAgICAobGV0ICgocmVzIChl eHByKSkpCisgICAgICAgICAgKGxldCAoKHN0YXR1cworICAgICAgICAgICAgICAgICAoaWYgKGFu ZCAobm90IChhc3NxLXJlZiBpbmZvICdleHBlY3QtZXJyb3IpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKGFzc3EtcmVmIGluZm8gJ2Fzc2VydGlvbikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjdXJyZW50 LXRlc3QtY29tcGFyYXRvcikgZXhwZWN0LXZhbCByZXMpKSkKKyAgICAgICAgICAgICAgICAgICAg ICdQQVNTCisgICAgICAgICAgICAgICAgICAgICAnRkFJTCkpCisgICAgICAgICAgICAgICAgKGlu Zm8gYCgocmVzdWx0IC4gLHJlcykgKGV4cGVjdGVkIC4gLGV4cGVjdC12YWwpICxAaW5mbykpKQor ICAgICAgICAgICAgKChjdXJyZW50LXRlc3QtaGFuZGxlcikgc3RhdHVzIGluZm8pKSkpKSkpCisK KyhkZWZpbmUgKHRlc3QtZGVmYXVsdC1za2lwcGVyIGluZm8pCisgICgoY3VycmVudC10ZXN0LWhh bmRsZXIpICdTS0lQIGluZm8pKQorCisoZGVmaW5lICh0ZXN0LXN0YXR1cy1jb2xvciBzdGF0dXMp CisgIChjYXNlIHN0YXR1cworICAgICgoRVJST1IpIChsYW1iZGEgKHgpICh1bmRlcmxpbmUgKHJl ZCB4KSkpKQorICAgICgoRkFJTCkgcmVkKQorICAgICgoU0tJUCkgeWVsbG93KQorICAgIChlbHNl IChsYW1iZGEgKHgpIHgpKSkpCisKKyhkZWZpbmUgKHRlc3Qtc3RhdHVzLW1lc3NhZ2Ugc3RhdHVz KQorICAoKHRlc3Qtc3RhdHVzLWNvbG9yIHN0YXR1cykgc3RhdHVzKSkKKworKGRlZmluZSAodGVz dC1zdGF0dXMtY29kZSBzdGF0dXMpCisgICgodGVzdC1zdGF0dXMtY29sb3Igc3RhdHVzKQorICAg KGNhc2Ugc3RhdHVzCisgICAgICgoRVJST1IpICIhIikKKyAgICAgKChGQUlMKSAieCIpCisgICAg ICgoU0tJUCkgIi0iKQorICAgICAoZWxzZSAiLiIpKSkpCisKKyhkZWZpbmUgKHRlc3QtcHJpbnQt ZXhwbGFuYXRpb24gaW5kZW50IHN0YXR1cyBpbmZvKQorICAoY29uZAorICAgKChlcT8gc3RhdHVz ICdFUlJPUikKKyAgICAoZGlzcGxheSBpbmRlbnQpCisgICAgKGNvbmQgKChhc3NxICdleGNlcHRp b24gaW5mbykKKyAgICAgICAgICAgPT4gKGxhbWJkYSAoZSkKKyAgICAgICAgICAgICAgICAocHJp bnQtZXhjZXB0aW9uIChjZHIgZSkgKGN1cnJlbnQtb3V0cHV0LXBvcnQpKSkpKSkKKyAgICgoYW5k IChlcT8gc3RhdHVzICdGQUlMKSAoYXNzcS1yZWYgaW5mbyAnYXNzZXJ0aW9uKSkKKyAgICAoZGlz cGxheSBpbmRlbnQpCisgICAgKGRpc3BsYXkgImFzc2VydGlvbiBmYWlsZWRcbiIpKQorICAgKChh bmQgKGVxPyBzdGF0dXMgJ0ZBSUwpIChhc3NxLXJlZiBpbmZvICdleHBlY3QtZXJyb3IpKQorICAg IChkaXNwbGF5IGluZGVudCkKKyAgICAoZGlzcGxheSAiZXhwZWN0ZWQgYW4gZXJyb3IgYnV0IGdv dCAiKQorICAgICh3cml0ZSAoYXNzcS1yZWYgaW5mbyAncmVzdWx0KSkgKG5ld2xpbmUpKQorICAg KChlcT8gc3RhdHVzICdGQUlMKQorICAgIChkaXNwbGF5IGluZGVudCkKKyAgICAoZGlzcGxheSAi ZXhwZWN0ZWQgIikgKHdyaXRlIChhc3NxLXJlZiBpbmZvICdleHBlY3RlZCkpCisgICAgKGRpc3Bs YXkgIiBidXQgZ290ICIpICh3cml0ZSAoYXNzcS1yZWYgaW5mbyAncmVzdWx0KSkgKG5ld2xpbmUp KSkKKyAgOzsgcHJpbnQgdmFyaWFibGVzCisgIChjb25kCisgICAoKGFuZCAobWVtcSBzdGF0dXMg JyhGQUlMIEVSUk9SKSkgKGFzc3EtcmVmIGluZm8gJ3Zhci1uYW1lcykpCisgICAgPT4gKGxhbWJk YSAobmFtZXMpCisgICAgICAgICAobGV0ICgodmFsdWVzIChhc3NxLXJlZiBpbmZvICd2YXItdmFs dWVzKSkpCisgICAgICAgICAgIChpZiAoYW5kIChwYWlyPyBuYW1lcykKKyAgICAgICAgICAgICAg ICAgICAgKHBhaXI/IHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgKD0gKGxlbmd0aCBuYW1l cykgKGxlbmd0aCB2YWx1ZXMpKSkKKyAgICAgICAgICAgICAgIChsZXQgKChpbmRlbnQyCisgICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgaW5kZW50IChtYWtlLXN0cmluZyAyICNc c3BhY2UpKSkpCisgICAgICAgICAgICAgICAgIChmb3ItZWFjaAorICAgICAgICAgICAgICAgICAg KGxhbWJkYSAobmFtZSB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgaW5kZW50 MikgKHdyaXRlIG5hbWUpIChkaXNwbGF5ICI6ICIpCisgICAgICAgICAgICAgICAgICAgICh3cml0 ZSB2YWx1ZSkgKG5ld2xpbmUpKQorICAgICAgICAgICAgICAgICAgbmFtZXMgdmFsdWVzKSkpKSkp KSkKKworKGRlZmluZSAodGVzdC1wcmludC1zb3VyY2UgaW5kZW50IHN0YXR1cyBpbmZvKQorICAo Y2FzZSBzdGF0dXMKKyAgICAoKEZBSUwgRVJST1IpCisgICAgIChjb25kCisgICAgICAoKGFzc3Et cmVmIGluZm8gJ2xpbmUtbnVtYmVyKQorICAgICAgID0+IChsYW1iZGEgKGxpbmUpCisgICAgICAg ICAgICAoZGlzcGxheSAiICAgIG9uIGxpbmUgIikKKyAgICAgICAgICAgICh3cml0ZSBsaW5lKQor ICAgICAgICAgICAgKGNvbmQgKChhc3NxLXJlZiBpbmZvICdmaWxlLW5hbWUpCisgICAgICAgICAg ICAgICAgICAgPT4gKGxhbWJkYSAoZmlsZSkgKGRpc3BsYXkgIiBvZiBmaWxlICIpICh3cml0ZSBm aWxlKSkpKQorICAgICAgICAgICAgKG5ld2xpbmUpKSkpCisgICAgIChjb25kCisgICAgICAoKGFz c3EtcmVmIGluZm8gJ3NvdXJjZSkKKyAgICAgICA9PiAobGFtYmRhIChzKQorICAgICAgICAgICAg KGNvbmQKKyAgICAgICAgICAgICAoKG9yIChhc3NxLXJlZiBpbmZvICduYW1lKQorICAgICAgICAg ICAgICAgICAgKD4gKHN0cmluZy1sZW5ndGggKHdyaXRlLXRvLXN0cmluZyBzKSkKKyAgICAgICAg ICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbi13aWR0aCkpKQorICAgICAgICAgICAgICAoZGlz cGxheSAod3JpdGUtdG8tc3RyaW5nIHMpKQorICAgICAgICAgICAgICAobmV3bGluZSkpKSkpKQor ICAgICAoY29uZAorICAgICAgKChhc3NxLXJlZiBpbmZvICd2YWx1ZXMpCisgICAgICAgPT4gKGxh bWJkYSAodikKKyAgICAgICAgICAgIChmb3ItZWFjaAorICAgICAgICAgICAgIChsYW1iZGEgKHYp CisgICAgICAgICAgICAgICAoZGlzcGxheSAiICAgICIpIChkaXNwbGF5IChjYXIgdikpCisgICAg ICAgICAgICAgICAoZGlzcGxheSAiOiAiKSAod3JpdGUgKGNkciB2KSkgKG5ld2xpbmUpKQorICAg ICAgICAgICAgIHYpKSkpKSkpCisKKyhkZWZpbmUgKHRlc3QtcHJpbnQtZmFpbHVyZSBpbmRlbnQg c3RhdHVzIGluZm8pCisgIDs7IGRpc3BsYXkgc3RhdHVzIGV4cGxhbmF0aW9uCisgICh0ZXN0LXBy aW50LWV4cGxhbmF0aW9uIGluZGVudCBzdGF0dXMgaW5mbykKKyAgOzsgZGlzcGxheSBsaW5lLCBz b3VyY2UgYW5kIHZhbHVlcyBpbmZvCisgICh0ZXN0LXByaW50LXNvdXJjZSBpbmRlbnQgc3RhdHVz IGluZm8pKQorCisoZGVmaW5lICh0ZXN0LXByaW50LWhlYWRlci1saW5lIHN0ciAuIGluZGVudCkK KyAgKGxldCogKChoZWFkZXIgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAgICAgIChtYWtl LXN0cmluZyAoaWYgKHBhaXI/IGluZGVudCkgKGNhciBpbmRlbnQpIDApICNcc3BhY2UpCisgICAg ICAgICAgICAgICAgICAiLS0gIiBzdHIgIiAiKSkKKyAgICAgICAgIChsZW4gKHN0cmluZy1sZW5n dGggaGVhZGVyKSkpCisgICAgKGRpc3BsYXkgKGJvbGQgaGVhZGVyKSkKKyAgICAoZGlzcGxheSAo bWFrZS1zdHJpbmcgKG1heCAwICgtIChjdXJyZW50LWNvbHVtbi13aWR0aCkgbGVuKSkgI1wtKSkK KyAgICAobmV3bGluZSkpKQorCisoZGVmaW5lICh0ZXN0LWRlZmF1bHQtaGFuZGxlciBzdGF0dXMg aW5mbykKKyAgKGRlZmluZSBpbmRlbnQKKyAgICAobWFrZS1zdHJpbmcKKyAgICAgKCsgNCAoY29u ZCAoKGN1cnJlbnQtdGVzdC1ncm91cCkKKyAgICAgICAgICAgICAgICAgPT4gKGxhbWJkYSAoZ3Jv dXApIChvciAodGVzdC1ncm91cC1pbmRlbnQtd2lkdGggZ3JvdXApIDApKSkKKyAgICAgICAgICAg ICAgICAoZWxzZSAwKSkpCisgICAgICNcc3BhY2UpKQorICA7OyB1cGRhdGUgZ3JvdXAgaW5mbwor ICAoY29uZAorICAgKChjdXJyZW50LXRlc3QtZ3JvdXApCisgICAgPT4gKGxhbWJkYSAoZ3JvdXAp CisgICAgICAgICAoaWYgKG5vdCAoZXE/ICdTS0lQIHN0YXR1cykpCisgICAgICAgICAgICAgKHRl c3QtZ3JvdXAtaW5jISBncm91cCAnY291bnQpKQorICAgICAgICAgKHRlc3QtZ3JvdXAtaW5jISBn cm91cCBzdGF0dXMpCisgICAgICAgICA7OyBtYXliZSB3cmFwIGxvbmcgc3RhdHVzIGxpbmVzCisg ICAgICAgICAobGV0ICgod2lkdGggKG1heCAoLSAoY3VycmVudC1jb2x1bW4td2lkdGgpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHRlc3QtZ3JvdXAtaW5kZW50LXdpZHRoIGdy b3VwKSAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQpKQorICAgICAgICAgICAgICAg KGNvbHVtbgorICAgICAgICAgICAgICAgICgrIChzdHJpbmctbGVuZ3RoIChvciAodGVzdC1ncm91 cC1uYW1lIGdyb3VwKSAiIikpCisgICAgICAgICAgICAgICAgICAgKG9yICh0ZXN0LWdyb3VwLXJl ZiBncm91cCAnY291bnQpIDApCisgICAgICAgICAgICAgICAgICAgMSkpKQorICAgICAgICAgICAo aWYgKGFuZCAoemVybz8gKG1vZHVsbyBjb2x1bW4gd2lkdGgpKQorICAgICAgICAgICAgICAgICAg ICAobm90ICh0ZXN0LWdyb3VwLXJlZiBncm91cCAndmVyYm9zZSkpKQorICAgICAgICAgICAgICAg KGRpc3BsYXkgKHN0cmluZy1hcHBlbmQgIlxuIiAoc3RyaW5nLWNvcHkgaW5kZW50IDQpKSkpKSkp KQorICA7OyB1cGRhdGUgZ2xvYmFsIGZhaWx1cmUgY291bnQgZm9yIGV4aXQgc3RhdHVzCisgIChj b25kCisgICAoKG9yIChlcT8gc3RhdHVzICdGQUlMKSAoZXE/IHN0YXR1cyAnRVJST1IpKQorICAg ICh0ZXN0LWZhaWx1cmUtY291bnQgKCsgMSAodGVzdC1mYWlsdXJlLWNvdW50KSkpKSkKKyAgKGNv bmQKKyAgICgoZXE/IHN0YXR1cyAnU0tJUCkpCisgICAoKHRlc3QtZ3JvdXAtcmVmIChjdXJyZW50 LXRlc3QtZ3JvdXApICd2ZXJib3NlKQorICAgIDs7IGRpc3BsYXkgc3RhdHVzCisgICAgKGRpc3Bs YXkgIlsiKQorICAgIChpZiAobm90IChlcT8gc3RhdHVzICdFUlJPUikpIChkaXNwbGF5ICIgIikp IDsgcGFkCisgICAgKGRpc3BsYXkgKHRlc3Qtc3RhdHVzLW1lc3NhZ2Ugc3RhdHVzKSkKKyAgICAo ZGlzcGxheSAiXSIpCisgICAgKG5ld2xpbmUpCisgICAgKHRlc3QtcHJpbnQtZmFpbHVyZSBpbmRl bnQgc3RhdHVzIGluZm8pKQorICAgKGVsc2UKKyAgICAoZGlzcGxheSAodGVzdC1zdGF0dXMtY29k ZSBzdGF0dXMpKQorICAgIChjb25kCisgICAgICgoYW5kIChtZW1xIHN0YXR1cyAnKEZBSUwgRVJS T1IpKSAoY3VycmVudC10ZXN0LWdyb3VwKSkKKyAgICAgID0+IChsYW1iZGEgKGdyb3VwKQorICAg ICAgICAgICAodGVzdC1ncm91cC1wdXNoISBncm91cCAnZmFpbHVyZXMgKGxpc3QgaW5kZW50IHN0 YXR1cyBpbmZvKSkpKSkKKyAgICAoY29uZCAoKGN1cnJlbnQtdGVzdC1ncm91cCkKKyAgICAgICAg ICAgPT4gKGxhbWJkYSAoZ3JvdXApICh0ZXN0LWdyb3VwLXNldCEgZ3JvdXAgJ3RyYWlsaW5nICN0 KSkpKSkpCisgIChmbHVzaC1vdXRwdXQtcG9ydCkKKyAgc3RhdHVzKQorCisoZGVmaW5lICh0ZXN0 LWRlZmF1bHQtZ3JvdXAtcmVwb3J0ZXIgZ3JvdXApCisgIChkZWZpbmUgKHBsdXJhbCB3b3JkIG4p CisgICAgKGlmICg9IG4gMSkgd29yZCAoc3RyaW5nLWFwcGVuZCB3b3JkICJzIikpKQorICAoZGVm aW5lIChwZXJjZW50IG4gZCkKKyAgICAoc3RyaW5nLWFwcGVuZCAiICgiIChudW1iZXItPnN0cmlu ZyAoLyAocm91bmQgKCogMTAwMC4wICgvIG4gZCkpKSAxMCkpCisgICAgICAgICAgICAgICAgICAg IiUpIikpCisgIChsZXQqICgoZW5kLXRpbWUgKGN1cnJlbnQtc2Vjb25kKSkKKyAgICAgICAgIChz dGFydC10aW1lICh0ZXN0LWdyb3VwLXJlZiBncm91cCAnc3RhcnQtdGltZSkpCisgICAgICAgICAo ZHVyYXRpb24gKC0gZW5kLXRpbWUgc3RhcnQtdGltZSkpCisgICAgICAgICAoYmFzZS1jb3VudCAo b3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICdjb3VudCkgMCkpCisgICAgICAgICAoYmFzZS1wYXNz IChvciAodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ1BBU1MpIDApKQorICAgICAgICAgKGJhc2UtZmFp bCAob3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICdGQUlMKSAwKSkKKyAgICAgICAgIChiYXNlLWVy ciAob3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICdFUlJPUikgMCkpCisgICAgICAgICAoc2tpcCAo b3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICdTS0lQKSAwKSkKKyAgICAgICAgIChwYXNzICgrIGJh c2UtcGFzcyAob3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICd0b3RhbC1wYXNzKSAwKSkpCisgICAg ICAgICAoZmFpbCAoKyBiYXNlLWZhaWwgKG9yICh0ZXN0LWdyb3VwLXJlZiBncm91cCAndG90YWwt ZmFpbCkgMCkpKQorICAgICAgICAgKGVyciAoKyBiYXNlLWVyciAob3IgKHRlc3QtZ3JvdXAtcmVm IGdyb3VwICd0b3RhbC1lcnJvcikgMCkpKQorICAgICAgICAgKGNvdW50ICgrIHBhc3MgZmFpbCBl cnIpKQorICAgICAgICAgKHN1Ymdyb3Vwcy1jb3VudCAob3IgKHRlc3QtZ3JvdXAtcmVmIGdyb3Vw ICdzdWJncm91cHMtY291bnQpIDApKQorICAgICAgICAgKHN1Ymdyb3Vwcy1wYXNzIChvciAodGVz dC1ncm91cC1yZWYgZ3JvdXAgJ3N1Ymdyb3Vwcy1wYXNzKSAwKSkKKyAgICAgICAgIChpbmRlbnQg KG1ha2Utc3RyaW5nIChvciAodGVzdC1ncm91cC1pbmRlbnQtd2lkdGggZ3JvdXApIDApICNcc3Bh Y2UpKSkKKyAgICAoaWYgKGFuZCAobm90ICh0ZXN0LWdyb3VwLXJlZiBncm91cCAndmVyYm9zZSkp CisgICAgICAgICAgICAgKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICd0cmFpbGluZykpCisgICAgICAg IChuZXdsaW5lKSkKKyAgICAoY29uZAorICAgICAoKG9yIChwb3NpdGl2ZT8gY291bnQpIChwb3Np dGl2ZT8gc3ViZ3JvdXBzLWNvdW50KSkKKyAgICAgIChpZiAobm90ICg9IGJhc2UtY291bnQgKCsg YmFzZS1wYXNzIGJhc2UtZmFpbCBiYXNlLWVycikpKQorICAgICAgICAgICh3YXJuaW5nICJpbmNv bnNpc3RlbnQgY291bnQ6IgorICAgICAgICAgICAgICAgICAgIGJhc2UtY291bnQgYmFzZS1wYXNz IGJhc2UtZmFpbCBiYXNlLWVycikpCisgICAgICAoY29uZAorICAgICAgICgocG9zaXRpdmU/IGNv dW50KQorICAgICAgICAoZGlzcGxheSBpbmRlbnQpCisgICAgICAgIChkaXNwbGF5CisgICAgICAg ICAoKGlmICg9IHBhc3MgY291bnQpIGdyZWVuIChsYW1iZGEgKHgpIHgpKQorICAgICAgICAgIChz dHJpbmctYXBwZW5kCisgICAgICAgICAgIChudW1iZXItPnN0cmluZyBwYXNzKSAiIG91dCBvZiAi IChudW1iZXItPnN0cmluZyBjb3VudCkKKyAgICAgICAgICAgKHBlcmNlbnQgcGFzcyBjb3VudCkp KSkKKyAgICAgICAgKGRpc3BsYXkKKyAgICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAg KHBsdXJhbCAiIHRlc3QiIHBhc3MpICIgcGFzc2VkIGluICIKKyAgICAgICAgICAobnVtYmVyLT5z dHJpbmcgZHVyYXRpb24pICIgc2Vjb25kcyIKKyAgICAgICAgICAoY29uZAorICAgICAgICAgICAo KHplcm8/IHNraXApICIiKQorICAgICAgICAgICAoZWxzZSAoc3RyaW5nLWFwcGVuZCAiICgiIChu dW1iZXItPnN0cmluZyBza2lwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGx1 cmFsICIgdGVzdCIgc2tpcCkgIiBza2lwcGVkKSIpKSkKKyAgICAgICAgICAiLlxuIikpKSkKKyAg ICAgIChjb25kICgocG9zaXRpdmU/IGZhaWwpCisgICAgICAgICAgICAgKGRpc3BsYXkgaW5kZW50 KQorICAgICAgICAgICAgIChkaXNwbGF5CisgICAgICAgICAgICAgIChyZWQKKyAgICAgICAgICAg ICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgICAgICAgKG51bWJlci0+c3RyaW5nIGZhaWwp IChwbHVyYWwgIiBmYWlsdXJlIiBmYWlsKQorICAgICAgICAgICAgICAgIChwZXJjZW50IGZhaWwg Y291bnQpICIuXG4iKSkpKSkKKyAgICAgIChjb25kICgocG9zaXRpdmU/IGVycikKKyAgICAgICAg ICAgICAoZGlzcGxheSBpbmRlbnQpCisgICAgICAgICAgICAgKGRpc3BsYXkKKyAgICAgICAgICAg ICAgKChsYW1iZGEgKHgpICh1bmRlcmxpbmUgKHJlZCB4KSkpCisgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZAorICAgICAgICAgICAgICAgIChudW1iZXItPnN0cmluZyBlcnIpIChwbHVyYWwg IiBlcnJvciIgZXJyKQorICAgICAgICAgICAgICAgIChwZXJjZW50IGVyciBjb3VudCkgIi5cbiIp KSkpKQorICAgICAgKGNvbmQKKyAgICAgICAoKG5vdCAodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ3Zl cmJvc2UpKQorICAgICAgICAoZm9yLWVhY2gKKyAgICAgICAgIChsYW1iZGEgKGZhaWx1cmUpCisg ICAgICAgICAgIChkaXNwbGF5IGluZGVudCkKKyAgICAgICAgICAgKGRpc3BsYXkgKHJlZAorICAg ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgKGRpc3BsYXktdG8tc3RyaW5nIChjYWRy IGZhaWx1cmUpKSAiOiAiKSkpCisgICAgICAgICAgIChkaXNwbGF5ICh0ZXN0LWdldC1uYW1lISAo Y2FyIChjZGRyIGZhaWx1cmUpKSkpCisgICAgICAgICAgIChuZXdsaW5lKQorICAgICAgICAgICAo YXBwbHkgdGVzdC1wcmludC1mYWlsdXJlIGZhaWx1cmUpKQorICAgICAgICAgKHJldmVyc2UgKG9y ICh0ZXN0LWdyb3VwLXJlZiBncm91cCAnZmFpbHVyZXMpICcoKSkpKSkpCisgICAgICAoY29uZAor ICAgICAgICgocG9zaXRpdmU/IHN1Ymdyb3Vwcy1jb3VudCkKKyAgICAgICAgKGRpc3BsYXkgaW5k ZW50KQorICAgICAgICAoZGlzcGxheQorICAgICAgICAgKChpZiAoPSBzdWJncm91cHMtcGFzcyBz dWJncm91cHMtY291bnQpCisgICAgICAgICAgICAgIGdyZWVuIChsYW1iZGEgKHgpIHgpKQorICAg ICAgICAgIChzdHJpbmctYXBwZW5kCisgICAgICAgICAgIChudW1iZXItPnN0cmluZyBzdWJncm91 cHMtcGFzcykgIiBvdXQgb2YgIgorICAgICAgICAgICAobnVtYmVyLT5zdHJpbmcgc3ViZ3JvdXBz LWNvdW50KQorICAgICAgICAgICAocGVyY2VudCBzdWJncm91cHMtcGFzcyBzdWJncm91cHMtY291 bnQpKSkpCisgICAgICAgIChkaXNwbGF5IChwbHVyYWwgIiBzdWJncm91cCIgc3ViZ3JvdXBzLXBh c3MpKQorICAgICAgICAoZGlzcGxheSAiIHBhc3NlZC5cbiIpKSkpKQorICAgIChjb25kCisgICAg ICgodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ3ZlcmJvc2UpCisgICAgICAodGVzdC1wcmludC1oZWFk ZXItbGluZQorICAgICAgIChzdHJpbmctYXBwZW5kICJkb25lIHRlc3RpbmcgIiAob3IgKHRlc3Qt Z3JvdXAtbmFtZSBncm91cCkgIiIpKQorICAgICAgIChvciAodGVzdC1ncm91cC1pbmRlbnQtd2lk dGggZ3JvdXApIDApKQorICAgICAgKG5ld2xpbmUpKSkKKyAgICAoY29uZAorICAgICAoKHRlc3Qt Z3JvdXAtcmVmIGdyb3VwICdwYXJlbnQpCisgICAgICA9PiAobGFtYmRhIChwYXJlbnQpCisgICAg ICAgICAgICh0ZXN0LWdyb3VwLXNldCEgcGFyZW50ICd0cmFpbGluZyAjZikKKyAgICAgICAgICAg KHRlc3QtZ3JvdXAtaW5jISBwYXJlbnQgJ3RvdGFsLXBhc3MgcGFzcykKKyAgICAgICAgICAgKHRl c3QtZ3JvdXAtaW5jISBwYXJlbnQgJ3RvdGFsLWZhaWwgZmFpbCkKKyAgICAgICAgICAgKHRlc3Qt Z3JvdXAtaW5jISBwYXJlbnQgJ3RvdGFsLWVycm9yIGVycikpKSkpKQorCis7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKKworKGRlZmluZSAodGVzdC1lcXVhbD8gZXhwZWN0IHJlcykKKyAgKG9yIChlcXVhbD8gZXhw ZWN0IHJlcykKKyAgICAgIChpZiAocmVhbD8gZXhwZWN0KQorICAgICAgICAgIChhbmQgKGluZXhh Y3Q/IGV4cGVjdCkKKyAgICAgICAgICAgICAgIChyZWFsPyByZXMpCisgICAgICAgICAgICAgICAo aW5leGFjdD8gcmVzKQorICAgICAgICAgICAgICAgKGFwcHJveC1lcXVhbD8gZXhwZWN0IHJlcyAo Y3VycmVudC10ZXN0LWVwc2lsb24pKSkKKyAgICAgICAgICAoYW5kIChjb21wbGV4PyByZXMpCisg ICAgICAgICAgICAgICAoY29tcGxleD8gZXhwZWN0KQorICAgICAgICAgICAgICAgKHRlc3QtZXF1 YWw/IChyZWFsLXBhcnQgZXhwZWN0KSAocmVhbC1wYXJ0IHJlcykpCisgICAgICAgICAgICAgICAo dGVzdC1lcXVhbD8gKGltYWctcGFydCBleHBlY3QpIChpbWFnLXBhcnQgcmVzKSkpKSkpCisKKzs7 PiBCZWdpbiB0ZXN0aW5nIGEgbmV3IGdyb3VwIHVudGlsIHRoZSBjbG9zaW5nIFxzY2hlbWV7KHRl c3QtZW5kKX0uCisKKyhkZWZpbmUgKHRlc3QtYmVnaW4gLiBvKQorICAobGV0KiAoKG5hbWUgKGlm IChwYWlyPyBvKSAoY2FyIG8pICIiKSkKKyAgICAgICAgIChwYXJlbnQgKGN1cnJlbnQtdGVzdC1n cm91cCkpCisgICAgICAgICAoZ3JvdXAgKG1ha2UtdGVzdC1ncm91cCBuYW1lIHBhcmVudCkpKQor ICAgIChjb25kCisgICAgICgoYW5kIHBhcmVudAorICAgICAgICAgICA7OyAoemVybz8gKHRlc3Qt Z3JvdXAtcmVmIHBhcmVudCAnY291bnQgMCkpCisgICAgICAgICAgICh6ZXJvPyAodGVzdC1ncm91 cC1yZWYgcGFyZW50ICdzdWJncm91cHMtY291bnQgMCkpKQorICAgICAgKG5ld2xpbmUpKSkKKyAg ICAoY29uZAorICAgICAoKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICd2ZXJib3NlKQorICAgICAgKHRl c3QtcHJpbnQtaGVhZGVyLWxpbmUKKyAgICAgICAoc3RyaW5nLWFwcGVuZCAidGVzdGluZyAiIG5h bWUpCisgICAgICAgKG9yICh0ZXN0LWdyb3VwLWluZGVudC13aWR0aCBncm91cCkgMCkpKQorICAg ICAoZWxzZQorICAgICAgKGRpc3BsYXkKKyAgICAgICAobWFrZS1zdHJpbmcgKG9yICh0ZXN0LWdy b3VwLWluZGVudC13aWR0aCBncm91cCkgMCkKKyAgICAgICAgICAgICAgICAgICAgI1xzcGFjZSkp CisgICAgICAoZGlzcGxheSAoYm9sZCAoc3RyaW5nLWFwcGVuZCBuYW1lICI6ICIpKSkpKQorICAg IChjdXJyZW50LXRlc3QtZ3JvdXAgZ3JvdXApKSkKKworOzs+IEVuZHMgdGVzdGluZyBncm91cCBp bnRyb2R1Y2VkIHdpdGggXHNjaGVtZXsodGVzdC1iZWdpbil9LCBhbmQKKzs7PiBzdW1tYXJpemVz IHRoZSByZXN1bHRzLgorCisoZGVmaW5lICh0ZXN0LWVuZCAuIG8pCisgIChjb25kCisgICAoKGN1 cnJlbnQtdGVzdC1ncm91cCkKKyAgICA9PiAobGFtYmRhIChncm91cCkKKyAgICAgICAgIChpZiAo YW5kIChwYWlyPyBvKSAobm90IChlcXVhbD8gKGNhciBvKSAodGVzdC1ncm91cC1uYW1lIGdyb3Vw KSkpKQorICAgICAgICAgICAgICh3YXJuaW5nICJtaXNtYXRjaGVkIHRlc3QtZW5kOiIgKGNhciBv KSAodGVzdC1ncm91cC1uYW1lIGdyb3VwKSkpCisgICAgICAgICAobGV0ICgocGFyZW50ICh0ZXN0 LWdyb3VwLXJlZiBncm91cCAncGFyZW50KSkpCisgICAgICAgICAgIChjb25kCisgICAgICAgICAg ICAoKG5vdCAodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ3NraXAtZ3JvdXA/KSkKKyAgICAgICAgICAg ICA7OyBvbmx5IHJlcG9ydCBpZiB0aGVyZSdzIHNvbWV0aGluZyB0byBzYXkKKyAgICAgICAgICAg ICAoKGN1cnJlbnQtdGVzdC1ncm91cC1yZXBvcnRlcikgZ3JvdXApCisgICAgICAgICAgICAgKGNv bmQKKyAgICAgICAgICAgICAgKHBhcmVudAorICAgICAgICAgICAgICAgKHRlc3QtZ3JvdXAtaW5j ISBwYXJlbnQgJ3N1Ymdyb3Vwcy1jb3VudCkKKyAgICAgICAgICAgICAgIChjb25kCisgICAgICAg ICAgICAgICAgKChhbmQgKHplcm8/ICh0ZXN0LWdyb3VwLXJlZiBncm91cCAnRkFJTCAwKSkKKyAg ICAgICAgICAgICAgICAgICAgICAoemVybz8gKHRlc3QtZ3JvdXAtcmVmIGdyb3VwICdFUlJPUiAw KSkKKyAgICAgICAgICAgICAgICAgICAgICAoPSAodGVzdC1ncm91cC1yZWYgZ3JvdXAgJ3N1Ymdy b3Vwcy1wYXNzIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3QtZ3JvdXAtcmVmIGdy b3VwICdzdWJncm91cHMtY291bnQgMCkpKQorICAgICAgICAgICAgICAgICAodGVzdC1ncm91cC1p bmMhIHBhcmVudCAnc3ViZ3JvdXBzLXBhc3MpKSkpKSkpCisgICAgICAgICAgIChjdXJyZW50LXRl c3QtZ3JvdXAgcGFyZW50KQorICAgICAgICAgICBncm91cCkpKSkpCisKKzs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OworOzsgcGFyYW1ldGVycworCisoZGVmaW5lIGN1cnJlbnQtdGVzdC1ncm91cCAobWFrZS1wYXJh bWV0ZXIgI2YpKQorKGRlZmluZSBjdXJyZW50LXRlc3QtdmVyYm9zaXR5CisgIChtYWtlLXBhcmFt ZXRlcgorICAgKGNvbmQgKChnZXQtZW52aXJvbm1lbnQtdmFyaWFibGUgIlRFU1RfVkVSQk9TRSIp CisgICAgICAgICAgPT4gKGxhbWJkYSAocykgKG5vdCAobWVtYmVyIHMgJygiIiAiMCIpKSkpKQor ICAgICAgICAgKGVsc2UgI2YpKSkpCisoZGVmaW5lIGN1cnJlbnQtdGVzdC1lcHNpbG9uIChtYWtl LXBhcmFtZXRlciAxZS01KSkKKyhkZWZpbmUgY3VycmVudC10ZXN0LWNvbXBhcmF0b3IgKG1ha2Ut cGFyYW1ldGVyIHRlc3QtZXF1YWw/KSkKKyhkZWZpbmUgY3VycmVudC10ZXN0LWFwcGxpZXIgKG1h a2UtcGFyYW1ldGVyIHRlc3QtZGVmYXVsdC1hcHBsaWVyKSkKKyhkZWZpbmUgY3VycmVudC10ZXN0 LWhhbmRsZXIgKG1ha2UtcGFyYW1ldGVyIHRlc3QtZGVmYXVsdC1oYW5kbGVyKSkKKyhkZWZpbmUg Y3VycmVudC10ZXN0LXNraXBwZXIgKG1ha2UtcGFyYW1ldGVyIHRlc3QtZGVmYXVsdC1za2lwcGVy KSkKKyhkZWZpbmUgY3VycmVudC10ZXN0LWdyb3VwLXJlcG9ydGVyCisgIChtYWtlLXBhcmFtZXRl ciB0ZXN0LWRlZmF1bHQtZ3JvdXAtcmVwb3J0ZXIpKQorKGRlZmluZSB0ZXN0LWZhaWx1cmUtY291 bnQgKG1ha2UtcGFyYW1ldGVyIDApKQorCisoZGVmaW5lIHRlc3QtZmlyc3QtaW5kZW50YXRpb24K KyAgKG1ha2UtcGFyYW1ldGVyCisgICAob3IgKGNvbmQgKChnZXQtZW52aXJvbm1lbnQtdmFyaWFi bGUgIlRFU1RfRklSU1RfSU5ERU5UQVRJT04iKQorICAgICAgICAgICAgICA9PiBzdHJpbmctPm51 bWJlcikKKyAgICAgICAgICAgICAoZWxzZSAjZikpCisgICAgICAgMSkpKQorCisoZGVmaW5lIHRl c3QtbWF4LWluZGVudGF0aW9uCisgIChtYWtlLXBhcmFtZXRlcgorICAgKG9yIChjb25kICgoZ2V0 LWVudmlyb25tZW50LXZhcmlhYmxlICJURVNUX01BWF9JTkRFTlRBVElPTiIpCisgICAgICAgICAg ICAgID0+IHN0cmluZy0+bnVtYmVyKQorICAgICAgICAgICAgIChlbHNlICNmKSkKKyAgICAgICA1 KSkpCisKKyhkZWZpbmUgKHN0cmluZy0+aW5mby1tYXRjaGVyIHN0cikKKyAgKGxhbWJkYSAoaW5m bykKKyAgICAoY29uZCAoKHRlc3QtZ2V0LW5hbWUhIGluZm8pCisgICAgICAgICAgID0+IChsYW1i ZGEgKG4pIChzdHJpbmctc2VhcmNoIHN0ciBuKSkpCisgICAgICAgICAgKGVsc2UgI2YpKSkpCisK KyhkZWZpbmUgKHN0cmluZy0+Z3JvdXAtbWF0Y2hlciBzdHIpCisgIChsYW1iZGEgKGdyb3VwKSAo c3RyaW5nLXNlYXJjaCBzdHIgKGNhciBncm91cCkpKSkKKworKGRlZmluZSAoZ2V0ZW52LWZpbHRl ci1saXN0IHByb2MgbmFtZSAuIG8pCisgIChjb25kCisgICAoKGdldC1lbnZpcm9ubWVudC12YXJp YWJsZSBuYW1lKQorICAgID0+IChsYW1iZGEgKHMpCisgICAgICAgICAoZ3VhcmQKKyAgICAgICAg ICAgICAoZXhuCisgICAgICAgICAgICAgIChlbHNlCisgICAgICAgICAgICAgICAod2FybmluZwor ICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJpbnZhbGlkIGZpbHRlciAnIiBzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIicgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZTog IiBuYW1lKSkKKyAgICAgICAgICAgICAgIChwcmludC1leGNlcHRpb24gZXhuIChjdXJyZW50LWVy cm9yLXBvcnQpKQorICAgICAgICAgICAgICAgJygpKSkKKyAgICAgICAgICAgKGxldCAoKGYgKHBy b2MgcykpKQorICAgICAgICAgICAgIChsaXN0IChpZiAoYW5kIChwYWlyPyBvKSAoY2FyIG8pKQor ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICh4KSAobm90IChmIHgpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgZikpKSkpKQorICAgKGVsc2UgJygpKSkpCisKKyhkZWZpbmUgY3VycmVu dC10ZXN0LWZpbHRlcnMKKyAgKG1ha2UtcGFyYW1ldGVyCisgICAoYXBwZW5kIChnZXRlbnYtZmls dGVyLWxpc3Qgc3RyaW5nLT5pbmZvLW1hdGNoZXIgIlRFU1RfRklMVEVSIikKKyAgICAgICAgICAg KGdldGVudi1maWx0ZXItbGlzdCBzdHJpbmctPmluZm8tbWF0Y2hlciAiVEVTVF9SRU1PVkUiICN0 KSkpKQorCisoZGVmaW5lIGN1cnJlbnQtdGVzdC1ncm91cC1maWx0ZXJzCisgIChtYWtlLXBhcmFt ZXRlcgorICAgKGFwcGVuZCAoZ2V0ZW52LWZpbHRlci1saXN0IHN0cmluZy0+Z3JvdXAtbWF0Y2hl ciAiVEVTVF9HUk9VUF9GSUxURVIiKQorICAgICAgICAgICAoZ2V0ZW52LWZpbHRlci1saXN0IHN0 cmluZy0+Z3JvdXAtbWF0Y2hlciAiVEVTVF9HUk9VUF9SRU1PVkUiICN0KSkpKQorCisoZGVmaW5l IGN1cnJlbnQtY29sdW1uLXdpZHRoCisgIChtYWtlLXBhcmFtZXRlcgorICAgKG9yIChjb25kICgo Z2V0LWVudmlyb25tZW50LXZhcmlhYmxlICJURVNUX0NPTFVNTl9XSURUSCIpCisgICAgICAgICAg ICAgID0+IHN0cmluZy0+bnVtYmVyKQorICAgICAgICAgICAgIChlbHNlICNmKSkKKyAgICAgICA3 MikpKQorCisKKworCisKKworCisKKworCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworOzs7Cis7 OzsgQ2hpYmkncyByN3JzLXRlc3RzLnNjbQorOzs7Cis7OzsgR3VpbGUgbW9kaWZpY2F0aW9uczoK Kzs7OyAgICogKHRlc3QtZXhpdCkgYWRkZWQgdG8gZW5kIHRvIGluZGljYXRlIG92ZXJhbGwgcGFz cyBvciBmYWlsIHRvCis7OzsgICAgIG1ha2UgY2hlY2sKKzs7OyAgICogVGhlIHRlc3QgIihsZXQg KCkgKGRlZmluZSB5IDEpIChsZXQtc3ludGF4ICgpIChkZWZpbmUgeSAyKSAjZikgKHRlc3QgMSB5 KSkiCis7OzsgICAgIHdhcyBkaXNhYmxlZC4KKzs7OyAgICogVGhlIHRlc3QgIih0ZXN0LXdyaXRl LXN5bnRheCAifFwifCIgJ3xcInwpIiB3YXMgZGlzYWJsZWQuCis7OzsKKzs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7CisKKworCis7OyBSN1JTIHRlc3Qgc3VpdGUuICBDb3ZlcnMgYWxsIHByb2NlZHVy ZXMgYW5kIHN5bnRheCBpbiB0aGUgc21hbGwKKzs7IGxhbmd1YWdlIGV4Y2VwdCBgZGVsZXRlLWZp bGUnLiAgQ3VycmVudGx5IGFzc3VtZXMgZnVsbC11bmljb2RlCis7OyBzdXBwb3J0LCB0aGUgZnVs bCBudW1lcmljIHRvd2VyIGFuZCBhbGwgc3RhbmRhcmQgbGlicmFyaWVzCis7OyBwcm92aWRlZC4K Kzs7Cis7OyBVc2VzIHRoZSAoY2hpYmkgdGVzdCkgbGlicmFyeSB3aGljaCBpcyB3cml0dGVuIGlu IHBvcnRhYmxlIFI3UlMuCis7OyBUaGlzIGlzIG1vc3RseSBhIHN1YnNldCBvZiBTUkZJLTY0LCBw cm92aWRpbmcgdGVzdC1iZWdpbiwgdGVzdC1lbmQKKzs7IGFuZCB0ZXN0LCB3aGljaCBjb3VsZCBi ZSBkZWZpbmVkIGFzIHNvbWV0aGluZyBsaWtlOgorOzsKKzs7ICAgKGRlZmluZSAodGVzdC1iZWdp biAuIG8pICNmKQorOzsKKzs7ICAgKGRlZmluZSAodGVzdC1lbmQgLiBvKSAjZikKKzs7Cis7OyAg IChkZWZpbmUtc3ludGF4IHRlc3QKKzs7ICAgICAoc3ludGF4LXJ1bGVzICgpCis7OyAgICAgICAo KHRlc3QgZXhwZWN0ZWQgZXhwcikKKzs7ICAgICAgICAobGV0ICgocmVzIGV4cHIpKQorOzsgICAg ICAgICAgKGNvbmQKKzs7ICAgICAgICAgICAoKG5vdCAoZXF1YWw/IGV4cHIgZXhwZWN0ZWQpKQor OzsgICAgICAgICAgICAoZGlzcGxheSAiRkFJTDogIikKKzs7ICAgICAgICAgICAgKHdyaXRlICdl eHByKQorOzsgICAgICAgICAgICAoZGlzcGxheSAiOiBleHBlY3RlZCAiKQorOzsgICAgICAgICAg ICAod3JpdGUgZXhwZWN0ZWQpCis7OyAgICAgICAgICAgIChkaXNwbGF5ICIgYnV0IGdvdCAiKQor OzsgICAgICAgICAgICAod3JpdGUgcmVzKQorOzsgICAgICAgICAgICAobmV3bGluZSkpKSkpKSkK Kzs7Cis7OyBob3dldmVyIChjaGliaSB0ZXN0KSBwcm92aWRlcyBuaWNlciBvdXRwdXQsIHRpbWlu Z3MsIGFuZAorOzsgYXBwcm94aW1hdGUgZXF1aXZhbGVuY2UgZm9yIGZsb2F0aW5nIHBvaW50IG51 bWJlcnMuCisKKyh0ZXN0LWJlZ2luICJSN1JTIikKKworKHRlc3QtYmVnaW4gIjQuMSBQcmltaXRp dmUgZXhwcmVzc2lvbiB0eXBlcyIpCisKKyhsZXQgKCkKKyAgKGRlZmluZSB4IDI4KQorICAodGVz dCAyOCB4KSkKKworKHRlc3QgJ2EgKHF1b3RlIGEpKQorKHRlc3QgIyhhIGIgYykgKHF1b3RlICMo YSBiIGMpKSkKKyh0ZXN0ICcoKyAxIDIpIChxdW90ZSAoKyAxIDIpKSkKKworKHRlc3QgJ2EgJ2Ep CisodGVzdCAjKGEgYiBjKSAnIyhhIGIgYykpCisodGVzdCAnKCkgJygpKQorKHRlc3QgJygrIDEg MikgJygrIDEgMikpCisodGVzdCAnKHF1b3RlIGEpICcocXVvdGUgYSkpCisodGVzdCAnKHF1b3Rl IGEpICcnYSkKKworKHRlc3QgImFiYyIgJyJhYmMiKQorKHRlc3QgImFiYyIgImFiYyIpCisodGVz dCAxNDU5MzIgJzE0NTkzMikKKyh0ZXN0IDE0NTkzMiAxNDU5MzIpCisodGVzdCAjdCAnI3QpCiso dGVzdCAjdCAjdCkKKworKHRlc3QgNyAoKyAzIDQpKQorKHRlc3QgMTIgKChpZiAjZiArICopIDMg NCkpCisKKyh0ZXN0IDggKChsYW1iZGEgKHgpICgrIHggeCkpIDQpKQorKGRlZmluZSByZXZlcnNl LXN1YnRyYWN0CisgIChsYW1iZGEgKHggeSkgKC0geSB4KSkpCisodGVzdCAzIChyZXZlcnNlLXN1 YnRyYWN0IDcgMTApKQorKGRlZmluZSBhZGQ0CisgIChsZXQgKCh4IDQpKQorICAgIChsYW1iZGEg KHkpICgrIHggeSkpKSkKKyh0ZXN0IDEwIChhZGQ0IDYpKQorCisodGVzdCAnKDMgNCA1IDYpICgo bGFtYmRhIHggeCkgMyA0IDUgNikpCisodGVzdCAnKDUgNikgKChsYW1iZGEgKHggeSAuIHopIHop CisgMyA0IDUgNikpCisKKyh0ZXN0ICd5ZXMgKGlmICg+IDMgMikgJ3llcyAnbm8pKQorKHRlc3Qg J25vIChpZiAoPiAyIDMpICd5ZXMgJ25vKSkKKyh0ZXN0IDEgKGlmICg+IDMgMikKKyAgICAoLSAz IDIpCisgICAgKCsgMyAyKSkpCisobGV0ICgpCisgIChkZWZpbmUgeCAyKQorICAodGVzdCAzICgr IHggMSkpKQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICI0LjIgRGVyaXZlZCBleHByZXNz aW9uIHR5cGVzIikKKworKHRlc3QgJ2dyZWF0ZXIKKyAgICAoY29uZCAoKD4gMyAyKSAnZ3JlYXRl cikKKyAgICAgICAgICAoKDwgMyAyKSAnbGVzcykpKQorCisodGVzdCAnZXF1YWwKKyAgICAoY29u ZCAoKD4gMyAzKSAnZ3JlYXRlcikKKyAgICAgICAgICAoKDwgMyAzKSAnbGVzcykKKyAgICAgICAg ICAoZWxzZSAnZXF1YWwpKSkKKworKHRlc3QgMgorICAgIChjb25kICgoYXNzdiAnYiAnKChhIDEp IChiIDIpKSkgPT4gY2FkcikKKyAgICAgICAgICAoZWxzZSAjZikpKQorCisodGVzdCAnY29tcG9z aXRlCisgICAgKGNhc2UgKCogMiAzKQorICAgICAgKCgyIDMgNSA3KSAncHJpbWUpCisgICAgICAo KDEgNCA2IDggOSkgJ2NvbXBvc2l0ZSkpKQorCisodGVzdCAnYworICAgIChjYXNlIChjYXIgJyhj IGQpKQorICAgICAgKChhIGUgaSBvIHUpICd2b3dlbCkKKyAgICAgICgodyB5KSAnc2VtaXZvd2Vs KQorICAgICAgKGVsc2UgPT4gKGxhbWJkYSAoeCkgeCkpKSkKKworKHRlc3QgJygob3RoZXIgLiB6 KSAoc2VtaXZvd2VsIC4geSkgKG90aGVyIC4geCkKKyAgICAgICAgKHNlbWl2b3dlbCAuIHcpICh2 b3dlbCAuIHUpKQorICAgIChtYXAgKGxhbWJkYSAoeCkKKyAgICAgICAgICAgKGNhc2UgeAorICAg ICAgICAgICAgICgoYSBlIGkgbyB1KSA9PiAobGFtYmRhICh3KSAoY29ucyAndm93ZWwgdykpKQor ICAgICAgICAgICAgICgodyB5KSAoY29ucyAnc2VtaXZvd2VsIHgpKQorICAgICAgICAgICAgIChl bHNlID0+IChsYW1iZGEgKHcpIChjb25zICdvdGhlciB3KSkpKSkKKyAgICAgICAgICcoeiB5IHgg dyB1KSkpCisKKyh0ZXN0ICN0IChhbmQgKD0gMiAyKSAoPiAyIDEpKSkKKyh0ZXN0ICNmIChhbmQg KD0gMiAyKSAoPCAyIDEpKSkKKyh0ZXN0ICcoZiBnKSAoYW5kIDEgMiAnYyAnKGYgZykpKQorKHRl c3QgI3QgKGFuZCkpCisKKyh0ZXN0ICN0IChvciAoPSAyIDIpICg+IDIgMSkpKQorKHRlc3QgI3Qg KG9yICg9IDIgMikgKDwgMiAxKSkpCisodGVzdCAjZiAob3IgI2YgI2YgI2YpKQorKHRlc3QgJyhi IGMpIChvciAobWVtcSAnYiAnKGEgYiBjKSkKKyAgICAoLyAzIDApKSkKKworKHRlc3QgNiAobGV0 ICgoeCAyKSAoeSAzKSkKKyAgKCogeCB5KSkpCisKKyh0ZXN0IDM1IChsZXQgKCh4IDIpICh5IDMp KQorICAobGV0ICgoeCA3KQorICAgICAgICAoeiAoKyB4IHkpKSkKKyAgICAoKiB6IHgpKSkpCisK Kyh0ZXN0IDcwIChsZXQgKCh4IDIpICh5IDMpKQorICAobGV0KiAoKHggNykKKyAgICAgICAgICh6 ICgrIHggeSkpKQorICAgICgqIHogeCkpKSkKKworKHRlc3QgI3QKKyAgICAobGV0cmVjICgoZXZl bj8KKyAgICAgICAgICAgICAgKGxhbWJkYSAobikKKyAgICAgICAgICAgICAgICAoaWYgKHplcm8/ IG4pCisgICAgICAgICAgICAgICAgICAgICN0CisgICAgICAgICAgICAgICAgICAgIChvZGQ/ICgt IG4gMSkpKSkpCisgICAgICAgICAgICAgKG9kZD8KKyAgICAgICAgICAgICAgKGxhbWJkYSAobikK KyAgICAgICAgICAgICAgICAoaWYgKHplcm8/IG4pCisgICAgICAgICAgICAgICAgICAgICNmCisg ICAgICAgICAgICAgICAgICAgIChldmVuPyAoLSBuIDEpKSkpKSkKKyAgICAgIChldmVuPyA4OCkp KQorCisodGVzdCA1CisgICAgKGxldHJlYyogKChwCisgICAgICAgICAgICAgICAobGFtYmRhICh4 KQorICAgICAgICAgICAgICAgICAoKyAxIChxICgtIHggMSkpKSkpCisgICAgICAgICAgICAgIChx CisgICAgICAgICAgICAgICAobGFtYmRhICh5KQorICAgICAgICAgICAgICAgICAoaWYgKHplcm8/ IHkpCisgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAoKyAxIChw ICgtIHkgMSkpKSkpKQorICAgICAgICAgICAgICAoeCAocCA1KSkKKyAgICAgICAgICAgICAgKHkg eCkpCisgICAgICAgICAgICAgeSkpCisKKzs7IEJ5IEp1c3NpIFBpaXR1bGFpbmVuIDxqcGlpdHVs YUBsaW5nLmhlbHNpbmtpLmZpPgorOzsgYW5kIEpvaG4gQ293YW4gPGNvd2FuQG1lcmN1cnkuY2Np bC5vcmc+OgorOzsgaHR0cDovL2xpc3RzLnNjaGVtZS1yZXBvcnRzLm9yZy9waXBlcm1haWwvc2No ZW1lLXJlcG9ydHMvMjAxMy1EZWNlbWJlci8wMDM4NzYuaHRtbAorKGRlZmluZSAobWVhbnMgdG9u KQorICAobGV0cmVjKgorICAgICAoKG1lYW4KKyAgICAgICAgKGxhbWJkYSAoZiBnKQorICAgICAg ICAgIChmICgvIChzdW0gZyB0b24pIG4pKSkpCisgICAgICAoc3VtCisgICAgICAgIChsYW1iZGEg KGcgdG9uKQorICAgICAgICAgIChpZiAobnVsbD8gdG9uKQorICAgICAgICAgICAgKCspCisgICAg ICAgICAgICAoaWYgKG51bWJlcj8gdG9uKQorICAgICAgICAgICAgICAgIChnIHRvbikKKyAgICAg ICAgICAgICAgICAoKyAoc3VtIGcgKGNhciB0b24pKQorICAgICAgICAgICAgICAgICAgIChzdW0g ZyAoY2RyIHRvbikpKSkpKSkKKyAgICAgIChuIChzdW0gKGxhbWJkYSAoeCkgMSkgdG9uKSkpCisg ICAgKHZhbHVlcyAobWVhbiB2YWx1ZXMgdmFsdWVzKQorICAgICAgICAgICAgKG1lYW4gZXhwIGxv ZykKKyAgICAgICAgICAgIChtZWFuIC8gLykpKSkKKyhsZXQqLXZhbHVlcyAoKChhIGIgYykgKG1l YW5zICcoOCA1IDk5IDEgMjIpKSkpCisgICh0ZXN0IDI3IGEpCisgICh0ZXN0IDkuNzI4IGIpCisg ICh0ZXN0IDE4MDAvNDk3IGMpKQorCisobGV0Ki12YWx1ZXMgKCgocm9vdCByZW0pIChleGFjdC1p bnRlZ2VyLXNxcnQgMzIpKSkKKyAgKHRlc3QgMzUgKCogcm9vdCByZW0pKSkKKworKHRlc3QgJygx MDczNzQxODI0IDApCisgICAgKGxldCotdmFsdWVzICgoKHJvb3QgcmVtKSAoZXhhY3QtaW50ZWdl ci1zcXJ0IChleHB0IDIgNjApKSkpCisgICAgICAobGlzdCByb290IHJlbSkpKQorCisodGVzdCAn KDE1MTg1MDAyNDkgMzAwMDYzMTk1MSkKKyAgICAobGV0Ki12YWx1ZXMgKCgocm9vdCByZW0pIChl eGFjdC1pbnRlZ2VyLXNxcnQgKGV4cHQgMiA2MSkpKSkKKyAgICAgIChsaXN0IHJvb3QgcmVtKSkp CisKKyh0ZXN0ICcoODE1MjM4NjE0MDgzMjk4ODg4IDQ0MzI0MjM2MTM5ODEzNTc0NCkKKyAgICAo bGV0Ki12YWx1ZXMgKCgocm9vdCByZW0pIChleGFjdC1pbnRlZ2VyLXNxcnQgKGV4cHQgMiAxMTkp KSkpCisgICAgICAobGlzdCByb290IHJlbSkpKQorCisodGVzdCAnKDExNTI5MjE1MDQ2MDY4NDY5 NzYgMCkKKyAgICAobGV0Ki12YWx1ZXMgKCgocm9vdCByZW0pIChleGFjdC1pbnRlZ2VyLXNxcnQg KGV4cHQgMiAxMjApKSkpCisgICAgICAobGlzdCByb290IHJlbSkpKQorCisodGVzdCAnKDE2MzA0 NzcyMjgxNjY1OTc3NzYgMTc3Mjk2OTQ0NTU5MjU0Mjk3NikKKyAgICAobGV0Ki12YWx1ZXMgKCgo cm9vdCByZW0pIChleGFjdC1pbnRlZ2VyLXNxcnQgKGV4cHQgMiAxMjEpKSkpCisgICAgICAobGlz dCByb290IHJlbSkpKQorCisodGVzdCAnKDMxNjIyNzc2NjAxNjgzNzkzMzE5IDYyNTQ1NzY5MjU4 ODkwOTY0MjM5KQorICAgIChsZXQqLXZhbHVlcyAoKChyb290IHJlbSkgKGV4YWN0LWludGVnZXIt c3FydCAoZXhwdCAxMCAzOSkpKSkKKyAgICAgIChsaXN0IHJvb3QgcmVtKSkpCisKKyhsZXQqLXZh bHVlcyAoKChyb290IHJlbSkgKGV4YWN0LWludGVnZXItc3FydCAoZXhwdCAyIDE0MCkpKSkKKyAg KHRlc3QgMCByZW0pCisgICh0ZXN0IChleHB0IDIgMTQwKSAoc3F1YXJlIHJvb3QpKSkKKworKHRl c3QgJyh4IHkgeCB5KSAobGV0ICgoYSAnYSkgKGIgJ2IpICh4ICd4KSAoeSAneSkpCisgIChsZXQq LXZhbHVlcyAoKChhIGIpICh2YWx1ZXMgeCB5KSkKKyAgICAgICAgICAgICAgICAoKHggeSkgKHZh bHVlcyBhIGIpKSkKKyAgICAobGlzdCBhIGIgeCB5KSkpKQorCisodGVzdCAnb2sgKGxldC12YWx1 ZXMgKCkgJ29rKSkKKworKHRlc3QgMSAobGV0ICgoeCAxKSkKKwkgIChsZXQqLXZhbHVlcyAoKQor CSAgICAoZGVmaW5lIHggMikKKwkgICAgI2YpCisJICB4KSkKKworKGxldCAoKQorICAoZGVmaW5l IHggMCkKKyAgKHNldCEgeCA1KQorICAodGVzdCA2ICgrIHggMSkpKQorCisodGVzdCAjKDAgMSAy IDMgNCkgKGRvICgodmVjIChtYWtlLXZlY3RvciA1KSkKKyAgICAgKGkgMCAoKyBpIDEpKSkKKyAg ICAoKD0gaSA1KSB2ZWMpCisgICh2ZWN0b3Itc2V0ISB2ZWMgaSBpKSkpCisKKyh0ZXN0IDI1IChs ZXQgKCh4ICcoMSAzIDUgNyA5KSkpCisgIChkbyAoKHggeCAoY2RyIHgpKQorICAgICAgIChzdW0g MCAoKyBzdW0gKGNhciB4KSkpKQorICAgICAgKChudWxsPyB4KSBzdW0pKSkpCisKKyh0ZXN0ICco KDYgMSAzKSAoLTUgLTIpKQorICAgIChsZXQgbG9vcCAoKG51bWJlcnMgJygzIC0yIDEgNiAtNSkp CisgICAgICAgICAgICAgICAobm9ubmVnICcoKSkKKyAgICAgICAgICAgICAgIChuZWcgJygpKSkK KyAgICAgIChjb25kICgobnVsbD8gbnVtYmVycykgKGxpc3Qgbm9ubmVnIG5lZykpCisgICAgICAg ICAgICAoKD49IChjYXIgbnVtYmVycykgMCkKKyAgICAgICAgICAgICAobG9vcCAoY2RyIG51bWJl cnMpCisgICAgICAgICAgICAgICAgICAgKGNvbnMgKGNhciBudW1iZXJzKSBub25uZWcpCisgICAg ICAgICAgICAgICAgICAgbmVnKSkKKyAgICAgICAgICAgICgoPCAoY2FyIG51bWJlcnMpIDApCisg ICAgICAgICAgICAgKGxvb3AgKGNkciBudW1iZXJzKQorICAgICAgICAgICAgICAgICAgIG5vbm5l ZworICAgICAgICAgICAgICAgICAgIChjb25zIChjYXIgbnVtYmVycykgbmVnKSkpKSkpCisKKyh0 ZXN0IDMgKGZvcmNlIChkZWxheSAoKyAxIDIpKSkpCisKKyh0ZXN0ICcoMyAzKSAgCisgICAgKGxl dCAoKHAgKGRlbGF5ICgrIDEgMikpKSkKKyAgICAgIChsaXN0IChmb3JjZSBwKSAoZm9yY2UgcCkp KSkKKworKGRlZmluZSBpbnRlZ2VycworICAobGV0cmVjICgobmV4dAorICAgICAgICAgICAgKGxh bWJkYSAobikKKyAgICAgICAgICAgICAgKGRlbGF5IChjb25zIG4gKG5leHQgKCsgbiAxKSkpKSkp KQorICAgIChuZXh0IDApKSkKKyhkZWZpbmUgaGVhZAorICAobGFtYmRhIChzdHJlYW0pIChjYXIg KGZvcmNlIHN0cmVhbSkpKSkKKyhkZWZpbmUgdGFpbAorICAobGFtYmRhIChzdHJlYW0pIChjZHIg KGZvcmNlIHN0cmVhbSkpKSkKKworKHRlc3QgMiAoaGVhZCAodGFpbCAodGFpbCBpbnRlZ2Vycykp KSkKKworKGRlZmluZSAoc3RyZWFtLWZpbHRlciBwPyBzKQorICAoZGVsYXktZm9yY2UKKyAgIChp ZiAobnVsbD8gKGZvcmNlIHMpKSAKKyAgICAgICAoZGVsYXkgJygpKQorICAgICAgIChsZXQgKCho IChjYXIgKGZvcmNlIHMpKSkKKyAgICAgICAgICAgICAodCAoY2RyIChmb3JjZSBzKSkpKQorICAg ICAgICAgKGlmIChwPyBoKQorICAgICAgICAgICAgIChkZWxheSAoY29ucyBoIChzdHJlYW0tZmls dGVyIHA/IHQpKSkKKyAgICAgICAgICAgICAoc3RyZWFtLWZpbHRlciBwPyB0KSkpKSkpCisKKyh0 ZXN0IDUgKGhlYWQgKHRhaWwgKHRhaWwgKHN0cmVhbS1maWx0ZXIgb2RkPyBpbnRlZ2VycykpKSkp CisKKyhsZXQgKCkKKyAgKGRlZmluZSB4IDUpCisgIChkZWZpbmUgY291bnQgMCkKKyAgKGRlZmlu ZSBwCisgICAgKGRlbGF5IChiZWdpbiAoc2V0ISBjb3VudCAoKyBjb3VudCAxKSkKKyAgICAgICAg ICAgICAgICAgIChpZiAoPiBjb3VudCB4KQorICAgICAgICAgICAgICAgICAgICAgIGNvdW50Cisg ICAgICAgICAgICAgICAgICAgICAgKGZvcmNlIHApKSkpKQorICAodGVzdCA2IChmb3JjZSBwKSkK KyAgKHRlc3QgNiAoYmVnaW4gKHNldCEgeCAxMCkgKGZvcmNlIHApKSkpCisKKyh0ZXN0ICN0IChw cm9taXNlPyAoZGVsYXkgKCsgMiAyKSkpKQorKHRlc3QgI3QgKHByb21pc2U/IChtYWtlLXByb21p c2UgKCsgMiAyKSkpKQorKHRlc3QgI3QKKyAgICAobGV0ICgoeCAoZGVsYXkgKCsgMiAyKSkpKQor ICAgICAgKGZvcmNlIHgpCisgICAgICAocHJvbWlzZT8geCkpKQorKHRlc3QgI3QKKyAgICAobGV0 ICgoeCAobWFrZS1wcm9taXNlICgrIDIgMikpKSkKKyAgICAgIChmb3JjZSB4KQorICAgICAgKHBy b21pc2U/IHgpKSkKKworKGRlZmluZSByYWRpeAorICAobWFrZS1wYXJhbWV0ZXIKKyAgIDEwCisg ICAobGFtYmRhICh4KQorICAgICAoaWYgKGFuZCAoaW50ZWdlcj8geCkgKDw9IDIgeCAxNikpCisg ICAgICAgICB4CisgICAgICAgICAoZXJyb3IgImludmFsaWQgcmFkaXgiKSkpKSkKKyhkZWZpbmUg KGYgbikgKG51bWJlci0+c3RyaW5nIG4gKHJhZGl4KSkpCisodGVzdCAiMTIiIChmIDEyKSkKKyh0 ZXN0ICIxMTAwIiAocGFyYW1ldGVyaXplICgocmFkaXggMikpCisgIChmIDEyKSkpCisodGVzdCAi MTIiIChmIDEyKSkKKworKHRlc3QgJyhsaXN0IDMgNCkgYChsaXN0ICwoKyAxIDIpIDQpKQorKGxl dCAoKG5hbWUgJ2EpKSAodGVzdCAnKGxpc3QgYSAocXVvdGUgYSkpIGAobGlzdCAsbmFtZSAnLG5h bWUpKSkKKyh0ZXN0ICcoYSAzIDQgNSA2IGIpIGAoYSAsKCsgMSAyKSAsQChtYXAgYWJzICcoNCAt NSA2KSkgYikpCisodGVzdCAjKDEwIDUgNCAxNiA5IDgpCisgICAgYCMoMTAgNSAsKHNxdWFyZSAy KSAsQChtYXAgc3F1YXJlICcoNCAzKSkgOCkpCisodGVzdCAnKGEgYChiICwoKyAxIDIpICwoZm9v IDQgZCkgZSkgZikKKyAgICBgKGEgYChiICwoKyAxIDIpICwoZm9vICwoKyAxIDMpIGQpIGUpIGYp ICkKKyhsZXQgKChuYW1lMSAneCkKKyAgICAgIChuYW1lMiAneSkpCisgICAodGVzdCAnKGEgYChi ICx4ICwneSBkKSBlKSBgKGEgYChiICwsbmFtZTEgLCcsbmFtZTIgZCkgZSkpKQorKHRlc3QgJyhs aXN0IDMgNCkgKHF1YXNpcXVvdGUgKGxpc3QgKHVucXVvdGUgKCsgMSAyKSkgNCkpICkKKyh0ZXN0 IGAobGlzdCAsKCsgMSAyKSA0KSAocXVhc2lxdW90ZSAobGlzdCAodW5xdW90ZSAoKyAxIDIpKSA0 KSkpCisKKyhkZWZpbmUgcGx1cworICAoY2FzZS1sYW1iZGEgCisgICAoKCkgMCkKKyAgICgoeCkg eCkKKyAgICgoeCB5KSAoKyB4IHkpKQorICAgKCh4IHkgeikgKCsgKCsgeCB5KSB6KSkKKyAgIChh cmdzIChhcHBseSArIGFyZ3MpKSkpCisKKyh0ZXN0IDAgKHBsdXMpKQorKHRlc3QgMSAocGx1cyAx KSkKKyh0ZXN0IDMgKHBsdXMgMSAyKSkKKyh0ZXN0IDYgKHBsdXMgMSAyIDMpKQorKHRlc3QgMTAg KHBsdXMgMSAyIDMgNCkpCisKKyhkZWZpbmUgbXVsdAorICAoY2FzZS1sYW1iZGEgCisgICAoKCkg MSkKKyAgICgoeCkgeCkKKyAgICgoeCB5KSAoKiB4IHkpKQorICAgKCh4IHkgLiB6KSAoYXBwbHkg bXVsdCAoKiB4IHkpIHopKSkpCisKKyh0ZXN0IDEgKG11bHQpKQorKHRlc3QgMSAobXVsdCAxKSkK Kyh0ZXN0IDIgKG11bHQgMSAyKSkKKyh0ZXN0IDYgKG11bHQgMSAyIDMpKQorKHRlc3QgMjQgKG11 bHQgMSAyIDMgNCkpCisKKyh0ZXN0LWVuZCkKKworKHRlc3QtYmVnaW4gIjQuMyBNYWNyb3MiKQor CisodGVzdCAnbm93IChsZXQtc3ludGF4CisgICAgICAgICAgICAgICAoKHdoZW4gKHN5bnRheC1y dWxlcyAoKQorICAgICAgICAgICAgICAgICAgICAgICAgKCh3aGVuIHRlc3Qgc3RtdDEgc3RtdDIg Li4uKQorICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB0ZXN0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChiZWdpbiBzdG10MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RtdDIgLi4uKSkpKSkpCisgICAgICAgICAgICAgKGxldCAoKGlmICN0KSkKKyAgICAg ICAgICAgICAgICh3aGVuIGlmIChzZXQhIGlmICdub3cpKQorICAgICAgICAgICAgICAgaWYpKSkK KworKHRlc3QgJ291dGVyIChsZXQgKCh4ICdvdXRlcikpCisgIChsZXQtc3ludGF4ICgobSAoc3lu dGF4LXJ1bGVzICgpICgobSkgeCkpKSkKKyAgICAobGV0ICgoeCAnaW5uZXIpKQorICAgICAgKG0p KSkpKQorCisodGVzdCA3IChsZXRyZWMtc3ludGF4CisgICgobXktb3IgKHN5bnRheC1ydWxlcyAo KQorICAgICAgICAgICAgKChteS1vcikgI2YpCisgICAgICAgICAgICAoKG15LW9yIGUpIGUpCisg ICAgICAgICAgICAoKG15LW9yIGUxIGUyIC4uLikKKyAgICAgICAgICAgICAobGV0ICgodGVtcCBl MSkpCisgICAgICAgICAgICAgICAoaWYgdGVtcAorICAgICAgICAgICAgICAgICAgIHRlbXAKKyAg ICAgICAgICAgICAgICAgICAobXktb3IgZTIgLi4uKSkpKSkpKQorICAobGV0ICgoeCAjZikKKyAg ICAgICAgKHkgNykKKyAgICAgICAgKHRlbXAgOCkKKyAgICAgICAgKGxldCBvZGQ/KQorICAgICAg ICAoaWYgZXZlbj8pKQorICAgIChteS1vciB4CisgICAgICAgICAgIChsZXQgdGVtcCkKKyAgICAg ICAgICAgKGlmIHkpCisgICAgICAgICAgIHkpKSkpCisKKyhkZWZpbmUtc3ludGF4IGJlLWxpa2Ut YmVnaW4xCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKGJlLWxpa2UtYmVnaW4xIG5hbWUpCisg ICAgIChkZWZpbmUtc3ludGF4IG5hbWUKKyAgICAgICAoc3ludGF4LXJ1bGVzICgpCisgICAgICAg ICAoKG5hbWUgZXhwciAoLi4uIC4uLikpCisgICAgICAgICAgKGJlZ2luIGV4cHIgKC4uLiAuLi4p KSkpKSkpKQorKGJlLWxpa2UtYmVnaW4xIHNlcXVlbmNlMSkKKyh0ZXN0IDMgKHNlcXVlbmNlMSAw IDEgMiAzKSkKKworKGRlZmluZS1zeW50YXggYmUtbGlrZS1iZWdpbjIKKyAgKHN5bnRheC1ydWxl cyAoKQorICAgICgoYmUtbGlrZS1iZWdpbjIgbmFtZSkKKyAgICAgKGRlZmluZS1zeW50YXggbmFt ZQorICAgICAgICguLi4gKHN5bnRheC1ydWxlcyAoKQorICAgICAgICAgICAgICAoKG5hbWUgZXhw ciAuLi4pCisgICAgICAgICAgICAgICAoYmVnaW4gZXhwciAuLi4pKSkpKSkpKQorKGJlLWxpa2Ut YmVnaW4yIHNlcXVlbmNlMikKKyh0ZXN0IDQgKHNlcXVlbmNlMiAxIDIgMyA0KSkKKworKGRlZmlu ZS1zeW50YXggYmUtbGlrZS1iZWdpbjMKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoYmUtbGlr ZS1iZWdpbjMgbmFtZSkKKyAgICAgKGRlZmluZS1zeW50YXggbmFtZQorICAgICAgIChzeW50YXgt cnVsZXMgZG90cyAoKQorICAgICAgICAgKChuYW1lIGV4cHIgZG90cykKKyAgICAgICAgICAoYmVn aW4gZXhwciBkb3RzKSkpKSkpKQorKGJlLWxpa2UtYmVnaW4zIHNlcXVlbmNlMykKKyh0ZXN0IDUg KHNlcXVlbmNlMyAyIDMgNCA1KSkKKworOzsgU3ludGF4IHBhdHRlcm4gd2l0aCBlbGxpcHNpcyBp biBtaWRkbGUgb2YgcHJvcGVyIGxpc3QuCisoZGVmaW5lLXN5bnRheCBwYXJ0LTIKKyAgKHN5bnRh eC1ydWxlcyAoKQorICAgICgoXyBhIGIgKG0gbikgLi4uIHggeSkKKyAgICAgKHZlY3RvciAobGlz dCBhIGIpIChsaXN0IG0gLi4uKSAobGlzdCBuIC4uLikgKGxpc3QgeCB5KSkpCisgICAgKChfIC4g cmVzdCkgJ2Vycm9yKSkpCisodGVzdCAnIygoMTAgNDMpICgzMSA0MSA1MSkgKDMyIDQyIDUyKSAo NjMgNzcpKQorICAgIChwYXJ0LTIgMTAgKCsgMjEgMjIpICgzMSAzMikgKDQxIDQyKSAoNTEgNTIp ICgrIDYxIDIpIDc3KSkKKzs7IFN5bnRheCBwYXR0ZXJuIHdpdGggZWxsaXBzaXMgaW4gbWlkZGxl IG9mIGltcHJvcGVyIGxpc3QuCisoZGVmaW5lLXN5bnRheCBwYXJ0LTJ4CisgIChzeW50YXgtcnVs ZXMgKCkKKyAgICAoKF8gKGEgYiAobSBuKSAuLi4geCB5IC4gcmVzdCkpCisgICAgICh2ZWN0b3Ig KGxpc3QgYSBiKSAobGlzdCBtIC4uLikgKGxpc3QgbiAuLi4pIChsaXN0IHggeSkKKyAgICAgICAg ICAgICAoY29ucyAicmVzdDoiICdyZXN0KSkpCisgICAgKChfIC4gcmVzdCkgJ2Vycm9yKSkpCiso dGVzdCAnIygoMTAgNDMpICgzMSA0MSA1MSkgKDMyIDQyIDUyKSAoNjMgNzcpICgicmVzdDoiKSkK KyAgICAocGFydC0yeCAoMTAgKCsgMjEgMjIpICgzMSAzMikgKDQxIDQyKSAoNTEgNTIpICgrIDYx IDIpIDc3KSkpCisodGVzdCAnIygoMTAgNDMpICgzMSA0MSA1MSkgKDMyIDQyIDUyKSAoNjMgNzcp ICgicmVzdDoiIC4gInRhaWwiKSkKKyAgICAocGFydC0yeCAoMTAgKCsgMjEgMjIpICgzMSAzMikg KDQxIDQyKSAoNTEgNTIpICgrIDYxIDIpIDc3IC4gInRhaWwiKSkpCisKKzs7IHVuZGVyc2NvcmUK KyhkZWZpbmUtc3ludGF4IHVuZGVyc2NvcmUKKyAgKHN5bnRheC1ydWxlcyAoKQorICAgICgoZm9v IF8pICdfKSkpCisodGVzdCAnXyAodW5kZXJzY29yZSBmb28pKQorCisoZGVmaW5lLXN5bnRheCBj b3VudC10by0yCisgIChzeW50YXgtcnVsZXMgKCkKKyAgICAoKF8pIDApCisgICAgKChfIF8pIDEp CisgICAgKChfIF8gXykgMikKKyAgICAoKF8gLiBfKSAnbWFueSkpKQorKHRlc3QgJygyIDAgbWFu eSkKKyAgICAobGlzdCAoY291bnQtdG8tMiBhIGIpIChjb3VudC10by0yKSAoY291bnQtdG8tMiBh IGIgYyBkKSkpCisKKyhkZWZpbmUtc3ludGF4IGNvdW50LXRvLTJfCisgIChzeW50YXgtcnVsZXMg KF8pCisgICAgKChfKSAwKQorICAgICgoXyBfKSAxKQorICAgICgoXyBfIF8pIDIpCisgICAgKCh4 IC4geSkgJ2ZhaWwpKSkKKyh0ZXN0ICcoMiAwIGZhaWwgZmFpbCkKKyAgICAobGlzdCAoY291bnQt dG8tMl8gXyBfKSAoY291bnQtdG8tMl8pCisgICAgICAgICAgKGNvdW50LXRvLTJfIGEgYikgKGNv dW50LXRvLTJfIGEgYiBjIGQpKSkKKworKGRlZmluZS1zeW50YXggamFiYmVyd29ja3kKKyAgKHN5 bnRheC1ydWxlcyAoKQorICAgICgoXyBoYXR0ZXIpCisgICAgIChiZWdpbgorICAgICAgIChkZWZp bmUgbWFyY2gtaGFyZSA0MikKKyAgICAgICAoZGVmaW5lLXN5bnRheCBoYXR0ZXIKKyAgICAgICAg IChzeW50YXgtcnVsZXMgKCkKKyAgICAgICAgICAgKChfKSBtYXJjaC1oYXJlKSkpKSkpKQorKGph YmJlcndvY2t5IG1hZC1oYXR0ZXIpCisodGVzdCA0MiAobWFkLWhhdHRlcikpCisKKyh0ZXN0ICdv ayAobGV0ICgoPT4gI2YpKSAoY29uZCAoI3QgPT4gJ29rKSkpKQorCis7OyAobGV0ICgpCis7OyAg IChkZWZpbmUgNyAxKQorOzsgICAobGV0LXN5bnRheCAoKQorOzsgICAgIChkZWZpbmUgeCAyKQor OzsgICAgICNmKQorOzsgICAodGVzdCAxIHgpKQorCisobGV0ICgpCisgKGRlZmluZS1zeW50YXgg Zm9vCisgICAoc3ludGF4LXJ1bGVzICgpCisgICAgICgoZm9vIGJhciB5KQorICAgICAgKGRlZmlu ZS1zeW50YXggYmFyCisgICAgICAgIChzeW50YXgtcnVsZXMgKCkKKyAgICAgICAgICAoKGJhciB4 KSAneSkpKSkpKQorIChmb28gYmFyIHgpCisgKHRlc3QgJ3ggKGJhciAxKSkpCisKKyhiZWdpbgor ICAoZGVmaW5lLXN5bnRheCBmZm9vCisgICAgKHN5bnRheC1ydWxlcyAoKQorICAgICAgKChmZm9v IGZmKQorICAgICAgIChiZWdpbgorICAgICAgICAgKGRlZmluZSAoZmYgeCkKKyAgICAgICAgICAg KGdnIHgpKQorICAgICAgICAgKGRlZmluZSAoZ2cgeCkKKyAgICAgICAgICAgKCogeCB4KSkpKSkp CisgIChmZm9vIGZmKQorICAodGVzdCAxMDAgKGZmIDEwKSkpCisKKyhsZXQtc3ludGF4ICgodmVj dG9yLWxpdAorICAgICAgICAgICAgICAgKHN5bnRheC1ydWxlcyAoKQorICAgICAgICAgICAgICAg ICAoKHZlY3Rvci1saXQpCisgICAgICAgICAgICAgICAgICAnIyhiKSkpKSkKKyAgKHRlc3QgJyMo YikgKHZlY3Rvci1saXQpKSkKKworKGxldCAoKQorICA7OyBmb3J3YXJkIGh5Z2llbmljIHJlZnMK KyAgKGRlZmluZS1zeW50YXggZm9vMzk5CisgICAgKHN5bnRheC1ydWxlcyAoKSAoKGZvbzM5OSkg KGJhcjM5OSkpKSkKKyAgKGRlZmluZSAocXV1eDM5OSkKKyAgICAoZm9vMzk5KSkKKyAgKGRlZmlu ZSAoYmFyMzk5KQorICAgIDQyKQorICAodGVzdCA0MiAocXV1eDM5OSkpKQorCisodGVzdC1lbmQp CisKKyh0ZXN0LWJlZ2luICI1IFByb2dyYW0gc3RydWN0dXJlIikKKworKGRlZmluZSBhZGQzCisg IChsYW1iZGEgKHgpICgrIHggMykpKQorKHRlc3QgNiAoYWRkMyAzKSkKKyhkZWZpbmUgZmlyc3Qg Y2FyKQorKHRlc3QgMSAoZmlyc3QgJygxIDIpKSkKKworKHRlc3QgNDUgKGxldCAoKHggNSkpCisg IChkZWZpbmUgZm9vIChsYW1iZGEgKHkpIChiYXIgeCB5KSkpCisgIChkZWZpbmUgYmFyIChsYW1i ZGEgKGEgYikgKCsgKCogYSBiKSBhKSkpCisgIChmb28gKCsgeCAzKSkpKQorCisodGVzdCAnb2sK KyAgICAobGV0ICgpCisgICAgICAoZGVmaW5lLXZhbHVlcyAoKSAodmFsdWVzKSkKKyAgICAgICdv aykpCisodGVzdCAxCisgICAgKGxldCAoKQorICAgICAgKGRlZmluZS12YWx1ZXMgKHgpICh2YWx1 ZXMgMSkpCisgICAgICB4KSkKKyh0ZXN0IDMKKyAgICAobGV0ICgpCisgICAgICAoZGVmaW5lLXZh bHVlcyB4ICh2YWx1ZXMgMSAyKSkKKyAgICAgIChhcHBseSArIHgpKSkKKyh0ZXN0IDMKKyAgICAo bGV0ICgpCisgICAgICAoZGVmaW5lLXZhbHVlcyAoeCB5KSAodmFsdWVzIDEgMikpCisgICAgICAo KyB4IHkpKSkKKyh0ZXN0IDYKKyAgICAobGV0ICgpCisgICAgICAoZGVmaW5lLXZhbHVlcyAoeCB5 IHopICh2YWx1ZXMgMSAyIDMpKQorICAgICAgKCsgeCB5IHopKSkKKyh0ZXN0IDEwCisgICAgKGxl dCAoKQorICAgICAgKGRlZmluZS12YWx1ZXMgKHggeSAuIHopICh2YWx1ZXMgMSAyIDMgNCkpCisg ICAgICAoKyB4IHkgKGNhciB6KSAoY2FkciB6KSkpKQorCisodGVzdCAnKDIgMSkgKGxldCAoKHgg MSkgKHkgMikpCisgIChkZWZpbmUtc3ludGF4IHN3YXAhCisgICAgKHN5bnRheC1ydWxlcyAoKQor ICAgICAgKChzd2FwISBhIGIpCisgICAgICAgKGxldCAoKHRtcCBhKSkKKyAgICAgICAgIChzZXQh IGEgYikKKyAgICAgICAgIChzZXQhIGIgdG1wKSkpKSkKKyAgKHN3YXAhIHggeSkKKyAgKGxpc3Qg eCB5KSkpCisKKzs7IFJlY29yZHMKKworKGRlZmluZS1yZWNvcmQtdHlwZSA8cGFyZT4KKyAgKGtv bnMgeCB5KQorICBwYXJlPworICAoeCBrYXIgc2V0LWthciEpCisgICh5IGtkcikpCisKKyh0ZXN0 ICN0IChwYXJlPyAoa29ucyAxIDIpKSkKKyh0ZXN0ICNmIChwYXJlPyAoY29ucyAxIDIpKSkKKyh0 ZXN0IDEgKGthciAoa29ucyAxIDIpKSkKKyh0ZXN0IDIgKGtkciAoa29ucyAxIDIpKSkKKyh0ZXN0 IDMgKGxldCAoKGsgKGtvbnMgMSAyKSkpCisgICAgICAgICAgKHNldC1rYXIhIGsgMykKKyAgICAg ICAgICAoa2FyIGspKSkKKworKHRlc3QtZW5kKQorCis7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKzs7IDYgU3Rh bmRhcmQgUHJvY2VkdXJlcworCisodGVzdC1iZWdpbiAiNi4xIEVxdWl2YWxlbmNlIFByZWRpY2F0 ZXMiKQorCisodGVzdCAjdCAoZXF2PyAnYSAnYSkpCisodGVzdCAjZiAoZXF2PyAnYSAnYikpCiso dGVzdCAjdCAoZXF2PyAyIDIpKQorKHRlc3QgI3QgKGVxdj8gJygpICcoKSkpCisodGVzdCAjdCAo ZXF2PyAxMDAwMDAwMDAgMTAwMDAwMDAwKSkKKyh0ZXN0ICNmIChlcXY/IChjb25zIDEgMikgKGNv bnMgMSAyKSkpCisodGVzdCAjZiAoZXF2PyAobGFtYmRhICgpIDEpCisgICAgICAgICAgICAgICAo bGFtYmRhICgpIDIpKSkKKyh0ZXN0ICNmIChlcXY/ICNmICduaWwpKQorCisoZGVmaW5lIGdlbi1j b3VudGVyCisgIChsYW1iZGEgKCkKKyAgICAobGV0ICgobiAwKSkKKyAgICAgIChsYW1iZGEgKCkg KHNldCEgbiAoKyBuIDEpKSBuKSkpKQorKHRlc3QgI3QKKyAgICAobGV0ICgoZyAoZ2VuLWNvdW50 ZXIpKSkKKyAgICAgIChlcXY/IGcgZykpKQorKHRlc3QgI2YgKGVxdj8gKGdlbi1jb3VudGVyKSAo Z2VuLWNvdW50ZXIpKSkKKyhkZWZpbmUgZ2VuLWxvc2VyCisgIChsYW1iZGEgKCkKKyAgICAobGV0 ICgobiAwKSkKKyAgICAgIChsYW1iZGEgKCkgKHNldCEgbiAoKyBuIDEpKSAyNykpKSkKKyh0ZXN0 ICN0IChsZXQgKChnIChnZW4tbG9zZXIpKSkKKyAgKGVxdj8gZyBnKSkpCisKKyh0ZXN0ICNmCiso bGV0cmVjICgoZiAobGFtYmRhICgpIChpZiAoZXF2PyBmIGcpICdmICdib3RoKSkpCisgICAgICAg ICAoZyAobGFtYmRhICgpIChpZiAoZXF2PyBmIGcpICdnICdib3RoKSkpKQorICAgKGVxdj8gZiBn KSkpCisKKyh0ZXN0ICN0CisgICAgKGxldCAoKHggJyhhKSkpCisgICAgICAoZXF2PyB4IHgpKSkK KworKHRlc3QgI3QgKGVxPyAnYSAnYSkpCisodGVzdCAjZiAoZXE/IChsaXN0ICdhKSAobGlzdCAn YSkpKQorKHRlc3QgI3QgKGVxPyAnKCkgJygpKSkKKyh0ZXN0ICN0CisgICAgKGxldCAoKHggJyhh KSkpCisgICAgICAoZXE/IHggeCkpKQorKHRlc3QgI3QKKyAgICAobGV0ICgoeCAnIygpKSkKKyAg ICAgIChlcT8geCB4KSkpCisodGVzdCAjdAorICAgIChsZXQgKChwIChsYW1iZGEgKHgpIHgpKSkK KyAgICAgIChlcT8gcCBwKSkpCisKKyh0ZXN0ICN0IChlcXVhbD8gJ2EgJ2EpKQorKHRlc3QgI3Qg KGVxdWFsPyAnKGEpICcoYSkpKQorKHRlc3QgI3QgKGVxdWFsPyAnKGEgKGIpIGMpCisgICAgICAg ICAgICAgICAgICcoYSAoYikgYykpKQorKHRlc3QgI3QgKGVxdWFsPyAiYWJjIiAiYWJjIikpCiso dGVzdCAjdCAoZXF1YWw/IDIgMikpCisodGVzdCAjdCAoZXF1YWw/IChtYWtlLXZlY3RvciA1ICdh KQorICAgICAgICAgICAgICAgICAobWFrZS12ZWN0b3IgNSAnYSkpKQorCisodGVzdC1lbmQpCisK Kyh0ZXN0LWJlZ2luICI2LjIgTnVtYmVycyIpCisKKyh0ZXN0ICN0IChjb21wbGV4PyAzKzRpKSkK Kyh0ZXN0ICN0IChjb21wbGV4PyAzKSkKKyh0ZXN0ICN0IChyZWFsPyAzKSkKKyh0ZXN0ICN0IChy ZWFsPyAtMi41KzBpKSkKKyh0ZXN0ICNmIChyZWFsPyAtMi41KzAuMGkpKQorKHRlc3QgI3QgKHJl YWw/ICNlMWUxMCkpCisodGVzdCAjdCAocmVhbD8gK2luZi4wKSkKKyh0ZXN0ICNmIChyYXRpb25h bD8gLWluZi4wKSkKKyh0ZXN0ICN0IChyYXRpb25hbD8gNi8xMCkpCisodGVzdCAjdCAocmF0aW9u YWw/IDYvMykpCisodGVzdCAjdCAoaW50ZWdlcj8gMyswaSkpCisodGVzdCAjdCAoaW50ZWdlcj8g My4wKSkKKyh0ZXN0ICN0IChpbnRlZ2VyPyA4LzQpKQorCisodGVzdCAjZiAoZXhhY3Q/IDMuMCkp CisodGVzdCAjdCAoZXhhY3Q/ICNlMy4wKSkKKyh0ZXN0ICN0IChpbmV4YWN0PyAzLikpCisKKyh0 ZXN0ICN0IChleGFjdC1pbnRlZ2VyPyAzMikpCisodGVzdCAjZiAoZXhhY3QtaW50ZWdlcj8gMzIu MCkpCisodGVzdCAjZiAoZXhhY3QtaW50ZWdlcj8gMzIvNSkpCisKKyh0ZXN0ICN0IChmaW5pdGU/ IDMpKQorKHRlc3QgI2YgKGZpbml0ZT8gK2luZi4wKSkKKyh0ZXN0ICNmIChmaW5pdGU/IDMuMCtp bmYuMGkpKQorCisodGVzdCAjZiAoaW5maW5pdGU/IDMpKQorKHRlc3QgI3QgKGluZmluaXRlPyAr aW5mLjApKQorKHRlc3QgI2YgKGluZmluaXRlPyArbmFuLjApKQorKHRlc3QgI3QgKGluZmluaXRl PyAzLjAraW5mLjBpKSkKKworKHRlc3QgI3QgKG5hbj8gK25hbi4wKSkKKyh0ZXN0ICNmIChuYW4/ IDMyKSkKKzs7ICh0ZXN0ICN0IChuYW4/ICtuYW4uMCs1LjBpKSkKKyh0ZXN0ICNmIChuYW4/IDEr MmkpKQorCisodGVzdCAjdCAoPSAxIDEuMCAxLjArMC4waSkpCisodGVzdCAjZiAoPSAxLjAgMS4w KzEuMGkpKQorKHRlc3QgI3QgKDwgMSAyIDMpKQorKHRlc3QgI2YgKDwgMSAxIDIpKQorKHRlc3Qg I3QgKD4gMy4wIDIuMCAxLjApKQorKHRlc3QgI2YgKD4gLTMuMCAyLjAgMS4wKSkKKyh0ZXN0ICN0 ICg8PSAxIDEgMikpCisodGVzdCAjZiAoPD0gMSAyIDEpKQorKHRlc3QgI3QgKD49IDIgMSAxKSkK Kyh0ZXN0ICNmICg+PSAxIDIgMSkpCisodGVzdCAnKCN0ICNmKSAobGlzdCAoPD0gMSAxIDIpICg8 PSAyIDEgMykpKQorCis7OyBGcm9tIFI3UlMgNi4yLjYgTnVtZXJpY2FsIG9wZXJhdGlvbnM6Cis7 OworOzsgVGhlc2UgcHJlZGljYXRlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdHJhbnNpdGl2ZS4KKzs7 Cis7OyBfTm90ZTpfIFRoZSB0cmFkaXRpb25hbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlc2UgcHJl ZGljYXRlcyBpbgorOzsgTGlzcC1saWtlIGxhbmd1YWdlcywgd2hpY2ggaW52b2x2ZSBjb252ZXJ0 aW5nIGFsbCBhcmd1bWVudHMgdG8gaW5leGFjdAorOzsgbnVtYmVycyBpZiBhbnkgYXJndW1lbnQg aXMgaW5leGFjdCwgYXJlIG5vdCB0cmFuc2l0aXZlLgorCis7OyBFeGFtcGxlIGZyb20gQWxhbiBC YXdkZW4KKyhsZXQgKChhICgtIChleHB0IDIgMTAwMCkgMSkpCisgICAgICAoYiAoaW5leGFjdCAo ZXhwdCAyIDEwMDApKSkgOyBhc3N1bWluZyA+IHNpbmdsZS1mbG9hdC1lcHNpbG9uCisgICAgICAo YyAoKyAoZXhwdCAyIDEwMDApIDEpKSkKKyAgKHRlc3QgI3QgKGlmIChhbmQgKD0gYSBiKSAoPSBi IGMpKQorICAgICAgICAgICAgICAgKD0gYSBjKQorICAgICAgICAgICAgICAgI3QpKSkKKworOzsg RnJvbSBDTHRMIDEyLjMuIENvbXBhcmlzb25zIG9uIE51bWJlcnM6Cis7OworOzsgIExldCBfYV8g YmUgdGhlIHJlc3VsdCBvZiAoLyAxMC4wIHNpbmdsZS1mbG9hdC1lcHNpbG9uKSwgYW5kIGxldAor OzsgIF9qXyBiZSB0aGUgcmVzdWx0IG9mIChmbG9vciBhKS4gLi4uLCBhbGwgb2YgKDw9IGEgaiks ICg8IGogKCsgagorOzsgIDEpKSwgYW5kICg8PSAoKyBqIDEpIGEpIHdvdWxkIGJlIHRydWU7IHRy YW5zaXRpdml0eSB3b3VsZCB0aGVuCis7OyAgaW1wbHkgdGhhdCAoPCBhIGEpIG91Z2h0IHRvIGJl IHRydWUgLi4uCisKKzs7IFRyYW5zbGl0ZXJhdGlvbiBmcm9tIEp1c3NpIFBpaXR1bGFpbmVuCiso ZGVmaW5lIHNpbmdsZS1mbG9hdC1lcHNpbG9uCisgIChkbyAoKGVwcyAxLjAgKCogZXBzIDIuMCkp KQorICAgICAgKCg9IGVwcyAoKyBlcHMgMS4wKSkgZXBzKSkpCisKKyhsZXQqICgoYSAoLyAxMC4w IHNpbmdsZS1mbG9hdC1lcHNpbG9uKSkKKyAgICAgICAoaiAoZXhhY3QgYSkpKQorICAodGVzdCAj dCAoaWYgKGFuZCAoPD0gYSBqKSAoPCBqICgrIGogMSkpKQorICAgICAgICAgICAgICAgKG5vdCAo PD0gKCsgaiAxKSBhKSkKKyAgICAgICAgICAgICAgICN0KSkpCisKKyh0ZXN0ICN0ICh6ZXJvPyAw KSkKKyh0ZXN0ICN0ICh6ZXJvPyAwLjApKQorKHRlc3QgI3QgKHplcm8/IDAuMCswLjBpKSkKKyh0 ZXN0ICNmICh6ZXJvPyAxKSkKKyh0ZXN0ICNmICh6ZXJvPyAtMSkpCisKKyh0ZXN0ICNmIChwb3Np dGl2ZT8gMCkpCisodGVzdCAjZiAocG9zaXRpdmU/IDAuMCkpCisodGVzdCAjdCAocG9zaXRpdmU/ IDEpKQorKHRlc3QgI3QgKHBvc2l0aXZlPyAxLjApKQorKHRlc3QgI2YgKHBvc2l0aXZlPyAtMSkp CisodGVzdCAjZiAocG9zaXRpdmU/IC0xLjApKQorKHRlc3QgI3QgKHBvc2l0aXZlPyAraW5mLjAp KQorKHRlc3QgI2YgKHBvc2l0aXZlPyAtaW5mLjApKQorCisodGVzdCAjZiAobmVnYXRpdmU/IDAp KQorKHRlc3QgI2YgKG5lZ2F0aXZlPyAwLjApKQorKHRlc3QgI2YgKG5lZ2F0aXZlPyAxKSkKKyh0 ZXN0ICNmIChuZWdhdGl2ZT8gMS4wKSkKKyh0ZXN0ICN0IChuZWdhdGl2ZT8gLTEpKQorKHRlc3Qg I3QgKG5lZ2F0aXZlPyAtMS4wKSkKKyh0ZXN0ICNmIChuZWdhdGl2ZT8gK2luZi4wKSkKKyh0ZXN0 ICN0IChuZWdhdGl2ZT8gLWluZi4wKSkKKworKHRlc3QgI2YgKG9kZD8gMCkpCisodGVzdCAjdCAo b2RkPyAxKSkKKyh0ZXN0ICN0IChvZGQ/IC0xKSkKKyh0ZXN0ICNmIChvZGQ/IDEwMikpCisKKyh0 ZXN0ICN0IChldmVuPyAwKSkKKyh0ZXN0ICNmIChldmVuPyAxKSkKKyh0ZXN0ICN0IChldmVuPyAt MikpCisodGVzdCAjdCAoZXZlbj8gMTAyKSkKKworKHRlc3QgMyAobWF4IDMpKQorKHRlc3QgNCAo bWF4IDMgNCkpCisodGVzdCA0LjAgKG1heCAzLjkgNCkpCisodGVzdCA1LjAgKG1heCA1IDMuOSA0 KSkKKyh0ZXN0ICtpbmYuMCAobWF4IDEwMCAraW5mLjApKQorKHRlc3QgMyAobWluIDMpKQorKHRl c3QgMyAobWluIDMgNCkpCisodGVzdCAzLjAgKG1pbiAzIDMuMSkpCisodGVzdCAtaW5mLjAgKG1p biAtaW5mLjAgLTEwMCkpCisKKyh0ZXN0IDcgKCsgMyA0KSkKKyh0ZXN0IDMgKCsgMykpCisodGVz dCAwICgrKSkKKyh0ZXN0IDQgKCogNCkpCisodGVzdCAxICgqKSkKKworKHRlc3QgLTEgKC0gMyA0 KSkKKyh0ZXN0IC02ICgtIDMgNCA1KSkKKyh0ZXN0IC0zICgtIDMpKQorKHRlc3QgMy8yMCAoLyAz IDQgNSkpCisodGVzdCAxLzMgKC8gMykpCisKKyh0ZXN0IDcgKGFicyAtNykpCisodGVzdCA3IChh YnMgNykpCisKKyh0ZXN0LXZhbHVlcyAodmFsdWVzIDIgMSkgKGZsb29yLyA1IDIpKQorKHRlc3Qt dmFsdWVzICh2YWx1ZXMgLTMgMSkgKGZsb29yLyAtNSAyKSkKKyh0ZXN0LXZhbHVlcyAodmFsdWVz IC0zIC0xKSAoZmxvb3IvIDUgLTIpKQorKHRlc3QtdmFsdWVzICh2YWx1ZXMgMiAtMSkgKGZsb29y LyAtNSAtMikpCisodGVzdC12YWx1ZXMgKHZhbHVlcyAyIDEpICh0cnVuY2F0ZS8gNSAyKSkKKyh0 ZXN0LXZhbHVlcyAodmFsdWVzIC0yIC0xKSAodHJ1bmNhdGUvIC01IDIpKQorKHRlc3QtdmFsdWVz ICh2YWx1ZXMgLTIgMSkgKHRydW5jYXRlLyA1IC0yKSkKKyh0ZXN0LXZhbHVlcyAodmFsdWVzIDIg LTEpICh0cnVuY2F0ZS8gLTUgLTIpKQorKHRlc3QtdmFsdWVzICh2YWx1ZXMgMi4wIC0xLjApICh0 cnVuY2F0ZS8gLTUuMCAtMikpCisKKyh0ZXN0IDEgKG1vZHVsbyAxMyA0KSkKKyh0ZXN0IDEgKHJl bWFpbmRlciAxMyA0KSkKKworKHRlc3QgMyAobW9kdWxvIC0xMyA0KSkKKyh0ZXN0IC0xIChyZW1h aW5kZXIgLTEzIDQpKQorCisodGVzdCAtMyAobW9kdWxvIDEzIC00KSkKKyh0ZXN0IDEgKHJlbWFp bmRlciAxMyAtNCkpCisKKyh0ZXN0IC0xIChtb2R1bG8gLTEzIC00KSkKKyh0ZXN0IC0xIChyZW1h aW5kZXIgLTEzIC00KSkKKworKHRlc3QgLTEuMCAocmVtYWluZGVyIC0xMyAtNC4wKSkKKworKHRl c3QgNCAoZ2NkIDMyIC0zNikpCisodGVzdCAwIChnY2QpKQorKHRlc3QgMjg4IChsY20gMzIgLTM2 KSkKKyh0ZXN0IDI4OC4wIChsY20gMzIuMCAtMzYpKQorKHRlc3QgMSAobGNtKSkKKworKHRlc3Qg MyAobnVtZXJhdG9yICgvIDYgNCkpKQorKHRlc3QgMiAoZGVub21pbmF0b3IgKC8gNiA0KSkpCiso dGVzdCAyLjAgKGRlbm9taW5hdG9yIChpbmV4YWN0ICgvIDYgNCkpKSkKKyh0ZXN0IDExLjAgKG51 bWVyYXRvciA1LjUpKQorKHRlc3QgMi4wIChkZW5vbWluYXRvciA1LjUpKQorKHRlc3QgNS4wIChu dW1lcmF0b3IgNS4wKSkKKyh0ZXN0IDEuMCAoZGVub21pbmF0b3IgNS4wKSkKKworKHRlc3QgLTUu MCAoZmxvb3IgLTQuMykpCisodGVzdCAtNC4wIChjZWlsaW5nIC00LjMpKQorKHRlc3QgLTQuMCAo dHJ1bmNhdGUgLTQuMykpCisodGVzdCAtNC4wIChyb3VuZCAtNC4zKSkKKworKHRlc3QgMy4wIChm bG9vciAzLjUpKQorKHRlc3QgNC4wIChjZWlsaW5nIDMuNSkpCisodGVzdCAzLjAgKHRydW5jYXRl IDMuNSkpCisodGVzdCA0LjAgKHJvdW5kIDMuNSkpCisKKyh0ZXN0IDQgKHJvdW5kIDcvMikpCiso dGVzdCA3IChyb3VuZCA3KSkKKworKHRlc3QgMS8zIChyYXRpb25hbGl6ZSAoZXhhY3QgLjMpIDEv MTApKQorKHRlc3QgI2kxLzMgKHJhdGlvbmFsaXplIC4zIDEvMTApKQorCisodGVzdCAxLjAgKGlu ZXhhY3QgKGV4cCAwKSkpIDs7IG1heSByZXR1cm4gZXhhY3QgbnVtYmVyCisodGVzdCAyMC4wODU1 MzY5MjMxODc3IChleHAgMykpCisKKyh0ZXN0IDAuMCAoaW5leGFjdCAobG9nIDEpKSkgOzsgbWF5 IHJldHVybiBleGFjdCBudW1iZXIKKyh0ZXN0IDEuMCAobG9nIChleHAgMSkpKQorKHRlc3QgNDIu MCAobG9nIChleHAgNDIpKSkKKyh0ZXN0IDIuMCAobG9nIDEwMCAxMCkpCisodGVzdCAxMi4wIChs b2cgNDA5NiAyKSkKKworKHRlc3QgMC4wIChpbmV4YWN0IChzaW4gMCkpKSA7OyBtYXkgcmV0dXJu IGV4YWN0IG51bWJlcgorKHRlc3QgMS4wIChzaW4gMS41NzA3OTYzMjY3OTQ5KSkKKyh0ZXN0IDEu MCAoaW5leGFjdCAoY29zIDApKSkgOzsgbWF5IHJldHVybiBleGFjdCBudW1iZXIKKyh0ZXN0IC0x LjAgKGNvcyAzLjE0MTU5MjY1MzU4OTc5KSkKKyh0ZXN0IDAuMCAoaW5leGFjdCAodGFuIDApKSkg OzsgbWF5IHJldHVybiBleGFjdCBudW1iZXIKKyh0ZXN0IDEuNTU3NDA3NzI0NjU0OSAodGFuIDEp KQorCisodGVzdCAwLjAgKGluZXhhY3QgKGFzaW4gMCkpKSA7OyBtYXkgcmV0dXJuIGV4YWN0IG51 bWJlcgorKHRlc3QgMS41NzA3OTYzMjY3OTQ5IChhc2luIDEpKQorKHRlc3QgMC4wIChpbmV4YWN0 IChhY29zIDEpKSkgOzsgbWF5IHJldHVybiBleGFjdCBudW1iZXIKKyh0ZXN0IDMuMTQxNTkyNjUz NTg5NzkgKGFjb3MgLTEpKQorCis7OyAodGVzdCAwLjAtMC4waSAoYXNpbiAwKzAuMGkpKQorOzsg KHRlc3QgMS41NzA3OTYzMjY3OTQ4OTY2KzAuMGkgKGFjb3MgMCswLjBpKSkKKworKHRlc3QgMC4w IChhdGFuIDAuMCAxLjApKQorKHRlc3QgLTAuMCAoYXRhbiAtMC4wIDEuMCkpCisodGVzdCAwLjc4 NTM5ODE2MzM5NzQ0OCAoYXRhbiAxLjAgMS4wKSkKKyh0ZXN0IDEuNTcwNzk2MzI2Nzk0OSAoYXRh biAxLjAgMC4wKSkKKyh0ZXN0IDIuMzU2MTk0NDkwMTkyMzQgKGF0YW4gMS4wIC0xLjApKQorKHRl c3QgMy4xNDE1OTI2NTM1ODk3OSAoYXRhbiAwLjAgLTEuMCkpCisodGVzdCAtMy4xNDE1OTI2NTM1 ODk3OSAoYXRhbiAtMC4wIC0xLjApKSA7CisodGVzdCAtMi4zNTYxOTQ0OTAxOTIzNCAoYXRhbiAt MS4wIC0xLjApKQorKHRlc3QgLTEuNTcwNzk2MzI2Nzk0OSAoYXRhbiAtMS4wIDAuMCkpCisodGVz dCAtMC43ODUzOTgxNjMzOTc0NDggKGF0YW4gLTEuMCAxLjApKQorOzsgKHRlc3QgdW5kZWZpbmVk IChhdGFuIDAuMCAwLjApKQorCisodGVzdCAxNzY0IChzcXVhcmUgNDIpKQorKHRlc3QgNCAoc3F1 YXJlIDIpKQorCisodGVzdCAzLjAgKGluZXhhY3QgKHNxcnQgOSkpKQorKHRlc3QgMS40MTQyMTM1 NjIzNzMxIChzcXJ0IDIpKQorKHRlc3QgMC4wKzEuMGkgKGluZXhhY3QgKHNxcnQgLTEpKSkKKwor KHRlc3QgJygyIDApIChjYWxsLXdpdGgtdmFsdWVzIChsYW1iZGEgKCkgKGV4YWN0LWludGVnZXIt c3FydCA0KSkgbGlzdCkpCisodGVzdCAnKDIgMSkgKGNhbGwtd2l0aC12YWx1ZXMgKGxhbWJkYSAo KSAoZXhhY3QtaW50ZWdlci1zcXJ0IDUpKSBsaXN0KSkKKworKHRlc3QgMjcgKGV4cHQgMyAzKSkK Kyh0ZXN0IDEgKGV4cHQgMCAwKSkKKyh0ZXN0IDAgKGV4cHQgMCAxKSkKKyh0ZXN0IDEuMCAoZXhw dCAwLjAgMCkpCisodGVzdCAwLjAgKGV4cHQgMCAxLjApKQorCisodGVzdCAxKzJpIChtYWtlLXJl Y3Rhbmd1bGFyIDEgMikpCisKKyh0ZXN0IDAuNTQwMzAyMzA1ODY4MTQrMC44NDE0NzA5ODQ4MDc4 OTdpIChtYWtlLXBvbGFyIDEgMSkpCisKKyh0ZXN0IDEgKHJlYWwtcGFydCAxKzJpKSkKKworKHRl c3QgMiAoaW1hZy1wYXJ0IDErMmkpKQorCisodGVzdCAyLjIzNjA2Nzk3NzQ5OTc5IChtYWduaXR1 ZGUgMSsyaSkpCisKKyh0ZXN0IDEuMTA3MTQ4NzE3Nzk0MDkgKGFuZ2xlIDErMmkpKQorCisodGVz dCAxLjAgKGluZXhhY3QgMSkpCisodGVzdCAjdCAoaW5leGFjdD8gKGluZXhhY3QgMSkpKQorKHRl c3QgMSAoZXhhY3QgMS4wKSkKKyh0ZXN0ICN0IChleGFjdD8gKGV4YWN0IDEuMCkpKQorCisodGVz dCAxMDAgKHN0cmluZy0+bnVtYmVyICIxMDAiKSkKKyh0ZXN0IDI1NiAoc3RyaW5nLT5udW1iZXIg IjEwMCIgMTYpKQorKHRlc3QgMTAwLjAgKHN0cmluZy0+bnVtYmVyICIxZTIiKSkKKworKHRlc3Qt ZW5kKQorCisodGVzdC1iZWdpbiAiNi4zIEJvb2xlYW5zIikKKworKHRlc3QgI3QgI3QpCisodGVz dCAjZiAjZikKKyh0ZXN0ICNmICcjZikKKworKHRlc3QgI2YgKG5vdCAjdCkpCisodGVzdCAjZiAo bm90IDMpKQorKHRlc3QgI2YgKG5vdCAobGlzdCAzKSkpCisodGVzdCAjdCAobm90ICNmKSkKKyh0 ZXN0ICNmIChub3QgJygpKSkKKyh0ZXN0ICNmIChub3QgKGxpc3QpKSkKKyh0ZXN0ICNmIChub3Qg J25pbCkpCisKKyh0ZXN0ICN0IChib29sZWFuPyAjZikpCisodGVzdCAjZiAoYm9vbGVhbj8gMCkp CisodGVzdCAjZiAoYm9vbGVhbj8gJygpKSkKKworKHRlc3QgI3QgKGJvb2xlYW49PyAjdCAjdCkp CisodGVzdCAjdCAoYm9vbGVhbj0/ICNmICNmKSkKKyh0ZXN0ICNmIChib29sZWFuPT8gI3QgI2Yp KQorKHRlc3QgI3QgKGJvb2xlYW49PyAjZiAjZiAjZikpCisodGVzdCAjZiAoYm9vbGVhbj0/ICN0 ICN0ICNmKSkKKworKHRlc3QtZW5kKQorCisodGVzdC1iZWdpbiAiNi40IExpc3RzIikKKworKGxl dCogKCh4IChsaXN0ICdhICdiICdjKSkKKyAgICAgICAoeSB4KSkKKyAgKHRlc3QgJyhhIGIgYykg KHZhbHVlcyB5KSkKKyAgKHRlc3QgI3QgKGxpc3Q/IHkpKQorICAoc2V0LWNkciEgeCA0KQorICAo dGVzdCAnKGEgLiA0KSAodmFsdWVzIHgpKQorICAodGVzdCAjdCAoZXF2PyB4IHkpKQorICAodGVz dCAjZiAobGlzdD8geSkpCisgIChzZXQtY2RyISB4IHgpCisgICh0ZXN0ICNmIChsaXN0PyB4KSkp CisKKyh0ZXN0ICN0IChwYWlyPyAnKGEgLiBiKSkpCisodGVzdCAjdCAocGFpcj8gJyhhIGIgYykp KQorKHRlc3QgI2YgKHBhaXI/ICcoKSkpCisodGVzdCAjZiAocGFpcj8gJyMoYSBiKSkpCisKKyh0 ZXN0ICcoYSkgKGNvbnMgJ2EgJygpKSkKKyh0ZXN0ICcoKGEpIGIgYyBkKSAoY29ucyAnKGEpICco YiBjIGQpKSkKKyh0ZXN0ICcoImEiIGIgYykgKGNvbnMgImEiICcoYiBjKSkpCisodGVzdCAnKGEg LiAzKSAoY29ucyAnYSAzKSkKKyh0ZXN0ICcoKGEgYikgLiBjKSAoY29ucyAnKGEgYikgJ2MpKQor CisodGVzdCAnYSAoY2FyICcoYSBiIGMpKSkKKyh0ZXN0ICcoYSkgKGNhciAnKChhKSBiIGMgZCkp KQorKHRlc3QgMSAoY2FyICcoMSAuIDIpKSkKKworKHRlc3QgJyhiIGMgZCkgKGNkciAnKChhKSBi IGMgZCkpKQorKHRlc3QgMiAoY2RyICcoMSAuIDIpKSkKKyhkZWZpbmUgKGcpICcoY29uc3RhbnQt bGlzdCkpCisKKyh0ZXN0ICN0IChsaXN0PyAnKGEgYiBjKSkpCisodGVzdCAjdCAobGlzdD8gJygp KSkKKyh0ZXN0ICNmIChsaXN0PyAnKGEgLiBiKSkpCisodGVzdCAjZiAobGV0ICgoeCAobGlzdCAn YSkpKSAoc2V0LWNkciEgeCB4KSAobGlzdD8geCkpKQorCisodGVzdCAnKDMgMykgKG1ha2UtbGlz dCAyIDMpKQorCisodGVzdCAnKGEgNyBjKSAobGlzdCAnYSAoKyAzIDQpICdjKSkKKyh0ZXN0ICco KSAobGlzdCkpCisKKyh0ZXN0IDMgKGxlbmd0aCAnKGEgYiBjKSkpCisodGVzdCAzIChsZW5ndGgg JyhhIChiKSAoYyBkIGUpKSkpCisodGVzdCAwIChsZW5ndGggJygpKSkKKworKHRlc3QgJyh4IHkp IChhcHBlbmQgJyh4KSAnKHkpKSkKKyh0ZXN0ICcoYSBiIGMgZCkgKGFwcGVuZCAnKGEpICcoYiBj IGQpKSkKKyh0ZXN0ICcoYSAoYikgKGMpKSAoYXBwZW5kICcoYSAoYikpICcoKGMpKSkpCisKKyh0 ZXN0ICcoYSBiIGMgLiBkKSAoYXBwZW5kICcoYSBiKSAnKGMgLiBkKSkpCisodGVzdCAnYSAoYXBw ZW5kICcoKSAnYSkpCisKKyh0ZXN0ICcoYyBiIGEpIChyZXZlcnNlICcoYSBiIGMpKSkKKyh0ZXN0 ICcoKGUgKGYpKSBkIChiIGMpIGEpIChyZXZlcnNlICcoYSAoYiBjKSBkIChlIChmKSkpKSkKKwor KHRlc3QgJyhkIGUpIChsaXN0LXRhaWwgJyhhIGIgYyBkIGUpIDMpKQorCisodGVzdCAnYyAobGlz dC1yZWYgJyhhIGIgYyBkKSAyKSkKKyh0ZXN0ICdjIChsaXN0LXJlZiAnKGEgYiBjIGQpCisgICAg ICAgICAgKGV4YWN0IChyb3VuZCAxLjgpKSkpCisKKyh0ZXN0ICcoMCAoIlN1ZSIgIlN1ZSIpICJB bm5hIikKKyAgICAobGV0ICgobHN0IChsaXN0IDAgJygyIDIgMiAyKSAiQW5uYSIpKSkKKyAgICAg IChsaXN0LXNldCEgbHN0IDEgJygiU3VlIiAiU3VlIikpCisgICAgICBsc3QpKQorCisodGVzdCAn KGEgYiBjKSAobWVtcSAnYSAnKGEgYiBjKSkpCisodGVzdCAnKGIgYykgKG1lbXEgJ2IgJyhhIGIg YykpKQorKHRlc3QgI2YgKG1lbXEgJ2EgJyhiIGMgZCkpKQorKHRlc3QgI2YgKG1lbXEgKGxpc3Qg J2EpICcoYiAoYSkgYykpKQorKHRlc3QgJygoYSkgYykgKG1lbWJlciAobGlzdCAnYSkgJyhiIChh KSBjKSkpCisodGVzdCAnKCJiIiAiYyIpIChtZW1iZXIgIkIiICcoImEiICJiIiAiYyIpIHN0cmlu Zy1jaT0/KSkKKyh0ZXN0ICcoMTAxIDEwMikgKG1lbXYgMTAxICcoMTAwIDEwMSAxMDIpKSkKKwor KGxldCAoKQorICAoZGVmaW5lIGUgJygoYSAxKSAoYiAyKSAoYyAzKSkpCisgICh0ZXN0ICcoYSAx KSAoYXNzcSAnYSBlKSkKKyAgKHRlc3QgJyhiIDIpIChhc3NxICdiIGUpKQorICAodGVzdCAjZiAo YXNzcSAnZCBlKSkpCisKKyh0ZXN0ICNmIChhc3NxIChsaXN0ICdhKSAnKCgoYSkpICgoYikpICgo YykpKSkpCisodGVzdCAnKChhKSkgKGFzc29jIChsaXN0ICdhKSAnKCgoYSkpICgoYikpICgoYykp KSkpCisodGVzdCAnKDIgNCkgKGFzc29jIDIuMCAnKCgxIDEpICgyIDQpICgzIDkpKSA9KSkKKyh0 ZXN0ICcoNSA3KSAoYXNzdiA1ICcoKDIgMykgKDUgNykgKDExIDEzKSkpKQorCisodGVzdCAnKDEg MiAzKSAobGlzdC1jb3B5ICcoMSAyIDMpKSkKKyh0ZXN0ICJmb28iIChsaXN0LWNvcHkgImZvbyIp KQorKHRlc3QgJygpIChsaXN0LWNvcHkgJygpKSkKKyh0ZXN0ICcoMyAuIDQpIChsaXN0LWNvcHkg JygzIC4gNCkpKQorKHRlc3QgJyg2IDcgOCAuIDkpIChsaXN0LWNvcHkgJyg2IDcgOCAuIDkpKSkK KyhsZXQqICgobDEgJygoYSBiKSAoYyBkKSBlKSkKKyAgICAgICAobDIgKGxpc3QtY29weSBsMSkp KQorICAodGVzdCBsMiAnKChhIGIpIChjIGQpIGUpKQorICAodGVzdCAjdCAoZXE/IChjYXIgbDEp IChjYXIgbDIpKSkKKyAgKHRlc3QgI3QgKGVxPyAoY2FkciBsMSkgKGNhZHIgbDIpKSkKKyAgKHRl c3QgI2YgKGVxPyAoY2RyIGwxKSAoY2RyIGwyKSkpCisgICh0ZXN0ICNmIChlcT8gKGNkZHIgbDEp IChjZGRyIGwyKSkpKQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICI2LjUgU3ltYm9scyIp CisKKyh0ZXN0ICN0IChzeW1ib2w/ICdmb28pKQorKHRlc3QgI3QgKHN5bWJvbD8gKGNhciAnKGEg YikpKSkKKyh0ZXN0ICNmIChzeW1ib2w/ICJiYXIiKSkKKyh0ZXN0ICN0IChzeW1ib2w/ICduaWwp KQorKHRlc3QgI2YgKHN5bWJvbD8gJygpKSkKKyh0ZXN0ICNmIChzeW1ib2w/ICNmKSkKKworKHRl c3QgI3QgKHN5bWJvbD0/ICdhICdhKSkKKyh0ZXN0ICNmIChzeW1ib2w9PyAnYSAnQSkpCisodGVz dCAjdCAoc3ltYm9sPT8gJ2EgJ2EgJ2EpKQorKHRlc3QgI2YgKHN5bWJvbD0/ICdhICdhICdBKSkK KworKHRlc3QgImZseWluZy1maXNoIiAgICAgCisoc3ltYm9sLT5zdHJpbmcgJ2ZseWluZy1maXNo KSkKKyh0ZXN0ICJNYXJ0aW4iIChzeW1ib2wtPnN0cmluZyAnTWFydGluKSkKKyh0ZXN0ICJNYWx2 aW5hIiAoc3ltYm9sLT5zdHJpbmcgKHN0cmluZy0+c3ltYm9sICJNYWx2aW5hIikpKQorCisodGVz dCAnbUlTU0lTU0lwcGkgKHN0cmluZy0+c3ltYm9sICJtSVNTSVNTSXBwaSIpKQorKHRlc3QgI3Qg KGVxPyAnYml0Qmx0IChzdHJpbmctPnN5bWJvbCAiYml0Qmx0IikpKQorKHRlc3QgI3QgKGVxPyAn TG9sbHlQb3AgKHN0cmluZy0+c3ltYm9sIChzeW1ib2wtPnN0cmluZyAnTG9sbHlQb3ApKSkpCiso dGVzdCAjdCAoc3RyaW5nPT8gIksuIEhhcnBlciwgTS5ELiIKKyAgICAgICAgICAgICAgICAgICAo c3ltYm9sLT5zdHJpbmcgKHN0cmluZy0+c3ltYm9sICJLLiBIYXJwZXIsIE0uRC4iKSkpKQorCiso dGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICI2LjYgQ2hhcmFjdGVycyIpCisKKyh0ZXN0ICN0IChj aGFyPyAjXGEpKQorKHRlc3QgI2YgKGNoYXI/ICJhIikpCisodGVzdCAjZiAoY2hhcj8gJ2EpKQor KHRlc3QgI2YgKGNoYXI/IDApKQorCisodGVzdCAjdCAoY2hhcj0/ICNcYSAjXGEgI1xhKSkKKyh0 ZXN0ICNmIChjaGFyPT8gI1xhICNcQSkpCisodGVzdCAjdCAoY2hhcjw/ICNcYSAjXGIgI1xjKSkK Kyh0ZXN0ICNmIChjaGFyPD8gI1xhICNcYSkpCisodGVzdCAjZiAoY2hhcjw/ICNcYiAjXGEpKQor KHRlc3QgI2YgKGNoYXI+PyAjXGEgI1xiKSkKKyh0ZXN0ICNmIChjaGFyPj8gI1xhICNcYSkpCiso dGVzdCAjdCAoY2hhcj4/ICNcYyAjXGIgI1xhKSkKKyh0ZXN0ICN0IChjaGFyPD0/ICNcYSAjXGIg I1xiKSkKKyh0ZXN0ICN0IChjaGFyPD0/ICNcYSAjXGEpKQorKHRlc3QgI2YgKGNoYXI8PT8gI1xi ICNcYSkpCisodGVzdCAjZiAoY2hhcj49PyAjXGEgI1xiKSkKKyh0ZXN0ICN0IChjaGFyPj0/ICNc YSAjXGEpKQorKHRlc3QgI3QgKGNoYXI+PT8gI1xiICNcYiAjXGEpKQorCisodGVzdCAjdCAoY2hh ci1jaT0/ICNcYSAjXGEpKQorKHRlc3QgI3QgKGNoYXItY2k9PyAjXGEgI1xBICNcYSkpCisodGVz dCAjZiAoY2hhci1jaT0/ICNcYSAjXGIpKQorKHRlc3QgI3QgKGNoYXItY2k8PyAjXGEgI1xCICNc YykpCisodGVzdCAjZiAoY2hhci1jaTw/ICNcQSAjXGEpKQorKHRlc3QgI2YgKGNoYXItY2k8PyAj XGIgI1xBKSkKKyh0ZXN0ICNmIChjaGFyLWNpPj8gI1xBICNcYikpCisodGVzdCAjZiAoY2hhci1j aT4/ICNcYSAjXEEpKQorKHRlc3QgI3QgKGNoYXItY2k+PyAjXGMgI1xCICNcYSkpCisodGVzdCAj dCAoY2hhci1jaTw9PyAjXGEgI1xCICNcYikpCisodGVzdCAjdCAoY2hhci1jaTw9PyAjXEEgI1xh KSkKKyh0ZXN0ICNmIChjaGFyLWNpPD0/ICNcYiAjXEEpKQorKHRlc3QgI2YgKGNoYXItY2k+PT8g I1xBICNcYikpCisodGVzdCAjdCAoY2hhci1jaT49PyAjXGEgI1xBKSkKKyh0ZXN0ICN0IChjaGFy LWNpPj0/ICNcYiAjXEIgI1xhKSkKKworKHRlc3QgI3QgKGNoYXItYWxwaGFiZXRpYz8gI1xhKSkK Kyh0ZXN0ICNmIChjaGFyLWFscGhhYmV0aWM/ICNcc3BhY2UpKQorKHRlc3QgI3QgKGNoYXItbnVt ZXJpYz8gI1wwKSkKKyh0ZXN0ICNmIChjaGFyLW51bWVyaWM/ICNcLikpCisodGVzdCAjZiAoY2hh ci1udW1lcmljPyAjXGEpKQorKHRlc3QgI3QgKGNoYXItd2hpdGVzcGFjZT8gI1xzcGFjZSkpCiso dGVzdCAjdCAoY2hhci13aGl0ZXNwYWNlPyAjXHRhYikpCisodGVzdCAjdCAoY2hhci13aGl0ZXNw YWNlPyAjXG5ld2xpbmUpKQorKHRlc3QgI2YgKGNoYXItd2hpdGVzcGFjZT8gI1xfKSkKKyh0ZXN0 ICNmIChjaGFyLXdoaXRlc3BhY2U/ICNcYSkpCisodGVzdCAjdCAoY2hhci11cHBlci1jYXNlPyAj XEEpKQorKHRlc3QgI2YgKGNoYXItdXBwZXItY2FzZT8gI1xhKSkKKyh0ZXN0ICNmIChjaGFyLXVw cGVyLWNhc2U/ICNcMykpCisodGVzdCAjdCAoY2hhci1sb3dlci1jYXNlPyAjXGEpKQorKHRlc3Qg I2YgKGNoYXItbG93ZXItY2FzZT8gI1xBKSkKKyh0ZXN0ICNmIChjaGFyLWxvd2VyLWNhc2U/ICNc MykpCisKKyh0ZXN0ICN0IChjaGFyLWFscGhhYmV0aWM/ICNczpspKQorKHRlc3QgI2YgKGNoYXIt YWxwaGFiZXRpYz8gI1x4MEU1MCkpCisodGVzdCAjdCAoY2hhci11cHBlci1jYXNlPyAjXM6bKSkK Kyh0ZXN0ICNmIChjaGFyLXVwcGVyLWNhc2U/ICNczrspKQorKHRlc3QgI2YgKGNoYXItbG93ZXIt Y2FzZT8gI1zOmykpCisodGVzdCAjdCAoY2hhci1sb3dlci1jYXNlPyAjXM67KSkKKyh0ZXN0ICNm IChjaGFyLW51bWVyaWM/ICNczpspKQorKHRlc3QgI3QgKGNoYXItbnVtZXJpYz8gI1x4MEU1MCkp CisodGVzdCAjdCAoY2hhci13aGl0ZXNwYWNlPyAjXHgxNjgwKSkKKworKHRlc3QgMCAoZGlnaXQt dmFsdWUgI1wwKSkKKyh0ZXN0IDMgKGRpZ2l0LXZhbHVlICNcMykpCisodGVzdCA5IChkaWdpdC12 YWx1ZSAjXDkpKQorKHRlc3QgNCAoZGlnaXQtdmFsdWUgI1x4MDY2NCkpCisodGVzdCAwIChkaWdp dC12YWx1ZSAjXHgwQUU2KSkKKyh0ZXN0ICNmIChkaWdpdC12YWx1ZSAjXC4pKQorKHRlc3QgI2Yg KGRpZ2l0LXZhbHVlICNcLSkpCisKKyh0ZXN0IDk3IChjaGFyLT5pbnRlZ2VyICNcYSkpCisodGVz dCAjXGEgKGludGVnZXItPmNoYXIgOTcpKQorCisodGVzdCAjXEEgKGNoYXItdXBjYXNlICNcYSkp CisodGVzdCAjXEEgKGNoYXItdXBjYXNlICNcQSkpCisodGVzdCAjXGEgKGNoYXItZG93bmNhc2Ug I1xhKSkKKyh0ZXN0ICNcYSAoY2hhci1kb3duY2FzZSAjXEEpKQorKHRlc3QgI1xhIChjaGFyLWZv bGRjYXNlICNcYSkpCisodGVzdCAjXGEgKGNoYXItZm9sZGNhc2UgI1xBKSkKKworKHRlc3QgI1zO myAoY2hhci11cGNhc2UgI1zOuykpCisodGVzdCAjXM6bIChjaGFyLXVwY2FzZSAjXM6bKSkKKyh0 ZXN0ICNczrsgKGNoYXItZG93bmNhc2UgI1zOuykpCisodGVzdCAjXM67IChjaGFyLWRvd25jYXNl ICNczpspKQorKHRlc3QgI1zOuyAoY2hhci1mb2xkY2FzZSAjXM67KSkKKyh0ZXN0ICNczrsgKGNo YXItZm9sZGNhc2UgI1zOmykpCisKKyh0ZXN0LWVuZCkKKworKHRlc3QtYmVnaW4gIjYuNyBTdHJp bmdzIikKKworKHRlc3QgI3QgKHN0cmluZz8gIiIpKQorKHRlc3QgI3QgKHN0cmluZz8gIiAiKSkK Kyh0ZXN0ICNmIChzdHJpbmc/ICdhKSkKKyh0ZXN0ICNmIChzdHJpbmc/ICNcYSkpCisKKyh0ZXN0 IDMgKHN0cmluZy1sZW5ndGggKG1ha2Utc3RyaW5nIDMpKSkKKyh0ZXN0ICItLS0iIChtYWtlLXN0 cmluZyAzICNcLSkpCisKKyh0ZXN0ICIiIChzdHJpbmcpKQorKHRlc3QgIi0tLSIgKHN0cmluZyAj XC0gI1wtICNcLSkpCisodGVzdCAia2l0dGVuIiAoc3RyaW5nICNcayAjXGkgI1x0ICNcdCAjXGUg I1xuKSkKKworKHRlc3QgMCAoc3RyaW5nLWxlbmd0aCAiIikpCisodGVzdCAxIChzdHJpbmctbGVu Z3RoICJhIikpCisodGVzdCAzIChzdHJpbmctbGVuZ3RoICJhYmMiKSkKKworKHRlc3QgI1xhIChz dHJpbmctcmVmICJhYmMiIDApKQorKHRlc3QgI1xiIChzdHJpbmctcmVmICJhYmMiIDEpKQorKHRl c3QgI1xjIChzdHJpbmctcmVmICJhYmMiIDIpKQorCisodGVzdCAiYS1jIiAobGV0ICgoc3RyIChz dHJpbmcgI1xhICNcYiAjXGMpKSkgKHN0cmluZy1zZXQhIHN0ciAxICNcLSkgc3RyKSkKKworKHRl c3QgKHN0cmluZyAjXGEgI1x4MUY3MDAgI1xjKQorICAgIChsZXQgKChzIChzdHJpbmcgI1xhICNc YiAjXGMpKSkKKyAgICAgIChzdHJpbmctc2V0ISBzIDEgI1x4MUY3MDApCisgICAgICBzKSkKKwor KHRlc3QgI3QgKHN0cmluZz0/ICIiICIiKSkKKyh0ZXN0ICN0IChzdHJpbmc9PyAiYWJjIiAiYWJj IiAiYWJjIikpCisodGVzdCAjZiAoc3RyaW5nPT8gIiIgImFiYyIpKQorKHRlc3QgI2YgKHN0cmlu Zz0/ICJhYmMiICJhQmMiKSkKKworKHRlc3QgI2YgKHN0cmluZzw/ICIiICIiKSkKKyh0ZXN0ICNm IChzdHJpbmc8PyAiYWJjIiAiYWJjIikpCisodGVzdCAjdCAoc3RyaW5nPD8gImFiYyIgImFiY2Qi ICJhY2QiKSkKKyh0ZXN0ICNmIChzdHJpbmc8PyAiYWJjZCIgImFiYyIpKQorKHRlc3QgI3QgKHN0 cmluZzw/ICJhYmMiICJiYmMiKSkKKworKHRlc3QgI2YgKHN0cmluZz4/ICIiICIiKSkKKyh0ZXN0 ICNmIChzdHJpbmc+PyAiYWJjIiAiYWJjIikpCisodGVzdCAjZiAoc3RyaW5nPj8gImFiYyIgImFi Y2QiKSkKKyh0ZXN0ICN0IChzdHJpbmc+PyAiYWNkIiAiYWJjZCIgImFiYyIpKQorKHRlc3QgI2Yg KHN0cmluZz4/ICJhYmMiICJiYmMiKSkKKworKHRlc3QgI3QgKHN0cmluZzw9PyAiIiAiIikpCiso dGVzdCAjdCAoc3RyaW5nPD0/ICJhYmMiICJhYmMiKSkKKyh0ZXN0ICN0IChzdHJpbmc8PT8gImFi YyIgImFiY2QiICJhYmNkIikpCisodGVzdCAjZiAoc3RyaW5nPD0/ICJhYmNkIiAiYWJjIikpCiso dGVzdCAjdCAoc3RyaW5nPD0/ICJhYmMiICJiYmMiKSkKKworKHRlc3QgI3QgKHN0cmluZz49PyAi IiAiIikpCisodGVzdCAjdCAoc3RyaW5nPj0/ICJhYmMiICJhYmMiKSkKKyh0ZXN0ICNmIChzdHJp bmc+PT8gImFiYyIgImFiY2QiKSkKKyh0ZXN0ICN0IChzdHJpbmc+PT8gImFiY2QiICJhYmNkIiAi YWJjIikpCisodGVzdCAjZiAoc3RyaW5nPj0/ICJhYmMiICJiYmMiKSkKKworKHRlc3QgI3QgKHN0 cmluZy1jaT0/ICIiICIiKSkKKyh0ZXN0ICN0IChzdHJpbmctY2k9PyAiYWJjIiAiYWJjIikpCiso dGVzdCAjZiAoc3RyaW5nLWNpPT8gIiIgImFiYyIpKQorKHRlc3QgI3QgKHN0cmluZy1jaT0/ICJh YmMiICJhQmMiKSkKKyh0ZXN0ICNmIChzdHJpbmctY2k9PyAiYWJjIiAiYUJjRCIpKQorCisodGVz dCAjZiAoc3RyaW5nLWNpPD8gImFiYyIgImFCYyIpKQorKHRlc3QgI3QgKHN0cmluZy1jaTw/ICJh YmMiICJhQmNEIikpCisodGVzdCAjZiAoc3RyaW5nLWNpPD8gIkFCQ2QiICJhQmMiKSkKKworKHRl c3QgI2YgKHN0cmluZy1jaT4/ICJhYmMiICJhQmMiKSkKKyh0ZXN0ICNmIChzdHJpbmctY2k+PyAi YWJjIiAiYUJjRCIpKQorKHRlc3QgI3QgKHN0cmluZy1jaT4/ICJBQkNkIiAiYUJjIikpCisKKyh0 ZXN0ICN0IChzdHJpbmctY2k8PT8gImFiYyIgImFCYyIpKQorKHRlc3QgI3QgKHN0cmluZy1jaTw9 PyAiYWJjIiAiYUJjRCIpKQorKHRlc3QgI2YgKHN0cmluZy1jaTw9PyAiQUJDZCIgImFCYyIpKQor CisodGVzdCAjdCAoc3RyaW5nLWNpPj0/ICJhYmMiICJhQmMiKSkKKyh0ZXN0ICNmIChzdHJpbmct Y2k+PT8gImFiYyIgImFCY0QiKSkKKyh0ZXN0ICN0IChzdHJpbmctY2k+PT8gIkFCQ2QiICJhQmMi KSkKKworKHRlc3QgI3QgKHN0cmluZy1jaT0/ICLOkc6SzpMiICLOsc6yzrMiICLOsc6yzrMiKSkK Kyh0ZXN0ICNmIChzdHJpbmctY2k8PyAizpHOks6TIiAizrHOss6zIikpCisodGVzdCAjZiAoc3Ry aW5nLWNpPj8gIs6RzpLOkyIgIs6xzrLOsyIpKQorKHRlc3QgI3QgKHN0cmluZy1jaTw9PyAizpHO ks6TIiAizrHOss6zIikpCisodGVzdCAjdCAoc3RyaW5nLWNpPj0/ICLOkc6SzpMiICLOsc6yzrMi KSkKKworOzsgbGF0aW4KKyh0ZXN0ICJBQkMiIChzdHJpbmctdXBjYXNlICJhYmMiKSkKKyh0ZXN0 ICJBQkMiIChzdHJpbmctdXBjYXNlICJBQkMiKSkKKyh0ZXN0ICJhYmMiIChzdHJpbmctZG93bmNh c2UgImFiYyIpKQorKHRlc3QgImFiYyIgKHN0cmluZy1kb3duY2FzZSAiQUJDIikpCisodGVzdCAi YWJjIiAoc3RyaW5nLWZvbGRjYXNlICJhYmMiKSkKKyh0ZXN0ICJhYmMiIChzdHJpbmctZm9sZGNh c2UgIkFCQyIpKQorCis7OyBjeXJpbGxpYworKHRlc3QgIs6RzpLOkyIgKHN0cmluZy11cGNhc2Ug Is6xzrLOsyIpKQorKHRlc3QgIs6RzpLOkyIgKHN0cmluZy11cGNhc2UgIs6RzpLOkyIpKQorKHRl c3QgIs6xzrLOsyIgKHN0cmluZy1kb3duY2FzZSAizrHOss6zIikpCisodGVzdCAizrHOss6zIiAo c3RyaW5nLWRvd25jYXNlICLOkc6SzpMiKSkKKyh0ZXN0ICLOsc6yzrMiIChzdHJpbmctZm9sZGNh c2UgIs6xzrLOsyIpKQorKHRlc3QgIs6xzrLOsyIgKHN0cmluZy1mb2xkY2FzZSAizpHOks6TIikp CisKKzs7IHNwZWNpYWwgY2FzZXMKKyh0ZXN0ICJTU0EiIChzdHJpbmctdXBjYXNlICLDn2EiKSkK Kyh0ZXN0ICLDn2EiIChzdHJpbmctZG93bmNhc2UgIsOfYSIpKQorKHRlc3QgInNzYSIgKHN0cmlu Zy1kb3duY2FzZSAiU1NBIikpCisodGVzdCAixLAiIChzdHJpbmctdXBjYXNlICLEsCIpKQorKHRl c3QgImlceDAzMDc7IiAoc3RyaW5nLWRvd25jYXNlICLEsCIpKQorKHRlc3QgImlceDAzMDc7IiAo c3RyaW5nLWZvbGRjYXNlICLEsCIpKQorKHRlc3QgIkrMjCIgKHN0cmluZy11cGNhc2UgIsewIikp CisKKzs7IGNvbnRleHQtc2Vuc2l0aXZlIChmaW5hbCBzaWdtYSkKKyh0ZXN0ICLOk86bzo/Oo86j zpEiIChzdHJpbmctdXBjYXNlICLOs867z47Pg8+DzrEiKSkKKyh0ZXN0ICLOs867z47Pg8+DzrEi IChzdHJpbmctZG93bmNhc2UgIs6TzpvOj86jzqPOkSIpKQorKHRlc3QgIs6zzrvPjs+Dz4POsSIg KHN0cmluZy1mb2xkY2FzZSAizpPOm86PzqPOo86RIikpCisodGVzdCAizpzOiM6bzp/OoyIgKHN0 cmluZy11cGNhc2UgIs68zq3Ou86/z4IiKSkKKyh0ZXN0ICN0IChhbmQgKG1lbWJlciAoc3RyaW5n LWRvd25jYXNlICLOnM6IzpvOn86jIikgJygizrzOrc67zr/PgiIgIs68zq3Ou86/z4MiKSkgI3Qp KQorKHRlc3QgIs68zq3Ou86/z4MiIChzdHJpbmctZm9sZGNhc2UgIs6czojOm86fzqMiKSkKKyh0 ZXN0ICN0IChhbmQgKG1lbWJlciAoc3RyaW5nLWRvd25jYXNlICLOnM6IzpvOn86jIM6Vzp3OjM6j IikKKyAgICAgICAgICAgICAgICAgICAgICAnKCLOvM6tzrvOv8+CIM61zr3PjM+CIiAizrzOrc67 zr/PgyDOtc69z4zPgyIpKQorICAgICAgICAgICAgICAjdCkpCisKKyh0ZXN0ICIiIChzdWJzdHJp bmcgIiIgMCAwKSkKKyh0ZXN0ICIiIChzdWJzdHJpbmcgImEiIDAgMCkpCisodGVzdCAiIiAoc3Vi c3RyaW5nICJhYmMiIDEgMSkpCisodGVzdCAiYWIiIChzdWJzdHJpbmcgImFiYyIgMCAyKSkKKyh0 ZXN0ICJiYyIgKHN1YnN0cmluZyAiYWJjIiAxIDMpKQorCisodGVzdCAiIiAoc3RyaW5nLWFwcGVu ZCAiIikpCisodGVzdCAiIiAoc3RyaW5nLWFwcGVuZCAiIiAiIikpCisodGVzdCAiYWJjIiAoc3Ry aW5nLWFwcGVuZCAiIiAiYWJjIikpCisodGVzdCAiYWJjIiAoc3RyaW5nLWFwcGVuZCAiYWJjIiAi IikpCisodGVzdCAiYWJjZGUiIChzdHJpbmctYXBwZW5kICJhYmMiICJkZSIpKQorKHRlc3QgImFi Y2RlZiIgKHN0cmluZy1hcHBlbmQgImFiYyIgImRlIiAiZiIpKQorCisodGVzdCAnKCkgKHN0cmlu Zy0+bGlzdCAiIikpCisodGVzdCAnKCNcYSkgKHN0cmluZy0+bGlzdCAiYSIpKQorKHRlc3QgJygj XGEgI1xiICNcYykgKHN0cmluZy0+bGlzdCAiYWJjIikpCisodGVzdCAnKCNcYSAjXGIgI1xjKSAo c3RyaW5nLT5saXN0ICJhYmMiIDApKQorKHRlc3QgJygjXGIgI1xjKSAoc3RyaW5nLT5saXN0ICJh YmMiIDEpKQorKHRlc3QgJygjXGIgI1xjKSAoc3RyaW5nLT5saXN0ICJhYmMiIDEgMykpCisKKyh0 ZXN0ICIiIChsaXN0LT5zdHJpbmcgJygpKSkKKyh0ZXN0ICJhYmMiIChsaXN0LT5zdHJpbmcgJygj XGEgI1xiICNcYykpKQorCisodGVzdCAiIiAoc3RyaW5nLWNvcHkgIiIpKQorKHRlc3QgIiIgKHN0 cmluZy1jb3B5ICIiIDApKQorKHRlc3QgIiIgKHN0cmluZy1jb3B5ICIiIDAgMCkpCisodGVzdCAi YWJjIiAoc3RyaW5nLWNvcHkgImFiYyIpKQorKHRlc3QgImFiYyIgKHN0cmluZy1jb3B5ICJhYmMi IDApKQorKHRlc3QgImJjIiAoc3RyaW5nLWNvcHkgImFiYyIgMSkpCisodGVzdCAiYiIgKHN0cmlu Zy1jb3B5ICJhYmMiIDEgMikpCisodGVzdCAiYmMiIChzdHJpbmctY29weSAiYWJjIiAxIDMpKQor CisodGVzdCAiLS0tLS0iCisgICAgKGxldCAoKHN0ciAobWFrZS1zdHJpbmcgNSAjXHgpKSkgKHN0 cmluZy1maWxsISBzdHIgI1wtKSBzdHIpKQorKHRlc3QgInh4LS0tIgorICAgIChsZXQgKChzdHIg KG1ha2Utc3RyaW5nIDUgI1x4KSkpIChzdHJpbmctZmlsbCEgc3RyICNcLSAyKSBzdHIpKQorKHRl c3QgInh4LXh4IgorICAgIChsZXQgKChzdHIgKG1ha2Utc3RyaW5nIDUgI1x4KSkpIChzdHJpbmct ZmlsbCEgc3RyICNcLSAyIDMpIHN0cikpCisKKyh0ZXN0ICJhMTJkZSIKKyAgICAobGV0ICgoc3Ry IChzdHJpbmctY29weSAiYWJjZGUiKSkpIChzdHJpbmctY29weSEgc3RyIDEgIjEyMzQ1IiAwIDIp IHN0cikpCisodGVzdCAiLS0tLS0iCisgICAgKGxldCAoKHN0ciAobWFrZS1zdHJpbmcgNSAjXHgp KSkgKHN0cmluZy1jb3B5ISBzdHIgMCAiLS0tLS0iKSBzdHIpKQorKHRlc3QgIi0tLXh4IgorICAg IChsZXQgKChzdHIgKG1ha2Utc3RyaW5nIDUgI1x4KSkpIChzdHJpbmctY29weSEgc3RyIDAgIi0t LS0tIiAyKSBzdHIpKQorKHRlc3QgInh4LS0tIgorICAgIChsZXQgKChzdHIgKG1ha2Utc3RyaW5n IDUgI1x4KSkpIChzdHJpbmctY29weSEgc3RyIDIgIi0tLS0tIiAwIDMpIHN0cikpCisodGVzdCAi eHgteHgiCisgICAgKGxldCAoKHN0ciAobWFrZS1zdHJpbmcgNSAjXHgpKSkgKHN0cmluZy1jb3B5 ISBzdHIgMiAiLS0tLS0iIDIgMykgc3RyKSkKKworOzsgc2FtZSBzb3VyY2UgYW5kIGRlc3QKKyh0 ZXN0ICJhYWJkZSIKKyAgICAobGV0ICgoc3RyIChzdHJpbmctY29weSAiYWJjZGUiKSkpIChzdHJp bmctY29weSEgc3RyIDEgc3RyIDAgMikgc3RyKSkKKyh0ZXN0ICJhYmNhYiIKKyAgICAobGV0ICgo c3RyIChzdHJpbmctY29weSAiYWJjZGUiKSkpIChzdHJpbmctY29weSEgc3RyIDMgc3RyIDAgMikg c3RyKSkKKworKHRlc3QtZW5kKQorCisodGVzdC1iZWdpbiAiNi44IFZlY3RvcnMiKQorCisodGVz dCAjdCAodmVjdG9yPyAjKCkpKQorKHRlc3QgI3QgKHZlY3Rvcj8gIygxIDIgMykpKQorKHRlc3Qg I3QgKHZlY3Rvcj8gJyMoMSAyIDMpKSkKKworKHRlc3QgMCAodmVjdG9yLWxlbmd0aCAobWFrZS12 ZWN0b3IgMCkpKQorKHRlc3QgMTAwMCAodmVjdG9yLWxlbmd0aCAobWFrZS12ZWN0b3IgMTAwMCkp KQorCisodGVzdCAjKDAgKDIgMiAyIDIpICJBbm5hIikgJyMoMCAoMiAyIDIgMikgIkFubmEiKSkK KworKHRlc3QgIyhhIGIgYykgKHZlY3RvciAnYSAnYiAnYykpCisKKyh0ZXN0IDggKHZlY3Rvci1y ZWYgJyMoMSAxIDIgMyA1IDggMTMgMjEpIDUpKQorKHRlc3QgMTMgKHZlY3Rvci1yZWYgJyMoMSAx IDIgMyA1IDggMTMgMjEpCisgICAgICAgICAgICAobGV0ICgoaSAocm91bmQgKCogMiAoYWNvcyAt MSkpKSkpCisgICAgICAgICAgICAgIChpZiAoaW5leGFjdD8gaSkKKyAgICAgICAgICAgICAgICAg IChleGFjdCBpKQorICAgICAgICAgICAgICAgICAgaSkpKSkKKworKHRlc3QgIygwICgiU3VlIiAi U3VlIikgIkFubmEiKSAobGV0ICgodmVjICh2ZWN0b3IgMCAnKDIgMiAyIDIpICJBbm5hIikpKQor ICAodmVjdG9yLXNldCEgdmVjIDEgJygiU3VlIiAiU3VlIikpCisgIHZlYykpCisKKyh0ZXN0ICco ZGFoIGRhaCBkaWRhaCkgKHZlY3Rvci0+bGlzdCAnIyhkYWggZGFoIGRpZGFoKSkpCisodGVzdCAn KGRhaCBkaWRhaCkgKHZlY3Rvci0+bGlzdCAnIyhkYWggZGFoIGRpZGFoKSAxKSkKKyh0ZXN0ICco ZGFoKSAodmVjdG9yLT5saXN0ICcjKGRhaCBkYWggZGlkYWgpIDEgMikpCisodGVzdCAjKGRpZGlk aXQgZGFoKSAobGlzdC0+dmVjdG9yICcoZGlkaWRpdCBkYWgpKSkKKworKHRlc3QgIygpIChzdHJp bmctPnZlY3RvciAiIikpCisodGVzdCAjKCNcQSAjXEIgI1xDKSAoc3RyaW5nLT52ZWN0b3IgIkFC QyIpKQorKHRlc3QgIygjXEIgI1xDKSAoc3RyaW5nLT52ZWN0b3IgIkFCQyIgMSkpCisodGVzdCAj KCNcQikgKHN0cmluZy0+dmVjdG9yICJBQkMiIDEgMikpCisKKyh0ZXN0ICIiICh2ZWN0b3ItPnN0 cmluZyAjKCkpKQorKHRlc3QgIjEyMyIgKHZlY3Rvci0+c3RyaW5nICMoI1wxICNcMiAjXDMpKSkK Kyh0ZXN0ICIyMyIgKHZlY3Rvci0+c3RyaW5nICMoI1wxICNcMiAjXDMpIDEpKQorKHRlc3QgIjIi ICh2ZWN0b3ItPnN0cmluZyAjKCNcMSAjXDIgI1wzKSAxIDIpKQorCisodGVzdCAjKCkgKHZlY3Rv ci1jb3B5ICMoKSkpCisodGVzdCAjKGEgYiBjKSAodmVjdG9yLWNvcHkgIyhhIGIgYykpKQorKHRl c3QgIyhiIGMpICh2ZWN0b3ItY29weSAjKGEgYiBjKSAxKSkKKyh0ZXN0ICMoYikgKHZlY3Rvci1j b3B5ICMoYSBiIGMpIDEgMikpCisKKyh0ZXN0ICMoKSAodmVjdG9yLWFwcGVuZCAjKCkpKQorKHRl c3QgIygpICh2ZWN0b3ItYXBwZW5kICMoKSAjKCkpKQorKHRlc3QgIyhhIGIgYykgKHZlY3Rvci1h cHBlbmQgIygpICMoYSBiIGMpKSkKKyh0ZXN0ICMoYSBiIGMpICh2ZWN0b3ItYXBwZW5kICMoYSBi IGMpICMoKSkpCisodGVzdCAjKGEgYiBjIGQgZSkgKHZlY3Rvci1hcHBlbmQgIyhhIGIgYykgIyhk IGUpKSkKKyh0ZXN0ICMoYSBiIGMgZCBlIGYpICh2ZWN0b3ItYXBwZW5kICMoYSBiIGMpICMoZCBl KSAjKGYpKSkKKworKHRlc3QgIygxIDIgc21hc2ggc21hc2ggNSkKKyAgICAobGV0ICgodmVjICh2 ZWN0b3IgMSAyIDMgNCA1KSkpICh2ZWN0b3ItZmlsbCEgdmVjICdzbWFzaCAyIDQpIHZlYykpCiso dGVzdCAjKHggeCB4IHggeCkKKyAgICAobGV0ICgodmVjICh2ZWN0b3IgMSAyIDMgNCA1KSkpICh2 ZWN0b3ItZmlsbCEgdmVjICd4KSB2ZWMpKQorKHRlc3QgIygxIDIgeCB4IHgpCisgICAgKGxldCAo KHZlYyAodmVjdG9yIDEgMiAzIDQgNSkpKSAodmVjdG9yLWZpbGwhIHZlYyAneCAyKSB2ZWMpKQor KHRlc3QgIygxIDIgeCA0IDUpCisgICAgKGxldCAoKHZlYyAodmVjdG9yIDEgMiAzIDQgNSkpKSAo dmVjdG9yLWZpbGwhIHZlYyAneCAyIDMpIHZlYykpCisKKyh0ZXN0ICMoMSBhIGIgNCA1KQorICAg IChsZXQgKCh2ZWMgKHZlY3RvciAxIDIgMyA0IDUpKSkgKHZlY3Rvci1jb3B5ISB2ZWMgMSAjKGEg YiBjIGQgZSkgMCAyKSB2ZWMpKQorKHRlc3QgIyhhIGIgYyBkIGUpCisgICAgKGxldCAoKHZlYyAo dmVjdG9yIDEgMiAzIDQgNSkpKSAodmVjdG9yLWNvcHkhIHZlYyAwICMoYSBiIGMgZCBlKSkgdmVj KSkKKyh0ZXN0ICMoYyBkIGUgNCA1KQorICAgIChsZXQgKCh2ZWMgKHZlY3RvciAxIDIgMyA0IDUp KSkgKHZlY3Rvci1jb3B5ISB2ZWMgMCAjKGEgYiBjIGQgZSkgMikgdmVjKSkKKyh0ZXN0ICMoMSAy IGEgYiBjKQorICAgIChsZXQgKCh2ZWMgKHZlY3RvciAxIDIgMyA0IDUpKSkgKHZlY3Rvci1jb3B5 ISB2ZWMgMiAjKGEgYiBjIGQgZSkgMCAzKSB2ZWMpKQorKHRlc3QgIygxIDIgYyA0IDUpCisgICAg KGxldCAoKHZlYyAodmVjdG9yIDEgMiAzIDQgNSkpKSAodmVjdG9yLWNvcHkhIHZlYyAyICMoYSBi IGMgZCBlKSAyIDMpIHZlYykpCisKKzs7IHNhbWUgc291cmNlIGFuZCBkZXN0CisodGVzdCAjKDEg MSAyIDQgNSkKKyAgICAobGV0ICgodmVjICh2ZWN0b3IgMSAyIDMgNCA1KSkpICh2ZWN0b3ItY29w eSEgdmVjIDEgdmVjIDAgMikgdmVjKSkKKyh0ZXN0ICMoMSAyIDMgMSAyKQorICAgIChsZXQgKCh2 ZWMgKHZlY3RvciAxIDIgMyA0IDUpKSkgKHZlY3Rvci1jb3B5ISB2ZWMgMyB2ZWMgMCAyKSB2ZWMp KQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICI2LjkgQnl0ZXZlY3RvcnMiKQorCisodGVz dCAjdCAoYnl0ZXZlY3Rvcj8gI3U4KCkpKQorKHRlc3QgI3QgKGJ5dGV2ZWN0b3I/ICN1OCgwIDEg MikpKQorKHRlc3QgI2YgKGJ5dGV2ZWN0b3I/ICMoKSkpCisodGVzdCAjZiAoYnl0ZXZlY3Rvcj8g IygwIDEgMikpKQorKHRlc3QgI2YgKGJ5dGV2ZWN0b3I/ICcoKSkpCisodGVzdCAjdCAoYnl0ZXZl Y3Rvcj8gKG1ha2UtYnl0ZXZlY3RvciAwKSkpCisKKyh0ZXN0IDAgKGJ5dGV2ZWN0b3ItbGVuZ3Ro IChtYWtlLWJ5dGV2ZWN0b3IgMCkpKQorKHRlc3QgMTAyNCAoYnl0ZXZlY3Rvci1sZW5ndGggKG1h a2UtYnl0ZXZlY3RvciAxMDI0KSkpCisodGVzdCAxMDI0IChieXRldmVjdG9yLWxlbmd0aCAobWFr ZS1ieXRldmVjdG9yIDEwMjQgMjU1KSkpCisKKyh0ZXN0IDMgKGJ5dGV2ZWN0b3ItbGVuZ3RoIChi eXRldmVjdG9yIDAgMSAyKSkpCisKKyh0ZXN0IDAgKGJ5dGV2ZWN0b3ItdTgtcmVmIChieXRldmVj dG9yIDAgMSAyKSAwKSkKKyh0ZXN0IDEgKGJ5dGV2ZWN0b3ItdTgtcmVmIChieXRldmVjdG9yIDAg MSAyKSAxKSkKKyh0ZXN0IDIgKGJ5dGV2ZWN0b3ItdTgtcmVmIChieXRldmVjdG9yIDAgMSAyKSAy KSkKKworKHRlc3QgI3U4KDAgMjU1IDIpCisgICAgKGxldCAoKGJ2IChieXRldmVjdG9yIDAgMSAy KSkpIChieXRldmVjdG9yLXU4LXNldCEgYnYgMSAyNTUpIGJ2KSkKKworKHRlc3QgI3U4KCkgKGJ5 dGV2ZWN0b3ItY29weSAjdTgoKSkpCisodGVzdCAjdTgoMCAxIDIpIChieXRldmVjdG9yLWNvcHkg I3U4KDAgMSAyKSkpCisodGVzdCAjdTgoMSAyKSAoYnl0ZXZlY3Rvci1jb3B5ICN1OCgwIDEgMikg MSkpCisodGVzdCAjdTgoMSkgKGJ5dGV2ZWN0b3ItY29weSAjdTgoMCAxIDIpIDEgMikpCisKKyh0 ZXN0ICN1OCgxIDYgNyA0IDUpCisgICAgKGxldCAoKGJ2IChieXRldmVjdG9yIDEgMiAzIDQgNSkp KQorICAgICAgKGJ5dGV2ZWN0b3ItY29weSEgYnYgMSAjdTgoNiA3IDggOSAxMCkgMCAyKQorICAg ICAgYnYpKQorKHRlc3QgI3U4KDYgNyA4IDkgMTApCisgICAgKGxldCAoKGJ2IChieXRldmVjdG9y IDEgMiAzIDQgNSkpKQorICAgICAgKGJ5dGV2ZWN0b3ItY29weSEgYnYgMCAjdTgoNiA3IDggOSAx MCkpCisgICAgICBidikpCisodGVzdCAjdTgoOCA5IDEwIDQgNSkKKyAgICAobGV0ICgoYnYgKGJ5 dGV2ZWN0b3IgMSAyIDMgNCA1KSkpCisgICAgICAoYnl0ZXZlY3Rvci1jb3B5ISBidiAwICN1OCg2 IDcgOCA5IDEwKSAyKQorICAgICAgYnYpKQorKHRlc3QgI3U4KDEgMiA2IDcgOCkKKyAgICAobGV0 ICgoYnYgKGJ5dGV2ZWN0b3IgMSAyIDMgNCA1KSkpCisgICAgICAoYnl0ZXZlY3Rvci1jb3B5ISBi diAyICN1OCg2IDcgOCA5IDEwKSAwIDMpCisgICAgICBidikpCisodGVzdCAjdTgoMSAyIDggNCA1 KQorICAgIChsZXQgKChidiAoYnl0ZXZlY3RvciAxIDIgMyA0IDUpKSkKKyAgICAgIChieXRldmVj dG9yLWNvcHkhIGJ2IDIgI3U4KDYgNyA4IDkgMTApIDIgMykKKyAgICAgIGJ2KSkKKworOzsgc2Ft ZSBzb3VyY2UgYW5kIGRlc3QKKyh0ZXN0ICN1OCgxIDEgMiA0IDUpCisgICAgKGxldCAoKGJ2IChi eXRldmVjdG9yIDEgMiAzIDQgNSkpKQorICAgICAgKGJ5dGV2ZWN0b3ItY29weSEgYnYgMSBidiAw IDIpCisgICAgICBidikpCisodGVzdCAjdTgoMSAyIDMgMSAyKQorICAgIChsZXQgKChidiAoYnl0 ZXZlY3RvciAxIDIgMyA0IDUpKSkKKyAgICAgIChieXRldmVjdG9yLWNvcHkhIGJ2IDMgYnYgMCAy KQorICAgICAgYnYpKQorCisodGVzdCAjdTgoKSAoYnl0ZXZlY3Rvci1hcHBlbmQgI3U4KCkpKQor KHRlc3QgI3U4KCkgKGJ5dGV2ZWN0b3ItYXBwZW5kICN1OCgpICN1OCgpKSkKKyh0ZXN0ICN1OCgw IDEgMikgKGJ5dGV2ZWN0b3ItYXBwZW5kICN1OCgpICN1OCgwIDEgMikpKQorKHRlc3QgI3U4KDAg MSAyKSAoYnl0ZXZlY3Rvci1hcHBlbmQgI3U4KDAgMSAyKSAjdTgoKSkpCisodGVzdCAjdTgoMCAx IDIgMyA0KSAoYnl0ZXZlY3Rvci1hcHBlbmQgI3U4KDAgMSAyKSAjdTgoMyA0KSkpCisodGVzdCAj dTgoMCAxIDIgMyA0IDUpIChieXRldmVjdG9yLWFwcGVuZCAjdTgoMCAxIDIpICN1OCgzIDQpICN1 OCg1KSkpCisKKyh0ZXN0ICJBQkMiICh1dGY4LT5zdHJpbmcgI3U4KCN4NDEgI3g0MiAjeDQzKSkp CisodGVzdCAiQUJDIiAodXRmOC0+c3RyaW5nICN1OCgwICN4NDEgI3g0MiAjeDQzKSAxKSkKKyh0 ZXN0ICJBQkMiICh1dGY4LT5zdHJpbmcgI3U4KDAgI3g0MSAgI3g0MiAjeDQzIDApIDEgNCkpCiso dGVzdCAizrsiICh1dGY4LT5zdHJpbmcgI3U4KDAgI3hDRSAjeEJCIDApIDEgMykpCisodGVzdCAj dTgoI3g0MSAjeDQyICN4NDMpIChzdHJpbmctPnV0ZjggIkFCQyIpKQorKHRlc3QgI3U4KCN4NDIg I3g0MykgKHN0cmluZy0+dXRmOCAiQUJDIiAxKSkKKyh0ZXN0ICN1OCgjeDQyKSAoc3RyaW5nLT51 dGY4ICJBQkMiIDEgMikpCisodGVzdCAjdTgoI3hDRSAjeEJCKSAoc3RyaW5nLT51dGY4ICLOuyIp KQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICI2LjEwIENvbnRyb2wgRmVhdHVyZXMiKQor CisodGVzdCAjdCAocHJvY2VkdXJlPyBjYXIpKQorKHRlc3QgI2YgKHByb2NlZHVyZT8gJ2Nhcikp CisodGVzdCAjdCAocHJvY2VkdXJlPyAobGFtYmRhICh4KSAoKiB4IHgpKSkpCisodGVzdCAjZiAo cHJvY2VkdXJlPyAnKGxhbWJkYSAoeCkgKCogeCB4KSkpKQorKHRlc3QgI3QgKGNhbGwtd2l0aC1j dXJyZW50LWNvbnRpbnVhdGlvbiBwcm9jZWR1cmU/KSkKKworKHRlc3QgNyAoYXBwbHkgKyAobGlz dCAzIDQpKSkKKworKGRlZmluZSBjb21wb3NlCisgIChsYW1iZGEgKGYgZykKKyAgICAobGFtYmRh IGFyZ3MKKyAgICAgIChmIChhcHBseSBnIGFyZ3MpKSkpKQorKHRlc3QgJygzMCAwKQorICAgIChj YWxsLXdpdGgtdmFsdWVzIChsYW1iZGEgKCkgKChjb21wb3NlIGV4YWN0LWludGVnZXItc3FydCAq KSAxMiA3NSkpCisgICAgICBsaXN0KSkKKworKHRlc3QgJyhiIGUgaCkgKG1hcCBjYWRyICcoKGEg YikgKGQgZSkgKGcgaCkpKSkKKworKHRlc3QgJygxIDQgMjcgMjU2IDMxMjUpIChtYXAgKGxhbWJk YSAobikgKGV4cHQgbiBuKSkgJygxIDIgMyA0IDUpKSkKKworKHRlc3QgJyg1IDcgOSkgKG1hcCAr ICcoMSAyIDMpICcoNCA1IDYgNykpKQorCisodGVzdCAjdAorICAgIChsZXQgKChyZXMgKGxldCAo KGNvdW50IDApKQorICAgICAgICAgICAgICAgICAobWFwIChsYW1iZGEgKGlnbm9yZWQpCisgICAg ICAgICAgICAgICAgICAgICAgICAoc2V0ISBjb3VudCAoKyBjb3VudCAxKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICcoYSBiKSkpKSkKKyAg ICAgIChvciAoZXF1YWw/IHJlcyAnKDEgMikpCisgICAgICAgICAgKGVxdWFsPyByZXMgJygyIDEp KSkpKQorCisodGVzdCAnKDEwIDIwMCAzMDAwIDQwIDUwMCA2MDAwKQorICAgIChsZXQgKChsczEg KGxpc3QgMTAgMTAwIDEwMDApKQorICAgICAgICAgIChsczIgKGxpc3QgMSAyIDMgNCA1IDYpKSkK KyAgICAgIChzZXQtY2RyISAoY2RkciBsczEpIGxzMSkKKyAgICAgIChtYXAgKiBsczEgbHMyKSkp CisKKyh0ZXN0ICJhYmRlZ2giIChzdHJpbmctbWFwIGNoYXItZm9sZGNhc2UgIkFiZEVnSCIpKQor CisodGVzdCAiSUJNIiAoc3RyaW5nLW1hcAorIChsYW1iZGEgKGMpCisgICAoaW50ZWdlci0+Y2hh ciAoKyAxIChjaGFyLT5pbnRlZ2VyIGMpKSkpCisgIkhBTCIpKQorCisodGVzdCAiU3RVZEx5Q2FQ cyIKKyAgICAoc3RyaW5nLW1hcAorICAgICAobGFtYmRhIChjIGspIChpZiAoZXF2PyBrICNcdSkg KGNoYXItdXBjYXNlIGMpIChjaGFyLWRvd25jYXNlIGMpKSkKKyAgICAgInN0dWRseWNhcHMgeHh4 IgorICAgICAidWx1bHVsdWx1bCIpKQorCisodGVzdCAjKGIgZSBoKSAodmVjdG9yLW1hcCBjYWRy ICcjKChhIGIpIChkIGUpIChnIGgpKSkpCisKKyh0ZXN0ICMoMSA0IDI3IDI1NiAzMTI1KQorICAg ICh2ZWN0b3ItbWFwIChsYW1iZGEgKG4pIChleHB0IG4gbikpCisgICAgICAgICAgICAgICAgJyMo MSAyIDMgNCA1KSkpCisKKyh0ZXN0ICMoNSA3IDkpICh2ZWN0b3ItbWFwICsgJyMoMSAyIDMpICcj KDQgNSA2IDcpKSkKKworKHRlc3QgI3QKKyAgICAobGV0ICgocmVzIChsZXQgKChjb3VudCAwKSkK KyAgICAgICAgICAgICAgICAgKHZlY3Rvci1tYXAKKyAgICAgICAgICAgICAgICAgIChsYW1iZGEg KGlnbm9yZWQpCisgICAgICAgICAgICAgICAgICAgIChzZXQhIGNvdW50ICgrIGNvdW50IDEpKQor ICAgICAgICAgICAgICAgICAgICBjb3VudCkKKyAgICAgICAgICAgICAgICAgICcjKGEgYikpKSkp CisgICAgICAob3IgKGVxdWFsPyByZXMgIygxIDIpKQorICAgICAgICAgIChlcXVhbD8gcmVzICMo MiAxKSkpKSkKKworKHRlc3QgIygwIDEgNCA5IDE2KQorICAgIChsZXQgKCh2IChtYWtlLXZlY3Rv ciA1KSkpCisgICAgICAoZm9yLWVhY2ggKGxhbWJkYSAoaSkKKyAgICAgICAgICAgICAgICAgICh2 ZWN0b3Itc2V0ISB2IGkgKCogaSBpKSkpCisgICAgICAgICAgICAgICAgJygwIDEgMiAzIDQpKQor ICAgICAgdikpCisKKyh0ZXN0IDk3NTAKKyAgICAobGV0ICgobHMxIChsaXN0IDEwIDEwMCAxMDAw KSkKKyAgICAgICAgICAobHMyIChsaXN0IDEgMiAzIDQgNSA2KSkKKyAgICAgICAgICAoY291bnQg MCkpCisgICAgICAoc2V0LWNkciEgKGNkZHIgbHMxKSBsczEpCisgICAgICAoZm9yLWVhY2ggKGxh bWJkYSAoeCB5KSAoc2V0ISBjb3VudCAoKyBjb3VudCAoKiB4IHkpKSkpIGxzMiBsczEpCisgICAg ICBjb3VudCkpCisKKyh0ZXN0ICcoMTAxIDEwMCA5OSA5OCA5NykKKyAgICAobGV0ICgodiAnKCkp KQorICAgICAgKHN0cmluZy1mb3ItZWFjaAorICAgICAgIChsYW1iZGEgKGMpIChzZXQhIHYgKGNv bnMgKGNoYXItPmludGVnZXIgYykgdikpKQorICAgICAgICJhYmNkZSIpCisgICAgICB2KSkKKwor KHRlc3QgJygwIDEgNCA5IDE2KSAobGV0ICgodiAobWFrZS1saXN0IDUpKSkKKyAgKHZlY3Rvci1m b3ItZWFjaAorICAgKGxhbWJkYSAoaSkgKGxpc3Qtc2V0ISB2IGkgKCogaSBpKSkpCisgICAnIygw IDEgMiAzIDQpKQorICB2KSkKKworKHRlc3QgLTMgKGNhbGwtd2l0aC1jdXJyZW50LWNvbnRpbnVh dGlvbgorICAobGFtYmRhIChleGl0KQorICAgIChmb3ItZWFjaCAobGFtYmRhICh4KQorICAgICAg ICAgICAgICAgIChpZiAobmVnYXRpdmU/IHgpCisgICAgICAgICAgICAgICAgICAgIChleGl0IHgp KSkKKyAgICAgICAgICAgICAgJyg1NCAwIDM3IC0zIDI0NSAxOSkpCisgICAgI3QpKSkKKyhkZWZp bmUgbGlzdC1sZW5ndGgKKyAgKGxhbWJkYSAob2JqKQorICAgIChjYWxsLXdpdGgtY3VycmVudC1j b250aW51YXRpb24KKyAgICAgIChsYW1iZGEgKHJldHVybikKKyAgICAgICAgKGxldHJlYyAoKHIK KyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKG9iaikKKyAgICAgICAgICAgICAgICAgICAgKGNv bmQgKChudWxsPyBvYmopIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICgocGFpcj8gb2Jq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgKHIgKGNkciBvYmopKSAxKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKGVsc2UgKHJldHVybiAjZikpKSkpKQorICAgICAgICAgIChy IG9iaikpKSkpKQorCisodGVzdCA0IChsaXN0LWxlbmd0aCAnKDEgMiAzIDQpKSkKKworKHRlc3Qg I2YgKGxpc3QtbGVuZ3RoICcoYSBiIC4gYykpKQorCisodGVzdCA1CisgICAgKGNhbGwtd2l0aC12 YWx1ZXMgKGxhbWJkYSAoKSAodmFsdWVzIDQgNSkpCisgICAgICAobGFtYmRhIChhIGIpIGIpKSkK KworKHRlc3QgLTEgKGNhbGwtd2l0aC12YWx1ZXMgKiAtKSkKKworKHRlc3QgJyhjb25uZWN0IHRh bGsxIGRpc2Nvbm5lY3QKKyAgICAgICAgY29ubmVjdCB0YWxrMiBkaXNjb25uZWN0KQorICAgIChs ZXQgKChwYXRoICcoKSkKKyAgICAgICAgICAoYyAjZikpCisgICAgICAobGV0ICgoYWRkIChsYW1i ZGEgKHMpCisgICAgICAgICAgICAgICAgICAgKHNldCEgcGF0aCAoY29ucyBzIHBhdGgpKSkpKQor ICAgICAgICAoZHluYW1pYy13aW5kCisgICAgICAgICAgKGxhbWJkYSAoKSAoYWRkICdjb25uZWN0 KSkKKyAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAoYWRkIChjYWxsLXdpdGgtY3Vy cmVudC1jb250aW51YXRpb24KKyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGMwKQorICAgICAg ICAgICAgICAgICAgICAoc2V0ISBjIGMwKQorICAgICAgICAgICAgICAgICAgICAndGFsazEpKSkp CisgICAgICAgICAgKGxhbWJkYSAoKSAoYWRkICdkaXNjb25uZWN0KSkpCisgICAgICAgIChpZiAo PCAobGVuZ3RoIHBhdGgpIDQpCisgICAgICAgICAgICAoYyAndGFsazIpCisgICAgICAgICAgICAo cmV2ZXJzZSBwYXRoKSkpKSkKKworKHRlc3QtZW5kKQorCisodGVzdC1iZWdpbiAiNi4xMSBFeGNl cHRpb25zIikKKworKHRlc3QgNjUKKyAgICAod2l0aC1leGNlcHRpb24taGFuZGxlcgorICAgICAo bGFtYmRhIChjb24pIDQyKQorICAgICAobGFtYmRhICgpCisgICAgICAgKCsgKHJhaXNlLWNvbnRp bnVhYmxlICJzaG91bGQgYmUgYSBudW1iZXIiKQorICAgICAgICAgIDIzKSkpKQorCisodGVzdCAj dAorICAgIChlcnJvci1vYmplY3Q/IChndWFyZCAoZXhuIChlbHNlIGV4bikpIChlcnJvciAiQk9P TSEiIDEgMiAzKSkpKQorKHRlc3QgIkJPT00hIgorICAgIChlcnJvci1vYmplY3QtbWVzc2FnZSAo Z3VhcmQgKGV4biAoZWxzZSBleG4pKSAoZXJyb3IgIkJPT00hIiAxIDIgMykpKSkKKyh0ZXN0ICco MSAyIDMpCisgICAgKGVycm9yLW9iamVjdC1pcnJpdGFudHMgKGd1YXJkIChleG4gKGVsc2UgZXhu KSkgKGVycm9yICJCT09NISIgMSAyIDMpKSkpCisKKyh0ZXN0ICNmCisgICAgKGZpbGUtZXJyb3I/ IChndWFyZCAoZXhuIChlbHNlIGV4bikpIChlcnJvciAiQk9PTSEiKSkpKQorKHRlc3QgI3QKKyAg ICAoZmlsZS1lcnJvcj8gKGd1YXJkIChleG4gKGVsc2UgZXhuKSkgKG9wZW4taW5wdXQtZmlsZSAi IG5vIHN1Y2ggZmlsZSAiKSkpKQorCisodGVzdCAjZgorICAgIChyZWFkLWVycm9yPyAoZ3VhcmQg KGV4biAoZWxzZSBleG4pKSAoZXJyb3IgIkJPT00hIikpKSkKKyh0ZXN0ICN0CisgICAgKHJlYWQt ZXJyb3I/IChndWFyZCAoZXhuIChlbHNlIGV4bikpIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAi KSIpKSkpKQorCisoZGVmaW5lIHNvbWV0aGluZy13ZW50LXdyb25nICNmKQorKGRlZmluZSAodGVz dC1leGNlcHRpb24taGFuZGxlci0xIHYpCisgIChjYWxsLXdpdGgtY3VycmVudC1jb250aW51YXRp b24KKyAgIChsYW1iZGEgKGspCisgICAgICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyCisgICAgICAo bGFtYmRhICh4KQorICAgICAgICAoc2V0ISBzb21ldGhpbmctd2VudC13cm9uZyAobGlzdCAiY29u ZGl0aW9uOiAiIHgpKQorICAgICAgICAoayAnZXhjZXB0aW9uKSkKKyAgICAgIChsYW1iZGEgKCkK KyAgICAgICAgKCsgMSAoaWYgKD4gdiAwKSAoKyB2IDEwMCkgKHJhaXNlICdhbi1lcnJvcikpKSkp KSkpCisodGVzdCAxMDYgKHRlc3QtZXhjZXB0aW9uLWhhbmRsZXItMSA1KSkKKyh0ZXN0ICNmIHNv bWV0aGluZy13ZW50LXdyb25nKQorKHRlc3QgJ2V4Y2VwdGlvbiAodGVzdC1leGNlcHRpb24taGFu ZGxlci0xIC0xKSkKKyh0ZXN0ICcoImNvbmRpdGlvbjogIiBhbi1lcnJvcikgc29tZXRoaW5nLXdl bnQtd3JvbmcpCisKKyhzZXQhIHNvbWV0aGluZy13ZW50LXdyb25nICNmKQorKGRlZmluZSAodGVz dC1leGNlcHRpb24taGFuZGxlci0yIHYpCisgIChndWFyZCAoZXggKGVsc2UgJ2NhdWdodC1hbm90 aGVyLWV4Y2VwdGlvbikpCisgICAgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIKKyAgICAgKGxhbWJk YSAoeCkKKyAgICAgICAoc2V0ISBzb21ldGhpbmctd2VudC13cm9uZyAjdCkKKyAgICAgICAobGlz dCAiZXhjZXB0aW9uOiIgeCkpCisgICAgIChsYW1iZGEgKCkKKyAgICAgICAoKyAxIChpZiAoPiB2 IDApICgrIHYgMTAwKSAocmFpc2UgJ2FuLWVycm9yKSkpKSkpKQorKHRlc3QgMTA2ICh0ZXN0LWV4 Y2VwdGlvbi1oYW5kbGVyLTIgNSkpCisodGVzdCAjZiBzb21ldGhpbmctd2VudC13cm9uZykKKyh0 ZXN0ICdjYXVnaHQtYW5vdGhlci1leGNlcHRpb24gKHRlc3QtZXhjZXB0aW9uLWhhbmRsZXItMiAt MSkpCisodGVzdCAjdCBzb21ldGhpbmctd2VudC13cm9uZykKKworOzsgQmFzZWQgb24gYW4gZXhh bXBsZSBmcm9tIFI2UlMtbGliIHNlY3Rpb24gNy4xIEV4Y2VwdGlvbnMuCis7OyBSN1JTIHNlY3Rp b24gNi4xMSBFeGNlcHRpb25zIGhhcyBhIHNpbXBsaWZpZWQgdmVyc2lvbi4KKyhsZXQqICgob3V0 IChvcGVuLW91dHB1dC1zdHJpbmcpKQorICAgICAgICh2YWx1ZSAod2l0aC1leGNlcHRpb24taGFu ZGxlcgorICAgICAgICAgICAgICAgKGxhbWJkYSAoY29uKQorICAgICAgICAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgICAgICAgKChub3QgKGxpc3Q/IGNvbikpCisgICAgICAgICAgICAgICAg ICAgKHJhaXNlIGNvbikpCisgICAgICAgICAgICAgICAgICAoKGxpc3Q/IGNvbikKKyAgICAgICAg ICAgICAgICAgICAoZGlzcGxheSAoY2FyIGNvbikgb3V0KSkKKyAgICAgICAgICAgICAgICAgIChl bHNlCisgICAgICAgICAgICAgICAgICAgKGRpc3BsYXkgImEgd2FybmluZyBoYXMgYmVlbiBpc3N1 ZWQiIG91dCkpKQorICAgICAgICAgICAgICAgICA0MikKKyAgICAgICAgICAgICAgIChsYW1iZGEg KCkKKyAgICAgICAgICAgICAgICAgKCsgKHJhaXNlLWNvbnRpbnVhYmxlCisgICAgICAgICAgICAg ICAgICAgICAobGlzdCAic2hvdWxkIGJlIGEgbnVtYmVyIikpCisgICAgICAgICAgICAgICAgICAg IDIzKSkpKSkKKyAgKHRlc3QgInNob3VsZCBiZSBhIG51bWJlciIgKGdldC1vdXRwdXQtc3RyaW5n IG91dCkpCisgICh0ZXN0IDY1IHZhbHVlKSkKKworOzsgRnJvbSBTUkZJLTM0ICJFeGFtcGxlcyIg c2VjdGlvbiAtICMzCisoZGVmaW5lICh0ZXN0LWV4Y2VwdGlvbi1oYW5kbGVyLTMgdiBvdXQpCisg IChndWFyZCAoY29uZGl0aW9uCisgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgKGRpc3BsYXkg ImNvbmRpdGlvbjogIiBvdXQpCisgICAgICAgICAgICh3cml0ZSBjb25kaXRpb24gb3V0KQorICAg ICAgICAgICAoZGlzcGxheSAjXCEgb3V0KQorICAgICAgICAgICAnZXhjZXB0aW9uKSkKKyAgICAg ICAgICgrIDEgKGlmICg9IHYgMCkgKHJhaXNlICdhbi1lcnJvcikgKC8gMTAgdikpKSkpCisobGV0 KiAoKG91dCAob3Blbi1vdXRwdXQtc3RyaW5nKSkKKyAgICAgICAodmFsdWUgKHRlc3QtZXhjZXB0 aW9uLWhhbmRsZXItMyAwIG91dCkpKQorICAodGVzdCAnZXhjZXB0aW9uIHZhbHVlKQorICAodGVz dCAiY29uZGl0aW9uOiBhbi1lcnJvciEiIChnZXQtb3V0cHV0LXN0cmluZyBvdXQpKSkKKworKGRl ZmluZSAodGVzdC1leGNlcHRpb24taGFuZGxlci00IHYgb3V0KQorICAoY2FsbC13aXRoLWN1cnJl bnQtY29udGludWF0aW9uCisgICAobGFtYmRhIChrKQorICAgICAod2l0aC1leGNlcHRpb24taGFu ZGxlcgorICAgICAgKGxhbWJkYSAoeCkKKyAgICAgICAgKGRpc3BsYXkgInJlcmFpc2VkICIgb3V0 KQorICAgICAgICAod3JpdGUgeCBvdXQpIChkaXNwbGF5ICNcISBvdXQpCisgICAgICAgIChrICd6 ZXJvKSkKKyAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgKGd1YXJkIChjb25kaXRpb24KKyAgICAg ICAgICAgICAgICAoKHBvc2l0aXZlPyBjb25kaXRpb24pCisgICAgICAgICAgICAgICAgICdwb3Np dGl2ZSkKKyAgICAgICAgICAgICAgICAoKG5lZ2F0aXZlPyBjb25kaXRpb24pCisgICAgICAgICAg ICAgICAgICduZWdhdGl2ZSkpCisgICAgICAgICAgKHJhaXNlIHYpKSkpKSkpCisKKzs7IEZyb20g U1JGSS0zNCAiRXhhbXBsZXMiIHNlY3Rpb24gLSAjNQorKGxldCogKChvdXQgKG9wZW4tb3V0cHV0 LXN0cmluZykpCisgICAgICAgKHZhbHVlICh0ZXN0LWV4Y2VwdGlvbi1oYW5kbGVyLTQgMSBvdXQp KSkKKyAgKHRlc3QgIiIgKGdldC1vdXRwdXQtc3RyaW5nIG91dCkpCisgICh0ZXN0ICdwb3NpdGl2 ZSB2YWx1ZSkpCis7OyBGcm9tIFNSRkktMzQgIkV4YW1wbGVzIiBzZWN0aW9uIC0gIzYKKyhsZXQq ICgob3V0IChvcGVuLW91dHB1dC1zdHJpbmcpKQorICAgICAgICh2YWx1ZSAodGVzdC1leGNlcHRp b24taGFuZGxlci00IC0xIG91dCkpKQorICAodGVzdCAiIiAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0 KSkKKyAgKHRlc3QgJ25lZ2F0aXZlIHZhbHVlKSkKKzs7IEZyb20gU1JGSS0zNCAiRXhhbXBsZXMi IHNlY3Rpb24gLSAjNworKGxldCogKChvdXQgKG9wZW4tb3V0cHV0LXN0cmluZykpCisgICAgICAg KHZhbHVlICh0ZXN0LWV4Y2VwdGlvbi1oYW5kbGVyLTQgMCBvdXQpKSkKKyAgKHRlc3QgInJlcmFp c2VkIDAhIiAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0KSkKKyAgKHRlc3QgJ3plcm8gdmFsdWUpKQor Cis7OyBGcm9tIFNSRkktMzQgIkV4YW1wbGVzIiBzZWN0aW9uIC0gIzgKKyh0ZXN0IDQyCisgICAg KGd1YXJkIChjb25kaXRpb24KKyAgICAgICAgICAgICgoYXNzcSAnYSBjb25kaXRpb24pID0+IGNk cikKKyAgICAgICAgICAgICgoYXNzcSAnYiBjb25kaXRpb24pKSkKKyAgICAgIChyYWlzZSAobGlz dCAoY29ucyAnYSA0MikpKSkpCisKKzs7IEZyb20gU1JGSS0zNCAiRXhhbXBsZXMiIHNlY3Rpb24g LSAjOQorKHRlc3QgJyhiIC4gMjMpCisgICAgKGd1YXJkIChjb25kaXRpb24KKyAgICAgICAgICAg ICgoYXNzcSAnYSBjb25kaXRpb24pID0+IGNkcikKKyAgICAgICAgICAgICgoYXNzcSAnYiBjb25k aXRpb24pKSkKKyAgICAgIChyYWlzZSAobGlzdCAoY29ucyAnYiAyMykpKSkpCisKKyh0ZXN0ICdj YXVnaHQtZAorICAgIChndWFyZCAoY29uZGl0aW9uCisgICAgICAgICAgICAoKGFzc3EgJ2MgY29u ZGl0aW9uKSAnY2F1Z2h0LWMpCisgICAgICAgICAgICAoKGFzc3EgJ2QgY29uZGl0aW9uKSAnY2F1 Z2h0LWQpKQorICAgICAgKGxpc3QKKyAgICAgICAoc3FydCA4KQorICAgICAgIChndWFyZCAoY29u ZGl0aW9uCisgICAgICAgICAgICAgICAoKGFzc3EgJ2EgY29uZGl0aW9uKSA9PiBjZHIpCisgICAg ICAgICAgICAgICAoKGFzc3EgJ2IgY29uZGl0aW9uKSkpCisgICAgICAgICAocmFpc2UgKGxpc3Qg KGNvbnMgJ2QgMjQpKSkpKSkpCisKKyh0ZXN0LWVuZCkKKworKHRlc3QtYmVnaW4gIjYuMTIgRW52 aXJvbm1lbnRzIGFuZCBldmFsdWF0aW9uIikKKworOzsgKHRlc3QgMjEgKGV2YWwgJygqIDcgMykg KHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgNSkpKQorCisodGVzdCAyMAorICAgIChsZXQgKChm IChldmFsICcobGFtYmRhIChmIHgpIChmIHggeCkpIChudWxsLWVudmlyb25tZW50IDUpKSkpCisg ICAgICAoZiArIDEwKSkpCisKKyh0ZXN0IDEwMjQgKGV2YWwgJyhleHB0IDIgMTApIChlbnZpcm9u bWVudCAnKHNjaGVtZSBiYXNlKSkpKQorOzsgKHNpbiAwKSBtYXkgcmV0dXJuIGV4YWN0IG51bWJl cgorKHRlc3QgMC4wIChpbmV4YWN0IChldmFsICcoc2luIDApIChlbnZpcm9ubWVudCAnKHNjaGVt ZSBpbmV4YWN0KSkpKSkKKzs7IGRpdHRvCisodGVzdCAxMDI0LjAgKGV2YWwgJygrIChleHB0IDIg MTApIChpbmV4YWN0IChzaW4gMCkpKQorICAgICAgICAgICAgICAgICAgIChlbnZpcm9ubWVudCAn KHNjaGVtZSBiYXNlKSAnKHNjaGVtZSBpbmV4YWN0KSkpKQorCisodGVzdC1lbmQpCisKKyh0ZXN0 LWJlZ2luICI2LjEzIElucHV0IGFuZCBvdXRwdXQiKQorCisodGVzdCAjdCAocG9ydD8gKGN1cnJl bnQtaW5wdXQtcG9ydCkpKQorKHRlc3QgI3QgKGlucHV0LXBvcnQ/IChjdXJyZW50LWlucHV0LXBv cnQpKSkKKyh0ZXN0ICN0IChvdXRwdXQtcG9ydD8gKGN1cnJlbnQtb3V0cHV0LXBvcnQpKSkKKyh0 ZXN0ICN0IChvdXRwdXQtcG9ydD8gKGN1cnJlbnQtZXJyb3ItcG9ydCkpKQorKHRlc3QgI3QgKGlu cHV0LXBvcnQ/IChvcGVuLWlucHV0LXN0cmluZyAiYWJjIikpKQorKHRlc3QgI3QgKG91dHB1dC1w b3J0PyAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCisKKyh0ZXN0ICN0ICh0ZXh0dWFsLXBvcnQ/IChv cGVuLWlucHV0LXN0cmluZyAiYWJjIikpKQorKHRlc3QgI3QgKHRleHR1YWwtcG9ydD8gKG9wZW4t b3V0cHV0LXN0cmluZykpKQorKHRlc3QgI3QgKGJpbmFyeS1wb3J0PyAob3Blbi1pbnB1dC1ieXRl dmVjdG9yICN1OCgwIDEgMikpKSkKKyh0ZXN0ICN0IChiaW5hcnktcG9ydD8gKG9wZW4tb3V0cHV0 LWJ5dGV2ZWN0b3IpKSkKKworKHRlc3QgI3QgKGlucHV0LXBvcnQtb3Blbj8gKG9wZW4taW5wdXQt c3RyaW5nICJhYmMiKSkpCisodGVzdCAjdCAob3V0cHV0LXBvcnQtb3Blbj8gKG9wZW4tb3V0cHV0 LXN0cmluZykpKQorCisodGVzdCAjZgorICAgIChsZXQgKChpbiAob3Blbi1pbnB1dC1zdHJpbmcg ImFiYyIpKSkKKyAgICAgIChjbG9zZS1pbnB1dC1wb3J0IGluKQorICAgICAgKGlucHV0LXBvcnQt b3Blbj8gaW4pKSkKKworKHRlc3QgI2YKKyAgICAobGV0ICgob3V0IChvcGVuLW91dHB1dC1zdHJp bmcpKSkKKyAgICAgIChjbG9zZS1vdXRwdXQtcG9ydCBvdXQpCisgICAgICAob3V0cHV0LXBvcnQt b3Blbj8gb3V0KSkpCisKKyh0ZXN0ICNmCisgICAgKGxldCAoKG91dCAob3Blbi1vdXRwdXQtc3Ry aW5nKSkpCisgICAgICAoY2xvc2UtcG9ydCBvdXQpCisgICAgICAob3V0cHV0LXBvcnQtb3Blbj8g b3V0KSkpCisKKyh0ZXN0ICdlcnJvcgorICAgIChsZXQgKChpbiAob3Blbi1pbnB1dC1zdHJpbmcg ImFiYyIpKSkKKyAgICAgIChjbG9zZS1pbnB1dC1wb3J0IGluKQorICAgICAgKGd1YXJkIChleG4g KGVsc2UgJ2Vycm9yKSkgKHJlYWQtY2hhciBpbikpKSkKKworKHRlc3QgJ2Vycm9yCisgICAgKGxl dCAoKG91dCAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCisgICAgICAoY2xvc2Utb3V0cHV0LXBvcnQg b3V0KQorICAgICAgKGd1YXJkIChleG4gKGVsc2UgJ2Vycm9yKSkgKHdyaXRlLWNoYXIgI1xjIG91 dCkpKSkKKworKHRlc3QgI3QgKGVvZi1vYmplY3Q/IChlb2Ytb2JqZWN0KSkpCisodGVzdCAjdCAo ZW9mLW9iamVjdD8gKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIiKSkpKQorKHRlc3QgI3QgKGNo YXItcmVhZHk/IChvcGVuLWlucHV0LXN0cmluZyAiNDIiKSkpCisodGVzdCA0MiAocmVhZCAob3Bl bi1pbnB1dC1zdHJpbmcgIiA0MiAiKSkpCisKKyh0ZXN0ICN0IChlb2Ytb2JqZWN0PyAocmVhZC1j aGFyIChvcGVuLWlucHV0LXN0cmluZyAiIikpKSkKKyh0ZXN0ICNcYSAocmVhZC1jaGFyIChvcGVu LWlucHV0LXN0cmluZyAiYWJjIikpKQorCisodGVzdCAjdCAoZW9mLW9iamVjdD8gKHJlYWQtbGlu ZSAob3Blbi1pbnB1dC1zdHJpbmcgIiIpKSkpCisodGVzdCAiYWJjIiAocmVhZC1saW5lIChvcGVu LWlucHV0LXN0cmluZyAiYWJjIikpKQorKHRlc3QgImFiYyIgKHJlYWQtbGluZSAob3Blbi1pbnB1 dC1zdHJpbmcgImFiY1xuZGVmXG4iKSkpCisKKyh0ZXN0ICN0IChlb2Ytb2JqZWN0PyAocmVhZC1z dHJpbmcgMyAob3Blbi1pbnB1dC1zdHJpbmcgIiIpKSkpCisodGVzdCAiYWJjIiAocmVhZC1zdHJp bmcgMyAob3Blbi1pbnB1dC1zdHJpbmcgImFiY2QiKSkpCisodGVzdCAiYWJjIiAocmVhZC1zdHJp bmcgMyAob3Blbi1pbnB1dC1zdHJpbmcgImFiY1xuZGVmXG4iKSkpCisKKyhsZXQgKChpbiAob3Bl bi1pbnB1dC1zdHJpbmcgKHN0cmluZyAjXHgxMEY3MDAgI1x4MTBGNzAxICNceDEwRjcwMikpKSkK KyAgKGxldCogKChjMSAocmVhZC1jaGFyIGluKSkKKyAgICAgICAgIChjMiAocmVhZC1jaGFyIGlu KSkKKyAgICAgICAgIChjMyAocmVhZC1jaGFyIGluKSkpCisgICAgKHRlc3QgI1x4MTBGNzAwIGMx KQorICAgICh0ZXN0ICNceDEwRjcwMSBjMikKKyAgICAodGVzdCAjXHgxMEY3MDIgYzMpKSkKKwor KHRlc3QgKHN0cmluZyAjXHgxMEY3MDApCisgICAgKGxldCAoKG91dCAob3Blbi1vdXRwdXQtc3Ry aW5nKSkpCisgICAgICAod3JpdGUtY2hhciAjXHgxMEY3MDAgb3V0KQorICAgICAgKGdldC1vdXRw dXQtc3RyaW5nIG91dCkpKQorCisodGVzdCAiYWJjIgorICAgIChsZXQgKChvdXQgKG9wZW4tb3V0 cHV0LXN0cmluZykpKQorICAgICAgKHdyaXRlICdhYmMgb3V0KQorICAgICAgKGdldC1vdXRwdXQt c3RyaW5nIG91dCkpKQorCisodGVzdCAiYWJjIGRlZiIKKyAgICAobGV0ICgob3V0IChvcGVuLW91 dHB1dC1zdHJpbmcpKSkKKyAgICAgIChkaXNwbGF5ICJhYmMgZGVmIiBvdXQpCisgICAgICAoZ2V0 LW91dHB1dC1zdHJpbmcgb3V0KSkpCisKKyh0ZXN0ICJhYmMiCisgICAgKGxldCAoKG91dCAob3Bl bi1vdXRwdXQtc3RyaW5nKSkpCisgICAgICAoZGlzcGxheSAjXGEgb3V0KQorICAgICAgKGRpc3Bs YXkgImIiIG91dCkKKyAgICAgIChkaXNwbGF5ICNcYyBvdXQpCisgICAgICAoZ2V0LW91dHB1dC1z dHJpbmcgb3V0KSkpCisKKyh0ZXN0ICN0CisgICAgICAobGV0KiAoKG91dCAob3Blbi1vdXRwdXQt c3RyaW5nKSkKKyAgICAgICAgICAgICAociAoYmVnaW4gKG5ld2xpbmUgb3V0KSAoZ2V0LW91dHB1 dC1zdHJpbmcgb3V0KSkpKQorICAgICAgICAob3IgKGVxdWFsPyByICJcbiIpIChlcXVhbD8gciAi XHJcbiIpKSkpCisKKyh0ZXN0ICJhYmMgZGVmIgorICAgIChsZXQgKChvdXQgKG9wZW4tb3V0cHV0 LXN0cmluZykpKQorICAgICAgKHdyaXRlLXN0cmluZyAiYWJjIGRlZiIgb3V0KQorICAgICAgKGdl dC1vdXRwdXQtc3RyaW5nIG91dCkpKQorCisodGVzdCAiZGVmIgorICAgIChsZXQgKChvdXQgKG9w ZW4tb3V0cHV0LXN0cmluZykpKQorICAgICAgKHdyaXRlLXN0cmluZyAiYWJjIGRlZiIgb3V0IDQp CisgICAgICAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0KSkpCisKKyh0ZXN0ICJjIGQiCisgICAgKGxl dCAoKG91dCAob3Blbi1vdXRwdXQtc3RyaW5nKSkpCisgICAgICAod3JpdGUtc3RyaW5nICJhYmMg ZGVmIiBvdXQgMiA1KQorICAgICAgKGdldC1vdXRwdXQtc3RyaW5nIG91dCkpKQorCisodGVzdCAi IgorICAobGV0ICgob3V0IChvcGVuLW91dHB1dC1zdHJpbmcpKSkKKyAgICAoZmx1c2gtb3V0cHV0 LXBvcnQgb3V0KQorICAgIChnZXQtb3V0cHV0LXN0cmluZyBvdXQpKSkKKworKHRlc3QgI3QgKGVv Zi1vYmplY3Q/IChyZWFkLXU4IChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgI3U4KCkpKSkpCisodGVz dCAxIChyZWFkLXU4IChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgI3U4KDEgMiAzKSkpKQorCisodGVz dCAjdCAoZW9mLW9iamVjdD8gKHJlYWQtYnl0ZXZlY3RvciAzIChvcGVuLWlucHV0LWJ5dGV2ZWN0 b3IgI3U4KCkpKSkpCisodGVzdCAjdCAodTgtcmVhZHk/IChvcGVuLWlucHV0LWJ5dGV2ZWN0b3Ig I3U4KDEpKSkpCisodGVzdCAjdTgoMSkgKHJlYWQtYnl0ZXZlY3RvciAzIChvcGVuLWlucHV0LWJ5 dGV2ZWN0b3IgI3U4KDEpKSkpCisodGVzdCAjdTgoMSAyKSAocmVhZC1ieXRldmVjdG9yIDMgKG9w ZW4taW5wdXQtYnl0ZXZlY3RvciAjdTgoMSAyKSkpKQorKHRlc3QgI3U4KDEgMiAzKSAocmVhZC1i eXRldmVjdG9yIDMgKG9wZW4taW5wdXQtYnl0ZXZlY3RvciAjdTgoMSAyIDMpKSkpCisodGVzdCAj dTgoMSAyIDMpIChyZWFkLWJ5dGV2ZWN0b3IgMyAob3Blbi1pbnB1dC1ieXRldmVjdG9yICN1OCgx IDIgMyA0KSkpKQorCisodGVzdCAjdAorICAgIChsZXQgKChidiAoYnl0ZXZlY3RvciAxIDIgMyA0 IDUpKSkKKyAgICAgIChlb2Ytb2JqZWN0PyAocmVhZC1ieXRldmVjdG9yISBidiAob3Blbi1pbnB1 dC1ieXRldmVjdG9yICN1OCgpKSkpKSkKKworKHRlc3QgI3U4KDYgNyA4IDkgMTApCisgIChsZXQg KChidiAoYnl0ZXZlY3RvciAxIDIgMyA0IDUpKSkKKyAgICAocmVhZC1ieXRldmVjdG9yISBidiAo b3Blbi1pbnB1dC1ieXRldmVjdG9yICN1OCg2IDcgOCA5IDEwKSkgMCA1KQorICAgIGJ2KSkKKwor KHRlc3QgI3U4KDYgNyA4IDQgNSkKKyAgKGxldCAoKGJ2IChieXRldmVjdG9yIDEgMiAzIDQgNSkp KQorICAgIChyZWFkLWJ5dGV2ZWN0b3IhIGJ2IChvcGVuLWlucHV0LWJ5dGV2ZWN0b3IgI3U4KDYg NyA4IDkgMTApKSAwIDMpCisgICAgYnYpKQorCisodGVzdCAjdTgoMSAyIDMgNiA1KQorICAobGV0 ICgoYnYgKGJ5dGV2ZWN0b3IgMSAyIDMgNCA1KSkpCisgICAgKHJlYWQtYnl0ZXZlY3RvciEgYnYg KG9wZW4taW5wdXQtYnl0ZXZlY3RvciAjdTgoNiA3IDggOSAxMCkpIDMgNCkKKyAgICBidikpCisK Kyh0ZXN0ICN1OCgxIDIgMykKKyAgKGxldCAoKG91dCAob3Blbi1vdXRwdXQtYnl0ZXZlY3Rvcikp KQorICAgICh3cml0ZS11OCAxIG91dCkKKyAgICAod3JpdGUtdTggMiBvdXQpCisgICAgKHdyaXRl LXU4IDMgb3V0KQorICAgIChnZXQtb3V0cHV0LWJ5dGV2ZWN0b3Igb3V0KSkpCisKKyh0ZXN0ICN1 OCgxIDIgMyA0IDUpCisgIChsZXQgKChvdXQgKG9wZW4tb3V0cHV0LWJ5dGV2ZWN0b3IpKSkKKyAg ICAod3JpdGUtYnl0ZXZlY3RvciAjdTgoMSAyIDMgNCA1KSBvdXQpCisgICAgKGdldC1vdXRwdXQt Ynl0ZXZlY3RvciBvdXQpKSkKKworKHRlc3QgI3U4KDMgNCA1KQorICAobGV0ICgob3V0IChvcGVu LW91dHB1dC1ieXRldmVjdG9yKSkpCisgICAgKHdyaXRlLWJ5dGV2ZWN0b3IgI3U4KDEgMiAzIDQg NSkgb3V0IDIpCisgICAgKGdldC1vdXRwdXQtYnl0ZXZlY3RvciBvdXQpKSkKKworKHRlc3QgI3U4 KDMgNCkKKyAgKGxldCAoKG91dCAob3Blbi1vdXRwdXQtYnl0ZXZlY3RvcikpKQorICAgICh3cml0 ZS1ieXRldmVjdG9yICN1OCgxIDIgMyA0IDUpIG91dCAyIDQpCisgICAgKGdldC1vdXRwdXQtYnl0 ZXZlY3RvciBvdXQpKSkKKworKHRlc3QgI3U4KCkKKyAgKGxldCAoKG91dCAob3Blbi1vdXRwdXQt Ynl0ZXZlY3RvcikpKQorICAgIChmbHVzaC1vdXRwdXQtcG9ydCBvdXQpCisgICAgKGdldC1vdXRw dXQtYnl0ZXZlY3RvciBvdXQpKSkKKworKHRlc3QgI3QKKyAgICAoYW5kIChtZW1iZXIKKyAgICAg ICAgICAobGV0ICgob3V0IChvcGVuLW91dHB1dC1zdHJpbmcpKQorICAgICAgICAgICAgICAgICh4 IChsaXN0IDEpKSkKKyAgICAgICAgICAgIChzZXQtY2RyISB4IHgpCisgICAgICAgICAgICAod3Jp dGUgeCBvdXQpCisgICAgICAgICAgICAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0KSkKKyAgICAgICAg ICA7OyBsYWJlbHMgbm90IGd1YXJhbnRlZWQgdG8gYmUgMCBpbmRleGVkLCBzcGFjaW5nIG1heSBk aWZmZXIKKyAgICAgICAgICAnKCIjMD0oMSAuICMwIykiICIjMT0oMSAuICMxIykiKSkKKyAgICAg ICAgICN0KSkKKworKHRlc3QgIigoMSAyIDMpICgxIDIgMykpIgorICAgIChsZXQgKChvdXQgKG9w ZW4tb3V0cHV0LXN0cmluZykpCisgICAgICAgICAgKHggKGxpc3QgMSAyIDMpKSkKKyAgICAgICh3 cml0ZSAobGlzdCB4IHgpIG91dCkKKyAgICAgIChnZXQtb3V0cHV0LXN0cmluZyBvdXQpKSkKKwor KHRlc3QgIigoMSAyIDMpICgxIDIgMykpIgorICAgIChsZXQgKChvdXQgKG9wZW4tb3V0cHV0LXN0 cmluZykpCisgICAgICAgICAgKHggKGxpc3QgMSAyIDMpKSkKKyAgICAgICh3cml0ZS1zaW1wbGUg KGxpc3QgeCB4KSBvdXQpCisgICAgICAoZ2V0LW91dHB1dC1zdHJpbmcgb3V0KSkpCisKKyh0ZXN0 ICN0CisgICAgKGFuZCAobWVtYmVyIChsZXQgKChvdXQgKG9wZW4tb3V0cHV0LXN0cmluZykpCisg ICAgICAgICAgICAgICAgICAgICAgICh4IChsaXN0IDEgMiAzKSkpCisgICAgICAgICAgICAgICAg ICAgKHdyaXRlLXNoYXJlZCAobGlzdCB4IHgpIG91dCkKKyAgICAgICAgICAgICAgICAgICAoZ2V0 LW91dHB1dC1zdHJpbmcgb3V0KSkKKyAgICAgICAgICAgICAgICAgJygiKCMwPSgxIDIgMykgIzAj KSIgIigjMT0oMSAyIDMpICMxIykiKSkKKyAgICAgICAgICN0KSkKKworKHRlc3QtYmVnaW4gIlJl YWQgc3ludGF4IikKKworOzsgY2hlY2sgcmVhZGluZyBib29sZWFuIGZvbGxvd2VkIGJ5IGVvZgor KHRlc3QgI3QgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjdCIpKSkKKyh0ZXN0ICN0IChyZWFk IChvcGVuLWlucHV0LXN0cmluZyAiI3RydWUiKSkpCisodGVzdCAjZiAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIiNmIikpKQorKHRlc3QgI2YgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjZmFs c2UiKSkpCisoZGVmaW5lIChyZWFkMiBwb3J0KQorICAobGV0KiAoKG8xIChyZWFkIHBvcnQpKSAo bzIgKHJlYWQgcG9ydCkpKQorICAgIChjb25zIG8xIG8yKSkpCis7OyBjaGVjayByZWFkaW5nIGJv b2xlYW4gZm9sbG93ZWQgYnkgZGVsaW1pdGVyCisodGVzdCAnKCN0IC4gKDUpKSAocmVhZDIgKG9w ZW4taW5wdXQtc3RyaW5nICIjdCg1KSIpKSkKKyh0ZXN0ICcoI3QgLiA2KSAocmVhZDIgKG9wZW4t aW5wdXQtc3RyaW5nICIjdHJ1ZSA2ICIpKSkKKyh0ZXN0ICcoI2YgLiA3KSAocmVhZDIgKG9wZW4t aW5wdXQtc3RyaW5nICIjZiA3IikpKQorKHRlc3QgJygjZiAuICI4IikgKHJlYWQyIChvcGVuLWlu cHV0LXN0cmluZyAiI2ZhbHNlXCI4XCIiKSkpCisKKyh0ZXN0ICcoKSAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIigpIikpKQorKHRlc3QgJygxIDIpIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAi KDEgMikiKSkpCisodGVzdCAnKDEgLiAyKSAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIigxIC4g MikiKSkpCisodGVzdCAnKDEgMikgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIoMSAuICgyKSki KSkpCisodGVzdCAnKDEgMiAzIDQgNSkgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIoMSAuICgy IDMgNCAuICg1KSkpIikpKQorKHRlc3QgJzEgKGNhZHIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5n ICIjMD0oMSAuICMwIykiKSkpKQorKHRlc3QgJygxIDIgMykgKGNhZHIgKHJlYWQgKG9wZW4taW5w dXQtc3RyaW5nICIoIzA9KDEgMiAzKSAjMCMpIikpKSkKKworKHRlc3QgJyhxdW90ZSAoMSAyKSkg KHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICInKDEgMikiKSkpCisodGVzdCAnKHF1b3RlICgxICh1 bnF1b3RlIDIpKSkgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICInKDEgLDIpIikpKQorKHRlc3Qg JyhxdW90ZSAoMSAodW5xdW90ZS1zcGxpY2luZyAyKSkpIChyZWFkIChvcGVuLWlucHV0LXN0cmlu ZyAiJygxICxAMikiKSkpCisodGVzdCAnKHF1YXNpcXVvdGUgKDEgKHVucXVvdGUgMikpKSAocmVh ZCAob3Blbi1pbnB1dC1zdHJpbmcgImAoMSAsMikiKSkpCisKKyh0ZXN0ICMoKSAocmVhZCAob3Bl bi1pbnB1dC1zdHJpbmcgIiMoKSIpKSkKKyh0ZXN0ICMoYSBiKSAocmVhZCAob3Blbi1pbnB1dC1z dHJpbmcgIiMoYSBiKSIpKSkKKworKHRlc3QgI3U4KCkgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5n ICIjdTgoKSIpKSkKKyh0ZXN0ICN1OCgwIDEpIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiI3U4 KDAgMSkiKSkpCisKKyh0ZXN0ICdhYmMgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJhYmMiKSkp CisodGVzdCAnYWJjIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiYWJjIGRlZiIpKSkKKyh0ZXN0 ICdBQkMgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJBQkMiKSkpCisodGVzdCAnSGVsbG8gKHJl YWQgKG9wZW4taW5wdXQtc3RyaW5nICJ8SFxceDY1O2xsb3wiKSkpCisKKyh0ZXN0ICdhYmMgKHJl YWQgKG9wZW4taW5wdXQtc3RyaW5nICIjIWZvbGQtY2FzZSBBQkMiKSkpCisodGVzdCAnQUJDIChy ZWFkIChvcGVuLWlucHV0LXN0cmluZyAiIyFmb2xkLWNhc2UgIyFuby1mb2xkLWNhc2UgQUJDIikp KQorCisodGVzdCAnZGVmIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiIzsgYWJjIGRlZiIpKSkK Kyh0ZXN0ICdkZWYgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICI7IGFiYyBcbmRlZiIpKSkKKyh0 ZXN0ICdkZWYgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjfCBhYmMgfCMgZGVmIikpKQorKHRl c3QgJ2doaSAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIiN8IGFiYyAjfCBkZWYgfCMgfCMgZ2hp IikpKQorKHRlc3QgJ2doaSAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIiM7IDsgYWJjXG4gZGVm IGdoaSIpKSkKKyh0ZXN0ICcoYWJzIC0xNikgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIoIztz cXJ0IGFicyAtMTYpIikpKQorKHRlc3QgJyhhIGQpIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAi KGEgIzsgIztiIGMgZCkiKSkpCisodGVzdCAnKGEgZSkgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5n ICIoYSAjOyhiICM7YyBkKSBlKSIpKSkKKyh0ZXN0ICcoYSAuIGMpIChyZWFkIChvcGVuLWlucHV0 LXN0cmluZyAiKGEgLiAjO2IgYykiKSkpCisodGVzdCAnKGEgLiBiKSAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIihhIC4gYiAjO2MpIikpKQorCisoZGVmaW5lICh0ZXN0LXJlYWQtZXJyb3Igc3Ry KQorICAodGVzdC1hc3NlcnQgc3RyCisgICAgICAoZ3VhcmQgKGV4biAoZWxzZSAjdCkpCisgICAg ICAgIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyBzdHIpKQorICAgICAgICAjZikpKQorCisodGVz dC1yZWFkLWVycm9yICIoIzthIC4gYikiKQorKHRlc3QtcmVhZC1lcnJvciAiKGEgLiAjO2IpIikK Kyh0ZXN0LXJlYWQtZXJyb3IgIihhICM7LiBiKSIpCisodGVzdC1yZWFkLWVycm9yICIoIzt4ICM7 eSAuIHopIikKKyh0ZXN0LXJlYWQtZXJyb3IgIigjOyAjO3ggIzt5IC4geikiKQorKHRlc3QtcmVh ZC1lcnJvciAiKCM7ICM7eCAuIHopIikKKworKHRlc3QgI1xhIChyZWFkIChvcGVuLWlucHV0LXN0 cmluZyAiI1xcYSIpKSkKKyh0ZXN0ICNcc3BhY2UgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIj XFxzcGFjZSIpKSkKKyh0ZXN0IDAgKGNoYXItPmludGVnZXIgKHJlYWQgKG9wZW4taW5wdXQtc3Ry aW5nICIjXFxudWxsIikpKSkKKyh0ZXN0IDcgKGNoYXItPmludGVnZXIgKHJlYWQgKG9wZW4taW5w dXQtc3RyaW5nICIjXFxhbGFybSIpKSkpCisodGVzdCA4IChjaGFyLT5pbnRlZ2VyIChyZWFkIChv cGVuLWlucHV0LXN0cmluZyAiI1xcYmFja3NwYWNlIikpKSkKKyh0ZXN0IDkgKGNoYXItPmludGVn ZXIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjXFx0YWIiKSkpKQorKHRlc3QgMTAgKGNoYXIt PmludGVnZXIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjXFxuZXdsaW5lIikpKSkKKyh0ZXN0 IDEzIChjaGFyLT5pbnRlZ2VyIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiI1xccmV0dXJuIikp KSkKKyh0ZXN0ICN4N0YgKGNoYXItPmludGVnZXIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIj XFxkZWxldGUiKSkpKQorKHRlc3QgI3gxQiAoY2hhci0+aW50ZWdlciAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIiNcXGVzY2FwZSIpKSkpCisodGVzdCAjeDAzQkIgKGNoYXItPmludGVnZXIgKHJl YWQgKG9wZW4taW5wdXQtc3RyaW5nICIjXFzOuyIpKSkpCisodGVzdCAjeDAzQkIgKGNoYXItPmlu dGVnZXIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICIjXFx4MDNCQiIpKSkpCisKKyh0ZXN0ICJh YmMiIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiXCJhYmNcIiIpKSkKKyh0ZXN0ICJhYmMiIChy ZWFkIChvcGVuLWlucHV0LXN0cmluZyAiXCJhYmNcIiBcImRlZlwiIikpKQorKHRlc3QgIkFCQyIg KHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJcIkFCQ1wiIikpKQorKHRlc3QgIkhlbGxvIiAocmVh ZCAob3Blbi1pbnB1dC1zdHJpbmcgIlwiSFxceDY1O2xsb1wiIikpKQorKHRlc3QgNyAoY2hhci0+ aW50ZWdlciAoc3RyaW5nLXJlZiAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIlwiXFxhXCIiKSkg MCkpKQorKHRlc3QgOCAoY2hhci0+aW50ZWdlciAoc3RyaW5nLXJlZiAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIlwiXFxiXCIiKSkgMCkpKQorKHRlc3QgOSAoY2hhci0+aW50ZWdlciAoc3RyaW5n LXJlZiAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIlwiXFx0XCIiKSkgMCkpKQorKHRlc3QgMTAg KGNoYXItPmludGVnZXIgKHN0cmluZy1yZWYgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJcIlxc blwiIikpIDApKSkKKyh0ZXN0IDEzIChjaGFyLT5pbnRlZ2VyIChzdHJpbmctcmVmIChyZWFkIChv cGVuLWlucHV0LXN0cmluZyAiXCJcXHJcIiIpKSAwKSkpCisodGVzdCAjeDIyIChjaGFyLT5pbnRl Z2VyIChzdHJpbmctcmVmIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiXCJcXFwiXCIiKSkgMCkp KQorKHRlc3QgI3g3QyAoY2hhci0+aW50ZWdlciAoc3RyaW5nLXJlZiAocmVhZCAob3Blbi1pbnB1 dC1zdHJpbmcgIlwiXFx8XCIiKSkgMCkpKQorKHRlc3QgImxpbmUgMVxubGluZSAyXG4iIChyZWFk IChvcGVuLWlucHV0LXN0cmluZyAiXCJsaW5lIDFcbmxpbmUgMlxuXCIiKSkpCisodGVzdCAibGlu ZSAxY29udGludWVkXG4iIChyZWFkIChvcGVuLWlucHV0LXN0cmluZyAiXCJsaW5lIDFcXFxuY29u dGludWVkXG5cIiIpKSkKKyh0ZXN0ICJsaW5lIDFjb250aW51ZWRcbiIgKHJlYWQgKG9wZW4taW5w dXQtc3RyaW5nICJcImxpbmUgMVxcIFxuY29udGludWVkXG5cIiIpKSkKKyh0ZXN0ICJsaW5lIDFj b250aW51ZWRcbiIgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJcImxpbmUgMVxcXG4gY29udGlu dWVkXG5cIiIpKSkKKyh0ZXN0ICJsaW5lIDFjb250aW51ZWRcbiIgKHJlYWQgKG9wZW4taW5wdXQt c3RyaW5nICJcImxpbmUgMVxcIFx0IFxuIFx0IGNvbnRpbnVlZFxuXCIiKSkpCisodGVzdCAibGlu ZSAxXG5cbmxpbmUgM1xuIiAocmVhZCAob3Blbi1pbnB1dC1zdHJpbmcgIlwibGluZSAxXFwgXHQg XG4gXHQgXG5cbmxpbmUgM1xuXCIiKSkpCisodGVzdCAjeDAzQkIgKGNoYXItPmludGVnZXIgKHN0 cmluZy1yZWYgKHJlYWQgKG9wZW4taW5wdXQtc3RyaW5nICJcIlxceDAzQkI7XCIiKSkgMCkpKQor CisoZGVmaW5lLXN5bnRheCB0ZXN0LXdyaXRlLXN5bnRheAorICAoc3ludGF4LXJ1bGVzICgpCisg ICAgKCh0ZXN0LXdyaXRlLXN5bnRheCBleHBlY3Qtc3RyIG9iai1leHByKQorICAgICAobGV0ICgo b3V0IChvcGVuLW91dHB1dC1zdHJpbmcpKSkKKyAgICAgICAod3JpdGUgb2JqLWV4cHIgb3V0KQor ICAgICAgICh0ZXN0IGV4cGVjdC1zdHIgKGdldC1vdXRwdXQtc3RyaW5nIG91dCkpKSkpKQorCiso dGVzdC13cml0ZS1zeW50YXggInwufCIgJ3wufCkKKyh0ZXN0LXdyaXRlLXN5bnRheCAifGEgYnwi ICd8YSBifCkKKyh0ZXN0LXdyaXRlLXN5bnRheCAifCxhfCIgJ3wsYXwpCis7OyAodGVzdC13cml0 ZS1zeW50YXggInxcInwiICd8XCJ8KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJhIiAnfGF8KQorOzsg KHRlc3Qtd3JpdGUtc3ludGF4ICJhLmIiICd8YS5ifCkKKyh0ZXN0LXdyaXRlLXN5bnRheCAifDJ8 IiAnfDJ8KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJ8KzN8IiAnfCszfCkKKyh0ZXN0LXdyaXRlLXN5 bnRheCAifC0uNHwiICd8LS40fCkKKyh0ZXN0LXdyaXRlLXN5bnRheCAifCtpfCIgJ3wraXwpCiso dGVzdC13cml0ZS1zeW50YXggInwtaXwiICd8LWl8KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJ8K2lu Zi4wfCIgJ3wraW5mLjB8KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJ8LWluZi4wfCIgJ3wtaW5mLjB8 KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJ8K25hbi4wfCIgJ3wrbmFuLjB8KQorKHRlc3Qtd3JpdGUt c3ludGF4ICJ8K05hTi4wfCIgJ3wrTmFOLjB8KQorKHRlc3Qtd3JpdGUtc3ludGF4ICJ8K05hTi4w YWJjfCIgJ3wrTmFOLjBhYmN8KQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWJlZ2luICJOdW1lcmlj IHN5bnRheCIpCisKKzs7IE51bWVyaWMgc3ludGF4IGFkYXB0ZWQgZnJvbSBQZXRlciBCZXgncyB0 ZXN0cy4KKzs7Cis7OyBUaGVzZSBhcmUgdXBkYXRlZCB0byBSN1JTLCB1c2luZyBzdHJpbmcgcG9y dHMgaW5zdGVhZCBvZgorOzsgc3RyaW5nLT5udW1iZXIsIGFuZCAiZXJyb3IiIHRlc3RzIHJlbW92 ZWQgYmVjYXVzZSBpbXBsZW1lbnRhdGlvbnMKKzs7IGFyZSBmcmVlIHRvIHByb3ZpZGUgdGhlaXIg b3duIG51bWVyaWMgZXh0ZW5zaW9ucy4gIEN1cnJlbnRseSBhbGwKKzs7IHRlc3RzIGFyZSBydW4g YnkgZGVmYXVsdCAtIG5lZWQgdG8gY29uZC1leHBhbmQgYW5kIHRlc3QgZm9yCis7OyBpbmZpbml0 aWVzIGFuZCAtMC4wLgorCisoZGVmaW5lLXN5bnRheCB0ZXN0LW51bWVyaWMtc3ludGF4CisgIChz eW50YXgtcnVsZXMgKCkKKyAgICAoKHRlc3QtbnVtZXJpYy1zeW50YXggc3RyIGV4cGVjdCBzdHJz IC4uLikKKyAgICAgKGxldCogKCh6IChyZWFkIChvcGVuLWlucHV0LXN0cmluZyBzdHIpKSkKKyAg ICAgICAgICAgIChvdXQgKG9wZW4tb3V0cHV0LXN0cmluZykpCisgICAgICAgICAgICAoei1zdHIg KGJlZ2luICh3cml0ZSB6IG91dCkgKGdldC1vdXRwdXQtc3RyaW5nIG91dCkpKSkKKyAgICAgICAo dGVzdCBleHBlY3QgKHZhbHVlcyB6KSkKKyAgICAgICAodGVzdCAjdCAoYW5kIChtZW1iZXIgei1z dHIgJyhzdHIgc3RycyAuLi4pKSAjdCkpKSkpKQorCis7OyBFYWNoIHRlc3QgaXMgb2YgdGhlIGZv cm06Cis7OworOzsgICAodGVzdC1udW1lcmljLXN5bnRheCBpbnB1dC1zdHIgZXhwZWN0ZWQtdmFs dWUgZXhwZWN0ZWQtd3JpdGUtdmFsdWVzIC4uLikKKzs7Cis7OyB3aGVyZSB0aGUgaW5wdXQgc2hv dWxkIGJlIGVxdj8gdG8gdGhlIGV4cGVjdGVkLXZhbHVlLCBhbmQgdGhlCis7OyB3cml0dGVuIG91 dHB1dCB0aGUgc2FtZSBhcyBhbnkgb2YgdGhlIGV4cGVjdGVkLXdyaXRlLXZhbHVlcy4gIFRoZQor OzsgZm9ybQorOzsKKzs7ICAgKHRlc3QtbnVtZXJpYy1zeW50YXggaW5wdXQtc3RyIGV4cGVjdGVk LXZhbHVlKQorOzsKKzs7IGlzIGEgc2hvcnRoYW5kIGZvcgorOzsKKzs7ICAgKHRlc3QtbnVtZXJp Yy1zeW50YXggaW5wdXQtc3RyIGV4cGVjdGVkLXZhbHVlIChpbnB1dC1zdHIpKQorCis7OyBTaW1w bGUKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxIiAxKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIisx IiAxICIxIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICItMSIgLTEpCisodGVzdC1udW1lcmljLXN5 bnRheCAiI2kxIiAxLjAgIjEuMCIgIjEuIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjSTEiIDEu MCAiMS4wIiAiMS4iKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNpLTEiIC0xLjAgIi0xLjAiICIt MS4iKQorOzsgRGVjaW1hbAorKHRlc3QtbnVtZXJpYy1zeW50YXggIjEuMCIgMS4wICIxLjAiICIx LiIpCisodGVzdC1udW1lcmljLXN5bnRheCAiMS4iIDEuMCAiMS4wIiAiMS4iKQorKHRlc3QtbnVt ZXJpYy1zeW50YXggIi4xIiAwLjEgIjAuMSIgIjEwMC4wZS0zIikKKyh0ZXN0LW51bWVyaWMtc3lu dGF4ICItLjEiIC0wLjEgIi0wLjEiICItMTAwLjBlLTMiKQorOzsgU29tZSBTY2hlbWVzIGRvbid0 IGFsbG93IG5lZ2F0aXZlIHplcm8uIFRoaXMgaXMgb2theSB3aXRoIHRoZSBzdGFuZGFyZAorKHRl c3QtbnVtZXJpYy1zeW50YXggIi0uMCIgLTAuMCAiLTAuIiAiLTAuMCIgIjAuMCIgIjAuIiAiLjAi KQorKHRlc3QtbnVtZXJpYy1zeW50YXggIi0wLiIgLTAuMCAiLS4wIiAiLTAuMCIgIjAuMCIgIjAu IiAiLjAiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNpMS4wIiAxLjAgIjEuMCIgIjEuIikKKyh0 ZXN0LW51bWVyaWMtc3ludGF4ICIjZTEuMCIgMSAiMSIpCisodGVzdC1udW1lcmljLXN5bnRheCAi I2UtLjAiIDAgIjAiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNlLTAuIiAwICIwIikKKzs7IERl Y2ltYWwgbm90YXRpb24gd2l0aCBzdWZmaXgKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxZTIiIDEw MC4wICIxMDAuMCIgIjEwMC4iKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjFFMiIgMTAwLjAgIjEw MC4wIiAiMTAwLiIpCisodGVzdC1udW1lcmljLXN5bnRheCAiMXMyIiAxMDAuMCAiMTAwLjAiICIx MDAuIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxUzIiIDEwMC4wICIxMDAuMCIgIjEwMC4iKQor KHRlc3QtbnVtZXJpYy1zeW50YXggIjFmMiIgMTAwLjAgIjEwMC4wIiAiMTAwLiIpCisodGVzdC1u dW1lcmljLXN5bnRheCAiMUYyIiAxMDAuMCAiMTAwLjAiICIxMDAuIikKKyh0ZXN0LW51bWVyaWMt c3ludGF4ICIxZDIiIDEwMC4wICIxMDAuMCIgIjEwMC4iKQorKHRlc3QtbnVtZXJpYy1zeW50YXgg IjFEMiIgMTAwLjAgIjEwMC4wIiAiMTAwLiIpCisodGVzdC1udW1lcmljLXN5bnRheCAiMWwyIiAx MDAuMCAiMTAwLjAiICIxMDAuIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxTDIiIDEwMC4wICIx MDAuMCIgIjEwMC4iKQorOzsgTmFOLCBJbmYKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIrbmFuLjAi ICtuYW4uMCAiK25hbi4wIiAiK05hTi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIrTkFOLjAi ICtuYW4uMCAiK25hbi4wIiAiK05hTi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIraW5mLjAi ICtpbmYuMCAiK2luZi4wIiAiK0luZi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIrSW5GLjAi ICtpbmYuMCAiK2luZi4wIiAiK0luZi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICItaW5mLjAi IC1pbmYuMCAiLWluZi4wIiAiLUluZi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICItaU5GLjAi IC1pbmYuMCAiLWluZi4wIiAiLUluZi4wIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjaStuYW4u MCIgK25hbi4wICIrbmFuLjAiICIrTmFOLjAiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNpK2lu Zi4wIiAraW5mLjAgIitpbmYuMCIgIitJbmYuMCIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI2kt aW5mLjAiIC1pbmYuMCAiLWluZi4wIiAiLUluZi4wIikKKzs7IEV4YWN0IHJhdGlvcworKHRlc3Qt bnVtZXJpYy1zeW50YXggIjEvMiIgKC8gMSAyKSkKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjZTEv MiIgKC8gMSAyKSAiMS8yIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxMC8yIiA1ICI1IikKKyh0 ZXN0LW51bWVyaWMtc3ludGF4ICItMS8yIiAoLSAoLyAxIDIpKSkKKyh0ZXN0LW51bWVyaWMtc3lu dGF4ICIwLzEwIiAwICIwIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjZTAvMTAiIDAgIjAiKQor KHRlc3QtbnVtZXJpYy1zeW50YXggIiNpMy8yIiAoLyAzLjAgMi4wKSAiMS41IikKKzs7IEV4YWN0 IGNvbXBsZXgKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxKzJpIiAobWFrZS1yZWN0YW5ndWxhciAx IDIpKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjErMkkiIChtYWtlLXJlY3Rhbmd1bGFyIDEgMikg IjErMmkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjEtMmkiIChtYWtlLXJlY3Rhbmd1bGFyIDEg LTIpKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIi0xKzJpIiAobWFrZS1yZWN0YW5ndWxhciAtMSAy KSkKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICItMS0yaSIgKG1ha2UtcmVjdGFuZ3VsYXIgLTEgLTIp KQorKHRlc3QtbnVtZXJpYy1zeW50YXggIitpIiAobWFrZS1yZWN0YW5ndWxhciAwIDEpICIraSIg IisxaSIgIjAraSIgIjArMWkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjAraSIgKG1ha2UtcmVj dGFuZ3VsYXIgMCAxKSAiK2kiICIrMWkiICIwK2kiICIwKzFpIikKKyh0ZXN0LW51bWVyaWMtc3lu dGF4ICIwKzFpIiAobWFrZS1yZWN0YW5ndWxhciAwIDEpICIraSIgIisxaSIgIjAraSIgIjArMWki KQorKHRlc3QtbnVtZXJpYy1zeW50YXggIi1pIiAobWFrZS1yZWN0YW5ndWxhciAwIC0xKSAiLWki ICItMWkiICIwLWkiICIwLTFpIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIwLWkiIChtYWtlLXJl Y3Rhbmd1bGFyIDAgLTEpICItaSIgIi0xaSIgIjAtaSIgIjAtMWkiKQorKHRlc3QtbnVtZXJpYy1z eW50YXggIjAtMWkiIChtYWtlLXJlY3Rhbmd1bGFyIDAgLTEpICItaSIgIi0xaSIgIjAtaSIgIjAt MWkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIisyaSIgKG1ha2UtcmVjdGFuZ3VsYXIgMCAyKSAi MmkiICIrMmkiICIwKzJpIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICItMmkiIChtYWtlLXJlY3Rh bmd1bGFyIDAgLTIpICItMmkiICIwLTJpIikKKzs7IERlY2ltYWwtbm90YXRpb24gY29tcGxleCBu dW1iZXJzIChyZWN0YW5ndWxhciBub3RhdGlvbikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIxLjAr MmkiIChtYWtlLXJlY3Rhbmd1bGFyIDEuMCAyKSAiMS4wKzIuMGkiICIxLjArMmkiICIxLisyaSIg IjEuKzIuaSIpCisodGVzdC1udW1lcmljLXN5bnRheCAiMSsyLjBpIiAobWFrZS1yZWN0YW5ndWxh ciAxIDIuMCkgIjEuMCsyLjBpIiAiMSsyLjBpIiAiMS4rMi5pIiAiMSsyLmkiKQorKHRlc3QtbnVt ZXJpYy1zeW50YXggIjFlMisxLjBpIiAobWFrZS1yZWN0YW5ndWxhciAxMDAuMCAxLjApICIxMDAu MCsxLjBpIiAiMTAwLisxLmkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjFzMisxLjBpIiAobWFr ZS1yZWN0YW5ndWxhciAxMDAuMCAxLjApICIxMDAuMCsxLjBpIiAiMTAwLisxLmkiKQorKHRlc3Qt bnVtZXJpYy1zeW50YXggIjEuMCsxZTJpIiAobWFrZS1yZWN0YW5ndWxhciAxLjAgMTAwLjApICIx LjArMTAwLjBpIiAiMS4rMTAwLmkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIjEuMCsxczJpIiAo bWFrZS1yZWN0YW5ndWxhciAxLjAgMTAwLjApICIxLjArMTAwLjBpIiAiMS4rMTAwLmkiKQorOzsg RnJhY3Rpb25hbCBjb21wbGV4IG51bWJlcnMgKHJlY3Rhbmd1bGFyIG5vdGF0aW9uKQorKHRlc3Qt bnVtZXJpYy1zeW50YXggIjEvMiszLzRpIiAobWFrZS1yZWN0YW5ndWxhciAoLyAxIDIpICgvIDMg NCkpKQorOzsgTWl4ZWQgZnJhY3Rpb25hbC9kZWNpbWFsIG5vdGF0aW9uIGNvbXBsZXggbnVtYmVy cyAocmVjdGFuZ3VsYXIgbm90YXRpb24pCisodGVzdC1udW1lcmljLXN5bnRheCAiMC41KzMvNGki IChtYWtlLXJlY3Rhbmd1bGFyIDAuNSAoLyAzIDQpKQorICAiMC41KzAuNzVpIiAiLjUrLjc1aSIg IjAuNSszLzRpIiAiLjUrMy80aSIgIjUwMC4wZS0zKzc1MC4wZS0zaSIpCis7OyBDb21wbGV4IE5h TiwgSW5mIChyZWN0YW5ndWxhciBub3RhdGlvbikKKzs7KHRlc3QtbnVtZXJpYy1zeW50YXggIitu YW4uMCtuYW4uMGkiIChtYWtlLXJlY3Rhbmd1bGFyIHRoZS1uYW4gdGhlLW5hbikgIitOYU4uMCtO YU4uMGkiKSAKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIraW5mLjAraW5mLjBpIiAobWFrZS1yZWN0 YW5ndWxhciAraW5mLjAgK2luZi4wKSAiK0luZi4wK0luZi4waSIpCisodGVzdC1udW1lcmljLXN5 bnRheCAiLWluZi4wK2luZi4waSIgKG1ha2UtcmVjdGFuZ3VsYXIgLWluZi4wICtpbmYuMCkgIi1J bmYuMCtJbmYuMGkiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIi1pbmYuMC1pbmYuMGkiIChtYWtl LXJlY3Rhbmd1bGFyIC1pbmYuMCAtaW5mLjApICItSW5mLjAtSW5mLjBpIikKKyh0ZXN0LW51bWVy aWMtc3ludGF4ICIraW5mLjAtaW5mLjBpIiAobWFrZS1yZWN0YW5ndWxhciAraW5mLjAgLWluZi4w KSAiK0luZi4wLUluZi4waSIpCis7OyBDb21wbGV4IG51bWJlcnMgKHBvbGFyIG5vdGF0aW9uKQor OzsgTmVlZCB0byBhY2NvdW50IGZvciBpbXByZWNpc2lvbiBpbiB3cml0ZSBvdXRwdXQuCis7Oyh0 ZXN0LW51bWVyaWMtc3ludGF4ICIxQDIiIC0wLjQxNjE0NjgzNjU0NzE0MiswLjkwOTI5NzQyNjgy NTY4MmkgIi0wLjQxNjE0NjgzNjU0NzE0MiswLjkwOTI5NzQyNjgyNTY4MmkiKQorOzsgQmFzZSBw cmVmaXhlcworKHRlc3QtbnVtZXJpYy1zeW50YXggIiN4MTEiIDE3ICIxNyIpCisodGVzdC1udW1l cmljLXN5bnRheCAiI1gxMSIgMTcgIjE3IikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjZDExIiAx MSAiMTEiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNEMTEiIDExICIxMSIpCisodGVzdC1udW1l cmljLXN5bnRheCAiI28xMSIgOSAiOSIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI08xMSIgOSAi OSIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI2IxMSIgMyAiMyIpCisodGVzdC1udW1lcmljLXN5 bnRheCAiI0IxMSIgMyAiMyIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI283IiA3ICI3IikKKyh0 ZXN0LW51bWVyaWMtc3ludGF4ICIjeGEiIDEwICIxMCIpCisodGVzdC1udW1lcmljLXN5bnRheCAi I3hBIiAxMCAiMTAiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiN4ZiIgMTUgIjE1IikKKyh0ZXN0 LW51bWVyaWMtc3ludGF4ICIjeC0xMCIgLTE2ICItMTYiKQorKHRlc3QtbnVtZXJpYy1zeW50YXgg IiNkLTEwIiAtMTAgIi0xMCIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI28tMTAiIC04ICItOCIp CisodGVzdC1udW1lcmljLXN5bnRheCAiI2ItMTAiIC0yICItMiIpCis7OyBDb21iaW5hdGlvbiBv ZiBwcmVmaXhlcworKHRlc3QtbnVtZXJpYy1zeW50YXggIiNlI3gxMCIgMTYgIjE2IikKKyh0ZXN0 LW51bWVyaWMtc3ludGF4ICIjaSN4MTAiIDE2LjAgIjE2LjAiICIxNi4iKQorOzsgKEF0dGVtcHRl ZCkgZGVjaW1hbCBub3RhdGlvbiB3aXRoIGJhc2UgcHJlZml4ZXMKKyh0ZXN0LW51bWVyaWMtc3lu dGF4ICIjZDEuIiAxLjAgIjEuMCIgIjEuIikKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIjZC4xIiAw LjEgIjAuMSIgIi4xIiAiMTAwLjBlLTMiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiN4MWUyIiA0 ODIgIjQ4MiIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI2QxZTIiIDEwMC4wICIxMDAuMCIgIjEw MC4iKQorOzsgRnJhY3Rpb25zIHdpdGggcHJlZml4ZXMKKyh0ZXN0LW51bWVyaWMtc3ludGF4ICIj eDEwLzIiIDggIjgiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiN4MTEvMiIgKC8gMTcgMikgIjE3 LzIiKQorKHRlc3QtbnVtZXJpYy1zeW50YXggIiNkMTEvMiIgKC8gMTEgMikgIjExLzIiKQorKHRl c3QtbnVtZXJpYy1zeW50YXggIiNvMTEvMiIgKC8gOSAyKSAiOS8yIikKKyh0ZXN0LW51bWVyaWMt c3ludGF4ICIjYjExLzEwIiAoLyAzIDIpICIzLzIiKQorOzsgQ29tcGxleCBudW1iZXJzIHdpdGgg cHJlZml4ZXMKKzs7KHRlc3QtbnVtZXJpYy1zeW50YXggIiN4MTArMTFpIiAobWFrZS1yZWN0YW5n dWxhciAxNiAxNykgIjE2KzE3aSIpCisodGVzdC1udW1lcmljLXN5bnRheCAiI2QxLjArMS4waSIg KG1ha2UtcmVjdGFuZ3VsYXIgMS4wIDEuMCkgIjEuMCsxLjBpIiAiMS4rMS5pIikKKyh0ZXN0LW51 bWVyaWMtc3ludGF4ICIjZDEwKzExaSIgKG1ha2UtcmVjdGFuZ3VsYXIgMTAgMTEpICIxMCsxMWki KQorOzsodGVzdC1udW1lcmljLXN5bnRheCAiI28xMCsxMWkiIChtYWtlLXJlY3Rhbmd1bGFyIDgg OSkgIjgrOWkiKQorOzsodGVzdC1udW1lcmljLXN5bnRheCAiI2IxMCsxMWkiIChtYWtlLXJlY3Rh bmd1bGFyIDIgMykgIjIrM2kiKQorOzsodGVzdC1udW1lcmljLXN5bnRheCAiI2UxLjArMS4waSIg KG1ha2UtcmVjdGFuZ3VsYXIgMSAxKSAiMSsxaSIgIjEraSIpCis7Oyh0ZXN0LW51bWVyaWMtc3lu dGF4ICIjaTEuMCsxLjBpIiAobWFrZS1yZWN0YW5ndWxhciAxLjAgMS4wKSAiMS4wKzEuMGkiICIx LisxLmkiKQorCisodGVzdC1lbmQpCisKKyh0ZXN0LWVuZCkKKworKHRlc3QtYmVnaW4gIjYuMTQg U3lzdGVtIGludGVyZmFjZSIpCisKKzs7IDYuMTQgU3lzdGVtIGludGVyZmFjZQorCis7OyAodGVz dCAiL3Vzci9sb2NhbC9iaW46L3Vzci9iaW46L2JpbiIgKGdldC1lbnZpcm9ubWVudC12YXJpYWJs ZSAiUEFUSCIpKQorCisodGVzdCAjdCAoc3RyaW5nPyAoZ2V0LWVudmlyb25tZW50LXZhcmlhYmxl ICJQQVRIIikpKQorCis7OyAodGVzdCAnKCgiVVNFUiIgLiAicm9vdCIpICgiSE9NRSIgLiAiLyIp KSAoZ2V0LWVudmlyb25tZW50LXZhcmlhYmxlcykpCisKKyhsZXQgKChlbnYgKGdldC1lbnZpcm9u bWVudC12YXJpYWJsZXMpKSkKKyAgKGRlZmluZSAoZW52LXBhaXI/IHgpCisgICAgKGFuZCAocGFp cj8geCkgKHN0cmluZz8gKGNhciB4KSkgKHN0cmluZz8gKGNkciB4KSkpKQorICAoZGVmaW5lIChh bGw/IHByZWQgbHMpCisgICAgKG9yIChudWxsPyBscykgKGFuZCAocHJlZCAoY2FyIGxzKSkgKGFs bD8gcHJlZCAoY2RyIGxzKSkpKSkKKyAgKHRlc3QgI3QgKGxpc3Q/IGVudikpCisgICh0ZXN0ICN0 IChhbGw/IGVudi1wYWlyPyBlbnYpKSkKKworKHRlc3QgI3QgKGxpc3Q/IChjb21tYW5kLWxpbmUp KSkKKworKHRlc3QgI3QgKHJlYWw/IChjdXJyZW50LXNlY29uZCkpKQorKHRlc3QgI3QgKGluZXhh Y3Q/IChjdXJyZW50LXNlY29uZCkpKQorKHRlc3QgI3QgKGV4YWN0PyAoY3VycmVudC1qaWZmeSkp KQorKHRlc3QgI3QgKGV4YWN0PyAoamlmZmllcy1wZXItc2Vjb25kKSkpCisKKyh0ZXN0ICN0IChs aXN0PyAoZmVhdHVyZXMpKSkKKyh0ZXN0ICN0IChhbmQgKG1lbXEgJ3I3cnMgKGZlYXR1cmVzKSkg I3QpKQorCisodGVzdCAjdCAoZmlsZS1leGlzdHM/ICIuIikpCisodGVzdCAjZiAoZmlsZS1leGlz dHM/ICIgbm8gc3VjaCBmaWxlICIpKQorCisodGVzdCAjdCAoZmlsZS1lcnJvcj8KKyAgICAgICAg ICAoZ3VhcmQgKGV4biAoZWxzZSBleG4pKQorICAgICAgICAgICAgKGRlbGV0ZS1maWxlICIgbm8g c3VjaCBmaWxlICIpKSkpCisKKyh0ZXN0LWVuZCkKKworKHRlc3QtZW5kKQorCisKKzs7IEFkZGVk IGluIEd1aWxlCis7KHRlc3QtZXhpdCkKLS0gCjIuOS40Cgo= --001a1146e4b08b1b2005524a6c94--