Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uzJij-0026SV-46 for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Sep 2025 18:51:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uzJih-001PzI-1K for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Sep 2025 18:51:03 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uzJig-001Pz4-B2 for pgsql-hackers@lists.postgresql.org; Thu, 18 Sep 2025 18:51:02 +0000 Received: from fout-b6-smtp.messagingengine.com ([202.12.124.149]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uzJib-001YYC-2P for pgsql-hackers@lists.postgresql.org; Thu, 18 Sep 2025 18:51:02 +0000 Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfout.stl.internal (Postfix) with ESMTP id 2BD341D00315; Thu, 18 Sep 2025 14:50:57 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-09.internal (MEProxy); Thu, 18 Sep 2025 14:50:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1758221457; x=1758307857; bh=msRNgd0GXE wLd0aLpikspIfcO25hQRInQ8Ra2cJC2Oo=; b=FrKAUjzwXZ/Eootr2xMYmyMcQS V6FG4mHPyx6vGodldcQJaEfEsEmAh6FRwbmJ0zQxU1m/DELaaY0aCWj+6HEz4Pvq 1VzznI+GZOs6FjEEjgT8gtM9SQ49uC3mKGZwxdGptp59vXsgnjirb8cVpoG3f5RB 9HZJHMrjCI3ftyYQ6nRJGThWMDxTHhGQl50hbY55MSOrUMM8qxLDncg14CvGcKfn nBw3rH/0Vgwpk1KTAgKjca3R6ve+ZOCJhQQoMge88NARg2uxuA/qgAJWFpVQ+VJa WAWuSj73fIhDSr9wEHmTX0/9fS22jutiX8ro92bpAQSgVj9qMjRHsYeO1pvw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1758221457; x=1758307857; bh=msRNgd0GXEwLd0aLpikspIfcO25hQRInQ8R a2cJC2Oo=; b=emRzlhWhZzHXJ+rrLx3Tg//wcw6FOJR45LTpS0Z7p3KTphZdZq6 2Coyu0x+NOxqGVUlhyO0osRbAePCvcGA2y0kOpFtvEMVps5Q2DMwPsidzWKfFi5A 39HVQt15KL1lLVOjIgzEamItmJPKoMU9glRfZAF48gi1f9jpJogLl7jw2SCEVMna fBlg5nW85DQ36wnul6QzCCmxaP8hl9T2swjMn4KwhhyJTbpaS/FgVYnRcQUAtExd AP2J8d/Re0WEpMVJ+2VtKsQf2gvF94iJEzBmYvz7cvABtrmT4BQ7YDgVXQTHmD/s /0x9AVn4x+y+D67m881UMzS9LKoQ/9pZypw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggdegjedtlecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpeffhffvvefkjghfuffogggtsehmtdhmreertdejnecuhfhrohhmpefirhgvghcuuehu rhguuceoghhrvghgsegsuhhrugdrmhgvqeenucggtffrrghtthgvrhhnpeefvdfhudelud evveegheeuhfdtuedvueeiveegieejkefggfevhfekkefhtdekheenucevlhhushhtvghr ufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehgrhgvghessghurhgurdhmvg dpnhgspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepphhg shhqlhdqhhgrtghkvghrsheslhhishhtshdrphhoshhtghhrvghsqhhlrdhorhhgpdhrtg hpthhtoheprhhosggvrhhtmhhhrggrshesghhmrghilhdrtghomhdprhgtphhtthhopehn rghthhgrnhgusghoshhsrghrthesghhmrghilhdrtghomhdprhgtphhtthhopehsrgifrg gurgdrmhhshhhksehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhhitghhrggvlhesphgr qhhuihgvrhdrgiihii X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 18 Sep 2025 14:50:56 -0400 (EDT) Date: Thu, 18 Sep 2025 14:50:45 -0400 From: Greg Burd To: PostgreSQL Hackers Cc: Robert Haas , Nathan Bossart , Masahiko Sawada , Michael Paquier Message-ID: <1D776AE2-6027-4494-846F-B50B68B4356C@greg.burd.me> In-Reply-To: References: Subject: Re: [PATCH] Add tests for Bitmapset X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="68cc5485_7677a82b_6415" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --68cc5485_7677a82b_6415 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello hackers, :) Thanks for all the feedback and time spent reviewing this patch. I switched out the encode/decode functions to use the nodeToString() and stringToNode() functions and change all the SQL testing function signatures to TEXT from BYTEA. This exercises more code and that's good for testing purposes. I took out the code that checks the hash values, I can't think of a reason that should cause a future failure should that change and output different values. I re-integrated the earlier random testing function along with the newer code. I'm not sure this buys us much if anything. coverage: HEAD v7 lines......: 87.1 90.5 +3.4% functions..: 100.0 100.0 +0.0% branches...: 63.5 75.9 +12.4% best. -greg --68cc5485_7677a82b_6415 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v7-0001-Add-a-module-that-tests-Bitmapset.patch" RnJvbSAwMTYxNGRhNWRjZjU3NDYzMjRlZGU4NGY2YzU4ZTYyNDBhZTdmMWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogV2VkLCAx MyBBdWcgMjAyNSAxNTo0MDozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjddIEFkZCBhIG1vZHVs ZSB0aGF0IHRlc3RzIEJpdG1hcHNldAoKQmFzaWMgdGVzdHMgZm9yIEJpdG1hcHNldCB0byBlbnN1 cmUgZnVuY3Rpb25hbGl0eSBhbmQgaGVscCBwcmV2ZW50CnVuaW50ZW50aW9uYWwgYnJlYWtpbmcg Y2hhbmdlcyBpbiB0aGUgZnV0dXJlLgotLS0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 Ly5naXRpZ25vcmUgICAgfCAgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv TWFrZWZpbGUgICAgICB8ICAgMjMgKwogLi4uL2V4cGVjdGVkL3Rlc3RfYml0bWFwc2V0Lm91dCAg ICAgICAgICAgICAgIHwgIDc1NyArKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Jp dG1hcHNldC9tZXNvbi5idWlsZCAgIHwgICAzMyArCiAuLi4vdGVzdF9iaXRtYXBzZXQvc3FsL3Rl c3RfYml0bWFwc2V0LnNxbCAgICAgfCAgNDEzICsrKysrKwogLi4uL3Rlc3RfYml0bWFwc2V0L3Rl c3RfYml0bWFwc2V0LS0xLjAuc3FsICAgIHwgIDE0OSArKysKIC4uLi9tb2R1bGVzL3Rlc3RfYml0 bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMgICB8IDExNzkgKysrKysrKysrKysrKysrKysKIC4uLi90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jb250cm9sICAgICB8ICAgIDQgKwogMTAgZmls ZXMgY2hhbmdlZCwgMjU2NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvZXhwZWN0ZWQvdGVzdF9iaXRtYXBz ZXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNl dC9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9i aXRtYXBzZXQvc3FsL3Rlc3RfYml0bWFwc2V0LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQtLTEuMC5zcWwKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFw c2V0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L3Rlc3RfYml0bWFwc2V0LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01h a2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCA5MDNhOGFjMTUxYS4uOTQw NzFlYzBlMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBTVUJESVJTID0gXAogCQkg IHNwZ2lzdF9uYW1lX29wcyBcCiAJCSAgdGVzdF9haW8gXAogCQkgIHRlc3RfYmluYXJ5aGVhcCBc CisJCSAgdGVzdF9iaXRtYXBzZXQgXAogCQkgIHRlc3RfYmxvb21maWx0ZXIgXAogCQkgIHRlc3Rf Y29weV9jYWxsYmFja3MgXAogCQkgIHRlc3RfY3VzdG9tX3JtZ3JzIFwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk CmluZGV4IDkzYmUwZjU3Mjg5Li5kOGY1YzljNzQ5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0x NSw2ICsxNSw3IEBAIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3Nw aHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCiBzdWJkaXIoJ3Rlc3RfYmluYXJ5 aGVhcCcpCitzdWJkaXIoJ3Rlc3RfYml0bWFwc2V0JykKIHN1YmRpcigndGVzdF9ibG9vbWZpbHRl cicpCiBzdWJkaXIoJ3Rlc3RfY29weV9jYWxsYmFja3MnKQogc3ViZGlyKCd0ZXN0X2N1c3RvbV9y bWdycycpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0Ly5naXRp Z25vcmUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0Ly5naXRpZ25vcmUKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVkY2IzZmY5NzIzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC8uZ2l0aWdub3JlCkBAIC0w LDAgKzEsNCBAQAorIyBHZW5lcmF0ZWQgc3ViZGlyZWN0b3JpZXMKKy9sb2cvCisvcmVzdWx0cy8K Ky90bXBfY2hlY2svCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjcxOTlkNDBkNzMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L01ha2VmaWxlCkBAIC0w LDAgKzEsMjMgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9NYWtlZmlsZQor CitNT0RVTEVfYmlnID0gdGVzdF9iaXRtYXBzZXQKK09CSlMgPSBcCisJJChXSU4zMlJFUykgXAor CXRlc3RfYml0bWFwc2V0Lm8KK1BHRklMRURFU0MgPSAidGVzdF9iaXRtYXBzZXQgLSB0ZXN0IGNv ZGUgZm9yIHNyYy9pbmNsdWRlL25vZGVzL2JpdG1hcHNldC5oIgorCitFWFRFTlNJT04gPSB0ZXN0 X2JpdG1hcHNldAorREFUQSA9IHRlc3RfYml0bWFwc2V0LS0xLjAuc3FsCisKK1JFR1JFU1MgPSB0 ZXN0X2JpdG1hcHNldAorCitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQ R1hTIDo9ICQoc2hlbGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxz ZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldAordG9wX2J1aWxkZGly ID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9leHBlY3RlZC90 ZXN0X2JpdG1hcHNldC5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L2V4cGVj dGVkL3Rlc3RfYml0bWFwc2V0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZWNhZTU4NGJkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYml0bWFwc2V0L2V4cGVjdGVkL3Rlc3RfYml0bWFwc2V0Lm91dApAQCAtMCwwICsxLDc1NyBA QAorQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfYml0bWFwc2V0OworLS0gQkFT SUMgRlVOQ1RJT05BTElUWSBURVNUUworLS0gVGVzdCBibXNfdmFsdWVzIGZ1bmN0aW9uCitTRUxF Q1QgJ3ZhbHVlcyBOVUxMJyBhcyB0ZXN0LCBibXNfdmFsdWVzKE5VTEwpIGFzIHJlc3VsdDsKKyAg ICB0ZXN0ICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB2YWx1ZXMgTlVM TCB8IChiKQorKDEgcm93KQorCitTRUxFQ1QgJ3ZhbHVlcyBlbXB0eScgYXMgdGVzdCwgYm1zX3Zh bHVlcyh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZW106OmludGVnZXJbXSkpIGFzIHJlc3VsdDsK KyAgICAgdGVzdCAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHZhbHVl cyBlbXB0eSB8IChiKQorKDEgcm93KQorCitTRUxFQ1QgJ3ZhbHVlcyBzaW5nbGV0b24nIGFzIHRl c3QsIGJtc192YWx1ZXModGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oNDIpKSBhcyByZXN1bHQ7Cisg ICAgICAgdGVzdCAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQor IHZhbHVlcyBzaW5nbGV0b24gfCAoYiA0MikKKygxIHJvdykKKworU0VMRUNUICd2YWx1ZXMgc21h bGwgc2V0JyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwz LDVdKSkgYXMgcmVzdWx0OworICAgICAgIHRlc3QgICAgICAgfCAgcmVzdWx0ICAgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyB2YWx1ZXMgc21hbGwgc2V0IHwgKGIgMSAzIDUpCiso MSByb3cpCisKK1NFTEVDVCAndmFsdWVzIGxhcmdlciBzZXQnIGFzIHRlc3QsIGJtc192YWx1ZXMo dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVswLDUsMTAsMTUsMjBdKSkgYXMgcmVzdWx0OworICAg ICAgIHRlc3QgICAgICAgIHwgICAgICByZXN1bHQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tCisgdmFsdWVzIGxhcmdlciBzZXQgfCAoYiAwIDUgMTAgMTUgMjAp CisoMSByb3cpCisKK1NFTEVDVCAndmFsdWVzIHVuc29ydGVkIGlucHV0JyBhcyB0ZXN0LCBibXNf dmFsdWVzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMjAsNSwxNSwwLDEwXSkpIGFzIHJlc3Vs dDsKKyAgICAgICAgIHRlc3QgICAgICAgICAgfCAgICAgIHJlc3VsdCAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdmFsdWVzIHVuc29ydGVkIGlucHV0 IHwgKGIgMCA1IDEwIDE1IDIwKQorKDEgcm93KQorCistLSBUZXN0IDE6IEJhc2ljIHV0aWxpdHkg ZnVuY3Rpb25zCitTRUxFQ1QgJ05VTEwgaW5wdXQgdG8gZnJvbV9hcnJheScgYXMgdGVzdCwgdGVz dF9ibXNfZnJvbV9hcnJheShOVUxMKSBJUyBOVUxMIGFzIHJlc3VsdDsKKyAgICAgICAgICAgdGVz dCAgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LQorIE5VTEwgaW5wdXQgdG8gZnJvbV9hcnJheSB8IHQKKygxIHJvdykKKworU0VMRUNUICdFbXB0 eSBhcnJheSB0byBmcm9tX2FycmF5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ W106OmludGVnZXJbXSkgSVMgTlVMTCBhcyByZXN1bHQ7CisgICAgICAgICAgIHRlc3QgICAgICAg ICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIEVt cHR5IGFycmF5IHRvIGZyb21fYXJyYXkgfCB0CisoMSByb3cpCisKK1NFTEVDVCAnTlVMTCBpbnB1 dCB0byB0b19hcnJheScgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkoTlVMTCkgSVMgTlVMTCBh cyByZXN1bHQ7CisgICAgICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIE5VTEwgaW5wdXQgdG8gdG9fYXJyYXkgfCB0CisoMSBy b3cpCisKKy0tIFRlc3QgMjogU2luZ2xldG9uIG9wZXJhdGlvbnMKK1NFTEVDVCAnbWFrZV9zaW5n bGV0b24oNDIpJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19tYWtlX3Npbmds ZXRvbig0MikpID0gQVJSQVlbNDJdIGFzIHJlc3VsdDsKKyAgICAgICAgdGVzdCAgICAgICAgfCBy ZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIG1ha2Vfc2luZ2xldG9uKDQy KSB8IHQKKygxIHJvdykKKworU0VMRUNUICdtYWtlX3NpbmdsZXRvbigwKScgYXMgdGVzdCwgdGVz dF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMCkpID0gQVJSQVlbMF0gYXMg cmVzdWx0OworICAgICAgIHRlc3QgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLQorIG1ha2Vfc2luZ2xldG9uKDApIHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ21h a2Vfc2luZ2xldG9uKDEwMDApJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19t YWtlX3NpbmdsZXRvbigxMDAwKSkgPSBBUlJBWVsxMDAwXSBhcyByZXN1bHQ7CisgICAgICAgICB0 ZXN0ICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg bWFrZV9zaW5nbGV0b24oMTAwMCkgfCB0CisoMSByb3cpCisKKy0tIFRlc3QgMzogQWRkIG1lbWJl ciBvcGVyYXRpb25zCitTRUxFQ1QgJ2FkZF9tZW1iZXIoTlVMTCwgMTApJyBhcyB0ZXN0LCB0ZXN0 X2Jtc190b19hcnJheSh0ZXN0X2Jtc19hZGRfbWVtYmVyKE5VTEwsIDEwKSkgPSBBUlJBWVsxMF0g YXMgcmVzdWx0OworICAgICAgICAgdGVzdCAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLQorIGFkZF9tZW1iZXIoTlVMTCwgMTApIHwgdAorKDEgcm93KQor CitTRUxFQ1QgJ2FkZF9tZW1iZXIgY29uc2lzdGVuY3knIGFzIHRlc3QsIGJtc192YWx1ZXModGVz dF9ibXNfYWRkX21lbWJlcihOVUxMLCAxMCkpIGFzIHZhbHVlczsKKyAgICAgICAgICB0ZXN0ICAg ICAgICAgIHwgdmFsdWVzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYWRk X21lbWJlciBjb25zaXN0ZW5jeSB8IChiIDEwKQorKDEgcm93KQorCitTRUxFQ1QgJ2FkZF9tZW1i ZXIgdG8gZXhpc3RpbmcnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9t ZW1iZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oNSksIDEwKSkgPSBBUlJBWVs1LDEwXSBhcyBy ZXN1bHQ7CisgICAgICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLQorIGFkZF9tZW1iZXIgdG8gZXhpc3RpbmcgfCB0CisoMSByb3cp CisKK1NFTEVDVCAnYWRkX21lbWJlciBzb3J0ZWQnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5 KHRlc3RfYm1zX2FkZF9tZW1iZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTApLCA1KSkgPSBB UlJBWVs1LDEwXSBhcyByZXN1bHQ7CisgICAgICAgdGVzdCAgICAgICAgfCByZXN1bHQgCistLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYWRkX21lbWJlciBzb3J0ZWQgfCB0CisoMSByb3cp CisKK1NFTEVDVCAnYWRkX21lbWJlciBpZGVtcG90ZW50JyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRl c3RfYm1zX2FkZF9tZW1iZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMTApLCAxMCkpIGFzIHZh bHVlczsKKyAgICAgICAgIHRlc3QgICAgICAgICAgfCB2YWx1ZXMgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLQorIGFkZF9tZW1iZXIgaWRlbXBvdGVudCB8IChiIDEwKQorKDEgcm93 KQorCistLSBUZXN0IDQ6IERlbGV0ZSBtZW1iZXIgb3BlcmF0aW9ucworU0VMRUNUICdkZWxfbWVt YmVyIGZyb20gTlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfZGVsX21lbWJlcihOVUxMLCAxMCkgSVMg TlVMTCBhcyByZXN1bHQ7CisgICAgICAgICB0ZXN0ICAgICAgICAgfCByZXN1bHQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgZGVsX21lbWJlciBmcm9tIE5VTEwgfCB0CisoMSBy b3cpCisKK1NFTEVDVCAnZGVsX21lbWJlciBzaW5nbGV0b24gYmVjb21lcyBlbXB0eScgYXMgdGVz dCwgdGVzdF9ibXNfZGVsX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDEwKSBJ UyBOVUxMIGFzIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgIHwg cmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg ZGVsX21lbWJlciBzaW5nbGV0b24gYmVjb21lcyBlbXB0eSB8IHQKKygxIHJvdykKKworU0VMRUNU ICdkZWxfbWVtYmVyIG5vIGNoYW5nZScgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19kZWxf bWVtYmVyKHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDEwKSwgNSkpIGFzIHZhbHVlczsKKyAgICAg ICAgIHRlc3QgICAgICAgICB8IHZhbHVlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0KKyBkZWxfbWVtYmVyIG5vIGNoYW5nZSB8IChiIDEwKQorKDEgcm93KQorCitTRUxFQ1QgJ2Rl bF9tZW1iZXIgZnJvbSBtaWRkbGUnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1z X2RlbF9tZW1iZXIodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDIsM10pLCAyKSkgPSBBUlJB WVsxLDNdIGFzIHJlc3VsdDsKKyAgICAgICAgICB0ZXN0ICAgICAgICAgIHwgcmVzdWx0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgZGVsX21lbWJlciBmcm9tIG1pZGRsZSB8 IHQKKygxIHJvdykKKworU0VMRUNUICdkZWxfbWVtYmVyIHRyaWdnZXJzIHJlYWxsb2MnIGFzIHRl c3QsIHRlc3RfYm1zX2RlbF9tZW1iZXIodGVzdF9ibXNfZGVsX21lbWJlcih0ZXN0X2Jtc19mcm9t X2FycmF5KEFSUkFZWzAsMzEsMzIsNjMsNjRdKSwgMzIpLCA2MykgYXMgcmVzdWx0OworICAgICAg ICAgICAgdGVzdCAgICAgICAgICAgICB8ICAgcmVzdWx0ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGRlbF9tZW1iZXIgdHJpZ2dlcnMgcmVhbGxvYyB8 IChiIDAgMzEgNjQpCisoMSByb3cpCisKK1NFTEVDVCAnZGVsX21lbWJlciB3b3JkIGJvdW5kYXJ5 JyBhcyB0ZXN0LAorICAgICAgIGJtc192YWx1ZXModGVzdF9ibXNfZGVsX21lbWJlcigKKyAgICAg ICAgICAgdGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDMwLCAzNCksCisgICAgICAgICAgIDMyCisg ICAgICAgKSkgYXMgcmVzdWx0OworICAgICAgICAgICB0ZXN0ICAgICAgICAgICB8ICAgICByZXN1 bHQgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisg ZGVsX21lbWJlciB3b3JkIGJvdW5kYXJ5IHwgKGIgMzAgMzEgMzMgMzQpCisoMSByb3cpCisKKy0t IFNFVCBPUEVSQVRJT05TIFRFU1RTCistLSBUZXN0IDU6IFVuaW9uIG9wZXJhdGlvbnMKK1dJVEgg dGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEs Myw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzMsNSw3XSkgQVMg c2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0Ngor KQorU0VMRUNUICd1bmlvbiBvdmVybGFwcGluZyBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRlc3Rf Ym1zX3RvX2FycmF5KHRlc3RfYm1zX3VuaW9uKHNldF8xMzUsIHNldF8zNTcpKSA9IEFSUkFZWzEs Myw1LDddIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICd1bmlv biB3aXRoIE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNf dW5pb24oc2V0XzEzNSwgTlVMTCkpID0gQVJSQVlbMSwzLDVdIGFzIHJlc3VsdAorRlJPTSB0ZXN0 X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICd1bmlvbiBOVUxMIHdpdGggTlVMTCcgYXMgdGVzdCwK KyAgICAgICB0ZXN0X2Jtc191bmlvbihOVUxMLCBOVUxMKSBJUyBOVUxMIGFzIHJlc3VsdAorRlJP TSB0ZXN0X3NldHM7CisgICAgICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHVuaW9uIG92ZXJsYXBwaW5nIHNldHMgfCB0Cisg dW5pb24gd2l0aCBOVUxMICAgICAgICB8IHQKKyB1bmlvbiBOVUxMIHdpdGggTlVMTCAgIHwgdAor KDMgcm93cykKKworU0VMRUNUICdvdmVybGFwcGluZyByYW5nZXMnIGFzIHRlc3QsCisgICAgICAg Ym1zX3ZhbHVlcyh0ZXN0X2Jtc191bmlvbigKKyAgICAgICAgICAgdGVzdF9ibXNfYWRkX3Jhbmdl KE5VTEwsIDUwLCAxNTApLAorICAgICAgICAgICB0ZXN0X2Jtc19hZGRfcmFuZ2UoTlVMTCwgMTAw LCAyMDApCisgICAgICAgKSkgYXMgcmVzdWx0OworICAgICAgICB0ZXN0ICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG92 ZXJsYXBwaW5nIHJhbmdlcyB8IChiIDUwIDUxIDUyIDUzIDU0IDU1IDU2IDU3IDU4IDU5IDYwIDYx IDYyIDYzIDY0IDY1IDY2IDY3IDY4IDY5IDcwIDcxIDcyIDczIDc0IDc1IDc2IDc3IDc4IDc5IDgw IDgxIDgyIDgzIDg0IDg1IDg2IDg3IDg4IDg5IDkwIDkxIDkyIDkzIDk0IDk1IDk2IDk3IDk4IDk5 IDEwMCAxMDEgMTAyIDEwMyAxMDQgMTA1IDEwNiAxMDcgMTA4IDEwOSAxMTAgMTExIDExMiAxMTMg MTE0IDExNSAxMTYgMTE3IDExOCAxMTkgMTIwIDEyMSAxMjIgMTIzIDEyNCAxMjUgMTI2IDEyNyAx MjggMTI5IDEzMCAxMzEgMTMyIDEzMyAxMzQgMTM1IDEzNiAxMzcgMTM4IDEzOSAxNDAgMTQxIDE0 MiAxNDMgMTQ0IDE0NSAxNDYgMTQ3IDE0OCAxNDkgMTUwIDE1MSAxNTIgMTUzIDE1NCAxNTUgMTU2 IDE1NyAxNTggMTU5IDE2MCAxNjEgMTYyIDE2MyAxNjQgMTY1IDE2NiAxNjcgMTY4IDE2OSAxNzAg MTcxIDE3MiAxNzMgMTc0IDE3NSAxNzYgMTc3IDE3OCAxNzkgMTgwIDE4MSAxODIgMTgzIDE4NCAx ODUgMTg2IDE4NyAxODggMTg5IDE5MCAxOTEgMTkyIDE5MyAxOTQgMTk1IDE5NiAxOTcgMTk4IDE5 OSAyMDApCisoMSByb3cpCisKKy0tIFRlc3QgNjogSW50ZXJzZWN0aW9uIG9wZXJhdGlvbnMKK1dJ VEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzMsNSw3XSkg QVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0 NgorKQorU0VMRUNUICdpbnRlcnNlY3Qgb3ZlcmxhcHBpbmcgc2V0cycgYXMgdGVzdCwKKyAgICAg ICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19pbnRlcnNlY3Qoc2V0XzEzNSwgc2V0XzM1Nykp ID0gQVJSQVlbMyw1XSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVD VCAnaW50ZXJzZWN0IGRpc2pvaW50IHNldHMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfaW50 ZXJzZWN0KHNldF8xMzUsIHNldF8yNDYpIElTIE5VTEwgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0 cworVU5JT04gQUxMCitTRUxFQ1QgJ2ludGVyc2VjdCB3aXRoIE5VTEwnIGFzIHRlc3QsCisgICAg ICAgdGVzdF9ibXNfaW50ZXJzZWN0KHNldF8xMzUsIE5VTEwpIElTIE5VTEwgYXMgcmVzdWx0CitG Uk9NIHRlc3Rfc2V0czsKKyAgICAgICAgICAgIHRlc3QgICAgICAgICAgICB8IHJlc3VsdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBpbnRlcnNlY3Qgb3ZlcmxhcHBp bmcgc2V0cyB8IHQKKyBpbnRlcnNlY3QgZGlzam9pbnQgc2V0cyAgICB8IHQKKyBpbnRlcnNlY3Qg d2l0aCBOVUxMICAgICAgICB8IHQKKygzIHJvd3MpCisKKy0tIFRlc3QgYm1zX2ludF9tZW1iZXJz CitXSVRIIHRlc3Rfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShB UlJBWVsxLDMsNV0pIEFTIHNldF8xMzUsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVszLDUs N10pIEFTIHNldF8zNTcsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNl dF8yNDYKKykKK1NFTEVDVCAnaW50KGVyc2VjdCkgb3ZlcmxhcHBpbmcgc2V0cycgYXMgdGVzdCwK KyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19pbnRfbWVtYmVycyhzZXRfMTM1LCBz ZXRfMzU3KSkgPSBBUlJBWVszLDVdIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFM TAorU0VMRUNUICdpbnQoZXJzZWN0KSBkaXNqb2ludCBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRl c3RfYm1zX2ludF9tZW1iZXJzKHNldF8xMzUsIHNldF8yNDYpIElTIE5VTEwgYXMgcmVzdWx0CitG Uk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2ludChlcnNlY3QpIHdpdGggTlVMTCcg YXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc19pbnRfbWVtYmVycyhzZXRfMTM1LCBOVUxMKSBJUyBO VUxMIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHM7CisgICAgICAgICAgICAgdGVzdCAgICAgICAg ICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQor IGludChlcnNlY3QpIG92ZXJsYXBwaW5nIHNldHMgfCB0CisgaW50KGVyc2VjdCkgZGlzam9pbnQg c2V0cyAgICB8IHQKKyBpbnQoZXJzZWN0KSB3aXRoIE5VTEwgICAgICAgIHwgdAorKDMgcm93cykK KworU0VMRUNUICdpbnQoZXJzZWN0KSBtZW1iZXJzJyBhcyB0ZXN0LAorICAgICAgIGJtc192YWx1 ZXModGVzdF9ibXNfaW50X21lbWJlcnMoCisgICAgICAgICAgIHRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMCwzMSwzMiw2Myw2NF0pLAorICAgICAgICAgICB0ZXN0X2Jtc19mcm9tX2FycmF5KEFS UkFZWzMxLDMyLDY0LDY1XSkKKyAgICAgICApKSBhcyByZXN1bHQ7CisgICAgICAgIHRlc3QgICAg ICAgICB8ICAgIHJlc3VsdCAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIGludChlcnNlY3QpIG1lbWJlcnMgfCAoYiAzMSAzMiA2NCkKKygxIHJvdykKKworLS0gVGVz dCA3OiBEaWZmZXJlbmNlIG9wZXJhdGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxF Q1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9t X2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdkaWZmZXJlbmNlIG92 ZXJsYXBwaW5nIHNldHMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9i bXNfZGlmZmVyZW5jZShzZXRfMTM1LCBzZXRfMzU3KSkgPSBBUlJBWVsxXSBhcyByZXN1bHQKK0ZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnZGlmZmVyZW5jZSBkaXNqb2ludCBzZXRz JyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2RpZmZlcmVuY2Uo c2V0XzEzNSwgc2V0XzI0NikpID0gQVJSQVlbMSwzLDVdIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3Nl dHMKK1VOSU9OIEFMTAorU0VMRUNUICdkaWZmZXJlbmNlIGlkZW50aWNhbCBzZXRzJyBhcyB0ZXN0 LAorICAgICAgIHRlc3RfYm1zX2RpZmZlcmVuY2Uoc2V0XzEzNSwgc2V0XzEzNSkgSVMgTlVMTCBh cyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworICAgICAgICAgICAgdGVzdCAgICAgICAgICAgICB8 IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgZGlmZmVy ZW5jZSBvdmVybGFwcGluZyBzZXRzIHwgdAorIGRpZmZlcmVuY2UgZGlzam9pbnQgc2V0cyAgICB8 IHQKKyBkaWZmZXJlbmNlIGlkZW50aWNhbCBzZXRzICAgfCB0CisoMyByb3dzKQorCitTRUxFQ1Qg J2RpZmZlcmVuY2Ugc3VidHJhY3Rpb24gZWRnZSBjYXNlJyBhcyB0ZXN0LAorICAgICAgIGJtc192 YWx1ZXModGVzdF9ibXNfZGlmZmVyZW5jZSgKKyAgICAgICAgICAgdGVzdF9ibXNfYWRkX3Jhbmdl KE5VTEwsIDAsIDEwMCksCisgICAgICAgICAgIHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCA1MCwg MTUwKQorICAgICAgICkpIGFzIHJlc3VsdDsKKyAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZGlmZmVy ZW5jZSBzdWJ0cmFjdGlvbiBlZGdlIGNhc2UgfCAoYiAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDEx IDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwIDIxIDIyIDIzIDI0IDI1IDI2IDI3IDI4IDI5IDMw IDMxIDMyIDMzIDM0IDM1IDM2IDM3IDM4IDM5IDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IDQ3IDQ4IDQ5 KQorKDEgcm93KQorCitTRUxFQ1QgJ2RpZmZlcmVuY2Ugc3VidHJhY3QgdG8gZW1wdHknIGFzIHRl c3QsCisgICAgICAgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19kaWZmZXJlbmNlKAorICAgICAgICAgICB0 ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbig0MiksCisgICAgICAgICAgIHRlc3RfYm1zX21ha2Vfc2lu Z2xldG9uKDQyKQorICAgICAgICkpIGFzIHJlc3VsdDsKKyAgICAgICAgICAgICB0ZXN0ICAgICAg ICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgZGlmZmVyZW5jZSBzdWJ0cmFjdCB0byBlbXB0eSB8IChiKQorKDEgcm93KQorCistLSBNRU1C RVJTSElQIEFORCBDT01QQVJJU09OIFRFU1RTCistLSBUZXN0IDg6IE1lbWJlcnNoaXAgdGVzdHMK K1dJVEggdGVzdF9zZXQgQVMgKFNFTEVDVCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1 XSkgQVMgc2V0XzEzNSkKK1NFTEVDVCAnaXNfbWVtYmVyIGV4aXN0aW5nJyBhcyB0ZXN0LCB0ZXN0 X2Jtc19pc19tZW1iZXIoc2V0XzEzNSwgMSkgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0 CitVTklPTiBBTEwKK1NFTEVDVCAnaXNfbWVtYmVyIG1pc3NpbmcnIGFzIHRlc3QsIHRlc3RfYm1z X2lzX21lbWJlcihzZXRfMTM1LCAyKSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitV TklPTiBBTEwKK1NFTEVDVCAnaXNfbWVtYmVyIGV4aXN0aW5nIG1pZGRsZScgYXMgdGVzdCwgdGVz dF9ibXNfaXNfbWVtYmVyKHNldF8xMzUsIDMpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3Nl dAorVU5JT04gQUxMCitTRUxFQ1QgJ2lzX21lbWJlciBOVUxMIHNldCcgYXMgdGVzdCwgdGVzdF9i bXNfaXNfbWVtYmVyKE5VTEwsIDEpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQ7Cisg ICAgICAgICAgIHRlc3QgICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLQorIGlzX21lbWJlciBleGlzdGluZyAgICAgICAgfCB0CisgaXNfbWVt YmVyIG1pc3NpbmcgICAgICAgICB8IHQKKyBpc19tZW1iZXIgZXhpc3RpbmcgbWlkZGxlIHwgdAor IGlzX21lbWJlciBOVUxMIHNldCAgICAgICAgfCB0CisoNCByb3dzKQorCistLSBUZXN0IDk6IFNl dCBjYXJkaW5hbGl0eQorU0VMRUNUICdudW1fbWVtYmVycyBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jt c19udW1fbWVtYmVycyhOVUxMKSA9IDAgYXMgcmVzdWx0OworICAgICAgIHRlc3QgICAgICAgfCBy ZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBudW1fbWVtYmVycyBOVUxMIHwg dAorKDEgcm93KQorCitTRUxFQ1QgJ251bV9tZW1iZXJzIHNtYWxsIHNldCcgYXMgdGVzdCwgdGVz dF9ibXNfbnVtX21lbWJlcnModGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pKSA9IDMg YXMgcmVzdWx0OworICAgICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgbnVtX21lbWJlcnMgc21hbGwgc2V0IHwgdAorKDEgcm93 KQorCitTRUxFQ1QgJ251bV9tZW1iZXJzIGxhcmdlciBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX251 bV9tZW1iZXJzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDYsOCwxMF0pKSA9IDUgYXMg cmVzdWx0OworICAgICAgICAgIHRlc3QgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBudW1fbWVtYmVycyBsYXJnZXIgc2V0IHwgdAorKDEgcm93 KQorCistLSBUZXN0IDEwOiBTZXQgZXF1YWxpdHkgYW5kIGNvbXBhcmlzb24KK1dJVEggdGVzdF9z ZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkg QVMgc2V0XzEzNV9hLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRf MTM1X2IsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNldF8yNDYsCisJ dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMKKykKK1NFTEVDVCAnZXF1 YWwgTlVMTCBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChOVUxMLCBOVUxMKSA9IHRydWUg YXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnZXF1YWwgTlVMTCBz ZXQnIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFsKE5VTEwsIHNldF8xMzVfYSkgPSBmYWxzZSBhcyBy ZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdlcXVhbCBzZXQgTlVMTCcg YXMgdGVzdCwgdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBOVUxMKSA9IGZhbHNlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2VxdWFsIGlkZW50aWNhbCBzZXRz JyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8xMzVfYikgPSB0cnVlIGFz IHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2VxdWFsIGRpZmZlcmVu dCBzZXRzJyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8yNDYpID0gZmFs c2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBO VUxMIE5VTEwnIGFzIHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoTlVMTCwgTlVMTCkgPSAwIGFzIHJl c3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgTlVMTCBzZXQn IGFzIHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoTlVMTCwgc2V0XzEzKSA9IC0xIGFzIHJlc3VsdCBG Uk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgc2V0IE5VTEwnIGFzIHRl c3QsIHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzLCBOVUxMKSA9IDEgYXMgcmVzdWx0IEZST00gdGVz dF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBlcXVhbCBzZXRzJyBhcyB0ZXN0LCB0 ZXN0X2Jtc19jb21wYXJlKHNldF8xMywgc2V0XzEzKSA9IDAgYXMgcmVzdWx0IEZST00gdGVzdF9z ZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBzdWJzZXQgc3VwZXJzZXQnIGFzIHRlc3Qs IHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzLCBzZXRfMTM1X2EpID0gLTEgYXMgcmVzdWx0IEZST00g dGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBzdXBlcnNldCBzdWJzZXQnIGFz IHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzNV9hLCBzZXRfMTMpID0gMSBhcyByZXN1bHQg RlJPTSB0ZXN0X3NldHM7CisgICAgICAgICAgdGVzdCAgICAgICAgICAgfCByZXN1bHQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgZXF1YWwgTlVMTCBOVUxMICAgICAgICAg fCB0CisgZXF1YWwgTlVMTCBzZXQgICAgICAgICAgfCB0CisgZXF1YWwgc2V0IE5VTEwgICAgICAg ICAgfCB0CisgZXF1YWwgaWRlbnRpY2FsIHNldHMgICAgfCB0CisgZXF1YWwgZGlmZmVyZW50IHNl dHMgICAgfCB0CisgY29tcGFyZSBOVUxMIE5VTEwgICAgICAgfCB0CisgY29tcGFyZSBOVUxMIHNl dCAgICAgICAgfCB0CisgY29tcGFyZSBzZXQgTlVMTCAgICAgICAgfCB0CisgY29tcGFyZSBlcXVh bCBzZXRzICAgICAgfCB0CisgY29tcGFyZSBzdWJzZXQgc3VwZXJzZXQgfCB0CisgY29tcGFyZSBz dXBlcnNldCBzdWJzZXQgfCB0CisoMTEgcm93cykKKworU0VMRUNUICdjb21wYXJlIGVkZ2UgY2Fz ZScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc19jb21wYXJlKAorICAgICAgICAgICB0ZXN0X2Jt c19hZGRfcmFuZ2UoTlVMTCwgMCwgNjMpLAorICAgICAgICAgICB0ZXN0X2Jtc19hZGRfcmFuZ2Uo TlVMTCwgMCwgNjQpCisgICAgICAgKSBhcyByZXN1bHQ7CisgICAgICAgdGVzdCAgICAgICAgfCBy ZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgY29tcGFyZSBlZGdlIGNhc2Ug fCAgICAgLTEKKygxIHJvdykKKworLS0gQURWQU5DRUQgT1BFUkFUSU9OUyBURVNUUworLS0gVGVz dCAxMTogUmFuZ2Ugb3BlcmF0aW9ucworU0VMRUNUICdhZGRfcmFuZ2UgYmFzaWMnIGFzIHRlc3Qs IHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCA1LCA3KSkgPSBBUlJB WVs1LDYsN10gYXMgcmVzdWx0OworICAgICAgdGVzdCAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgYWRkX3JhbmdlIGJhc2ljIHwgdAorKDEgcm93KQorCitTRUxF Q1QgJ2FkZF9yYW5nZSBzaW5nbGUgZWxlbWVudCcgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXko dGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDUsIDUpKSA9IEFSUkFZWzVdIGFzIHJlc3VsdDsKKyAg ICAgICAgICAgdGVzdCAgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLQorIGFkZF9yYW5nZSBzaW5nbGUgZWxlbWVudCB8IHQKKygxIHJvdykKKwor U0VMRUNUICdhZGRfcmFuZ2UgdG8gZXhpc3RpbmcnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5 KHRlc3RfYm1zX2FkZF9yYW5nZSh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMTBdKSwgNSwg NykpID0gQVJSQVlbMSw1LDYsNywxMF0gYXMgcmVzdWx0OworICAgICAgICAgdGVzdCAgICAgICAg ICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYWRkX3Jhbmdl IHRvIGV4aXN0aW5nIHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ2FkZF9yYW5nZSBhdCB3b3JkIGJv dW5kYXJ5IDMxJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCAz MCwgMzQpKSBhcyByZXN1bHQ7CisgICAgICAgICAgICAgdGVzdCAgICAgICAgICAgICAgfCAgICAg ICByZXN1bHQgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tCisgYWRkX3JhbmdlIGF0IHdvcmQgYm91bmRhcnkgMzEgfCAoYiAzMCAzMSAz MiAzMyAzNCkKKygxIHJvdykKKworU0VMRUNUICdhZGRfcmFuZ2UgYXQgd29yZCBib3VuZGFyeSA2 MycgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19hZGRfcmFuZ2UoTlVMTCwgNjIsIDY2KSkg YXMgcmVzdWx0OworICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgIHwgICAgICAgcmVzdWx0 ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLQorIGFkZF9yYW5nZSBhdCB3b3JkIGJvdW5kYXJ5IDYzIHwgKGIgNjIgNjMgNjQgNjUgNjYp CisoMSByb3cpCisKK1NFTEVDVCAnYWRkX3JhbmdlIGxhcmdlIHJhbmdlJyBhcyB0ZXN0LCBibXNf dmFsdWVzKHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCAwLCAxMDAwKSkgYXMgcmVzdWx0OworICAg ICAgICAgdGVzdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBhZGRfcmFuZ2UgbGFyZ2Ug cmFuZ2UgfCAoYiAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4 IDE5IDIwIDIxIDIyIDIzIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxIDMyIDMzIDM0IDM1IDM2IDM3 IDM4IDM5IDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IDQ3IDQ4IDQ5IDUwIDUxIDUyIDUzIDU0IDU1IDU2 IDU3IDU4IDU5IDYwIDYxIDYyIDYzIDY0IDY1IDY2IDY3IDY4IDY5IDcwIDcxIDcyIDczIDc0IDc1 IDc2IDc3IDc4IDc5IDgwIDgxIDgyIDgzIDg0IDg1IDg2IDg3IDg4IDg5IDkwIDkxIDkyIDkzIDk0 IDk1IDk2IDk3IDk4IDk5IDEwMCAxMDEgMTAyIDEwMyAxMDQgMTA1IDEwNiAxMDcgMTA4IDEwOSAx MTAgMTExIDExMiAxMTMgMTE0IDExNSAxMTYgMTE3IDExOCAxMTkgMTIwIDEyMSAxMjIgMTIzIDEy NCAxMjUgMTI2IDEyNyAxMjggMTI5IDEzMCAxMzEgMTMyIDEzMyAxMzQgMTM1IDEzNiAxMzcgMTM4 IDEzOSAxNDAgMTQxIDE0MiAxNDMgMTQ0IDE0NSAxNDYgMTQ3IDE0OCAxNDkgMTUwIDE1MSAxNTIg MTUzIDE1NCAxNTUgMTU2IDE1NyAxNTggMTU5IDE2MCAxNjEgMTYyIDE2MyAxNjQgMTY1IDE2NiAx NjcgMTY4IDE2OSAxNzAgMTcxIDE3MiAxNzMgMTc0IDE3NSAxNzYgMTc3IDE3OCAxNzkgMTgwIDE4 MSAxODIgMTgzIDE4NCAxODUgMTg2IDE4NyAxODggMTg5IDE5MCAxOTEgMTkyIDE5MyAxOTQgMTk1 IDE5NiAxOTcgMTk4IDE5OSAyMDAgMjAxIDIwMiAyMDMgMjA0IDIwNSAyMDYgMjA3IDIwOCAyMDkg MjEwIDIxMSAyMTIgMjEzIDIxNCAyMTUgMjE2IDIxNyAyMTggMjE5IDIyMCAyMjEgMjIyIDIyMyAy MjQgMjI1IDIyNiAyMjcgMjI4IDIyOSAyMzAgMjMxIDIzMiAyMzMgMjM0IDIzNSAyMzYgMjM3IDIz OCAyMzkgMjQwIDI0MSAyNDIgMjQzIDI0NCAyNDUgMjQ2IDI0NyAyNDggMjQ5IDI1MCAyNTEgMjUy IDI1MyAyNTQgMjU1IDI1NiAyNTcgMjU4IDI1OSAyNjAgMjYxIDI2MiAyNjMgMjY0IDI2NSAyNjYg MjY3IDI2OCAyNjkgMjcwIDI3MSAyNzIgMjczIDI3NCAyNzUgMjc2IDI3NyAyNzggMjc5IDI4MCAy ODEgMjgyIDI4MyAyODQgMjg1IDI4NiAyODcgMjg4IDI4OSAyOTAgMjkxIDI5MiAyOTMgMjk0IDI5 NSAyOTYgMjk3IDI5OCAyOTkgMzAwIDMwMSAzMDIgMzAzIDMwNCAzMDUgMzA2IDMwNyAzMDggMzA5 IDMxMCAzMTEgMzEyIDMxMyAzMTQgMzE1IDMxNiAzMTcgMzE4IDMxOSAzMjAgMzIxIDMyMiAzMjMg MzI0IDMyNSAzMjYgMzI3IDMyOCAzMjkgMzMwIDMzMSAzMzIgMzMzIDMzNCAzMzUgMzM2IDMzNyAz MzggMzM5IDM0MCAzNDEgMzQyIDM0MyAzNDQgMzQ1IDM0NiAzNDcgMzQ4IDM0OSAzNTAgMzUxIDM1 MiAzNTMgMzU0IDM1NSAzNTYgMzU3IDM1OCAzNTkgMzYwIDM2MSAzNjIgMzYzIDM2NCAzNjUgMzY2 IDM2NyAzNjggMzY5IDM3MCAzNzEgMzcyIDM3MyAzNzQgMzc1IDM3NiAzNzcgMzc4IDM3OSAzODAg MzgxIDM4MiAzODMgMzg0IDM4NSAzODYgMzg3IDM4OCAzODkgMzkwIDM5MSAzOTIgMzkzIDM5NCAz OTUgMzk2IDM5NyAzOTggMzk5IDQwMCA0MDEgNDAyIDQwMyA0MDQgNDA1IDQwNiA0MDcgNDA4IDQw OSA0MTAgNDExIDQxMiA0MTMgNDE0IDQxNSA0MTYgNDE3IDQxOCA0MTkgNDIwIDQyMSA0MjIgNDIz IDQyNCA0MjUgNDI2IDQyNyA0MjggNDI5IDQzMCA0MzEgNDMyIDQzMyA0MzQgNDM1IDQzNiA0Mzcg NDM4IDQzOSA0NDAgNDQxIDQ0MiA0NDMgNDQ0IDQ0NSA0NDYgNDQ3IDQ0OCA0NDkgNDUwIDQ1MSA0 NTIgNDUzIDQ1NCA0NTUgNDU2IDQ1NyA0NTggNDU5IDQ2MCA0NjEgNDYyIDQ2MyA0NjQgNDY1IDQ2 NiA0NjcgNDY4IDQ2OSA0NzAgNDcxIDQ3MiA0NzMgNDc0IDQ3NSA0NzYgNDc3IDQ3OCA0NzkgNDgw IDQ4MSA0ODIgNDgzIDQ4NCA0ODUgNDg2IDQ4NyA0ODggNDg5IDQ5MCA0OTEgNDkyIDQ5MyA0OTQg NDk1IDQ5NiA0OTcgNDk4IDQ5OSA1MDAgNTAxIDUwMiA1MDMgNTA0IDUwNSA1MDYgNTA3IDUwOCA1 MDkgNTEwIDUxMSA1MTIgNTEzIDUxNCA1MTUgNTE2IDUxNyA1MTggNTE5IDUyMCA1MjEgNTIyIDUy MyA1MjQgNTI1IDUyNiA1MjcgNTI4IDUyOSA1MzAgNTMxIDUzMiA1MzMgNTM0IDUzNSA1MzYgNTM3 IDUzOCA1MzkgNTQwIDU0MSA1NDIgNTQzIDU0NCA1NDUgNTQ2IDU0NyA1NDggNTQ5IDU1MCA1NTEg NTUyIDU1MyA1NTQgNTU1IDU1NiA1NTcgNTU4IDU1OSA1NjAgNTYxIDU2MiA1NjMgNTY0IDU2NSA1 NjYgNTY3IDU2OCA1NjkgNTcwIDU3MSA1NzIgNTczIDU3NCA1NzUgNTc2IDU3NyA1NzggNTc5IDU4 MCA1ODEgNTgyIDU4MyA1ODQgNTg1IDU4NiA1ODcgNTg4IDU4OSA1OTAgNTkxIDU5MiA1OTMgNTk0 IDU5NSA1OTYgNTk3IDU5OCA1OTkgNjAwIDYwMSA2MDIgNjAzIDYwNCA2MDUgNjA2IDYwNyA2MDgg NjA5IDYxMCA2MTEgNjEyIDYxMyA2MTQgNjE1IDYxNiA2MTcgNjE4IDYxOSA2MjAgNjIxIDYyMiA2 MjMgNjI0IDYyNSA2MjYgNjI3IDYyOCA2MjkgNjMwIDYzMSA2MzIgNjMzIDYzNCA2MzUgNjM2IDYz NyA2MzggNjM5IDY0MCA2NDEgNjQyIDY0MyA2NDQgNjQ1IDY0NiA2NDcgNjQ4IDY0OSA2NTAgNjUx IDY1MiA2NTMgNjU0IDY1NSA2NTYgNjU3IDY1OCA2NTkgNjYwIDY2MSA2NjIgNjYzIDY2NCA2NjUg NjY2IDY2NyA2NjggNjY5IDY3MCA2NzEgNjcyIDY3MyA2NzQgNjc1IDY3NiA2NzcgNjc4IDY3OSA2 ODAgNjgxIDY4MiA2ODMgNjg0IDY4NSA2ODYgNjg3IDY4OCA2ODkgNjkwIDY5MSA2OTIgNjkzIDY5 NCA2OTUgNjk2IDY5NyA2OTggNjk5IDcwMCA3MDEgNzAyIDcwMyA3MDQgNzA1IDcwNiA3MDcgNzA4 IDcwOSA3MTAgNzExIDcxMiA3MTMgNzE0IDcxNSA3MTYgNzE3IDcxOCA3MTkgNzIwIDcyMSA3MjIg NzIzIDcyNCA3MjUgNzI2IDcyNyA3MjggNzI5IDczMCA3MzEgNzMyIDczMyA3MzQgNzM1IDczNiA3 MzcgNzM4IDczOSA3NDAgNzQxIDc0MiA3NDMgNzQ0IDc0NSA3NDYgNzQ3IDc0OCA3NDkgNzUwIDc1 MSA3NTIgNzUzIDc1NCA3NTUgNzU2IDc1NyA3NTggNzU5IDc2MCA3NjEgNzYyIDc2MyA3NjQgNzY1 IDc2NiA3NjcgNzY4IDc2OSA3NzAgNzcxIDc3MiA3NzMgNzc0IDc3NSA3NzYgNzc3IDc3OCA3Nzkg NzgwIDc4MSA3ODIgNzgzIDc4NCA3ODUgNzg2IDc4NyA3ODggNzg5IDc5MCA3OTEgNzkyIDc5MyA3 OTQgNzk1IDc5NiA3OTcgNzk4IDc5OSA4MDAgODAxIDgwMiA4MDMgODA0IDgwNSA4MDYgODA3IDgw OCA4MDkgODEwIDgxMSA4MTIgODEzIDgxNCA4MTUgODE2IDgxNyA4MTggODE5IDgyMCA4MjEgODIy IDgyMyA4MjQgODI1IDgyNiA4MjcgODI4IDgyOSA4MzAgODMxIDgzMiA4MzMgODM0IDgzNSA4MzYg ODM3IDgzOCA4MzkgODQwIDg0MSA4NDIgODQzIDg0NCA4NDUgODQ2IDg0NyA4NDggODQ5IDg1MCA4 NTEgODUyIDg1MyA4NTQgODU1IDg1NiA4NTcgODU4IDg1OSA4NjAgODYxIDg2MiA4NjMgODY0IDg2 NSA4NjYgODY3IDg2OCA4NjkgODcwIDg3MSA4NzIgODczIDg3NCA4NzUgODc2IDg3NyA4NzggODc5 IDg4MCA4ODEgODgyIDg4MyA4ODQgODg1IDg4NiA4ODcgODg4IDg4OSA4OTAgODkxIDg5MiA4OTMg ODk0IDg5NSA4OTYgODk3IDg5OCA4OTkgOTAwIDkwMSA5MDIgOTAzIDkwNCA5MDUgOTA2IDkwNyA5 MDggOTA5IDkxMCA5MTEgOTEyIDkxMyA5MTQgOTE1IDkxNiA5MTcgOTE4IDkxOSA5MjAgOTIxIDky MiA5MjMgOTI0IDkyNSA5MjYgOTI3IDkyOCA5MjkgOTMwIDkzMSA5MzIgOTMzIDkzNCA5MzUgOTM2 IDkzNyA5MzggOTM5IDk0MCA5NDEgOTQyIDk0MyA5NDQgOTQ1IDk0NiA5NDcgOTQ4IDk0OSA5NTAg OTUxIDk1MiA5NTMgOTU0IDk1NSA5NTYgOTU3IDk1OCA5NTkgOTYwIDk2MSA5NjIgOTYzIDk2NCA5 NjUgOTY2IDk2NyA5NjggOTY5IDk3MCA5NzEgOTcyIDk3MyA5NzQgOTc1IDk3NiA5NzcgOTc4IDk3 OSA5ODAgOTgxIDk4MiA5ODMgOTg0IDk4NSA5ODYgOTg3IDk4OCA5ODkgOTkwIDk5MSA5OTIgOTkz IDk5NCA5OTUgOTk2IDk5NyA5OTggOTk5IDEwMDApCisoMSByb3cpCisKK1NFTEVDVCAnYWRkX3Jh bmdlIGZvcmNlIHJlYWxsb2MgdGVzdCAxJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2Fk ZF9yYW5nZShOVUxMLCAwLCAyMDApKSBhcyByZXN1bHQ7CisgICAgICAgICAgICAgIHRlc3QgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIGFkZF9yYW5nZSBmb3JjZSByZWFsbG9jIHRlc3QgMSB8IChi IDAgMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEg MjIgMjMgMjQgMjUgMjYgMjcgMjggMjkgMzAgMzEgMzIgMzMgMzQgMzUgMzYgMzcgMzggMzkgNDAg NDEgNDIgNDMgNDQgNDUgNDYgNDcgNDggNDkgNTAgNTEgNTIgNTMgNTQgNTUgNTYgNTcgNTggNTkg NjAgNjEgNjIgNjMgNjQgNjUgNjYgNjcgNjggNjkgNzAgNzEgNzIgNzMgNzQgNzUgNzYgNzcgNzgg NzkgODAgODEgODIgODMgODQgODUgODYgODcgODggODkgOTAgOTEgOTIgOTMgOTQgOTUgOTYgOTcg OTggOTkgMTAwIDEwMSAxMDIgMTAzIDEwNCAxMDUgMTA2IDEwNyAxMDggMTA5IDExMCAxMTEgMTEy IDExMyAxMTQgMTE1IDExNiAxMTcgMTE4IDExOSAxMjAgMTIxIDEyMiAxMjMgMTI0IDEyNSAxMjYg MTI3IDEyOCAxMjkgMTMwIDEzMSAxMzIgMTMzIDEzNCAxMzUgMTM2IDEzNyAxMzggMTM5IDE0MCAx NDEgMTQyIDE0MyAxNDQgMTQ1IDE0NiAxNDcgMTQ4IDE0OSAxNTAgMTUxIDE1MiAxNTMgMTU0IDE1 NSAxNTYgMTU3IDE1OCAxNTkgMTYwIDE2MSAxNjIgMTYzIDE2NCAxNjUgMTY2IDE2NyAxNjggMTY5 IDE3MCAxNzEgMTcyIDE3MyAxNzQgMTc1IDE3NiAxNzcgMTc4IDE3OSAxODAgMTgxIDE4MiAxODMg MTg0IDE4NSAxODYgMTg3IDE4OCAxODkgMTkwIDE5MSAxOTIgMTkzIDE5NCAxOTUgMTk2IDE5NyAx OTggMTk5IDIwMCkKKygxIHJvdykKKworU0VMRUNUICdhZGRfcmFuZ2UgZm9jZSByZWFsbG9jIHRl c3QgMicgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19hZGRfcmFuZ2UoTlVMTCwgMTAwMCwg MTEwMCkpIGFzIHJlc3VsdDsKKyAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGFkZF9yYW5nZSBmb2NlIHJlYWxsb2MgdGVzdCAyIHwg KGIgMTAwMCAxMDAxIDEwMDIgMTAwMyAxMDA0IDEwMDUgMTAwNiAxMDA3IDEwMDggMTAwOSAxMDEw IDEwMTEgMTAxMiAxMDEzIDEwMTQgMTAxNSAxMDE2IDEwMTcgMTAxOCAxMDE5IDEwMjAgMTAyMSAx MDIyIDEwMjMgMTAyNCAxMDI1IDEwMjYgMTAyNyAxMDI4IDEwMjkgMTAzMCAxMDMxIDEwMzIgMTAz MyAxMDM0IDEwMzUgMTAzNiAxMDM3IDEwMzggMTAzOSAxMDQwIDEwNDEgMTA0MiAxMDQzIDEwNDQg MTA0NSAxMDQ2IDEwNDcgMTA0OCAxMDQ5IDEwNTAgMTA1MSAxMDUyIDEwNTMgMTA1NCAxMDU1IDEw NTYgMTA1NyAxMDU4IDEwNTkgMTA2MCAxMDYxIDEwNjIgMTA2MyAxMDY0IDEwNjUgMTA2NiAxMDY3 IDEwNjggMTA2OSAxMDcwIDEwNzEgMTA3MiAxMDczIDEwNzQgMTA3NSAxMDc2IDEwNzcgMTA3OCAx MDc5IDEwODAgMTA4MSAxMDgyIDEwODMgMTA4NCAxMDg1IDEwODYgMTA4NyAxMDg4IDEwODkgMTA5 MCAxMDkxIDEwOTIgMTA5MyAxMDk0IDEwOTUgMTA5NiAxMDk3IDEwOTggMTA5OSAxMTAwKQorKDEg cm93KQorCistLSBUZXN0IDEyOiBNZW1iZXJzaGlwIHR5cGVzCitTRUxFQ1QgJ21lbWJlcnNoaXAg ZW1wdHknIGFzIHRlc3QsIHRlc3RfYm1zX21lbWJlcnNoaXAoTlVMTCkgPSAwIGFzIHJlc3VsdDsK KyAgICAgICB0ZXN0ICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgbWVtYmVyc2hpcCBlbXB0eSB8IHQKKygxIHJvdykKKworU0VMRUNUICdtZW1iZXJzaGlwIHNp bmdsZXRvbicgYXMgdGVzdCwgdGVzdF9ibXNfbWVtYmVyc2hpcCh0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZWzQyXSkpID0gMSBhcyByZXN1bHQ7CisgICAgICAgICB0ZXN0ICAgICAgICAgfCByZXN1 bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgbWVtYmVyc2hpcCBzaW5nbGV0 b24gfCB0CisoMSByb3cpCisKK1NFTEVDVCAnbWVtYmVyc2hpcCBtdWx0aXBsZScgYXMgdGVzdCwg dGVzdF9ibXNfbWVtYmVyc2hpcCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMiwzXSkpID0g MiBhcyByZXN1bHQ7CisgICAgICAgIHRlc3QgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLQorIG1lbWJlcnNoaXAgbXVsdGlwbGUgfCB0CisoMSByb3cpCisK Ky0tIFRlc3QgMTM6IFNpbmdsZXRvbiBtZW1iZXIgZXh0cmFjdGlvbgorU0VMRUNUICdzaW5nbGV0 b25fbWVtYmVyIHZhbGlkJyBhcyB0ZXN0LCB0ZXN0X2Jtc19zaW5nbGV0b25fbWVtYmVyKHRlc3Rf Ym1zX2Zyb21fYXJyYXkoQVJSQVlbNDJdKSkgPSA0MiBhcyByZXN1bHQ7CisgICAgICAgICAgdGVz dCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQor IHNpbmdsZXRvbl9tZW1iZXIgdmFsaWQgfCB0CisoMSByb3cpCisKKy0tIFRlc3QgMTQ6IFNldCBp dGVyYXRpb24KK1dJVEggdGVzdF9zZXQgQVMgKFNFTEVDVCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFS UkFZWzUsMTAsMTUsMjBdKSBBUyBzZXRfbnVtYmVycykKK1NFTEVDVCAnbmV4dF9tZW1iZXIgZmly c3QnIGFzIHRlc3QsIHRlc3RfYm1zX25leHRfbWVtYmVyKHNldF9udW1iZXJzLCAtMSkgPSA1IGFz IHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAnbmV4dF9tZW1iZXIgc2Vj b25kJyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihzZXRfbnVtYmVycywgNSkgPSAxMCBh cyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ25leHRfbWVtYmVyIHBh c3QgZW5kJyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihzZXRfbnVtYmVycywgMjApID0g LTIgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICduZXh0X21lbWJl ciBlbXB0eSBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX25leHRfbWVtYmVyKE5VTEwsIC0xKSA9IC0y IGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAncHJldl9tZW1iZXIg bGFzdCcgYXMgdGVzdCwgdGVzdF9ibXNfcHJldl9tZW1iZXIoc2V0X251bWJlcnMsIDIxKSA9IDIw IGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAncHJldl9tZW1iZXIg cGVudWx0aW1hdGUnIGFzIHRlc3QsIHRlc3RfYm1zX3ByZXZfbWVtYmVyKHNldF9udW1iZXJzLCAy MCkgPSAxNSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ3ByZXZf bWVtYmVyIHBhc3QgYmVnaW5uaW5nJyBhcyB0ZXN0LCB0ZXN0X2Jtc19wcmV2X21lbWJlcihzZXRf bnVtYmVycywgNSkgPSAtMiBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxF Q1QgJ3ByZXZfbWVtYmVyIGVtcHR5IHNldCcgYXMgdGVzdCwgdGVzdF9ibXNfcHJldl9tZW1iZXIo TlVMTCwgMTAwKSA9IC0yIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0OworICAgICAgICAgICAgdGVz dCAgICAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLQorIG5leHRfbWVtYmVyIGZpcnN0ICAgICAgICAgIHwgdAorIG5leHRfbWVtYmVyIHNlY29u ZCAgICAgICAgIHwgdAorIG5leHRfbWVtYmVyIHBhc3QgZW5kICAgICAgIHwgdAorIG5leHRfbWVt YmVyIGVtcHR5IHNldCAgICAgIHwgdAorIHByZXZfbWVtYmVyIGxhc3QgICAgICAgICAgIHwgdAor IHByZXZfbWVtYmVyIHBlbnVsdGltYXRlICAgIHwgdAorIHByZXZfbWVtYmVyIHBhc3QgYmVnaW5u aW5nIHwgdAorIHByZXZfbWVtYmVyIGVtcHR5IHNldCAgICAgIHwgdAorKDggcm93cykKKworLS0g VGVzdCAxNTogSGFzaCBmdW5jdGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QK Kwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNWEsCisJdGVzdF9i bXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzViLAorCXRlc3RfYm1zX2Zyb21f YXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ2hhc2ggTlVMTCcgYXMg dGVzdCwgdGVzdF9ibXNfaGFzaF92YWx1ZShOVUxMKSA9IDAgYXMgcmVzdWx0IEZST00gdGVzdF9z ZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnaGFzaCBjb25zaXN0ZW5jeScgYXMgdGVzdCwgdGVzdF9i bXNfaGFzaF92YWx1ZShzZXRfMTM1YSkgPSB0ZXN0X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzViKSBh cyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdoYXNoIGRpZmZlcmVu dCBzZXRzJyBhcyB0ZXN0LCB0ZXN0X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzVhKSAhPSB0ZXN0X2Jt c19oYXNoX3ZhbHVlKHNldF8yNDYpIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0czsKKyAgICAgICAg dGVzdCAgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisg aGFzaCBOVUxMICAgICAgICAgICB8IHQKKyBoYXNoIGNvbnNpc3RlbmN5ICAgIHwgdAorIGhhc2gg ZGlmZmVyZW50IHNldHMgfCB0CisoMyByb3dzKQorCistLSBUZXN0IDE2OiBTZXQgb3ZlcmxhcAor V0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJS QVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMyw1LDdd KSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRf MjQ2CispCitTRUxFQ1QgJ292ZXJsYXAgZXhpc3RpbmcnIGFzIHRlc3QsIHRlc3RfYm1zX292ZXJs YXAoc2V0XzEzNSwgc2V0XzM1NykgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5J T04gQUxMCitTRUxFQ1QgJ292ZXJsYXAgbm9uZScgYXMgdGVzdCwgdGVzdF9ibXNfb3ZlcmxhcChz ZXRfMTM1LCBzZXRfMjQ2KSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04g QUxMCitTRUxFQ1QgJ292ZXJsYXAgd2l0aCBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19vdmVybGFw KE5VTEwsIHNldF8xMzUpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzOworICAgICAg IHRlc3QgICAgICAgIHwgcmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIG92 ZXJsYXAgZXhpc3RpbmcgIHwgdAorIG92ZXJsYXAgbm9uZSAgICAgIHwgdAorIG92ZXJsYXAgd2l0 aCBOVUxMIHwgdAorKDMgcm93cykKKworLS0gVGVzdCAxNzogU3Vic2V0IHJlbGF0aW9ucworV0lU SCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlb MSwzXSkgQVMgc2V0XzEzLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBz ZXRfMTM1LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0XSkgQVMgc2V0XzI0LAorCXRl c3RfYm1zX2FkZF9yYW5nZShOVUxMLCAwLCAzMSkgQVMgcm5nXzBfMzEsIC0tIDEgd29yZAorCXRl c3RfYm1zX2FkZF9yYW5nZShOVUxMLCAwLCA2MykgYXMgcm5nXzBfNjMgIC0tIDIgd29yZHMKKykK K1NFTEVDVCAnc3Vic2V0IE5VTEwgaXMgc3Vic2V0IG9mIGFsbCcgYXMgdGVzdCwgdGVzdF9ibXNf aXNfc3Vic2V0KE5VTEwsIHNldF8xMzUpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMK K1VOSU9OIEFMTAorU0VMRUNUICdzdWJzZXQgcHJvcGVyIHN1YnNldCcgYXMgdGVzdCwgdGVzdF9i bXNfaXNfc3Vic2V0KHNldF8xMywgc2V0XzEzNSkgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rf c2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ3N1YnNldCBpbXByb3BlciBzdWJzZXQnIGFzIHRlc3Qs IHRlc3RfYm1zX2lzX3N1YnNldChzZXRfMTM1LCBzZXRfMTMpID0gZmFsc2UgYXMgcmVzdWx0IEZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnc3Vic2V0IGRpc2pvaW50IHNldHMnIGFz IHRlc3QsIHRlc3RfYm1zX2lzX3N1YnNldChzZXRfMTMsIHNldF8yNCkgPSBmYWxzZSBhcyByZXN1 bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdzdWJzZXQgY29tcGFyaXNvbiBl ZGdlJyBhcyB0ZXN0LCB0ZXN0X2Jtc19pc19zdWJzZXQocm5nXzBfMzEsIHJuZ18wXzYzKSA9IHRy dWUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzOworICAgICAgICAgICAgIHRlc3QgICAgICAgICAg ICAgfCByZXN1bHQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBz dWJzZXQgTlVMTCBpcyBzdWJzZXQgb2YgYWxsIHwgdAorIHN1YnNldCBwcm9wZXIgc3Vic2V0ICAg ICAgICAgfCB0Cisgc3Vic2V0IGltcHJvcGVyIHN1YnNldCAgICAgICB8IHQKKyBzdWJzZXQgZGlz am9pbnQgc2V0cyAgICAgICAgIHwgdAorIHN1YnNldCBjb21wYXJpc29uIGVkZ2UgICAgICAgfCB0 CisoNSByb3dzKQorCistLSBUZXN0IDE4OiBDb3B5IG9wZXJhdGlvbnMKK1dJVEggdGVzdF9zZXQg QVMgKFNFTEVDVCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1LDddKSBBUyBvcmlnaW5h bCkKK1NFTEVDVCAnY29weSBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19jb3B5KE5VTEwpIElTIE5V TEwgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdjb3B5IGVxdWFs aXR5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChvcmlnaW5hbCwgdGVzdF9ibXNfY29weShvcmln aW5hbCkpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldDsKKyAgICAgdGVzdCAgICAgIHwg cmVzdWx0IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgY29weSBOVUxMICAgICB8IHQKKyBj b3B5IGVxdWFsaXR5IHwgdAorKDIgcm93cykKKworLS0gVGVzdCAxOTogQWRkIG1lbWJlcnMgb3Bl cmF0aW9uCitXSVRIIGJhc2Vfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9h cnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVs1 LDddKSBBUyBzZXRfNTcKKykKK1NFTEVDVCAnYWRkX21lbWJlcnMgb3BlcmF0aW9uJyBhcyB0ZXN0 LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9tZW1iZXJzKHNldF8xMywg c2V0XzU3KSkgPSBBUlJBWVsxLDMsNSw3XSBhcyByZXN1bHQKK0ZST00gYmFzZV9zZXRzOworICAg ICAgICAgdGVzdCAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tCisgYWRkX21lbWJlcnMgb3BlcmF0aW9uIHwgdAorKDEgcm93KQorCitTRUxFQ1QgJ2Fk ZCBtZW1iZXJzIGNvbXBsZXgnIGFzIHRlc3QsCisgICAgICAgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19h ZGRfbWVtYmVycygKKyAgICAgICAgICAgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0p LAorICAgICAgICAgICB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEwMCwyMDAsMzAwXSkKKyAg ICAgICApKSBhcyByZXN1bHQ7CisgICAgICAgIHRlc3QgICAgICAgICB8ICAgICAgICByZXN1bHQg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IGFkZCBtZW1iZXJzIGNvbXBsZXggfCAoYiAxIDMgNSAxMDAgMjAwIDMwMCkKKygxIHJvdykKKwor LS0gVGVzdCAyMDogVGVzdCBoYXNoIGNvbnNpc3RlbmN5CitXSVRIIHRlc3Rfc2V0cyBBUyAoCisg ICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzVf YSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNV9iLAorCXRl c3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ2Jp dG1hcF9oYXNoIE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfaGFzaChOVUxMKSA9 IDAgYXMgcmVzdWx0CitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX2hhc2ggY29uc2lzdGVuY3kn IGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfaGFzaChzZXRfMTM1X2EpID0gdGVzdF9iaXRt YXBfaGFzaChzZXRfMTM1X2IpIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAor U0VMRUNUICdiaXRtYXBfaGFzaCB2cyBibXNfaGFzaF92YWx1ZScgYXMgdGVzdCwKKyAgICAgICB0 ZXN0X2JpdG1hcF9oYXNoKHNldF8xMzVfYSkgPSB0ZXN0X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzVf YSkgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9o YXNoIGRpZmZlcmVudCBzZXRzJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX2hhc2goc2V0 XzEzNV9hKSAhPSB0ZXN0X2JpdG1hcF9oYXNoKHNldF8yNDYpIGFzIHJlc3VsdAorRlJPTSB0ZXN0 X3NldHM7CisgICAgICAgICAgICAgdGVzdCAgICAgICAgICAgICAgfCByZXN1bHQgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYml0bWFwX2hhc2ggTlVMTCAgICAg ICAgICAgICAgfCB0CisgYml0bWFwX2hhc2ggY29uc2lzdGVuY3kgICAgICAgfCB0CisgYml0bWFw X2hhc2ggdnMgYm1zX2hhc2hfdmFsdWUgfCB0CisgYml0bWFwX2hhc2ggZGlmZmVyZW50IHNldHMg ICAgfCB0CisoNCByb3dzKQorCistLSBUZXN0IDIxOiBiaXRtYXBfbWF0Y2ggZnVuY3Rpb24KK1dJ VEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzEsMyw1XSkgQVMgc2V0XzEzNV9hLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVd KSBBUyBzZXRfMTM1X2IsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNl dF8yNDYsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMKKykKK1NF TEVDVCAnYml0bWFwX21hdGNoIE5VTEwgTlVMTCAoc2hvdWxkIGJlIDApJyBhcyB0ZXN0LAorICAg ICAgIHRlc3RfYml0bWFwX21hdGNoKE5VTEwsIE5VTEwpID0gMCBhcyByZXN1bHQKK1VOSU9OIEFM TAorU0VMRUNUICdiaXRtYXBfbWF0Y2ggTlVMTCBzZXQgKHNob3VsZCBiZSAxKScgYXMgdGVzdCwK KyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaChOVUxMLCBzZXRfMTM1X2EpID0gMSBhcyByZXN1bHQK K0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIHNldCBOVUxM IChzaG91bGQgYmUgMSknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEz NV9hLCBOVUxMKSA9IDEgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxF Q1QgJ2JpdG1hcF9tYXRjaCBpZGVudGljYWwgc2V0cyAoc2hvdWxkIGJlIDApJyBhcyB0ZXN0LAor ICAgICAgIHRlc3RfYml0bWFwX21hdGNoKHNldF8xMzVfYSwgc2V0XzEzNV9iKSA9IDAgYXMgcmVz dWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBkaWZm ZXJlbnQgc2V0cyAoc2hvdWxkIGJlIDEpJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX21h dGNoKHNldF8xMzVfYSwgc2V0XzI0NikgPSAxIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VO SU9OIEFMTAorU0VMRUNUICdiaXRtYXBfbWF0Y2ggc3Vic2V0L3N1cGVyc2V0IChzaG91bGQgYmUg MSknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzLCBzZXRfMTM1X2Ep ID0gMSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworICAgICAgICAgICAgICAgICAgICB0ZXN0 ICAgICAgICAgICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgYml0bWFwX21hdGNoIE5VTEwgTlVMTCAoc2hv dWxkIGJlIDApICAgICAgIHwgdAorIGJpdG1hcF9tYXRjaCBOVUxMIHNldCAoc2hvdWxkIGJlIDEp ICAgICAgICB8IHQKKyBiaXRtYXBfbWF0Y2ggc2V0IE5VTEwgKHNob3VsZCBiZSAxKSAgICAgICAg fCB0CisgYml0bWFwX21hdGNoIGlkZW50aWNhbCBzZXRzIChzaG91bGQgYmUgMCkgIHwgdAorIGJp dG1hcF9tYXRjaCBkaWZmZXJlbnQgc2V0cyAoc2hvdWxkIGJlIDEpICB8IHQKKyBiaXRtYXBfbWF0 Y2ggc3Vic2V0L3N1cGVyc2V0IChzaG91bGQgYmUgMSkgfCB0CisoNiByb3dzKQorCistLSBUZXN0 IHJlbGF0aW9uc2hpcCB3aXRoIGJtc19lcXVhbAorV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNF TEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2EsCisJ dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0ZXN0X2Jt c19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdiaXRtYXBf bWF0Y2ggdnMgYm1zX2VxdWFsIChlcXVhbCBzZXRzKScgYXMgdGVzdCwKKyAgICAgICAodGVzdF9i aXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRfMTM1X2IpID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChz ZXRfMTM1X2EsIHNldF8xMzVfYikgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxM CitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCB2cyBibXNfZXF1YWwgKGRpZmZlcmVudCBzZXRzKScgYXMg dGVzdCwKKyAgICAgICAodGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRfMjQ2KSA9IDAp ID0gdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBzZXRfMjQ2KSBhcyByZXN1bHQKK0ZST00gdGVz dF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIHZzIGJtc19lcXVhbCAoTlVM TCBjYXNlcyknIGFzIHRlc3QsCisgICAgICAgKHRlc3RfYml0bWFwX21hdGNoKE5VTEwsIE5VTEwp ID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChOVUxMLCBOVUxMKSBhcyByZXN1bHQKK0ZST00gdGVzdF9z ZXRzOworICAgICAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgICB8IHJlc3Vs dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t CisgYml0bWFwX21hdGNoIHZzIGJtc19lcXVhbCAoZXF1YWwgc2V0cykgICAgIHwgdAorIGJpdG1h cF9tYXRjaCB2cyBibXNfZXF1YWwgKGRpZmZlcmVudCBzZXRzKSB8IHQKKyBiaXRtYXBfbWF0Y2gg dnMgYm1zX2VxdWFsIChOVUxMIGNhc2VzKSAgICAgfCB0CisoMyByb3dzKQorCistLSBUZXN0IHNw ZWNpZmljIG1hdGNoIHZhbHVlcyBmb3IgZGVidWdnaW5nCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBb MSwzLDVdIHZzIFsxLDMsNV0nIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2godGVz dF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pLCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzEsMyw1XSkpIGFzIG1hdGNoX3ZhbHVlOworICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAg ICAgfCBtYXRjaF92YWx1ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYml0bWFwX21hdGNoIFsxLDMsNV0gdnMgWzEsMyw1XSB8ICAgICAgICAgICAw CisoMSByb3cpCisKK1NFTEVDVCAnYml0bWFwX21hdGNoIFsxLDMsNV0gdnMgWzIsNCw2XScgYXMg dGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzEsMyw1XSksIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSkgYXMgbWF0Y2hfdmFs dWU7CisgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgICB8IG1hdGNoX3ZhbHVlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiaXRtYXBfbWF0 Y2ggWzEsMyw1XSB2cyBbMiw0LDZdIHwgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gVGVzdCBl ZGdlIGNhc2VzCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBlbXB0eSBhcnJheXMnIGFzIHRlc3QsCisg ICAgICAgdGVzdF9iaXRtYXBfbWF0Y2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVtdOjppbnRl Z2VyW10pLCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZW106OmludGVnZXJbXSkpID0gMCBhcyBy ZXN1bHQ7CisgICAgICAgICAgIHRlc3QgICAgICAgICAgICB8IHJlc3VsdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGJpdG1hcF9tYXRjaCBlbXB0eSBhcnJheXMgfCB0 CisoMSByb3cpCisKKy0tIFRlc3QgMjI6IE92ZXJsYXAgbGlzdHMgd2l0aCB2YXJpb3VzIHNjZW5h cmlvcworV0lUSCB0ZXN0X2xpc3RzIEFTICgKKyAgICBTRUxFQ1QgQVJSQVlbCisgICAgICAgIHRl c3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwyLDNdKSwKKyAgICAgICAgdGVzdF9ibXNfZnJvbV9h cnJheShBUlJBWVs0LDUsNl0pLAorICAgICAgICB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzcs OCw5XSksCisgICAgICAgIHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDIpICAtLSBUaGlzIHNob3Vs ZCBvdmVybGFwIHdpdGggZmlyc3Qgc2V0CisgICAgXSBhcyBibXNfbGlzdAorKQorU0VMRUNUICdv dmVybGFwIGxpc3QgY29tcGxleCcgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc19vdmVybGFwX2xp c3QodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDEwXSksIGJtc19saXN0KSBhcyByZXN1bHQK K0ZST00gdGVzdF9saXN0czsKKyAgICAgICAgIHRlc3QgICAgICAgICB8IHJlc3VsdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBvdmVybGFwIGxpc3QgY29tcGxleCB8IGYKKygx IHJvdykKKworU0VMRUNUICdvdmVybGFwIGVtcHR5IGxpc3QnIGFzIHRlc3QsCisgICAgICAgdGVz dF9ibXNfb3ZlcmxhcF9saXN0KHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDEpLCBBUlJBWVtdOjp0 ZXh0W10pIGFzIHJlc3VsdDsKKyAgICAgICAgdGVzdCAgICAgICAgfCByZXN1bHQgCistLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIG92ZXJsYXAgZW1wdHkgbGlzdCB8IGYKKygxIHJvdykK KworLS0gVGVzdCAyMzogUmFuZG9tIG9wZXJhdGlvbnMgc3RyZXNzIHRlc3QKK1NFTEVDVCAncmFu ZG9tIG9wZXJhdGlvbnMnIGFzIHRlc3QsIHRlc3RfcmFuZG9tX29wZXJhdGlvbnMoLTEsIDEwMDAw LCA4MTkyMCwgMCkgPiAwIGFzIHJlc3VsdDsKKyAgICAgICB0ZXN0ICAgICAgICB8IHJlc3VsdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyByYW5kb20gb3BlcmF0aW9ucyB8IHQKKygx IHJvdykKKworLS0gRVJST1IgQ09ORElUSU9OIFRFU1RTCistLSBUZXN0IDI0OiBFcnJvciBjb25k aXRpb25zICh0aGVzZSBzaG91bGQgcHJvZHVjZSBFUlJPUnMpCitTRUxFQ1QgdGVzdF9ibXNfbWFr ZV9zaW5nbGV0b24oLTEpOworRVJST1I6ICBuZWdhdGl2ZSBiaXRtYXBzZXQgbWVtYmVyIG5vdCBh bGxvd2VkCitTRUxFQ1QgdGVzdF9ibXNfYWRkX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRv bigxKSwgLTEpOworRVJST1I6ICBuZWdhdGl2ZSBiaXRtYXBzZXQgbWVtYmVyIG5vdCBhbGxvd2Vk CitTRUxFQ1QgdGVzdF9ibXNfaXNfbWVtYmVyKE5VTEwsIC01KTsKK0VSUk9SOiAgbmVnYXRpdmUg Yml0bWFwc2V0IG1lbWJlciBub3QgYWxsb3dlZAorU0VMRUNUIHRlc3RfYm1zX2FkZF9tZW1iZXIo TlVMTCwgLTEwKTsKK0VSUk9SOiAgbmVnYXRpdmUgYml0bWFwc2V0IG1lbWJlciBub3QgYWxsb3dl ZAorU0VMRUNUIHRlc3RfYm1zX2RlbF9tZW1iZXIoTlVMTCwgLTIwKTsKK0VSUk9SOiAgbmVnYXRp dmUgYml0bWFwc2V0IG1lbWJlciBub3QgYWxsb3dlZAorU0VMRUNUIHRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCAtNSwgMTApOworRVJST1I6ICBuZWdhdGl2ZSBiaXRtYXBzZXQgbWVtYmVyIG5vdCBh bGxvd2VkCitTRUxFQ1QgdGVzdF9ibXNfc2luZ2xldG9uX21lbWJlcih0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZWzEsMl0pKTsKK0VSUk9SOiAgYml0bWFwc2V0IGhhcyBtdWx0aXBsZSBtZW1iZXJz CitTRUxFQ1QgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19hZGRfbWVtYmVyKE5VTEwsIDEwMDApKTsKKyBi bXNfdmFsdWVzIAorLS0tLS0tLS0tLS0tCisgKGIgMTAwMCkKKygxIHJvdykKKworRFJPUCBFWFRF TlNJT04gdGVzdF9iaXRtYXBzZXQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf Yml0bWFwc2V0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9t ZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODQ4Zjdh NDRlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LTIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RfYml0bWFwc2V0X3Nv dXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfYml0bWFwc2V0LmMnLAorKQorCitpZiBob3N0X3N5c3Rl bSA9PSAnd2luZG93cycKKyAgdGVzdF9iaXRtYXBzZXRfc291cmNlcyArPSByY19saWJfZ2VuLnBy b2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3RfYml0 bWFwc2V0JywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0X2JpdG1hcHNldCAtIHRlc3QgY29kZSBm b3Igc3JjL2luY2x1ZGUvbm9kZXMvYml0bWFwc2V0LmgnLF0pCitlbmRpZgorCit0ZXN0X2JpdG1h cHNldCA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfYml0bWFwc2V0JywKKyAgdGVzdF9iaXRtYXBzZXRf c291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVzdF9pbnN0YWxsX2xp YnMgKz0gdGVzdF9iaXRtYXBzZXQKKwordGVzdF9pbnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0 ZXN0X2JpdG1hcHNldC5jb250cm9sJywKKyAgJ3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsJywKKykK KwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2JpdG1hcHNldCcsCisgICdzZCc6IG1lc29u LmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2Rpcigp LAorICAncmVncmVzcyc6IHsKKyAgICAnc3FsJzogWworICAgICAgJ3Rlc3RfYml0bWFwc2V0JywK KyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1h cHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1h cHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4yZWM1ZmRhOWZiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9iaXRtYXBzZXQvc3FsL3Rlc3RfYml0bWFwc2V0LnNxbApAQCAtMCwwICsxLDQxMyBA QAorQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHRlc3RfYml0bWFwc2V0OworCistLSBC QVNJQyBGVU5DVElPTkFMSVRZIFRFU1RTCisKKy0tIFRlc3QgYm1zX3ZhbHVlcyBmdW5jdGlvbgor CitTRUxFQ1QgJ3ZhbHVlcyBOVUxMJyBhcyB0ZXN0LCBibXNfdmFsdWVzKE5VTEwpIGFzIHJlc3Vs dDsKK1NFTEVDVCAndmFsdWVzIGVtcHR5JyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbXTo6aW50ZWdlcltdKSkgYXMgcmVzdWx0OworU0VMRUNUICd2YWx1ZXMg c2luZ2xldG9uJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDQy KSkgYXMgcmVzdWx0OworU0VMRUNUICd2YWx1ZXMgc21hbGwgc2V0JyBhcyB0ZXN0LCBibXNfdmFs dWVzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSkgYXMgcmVzdWx0OworU0VMRUNU ICd2YWx1ZXMgbGFyZ2VyIHNldCcgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19mcm9tX2Fy cmF5KEFSUkFZWzAsNSwxMCwxNSwyMF0pKSBhcyByZXN1bHQ7CitTRUxFQ1QgJ3ZhbHVlcyB1bnNv cnRlZCBpbnB1dCcgYXMgdGVzdCwgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZ WzIwLDUsMTUsMCwxMF0pKSBhcyByZXN1bHQ7CisKKy0tIFRlc3QgMTogQmFzaWMgdXRpbGl0eSBm dW5jdGlvbnMKK1NFTEVDVCAnTlVMTCBpbnB1dCB0byBmcm9tX2FycmF5JyBhcyB0ZXN0LCB0ZXN0 X2Jtc19mcm9tX2FycmF5KE5VTEwpIElTIE5VTEwgYXMgcmVzdWx0OworU0VMRUNUICdFbXB0eSBh cnJheSB0byBmcm9tX2FycmF5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZW106 OmludGVnZXJbXSkgSVMgTlVMTCBhcyByZXN1bHQ7CitTRUxFQ1QgJ05VTEwgaW5wdXQgdG8gdG9f YXJyYXknIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KE5VTEwpIElTIE5VTEwgYXMgcmVzdWx0 OworCistLSBUZXN0IDI6IFNpbmdsZXRvbiBvcGVyYXRpb25zCitTRUxFQ1QgJ21ha2Vfc2luZ2xl dG9uKDQyKScgYXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfbWFrZV9zaW5nbGV0 b24oNDIpKSA9IEFSUkFZWzQyXSBhcyByZXN1bHQ7CitTRUxFQ1QgJ21ha2Vfc2luZ2xldG9uKDAp JyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigwKSkg PSBBUlJBWVswXSBhcyByZXN1bHQ7CitTRUxFQ1QgJ21ha2Vfc2luZ2xldG9uKDEwMDApJyBhcyB0 ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMDAwKSkgPSBB UlJBWVsxMDAwXSBhcyByZXN1bHQ7CisKKy0tIFRlc3QgMzogQWRkIG1lbWJlciBvcGVyYXRpb25z CitTRUxFQ1QgJ2FkZF9tZW1iZXIoTlVMTCwgMTApJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJh eSh0ZXN0X2Jtc19hZGRfbWVtYmVyKE5VTEwsIDEwKSkgPSBBUlJBWVsxMF0gYXMgcmVzdWx0Owor U0VMRUNUICdhZGRfbWVtYmVyIGNvbnNpc3RlbmN5JyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3Rf Ym1zX2FkZF9tZW1iZXIoTlVMTCwgMTApKSBhcyB2YWx1ZXM7CitTRUxFQ1QgJ2FkZF9tZW1iZXIg dG8gZXhpc3RpbmcnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9tZW1i ZXIodGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oNSksIDEwKSkgPSBBUlJBWVs1LDEwXSBhcyByZXN1 bHQ7CitTRUxFQ1QgJ2FkZF9tZW1iZXIgc29ydGVkJyBhcyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJh eSh0ZXN0X2Jtc19hZGRfbWVtYmVyKHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDEwKSwgNSkpID0g QVJSQVlbNSwxMF0gYXMgcmVzdWx0OworU0VMRUNUICdhZGRfbWVtYmVyIGlkZW1wb3RlbnQnIGFz IHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfYWRkX21lbWJlcih0ZXN0X2Jtc19tYWtlX3Npbmds ZXRvbigxMCksIDEwKSkgYXMgdmFsdWVzOworCisKKy0tIFRlc3QgNDogRGVsZXRlIG1lbWJlciBv cGVyYXRpb25zCitTRUxFQ1QgJ2RlbF9tZW1iZXIgZnJvbSBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jt c19kZWxfbWVtYmVyKE5VTEwsIDEwKSBJUyBOVUxMIGFzIHJlc3VsdDsKK1NFTEVDVCAnZGVsX21l bWJlciBzaW5nbGV0b24gYmVjb21lcyBlbXB0eScgYXMgdGVzdCwgdGVzdF9ibXNfZGVsX21lbWJl cih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDEwKSBJUyBOVUxMIGFzIHJlc3VsdDsKK1NF TEVDVCAnZGVsX21lbWJlciBubyBjaGFuZ2UnIGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNf ZGVsX21lbWJlcih0ZXN0X2Jtc19tYWtlX3NpbmdsZXRvbigxMCksIDUpKSBhcyB2YWx1ZXM7CitT RUxFQ1QgJ2RlbF9tZW1iZXIgZnJvbSBtaWRkbGUnIGFzIHRlc3QsIHRlc3RfYm1zX3RvX2FycmF5 KHRlc3RfYm1zX2RlbF9tZW1iZXIodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDIsM10pLCAy KSkgPSBBUlJBWVsxLDNdIGFzIHJlc3VsdDsKK1NFTEVDVCAnZGVsX21lbWJlciB0cmlnZ2VycyBy ZWFsbG9jJyBhcyB0ZXN0LCB0ZXN0X2Jtc19kZWxfbWVtYmVyKHRlc3RfYm1zX2RlbF9tZW1iZXIo dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVswLDMxLDMyLDYzLDY0XSksIDMyKSwgNjMpIGFzIHJl c3VsdDsKK1NFTEVDVCAnZGVsX21lbWJlciB3b3JkIGJvdW5kYXJ5JyBhcyB0ZXN0LAorICAgICAg IGJtc192YWx1ZXModGVzdF9ibXNfZGVsX21lbWJlcigKKyAgICAgICAgICAgdGVzdF9ibXNfYWRk X3JhbmdlKE5VTEwsIDMwLCAzNCksCisgICAgICAgICAgIDMyCisgICAgICAgKSkgYXMgcmVzdWx0 OworCistLSBTRVQgT1BFUkFUSU9OUyBURVNUUworCistLSBUZXN0IDU6IFVuaW9uIG9wZXJhdGlv bnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzMs NSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMg c2V0XzI0NgorKQorU0VMRUNUICd1bmlvbiBvdmVybGFwcGluZyBzZXRzJyBhcyB0ZXN0LAorICAg ICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX3VuaW9uKHNldF8xMzUsIHNldF8zNTcpKSA9 IEFSUkFZWzEsMyw1LDddIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VM RUNUICd1bmlvbiB3aXRoIE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfdG9fYXJyYXko dGVzdF9ibXNfdW5pb24oc2V0XzEzNSwgTlVMTCkpID0gQVJSQVlbMSwzLDVdIGFzIHJlc3VsdAor RlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICd1bmlvbiBOVUxMIHdpdGggTlVMTCcg YXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc191bmlvbihOVUxMLCBOVUxMKSBJUyBOVUxMIGFzIHJl c3VsdAorRlJPTSB0ZXN0X3NldHM7CitTRUxFQ1QgJ292ZXJsYXBwaW5nIHJhbmdlcycgYXMgdGVz dCwKKyAgICAgICBibXNfdmFsdWVzKHRlc3RfYm1zX3VuaW9uKAorICAgICAgICAgICB0ZXN0X2Jt c19hZGRfcmFuZ2UoTlVMTCwgNTAsIDE1MCksCisgICAgICAgICAgIHRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCAxMDAsIDIwMCkKKyAgICAgICApKSBhcyByZXN1bHQ7CisKKy0tIFRlc3QgNjogSW50 ZXJzZWN0aW9uIG9wZXJhdGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19m cm9tX2FycmF5KEFSUkFZWzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdpbnRlcnNlY3Qgb3ZlcmxhcHBp bmcgc2V0cycgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19pbnRl cnNlY3Qoc2V0XzEzNSwgc2V0XzM1NykpID0gQVJSQVlbMyw1XSBhcyByZXN1bHQKK0ZST00gdGVz dF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnaW50ZXJzZWN0IGRpc2pvaW50IHNldHMnIGFzIHRl c3QsCisgICAgICAgdGVzdF9ibXNfaW50ZXJzZWN0KHNldF8xMzUsIHNldF8yNDYpIElTIE5VTEwg YXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2ludGVyc2VjdCB3 aXRoIE5VTEwnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfaW50ZXJzZWN0KHNldF8xMzUsIE5V TEwpIElTIE5VTEwgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0czsKKworLS0gVGVzdCBibXNfaW50 X21lbWJlcnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9t X2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFS UkFZWzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2 XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdpbnQoZXJzZWN0KSBvdmVybGFwcGluZyBzZXRzJyBh cyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2ludF9tZW1iZXJzKHNl dF8xMzUsIHNldF8zNTcpKSA9IEFSUkFZWzMsNV0gYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cwor VU5JT04gQUxMCitTRUxFQ1QgJ2ludChlcnNlY3QpIGRpc2pvaW50IHNldHMnIGFzIHRlc3QsCisg ICAgICAgdGVzdF9ibXNfaW50X21lbWJlcnMoc2V0XzEzNSwgc2V0XzI0NikgSVMgTlVMTCBhcyBy ZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnaW50KGVyc2VjdCkgd2l0 aCBOVUxMJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX2ludF9tZW1iZXJzKHNldF8xMzUsIE5V TEwpIElTIE5VTEwgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0czsKK1NFTEVDVCAnaW50KGVyc2Vj dCkgbWVtYmVycycgYXMgdGVzdCwKKyAgICAgICBibXNfdmFsdWVzKHRlc3RfYm1zX2ludF9tZW1i ZXJzKAorICAgICAgICAgICB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzAsMzEsMzIsNjMsNjRd KSwKKyAgICAgICAgICAgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVszMSwzMiw2NCw2NV0pCisg ICAgICAgKSkgYXMgcmVzdWx0OworCistLSBUZXN0IDc6IERpZmZlcmVuY2Ugb3BlcmF0aW9ucwor V0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJS QVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMyw1LDdd KSBBUyBzZXRfMzU3LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRf MjQ2CispCitTRUxFQ1QgJ2RpZmZlcmVuY2Ugb3ZlcmxhcHBpbmcgc2V0cycgYXMgdGVzdCwKKyAg ICAgICB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19kaWZmZXJlbmNlKHNldF8xMzUsIHNldF8z NTcpKSA9IEFSUkFZWzFdIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VM RUNUICdkaWZmZXJlbmNlIGRpc2pvaW50IHNldHMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNf dG9fYXJyYXkodGVzdF9ibXNfZGlmZmVyZW5jZShzZXRfMTM1LCBzZXRfMjQ2KSkgPSBBUlJBWVsx LDMsNV0gYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2RpZmZl cmVuY2UgaWRlbnRpY2FsIHNldHMnIGFzIHRlc3QsCisgICAgICAgdGVzdF9ibXNfZGlmZmVyZW5j ZShzZXRfMTM1LCBzZXRfMTM1KSBJUyBOVUxMIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHM7CitT RUxFQ1QgJ2RpZmZlcmVuY2Ugc3VidHJhY3Rpb24gZWRnZSBjYXNlJyBhcyB0ZXN0LAorICAgICAg IGJtc192YWx1ZXModGVzdF9ibXNfZGlmZmVyZW5jZSgKKyAgICAgICAgICAgdGVzdF9ibXNfYWRk X3JhbmdlKE5VTEwsIDAsIDEwMCksCisgICAgICAgICAgIHRlc3RfYm1zX2FkZF9yYW5nZShOVUxM LCA1MCwgMTUwKQorICAgICAgICkpIGFzIHJlc3VsdDsKK1NFTEVDVCAnZGlmZmVyZW5jZSBzdWJ0 cmFjdCB0byBlbXB0eScgYXMgdGVzdCwKKyAgICAgICBibXNfdmFsdWVzKHRlc3RfYm1zX2RpZmZl cmVuY2UoCisgICAgICAgICAgIHRlc3RfYm1zX21ha2Vfc2luZ2xldG9uKDQyKSwKKyAgICAgICAg ICAgdGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oNDIpCisgICAgICAgKSkgYXMgcmVzdWx0OworCist LSBNRU1CRVJTSElQIEFORCBDT01QQVJJU09OIFRFU1RTCisKKy0tIFRlc3QgODogTWVtYmVyc2hp cCB0ZXN0cworV0lUSCB0ZXN0X3NldCBBUyAoU0VMRUNUIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJS QVlbMSwzLDVdKSBBUyBzZXRfMTM1KQorU0VMRUNUICdpc19tZW1iZXIgZXhpc3RpbmcnIGFzIHRl c3QsIHRlc3RfYm1zX2lzX21lbWJlcihzZXRfMTM1LCAxKSA9IHRydWUgYXMgcmVzdWx0IEZST00g dGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdpc19tZW1iZXIgbWlzc2luZycgYXMgdGVzdCwg dGVzdF9ibXNfaXNfbWVtYmVyKHNldF8xMzUsIDIpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVz dF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdpc19tZW1iZXIgZXhpc3RpbmcgbWlkZGxlJyBhcyB0 ZXN0LCB0ZXN0X2Jtc19pc19tZW1iZXIoc2V0XzEzNSwgMykgPSB0cnVlIGFzIHJlc3VsdCBGUk9N IHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAnaXNfbWVtYmVyIE5VTEwgc2V0JyBhcyB0ZXN0 LCB0ZXN0X2Jtc19pc19tZW1iZXIoTlVMTCwgMSkgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0 X3NldDsKKworLS0gVGVzdCA5OiBTZXQgY2FyZGluYWxpdHkKK1NFTEVDVCAnbnVtX21lbWJlcnMg TlVMTCcgYXMgdGVzdCwgdGVzdF9ibXNfbnVtX21lbWJlcnMoTlVMTCkgPSAwIGFzIHJlc3VsdDsK K1NFTEVDVCAnbnVtX21lbWJlcnMgc21hbGwgc2V0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19udW1fbWVt YmVycyh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkpID0gMyBhcyByZXN1bHQ7CitT RUxFQ1QgJ251bV9tZW1iZXJzIGxhcmdlciBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX251bV9tZW1i ZXJzKHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDYsOCwxMF0pKSA9IDUgYXMgcmVzdWx0 OworCistLSBUZXN0IDEwOiBTZXQgZXF1YWxpdHkgYW5kIGNvbXBhcmlzb24KK1dJVEggdGVzdF9z ZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkg QVMgc2V0XzEzNV9hLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRf MTM1X2IsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsyLDQsNl0pIEFTIHNldF8yNDYsCisJ dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMKKykKK1NFTEVDVCAnZXF1 YWwgTlVMTCBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChOVUxMLCBOVUxMKSA9IHRydWUg YXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnZXF1YWwgTlVMTCBz ZXQnIGFzIHRlc3QsIHRlc3RfYm1zX2VxdWFsKE5VTEwsIHNldF8xMzVfYSkgPSBmYWxzZSBhcyBy ZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdlcXVhbCBzZXQgTlVMTCcg YXMgdGVzdCwgdGVzdF9ibXNfZXF1YWwoc2V0XzEzNV9hLCBOVUxMKSA9IGZhbHNlIGFzIHJlc3Vs dCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2VxdWFsIGlkZW50aWNhbCBzZXRz JyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8xMzVfYikgPSB0cnVlIGFz IHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2VxdWFsIGRpZmZlcmVu dCBzZXRzJyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8yNDYpID0gZmFs c2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBO VUxMIE5VTEwnIGFzIHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoTlVMTCwgTlVMTCkgPSAwIGFzIHJl c3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgTlVMTCBzZXQn IGFzIHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoTlVMTCwgc2V0XzEzKSA9IC0xIGFzIHJlc3VsdCBG Uk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2NvbXBhcmUgc2V0IE5VTEwnIGFzIHRl c3QsIHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzLCBOVUxMKSA9IDEgYXMgcmVzdWx0IEZST00gdGVz dF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBlcXVhbCBzZXRzJyBhcyB0ZXN0LCB0 ZXN0X2Jtc19jb21wYXJlKHNldF8xMywgc2V0XzEzKSA9IDAgYXMgcmVzdWx0IEZST00gdGVzdF9z ZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBzdWJzZXQgc3VwZXJzZXQnIGFzIHRlc3Qs IHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzLCBzZXRfMTM1X2EpID0gLTEgYXMgcmVzdWx0IEZST00g dGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnY29tcGFyZSBzdXBlcnNldCBzdWJzZXQnIGFz IHRlc3QsIHRlc3RfYm1zX2NvbXBhcmUoc2V0XzEzNV9hLCBzZXRfMTMpID0gMSBhcyByZXN1bHQg RlJPTSB0ZXN0X3NldHM7CitTRUxFQ1QgJ2NvbXBhcmUgZWRnZSBjYXNlJyBhcyB0ZXN0LAorICAg ICAgIHRlc3RfYm1zX2NvbXBhcmUoCisgICAgICAgICAgIHRlc3RfYm1zX2FkZF9yYW5nZShOVUxM LCAwLCA2MyksCisgICAgICAgICAgIHRlc3RfYm1zX2FkZF9yYW5nZShOVUxMLCAwLCA2NCkKKyAg ICAgICApIGFzIHJlc3VsdDsKKworLS0gQURWQU5DRUQgT1BFUkFUSU9OUyBURVNUUworCistLSBU ZXN0IDExOiBSYW5nZSBvcGVyYXRpb25zCitTRUxFQ1QgJ2FkZF9yYW5nZSBiYXNpYycgYXMgdGVz dCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDUsIDcpKSA9IEFS UkFZWzUsNiw3XSBhcyByZXN1bHQ7CitTRUxFQ1QgJ2FkZF9yYW5nZSBzaW5nbGUgZWxlbWVudCcg YXMgdGVzdCwgdGVzdF9ibXNfdG9fYXJyYXkodGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDUsIDUp KSA9IEFSUkFZWzVdIGFzIHJlc3VsdDsKK1NFTEVDVCAnYWRkX3JhbmdlIHRvIGV4aXN0aW5nJyBh cyB0ZXN0LCB0ZXN0X2Jtc190b19hcnJheSh0ZXN0X2Jtc19hZGRfcmFuZ2UodGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVsxLDEwXSksIDUsIDcpKSA9IEFSUkFZWzEsNSw2LDcsMTBdIGFzIHJlc3Vs dDsKK1NFTEVDVCAnYWRkX3JhbmdlIGF0IHdvcmQgYm91bmRhcnkgMzEnIGFzIHRlc3QsIGJtc192 YWx1ZXModGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDMwLCAzNCkpIGFzIHJlc3VsdDsKK1NFTEVD VCAnYWRkX3JhbmdlIGF0IHdvcmQgYm91bmRhcnkgNjMnIGFzIHRlc3QsIGJtc192YWx1ZXModGVz dF9ibXNfYWRkX3JhbmdlKE5VTEwsIDYyLCA2NikpIGFzIHJlc3VsdDsKK1NFTEVDVCAnYWRkX3Jh bmdlIGxhcmdlIHJhbmdlJyBhcyB0ZXN0LCBibXNfdmFsdWVzKHRlc3RfYm1zX2FkZF9yYW5nZShO VUxMLCAwLCAxMDAwKSkgYXMgcmVzdWx0OworU0VMRUNUICdhZGRfcmFuZ2UgZm9yY2UgcmVhbGxv YyB0ZXN0IDEnIGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDAs IDIwMCkpIGFzIHJlc3VsdDsKK1NFTEVDVCAnYWRkX3JhbmdlIGZvY2UgcmVhbGxvYyB0ZXN0IDIn IGFzIHRlc3QsIGJtc192YWx1ZXModGVzdF9ibXNfYWRkX3JhbmdlKE5VTEwsIDEwMDAsIDExMDAp KSBhcyByZXN1bHQ7CisKKy0tIFRlc3QgMTI6IE1lbWJlcnNoaXAgdHlwZXMKK1NFTEVDVCAnbWVt YmVyc2hpcCBlbXB0eScgYXMgdGVzdCwgdGVzdF9ibXNfbWVtYmVyc2hpcChOVUxMKSA9IDAgYXMg cmVzdWx0OworU0VMRUNUICdtZW1iZXJzaGlwIHNpbmdsZXRvbicgYXMgdGVzdCwgdGVzdF9ibXNf bWVtYmVyc2hpcCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzQyXSkpID0gMSBhcyByZXN1bHQ7 CitTRUxFQ1QgJ21lbWJlcnNoaXAgbXVsdGlwbGUnIGFzIHRlc3QsIHRlc3RfYm1zX21lbWJlcnNo aXAodGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDIsM10pKSA9IDIgYXMgcmVzdWx0OworCist LSBUZXN0IDEzOiBTaW5nbGV0b24gbWVtYmVyIGV4dHJhY3Rpb24KK1NFTEVDVCAnc2luZ2xldG9u X21lbWJlciB2YWxpZCcgYXMgdGVzdCwgdGVzdF9ibXNfc2luZ2xldG9uX21lbWJlcih0ZXN0X2Jt c19mcm9tX2FycmF5KEFSUkFZWzQyXSkpID0gNDIgYXMgcmVzdWx0OworCistLSBUZXN0IDE0OiBT ZXQgaXRlcmF0aW9uCitXSVRIIHRlc3Rfc2V0IEFTIChTRUxFQ1QgdGVzdF9ibXNfZnJvbV9hcnJh eShBUlJBWVs1LDEwLDE1LDIwXSkgQVMgc2V0X251bWJlcnMpCitTRUxFQ1QgJ25leHRfbWVtYmVy IGZpcnN0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihzZXRfbnVtYmVycywgLTEpID0g NSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ25leHRfbWVtYmVy IHNlY29uZCcgYXMgdGVzdCwgdGVzdF9ibXNfbmV4dF9tZW1iZXIoc2V0X251bWJlcnMsIDUpID0g MTAgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICduZXh0X21lbWJl ciBwYXN0IGVuZCcgYXMgdGVzdCwgdGVzdF9ibXNfbmV4dF9tZW1iZXIoc2V0X251bWJlcnMsIDIw KSA9IC0yIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0CitVTklPTiBBTEwKK1NFTEVDVCAnbmV4dF9t ZW1iZXIgZW1wdHkgc2V0JyBhcyB0ZXN0LCB0ZXN0X2Jtc19uZXh0X21lbWJlcihOVUxMLCAtMSkg PSAtMiBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ3ByZXZfbWVt YmVyIGxhc3QnIGFzIHRlc3QsIHRlc3RfYm1zX3ByZXZfbWVtYmVyKHNldF9udW1iZXJzLCAyMSkg PSAyMCBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldAorVU5JT04gQUxMCitTRUxFQ1QgJ3ByZXZfbWVt YmVyIHBlbnVsdGltYXRlJyBhcyB0ZXN0LCB0ZXN0X2Jtc19wcmV2X21lbWJlcihzZXRfbnVtYmVy cywgMjApID0gMTUgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdw cmV2X21lbWJlciBwYXN0IGJlZ2lubmluZycgYXMgdGVzdCwgdGVzdF9ibXNfcHJldl9tZW1iZXIo c2V0X251bWJlcnMsIDUpID0gLTIgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAor U0VMRUNUICdwcmV2X21lbWJlciBlbXB0eSBzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX3ByZXZfbWVt YmVyKE5VTEwsIDEwMCkgPSAtMiBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldDsKKworLS0gVGVzdCAx NTogSGFzaCBmdW5jdGlvbnMKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNWEsCisJdGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzViLAorCXRlc3RfYm1zX2Zyb21fYXJyYXko QVJSQVlbMiw0LDZdKSBBUyBzZXRfMjQ2CispCitTRUxFQ1QgJ2hhc2ggTlVMTCcgYXMgdGVzdCwg dGVzdF9ibXNfaGFzaF92YWx1ZShOVUxMKSA9IDAgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitV TklPTiBBTEwKK1NFTEVDVCAnaGFzaCBjb25zaXN0ZW5jeScgYXMgdGVzdCwgdGVzdF9ibXNfaGFz aF92YWx1ZShzZXRfMTM1YSkgPSB0ZXN0X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzViKSBhcyByZXN1 bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdoYXNoIGRpZmZlcmVudCBzZXRz JyBhcyB0ZXN0LCB0ZXN0X2Jtc19oYXNoX3ZhbHVlKHNldF8xMzVhKSAhPSB0ZXN0X2Jtc19oYXNo X3ZhbHVlKHNldF8yNDYpIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0czsKKworLS0gVGVzdCAxNjog U2V0IG92ZXJsYXAKK1dJVEggdGVzdF9zZXRzIEFTICgKKyAgICBTRUxFQ1QKKwl0ZXN0X2Jtc19m cm9tX2FycmF5KEFSUkFZWzEsMyw1XSkgQVMgc2V0XzEzNSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZWzMsNSw3XSkgQVMgc2V0XzM1NywKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIs NCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdvdmVybGFwIGV4aXN0aW5nJyBhcyB0ZXN0LCB0 ZXN0X2Jtc19vdmVybGFwKHNldF8xMzUsIHNldF8zNTcpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0 ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdvdmVybGFwIG5vbmUnIGFzIHRlc3QsIHRlc3Rf Ym1zX292ZXJsYXAoc2V0XzEzNSwgc2V0XzI0NikgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0 X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdvdmVybGFwIHdpdGggTlVMTCcgYXMgdGVzdCwgdGVz dF9ibXNfb3ZlcmxhcChOVUxMLCBzZXRfMTM1KSA9IGZhbHNlIGFzIHJlc3VsdCBGUk9NIHRlc3Rf c2V0czsKKworLS0gVGVzdCAxNzogU3Vic2V0IHJlbGF0aW9ucworV0lUSCB0ZXN0X3NldHMgQVMg KAorICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzXSkgQVMgc2V0XzEz LAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1LAorCXRlc3Rf Ym1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0XSkgQVMgc2V0XzI0LAorCXRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCAwLCAzMSkgQVMgcm5nXzBfMzEsIC0tIDEgd29yZAorCXRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCAwLCA2MykgYXMgcm5nXzBfNjMgIC0tIDIgd29yZHMKKykKK1NFTEVDVCAnc3Vic2V0 IE5VTEwgaXMgc3Vic2V0IG9mIGFsbCcgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vic2V0KE5VTEws IHNldF8xMzUpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VM RUNUICdzdWJzZXQgcHJvcGVyIHN1YnNldCcgYXMgdGVzdCwgdGVzdF9ibXNfaXNfc3Vic2V0KHNl dF8xMywgc2V0XzEzNSkgPSB0cnVlIGFzIHJlc3VsdCBGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxM CitTRUxFQ1QgJ3N1YnNldCBpbXByb3BlciBzdWJzZXQnIGFzIHRlc3QsIHRlc3RfYm1zX2lzX3N1 YnNldChzZXRfMTM1LCBzZXRfMTMpID0gZmFsc2UgYXMgcmVzdWx0IEZST00gdGVzdF9zZXRzCitV TklPTiBBTEwKK1NFTEVDVCAnc3Vic2V0IGRpc2pvaW50IHNldHMnIGFzIHRlc3QsIHRlc3RfYm1z X2lzX3N1YnNldChzZXRfMTMsIHNldF8yNCkgPSBmYWxzZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3Nl dHMKK1VOSU9OIEFMTAorU0VMRUNUICdzdWJzZXQgY29tcGFyaXNvbiBlZGdlJyBhcyB0ZXN0LCB0 ZXN0X2Jtc19pc19zdWJzZXQocm5nXzBfMzEsIHJuZ18wXzYzKSA9IHRydWUgYXMgcmVzdWx0IEZS T00gdGVzdF9zZXRzOworCistLSBUZXN0IDE4OiBDb3B5IG9wZXJhdGlvbnMKK1dJVEggdGVzdF9z ZXQgQVMgKFNFTEVDVCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1LDddKSBBUyBvcmln aW5hbCkKK1NFTEVDVCAnY29weSBOVUxMJyBhcyB0ZXN0LCB0ZXN0X2Jtc19jb3B5KE5VTEwpIElT IE5VTEwgYXMgcmVzdWx0IEZST00gdGVzdF9zZXQKK1VOSU9OIEFMTAorU0VMRUNUICdjb3B5IGVx dWFsaXR5JyBhcyB0ZXN0LCB0ZXN0X2Jtc19lcXVhbChvcmlnaW5hbCwgdGVzdF9ibXNfY29weShv cmlnaW5hbCkpID0gdHJ1ZSBhcyByZXN1bHQgRlJPTSB0ZXN0X3NldDsKKworLS0gVGVzdCAxOTog QWRkIG1lbWJlcnMgb3BlcmF0aW9uCitXSVRIIGJhc2Vfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJ dGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDNdKSBBUyBzZXRfMTMsCisJdGVzdF9ibXNfZnJv bV9hcnJheShBUlJBWVs1LDddKSBBUyBzZXRfNTcKKykKK1NFTEVDVCAnYWRkX21lbWJlcnMgb3Bl cmF0aW9uJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1zX3RvX2FycmF5KHRlc3RfYm1zX2FkZF9t ZW1iZXJzKHNldF8xMywgc2V0XzU3KSkgPSBBUlJBWVsxLDMsNSw3XSBhcyByZXN1bHQKK0ZST00g YmFzZV9zZXRzOworU0VMRUNUICdhZGQgbWVtYmVycyBjb21wbGV4JyBhcyB0ZXN0LAorICAgICAg IGJtc192YWx1ZXModGVzdF9ibXNfYWRkX21lbWJlcnMoCisgICAgICAgICAgIHRlc3RfYm1zX2Zy b21fYXJyYXkoQVJSQVlbMSwzLDVdKSwKKyAgICAgICAgICAgdGVzdF9ibXNfZnJvbV9hcnJheShB UlJBWVsxMDAsMjAwLDMwMF0pCisgICAgICAgKSkgYXMgcmVzdWx0OworCistLSBUZXN0IDIwOiBU ZXN0IGhhc2ggY29uc2lzdGVuY3kKKworV0lUSCB0ZXN0X3NldHMgQVMgKAorICAgIFNFTEVDVAor CXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1X2EsCisJdGVzdF9i bXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0ZXN0X2Jtc19mcm9t X2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NgorKQorU0VMRUNUICdiaXRtYXBfaGFzaCBO VUxMJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFwX2hhc2goTlVMTCkgPSAwIGFzIHJlc3Vs dAorVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9oYXNoIGNvbnNpc3RlbmN5JyBhcyB0ZXN0LAor ICAgICAgIHRlc3RfYml0bWFwX2hhc2goc2V0XzEzNV9hKSA9IHRlc3RfYml0bWFwX2hhc2goc2V0 XzEzNV9iKSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0 bWFwX2hhc2ggdnMgYm1zX2hhc2hfdmFsdWUnIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBf aGFzaChzZXRfMTM1X2EpID0gdGVzdF9ibXNfaGFzaF92YWx1ZShzZXRfMTM1X2EpIGFzIHJlc3Vs dAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBfaGFzaCBkaWZmZXJl bnQgc2V0cycgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9oYXNoKHNldF8xMzVfYSkgIT0g dGVzdF9iaXRtYXBfaGFzaChzZXRfMjQ2KSBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRzOworCist LSBUZXN0IDIxOiBiaXRtYXBfbWF0Y2ggZnVuY3Rpb24KKworV0lUSCB0ZXN0X3NldHMgQVMgKAor ICAgIFNFTEVDVAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSBBUyBzZXRfMTM1 X2EsCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDMsNV0pIEFTIHNldF8xMzVfYiwKKwl0 ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkgQVMgc2V0XzI0NiwKKwl0ZXN0X2Jtc19m cm9tX2FycmF5KEFSUkFZWzEsM10pIEFTIHNldF8xMworKQorU0VMRUNUICdiaXRtYXBfbWF0Y2gg TlVMTCBOVUxMIChzaG91bGQgYmUgMCknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0 Y2goTlVMTCwgTlVMTCkgPSAwIGFzIHJlc3VsdAorVU5JT04gQUxMCitTRUxFQ1QgJ2JpdG1hcF9t YXRjaCBOVUxMIHNldCAoc2hvdWxkIGJlIDEpJyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYml0bWFw X21hdGNoKE5VTEwsIHNldF8xMzVfYSkgPSAxIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VO SU9OIEFMTAorU0VMRUNUICdiaXRtYXBfbWF0Y2ggc2V0IE5VTEwgKHNob3VsZCBiZSAxKScgYXMg dGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaChzZXRfMTM1X2EsIE5VTEwpID0gMSBhcyBy ZXN1bHQKK0ZST00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIGlk ZW50aWNhbCBzZXRzIChzaG91bGQgYmUgMCknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBf bWF0Y2goc2V0XzEzNV9hLCBzZXRfMTM1X2IpID0gMCBhcyByZXN1bHQKK0ZST00gdGVzdF9zZXRz CitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIGRpZmZlcmVudCBzZXRzIChzaG91bGQg YmUgMSknIGFzIHRlc3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2goc2V0XzEzNV9hLCBzZXRf MjQ2KSA9IDEgYXMgcmVzdWx0CitGUk9NIHRlc3Rfc2V0cworVU5JT04gQUxMCitTRUxFQ1QgJ2Jp dG1hcF9tYXRjaCBzdWJzZXQvc3VwZXJzZXQgKHNob3VsZCBiZSAxKScgYXMgdGVzdCwKKyAgICAg ICB0ZXN0X2JpdG1hcF9tYXRjaChzZXRfMTMsIHNldF8xMzVfYSkgPSAxIGFzIHJlc3VsdAorRlJP TSB0ZXN0X3NldHM7CisKKy0tIFRlc3QgcmVsYXRpb25zaGlwIHdpdGggYm1zX2VxdWFsCitXSVRI IHRlc3Rfc2V0cyBBUyAoCisgICAgU0VMRUNUCisJdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDMsNV0pIEFTIHNldF8xMzVfYSwKKwl0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzEsMyw1XSkg QVMgc2V0XzEzNV9iLAorCXRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMiw0LDZdKSBBUyBzZXRf MjQ2CispCitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCB2cyBibXNfZXF1YWwgKGVxdWFsIHNldHMpJyBh cyB0ZXN0LAorICAgICAgICh0ZXN0X2JpdG1hcF9tYXRjaChzZXRfMTM1X2EsIHNldF8xMzVfYikg PSAwKSA9IHRlc3RfYm1zX2VxdWFsKHNldF8xMzVfYSwgc2V0XzEzNV9iKSBhcyByZXN1bHQKK0ZS T00gdGVzdF9zZXRzCitVTklPTiBBTEwKK1NFTEVDVCAnYml0bWFwX21hdGNoIHZzIGJtc19lcXVh bCAoZGlmZmVyZW50IHNldHMpJyBhcyB0ZXN0LAorICAgICAgICh0ZXN0X2JpdG1hcF9tYXRjaChz ZXRfMTM1X2EsIHNldF8yNDYpID0gMCkgPSB0ZXN0X2Jtc19lcXVhbChzZXRfMTM1X2EsIHNldF8y NDYpIGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHMKK1VOSU9OIEFMTAorU0VMRUNUICdiaXRtYXBf bWF0Y2ggdnMgYm1zX2VxdWFsIChOVUxMIGNhc2VzKScgYXMgdGVzdCwKKyAgICAgICAodGVzdF9i aXRtYXBfbWF0Y2goTlVMTCwgTlVMTCkgPSAwKSA9IHRlc3RfYm1zX2VxdWFsKE5VTEwsIE5VTEwp IGFzIHJlc3VsdAorRlJPTSB0ZXN0X3NldHM7CisKKy0tIFRlc3Qgc3BlY2lmaWMgbWF0Y2ggdmFs dWVzIGZvciBkZWJ1Z2dpbmcKK1NFTEVDVCAnYml0bWFwX21hdGNoIFsxLDMsNV0gdnMgWzEsMyw1 XScgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaCh0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZWzEsMyw1XSksIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbMSwzLDVdKSkgYXMgbWF0 Y2hfdmFsdWU7CitTRUxFQ1QgJ2JpdG1hcF9tYXRjaCBbMSwzLDVdIHZzIFsyLDQsNl0nIGFzIHRl c3QsCisgICAgICAgdGVzdF9iaXRtYXBfbWF0Y2godGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsx LDMsNV0pLCB0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsNCw2XSkpIGFzIG1hdGNoX3ZhbHVl OworCistLSBUZXN0IGVkZ2UgY2FzZXMKK1NFTEVDVCAnYml0bWFwX21hdGNoIGVtcHR5IGFycmF5 cycgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2JpdG1hcF9tYXRjaCh0ZXN0X2Jtc19mcm9tX2FycmF5 KEFSUkFZW106OmludGVnZXJbXSksIHRlc3RfYm1zX2Zyb21fYXJyYXkoQVJSQVlbXTo6aW50ZWdl cltdKSkgPSAwIGFzIHJlc3VsdDsKKworLS0gVGVzdCAyMjogT3ZlcmxhcCBsaXN0cyB3aXRoIHZh cmlvdXMgc2NlbmFyaW9zCitXSVRIIHRlc3RfbGlzdHMgQVMgKAorICAgIFNFTEVDVCBBUlJBWVsK KyAgICAgICAgdGVzdF9ibXNfZnJvbV9hcnJheShBUlJBWVsxLDIsM10pLAorICAgICAgICB0ZXN0 X2Jtc19mcm9tX2FycmF5KEFSUkFZWzQsNSw2XSksCisgICAgICAgIHRlc3RfYm1zX2Zyb21fYXJy YXkoQVJSQVlbNyw4LDldKSwKKyAgICAgICAgdGVzdF9ibXNfbWFrZV9zaW5nbGV0b24oMikgIC0t IFRoaXMgc2hvdWxkIG92ZXJsYXAgd2l0aCBmaXJzdCBzZXQKKyAgICBdIGFzIGJtc19saXN0Cisp CitTRUxFQ1QgJ292ZXJsYXAgbGlzdCBjb21wbGV4JyBhcyB0ZXN0LAorICAgICAgIHRlc3RfYm1z X292ZXJsYXBfbGlzdCh0ZXN0X2Jtc19mcm9tX2FycmF5KEFSUkFZWzIsMTBdKSwgYm1zX2xpc3Qp IGFzIHJlc3VsdAorRlJPTSB0ZXN0X2xpc3RzOworCitTRUxFQ1QgJ292ZXJsYXAgZW1wdHkgbGlz dCcgYXMgdGVzdCwKKyAgICAgICB0ZXN0X2Jtc19vdmVybGFwX2xpc3QodGVzdF9ibXNfbWFrZV9z aW5nbGV0b24oMSksIEFSUkFZW106OnRleHRbXSkgYXMgcmVzdWx0OworCistLSBUZXN0IDIzOiBS YW5kb20gb3BlcmF0aW9ucyBzdHJlc3MgdGVzdAorU0VMRUNUICdyYW5kb20gb3BlcmF0aW9ucycg YXMgdGVzdCwgdGVzdF9yYW5kb21fb3BlcmF0aW9ucygtMSwgMTAwMDAsIDgxOTIwLCAwKSA+IDAg YXMgcmVzdWx0OworCistLSBFUlJPUiBDT05ESVRJT04gVEVTVFMKKworLS0gVGVzdCAyNDogRXJy b3IgY29uZGl0aW9ucyAodGhlc2Ugc2hvdWxkIHByb2R1Y2UgRVJST1JzKQorU0VMRUNUIHRlc3Rf Ym1zX21ha2Vfc2luZ2xldG9uKC0xKTsKK1NFTEVDVCB0ZXN0X2Jtc19hZGRfbWVtYmVyKHRlc3Rf Ym1zX21ha2Vfc2luZ2xldG9uKDEpLCAtMSk7CitTRUxFQ1QgdGVzdF9ibXNfaXNfbWVtYmVyKE5V TEwsIC01KTsKK1NFTEVDVCB0ZXN0X2Jtc19hZGRfbWVtYmVyKE5VTEwsIC0xMCk7CitTRUxFQ1Qg dGVzdF9ibXNfZGVsX21lbWJlcihOVUxMLCAtMjApOworU0VMRUNUIHRlc3RfYm1zX2FkZF9yYW5n ZShOVUxMLCAtNSwgMTApOworU0VMRUNUIHRlc3RfYm1zX3NpbmdsZXRvbl9tZW1iZXIodGVzdF9i bXNfZnJvbV9hcnJheShBUlJBWVsxLDJdKSk7CitTRUxFQ1QgYm1zX3ZhbHVlcyh0ZXN0X2Jtc19h ZGRfbWVtYmVyKE5VTEwsIDEwMDApKTsKKworRFJPUCBFWFRFTlNJT04gdGVzdF9iaXRtYXBzZXQ7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFw c2V0LS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1h cHNldC0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODlh YzY1Yzc4OWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFw c2V0L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsCkBAIC0wLDAgKzEsMTQ5IEBACisvKiBzcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsICovCisKKy0t IGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBD UkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9iaXRtYXBz ZXQiIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBVdGlsaXR5IGZ1bmN0aW9ucworQ1JF QVRFIEZVTkNUSU9OIHRlc3RfYm1zX2Zyb21fYXJyYXkoaW50ZWdlcltdKQorUkVUVVJOUyB0ZXh0 CitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVz dF9ibXNfdG9fYXJyYXkodGV4dCkKK1JFVFVSTlMgaW50ZWdlcltdCitBUyAnTU9EVUxFX1BBVEhO QU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gYm1zX3ZhbHVlcyh0ZXh0KQorUkVU VVJOUyB0ZXh0CitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDIFNUQUJMRTsKKworLS0g Qml0bWFwc2V0IEFQSSBmdW5jdGlvbnMKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19tYWtlX3Np bmdsZXRvbihpbnRlZ2VyKQorUkVUVVJOUyB0ZXh0IFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFN RScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2FkZF9tZW1iZXIodGV4 dCwgaW50ZWdlcikKK1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2RlbF9tZW1iZXIodGV4dCwgaW50ZWdlcikK K1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRF IEZVTkNUSU9OIHRlc3RfYm1zX2lzX21lbWJlcih0ZXh0LCBpbnRlZ2VyKQorUkVUVVJOUyBib29s ZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04g dGVzdF9ibXNfbnVtX21lbWJlcnModGV4dCkKK1JFVFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9Q QVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2NvcHkodGV4 dCkKK1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JF QVRFIEZVTkNUSU9OIHRlc3RfYm1zX2VxdWFsKHRleHQsIHRleHQpCitSRVRVUk5TIGJvb2xlYW4K K0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0 X2Jtc19jb21wYXJlKHRleHQsIHRleHQpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFU SE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19pc19zdWJzZXQo dGV4dCwgdGV4dCkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VB R0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX3N1YnNldF9jb21wYXJlKHRleHQsIHRl eHQpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisK K0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc191bmlvbih0ZXh0LCB0ZXh0KQorUkVUVVJOUyB0ZXh0 CitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVz dF9ibXNfaW50ZXJzZWN0KHRleHQsIHRleHQpCitSRVRVUk5TIHRleHQKK0FTICdNT0RVTEVfUEFU SE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19kaWZmZXJlbmNl KHRleHQsIHRleHQpCitSRVRVUk5TIHRleHQKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdF IEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19pc19lbXB0eSh0ZXh0KQorUkVUVVJOUyBi b29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJ T04gdGVzdF9ibXNfbWVtYmVyc2hpcCh0ZXh0KQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxF X1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfc2luZ2xl dG9uX21lbWJlcih0ZXh0KQorUkVUVVJOUyBpbnRlZ2VyIFNUUklDVAorQVMgJ01PRFVMRV9QQVRI TkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2dldF9zaW5nbGV0 b25fbWVtYmVyKHRleHQsIGludGVnZXIpCitSRVRVUk5TIGludGVnZXIKK0FTICdNT0RVTEVfUEFU SE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19uZXh0X21lbWJl cih0ZXh0LCBpbnRlZ2VyKQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBM QU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfcHJldl9tZW1iZXIodGV4dCwg aW50ZWdlcikKK1JFVFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2hhc2hfdmFsdWUodGV4dCkKK1JFVFVSTlMg aW50ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNU SU9OIHRlc3RfYm1zX292ZXJsYXAodGV4dCwgdGV4dCkKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01P RFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX292 ZXJsYXBfbGlzdCh0ZXh0LCB0ZXh0W10pCitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFU SE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19ub25lbXB0eV9k aWZmZXJlbmNlKHRleHQsIHRleHQpCitSRVRVUk5TIGJvb2xlYW4KK0FTICdNT0RVTEVfUEFUSE5B TUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0X2Jtc19tZW1iZXJfaW5kZXgo dGV4dCwgaW50ZWdlcikKK1JFVFVSTlMgaW50ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFO R1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2FkZF9yYW5nZSh0ZXh0LCBpbnRl Z2VyLCBpbnRlZ2VyKQorUkVUVVJOUyB0ZXh0CitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFH RSBDOworCitDUkVBVEUgRlVOQ1RJT04gdGVzdF9ibXNfYWRkX21lbWJlcnModGV4dCwgdGV4dCkK K1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRF IEZVTkNUSU9OIHRlc3RfYm1zX2ludF9tZW1iZXJzKHRleHQsIHRleHQpCitSRVRVUk5TIHRleHQK K0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0ZXN0 X2Jtc19yZXBsYWNlX21lbWJlcnModGV4dCwgdGV4dCkKK1JFVFVSTlMgdGV4dAorQVMgJ01PRFVM RV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYm1zX2pvaW4o dGV4dCwgdGV4dCkKK1JFVFVSTlMgdGV4dAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0Ug QzsKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfYml0bWFwX2hhc2godGV4dCkKK1JFVFVSTlMgaW50 ZWdlcgorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9O IHRlc3RfYml0bWFwX21hdGNoKHRleHQsIHRleHQpCitSRVRVUk5TIGludAorQVMgJ01PRFVMRV9Q QVRITkFNRScgTEFOR1VBR0UgQzsKKworLS0gVGVzdCB1dGlsaXR5IGZ1bmN0aW9ucworQ1JFQVRF IEZVTkNUSU9OIHRlc3RfcmFuZG9tX29wZXJhdGlvbnMoaW50ZWdlciwgaW50ZWdlciwgaW50ZWdl ciwgaW50ZWdlcikKK1JFVFVSTlMgaW50ZWdlciBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUn IExBTkdVQUdFIEM7CisKK0NPTU1FTlQgT04gRVhURU5TSU9OIHRlc3RfYml0bWFwc2V0IElTICdU ZXN0IGNvZGUgZm9yIEJpdG1hcHNldCc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0 bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjBkNWEwODA2Njk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCkBAIC0wLDAgKzEsMTE3OSBAQAorLyoKKyAq IHRlc3RfYml0bWFwc2V0LmMKKyAqICAgICAgVGVzdCBtb2R1bGUgZm9yIGJpdG1hcHNldCBkYXRh IHN0cnVjdHVyZQorICoKKyAqIFRoaXMgbW9kdWxlIHRlc3RzIHRoZSBiaXRtYXBzZXQgaW1wbGVt ZW50YXRpb24gaW4gUG9zdGdyZVNRTCwKKyAqIGNvdmVyaW5nIGFsbCBwdWJsaWMgQVBJIGZ1bmN0 aW9ucywgZWRnZSBjYXNlcywgYW5kIG1lbW9yeSB1c2FnZS4KKyAqCisgKiBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMKKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXMuaCIKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlw ZS5oIgorI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXku aCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCisjaW5j bHVkZSAibm9kZXMvbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNs dWRlICJ2YXJhdHQuaCIKKworUEdfTU9EVUxFX01BR0lDOworCisvKiBVdGlsaXR5IGZ1bmN0aW9u cyAqLworUEdfRlVOQ1RJT05fSU5GT19WMShibXNfdmFsdWVzKTsKK1BHX0ZVTkNUSU9OX0lORk9f VjEodGVzdF9ibXNfZnJvbV9hcnJheSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX3Rv X2FycmF5KTsKKworLyogQml0bWFwc2V0IEFQSSBmdW5jdGlvbnMgaW4gb3JkZXIgb2YgYXBwZWFy YW5jZSBpbiBiaXRtYXBzZXQuYyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19tYWtl X3NpbmdsZXRvbik7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX2FkZF9tZW1iZXIpOwor UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19kZWxfbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9ibXNfaXNfbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNf bnVtX21lbWJlcnMpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19jb3B5KTsKK1BHX0ZV TkNUSU9OX0lORk9fVjEodGVzdF9ibXNfZXF1YWwpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0 X2Jtc19jb21wYXJlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfaXNfc3Vic2V0KTsK K1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfc3Vic2V0X2NvbXBhcmUpOworUEdfRlVOQ1RJ T05fSU5GT19WMSh0ZXN0X2Jtc191bmlvbik7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1z X2ludGVyc2VjdCk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX2RpZmZlcmVuY2UpOwor UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19pc19lbXB0eSk7CitQR19GVU5DVElPTl9JTkZP X1YxKHRlc3RfYm1zX21lbWJlcnNoaXApOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19z aW5nbGV0b25fbWVtYmVyKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfZ2V0X3Npbmds ZXRvbl9tZW1iZXIpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19uZXh0X21lbWJlcik7 CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX3ByZXZfbWVtYmVyKTsKK1BHX0ZVTkNUSU9O X0lORk9fVjEodGVzdF9ibXNfaGFzaF92YWx1ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rf Ym1zX292ZXJsYXApOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19vdmVybGFwX2xpc3Qp OworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19ub25lbXB0eV9kaWZmZXJlbmNlKTsKK1BH X0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNfbWVtYmVyX2luZGV4KTsKK1BHX0ZVTkNUSU9OX0lO Rk9fVjEodGVzdF9ibXNfYWRkX3JhbmdlKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9ibXNf YWRkX21lbWJlcnMpOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jtc19pbnRfbWVtYmVycyk7 CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfYm1zX3JlcGxhY2VfbWVtYmVycyk7CitQR19GVU5D VElPTl9JTkZPX1YxKHRlc3RfYm1zX2pvaW4pOworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X2Jp dG1hcF9oYXNoKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEodGVzdF9iaXRtYXBfbWF0Y2gpOworCisv KiBUZXN0IHV0aWxpdHkgZnVuY3Rpb25zICovCitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3RfcmFu ZG9tX29wZXJhdGlvbnMpOworCisvKiBDb252ZW5pZW50IG1hY3JvcyB0byB0ZXN0IHJlc3VsdHMg Ki8KKyNkZWZpbmUgRVhQRUNUX1RSVUUoZXhwcikJXAorCWRvIHsgXAorCQlpZiAoIShleHByKSkg XAorCQkJZWxvZyhFUlJPUiwgXAorCQkJCSAiJXMgd2FzIHVuZXhwZWN0ZWRseSBmYWxzZSBpbiBm aWxlIFwiJXNcIiBsaW5lICV1IiwgXAorCQkJCSAjZXhwciwgX19GSUxFX18sIF9fTElORV9fKTsg XAorCX0gd2hpbGUgKDApCisKKyNkZWZpbmUgRVhQRUNUX05PVF9OVUxMKGV4cHIpCVwKKwlkbyB7 IFwKKwkJaWYgKChleHByKSA9PSBOVUxMKSBcCisJCQllbG9nKEVSUk9SLCBcCisJCQkJICIlcyB3 YXMgdW5leHBlY3RlZGx5IHRydWUgaW4gZmlsZSBcIiVzXCIgbGluZSAldSIsIFwKKwkJCQkgI2V4 cHIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKwl9IHdoaWxlICgwKQorCisKKy8qCisgKiBVdGls aXR5IGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gQml0bWFwc2V0IGFuZCB0ZXh0CisgKiBm b3IgcGFzc2luZyBkYXRhIGJldHdlZW4gU1FMIGFuZCBDIGZ1bmN0aW9ucworICovCisKK3N0YXRp YyB0ZXh0ICoKK2VuY29kZV9ibXNfdG9fdGV4dChCaXRtYXBzZXQgKmJtcykKK3sKKwljaGFyCSAg ICpzdHI7CisJdGV4dAkgICAqcmVzdWx0OworCisJaWYgKGJtcyA9PSBOVUxMKQorCQlyZXR1cm4g TlVMTDsKKworCXN0ciA9IG5vZGVUb1N0cmluZyhibXMpOworCXJlc3VsdCA9IGNzdHJpbmdfdG9f dGV4dChzdHIpOworCXBmcmVlKHN0cik7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg Qml0bWFwc2V0ICoKK2RlY29kZV90ZXh0X3RvX2Jtcyh0ZXh0ICpkYXRhKQoreworCWNoYXIJICAg KnN0cjsKKwlCaXRtYXBzZXQgICpibXM7CisKKwlpZiAoZGF0YSA9PSBOVUxMKQorCQlyZXR1cm4g TlVMTDsKKworCXN0ciA9IHRleHRfdG9fY3N0cmluZyhkYXRhKTsKKwlibXMgPSAoQml0bWFwc2V0 ICopIHN0cmluZ1RvTm9kZShzdHIpOworCXBmcmVlKHN0cik7CisKKwlyZXR1cm4gYm1zOworfQor CitEYXR1bQorYm1zX3ZhbHVlcyhQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJt czsKKwljaGFyCSAgICpzdHI7CisJdGV4dAkgICAqcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVM TCgwKSkKKwl7CisJCXJlc3VsdCA9IGNzdHJpbmdfdG9fdGV4dCgiKGIpIik7CisJCVBHX1JFVFVS Tl9URVhUX1AocmVzdWx0KTsKKwl9CisKKwlibXMgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VU QVJHX1RFWFRfUFAoMCkpOworCXN0ciA9IGJtc1RvU3RyaW5nKGJtcyk7CisKKwlpZiAoYm1zKQor CQlibXNfZnJlZShibXMpOworCisJcmVzdWx0ID0gY3N0cmluZ190b190ZXh0KHN0cik7CisKKwlQ R19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7Cit9CisKKy8qCisgKiBJbmRpdmlkdWFsIHRlc3QgZnVu Y3Rpb25zIGZvciBlYWNoIGJpdG1hcHNldCBBUEkgZnVuY3Rpb24KKyAqLworCitEYXR1bQordGVz dF9ibXNfYWRkX21lbWJlcihQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCW1lbWJlcjsKKwlC aXRtYXBzZXQgICpibXMgPSBOVUxMOworCXRleHQJICAgKnJlc3VsdDsKKworCWlmIChQR19BUkdJ U05VTEwoMSkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkK KwkJYm1zID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCW1l bWJlciA9IFBHX0dFVEFSR19JTlQzMigxKTsKKwlibXMgPSBibXNfYWRkX21lbWJlcihibXMsIG1l bWJlcik7CisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b190ZXh0KGJtcyk7CisKKwlpZiAoYm1zKQor CQlibXNfZnJlZShibXMpOworCisJaWYgKHJlc3VsdCA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVM TCgpOworCisJUEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNf YWRkX21lbWJlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMxID0gTlVM TCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwl0ZXh0CSAgICpyZXN1bHQ7CisKKwlpZiAoIVBHX0FS R0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9Q UCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRlY29kZV90ZXh0X3Rv X2JtcyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7CisKKwkvKiBJTVBPUlRBTlQ6IGJtc19hZGRfbWVt YmVycyBtb2RpZmllcy9mcmVlcyB0aGUgZmlyc3QgYXJndW1lbnQgKi8KKwlibXMxID0gYm1zX2Fk ZF9tZW1iZXJzKGJtczEsIGJtczIpOworCisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIpOwor CisJaWYgKGJtczEgPT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXJlc3VsdCA9IGVu Y29kZV9ibXNfdG9fdGV4dChibXMxKTsKKwlibXNfZnJlZShibXMxKTsKKworCVBHX1JFVFVSTl9U RVhUX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2RlbF9tZW1iZXIoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCWludDMyCQltZW1iZXI7CisJ dGV4dAkgICAqcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJUEdfUkVUVVJOX05V TEwoKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMgPSBkZWNvZGVfdGV4dF90b19i bXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisJbWVtYmVyID0gUEdfR0VUQVJHX0lOVDMyKDEp OworCWJtcyA9IGJtc19kZWxfbWVtYmVyKGJtcywgbWVtYmVyKTsKKworCWlmIChibXMgPT0gTlVM TCB8fCBibXNfaXNfZW1wdHkoYm1zKSkKKwl7CisJCWlmIChibXMpCisJCQlibXNfZnJlZShibXMp OworCQlQR19SRVRVUk5fTlVMTCgpOworCX0KKworCXJlc3VsdCA9IGVuY29kZV9ibXNfdG9fdGV4 dChibXMpOworCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7Cit9 CisKK0RhdHVtCit0ZXN0X2Jtc19pc19tZW1iZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRt YXBzZXQgICpibXMgPSBOVUxMOworCWludDMyCQltZW1iZXI7CisJYm9vbAkJcmVzdWx0OworCisJ aWYgKFBHX0FSR0lTTlVMTCgxKSkKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCisJaWYgKCFQ R19BUkdJU05VTEwoMCkpCisJCWJtcyA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVY VF9QUCgwKSk7CisKKwltZW1iZXIgPSBQR19HRVRBUkdfSU5UMzIoMSk7CisJcmVzdWx0ID0gYm1z X2lzX21lbWJlcihtZW1iZXIsIGJtcyk7CisKKwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMpOwor CisJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX251bV9tZW1i ZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlpbnQJ CQlyZXN1bHQgPSAwOworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtcyA9IGRlY29kZV90 ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisKKwlyZXN1bHQgPSBibXNfbnVtX21l bWJlcnMoYm1zKTsKKworCWlmIChibXMpCisJCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5f SU5UMzIocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX21ha2Vfc2luZ2xldG9uKFBHX0ZV TkNUSU9OX0FSR1MpCit7CisJaW50MzIJCW1lbWJlcjsKKwlCaXRtYXBzZXQgICpibXM7CisJdGV4 dAkgICAqcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwo KTsKKworCW1lbWJlciA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwlibXMgPSBibXNfbWFrZV9zaW5n bGV0b24obWVtYmVyKTsKKworCXJlc3VsdCA9IGVuY29kZV9ibXNfdG9fdGV4dChibXMpOworCWJt c19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0 ZXN0X2Jtc19jb3B5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJdGV4dAkgICAqYm1zX2RhdGE7CisJ Qml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKwlCaXRtYXBzZXQgICpjb3B5X2JtczsKKwl0ZXh0CSAg ICpyZXN1bHQ7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQlQR19SRVRVUk5fTlVMTCgpOwor CisJYm1zX2RhdGEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKKwlibXMgPSBkZWNvZGVfdGV4dF90 b19ibXMoYm1zX2RhdGEpOworCWNvcHlfYm1zID0gYm1zX2NvcHkoYm1zKTsKKwlyZXN1bHQgPSBl bmNvZGVfYm1zX3RvX3RleHQoY29weV9ibXMpOworCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1z KTsKKwlpZiAoY29weV9ibXMpCisJCWJtc19mcmVlKGNvcHlfYm1zKTsKKworCVBHX1JFVFVSTl9U RVhUX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2VxdWFsKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJ Ym9vbAkJcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVf dGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisJaWYgKCFQR19BUkdJU05VTEwo MSkpCisJCWJtczIgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOwor CisJcmVzdWx0ID0gYm1zX2VxdWFsKGJtczEsIGJtczIpOworCisJaWYgKGJtczEpCisJCWJtc19m cmVlKGJtczEpOworCWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JFVFVSTl9C T09MKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc191bmlvbihQR19GVU5DVElPTl9BUkdT KQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOworCUJp dG1hcHNldCAgKnJlc3VsdF9ibXM7CisJdGV4dAkgICAqcmVzdWx0OworCisJaWYgKCFQR19BUkdJ U05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAo MCkpOworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfdGV4dF90b19i bXMoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOworCisJcmVzdWx0X2JtcyA9IGJtc191bmlvbihibXMx LCBibXMyKTsKKworCWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJ Ym1zX2ZyZWUoYm1zMik7CisKKwlpZiAocmVzdWx0X2JtcyA9PSBOVUxMKQorCQlQR19SRVRVUk5f TlVMTCgpOworCisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b190ZXh0KHJlc3VsdF9ibXMpOworCWJt c19mcmVlKHJlc3VsdF9ibXMpOworCisJUEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworfQorCitE YXR1bQordGVzdF9ibXNfbWVtYmVyc2hpcChQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNl dCAgKmJtcyA9IE5VTEw7CisJQk1TX01lbWJlcnNoaXAgcmVzdWx0OworCisJaWYgKFBHX0FSR0lT TlVMTCgwKSkKKwkJUEdfUkVUVVJOX0lOVDMyKEJNU19FTVBUWV9TRVQpOworCisJYm1zID0gZGVj b2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlyZXN1bHQgPSBibXNfbWVt YmVyc2hpcChibXMpOworCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVS Tl9JTlQzMigoaW50MzIpIHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19uZXh0X21lbWJl cihQR19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJaW50MzIJ CXByZXZtZW1iZXI7CisJaW50CQkJcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSB8fCBQ R19BUkdJU05VTEwoMSkpCisJCVBHX1JFVFVSTl9JTlQzMigtMik7CisKKwlibXMgPSBkZWNvZGVf dGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCXByZXZtZW1iZXIgPSBQR19HRVRB UkdfSU5UMzIoMSk7CisJcmVzdWx0ID0gYm1zX25leHRfbWVtYmVyKGJtcywgcHJldm1lbWJlcik7 CisKKwlpZiAoYm1zKQorCQlibXNfZnJlZShibXMpOworCisJUEdfUkVUVVJOX0lOVDMyKHJlc3Vs dCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19mcm9tX2FycmF5KFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJQXJyYXlUeXBlICAqYXJyYXk7CisJaW50CQkgICAqbWVtYmVyczsKKwlpbnQJCQlubWVtYmVy czsKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCXRleHQJICAgKnJlc3VsdDsKKwlpbnQJCQlp OworCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWFycmF5 ID0gUEdfR0VUQVJHX0FSUkFZVFlQRV9QKDApOworCisJLyogQ2hlY2sgZWxlbWVudCB0eXBlIGZp cnN0ICovCisJaWYgKEFSUl9FTEVNVFlQRShhcnJheSkgIT0gSU5UNE9JRCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9FUlJPUiksCisJCQkJ IGVycm1zZygiaW50ZWdlciBhcnJheSBleHBlY3RlZCIpKSk7CisKKwkvKiBIYW5kbGUgZW1wdHkg YXJyYXlzIC0gQVJSX05ESU0gY2FuIGJlIDAgZm9yIGVtcHR5IGFycmF5cyAqLworCWlmIChBUlJf TkRJTShhcnJheSkgPT0gMCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCS8qIE5vdyBjaGVjayBk aW1lbnNpb25zICovCisJaWYgKEFSUl9ORElNKGFycmF5KSAhPSAxKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfQVJSQVlfU1VCU0NSSVBUX0VSUk9SKSwKKwkJCQkgZXJy bXNnKCJpbnRlZ2VyIGFycmF5IGV4cGVjdGVkIikpKTsKKworCW5tZW1iZXJzID0gQVJSX0RJTVMo YXJyYXkpWzBdOworCisJLyogRG91YmxlLWNoZWNrIGZvciBlbXB0eSAqLworCWlmIChubWVtYmVy cyA9PSAwKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJaWYgKEFSUl9IQVNOVUxMKGFycmF5KSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0FSUkFZX1NVQlNDUklQVF9F UlJPUiksCisJCQkJIGVycm1zZygiaW50ZWdlciBhcnJheSBleHBlY3RlZCIpKSk7CisKKwltZW1i ZXJzID0gKGludCAqKSBBUlJfREFUQV9QVFIoYXJyYXkpOworCisJZm9yIChpID0gMDsgaSA8IG5t ZW1iZXJzOyBpKyspCisJCWJtcyA9IGJtc19hZGRfbWVtYmVyKGJtcywgbWVtYmVyc1tpXSk7CisK KwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX3RleHQoYm1zKTsKKwlibXNfZnJlZShibXMpOworCisJ UEdfUkVUVVJOX1RFWFRfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfdG9fYXJyYXko UEdfRlVOQ1RJT05fQVJHUykKK3sKKwl0ZXh0CSAgICpibXNfZGF0YTsKKwlCaXRtYXBzZXQgICpi bXMgPSBOVUxMOworCUFycmF5VHlwZSAgKnJlc3VsdDsKKwlEYXR1bQkgICAqZGF0dW1zOworCWlu dAkJCW5tZW1iZXJzOworCWludAkJCW1lbWJlciA9IC0xOworCWludAkJCWkgPSAwOworCisJaWYg KFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCWJtc19kYXRhID0gUEdf R0VUQVJHX1RFWFRfUFAoMCk7CisJYm1zID0gZGVjb2RlX3RleHRfdG9fYm1zKGJtc19kYXRhKTsK KworCWlmIChibXMgPT0gTlVMTCB8fCBibXNfaXNfZW1wdHkoYm1zKSkKKwl7CisJCWlmIChibXMp CisJCQlibXNfZnJlZShibXMpOworCQlQR19SRVRVUk5fTlVMTCgpOworCX0KKworCW5tZW1iZXJz ID0gYm1zX251bV9tZW1iZXJzKGJtcyk7CisJZGF0dW1zID0gKERhdHVtICopIHBhbGxvYyhubWVt YmVycyAqIHNpemVvZihEYXR1bSkpOworCisJd2hpbGUgKChtZW1iZXIgPSBibXNfbmV4dF9tZW1i ZXIoYm1zLCBtZW1iZXIpKSA+PSAwKQorCQlkYXR1bXNbaSsrXSA9IEludDMyR2V0RGF0dW0obWVt YmVyKTsKKworCWJtc19mcmVlKGJtcyk7CisKKwlyZXN1bHQgPSBjb25zdHJ1Y3RfYXJyYXkoZGF0 dW1zLCBubWVtYmVycywKKwkJCQkJCQkgSU5UNE9JRCwgc2l6ZW9mKGludDMyKSwgdHJ1ZSwgJ2kn KTsKKworCXBmcmVlKGRhdHVtcyk7CisJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKHJlc3VsdCk7Cit9 CisKK0RhdHVtCit0ZXN0X2Jtc19pbnRlcnNlY3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRt YXBzZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwlCaXRtYXBzZXQgICpy ZXN1bHRfYm1zOworCXRleHQJICAgKnJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQor CQlibXMxID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCWlm ICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFS R19URVhUX1BQKDEpKTsKKworCXJlc3VsdF9ibXMgPSBibXNfaW50ZXJzZWN0KGJtczEsIGJtczIp OworCisJaWYgKGJtczEpCisJCWJtc19mcmVlKGJtczEpOworCWlmIChibXMyKQorCQlibXNfZnJl ZShibXMyKTsKKworCWlmIChyZXN1bHRfYm1zID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7 CisKKwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX3RleHQocmVzdWx0X2Jtcyk7CisJYm1zX2ZyZWUo cmVzdWx0X2Jtcyk7CisKKwlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0 ZXN0X2Jtc19kaWZmZXJlbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1z MSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJQml0bWFwc2V0ICAqcmVzdWx0X2JtczsK Kwl0ZXh0CSAgICpyZXN1bHQ7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRl Y29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisKKwlpZiAoIVBHX0FSR0lT TlVMTCgxKSkKKwkJYm1zMiA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgx KSk7CisKKwlyZXN1bHRfYm1zID0gYm1zX2RpZmZlcmVuY2UoYm1zMSwgYm1zMik7CisKKwlpZiAo Ym1zMSkKKwkJYm1zX2ZyZWUoYm1zMSk7CisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIpOwor CisJaWYgKHJlc3VsdF9ibXMgPT0gTlVMTCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXJlc3Vs dCA9IGVuY29kZV9ibXNfdG9fdGV4dChyZXN1bHRfYm1zKTsKKwlibXNfZnJlZShyZXN1bHRfYm1z KTsKKworCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2Nv bXBhcmUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKKwkJ CSAgICpibXMyID0gTlVMTDsKKwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgw KSkKKwkJYm1zMSA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgxKSkKKwkJYm1zMiA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19H RVRBUkdfVEVYVF9QUCgxKSk7CisKKwlyZXN1bHQgPSBibXNfY29tcGFyZShibXMxLCBibXMyKTsK KworCWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJYm1zX2ZyZWUo Ym1zMik7CisKKwlQR19SRVRVUk5fSU5UMzIocmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1z X2lzX2VtcHR5KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zID0gTlVMTDsK Kwlib29sCQlyZXN1bHQ7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zID0gZGVjb2Rl X3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCXJlc3VsdCA9IGJtc19pc19l bXB0eShibXMpOworCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9C T09MKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19pc19zdWJzZXQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsK Kwlib29sCQlyZXN1bHQ7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zMSA9IGRlY29k ZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisKKwlpZiAoIVBHX0FSR0lTTlVM TCgxKSkKKwkJYm1zMiA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgxKSk7 CisKKwlyZXN1bHQgPSBibXNfaXNfc3Vic2V0KGJtczEsIGJtczIpOworCisJaWYgKGJtczEpCisJ CWJtc19mcmVlKGJtczEpOworCWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JF VFVSTl9CT09MKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19zdWJzZXRfY29tcGFyZShQ R19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJt czIgPSBOVUxMOworCUJNU19Db21wYXJpc29uIHJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxM KDApKQorCQlibXMxID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsK KworCWlmICghUEdfQVJHSVNOVUxMKDEpKQorCQlibXMyID0gZGVjb2RlX3RleHRfdG9fYm1zKFBH X0dFVEFSR19URVhUX1BQKDEpKTsKKworCXJlc3VsdCA9IGJtc19zdWJzZXRfY29tcGFyZShibXMx LCBibXMyKTsKKworCWlmIChibXMxKQorCQlibXNfZnJlZShibXMxKTsKKwlpZiAoYm1zMikKKwkJ Ym1zX2ZyZWUoYm1zMik7CisKKwlQR19SRVRVUk5fSU5UMzIoKGludDMyKSByZXN1bHQpOworfQor CitEYXR1bQordGVzdF9ibXNfc2luZ2xldG9uX21lbWJlcihQR19GVU5DVElPTl9BUkdTKQorewor CUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJaW50CQkJcmVzdWx0OworCisJaWYgKCFQR19BUkdJ U05VTEwoMCkpCisJCWJtcyA9IGRlY29kZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgw KSk7CisKKwlyZXN1bHQgPSBibXNfc2luZ2xldG9uX21lbWJlcihibXMpOworCisJaWYgKGJtcykK KwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOworfQorCitEYXR1 bQordGVzdF9ibXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlC aXRtYXBzZXQgICpibXMgPSBOVUxMOworCWludDMyCQlkZWZhdWx0X21lbWJlciA9IFBHX0dFVEFS R19JTlQzMigxKTsKKwlpbnQJCQltZW1iZXI7CisJYm9vbAkJc3VjY2VzczsKKworCWlmIChQR19B UkdJU05VTEwoMCkpCisJCVBHX1JFVFVSTl9JTlQzMihkZWZhdWx0X21lbWJlcik7CisKKwlibXMg PSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisJLyoKKwkgKiBi bXNfZ2V0X3NpbmdsZXRvbl9tZW1iZXIgcmV0dXJucyBib29sIGFuZCBzdG9yZXMgcmVzdWx0IGlu IG1lbWJlcgorCSAqIHBvaW50ZXIKKwkgKi8KKwlzdWNjZXNzID0gYm1zX2dldF9zaW5nbGV0b25f bWVtYmVyKGJtcywgJm1lbWJlcik7CisJYm1zX2ZyZWUoYm1zKTsKKworCWlmIChzdWNjZXNzKQor CQlQR19SRVRVUk5fSU5UMzIobWVtYmVyKTsKKwllbHNlCisJCVBHX1JFVFVSTl9JTlQzMihkZWZh dWx0X21lbWJlcik7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19wcmV2X21lbWJlcihQR19GVU5DVElP Tl9BUkdTKQoreworCXRleHQJICAgKmJtc19kYXRhOworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7 CisJaW50MzIJCXByZXZtZW1iZXI7CisJaW50CQkJcmVzdWx0OworCisJaWYgKFBHX0FSR0lTTlVM TCgwKSkKKwkJUEdfUkVUVVJOX0lOVDMyKC0yKTsKKworCWJtc19kYXRhID0gUEdfR0VUQVJHX1RF WFRfUFAoMCk7CisJcHJldm1lbWJlciA9IFBHX0dFVEFSR19JTlQzMigxKTsKKworCWlmIChWQVJT SVpFX0FOWV9FWEhEUihibXNfZGF0YSkgPT0gMCkKKwkJUEdfUkVUVVJOX0lOVDMyKC0yKTsKKwor CWJtcyA9IGRlY29kZV90ZXh0X3RvX2JtcyhibXNfZGF0YSk7CisJcmVzdWx0ID0gYm1zX3ByZXZf bWVtYmVyKGJtcywgcHJldm1lbWJlcik7CisJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9J TlQzMihyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfb3ZlcmxhcChQR19GVU5DVElPTl9B UkdTKQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOwor CWJvb2wJCXJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMxID0gZGVjb2Rl X3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCWlmICghUEdfQVJHSVNOVUxM KDEpKQorCQlibXMyID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDEpKTsK KworCXJlc3VsdCA9IGJtc19vdmVybGFwKGJtczEsIGJtczIpOworCisJaWYgKGJtczEpCisJCWJt c19mcmVlKGJtczEpOworCWlmIChibXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JFVFVS Tl9CT09MKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19vdmVybGFwX2xpc3QoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCUFycmF5VHlwZSAgKmFy cmF5OworCUxpc3QJICAgKmJpdG1hcHNldF9saXN0ID0gTklMOworCUxpc3RDZWxsICAgKmxjOwor CWJvb2wJCXJlc3VsdDsKKwlEYXR1bQkgICAqZWxlbV9kYXR1bXM7CisJYm9vbAkgICAqZWxlbV9u dWxsczsKKwlpbnQJCQllbGVtX2NvdW50OworCWludAkJCWk7CisKKwkvKiBIYW5kbGUgZmlyc3Qg YXJndW1lbnQgKHRoZSBiaXRtYXBzZXQpICovCisJaWYgKFBHX0FSR0lTTlVMTCgwKSkKKwkJUEdf UkVUVVJOX0JPT0woZmFsc2UpOworCisJYm1zID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFS R19URVhUX1BQKDApKTsKKworCS8qIEhhbmRsZSBzZWNvbmQgYXJndW1lbnQgKGFycmF5IG9mIGJp dG1hcHNldHMpICovCisJaWYgKFBHX0FSR0lTTlVMTCgxKSkKKwl7CisJCWlmIChibXMpCisJCQli bXNfZnJlZShibXMpOworCQlQR19SRVRVUk5fQk9PTChmYWxzZSk7CisJfQorCisJYXJyYXkgPSBQ R19HRVRBUkdfQVJSQVlUWVBFX1AoMSk7CisKKwlpZiAoQVJSX0VMRU1UWVBFKGFycmF5KSAhPSBU RVhUT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVf TUlTTUFUQ0gpLAorCQkJCSBlcnJtc2coInRleHQgYXJyYXkgZXhwZWN0ZWQiKSkpOworCisJZGVj b25zdHJ1Y3RfYXJyYXkoYXJyYXksCisJCQkJCSAgVEVYVE9JRCwgLTEsIGZhbHNlLCAnaScsCisJ CQkJCSAgJmVsZW1fZGF0dW1zLCAmZWxlbV9udWxscywgJmVsZW1fY291bnQpOworCisJLyogQ29u dmVydCBlYWNoIHRleHQgZWxlbWVudCB0byBhIEJpdG1hcHNldCBhbmQgYWRkIHRvIGxpc3QgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgZWxlbV9jb3VudDsgaSsrKQorCXsKKwkJQml0bWFwc2V0ICAqbGlz dF9ibXMgPSBOVUxMOworCisJCWlmICghZWxlbV9udWxsc1tpXSkKKwkJeworCQkJdGV4dAkgICAq ZWxlbSA9IERhdHVtR2V0VGV4dFAoZWxlbV9kYXR1bXNbaV0pOworCisJCQlsaXN0X2JtcyA9IGRl Y29kZV90ZXh0X3RvX2JtcyhlbGVtKTsKKwkJfQorCisJCS8qIEFkZCB0byBsaXN0IChldmVuIGlm IE5VTEwpICovCisJCWJpdG1hcHNldF9saXN0ID0gbGFwcGVuZChiaXRtYXBzZXRfbGlzdCwgbGlz dF9ibXMpOworCX0KKworCS8qIENhbGwgdGhlIGFjdHVhbCBibXNfb3ZlcmxhcF9saXN0IGZ1bmN0 aW9uICovCisJcmVzdWx0ID0gYm1zX292ZXJsYXBfbGlzdChibXMsIGJpdG1hcHNldF9saXN0KTsK KworCS8qIENsZWFuIHVwICovCisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCS8qIEZy ZWUgYWxsIGJpdG1hcHNldHMgaW4gdGhlIGxpc3QgKi8KKwlmb3JlYWNoKGxjLCBiaXRtYXBzZXRf bGlzdCkKKwl7CisJCUJpdG1hcHNldCAgKmxpc3RfYm1zID0gKEJpdG1hcHNldCAqKSBsZmlyc3Qo bGMpOworCisJCWlmIChsaXN0X2JtcykKKwkJCWJtc19mcmVlKGxpc3RfYm1zKTsKKwl9CisJbGlz dF9mcmVlKGJpdG1hcHNldF9saXN0KTsKKworCS8qIEZyZWUgYXJyYXkgZGVjb25zdHJ1Y3Rpb24g cmVzdWx0cyAqLworCXBmcmVlKGVsZW1fZGF0dW1zKTsKKwlwZnJlZShlbGVtX251bGxzKTsKKwor CVBHX1JFVFVSTl9CT09MKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2Jtc19ub25lbXB0eV9k aWZmZXJlbmNlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1zMSA9IE5VTEws CisJCQkgICAqYm1zMiA9IE5VTEw7CisJYm9vbAkJcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05V TEwoMCkpCisJCWJtczEgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkp OworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfdGV4dF90b19ibXMo UEdfR0VUQVJHX1RFWFRfUFAoMSkpOworCisJcmVzdWx0ID0gYm1zX25vbmVtcHR5X2RpZmZlcmVu Y2UoYm1zMSwgYm1zMik7CisKKwlpZiAoYm1zMSkKKwkJYm1zX2ZyZWUoYm1zMSk7CisJaWYgKGJt czIpCisJCWJtc19mcmVlKGJtczIpOworCisJUEdfUkVUVVJOX0JPT0wocmVzdWx0KTsKK30KKwor RGF0dW0KK3Rlc3RfYm1zX21lbWJlcl9pbmRleChQR19GVU5DVElPTl9BUkdTKQoreworCXRleHQJ ICAgKmJtc19kYXRhOworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJaW50MzIJCW1lbWJlcjsK KwlpbnQJCQlyZXN1bHQ7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQlQR19SRVRVUk5fSU5U MzIoLTEpOworCisJYm1zX2RhdGEgPSBQR19HRVRBUkdfVEVYVF9QUCgwKTsKKwltZW1iZXIgPSBQ R19HRVRBUkdfSU5UMzIoMSk7CisKKwlpZiAoVkFSU0laRV9BTllfRVhIRFIoYm1zX2RhdGEpID09 IDApCisJCVBHX1JFVFVSTl9JTlQzMigtMSk7CisKKwlibXMgPSBkZWNvZGVfdGV4dF90b19ibXMo Ym1zX2RhdGEpOworCisJcmVzdWx0ID0gYm1zX21lbWJlcl9pbmRleChibXMsIG1lbWJlcik7CisJ Ym1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOworfQorCitEYXR1bQor dGVzdF9ibXNfYWRkX3JhbmdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJQml0bWFwc2V0ICAqYm1z ID0gTlVMTDsKKwlpbnQzMgkJbG93ZXIsCisJCQkJdXBwZXI7CisJdGV4dAkgICAqcmVzdWx0Owor CisJaWYgKFBHX0FSR0lTTlVMTCgxKSB8fCBQR19BUkdJU05VTEwoMikpCisJCVBHX1JFVFVSTl9O VUxMKCk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zID0gZGVjb2RlX3RleHRfdG9f Ym1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCWxvd2VyID0gUEdfR0VUQVJHX0lOVDMyKDEp OworCXVwcGVyID0gUEdfR0VUQVJHX0lOVDMyKDIpOworCisJLyogQ2hlY2sgZm9yIGludmFsaWQg cmFuZ2UgKi8KKwlpZiAodXBwZXIgPCBsb3dlcikKKwl7CisJCWlmIChibXMpCisJCQlibXNfZnJl ZShibXMpOworCQlQR19SRVRVUk5fTlVMTCgpOworCX0KKworCWJtcyA9IGJtc19hZGRfcmFuZ2Uo Ym1zLCBsb3dlciwgdXBwZXIpOworCisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b190ZXh0KGJtcyk7 CisJaWYgKGJtcykKKwkJYm1zX2ZyZWUoYm1zKTsKKworCVBHX1JFVFVSTl9URVhUX1AocmVzdWx0 KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2ludF9tZW1iZXJzKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJQml0bWFwc2V0ICAqYm1zMSA9IE5VTEwsCisJCQkgICAqYm1zMiA9IE5VTEw7CisJdGV4dAkg ICAqcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfdGV4 dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisJaWYgKCFQR19BUkdJU05VTEwoMSkp CisJCWJtczIgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOworCisJ Ym1zMSA9IGJtc19pbnRfbWVtYmVycyhibXMxLCBibXMyKTsKKworCWlmIChibXMyKQorCQlibXNf ZnJlZShibXMyKTsKKworCWlmIChibXMxID09IE5VTEwpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisK KwlyZXN1bHQgPSBlbmNvZGVfYm1zX3RvX3RleHQoYm1zMSk7CisKKwlpZiAoYm1zMSkKKwkJYm1z X2ZyZWUoYm1zMSk7CisKKwlQR19SRVRVUk5fVEVYVF9QKHJlc3VsdCk7Cit9CisKK0RhdHVtCit0 ZXN0X2Jtc19yZXBsYWNlX21lbWJlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCaXRtYXBzZXQg ICpibXMxID0gTlVMTCwKKwkJCSAgICpibXMyID0gTlVMTDsKKwlCaXRtYXBzZXQgICpyZXN1bHRf Ym1zOworCXRleHQJICAgKnJlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMx ID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCWlmICghUEdf QVJHSVNOVUxMKDEpKQorCQlibXMyID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhU X1BQKDEpKTsKKworCS8qIElNUE9SVEFOVDogYm1zX3JlcGxhY2VfbWVtYmVycyBtb2RpZmllcy9m cmVlcyB0aGUgZmlyc3QgYXJndW1lbnQgKi8KKwlyZXN1bHRfYm1zID0gYm1zX3JlcGxhY2VfbWVt YmVycyhibXMxLCBibXMyKTsKKwkvKiBibXMxIGlzIG5vdyBpbnZhbGlkLCBkb24ndCBmcmVlIGl0 ICovCisKKwlpZiAoYm1zMikKKwkJYm1zX2ZyZWUoYm1zMik7CisKKwlpZiAocmVzdWx0X2JtcyA9 PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJcmVzdWx0ID0gZW5jb2RlX2Jtc190b190 ZXh0KHJlc3VsdF9ibXMpOworCWJtc19mcmVlKHJlc3VsdF9ibXMpOworCisJUEdfUkVUVVJOX1RF WFRfUChyZXN1bHQpOworfQorCitEYXR1bQordGVzdF9ibXNfam9pbihQR19GVU5DVElPTl9BUkdT KQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJtczIgPSBOVUxMOworCUJp dG1hcHNldCAgKnJlc3VsdF9ibXM7CisJdGV4dAkgICAqcmVzdWx0OworCisJaWYgKCFQR19BUkdJ U05VTEwoMCkpCisJCWJtczEgPSBkZWNvZGVfdGV4dF90b19ibXMoUEdfR0VUQVJHX1RFWFRfUFAo MCkpOworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCWJtczIgPSBkZWNvZGVfdGV4dF90b19i bXMoUEdfR0VUQVJHX1RFWFRfUFAoMSkpOworCisJLyogSU1QT1JUQU5UOiBibXNfam9pbiBtb2Rp Zmllcy9mcmVlcyB0aGUgZmlyc3QgYXJndW1lbnQgKi8KKwlyZXN1bHRfYm1zID0gYm1zX2pvaW4o Ym1zMSwgYm1zMik7CisJLyogYm1zMSBpcyBub3cgaW52YWxpZCEgRG9uJ3QgZnJlZSBpdCAqLwor CisJaWYgKGJtczIpCisJCWJtc19mcmVlKGJtczIpOworCisJaWYgKHJlc3VsdF9ibXMgPT0gTlVM TCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKworCXJlc3VsdCA9IGVuY29kZV9ibXNfdG9fdGV4dChy ZXN1bHRfYm1zKTsKKwlibXNfZnJlZShyZXN1bHRfYm1zKTsKKworCVBHX1JFVFVSTl9URVhUX1Ao cmVzdWx0KTsKK30KKworRGF0dW0KK3Rlc3RfYm1zX2hhc2hfdmFsdWUoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlCaXRtYXBzZXQgICpibXMgPSBOVUxMOworCXVpbnQzMgkJaGFzaF9yZXN1bHQ7CisK KwlpZiAoIVBHX0FSR0lTTlVMTCgwKSkKKwkJYm1zID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dF VEFSR19URVhUX1BQKDApKTsKKworCWhhc2hfcmVzdWx0ID0gYm1zX2hhc2hfdmFsdWUoYm1zKTsK KworCWlmIChibXMpCisJCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fSU5UMzIoaGFzaF9y ZXN1bHQpOworfQorCitEYXR1bQordGVzdF9iaXRtYXBfaGFzaChQR19GVU5DVElPTl9BUkdTKQor eworCUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJQml0bWFwc2V0ICAqYm1zX3B0cjsKKwl1aW50 MzIJCWhhc2hfcmVzdWx0OworCisJaWYgKCFQR19BUkdJU05VTEwoMCkpCisJCWJtcyA9IGRlY29k ZV90ZXh0X3RvX2JtcyhQR19HRVRBUkdfVEVYVF9QUCgwKSk7CisKKwlibXNfcHRyID0gYm1zOwor CisJLyogQ2FsbCBiaXRtYXBfaGFzaCAqLworCWhhc2hfcmVzdWx0ID0gYml0bWFwX2hhc2goJmJt c19wdHIsIHNpemVvZihCaXRtYXBzZXQgKikpOworCisJLyogQ2xlYW4gdXAgKi8KKwlpZiAoIVBH X0FSR0lTTlVMTCgwKSAmJiBibXNfcHRyKQorCQlibXNfZnJlZShibXNfcHRyKTsKKworCVBHX1JF VFVSTl9JTlQzMihoYXNoX3Jlc3VsdCk7Cit9CisKK0RhdHVtCit0ZXN0X2JpdG1hcF9tYXRjaChQ R19GVU5DVElPTl9BUkdTKQoreworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMLAorCQkJICAgKmJt czIgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtc19wdHIxLAorCQkJICAgKmJtc19wdHIyOworCWlu dAkJCW1hdGNoX3Jlc3VsdDsKKworCWlmICghUEdfQVJHSVNOVUxMKDApKQorCQlibXMxID0gZGVj b2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKworCWlmICghUEdfQVJHSVNO VUxMKDEpKQorCQlibXMyID0gZGVjb2RlX3RleHRfdG9fYm1zKFBHX0dFVEFSR19URVhUX1BQKDEp KTsKKworCS8qIFNldCB1cCBwb2ludGVycyB0byB0aGUgQml0bWFwc2V0cyAqLworCWJtc19wdHIx ID0gYm1zMTsKKwlibXNfcHRyMiA9IGJtczI7CisKKwkvKiBDYWxsIGJpdG1hcF9tYXRjaCB3aXRo IGFkZHJlc3NlcyBvZiB0aGUgQml0bWFwc2V0IHBvaW50ZXJzICovCisJbWF0Y2hfcmVzdWx0ID0g Yml0bWFwX21hdGNoKCZibXNfcHRyMSwgJmJtc19wdHIyLCBzaXplb2YoQml0bWFwc2V0ICopKTsK KworCS8qIENsZWFuIHVwICovCisJaWYgKGJtczEpCisJCWJtc19mcmVlKGJtczEpOworCWlmIChi bXMyKQorCQlibXNfZnJlZShibXMyKTsKKworCVBHX1JFVFVSTl9JTlQzMihtYXRjaF9yZXN1bHQp OworfQorCitEYXR1bQordGVzdF9yYW5kb21fb3BlcmF0aW9ucyhQR19GVU5DVElPTl9BUkdTKQor eworCUJpdG1hcHNldCAgKmJtczEgPSBOVUxMOworCUJpdG1hcHNldCAgKmJtczIgPSBOVUxMOwor CUJpdG1hcHNldCAgKmJtcyA9IE5VTEw7CisJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKKwlw Z19wcm5nX3N0YXRlIHN0YXRlOworCXVpbnQ2NAkJc2VlZCA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKKwlpbnQJCQludW1fb3BzID0gNTAwMDsKKwlpbnQJCQl0b3RhbF9vcHMgPSAwOworCWludAkJ CW1heF9yYW5nZSA9IDIwMDA7CisJaW50CQkJbWluX3ZhbHVlID0gMDsKKwlpbnQJCQltZW1iZXI7 CisJaW50CQkgICAqbWVtYmVyczsKKwlpbnQJCQludW1fbWVtYmVycyA9IDA7CisKKwlpZiAoIVBH X0FSR0lTTlVMTCgwKSAmJiBQR19HRVRBUkdfSU5UMzIoMCkgPiAwKQorCQlzZWVkID0gUEdfR0VU QVJHX0lOVDMyKDApOworCisJaWYgKCFQR19BUkdJU05VTEwoMSkpCisJCW51bV9vcHMgPSBQR19H RVRBUkdfSU5UMzIoMSk7CisKKwlpZiAoIVBHX0FSR0lTTlVMTCgyKSkKKwkJbWF4X3JhbmdlID0g UEdfR0VUQVJHX0lOVDMyKDIpOworCisJaWYgKCFQR19BUkdJU05VTEwoMykpCisJCW1pbl92YWx1 ZSA9IFBHX0dFVEFSR19JTlQzMigzKTsKKworCXBnX3Bybmdfc2VlZCgmc3RhdGUsIHNlZWQpOwor CW1lbWJlcnMgPSBwYWxsb2Moc2l6ZW9mKGludCkgKiBudW1fb3BzKTsKKworCS8qIFBoYXNlIDE6 IFJhbmRvbSBpbnNlcnRpb25zICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb3BzIC8gMjsg aSsrKQorCXsKKwkJbWVtYmVyID0gcGdfcHJuZ191aW50MzIoJnN0YXRlKSAlIG1heF9yYW5nZSAr IG1pbl92YWx1ZTsKKworCQlpZiAoIWJtc19pc19tZW1iZXIobWVtYmVyLCBibXMxKSkKKwkJewor CQkJbWVtYmVyc1tudW1fbWVtYmVycysrXSA9IG1lbWJlcjsKKwkJCWJtczEgPSBibXNfYWRkX21l bWJlcihibXMxLCBtZW1iZXIpOworCQl9CisJfQorCisJLyogUGhhc2UgMjogUmFuZG9tIHNldCBv cGVyYXRpb25zICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb3BzIC8gNDsgaSsrKQorCXsK KwkJbWVtYmVyID0gcGdfcHJuZ191aW50MzIoJnN0YXRlKSAlIG1heF9yYW5nZSArIG1pbl92YWx1 ZTsKKworCQlibXMyID0gYm1zX2FkZF9tZW1iZXIoYm1zMiwgbWVtYmVyKTsKKwl9CisKKwkvKiBU ZXN0IHVuaW9uICovCisJcmVzdWx0ID0gYm1zX3VuaW9uKGJtczEsIGJtczIpOworCUVYUEVDVF9O T1RfTlVMTChyZXN1bHQpOworCisJLyogVmVyaWZ5IHVuaW9uIGNvbnRhaW5zIGFsbCBtZW1iZXJz IGZyb20gZmlyc3Qgc2V0ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fbWVtYmVyczsgaSsr KQorCXsKKwkJaWYgKCFibXNfaXNfbWVtYmVyKG1lbWJlcnNbaV0sIHJlc3VsdCkpCisJCQllbG9n KEVSUk9SLCAidW5pb24gbWlzc2luZyBtZW1iZXIgJWQiLCBtZW1iZXJzW2ldKTsKKwl9CisJYm1z X2ZyZWUocmVzdWx0KTsKKworCS8qIFRlc3QgaW50ZXJzZWN0aW9uICovCisJcmVzdWx0ID0gYm1z X2ludGVyc2VjdChibXMxLCBibXMyKTsKKwlpZiAocmVzdWx0ICE9IE5VTEwpCisJeworCQltZW1i ZXIgPSAtMTsKKworCQl3aGlsZSAoKG1lbWJlciA9IGJtc19uZXh0X21lbWJlcihyZXN1bHQsIG1l bWJlcikpID49IDApCisJCXsKKwkJCWlmICghYm1zX2lzX21lbWJlcihtZW1iZXIsIGJtczEpIHx8 ICFibXNfaXNfbWVtYmVyKG1lbWJlciwgYm1zMikpCisJCQkJZWxvZyhFUlJPUiwgImludGVyc2Vj dGlvbiBjb250YWlucyBpbnZhbGlkIG1lbWJlciAlZCIsIG1lbWJlcik7CisJCX0KKwkJYm1zX2Zy ZWUocmVzdWx0KTsKKwl9CisKKwkvKiBQaGFzZSAzOiBUZXN0IHJhbmdlIG9wZXJhdGlvbnMgKi8K KwlyZXN1bHQgPSBOVUxMOworCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKwl7CisJCWlu dAkJCWxvd2VyID0gcGdfcHJuZ191aW50MzIoJnN0YXRlKSAlIDEwMDsKKwkJaW50CQkJdXBwZXIg PSBsb3dlciArIChwZ19wcm5nX3VpbnQzMigmc3RhdGUpICUgMjApOworCisJCXJlc3VsdCA9IGJt c19hZGRfcmFuZ2UocmVzdWx0LCBsb3dlciwgdXBwZXIpOworCX0KKwlpZiAocmVzdWx0ICE9IE5V TEwpCisJeworCQlFWFBFQ1RfVFJVRShibXNfbnVtX21lbWJlcnMocmVzdWx0KSA+IDApOworCQli bXNfZnJlZShyZXN1bHQpOworCX0KKworCXBmcmVlKG1lbWJlcnMpOworCWJtc19mcmVlKGJtczEp OworCWJtc19mcmVlKGJtczIpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb3BzOyBpKysp CisJeworCQltZW1iZXIgPSBwZ19wcm5nX3VpbnQzMigmc3RhdGUpICUgbWF4X3JhbmdlICsgbWlu X3ZhbHVlOworCQlzd2l0Y2ggKHBnX3BybmdfdWludDMyKCZzdGF0ZSkgJSAzKQorCQl7CisJCQlj YXNlIDA6CQkJCS8qIGFkZCAqLworCQkJCWJtcyA9IGJtc19hZGRfbWVtYmVyKGJtcywgbWVtYmVy KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMToJCQkJLyogZGVsZXRlICovCisJCQkJaWYgKGJtcyAh PSBOVUxMKQorCQkJCXsKKwkJCQkJYm1zID0gYm1zX2RlbF9tZW1iZXIoYm1zLCBtZW1iZXIpOwor CQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgMjoJCQkJLyogdGVzdCBtZW1iZXJzaGlwICovCisJ CQkJaWYgKGJtcyAhPSBOVUxMKQorCQkJCXsKKwkJCQkJYm1zX2lzX21lbWJlcihtZW1iZXIsIGJt cyk7CisJCQkJfQorCQkJCWJyZWFrOworCQl9CisJCXRvdGFsX29wcysrOworCX0KKworCWlmIChi bXMpCisJCWJtc19mcmVlKGJtcyk7CisKKwlQR19SRVRVUk5fSU5UMzIodG90YWxfb3BzKTsKK30K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBz ZXQuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBz ZXQuY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGQwMmVj OGJmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L3Rlc3RfYml0bWFwc2V0LmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ1Rlc3Qg Y29kZSBmb3IgQml0bWFwc2V0JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRo bmFtZSA9ICckbGliZGlyL3Rlc3RfYml0bWFwc2V0JworcmVsb2NhdGFibGUgPSB0cnVlCi0tIAoy LjQ5LjAKCg== --68cc5485_7677a82b_6415--