Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vx8du-00HI9U-10 for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 19:09:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vx8ds-002a48-2Y for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Mar 2026 19:09:21 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vx8dr-002a3y-1r for pgsql-hackers@lists.postgresql.org; Mon, 02 Mar 2026 19:09:20 +0000 Received: from fout-a6-smtp.messagingengine.com ([103.168.172.149]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vx8dl-000000003ra-0Y9r for pgsql-hackers@postgresql.org; Mon, 02 Mar 2026 19:09:19 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id AE052EC05A5; Mon, 2 Mar 2026 14:09:11 -0500 (EST) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Mon, 02 Mar 2026 14:09:11 -0500 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=1772478551; x=1772564951; bh=5+1E8bYt+4 /z0sGzw2oMBxggRKMEmxXzlKg6F/f/Uoc=; b=KgYG1gK7lo80CAH4ldr75fsv9M imlrmggO40oUXBl11ZCrxBo/ncHnipavnG9Ij2EabpWCYZsH/3U+Nf89QdqvxLc7 yxb1XaAakVOc9Hl+K32LCpCMQgtVXW4J6wed50TkgZp6paiNXIDMgZyZhMi+1S+d XoGpaqTqNMto81nSCl9/Jg34SsOqoiwfPf4Fr5qzkeiEBUk/0bbuGBg2PDcM+zk2 Mt/KT1kq1/rs0IwjpdBH9YgAiG8E6k0chSUk0ETUMr4wkh2uHxDougEfD7hj4TsT kDZSLXiNzAOZyJafScS0ExxMGcO65osFxz4VVleh66UsCedt5i9YLxS+YYOg== 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= 1772478551; x=1772564951; bh=5+1E8bYt+4/z0sGzw2oMBxggRKMEmxXzlKg 6F/f/Uoc=; b=M5Ozn1qO/jhl5wVbPK9EL8h3fE7ACFTGgU3Xb1+CRSTHRgpEfm8 ButdhrtfT0SZUgkkoe07+n4Fc5SIduVdpPufUjAzkZ6zLoe9zO/yvY3Saqq5wYYk D02IQTv0UnZ+9IlKUV69UUdfx2N41bRGbv69Qm9nDq+2eJCdlpyTRE4iIAM4qCeC ztU/QGmFtivBO03LG0e1XCohY00SeUB5U/mbkgIBnJ/OwE1VYl9HPf+z8AKWY08s GFMgTydjy4uvT4hjydzRyD5mjcwyZWeMbA41cDwI+VuVzZUlwoHQlDvrbG/OJyZv E4Vhr2mqOc7zrmFHK2Tvkw8yp7W2qVCjZgg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvheekgeekucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefoggffhffvvefkjghfufgtsehmtderre ertddtnecuhfhrohhmpedfifhrvghguceuuhhrugdfuceoghhrvghgsegsuhhrugdrmhgv qeenucggtffrrghtthgvrhhnpefhveelheeffeffudelvddutdfghfeileeikeeufefhhf elvdffuddvvdejleekleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpehgrhgvghessghurhgurdhmvgdpnhgspghrtghpthhtohepvddpmhhoug gvpehsmhhtphhouhhtpdhrtghpthhtohepphhgshhqlhesjhdquggrvhhishdrtghomhdp rhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 306A9C4006E; Mon, 2 Mar 2026 14:09:11 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: A1gxZgRQNkgk Date: Mon, 02 Mar 2026 14:08:50 -0500 From: "Greg Burd" To: "Jeff Davis" Cc: pgsql-hackers Message-Id: In-Reply-To: References: <5165C147-B476-4E3D-AAA9-11C0B966FC4D@greg.burd.me> <9394564A-5764-4DCA-8845-8AE102DE61DC@greg.burd.me> <97769442-2ed7-4fe0-a393-7e2b5ff7ff58@app.fastmail.com> <3e1b9075c92808a7356e79087ba51910e5db5a30.camel@j-davis.com> <9bb9bdd6-e1fe-48fe-837d-4d0289396f1c@app.fastmail.com> Subject: Re: Expanding HOT updates for expression and partial indexes Content-Type: multipart/mixed; boundary=e01e3c6d1a964d21a0f843c0c79509ed List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --e01e3c6d1a964d21a0f843c0c79509ed Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello Jeff, hackers, In v33 I've updated a test in triggers.sql to address differences across platforms identified by the cf-bot and rebased the work. I thought it might be prudent to add tests that validate all the corner cases of HOT that I could come up with, maybe too many (you tell me). In addition, because code that impacts HOT is also involved in what is WAL logged for the purposes of logical replication, I've added tests that try to explore the corners of that too. The goal of these first few patches is to NOT change the behavior of these things, but to only move the logic into the executor and out of heap then it makes sense to validate that explicitly. At some point when I get back to $subjet I'll want to document how things changed. The best way to do that is by changing tests along with code. So, that is "0001" in this v33 patch set. I've also run longer performance tests which show minimal performance differences between master and patched. Workload 60s 300s 600s jsonb_write_batch +14.8% -7.0% +0.1% jsonb_write_single +0.3% +0.2% -0.0% license_write_single +0.4% +0.2% -0.1% gin_write_single -0.3% -0.2% -0.4% pgbench_simple-update +3.2% +6.2% +0.9% pgbench_tpcb-like -1.1% +0.8% -2.0% Changing tests isn't something I take lightly, I dug into this quite a bit. I ran an analysis of ALL regression tests comparing master vs patched after instrumenting the code (see below) so I could record HOT and replica identity decisions and record where the tuple landed on the page. Patched code produced: simple_heap_update: 17,028 calls (72.5% - catalog updates, direct heap ops) heapam_tuple_update: 6,462 calls (27.5% - executor path via table AM) Total entry points: 23,490 This matched master's log line output for the same tests. Replica identity decisions were identical, 342 unique patterns with 0 differences. HOT eligibility was also identical, 398 unique patterns matched, again 0 differences. The physical placement of tuples on pages was 99.991% identical, only 2 of 23,473 updates had different buffer placement. Across test runs there were a few differences noted for pg_sequence, target, and wslot. Both master and patched agreed on hot_allowed=1 (logic identical), but in some cases use_hot_update differed (buffer placement, newbuf =?= buffer). To me this reads as non-deterministic behavior, not a bug introduced in this patch. At this point I'd say that v33 patch is functionally correct and performance neutral. This set of changes isn't exactly exciting on the surface, but I feel that it opens the door to other changes that will be more interesting/valuable down the line. Thank you for your time and interest. best. -greg COMPARISON TESTING NOTES: --------------------------------------------------------------------------------------- src/backend/access/heap/heapam.c 3514: elog(LOG, "PATCHED heap_update (replica check): rel=%s otid=(%u,%u) rep_id_key_required=%d", 3515- RelationGetRelationName(relation), 3516- ItemPointerGetBlockNumber(otid), 3517- ItemPointerGetOffsetNumber(otid), 3518- rep_id_key_required); 3519- -- 4106: elog(LOG, "PATCHED heap_update (final HOT): rel=%s otid=(%u,%u) hot_allowed=%d newbuf==buffer=%d use_hot_update=%d", 4107- RelationGetRelationName(relation), 4108- ItemPointerGetBlockNumber(otid), 4109- ItemPointerGetOffsetNumber(otid), 4110- hot_allowed, (newbuf == buffer), use_hot_update); 4111- -- 4693: elog(LOG, "PATCHED simple_heap_update: rel=%s otid=(%u,%u) hot_allowed=%d summarized_only=%d lockmode=%d", 4694- RelationGetRelationName(relation), 4695- ItemPointerGetBlockNumber(otid), 4696- ItemPointerGetOffsetNumber(otid), 4697- hot_allowed, summarized_only, lockmode); 4698- src/backend/access/heap/heapam_handler.c 333: elog(LOG, "PATCHED heapam_tuple_update: rel=%s otid=(%u,%u) hot_allowed=%d summarized_only=%d lockmode=%d", 334- RelationGetRelationName(relation), 335- ItemPointerGetBlockNumber(otid), 336- ItemPointerGetOffsetNumber(otid), 337- hot_allowed, summarized_only, *lockmode); --e01e3c6d1a964d21a0f843c0c79509ed Content-Disposition: attachment; filename*0="v33-0001-Add-comprehensive-tests-for-HOT-updates-and-repl.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v33-0001-Add-comprehensive-tests-for-HOT-updates-and-repl.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA5NWNkYTU2YjVlOWQ1MzIzMmM5YjVmOTVhYmU0MjNlODc4YjFmZTc4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog RnJpLCAyNyBGZWIgMjAyNiAxMjoxOTowNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjMzIDEv Ml0gQWRkIGNvbXByZWhlbnNpdmUgdGVzdHMgZm9yIEhPVCB1cGRhdGVzIGFuZCByZXBsaWNh CiBpZGVudGl0eQoKQWRkcyByZWdyZXNzaW9uIGFuZCBpc29sYXRpb24gdGVzdHMgY292ZXJp bmc6Ci0gSE9UIHVwZGF0ZSBkZWNpc2lvbnMgYWNyb3NzIHZhcmlvdXMgaW5kZXggdHlwZXMg KEItdHJlZSwgQlJJTiwKICBwYXJ0aWFsLCBleHByZXNzaW9uLCBtdWx0aS1jb2x1bW4sIHVu aXF1ZSBjb25zdHJhaW50cykKLSBSZXBsaWNhIGlkZW50aXR5IGtleSBleHRyYWN0aW9uIGZv ciBsb2dpY2FsIHJlcGxpY2F0aW9uCiAgKERFRkFVTFQsIEZVTEwsIFVTSU5HIElOREVYLCBO T1RISU5HIG1vZGVzKQotIENvbmN1cnJlbnQgSE9UIHVwZGF0ZSBzY2VuYXJpb3MgKGxvY2tp bmcsIGJsb2NraW5nLCBpbmRleCBzY2FucywKICBIT1QgY2hhaW5zLCBGT1IgVVBEQVRFL0tF WSBTSEFSRSBpbnRlcmFjdGlvbnMpCgpSZWdyZXNzaW9uIHRlc3RzOgotIGhvdF91cGRhdGVz LnNxbDogMTAgc2NlbmFyaW9zIHRlc3RpbmcgSE9UIGVsaWdpYmlsaXR5Ci0gcmVwbGljYV9p ZGVudGl0eV9sb2dnaW5nLnNxbDogMTEgc2NlbmFyaW9zIHZlcmlmeWluZyByZXBsaWNhCiAg aWRlbnRpdHkga2V5cyBsb2dnZWQgdG8gV0FMIHZpYSB0ZXN0X2RlY29kaW5nCgpJc29sYXRp b24gdGVzdHM6Ci0gaG90X3VwZGF0ZXNfY29uY3VycmVudC5zcGVjOiBjb25jdXJyZW50IHVw ZGF0ZXMgb24gc2FtZS9kaWZmZXJlbnQgcm93cwotIGhvdF91cGRhdGVzX2luZGV4X3NjYW4u c3BlYzogaW50ZXJhY3Rpb25zIHdpdGggaW5kZXggc2NhbnMgYW5kIHJvdyBsb2NrcwotIGhv dF91cGRhdGVzX2NoYWluLnNwZWM6IEhPVCBjaGFpbiBidWlsZGluZyBhbmQgc25hcHNob3Qg aXNvbGF0aW9uCi0tLQogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19jaGFp bi5vdXQgIHwgMTQ0ICsrKysKIC4uLi9leHBlY3RlZC9ob3RfdXBkYXRlc19jb25jdXJyZW50 Lm91dCAgICAgICB8IDE0MyArKysrCiAuLi4vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfaW5kZXhf c2Nhbi5vdXQgICAgICAgfCAxMjYgKysrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlICAgICAgICAgfCAgIDMgKwogLi4uL2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBk YXRlc19jaGFpbi5zcGVjICAgIHwgMTEwICsrKwogLi4uL3NwZWNzL2hvdF91cGRhdGVzX2Nv bmN1cnJlbnQuc3BlYyAgICAgICAgIHwgMTA3ICsrKwogLi4uL3NwZWNzL2hvdF91cGRhdGVz X2luZGV4X3NjYW4uc3BlYyAgICAgICAgIHwgIDkxICsrKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgICAgIHwgNzI1ICsrKysrKysrKysrKysrKysrKwog Li4uL2V4cGVjdGVkL3JlcGxpY2FfaWRlbnRpdHlfbG9nZ2luZy5vdXQgICAgIHwgMzk2ICsr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgNyArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgICAgICAg ICAgfCA1NTMgKysrKysrKysrKysrKwogLi4uL3JlZ3Jlc3Mvc3FsL3JlcGxpY2FfaWRlbnRp dHlfbG9nZ2luZy5zcWwgIHwgMzQ5ICsrKysrKysrKwogMTIgZmlsZXMgY2hhbmdlZCwgMjc1 NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9u L2V4cGVjdGVkL2hvdF91cGRhdGVzX2NoYWluLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19jb25jdXJyZW50Lm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBk YXRlc19pbmRleF9zY2FuLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy9ob3RfdXBkYXRlc19jaGFpbi5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NvbmN1cnJlbnQuc3BlYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBkYXRl c19pbmRleF9zY2FuLnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcmVwbGljYV9pZGVudGl0eV9sb2dnaW5nLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3JlcGxpY2FfaWRlbnRpdHlf bG9nZ2luZy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv aG90X3VwZGF0ZXNfY2hhaW4ub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2hv dF91cGRhdGVzX2NoYWluLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNTAzMjUyMDA5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfY2hhaW4ub3V0CkBAIC0wLDAgKzEsMTQ0IEBACitQ YXJzZWQgdGVzdCBzcGVjIHdpdGggNSBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFfYmVnaW4gczFfaG90X3VwZGF0ZTEgczFfaG90X3VwZGF0ZTIgczFfaG90X3VwZGF0 ZTMgczFfY29tbWl0IHMxX3NlbGVjdCBzMV92ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2luOiBC RUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTE6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2lu ZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0 ZTI6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTInIFdI RVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0ZTM6IFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTMnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29t bWl0OiBDT01NSVQ7CitzdGVwIHMxX3NlbGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDE7CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDF8ICAgICAgICAxMDB8dXBkYXRlMyAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFfdmVyaWZ5X2hvdDogCisgICAgLS0gQ2hlY2sgZm9yIEhP VCBjaGFpbjogTFBfUkVESVJFQ1Qgb3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8g c2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisg ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQor ICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBj aGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAg ICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRp ZmZlcmVudCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9iZWdpbiBz Ml9zZWxlY3RfYmVmb3JlIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUxIHMxX2hvdF91cGRhdGUy IHMxX2NvbW1pdCBzMl9zZWxlY3RfYWZ0ZXIgczJfY29tbWl0CitzdGVwIHMyX2JlZ2luOiBC RUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMl9zZWxlY3Rf YmVmb3JlOiBTRUxFQ1Qgbm9uX2luZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaWQg PSAxOworbm9uX2luZGV4ZWRfY29sCistLS0tLS0tLS0tLS0tLS0KK2luaXRpYWwgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0 ZTE6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdI RVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTInIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29t bWl0OiBDT01NSVQ7CitzdGVwIHMyX3NlbGVjdF9hZnRlcjogU0VMRUNUIG5vbl9pbmRleGVk X2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsKK25vbl9pbmRleGVkX2NvbAorLS0t LS0tLS0tLS0tLS0tCitpbml0aWFsICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9jb21t aXQ6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX2JlZ2luIHMxX2hvdF91 cGRhdGUxIHMxX2hvdF91cGRhdGUyIHMxX2NvbW1pdCBzM19iZWdpbiBzM19ub25faG90X3Vw ZGF0ZSBzM19jb21taXQgczFfc2VsZWN0CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAg czFfaG90X3VwZGF0ZTE6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0g J3VwZGF0ZTEnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0ZTI6IFVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTInIFdIRVJFIGlkID0gMTsK K3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX2JlZ2luOiBCRUdJTjsKK3N0ZXAg czNfbm9uX2hvdF91cGRhdGU6IFVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAx NTAgV0hFUkUgaWQgPSAxOworc3RlcCBzM19jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfc2Vs ZWN0OiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsKK2lkfGluZGV4ZWRf Y29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisg MXwgICAgICAgIDE1MHx1cGRhdGUyICAgICAgICAKKygxIHJvdykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogczFfYmVnaW4gczFfaG90X3VwZGF0ZTEgczFfY29tbWl0IHMzX2JlZ2lu IHMzX25vbl9ob3RfdXBkYXRlIHMzX2NvbW1pdCBzNF9iZWdpbiBzNF9ob3RfYWZ0ZXJfbm9u X2hvdCBzNF9jb21taXQgczRfc2VsZWN0IHM0X3ZlcmlmeV9ob3QKK3N0ZXAgczFfYmVnaW46 IEJFR0lOOworc3RlcCBzMV9ob3RfdXBkYXRlMTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25f aW5kZXhlZF9jb2wgPSAndXBkYXRlMScgV0hFUkUgaWQgPSAxOworc3RlcCBzMV9jb21taXQ6 IENPTU1JVDsKK3N0ZXAgczNfYmVnaW46IEJFR0lOOworc3RlcCBzM19ub25faG90X3VwZGF0 ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7 CitzdGVwIHMzX2NvbW1pdDogQ09NTUlUOworc3RlcCBzNF9iZWdpbjogQkVHSU47CitzdGVw IHM0X2hvdF9hZnRlcl9ub25faG90OiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVk X2NvbCA9ICdhZnRlcl9ub25faG90JyBXSEVSRSBpZCA9IDE7CitzdGVwIHM0X2NvbW1pdDog Q09NTUlUOworc3RlcCBzNF9zZWxlY3Q6IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUg aWQgPSAxOworaWR8aW5kZXhlZF9jb2x8bm9uX2luZGV4ZWRfY29sCistLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAxfCAgICAgICAgMTUwfGFmdGVyX25vbl9ob3QgIAorKDEg cm93KQorCitzdGVwIHM0X3ZlcmlmeV9ob3Q6IAorICAgIC0tIENoZWNrIGZvciBuZXcgSE9U IGNoYWluIGFmdGVyIG5vbi1IT1QgdXBkYXRlIGJyb2tlIHRoZSBwcmV2aW91cyBjaGFpbgor ICAgIFNFTEVDVCBDT1VOVCgqKSA+IDAgQVMgaGFzX2hvdF9jaGFpbgorICAgIEZST00gaGVh cF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnaG90X3Rlc3QnLCAwKSkKKyAgICBXSEVSRSBs cF9mbGFncyA9IDIKKyAgICAgICBPUiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAgICAg IEFORCAodF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCA9IDAKKyAgICAgICAgICAgQU5E IHRfY3RpZCAhPSAoJygwLCcgfHwgbHAgfHwgJyknKTo6dGlkKTsKKworaGFzX2hvdF9jaGFp bgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlMSBzMV9ob3RfdXBkYXRlMiBz NV9iZWdpbiBzNV9ob3RfdXBkYXRlX3JvdzJfMSBzNV9ob3RfdXBkYXRlX3JvdzJfMiBzMV9j b21taXQgczVfY29tbWl0IHMxX3NlbGVjdCBzNV9zZWxlY3QgczFfdmVyaWZ5X2hvdCBzNV92 ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTE6 IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdIRVJF IGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQgbm9u X2luZGV4ZWRfY29sID0gJ3VwZGF0ZTInIFdIRVJFIGlkID0gMTsKK3N0ZXAgczVfYmVnaW46 IEJFR0lOOworc3RlcCBzNV9ob3RfdXBkYXRlX3JvdzJfMTogVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAncm93Ml91cGRhdGUxJyBXSEVSRSBpZCA9IDI7CitzdGVw IHM1X2hvdF91cGRhdGVfcm93Ml8yOiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVk X2NvbCA9ICdyb3cyX3VwZGF0ZTInIFdIRVJFIGlkID0gMjsKK3N0ZXAgczFfY29tbWl0OiBD T01NSVQ7CitzdGVwIHM1X2NvbW1pdDogQ09NTUlUOworc3RlcCBzMV9zZWxlY3Q6IFNFTEVD VCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxOworaWR8aW5kZXhlZF9jb2x8bm9uX2lu ZGV4ZWRfY29sCistLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAxfCAgICAgICAg MTAwfHVwZGF0ZTIgICAgICAgIAorKDEgcm93KQorCitzdGVwIHM1X3NlbGVjdDogU0VMRUNU ICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDI7CitpZHxpbmRleGVkX2NvbHxub25faW5k ZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDJ8ICAgICAgICAy MDB8cm93Ml91cGRhdGUyICAgCisoMSByb3cpCisKK3N0ZXAgczFfdmVyaWZ5X2hvdDogCisg ICAgLS0gQ2hlY2sgZm9yIEhPVCBjaGFpbjogTFBfUkVESVJFQ1Qgb3IgdHVwbGUgd2l0aCB0 X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBB UyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJF Q1QgaW5kaWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwK KyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0g c2FtZSBwYWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcp Jyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0t LS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHM1X3ZlcmlmeV9o b3Q6IAorICAgIC0tIENoZWNrIGZvciBIT1QgY2hhaW4gb24gcGFnZSAwCisgICAgU0VMRUNU IENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRl bXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0g MgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0 aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMAorICAgICAgICAgICBBTkQgdF9jdGlkICE9 ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOworCitoYXNfaG90X2NoYWluCistLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19jb25jdXJyZW50Lm91dCBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19jb25jdXJyZW50Lm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjFhOGIwY2I3YjIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNf Y29uY3VycmVudC5vdXQKQEAgLTAsMCArMSwxNDMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0 aCA0IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3Rf dXBkYXRlIHMyX2JlZ2luIHMyX2hvdF91cGRhdGUgczFfY29tbWl0IHMyX2NvbW1pdCBzMV9z ZWxlY3QgczJfc2VsZWN0IHMyX3ZlcmlmeV9ob3QKK3N0ZXAgczFfYmVnaW46IEJFR0lOOwor c3RlcCBzMV9ob3RfdXBkYXRlOiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2Nv bCA9ICd1cGRhdGVkX3MxJyBXSEVSRSBpZCA9IDE7CitzdGVwIHMyX2JlZ2luOiBCRUdJTjsK K3N0ZXAgczJfaG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9j b2wgPSAndXBkYXRlZF9zMicgV0hFUkUgaWQgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMx X2NvbW1pdDogQ09NTUlUOworc3RlcCBzMl9ob3RfdXBkYXRlOiA8Li4uIGNvbXBsZXRlZD4K K3N0ZXAgczJfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX3NlbGVjdDogU0VMRUNUICogRlJP TSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9j b2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDF8ICAgICAgICAxMDB8dXBk YXRlZF9zMiAgICAgCisoMSByb3cpCisKK3N0ZXAgczJfc2VsZWN0OiBTRUxFQ1QgKiBGUk9N IGhvdF90ZXN0IFdIRVJFIGlkID0gMTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2Nv bAorLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgMXwgICAgICAgIDEwMHx1cGRh dGVkX3MyICAgICAKKygxIHJvdykKKworc3RlcCBzMl92ZXJpZnlfaG90OiAKKyAgICAtLSBD aGVjayBmb3IgSE9UIGNoYWluOiBsb29rIGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9Mikg b3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNU IENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRl bXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0g MiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVsw XTo6aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCco MCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFz X2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMzX2JlZ2lu IHMzX25vbl9ob3RfdXBkYXRlIHMxX2NvbW1pdCBzM19jb21taXQgczNfc2VsZWN0IHMzX3Zl cmlmeV9pbmRleAorc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX2hvdF91cGRhdGU6 IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWRfczEnIFdI RVJFIGlkID0gMTsKK3N0ZXAgczNfYmVnaW46IEJFR0lOOworc3RlcCBzM19ub25faG90X3Vw ZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9 IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX25v bl9ob3RfdXBkYXRlOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMzX3NlbGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7 CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLQorIDF8ICAgICAgICAxNTB8dXBkYXRlZF9zMSAgICAgCisoMSByb3cpCisK K3N0ZXAgczNfdmVyaWZ5X2luZGV4OiAKKyAgICAtLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0 ZWQgKHByb3ZlcyBub24tSE9UKQorICAgIFNFTEVDVCBDT1VOVCgqKSA9IDEgQVMgaW5kZXhf dXBkYXRlZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgIFNF TEVDVCBDT1VOVCgqKSA9IDAgQVMgb2xkX3ZhbHVlX2dvbmUgRlJPTSBob3RfdGVzdCBXSEVS RSBpbmRleGVkX2NvbCA9IDEwMDsKKworaW5kZXhfdXBkYXRlZAorLS0tLS0tLS0tLS0tLQor dCAgICAgICAgICAgIAorKDEgcm93KQorCitvbGRfdmFsdWVfZ29uZQorLS0tLS0tLS0tLS0t LS0KK3QgICAgICAgICAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMzX2JlZ2luIHMzX25vbl9ob3RfdXBkYXRlIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczNf Y29tbWl0IHMxX2NvbW1pdCBzMV9zZWxlY3QgczFfdmVyaWZ5X2hvdAorc3RlcCBzM19iZWdp bjogQkVHSU47CitzdGVwIHMzX25vbl9ob3RfdXBkYXRlOiBVUERBVEUgaG90X3Rlc3QgU0VU IGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfYmVnaW46IEJFR0lO Oworc3RlcCBzMV9ob3RfdXBkYXRlOiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVk X2NvbCA9ICd1cGRhdGVkX3MxJyBXSEVSRSBpZCA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czNfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX2hvdF91cGRhdGU6IDwuLi4gY29tcGxldGVk Pgorc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfc2VsZWN0OiBTRUxFQ1QgKiBG Uk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVk X2NvbAorLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgMXwgICAgICAgIDE1MHx1 cGRhdGVkX3MxICAgICAKKygxIHJvdykKKworc3RlcCBzMV92ZXJpZnlfaG90OiAKKyAgICAt LSBDaGVjayBmb3IgSE9UIGNoYWluOiBsb29rIGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9 Mikgb3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VM RUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdz ID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0 X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50 KVswXTo6aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0g KCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKwor aGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHM0X2Jl Z2luIHM0X2hvdF91cGRhdGVfcm93MiBzMV9jb21taXQgczRfY29tbWl0IHMxX3NlbGVjdCBz NF9zZWxlY3QgczFfdmVyaWZ5X2hvdCBzNF92ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2luOiBC RUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5k ZXhlZF9jb2wgPSAndXBkYXRlZF9zMScgV0hFUkUgaWQgPSAxOworc3RlcCBzNF9iZWdpbjog QkVHSU47CitzdGVwIHM0X2hvdF91cGRhdGVfcm93MjogVVBEQVRFIGhvdF90ZXN0IFNFVCBu b25faW5kZXhlZF9jb2wgPSAndXBkYXRlZF9zNCcgV0hFUkUgaWQgPSAyOworc3RlcCBzMV9j b21taXQ6IENPTU1JVDsKK3N0ZXAgczRfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX3NlbGVj dDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7CitpZHxpbmRleGVkX2Nv bHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDF8 ICAgICAgICAxMDB8dXBkYXRlZF9zMSAgICAgCisoMSByb3cpCisKK3N0ZXAgczRfc2VsZWN0 OiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMjsKK2lkfGluZGV4ZWRfY29s fG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgMnwg ICAgICAgIDIwMHx1cGRhdGVkX3M0ICAgICAKKygxIHJvdykKKworc3RlcCBzMV92ZXJpZnlf aG90OiAKKyAgICAtLSBDaGVjayBmb3IgSE9UIGNoYWluOiBsb29rIGZvciBMUF9SRURJUkVD VCAobHBfZmxhZ3M9Mikgb3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBw YWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJP TSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgor ICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFO RCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVu dCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHM0X3ZlcmlmeV9ob3Q6IAorICAgIC0tIENoZWNrIGZvciBI T1QgY2hhaW4gb24gcGFnZSAwCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90 X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVz dCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMg Tk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50 ID0gMAorICAgICAgICAgICBBTkQgdF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0 aWQpOworCitoYXNfaG90X2NoYWluCistLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgCiso MSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3Rf dXBkYXRlc19pbmRleF9zY2FuLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9o b3RfdXBkYXRlc19pbmRleF9zY2FuLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZDcyMzIyYjIxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfaW5kZXhfc2Nhbi5vdXQKQEAgLTAsMCAr MSwxMjYgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0IHNlc3Npb25zCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMyX2JlZ2luIHMyX2luZGV4 X3NjYW4gczFfY29tbWl0IHMyX2NvbW1pdAorc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVw IHMxX2hvdF91cGRhdGU6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0g J2hvdF91cGRhdGVkJyBXSEVSRSBpZCA9IDUwOworc3RlcCBzMl9iZWdpbjogQkVHSU47Citz dGVwIHMyX2luZGV4X3NjYW46IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhl ZF9jb2wgPSA1MDA7CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorNTB8ICAgICAgICA1MDB8aW5pdGlhbDUwICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2NvbW1pdDog Q09NTUlUOworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFfbm9uX2hvdF91 cGRhdGUgczFfY29tbWl0IHMyX2JlZ2luIHMyX2luZGV4X3NjYW5fbmV3IHMyX2NvbW1pdCBz Ml92ZXJpZnlfaW5kZXgKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9ub25faG90 X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDU1NSBXSEVSRSBp ZCA9IDUwOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfYmVnaW46IEJFR0lO Oworc3RlcCBzMl9pbmRleF9zY2FuX25ldzogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVS RSBpbmRleGVkX2NvbCA9IDU1NTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAor LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCis1MHwgICAgICAgIDU1NXxpbml0aWFs NTAgICAgICAKKygxIHJvdykKKworc3RlcCBzMl9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJf dmVyaWZ5X2luZGV4OiAKKyAgICAtLSBBZnRlciBub24tSE9UIHVwZGF0ZSwgdmVyaWZ5IGlu ZGV4IHJlZmxlY3RzIHRoZSBjaGFuZ2UKKyAgICBTRUxFQ1QgQ09VTlQoKikgPSAxIEFTIGZv dW5kX25ld192YWx1ZSBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gNTU1Owor ICAgIFNFTEVDVCBDT1VOVCgqKSA9IDAgQVMgb2xkX3ZhbHVlX2dvbmUgRlJPTSBob3RfdGVz dCBXSEVSRSBpbmRleGVkX2NvbCA9IDUwMDsKKworZm91bmRfbmV3X3ZhbHVlCistLS0tLS0t LS0tLS0tLS0KK3QgICAgICAgICAgICAgIAorKDEgcm93KQorCitvbGRfdmFsdWVfZ29uZQor LS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMzX2JlZ2luIHMzX3NlbGVjdF9mb3JfdXBkYXRlIHMxX2JlZ2luIHMx X2hvdF91cGRhdGUgczNfY29tbWl0IHMxX2NvbW1pdCBzMV92ZXJpZnlfaG90CitzdGVwIHMz X2JlZ2luOiBCRUdJTjsKK3N0ZXAgczNfc2VsZWN0X2Zvcl91cGRhdGU6IFNFTEVDVCAqIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSA1MCBGT1IgVVBEQVRFOworaWR8aW5kZXhlZF9jb2x8 bm9uX2luZGV4ZWRfY29sCistLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKzUwfCAg ICAgICAgNTAwfGluaXRpYWw1MCAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX2JlZ2luOiBC RUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5k ZXhlZF9jb2wgPSAnaG90X3VwZGF0ZWQnIFdIRVJFIGlkID0gNTA7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX2hvdF91cGRhdGU6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfdmVyaWZ5X2hvdDog CisgICAgLS0gVmVyaWZ5IEhPVCBjaGFpbiBleGlzdHMgZm9yIHJvdyB3aXRoIGlkPTUwCisg ICAgU0VMRUNUIEVYSVNUUyAoCisgICAgICAgIFNFTEVDVCAxIEZST00gaGVhcF9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZSgnaG90X3Rlc3QnLCAwKSkKKyAgICAgICAgV0hFUkUgbHBfZmxh Z3MgPSAyCisgICAgICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAg ICAgIEFORCAodF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCA9IDAKKyAgICAgICAgICAg ICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCkKKyAgICApIEFT IGhhc19ob3RfY2hhaW47CisKK2hhc19ob3RfY2hhaW4KKy0tLS0tLS0tLS0tLS0KK3QgICAg ICAgICAgICAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4g czFfaG90X3VwZGF0ZSBzM19iZWdpbiBzM19zZWxlY3RfZm9yX3VwZGF0ZSBzMV9jb21taXQg czNfY29tbWl0CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTog VVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAnaG90X3VwZGF0ZWQnIFdI RVJFIGlkID0gNTA7CitzdGVwIHMzX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczNfc2VsZWN0X2Zv cl91cGRhdGU6IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSA1MCBGT1IgVVBE QVRFOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxX2NvbW1pdDogQ09NTUlUOworc3RlcCBzM19z ZWxlY3RfZm9yX3VwZGF0ZTogPC4uLiBjb21wbGV0ZWQ+CitpZHxpbmRleGVkX2NvbHxub25f aW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorNTB8ICAgICAg ICA1MDB8aG90X3VwZGF0ZWQgICAgCisoMSByb3cpCisKK3N0ZXAgczNfY29tbWl0OiBDT01N SVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzNF9iZWdpbiBzNF9zZWxlY3RfZm9yX2tl eV9zaGFyZSBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHM0X2NvbW1pdCBzMV9jb21taXQgczFf dmVyaWZ5X2hvdAorc3RlcCBzNF9iZWdpbjogQkVHSU47CitzdGVwIHM0X3NlbGVjdF9mb3Jf a2V5X3NoYXJlOiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gNTAgRk9SIEtF WSBTSEFSRTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tCis1MHwgICAgICAgIDUwMHxpbml0aWFsNTAgICAgICAKKygx IHJvdykKKworc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX2hvdF91cGRhdGU6IFVQ REFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ2hvdF91cGRhdGVkJyBXSEVS RSBpZCA9IDUwOworc3RlcCBzNF9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfY29tbWl0OiBD T01NSVQ7CitzdGVwIHMxX3ZlcmlmeV9ob3Q6IAorICAgIC0tIFZlcmlmeSBIT1QgY2hhaW4g ZXhpc3RzIGZvciByb3cgd2l0aCBpZD01MAorICAgIFNFTEVDVCBFWElTVFMgKAorICAgICAg ICBTRUxFQ1QgMSBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0 JywgMCkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMgorICAgICAgICAgICBPUiAodF9j dGlkIElTIE5PVCBOVUxMCisgICAgICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9p bnQpWzBdOjppbnQgPSAwCisgICAgICAgICAgICAgICBBTkQgdF9jdGlkICE9ICgnKDAsJyB8 fCBscCB8fCAnKScpOjp0aWQpCisgICAgKSBBUyBoYXNfaG90X2NoYWluOworCitoYXNfaG90 X2NoYWluCistLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgCisoMSByb3cpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHM0X2JlZ2luIHM0X3NlbGVjdF9mb3Jfa2V5X3NoYXJlIHMx X2JlZ2luIHMxX25vbl9ob3RfdXBkYXRlIHM0X2NvbW1pdCBzMV9jb21taXQKK3N0ZXAgczRf YmVnaW46IEJFR0lOOworc3RlcCBzNF9zZWxlY3RfZm9yX2tleV9zaGFyZTogU0VMRUNUICog RlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwIEZPUiBLRVkgU0hBUkU7CitpZHxpbmRleGVk X2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor NTB8ICAgICAgICA1MDB8aW5pdGlhbDUwICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfYmVn aW46IEJFR0lOOworc3RlcCBzMV9ub25faG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNF VCBpbmRleGVkX2NvbCA9IDU1NSBXSEVSRSBpZCA9IDUwOworc3RlcCBzNF9jb21taXQ6IENP TU1JVDsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9p c29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQppbmRleCA0ZTQ2NjU4MGNkNC4uNDY1MjViMGE2MmEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTksNiArMTksOSBAQCB0ZXN0 OiBtdWx0aXBsZS1yb3ctdmVyc2lvbnMKIHRlc3Q6IGluZGV4LW9ubHktc2NhbgogdGVzdDog aW5kZXgtb25seS1iaXRtYXBzY2FuCiB0ZXN0OiBwcmVkaWNhdGUtbG9jay1ob3QtdHVwbGUK K3Rlc3Q6IGhvdF91cGRhdGVzX2NvbmN1cnJlbnQKK3Rlc3Q6IGhvdF91cGRhdGVzX2luZGV4 X3NjYW4KK3Rlc3Q6IGhvdF91cGRhdGVzX2NoYWluCiB0ZXN0OiB1cGRhdGUtY29uZmxpY3Qt b3V0CiB0ZXN0OiBkZWFkbG9jay1zaW1wbGUKIHRlc3Q6IGRlYWRsb2NrLWhhcmQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBkYXRlc19jaGFpbi5zcGVj IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NoYWluLnNwZWMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg1Y2QyMTc2MTMzCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2No YWluLnNwZWMKQEAgLTAsMCArMSwxMTAgQEAKKyMgVGVzdCBIT1QgdXBkYXRlIGNoYWlucyBh bmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCBWQUNVVU0gYW5kIHBhZ2UgcHJ1bmluZworIwor IyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlIGNoYWlucyBhcmUgY29ycmVj dGx5IG1haW50YWluZWQgd2hlbgorIyBtdWx0aXBsZSBIT1QgdXBkYXRlcyBvY2N1ciBvbiB0 aGUgc2FtZSByb3csIGFuZCB0aGF0IFZBQ1VVTSBjb3JyZWN0bHkKKyMgaGFuZGxlcyBIT1Qg Y2hhaW5zLgorCitzZXR1cAoreworICAgIENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNU UyBwYWdlaW5zcGVjdDsKKworICAgIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICAgICAgaW5kZXhlZF9jb2wgaW50LAorICAgICAg ICBub25faW5kZXhlZF9jb2wgdGV4dAorICAgICk7CisKKyAgICBDUkVBVEUgSU5ERVggaG90 X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCisgICAgSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CisgICAgSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7Cit9CisKK3Rl YXJkb3duCit7CisgICAgRFJPUCBUQUJMRSBob3RfdGVzdDsKKyAgICBEUk9QIEVYVEVOU0lP TiBwYWdlaW5zcGVjdDsKK30KKworIyBTZXNzaW9uIDE6IENyZWF0ZSBIT1QgY2hhaW4gd2l0 aCBtdWx0aXBsZSB1cGRhdGVzCitzZXNzaW9uIHMxCitzdGVwIHMxX2JlZ2luIHsgQkVHSU47 IH0KK3N0ZXAgczFfaG90X3VwZGF0ZTEgeyBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRl eGVkX2NvbCA9ICd1cGRhdGUxJyBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfaG90X3VwZGF0 ZTIgeyBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGUyJyBX SEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfaG90X3VwZGF0ZTMgeyBVUERBVEUgaG90X3Rlc3Qg U0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGUzJyBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAg czFfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHMxX3NlbGVjdCB7IFNFTEVDVCAqIEZST00g aG90X3Rlc3QgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMxX3ZlcmlmeV9ob3QgeworICAgIC0t IENoZWNrIGZvciBIT1QgY2hhaW46IExQX1JFRElSRUNUIG9yIHR1cGxlIHdpdGggdF9jdGlk IHBvaW50aW5nIHRvIHNhbWUgcGFnZQorICAgIFNFTEVDVCBDT1VOVCgqKSA+IDAgQVMgaGFz X2hvdF9jaGFpbgorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnaG90 X3Rlc3QnLCAwKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDIgIC0tIExQX1JFRElSRUNUIGlu ZGljYXRlcyBIT1QgY2hhaW4KKyAgICAgICBPUiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAg ICAgICAgIEFORCAodF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCA9IDAgIC0tIHNhbWUg cGFnZQorICAgICAgICAgICBBTkQgdF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0 aWQpOyAgICAtLSBkaWZmZXJlbnQgb2Zmc2V0Cit9CisKKyMgU2Vzc2lvbiAyOiBSZWFkIHdo aWxlIEhPVCBjaGFpbiBpcyBiZWluZyBidWlsdAorc2Vzc2lvbiBzMgorc3RlcCBzMl9iZWdp biB7IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczJf c2VsZWN0X2JlZm9yZSB7IFNFTEVDVCBub25faW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDE7IH0KK3N0ZXAgczJfc2VsZWN0X2FmdGVyIHsgU0VMRUNUIG5vbl9pbmRl eGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsgfQorc3RlcCBzMl9jb21taXQg eyBDT01NSVQ7IH0KKworIyBTZXNzaW9uIDM6IEJyZWFrIEhPVCBjaGFpbiB3aXRoIG5vbi1I T1QgdXBkYXRlCitzZXNzaW9uIHMzCitzdGVwIHMzX2JlZ2luIHsgQkVHSU47IH0KK3N0ZXAg czNfbm9uX2hvdF91cGRhdGUgeyBVUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0g MTUwIFdIRVJFIGlkID0gMTsgfQorc3RlcCBzM19jb21taXQgeyBDT01NSVQ7IH0KKworIyBT ZXNzaW9uIDQ6IFRyeSB0byBidWlsZCBIT1QgY2hhaW4gYWZ0ZXIgbm9uLUhPVCB1cGRhdGUK K3Nlc3Npb24gczQKK3N0ZXAgczRfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzNF9ob3RfYWZ0 ZXJfbm9uX2hvdCB7IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ2Fm dGVyX25vbl9ob3QnIFdIRVJFIGlkID0gMTsgfQorc3RlcCBzNF9jb21taXQgeyBDT01NSVQ7 IH0KK3N0ZXAgczRfc2VsZWN0IHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDE7IH0KK3N0ZXAgczRfdmVyaWZ5X2hvdCB7CisgICAgLS0gQ2hlY2sgZm9yIG5ldyBIT1Qg Y2hhaW4gYWZ0ZXIgbm9uLUhPVCB1cGRhdGUgYnJva2UgdGhlIHByZXZpb3VzIGNoYWluCisg ICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxw X2ZsYWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAg QU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMAorICAgICAgICAgICBBTkQg dF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOworfQorCisjIFNlc3Npb24g NTogTXVsdGlwbGUgc2Vzc2lvbnMgYnVpbGRpbmcgc2VwYXJhdGUgSE9UIGNoYWlucyBvbiBk aWZmZXJlbnQgcm93cworc2Vzc2lvbiBzNQorc3RlcCBzNV9iZWdpbiB7IEJFR0lOOyB9Citz dGVwIHM1X2hvdF91cGRhdGVfcm93Ml8xIHsgVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5k ZXhlZF9jb2wgPSAncm93Ml91cGRhdGUxJyBXSEVSRSBpZCA9IDI7IH0KK3N0ZXAgczVfaG90 X3VwZGF0ZV9yb3cyXzIgeyBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9 ICdyb3cyX3VwZGF0ZTInIFdIRVJFIGlkID0gMjsgfQorc3RlcCBzNV9jb21taXQgeyBDT01N SVQ7IH0KK3N0ZXAgczVfc2VsZWN0IHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBp ZCA9IDI7IH0KK3N0ZXAgczVfdmVyaWZ5X2hvdCB7CisgICAgLS0gQ2hlY2sgZm9yIEhPVCBj aGFpbiBvbiBwYWdlIDAKKyAgICBTRUxFQ1QgQ09VTlQoKikgPiAwIEFTIGhhc19ob3RfY2hh aW4KKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0Jywg MCkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAyCisgICAgICAgT1IgKHRfY3RpZCBJUyBOT1Qg TlVMTAorICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgPSAw CisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7 Cit9CisKKyMgQnVpbGQgSE9UIGNoYWluIHdpdGhpbiBzaW5nbGUgdHJhbnNhY3Rpb24KKyMg QWxsIHVwZGF0ZXMgc2hvdWxkIGZvcm0gYSBIT1QgY2hhaW4KK3Blcm11dGF0aW9uIHMxX2Jl Z2luIHMxX2hvdF91cGRhdGUxIHMxX2hvdF91cGRhdGUyIHMxX2hvdF91cGRhdGUzIHMxX2Nv bW1pdCBzMV9zZWxlY3QgczFfdmVyaWZ5X2hvdAorCisjIFJFUEVBVEFCTEUgUkVBRCBzaG91 bGQgc2VlIGNvbnNpc3RlbnQgc25hcHNob3QgYWNyb3NzIEhPVCBjaGFpbiB1cGRhdGVzCisj IFNlc3Npb24gMiBzdGFydHMgYmVmb3JlIHVwZGF0ZXMsIHNob3VsZCBzZWUgJ2luaXRpYWwn IHRocm91Z2hvdXQKK3Blcm11dGF0aW9uIHMyX2JlZ2luIHMyX3NlbGVjdF9iZWZvcmUgczFf YmVnaW4gczFfaG90X3VwZGF0ZTEgczFfaG90X3VwZGF0ZTIgczFfY29tbWl0IHMyX3NlbGVj dF9hZnRlciBzMl9jb21taXQKKworIyBIT1QgY2hhaW4gZm9sbG93ZWQgYnkgbm9uLUhPVCB1 cGRhdGUKKyMgTm9uLUhPVCB1cGRhdGUgYnJlYWtzIHRoZSBIT1QgY2hhaW4KK3Blcm11dGF0 aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUxIHMxX2hvdF91cGRhdGUyIHMxX2NvbW1pdCBz M19iZWdpbiBzM19ub25faG90X3VwZGF0ZSBzM19jb21taXQgczFfc2VsZWN0CisKKyMgSE9U IHVwZGF0ZSBhZnRlciBub24tSE9UIHVwZGF0ZSBjYW4gc3RhcnQgbmV3IEhPVCBjaGFpbgor IyBBZnRlciBicmVha2luZyBjaGFpbiB3aXRoIGluZGV4ZWQgY29sdW1uIHVwZGF0ZSwgbmV3 IEhPVCB1cGRhdGVzIGNhbiBzdGFydCBmcmVzaCBjaGFpbgorcGVybXV0YXRpb24gczFfYmVn aW4gczFfaG90X3VwZGF0ZTEgczFfY29tbWl0IHMzX2JlZ2luIHMzX25vbl9ob3RfdXBkYXRl IHMzX2NvbW1pdCBzNF9iZWdpbiBzNF9ob3RfYWZ0ZXJfbm9uX2hvdCBzNF9jb21taXQgczRf c2VsZWN0IHM0X3ZlcmlmeV9ob3QKKworIyBNdWx0aXBsZSBzZXNzaW9ucyBidWlsZGluZyBz ZXBhcmF0ZSBIT1QgY2hhaW5zIG9uIGRpZmZlcmVudCByb3dzCitwZXJtdXRhdGlvbiBzMV9i ZWdpbiBzMV9ob3RfdXBkYXRlMSBzMV9ob3RfdXBkYXRlMiBzNV9iZWdpbiBzNV9ob3RfdXBk YXRlX3JvdzJfMSBzNV9ob3RfdXBkYXRlX3JvdzJfMiBzMV9jb21taXQgczVfY29tbWl0IHMx X3NlbGVjdCBzNV9zZWxlY3QgczFfdmVyaWZ5X2hvdCBzNV92ZXJpZnlfaG90CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X3VwZGF0ZXNfY29uY3VycmVudC5z cGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NvbmN1cnJlbnQu c3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWFjNzhkNjJh YzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X3Vw ZGF0ZXNfY29uY3VycmVudC5zcGVjCkBAIC0wLDAgKzEsMTA3IEBACisjIFRlc3QgY29uY3Vy cmVudCBIT1QgdXBkYXRlcyBhbmQgdmFsaWRhdGUgSE9UIGNoYWlucworIworIyBUaGlzIHRl c3QgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyB3b3JrIGNvcnJlY3RseSB3aGVuIG11bHRp cGxlIHNlc3Npb25zCisjIGFyZSB1cGRhdGluZyB0aGUgc2FtZSB0YWJsZSBjb25jdXJyZW50 bHksIGFuZCB2YWxpZGF0ZXMgdGhhdCBIT1QgY2hhaW5zCisjIGFyZSBhY3R1YWxseSBjcmVh dGVkIHVzaW5nIGhlYXBfcGFnZV9pdGVtcygpLgorCitzZXR1cAoreworICAgIENSRUFURSBF WFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworICAgIENSRUFURSBUQUJM RSBob3RfdGVzdCAoCisgICAgICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICAgICAgaW5k ZXhlZF9jb2wgaW50LAorICAgICAgICBub25faW5kZXhlZF9jb2wgdGV4dAorICAgICk7CisK KyAgICBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5k ZXhlZF9jb2wpOworCisgICAgSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAs ICdpbml0aWFsMScpOworICAgIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAw LCAnaW5pdGlhbDInKTsKKyAgICBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsIDMw MCwgJ2luaXRpYWwzJyk7Cit9CisKK3RlYXJkb3duCit7CisgICAgRFJPUCBUQUJMRSBob3Rf dGVzdDsKKyAgICBEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKK30KKworIyBTZXNzaW9u IDE6IEhPVCB1cGRhdGUgKG1vZGlmeSBub24taW5kZXhlZCBjb2x1bW4pCitzZXNzaW9uIHMx CitzdGVwIHMxX2JlZ2luIHsgQkVHSU47IH0KK3N0ZXAgczFfaG90X3VwZGF0ZSB7IFVQREFU RSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWRfczEnIFdIRVJFIGlk ID0gMTsgfQorc3RlcCBzMV9jb21taXQgeyBDT01NSVQ7IH0KK3N0ZXAgczFfc2VsZWN0IHsg U0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfdmVyaWZ5 X2hvdCB7CisgICAgLS0gQ2hlY2sgZm9yIEhPVCBjaGFpbjogbG9vayBmb3IgTFBfUkVESVJF Q1QgKGxwX2ZsYWdzPTIpIG9yIHR1cGxlIHdpdGggdF9jdGlkIHBvaW50aW5nIHRvIHNhbWUg cGFnZQorICAgIFNFTEVDVCBDT1VOVCgqKSA+IDAgQVMgaGFzX2hvdF9jaGFpbgorICAgIEZS T00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnaG90X3Rlc3QnLCAwKSkKKyAgICBX SEVSRSBscF9mbGFncyA9IDIgIC0tIExQX1JFRElSRUNUIGluZGljYXRlcyBIT1QgY2hhaW4K KyAgICAgICBPUiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAgICAgIEFORCAodF9jdGlk Ojp0ZXh0Ojpwb2ludClbMF06OmludCA9IDAgIC0tIHNhbWUgcGFnZQorICAgICAgICAgICBB TkQgdF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOyAgICAtLSBkaWZmZXJl bnQgb2Zmc2V0Cit9CisKKyMgU2Vzc2lvbiAyOiBIT1QgdXBkYXRlIChtb2RpZnkgbm9uLWlu ZGV4ZWQgY29sdW1uIG9uIHNhbWUgcm93KQorc2Vzc2lvbiBzMgorc3RlcCBzMl9iZWdpbiB7 IEJFR0lOOyB9CitzdGVwIHMyX2hvdF91cGRhdGUgeyBVUERBVEUgaG90X3Rlc3QgU0VUIG5v bl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkX3MyJyBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczJf Y29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHMyX3NlbGVjdCB7IFNFTEVDVCAqIEZST00gaG90 X3Rlc3QgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMyX3ZlcmlmeV9ob3QgeworICAgIC0tIENo ZWNrIGZvciBIT1QgY2hhaW46IGxvb2sgZm9yIExQX1JFRElSRUNUIChscF9mbGFncz0yKSBv ciB0dXBsZSB3aXRoIHRfY3RpZCBwb2ludGluZyB0byBzYW1lIHBhZ2UKKyAgICBTRUxFQ1Qg Q09VTlQoKikgPiAwIEFTIGhhc19ob3RfY2hhaW4KKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0JywgMCkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAy ICAtLSBMUF9SRURJUkVDVCBpbmRpY2F0ZXMgSE9UIGNoYWluCisgICAgICAgT1IgKHRfY3Rp ZCBJUyBOT1QgTlVMTAorICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBd OjppbnQgPSAwICAtLSBzYW1lIHBhZ2UKKyAgICAgICAgICAgQU5EIHRfY3RpZCAhPSAoJygw LCcgfHwgbHAgfHwgJyknKTo6dGlkKTsgICAgLS0gZGlmZmVyZW50IG9mZnNldAorfQorCisj IFNlc3Npb24gMzogTm9uLUhPVCB1cGRhdGUgKG1vZGlmeSBpbmRleGVkIGNvbHVtbikKK3Nl c3Npb24gczMKK3N0ZXAgczNfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzM19ub25faG90X3Vw ZGF0ZSB7IFVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQg PSAxOyB9CitzdGVwIHMzX2NvbW1pdCB7IENPTU1JVDsgfQorc3RlcCBzM19zZWxlY3QgeyBT RUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsgfQorc3RlcCBzM192ZXJpZnlf aW5kZXggeworICAgIC0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAocHJvdmVzIG5vbi1I T1QpCisgICAgU0VMRUNUIENPVU5UKCopID0gMSBBUyBpbmRleF91cGRhdGVkIEZST00gaG90 X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgICAgU0VMRUNUIENPVU5UKCopID0g MCBBUyBvbGRfdmFsdWVfZ29uZSBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworfQorCisjIFNlc3Npb24gNDogQ29uY3VycmVudCBIT1QgdXBkYXRlcyBvbiBkaWZm ZXJlbnQgcm93cworc2Vzc2lvbiBzNAorc3RlcCBzNF9iZWdpbiB7IEJFR0lOOyB9CitzdGVw IHM0X2hvdF91cGRhdGVfcm93MiB7IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWRfczQnIFdIRVJFIGlkID0gMjsgfQorc3RlcCBzNF9jb21taXQgeyBD T01NSVQ7IH0KK3N0ZXAgczRfc2VsZWN0IHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVS RSBpZCA9IDI7IH0KK3N0ZXAgczRfdmVyaWZ5X2hvdCB7CisgICAgLS0gQ2hlY2sgZm9yIEhP VCBjaGFpbiBvbiBwYWdlIDAKKyAgICBTRUxFQ1QgQ09VTlQoKikgPiAwIEFTIGhhc19ob3Rf Y2hhaW4KKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0 JywgMCkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAyCisgICAgICAgT1IgKHRfY3RpZCBJUyBO T1QgTlVMTAorICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQg PSAwCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRp ZCk7Cit9CisKKyMgVHdvIHNlc3Npb25zIGJvdGggZG9pbmcgSE9UIHVwZGF0ZXMgb24gc2Ft ZSByb3cKKyMgU2Vjb25kIHNlc3Npb24gc2hvdWxkIGJsb2NrIHVudGlsIGZpcnN0IGNvbW1p dHMKKyMgQm90aCBzaG91bGQgY3JlYXRlIEhPVCBjaGFpbnMKK3Blcm11dGF0aW9uIHMxX2Jl Z2luIHMxX2hvdF91cGRhdGUgczJfYmVnaW4gczJfaG90X3VwZGF0ZSBzMV9jb21taXQgczJf Y29tbWl0IHMxX3NlbGVjdCBzMl9zZWxlY3QgczJfdmVyaWZ5X2hvdAorCisjIEhPVCB1cGRh dGUgZm9sbG93ZWQgYnkgbm9uLUhPVCB1cGRhdGUKKyMgTm9uLUhPVCB1cGRhdGUgc2hvdWxk IHdhaXQgZm9yIEhPVCB1cGRhdGUgdG8gY29tbWl0CisjIEZpcnN0IHVwZGF0ZSBpcyBIT1Qs IHNlY29uZCBpcyBub24tSE9UIChpbmRleCB1cGRhdGVkKQorcGVybXV0YXRpb24gczFfYmVn aW4gczFfaG90X3VwZGF0ZSBzM19iZWdpbiBzM19ub25faG90X3VwZGF0ZSBzMV9jb21taXQg czNfY29tbWl0IHMzX3NlbGVjdCBzM192ZXJpZnlfaW5kZXgKKworIyBOb24tSE9UIHVwZGF0 ZSBmb2xsb3dlZCBieSBIT1QgdXBkYXRlCisjIEhPVCB1cGRhdGUgc2hvdWxkIHdhaXQgZm9y IG5vbi1IT1QgdXBkYXRlIHRvIGNvbW1pdAorIyBGaXJzdCB1cGRhdGUgaXMgbm9uLUhPVCAo aW5kZXgpLCBzZWNvbmQgaXMgSE9UCitwZXJtdXRhdGlvbiBzM19iZWdpbiBzM19ub25faG90 X3VwZGF0ZSBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMzX2NvbW1pdCBzMV9jb21taXQgczFf c2VsZWN0IHMxX3ZlcmlmeV9ob3QKKworIyBDb25jdXJyZW50IEhPVCB1cGRhdGVzIG9uIGRp ZmZlcmVudCByb3dzIChzaG91bGQgbm90IGJsb2NrKQorIyBCb3RoIHNlc3Npb25zIHNob3Vs ZCBiZSBhYmxlIHRvIGNyZWF0ZSBIT1QgY2hhaW5zIGluZGVwZW5kZW50bHkKK3Blcm11dGF0 aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczRfYmVnaW4gczRfaG90X3VwZGF0ZV9yb3cy IHMxX2NvbW1pdCBzNF9jb21taXQgczFfc2VsZWN0IHM0X3NlbGVjdCBzMV92ZXJpZnlfaG90 IHM0X3ZlcmlmeV9ob3QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9o b3RfdXBkYXRlc19pbmRleF9zY2FuLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3Mv aG90X3VwZGF0ZXNfaW5kZXhfc2Nhbi5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4zOWRiMDdjYzgwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBkYXRlc19pbmRleF9zY2FuLnNwZWMKQEAgLTAsMCAr MSw5MSBAQAorIyBUZXN0IEhPVCB1cGRhdGVzIGludGVyYWN0aW9uIHdpdGggaW5kZXggc2Nh bnMgYW5kIFNFTEVDVCBGT1IgVVBEQVRFCisjCisjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0 IEhPVCB1cGRhdGVzIGFyZSBjb3JyZWN0bHkgaGFuZGxlZCB3aGVuIGNvbmN1cnJlbnQKKyMg c2Vzc2lvbnMgYXJlIHBlcmZvcm1pbmcgaW5kZXggc2NhbnMsIHVzaW5nIFNFTEVDVCBGT1Ig VVBEQVRFLCBhbmQgdmFsaWRhdGVzCisjIEhPVCBjaGFpbnMgdXNpbmcgaGVhcF9wYWdlX2l0 ZW1zKCkuCisKK3NldHVwCit7CisgICAgQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RT IHBhZ2VpbnNwZWN0OworCisgICAgQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICAgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgICAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgICAg IG5vbl9pbmRleGVkX2NvbCB0ZXh0CisgICAgKTsKKworICAgIENSRUFURSBJTkRFWCBob3Rf dGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CisKKyAgICBJTlNF UlQgSU5UTyBob3RfdGVzdCBTRUxFQ1QgaSwgaSAqIDEwLCAnaW5pdGlhbCcgfHwgaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDApIGk7Cit9CisKK3RlYXJkb3duCit7CisgICAgRFJP UCBUQUJMRSBob3RfdGVzdDsKKyAgICBEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKK30K KworIyBTZXNzaW9uIDE6IFBlcmZvcm0gSE9UIHVwZGF0ZQorc2Vzc2lvbiBzMQorc3RlcCBz MV9iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHMxX2hvdF91cGRhdGUgeyBVUERBVEUgaG90X3Rl c3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICdob3RfdXBkYXRlZCcgV0hFUkUgaWQgPSA1MDsg fQorc3RlcCBzMV9ub25faG90X3VwZGF0ZSB7IFVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhl ZF9jb2wgPSA1NTUgV0hFUkUgaWQgPSA1MDsgfQorc3RlcCBzMV9jb21taXQgeyBDT01NSVQ7 IH0KK3N0ZXAgczFfdmVyaWZ5X2hvdCB7CisgICAgLS0gVmVyaWZ5IEhPVCBjaGFpbiBleGlz dHMgZm9yIHJvdyB3aXRoIGlkPTUwCisgICAgU0VMRUNUIEVYSVNUUyAoCisgICAgICAgIFNF TEVDVCAxIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnaG90X3Rlc3QnLCAw KSkKKyAgICAgICAgV0hFUkUgbHBfZmxhZ3MgPSAyCisgICAgICAgICAgIE9SICh0X2N0aWQg SVMgTk9UIE5VTEwKKyAgICAgICAgICAgICAgIEFORCAodF9jdGlkOjp0ZXh0Ojpwb2ludClb MF06OmludCA9IDAKKyAgICAgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxw IHx8ICcpJyk6OnRpZCkKKyAgICApIEFTIGhhc19ob3RfY2hhaW47Cit9CisKKyMgU2Vzc2lv biAyOiBJbmRleCBzY2FuIHdoaWxlIEhPVCB1cGRhdGUgaW4gcHJvZ3Jlc3MKK3Nlc3Npb24g czIKK3N0ZXAgczJfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzMl9pbmRleF9zY2FuIHsgU0VM RUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDUwMDsgfQorc3RlcCBz Ml9pbmRleF9zY2FuX25ldyB7IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhl ZF9jb2wgPSA1NTU7IH0KK3N0ZXAgczJfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHMyX3Zl cmlmeV9pbmRleCB7CisgICAgLS0gQWZ0ZXIgbm9uLUhPVCB1cGRhdGUsIHZlcmlmeSBpbmRl eCByZWZsZWN0cyB0aGUgY2hhbmdlCisgICAgU0VMRUNUIENPVU5UKCopID0gMSBBUyBmb3Vu ZF9uZXdfdmFsdWUgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDU1NTsKKyAg ICBTRUxFQ1QgQ09VTlQoKikgPSAwIEFTIG9sZF92YWx1ZV9nb25lIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSA1MDA7Cit9CisKKyMgU2Vzc2lvbiAzOiBTRUxFQ1QgRk9S IFVQREFURQorc2Vzc2lvbiBzMworc3RlcCBzM19iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHMz X3NlbGVjdF9mb3JfdXBkYXRlIHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDUwIEZPUiBVUERBVEU7IH0KK3N0ZXAgczNfY29tbWl0IHsgQ09NTUlUOyB9CisKKyMgU2Vz c2lvbiA0OiBTRUxFQ1QgRk9SIEtFWSBTSEFSRSAoc2hvdWxkIG5vdCBibG9jayBIT1QgdXBk YXRlIG9mIG5vbi1rZXkgY29sdW1uKQorc2Vzc2lvbiBzNAorc3RlcCBzNF9iZWdpbiB7IEJF R0lOOyB9CitzdGVwIHM0X3NlbGVjdF9mb3Jfa2V5X3NoYXJlIHsgU0VMRUNUICogRlJPTSBo b3RfdGVzdCBXSEVSRSBpZCA9IDUwIEZPUiBLRVkgU0hBUkU7IH0KK3N0ZXAgczRfY29tbWl0 IHsgQ09NTUlUOyB9CisKKyMgSW5kZXggc2NhbiBzaG91bGQgc2VlIGNvbnNpc3RlbnQgc25h cHNob3QgZHVyaW5nIEhPVCB1cGRhdGUKKyMgSW5kZXggc2NhbiBzdGFydHMgYmVmb3JlIEhP VCB1cGRhdGUgY29tbWl0cworcGVybXV0YXRpb24gczFfYmVnaW4gczFfaG90X3VwZGF0ZSBz Ml9iZWdpbiBzMl9pbmRleF9zY2FuIHMxX2NvbW1pdCBzMl9jb21taXQKKworIyBJbmRleCBz Y2FuIGFmdGVyIG5vbi1IT1QgdXBkYXRlIHNob3VsZCBzZWUgbmV3IGluZGV4IGVudHJ5Cisj IEluZGV4IHNjYW4gc3RhcnRzIGFmdGVyIG5vbi1IT1QgdXBkYXRlIGNvbW1pdHMKK3Blcm11 dGF0aW9uIHMxX2JlZ2luIHMxX25vbl9ob3RfdXBkYXRlIHMxX2NvbW1pdCBzMl9iZWdpbiBz Ml9pbmRleF9zY2FuX25ldyBzMl9jb21taXQgczJfdmVyaWZ5X2luZGV4CisKKyMgU0VMRUNU IEZPUiBVUERBVEUgYmxvY2tzIEhPVCB1cGRhdGUKKyMgRk9SIFVQREFURSBzaG91bGQgYmxv Y2sgdGhlIFVQREFURSB1bnRpbCBTRUxFQ1QgY29tbWl0cworcGVybXV0YXRpb24gczNfYmVn aW4gczNfc2VsZWN0X2Zvcl91cGRhdGUgczFfYmVnaW4gczFfaG90X3VwZGF0ZSBzM19jb21t aXQgczFfY29tbWl0IHMxX3ZlcmlmeV9ob3QKKworIyBIT1QgdXBkYXRlIGJsb2NrcyBTRUxF Q1QgRk9SIFVQREFURQorIyBTRUxFQ1QgRk9SIFVQREFURSBzaG91bGQgd2FpdCBmb3IgSE9U IHVwZGF0ZSB0byBjb21taXQKK3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUg czNfYmVnaW4gczNfc2VsZWN0X2Zvcl91cGRhdGUgczFfY29tbWl0IHMzX2NvbW1pdAorCisj IFNFTEVDVCBGT1IgS0VZIFNIQVJFIHNob3VsZCBub3QgYmxvY2sgSE9UIHVwZGF0ZSAobm9u LWtleSBjb2x1bW4pCisjIEhPVCB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uIHNob3Vs ZCBub3QgY29uZmxpY3Qgd2l0aCBGT1IgS0VZIFNIQVJFCitwZXJtdXRhdGlvbiBzNF9iZWdp biBzNF9zZWxlY3RfZm9yX2tleV9zaGFyZSBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHM0X2Nv bW1pdCBzMV9jb21taXQgczFfdmVyaWZ5X2hvdAorCisjIE5vbi1IT1QgdXBkYXRlIChrZXkg Y29sdW1uKSBzaG91bGQgYmxvY2sgYWZ0ZXIgRk9SIEtFWSBTSEFSRQorIyBOb24tSE9UIHVw ZGF0ZSBvZiBpbmRleGVkIGNvbHVtbiBzaG91bGQgd2FpdCBmb3IgRk9SIEtFWSBTSEFSRQor cGVybXV0YXRpb24gczRfYmVnaW4gczRfc2VsZWN0X2Zvcl9rZXlfc2hhcmUgczFfYmVnaW4g czFfbm9uX2hvdF91cGRhdGUgczRfY29tbWl0IHMxX2NvbW1pdApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDRmYjg2NzU1ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dApAQCAtMCwwICsxLDcyNSBAQAor LS0KKy0tIEhPVF9VUERBVEVTCistLSBUZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRh dGUgZGVjaXNpb25zCistLQorLS0gVGhpcyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVz IHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2 b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBt b2RpZmllZCkuCistLQorLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoK Ky0tIDEuIEluZGV4IHZlcmlmaWNhdGlvbiAoaW5kZXggc3RpbGwgd29ya3MgPSBwcm92ZXMg bm8gaW5kZXggdXBkYXRlIGZvciBIT1QpCistLSAyLiBTdGF0aXN0aWNzIGZ1bmN0aW9ucyAo cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQorLS0gMy4gcGFnZWluc3BlY3QgZXh0 ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24KKy0tCistLSBMb2FkIHJlcXVpcmVk IGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVj dDsKKy0tIENsZWFuIHVwIGZyb20gcHJpb3IgcnVucworRFJPUCBUQUJMRSBJRiBFWElTVFMg aG90X3Rlc3QgQ0FTQ0FERTsKK05PVElDRTogIHRhYmxlICJob3RfdGVzdCIgZG9lcyBub3Qg ZXhpc3QsIHNraXBwaW5nCistLSBGdW5jdGlvbiB0byBnZXQgSE9UIHVwZGF0ZSBjb3VudAor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0 KQorUkVUVVJOUyBUQUJMRSAoCisgICAgdXBkYXRlcyBCSUdJTlQsCisgICAgaG90IEJJR0lO VAorKSBBUyAkJAorREVDTEFSRQorICByZWxfb2lkIG9pZDsKK0JFR0lOCisgIHJlbF9vaWQg Oj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgIFBFUkZPUk0gcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CisKKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBs ZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09B TEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisg ICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChy ZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBn c3FsOworLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMg YSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVS TlMgYm9vbGVhbiBBUyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0 ZW0gcmVjb3JkOworQkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6 cG9pbnQpWzBdOjppbnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24g dGhlIHNhbWUgcGFnZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBw YWdlX2l0ZW0gSU4KKyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9N IGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisg ICAgV0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisg ICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2Nr X251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9j dGlkCisgIExPT1AKKyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJO IGZhbHNlOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1Qg Y2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQp CitSRVRVUk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdz IHRleHQsIHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJs ZV9jb25mbGljdCB1c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxp bmVfcHRyIGludDsKKyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0 X2N0aWQgdGlkOworICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50 IDo9IDEwMDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9v bGVhbiA6PSBmYWxzZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVt IDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRo ZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQor ICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisg ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0 X2N0aWQKKyAgTE9PUAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6 dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBm b3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisg IC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlk CisgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9 IHN0YXJ0X2N0aWQ7CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndh cmQKKyAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9w dHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1Ig cGFnZV9pdGVtIElOCisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAg IEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVt KSkKKyAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAg bHBfZmxhZ3MgdG8gbmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0u bHBfZmxhZ3MKKyAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdI RU4gMSBUSEVOICdub3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3Qg KDIpJworICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vu a25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5E OworCisgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAg ICAgICBjdXJyZW50X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2Vf aXRlbS50X2N0aWQsCisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFn ZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAg ICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBj dXJyZW50X2N0aWQgVEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAg ICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBS RVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0 aWQ7CisgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisK KyAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsK KyAgRU5EIExPT1A7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gVHJpZ2dlciBw YWdlIHBydW5pbmcgdmlhIHRhYmxlIHNjYW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGhlYXBfcHJ1bmVfcGFnZShyZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCitSRVRV Uk5TIHZvaWQgQVMgJCQKK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKK0JFR0lOCisgIC0t IEV4dHJhY3QgYmxvY2sgbnVtYmVyIGZyb20gY3RpZAorICBibG9ja19udW0gOj0gKHRhcmdl dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBTY2FuIG9ubHkgdGhlIHNw ZWNpZmljIHBhZ2UgdG8gdHJpZ2dlciBwcnVuaW5nIG9uIHRoYXQgcGFnZQorICBFWEVDVVRF ICdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIHx8IHF1b3RlX2lkZW50KHJlbF9uYW1lKSB8fAor ICAgICAgICAgICAnIFdIRVJFIGN0aWQgPj0gKCcgfHwgYmxvY2tfbnVtIHx8ICcsMCkgQU5E IGN0aWQgPCAoJyB8fCAoYmxvY2tfbnVtICsgMSkgfHwgJywwKSc7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVk IGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAor KSBVU0lORyBoZWFwOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhv dF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAs ICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2lu aXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZSBhbmQgaW5pdGlhbCBjdGlkCitXSVRIIGluaXRp YWxfc3RhdGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0g MQorKQorU0VMRUNUCisgICdJbml0aWFsIFN0YXRlJyBBUyBwaGFzZSwKKyAgaW5pdGlhbF9z dGF0ZS5jdGlkLAorICAoZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKSkudXBkYXRlcywKKyAg KGdldF9ob3RfY291bnQoJ2hvdF90ZXN0JykpLmhvdAorRlJPTSBpbml0aWFsX3N0YXRlOwor ICAgICBwaGFzZSAgICAgfCBjdGlkICB8IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBJbml0aWFsIFN0YXRlIHwgKDAsMSkgfCAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNob3VsZCBiZSBIT1QgdXBkYXRlcyAob25s eSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQpCitVUERBVEUgaG90X3Rlc3QgU0VUIG5v bl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhvdF90 ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1VQ REFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBp ZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVAorICAnQWZ0 ZXIgVXBkYXRlcycgQVMgcGhhc2UsCisgIChnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpKS51 cGRhdGVzLAorICAoZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKSkuaG90OworICAgICBwaGFz ZSAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LQorIEFmdGVyIFVwZGF0ZXMgfCAgICAgICAzIHwgICAzCisoMSByb3cpCisKKy0tIER1bXAg dGhlIEhPVCBjaGFpbiBiZWZvcmUgcHJ1bmluZworV0lUSCBjdXJyZW50X3R1cGxlIEFTICgK KyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAor ICAnQmVmb3JlIFZBQ1VVTScgQVMgcGhhc2UsCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0 JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9u LAorICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJP TSBjdXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKTsKKyAgICAgcGhhc2UgICAgIHwgaGFzX2NoYWluIHwgY2hh aW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCistLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLQorIEJlZm9yZSBWQUNVVU0gfCB0ICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDEpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisgQmVmb3JlIFZBQ1VVTSB8IHQgICAg ICAgICB8ICAgICAgICAgICAgICAxIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygy IHJvd3MpCisKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VUIFNFU1NJ T04gZW5hYmxlX2JpdG1hcHNjYW4gPSBPRkY7CistLSBWZXJpZnkgaW5kZXhlcyBzdGlsbCB3 b3JrCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBob3Rf dGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAorICAgSW5kZXggQ29uZDogKGluZGV4ZWRf Y29sID0gMTAwKQorKDIgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhv dF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIHwgaW5kZXhlZF9jb2wgCist LS0tKy0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTAwCisoMSByb3cpCisKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMjAwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAyMDAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAyMDA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAyIHwgICAgICAgICAyMDAKKygxIHJvdykKKworLS0gVmFjdXVtIHRoZSBy ZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKK1ZBQ1VVTSBob3Rf dGVzdDsKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0KK1dJ VEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hF UkUgaWQgPSAxCispCitTRUxFQ1QKKyAgJ0FmdGVyIFZBQ1VVTScgQVMgcGhhc2UsCisgIGhh c19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hh aW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBf ZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9o b3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKKyAgICBwaGFzZSAg ICAgfCBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdzICB8 IHRfY3RpZCAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBBZnRlciBWQUNVVU0gfCBmICAgICAg ICAgfCAgICAgICAgICAgICAgMCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSBy b3cpCisKKy0tIE5vbi1IT1QgdXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVD VCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIGdldF9ob3RfY291bnQgCistLS0tLS0t LS0tLS0tLS0KKyAoNCwzKQorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0 ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk LCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOwor ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJ bmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJ bmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCisoMiByb3dzKQorCitTRUxFQ1QgaWQs IGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7Cisg aWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0tLS0tLS0tLQorICAxIHwgICAgICAgICAx NTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5k ZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaG90X3Rlc3RfaW5kZXhlZF9pZHgg b24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDEwMCkKKygyIHJv d3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAw OworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4g PSBPTjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT047CistLSBBbGwtb3It bm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFM TCBpbmRleCB1cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAg IGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBV U0lORyBoZWFwOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNv bF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwor LS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGlu ZGV4ZWQgY29sdW1uIGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBi ZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQg Y29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisgKDEsMCkKKygxIHJv dykKKworLS0gVmVyaWZ5IGFsbCB0aHJlZSBpbmRleGVzIHN0aWxsIHdvcmsgY29ycmVjdGx5 CitTRUxFQ1QgaWQsIGNvbF9hIEZST00gaG90X3Rlc3QgV0hFUkUgY29sX2EgPSAxNTsgIC0t IHVwZGF0ZWQgaW5kZXgKKyBpZCB8IGNvbF9hIAorLS0tLSstLS0tLS0tCisgIDEgfCAgICAx NQorKDEgcm93KQorCitTRUxFQ1QgaWQsIGNvbF9iIEZST00gaG90X3Rlc3QgV0hFUkUgY29s X2IgPSAyMDsgIC0tIHVuY2hhbmdlZCBpbmRleAorIGlkIHwgY29sX2IgCistLS0tKy0tLS0t LS0KKyAgMSB8ICAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBpZCwgY29sX2MgRlJPTSBob3Rf dGVzdCBXSEVSRSBjb2xfYyA9IDMwOyAgLS0gdW5jaGFuZ2VkIGluZGV4CisgaWQgfCBjb2xf YyAKKy0tLS0rLS0tLS0tLQorICAxIHwgICAgMzAKKygxIHJvdykKKworLS0gTm93IHVwZGF0 ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3Rf dGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7CitTRUxFQ1QgZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisgKDIs MSkKKygxIHJvdykKKworLS0gVmVyaWZ5IGFsbCBpbmRleGVzIHN0aWxsIHdvcmsKK1NFTEVD VCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGNvbF9hID0gMTUgQU5EIGNvbF9iID0gMjAgQU5E IGNvbF9jID0gMzA7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworLS0gUGFydGlhbCBp bmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29uc2VydmF0aXZl ID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBk YXRhIHRleHQKKykgVVNJTkcgaGVhcDsKKy0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMg c3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9O IGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CistLSBVcGRhdGUg bm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0 dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBk YXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisgKDEsMSkK KygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUn IHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90 X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0t LS0KKyAoMiwyKQorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZl JyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FM IGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRl IGNoZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMg YXJlIG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdk ZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisgKDMsMikKKygxIHJvdykK KworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCitTRUxF Q1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwor IGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZlCisoMSByb3cpCisK Ky0tIEV4cHJlc3Npb24gaW5kZXggd2l0aCBKU09OQgorRFJPUCBUQUJMRSBob3RfdGVzdDsK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IG1ldGFkYXRhIGpzb25iCispIFVTSU5HIGhlYXA7CistLSBJbmRleCBvbiBKU09OQiBleHBy ZXNzaW9uCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfdXNlcl9pZF9pZHggT04gaG90X3Rlc3Qo KG1ldGFkYXRhLT4+J3VzZXJfaWQnKSk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3Rfc3RhdHVz X2lkeCBPTiBob3RfdGVzdCgobWV0YWRhdGEtPj4nc3RhdHVzJykpOworSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAneyJ1c2VyX2lkIjogIjEyMyIsICJzdGF0dXMiOiAiYWN0 aXZlIn0nOjpqc29uYik7CistLSBVcGRhdGUgSlNPTkIgZmllbGQgdXNlZCBpbiBleHByZXNz aW9uIGluZGV4IHRvIHRoZSBzYW1lIHZhbHVlLAorLS0gdGhpcyB3aWxsIGJlIEhPVCBiZWNh dXNlIHRoZSBlbnRpcmUgSlNPTkIgZmllbGQgaXMgb2JzZXJ2ZWQgdG8KKy0tIGJlIHVuY2hh bmdlZC4KK1VQREFURSBob3RfdGVzdCBTRVQgbWV0YWRhdGEgPSBqc29uYl9zZXQobWV0YWRh dGEsICd7dXNlcl9pZH0nLCAnIjEyMyInKQorV0hFUkUgaWQgPSAxOworU0VMRUNUIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgZ2V0X2hvdF9jb3VudCAKKy0tLS0tLS0tLS0tLS0t LQorICgxLDEpCisoMSByb3cpCisKKy0tIFVwZGF0ZSBKU09OQiBmaWVsZCB0aGF0IGlzIG5v IHVzZWQgaW4gYW55IGluZGV4IHRvIHNvbWUgbmV3IHZhbHVlLCB0aGlzCistLSB3aWxsIHBy ZXZlbnQgYSBIT1QgdXBkYXRlIGRlc3BpdGUgbm90IGNoYW5naW5nIHdoYXQgaXMgdXNlZCB3 aGVuIGZvcm1pbmcKKy0tIHRoZSBpbmRleCBrZXksIHRoaXMgaXMgY291bnRlciBpbnR1aXRp dmUgYW5kIGNhdXNlcyBpbmRleCBibG9hdCBhcyB3ZWxsCistLSBhcyBzbG93cyBkb3duIHVw ZGF0ZXMgb24gSlNPTkIgZGF0YSBhcyBhbnkgY2hhbmdlIHdpbGwgdHJpZ2dlciBhbGwKKy0t IGluZGV4ZXMgdG8gYmUgdXBkYXRlZC4KK1VQREFURSBob3RfdGVzdCBTRVQgbWV0YWRhdGEg PSBqc29uYl9zZXQobWV0YWRhdGEsICd7Zm9vZH0nLCAnImFwcGxlIicpCitXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50 IAorLS0tLS0tLS0tLS0tLS0tCisgKDIsMSkKKygxIHJvdykKKworLS0gVXNlIGEgZmV3IGRp ZmZlcmVudCBtZXRob2RzIGZvciBtdXRhdGluZyBKU09OQiBkYXRhLCBidXQgZG9uJ3QgbW9k aWZ5CistLSBpbmRleGVkIHBvcnRpb25zIG9mIHRoZSBkb2N1bWVudC4gIE5vbmUgb2YgdGhl c2Ugd2lsbCBiZSBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIG1ldGFkYXRhID0ganNvbmJf c2V0KAorICBqc29uYl9zZXQobWV0YWRhdGEsICd7Zm9vZH0nLCAnInBlYXIiJyksCisgICd7 dGltZXN0YW1wfScsCisgIHRvX2pzb25iKG5vdygpKQorKQorV0hFUkUgaWQgPSAxOworU0VM RUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgZ2V0X2hvdF9jb3VudCAKKy0tLS0t LS0tLS0tLS0tLQorICgzLDEpCisoMSByb3cpCisKK1VQREFURSBob3RfdGVzdAorU0VUIG1l dGFkYXRhID0gbWV0YWRhdGEgfHwgJ3sidXNlcl9pZCI6ICIxMjMiLCAidGltZXN0YW1wIjog IjIwMjQtMDEtMDEifSc6Ompzb25iCitXSEVSRSBpZCA9IDE7CitTRUxFQ1QgZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisg KDQsMSkKKygxIHJvdykKKworVVBEQVRFIGhvdF90ZXN0IFNFVCBtZXRhZGF0YSA9CisgIGpz b25iX3NldCgKKyAgICBqc29uYl9zZXQobWV0YWRhdGEsICd7dXNlcl9pZH0nLCAnIjEyMyIn KSwKKyAgICAne2ZydWl0fScsCisgICAgJyJwbHVtYiInCisgICk7CitTRUxFQ1QgZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0t CisgKDUsMSkKKygxIHJvdykKKworVVBEQVRFIGhvdF90ZXN0IFNFVCBtZXRhZGF0YSA9IG1l dGFkYXRhIHx8IGpzb25iX2J1aWxkX29iamVjdCgKKyAgJ3VzZXJfaWQnLCAnMTIzJywKKyAg J3RpbWVzdGFtcCcsIG5vdygpLAorICAnZnJ1aXQnLCAnaG9uZXlkZXcnCispOworU0VMRUNU IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgZ2V0X2hvdF9jb3VudCAKKy0tLS0tLS0t LS0tLS0tLQorICg2LDEpCisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcp IGluZGV4ZXMgb24gbm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVB VEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0 aW1lc3RhbXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBVU0lORyBo ZWFwOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcg YnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3Rf dGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBj b2x1bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVz KQorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAy MDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor IGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAoMSwxKQorKDEgcm93KQorCist LSBWZXJpZnkgQlJJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIHRzID49ICcyMDI0LTAxLTAyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBicmluX2NvbCA+PSAyMDAwOworIGlkIAor LS0tLQorICAxCisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBz aG91bGQgYWxzbyBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hF UkUgaWQgPSAxOworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgZ2V0X2hv dF9jb3VudCAKKy0tLS0tLS0tLS0tLS0tLQorICgyLDIpCisoMSByb3cpCisKKy0tIFRPQVNU IGFuZCBIT1Q6IFRPQVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdlX3RleHQgdGV4 dCwKKyAgICBzbWFsbF90ZXh0IHRleHQKKykgVVNJTkcgaGVhcDsKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworLS0gSW5zZXJ0IHJvdyB3 aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CistLSBVcGRhdGUgbm9u LWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBo b3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsKK1NFTEVDVCBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworIGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAo MSwxKQorKDEgcm93KQorCistLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUg SE9UIGlmIGluZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAorVVBEQVRFIGhvdF90ZXN0IFNFVCBs YXJnZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisgKDIsMikK KygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzCitTRUxFQ1QgaWQgRlJP TSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQor KDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKK1NFTEVDVCBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0t LS0KKyAoMywyKQorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NF TEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOworIGlkIAor LS0tLQorICAxCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUgaW5k ZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0Owor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg dW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBVU0lORyBoZWFwOwor SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdkYXRhMScpOworSU5TRVJU IElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRhMicpOworLS0gVXBkYXRlIGRh dGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor IGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAoMiwyKQorKDEgcm93KQorCist LSBWZXJpZnkgdW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwg dW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5p cXVlX2NvbCB8ICBkYXRhICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8 ICAgICAgICAxMDAgfCB1cGRhdGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIg cm93cykKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFU RSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjog IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90 ZXN0X3VuaXF1ZV9jb2xfa2V5IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBh bHJlYWR5IGV4aXN0cy4KKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFu Z2UgPSBub24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNv bF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFVTSU5HIGhlYXA7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xf Yik7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRh Jyk7CistLSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNo b3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxF Q1QgZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0t LS0tLS0tLS0tCisgKDEsMCkKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2IgPSAyNTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIGdldF9ob3Rf Y291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAoMywwKQorKDEgcm93KQorCistLSBSZXNldAor VVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIwOworU0VMRUNUIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisgZ2V0X2hvdF9jb3VudCAKKy0tLS0tLS0tLS0tLS0tLQorICg0LDAp CisoMSByb3cpCisKKy0tIFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJl IEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEg KG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0 YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIGdl dF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAoNiwyKQorKDEgcm93KQorCistLSBW ZXJpZnkgbXVsdGktY29sdW1uIGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVz dCBXSEVSRSBjb2xfYSA9IDEwIEFORCBjb2xfYiA9IDIwOworIGlkIAorLS0tLQorICAxCiso MSByb3cpCisKKy0tIFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0 aXRpb25zCitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVND QURFOworTk9USUNFOiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBl eGlzdCwgc2tpcHBpbmcKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisg ICAgaWQgaW50LAorICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGlu dCwKKyAgICBkYXRhIHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5 KQorKSBQQVJUSVRJT04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkpIFVTSU5HIGhlYXA7CitD UkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRp dGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAwKSBVU0lORyBoZWFwOwor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0 aXRpb25lZAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBVU0lORyBoZWFw OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlv bmVkKGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZB TFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdF9w YXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKKy0tIFVwZGF0 ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1 bW4pIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBk YXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3RfcGFydDEnKTsKKyBnZXRfaG90X2NvdW50IAorLS0tLS0tLS0tLS0tLS0tCisg KDEsMSkKKygxIHJvdykKKworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQy Jyk7CisgZ2V0X2hvdF9jb3VudCAKKy0tLS0tLS0tLS0tLS0tLQorICgxLDEpCisoMSByb3cp CisKKy0tIFZlcmlmeSBpbmRleGVzIHdvcmsgb24gcGFydGl0aW9ucworU0VMRUNUIGlkIEZS T00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0 aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisgaWQgCistLS0tCisgIDIKKygxIHJv dykKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlvbiAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGluZGV4ZWRfY29s ID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9w YXJ0MScpOworIGdldF9ob3RfY291bnQgCistLS0tLS0tLS0tLS0tLS0KKyAoMiwxKQorKDEg cm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NFTEVDVCBpZCBGUk9NIGhv dF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIAorLS0t LQorICAxCisoMSByb3cpCisKKy0tIENsZWFudXAKK0RST1AgVEFCTEUgSUYgRVhJU1RTIGhv dF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FT Q0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlk KTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQp OworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgaGVhcF9wcnVuZSh0ZXh0KTsKK05PVElDRTog IGZ1bmN0aW9uIGhlYXBfcHJ1bmUodGV4dCkgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCitE Uk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRfaG90X2NvdW50KHRleHQpOworRFJPUCBFWFRF TlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3JlcGxpY2FfaWRlbnRpdHlfbG9nZ2luZy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3JlcGxpY2FfaWRlbnRpdHlfbG9nZ2luZy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIwOTY1MTBiOTI0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yZXBsaWNhX2lkZW50aXR5X2xvZ2dpbmcub3V0 CkBAIC0wLDAgKzEsMzk2IEBACistLQorLS0gUkVQTElDQV9JREVOVElUWV9MT0dHSU5HCist LSBUZXN0IHRoYXQgcmVwbGljYSBpZGVudGl0eSBrZXlzIGFyZSBjb3JyZWN0bHkgZXh0cmFj dGVkIGFuZCBsb2dnZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24KKy0tCistLSBUaGlzIHRl c3QgdmVyaWZpZXMgdGhhdCB0aGUgY29ycmVjdCBvbGQga2V5IGNvbHVtbnMgYXJlIGluY2x1 ZGVkIGluIFdBTCByZWNvcmRzCistLSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiwgYmFzZWQg b24gdGhlIHRhYmxlJ3MgcmVwbGljYSBpZGVudGl0eSBzZXR0aW5nLgorLS0KKy0tIENsZWFu IHVwIGZyb20gcHJpb3IgcnVucworRFJPUCBUQUJMRSBJRiBFWElTVFMgcmVwaWRfdGVzdCBD QVNDQURFOworTk9USUNFOiAgdGFibGUgInJlcGlkX3Rlc3QiIGRvZXMgbm90IGV4aXN0LCBz a2lwcGluZworLS0gRHJvcCByZXBsaWNhdGlvbiBzbG90IGlmIGl0IGV4aXN0cyBmcm9tIHBy aW9yIHJ1bgorU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVwaWRfdGVzdF9z bG90JykgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAncmVw aWRfdGVzdF9zbG90JzsKKyBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworLS0gRW5hYmxlIGxvZ2ljYWwgZGVjb2Rp bmcgdG8gdmVyaWZ5IHdoYXQgZ2V0cyBsb2dnZWQKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19j cmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZXBpZF90ZXN0X3Nsb3QnLCAndGVz dF9kZWNvZGluZycpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluaXQKKygxIHJvdykK KworLS0gUkVQTElDQSBJREVOVElUWSBERUZBVUxUIChwcmltYXJ5IGtleSBjb2x1bW5zIG9u bHkpCitDUkVBVEUgVEFCTEUgcmVwaWRfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKyk7CitDUkVBVEUgSU5E RVggcmVwaWRfdGVzdF9pZHggT04gcmVwaWRfdGVzdChpbmRleGVkX2NvbCk7CitJTlNFUlQg SU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gcmVwaWRfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKKy0tIEFkdmFuY2Ug c2xvdCB0byBza2lwIGluc2VydHMgKGZpbHRlciBvdXQgdHJhbnNhY3Rpb24gYm91bmRhcmll cyBmb3Igc3RhYmlsaXR5KQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIE5P VCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0YSBOT1QgTElLRSAnQ09NTUlUICUnOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBJTlNF UlQ6IGlkW2ludGVnZXJdOjEgaW5kZXhlZF9jb2xbaW50ZWdlcl06MTAwIGRhdGFbdGV4dF06 J2luaXRpYWwnCisgdGFibGUgcHVibGljLnJlcGlkX3Rlc3Q6IElOU0VSVDogaWRbaW50ZWdl cl06MiBpbmRleGVkX2NvbFtpbnRlZ2VyXToyMDAgZGF0YVt0ZXh0XTonaW5pdGlhbCcKKygy IHJvd3MpCisKKy0tIFVwZGF0ZSBub24ta2V5IGNvbHVtbiAtIHNob3VsZCBsb2cgb25seSBp ZCBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBX SEVSRSBpZCA9IDE7CistLSBVcGRhdGUgaW5kZXhlZCBub24ta2V5IGNvbHVtbiAtIHNob3Vs ZCBzdGlsbCBsb2cgb25seSBpZCBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQg aW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAyOworLS0gQ2hlY2sgbG9naWNhbCBkZWNv ZGluZyBvdXRwdXQgLSBzaG91bGQgc2VlIG9sZCBrZXkgd2l0aCBvbmx5IGlkCitTRUxFQ1Qg ZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90 JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBVUERBVEU6 IGlkW2ludGVnZXJdOjEgaW5kZXhlZF9jb2xbaW50ZWdlcl06MTAwIGRhdGFbdGV4dF06J3Vw ZGF0ZWQnCisgdGFibGUgcHVibGljLnJlcGlkX3Rlc3Q6IFVQREFURTogaWRbaW50ZWdlcl06 MiBpbmRleGVkX2NvbFtpbnRlZ2VyXToxNTAgZGF0YVt0ZXh0XTonaW5pdGlhbCcKKygyIHJv d3MpCisKKy0tIFJFUExJQ0EgSURFTlRJVFkgRlVMTCAoYWxsIGNvbHVtbnMgaW4gb2xkIGtl eSkKK0RST1AgVEFCTEUgcmVwaWRfdGVzdDsKK0NSRUFURSBUQUJMRSByZXBpZF90ZXN0ICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRh dGEgdGV4dAorKTsKK0FMVEVSIFRBQkxFIHJlcGlkX3Rlc3QgUkVQTElDQSBJREVOVElUWSBG VUxMOworQ1JFQVRFIElOREVYIHJlcGlkX3Rlc3RfaWR4IE9OIHJlcGlkX3Rlc3QoaW5kZXhl ZF9jb2wpOworSU5TRVJUIElOVE8gcmVwaWRfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRp YWwnKTsKKy0tIEFkdmFuY2Ugc2xvdCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFuc2Fj dGlvbiBib3VuZGFyaWVzIGZvciBzdGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkK K1dIRVJFIGRhdGEgTk9UIExJS0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01N SVQgJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGFibGUgcHVibGljLnJl cGlkX3Rlc3Q6IElOU0VSVDogaWRbaW50ZWdlcl06MSBpbmRleGVkX2NvbFtpbnRlZ2VyXTox MDAgZGF0YVt0ZXh0XTonaW5pdGlhbCcKKygxIHJvdykKKworLS0gVXBkYXRlIGFueSBjb2x1 bW4gLSBzaG91bGQgbG9nIEFMTCBjb2x1bW5zIGluIG9sZCBrZXkKK1VQREFURSByZXBpZF90 ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKKy0tIENoZWNrIGxvZ2lj YWwgZGVjb2Rpbmcgb3V0cHV0IC0gc2hvdWxkIHNlZSBvbGQga2V5IHdpdGggYWxsIGNvbHVt bnMKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBp ZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtFICclVVBEQVRFJSc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0 OiBVUERBVEU6IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgaW5kZXhlZF9jb2xbaW50ZWdlcl06 MTAwIGRhdGFbdGV4dF06J2luaXRpYWwnIG5ldy10dXBsZTogaWRbaW50ZWdlcl06MSBpbmRl eGVkX2NvbFtpbnRlZ2VyXToxMDAgZGF0YVt0ZXh0XTondXBkYXRlZCcKKygxIHJvdykKKwor LS0gUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCAoaW5kZXggY29sdW1ucyBvbmx5KQor RFJPUCBUQUJMRSByZXBpZF90ZXN0OworQ1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAg IGlkIGludCwKKyAgICB1bmlxdWVfY29sIGludCBVTklRVUUgTk9UIE5VTEwsCisgICAgZGF0 YSB0ZXh0CispOworQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBSRVBMSUNBIElERU5USVRZIFVT SU5HIElOREVYIHJlcGlkX3Rlc3RfdW5pcXVlX2NvbF9rZXk7CitJTlNFUlQgSU5UTyByZXBp ZF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gcmVwaWRf dGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKKy0tIEFkdmFuY2Ugc2xvdCBwYXN0 IGluc2VydHMgKGZpbHRlciBvdXQgdHJhbnNhY3Rpb24gYm91bmRhcmllcyBmb3Igc3RhYmls aXR5KQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Jl cGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIE5PVCBMSUtFICdCRUdJ TiAlJyBBTkQgZGF0YSBOT1QgTElLRSAnQ09NTUlUICUnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0YWJsZSBwdWJsaWMucmVwaWRfdGVzdDogSU5TRVJUOiBpZFtpbnRlZ2Vy XToxIHVuaXF1ZV9jb2xbaW50ZWdlcl06MTAwIGRhdGFbdGV4dF06J2luaXRpYWwnCisgdGFi bGUgcHVibGljLnJlcGlkX3Rlc3Q6IElOU0VSVDogaWRbaW50ZWdlcl06MiB1bmlxdWVfY29s W2ludGVnZXJdOjIwMCBkYXRhW3RleHRdOidpbml0aWFsJworKDIgcm93cykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBsb2cgb25seSB1bmlxdWVfY29sIGlu IG9sZCBrZXkKK1VQREFURSByZXBpZF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJF IHVuaXF1ZV9jb2wgPSAxMDA7CistLSBVcGRhdGUgaWQgKG5vdCBpbiByZXBsaWNhIGlkZW50 aXR5IGluZGV4KSAtIHNob3VsZCBzdGlsbCBsb2cgb25seSB1bmlxdWVfY29sCitVUERBVEUg cmVwaWRfdGVzdCBTRVQgaWQgPSAxMCBXSEVSRSB1bmlxdWVfY29sID0gMjAwOworLS0gQ2hl Y2sgbG9naWNhbCBkZWNvZGluZyBvdXRwdXQgLSBzaG91bGQgc2VlIG9sZCBrZXkgd2l0aCBv bmx5IHVuaXF1ZV9jb2wKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtF ICclVVBEQVRFJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGFibGUgcHVi bGljLnJlcGlkX3Rlc3Q6IFVQREFURTogaWRbaW50ZWdlcl06MSB1bmlxdWVfY29sW2ludGVn ZXJdOjEwMCBkYXRhW3RleHRdOid1cGRhdGVkJworIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0 OiBVUERBVEU6IGlkW2ludGVnZXJdOjEwIHVuaXF1ZV9jb2xbaW50ZWdlcl06MjAwIGRhdGFb dGV4dF06J2luaXRpYWwnCisoMiByb3dzKQorCistLSBSRVBMSUNBIElERU5USVRZIE5PVEhJ TkcgKG5vIG9sZCBrZXkgbG9nZ2VkKQorRFJPUCBUQUJMRSByZXBpZF90ZXN0OworQ1JFQVRF IFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkYXRh IHRleHQKKyk7CitBTFRFUiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJVFkgTk9U SElORzsKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgxLCAnaW5pdGlhbCcpOwor LS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IChmaWx0ZXIgb3V0IHRyYW5zYWN0aW9uIGJv dW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUg ZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEgTk9UIExJS0UgJ0NPTU1JVCAlJzsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGFibGUgcHVibGljLnJlcGlk X3Rlc3Q6IElOU0VSVDogaWRbaW50ZWdlcl06MSBkYXRhW3RleHRdOidpbml0aWFsJworKDEg cm93KQorCistLSBVcGRhdGUgLSBzaG91bGQgbG9nIG5vIG9sZCBrZXkKK1VQREFURSByZXBp ZF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKKy0tIENoZWNrIGxv Z2ljYWwgZGVjb2Rpbmcgb3V0cHV0IC0gc2hvdWxkIHNlZSB1cGRhdGUgd2l0aCBubyBvbGQg a2V5CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVw aWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0YWJsZSBwdWJsaWMucmVw aWRfdGVzdDogVVBEQVRFOiBpZFtpbnRlZ2VyXToxIGRhdGFbdGV4dF06J3VwZGF0ZWQnCiso MSByb3cpCisKKy0tIE11bHRpLWNvbHVtbiBpbmRleCByZXBsaWNhIGlkZW50aXR5CitEUk9Q IFRBQkxFIHJlcGlkX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVwaWRfdGVzdCAoCisgICAgaWQg aW50LAorICAgIGNvbF9hIGludCBOT1QgTlVMTCwKKyAgICBjb2xfYiBpbnQgTk9UIE5VTEws CisgICAgY29sX2MgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBVTklRVUUgKGNvbF9hLCBj b2xfYikKKyk7CitBTFRFUiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggcmVwaWRfdGVzdF9jb2xfYV9jb2xfYl9rZXk7CitJTlNFUlQgSU5UTyByZXBp ZF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKKy0tIEFkdmFuY2Ug c2xvdCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGZv ciBzdGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTk9UIExJ S0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBJTlNF UlQ6IGlkW2ludGVnZXJdOjEgY29sX2FbaW50ZWdlcl06MTAgY29sX2JbaW50ZWdlcl06MjAg Y29sX2NbaW50ZWdlcl06MzAgZGF0YVt0ZXh0XTonaW5pdGlhbCcKKygxIHJvdykKKworLS0g VXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbnMgLSBzaG91bGQgbG9nIGNvbF9hIGFuZCBjb2xf YiBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJywg Y29sX2MgPSAzNSBXSEVSRSBjb2xfYSA9IDEwIEFORCBjb2xfYiA9IDIwOworLS0gQ2hlY2sg bG9naWNhbCBkZWNvZGluZyBvdXRwdXQgLSBzaG91bGQgc2VlIG9sZCBrZXkgd2l0aCBjb2xf YSBhbmQgY29sX2IKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtFICcl VVBEQVRFJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1 YmxpYy5yZXBpZF90ZXN0OiBVUERBVEU6IGlkW2ludGVnZXJdOjEgY29sX2FbaW50ZWdlcl06 MTAgY29sX2JbaW50ZWdlcl06MjAgY29sX2NbaW50ZWdlcl06MzUgZGF0YVt0ZXh0XTondXBk YXRlZCcKKygxIHJvdykKKworLS0gVE9BU1QvZXh0ZXJuYWwgY29sdW1ucyBpbiByZXBsaWNh IGlkZW50aXR5CitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVwaWRf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGxhcmdlX3RleHQgdGV4dCwK KyAgICBkYXRhIHRleHQKKyk7CistLSBSRVBMSUNBIElERU5USVRZIEZVTEwgaW5jbHVkZXMg dG9hc3RlZCBjb2x1bW5zCitBTFRFUiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJ VFkgRlVMTDsKKy0tIEluc2VydCBhIGxhcmdlIHZhbHVlIChsYXJnZSBlbm91Z2ggdG8gc2hv dyB0aGUgY29uY2VwdCB3aXRob3V0IGV4Y2Vzc2l2ZSBvdXRwdXQpCitJTlNFUlQgSU5UTyBy ZXBpZF90ZXN0IFZBTFVFUyAoMSwgcmVwZWF0KCd4JywgMTAwKSwgJ2luaXRpYWwnKTsKKy0t IEFkdmFuY2Ugc2xvdCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFuc2FjdGlvbiBib3Vu ZGFyaWVzIGZvciBzdGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRh dGEgTk9UIExJS0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBJTlNFUlQ6IGlkW2ludGVnZXJdOjEgbGFy Z2VfdGV4dFt0ZXh0XToneHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eCcgZGF0YVt0ZXh0XTonaW5pdGlhbCcKKygxIHJvdykKKworLS0gVXBkYXRlIHNt YWxsIGNvbHVtbiAtIHNob3VsZCBzdGlsbCBsb2cgbGFyZ2VfdGV4dCBjb2x1bW4gaW4gb2xk IGtleQorVVBEQVRFIHJlcGlkX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGluZyBvdXRwdXQgLSB2ZXJpZnkgYm90aCBv bGQgYW5kIG5ldyB2YWx1ZXMgYXJlIGxvZ2dlZAorLS0gSnVzdCBjaGVjayB0aGF0IFVQREFU RSBoYXBwZW5lZCBhbmQgaW5jbHVkZXMgYm90aCBsYXJnZV90ZXh0IGFuZCBkYXRhIGNvbHVt bnMKK1NFTEVDVCBDT1VOVCgqKSBhcyB1cGRhdGVfY291bnQgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBk YXRhIExJS0UgJyVVUERBVEUlJyBBTkQgZGF0YSBMSUtFICclbGFyZ2VfdGV4dCUnIEFORCBk YXRhIExJS0UgJyVvbGQta2V5JSc7CisgdXBkYXRlX2NvdW50IAorLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gVGVzdCBUT0FTVCBjb2x1bW5zIHdpdGgg UkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWAorRFJPUCBUQUJMRSByZXBpZF90ZXN0Owor Q1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAg ICBpbmRleGVkX2xhcmdlX3RleHQgdGV4dCBOT1QgTlVMTCwKKyAgICBkYXRhIHRleHQKKyk7 CistLSBDcmVhdGUgdW5pcXVlIGluZGV4IG9uIHRoZSBsYXJnZSB0ZXh0IGNvbHVtbgorQ1JF QVRFIFVOSVFVRSBJTkRFWCByZXBpZF90ZXN0X2xhcmdlX2lkeCBPTiByZXBpZF90ZXN0KGlu ZGV4ZWRfbGFyZ2VfdGV4dCk7CistLSBTZXQgcmVwbGljYSBpZGVudGl0eSB0byB1c2UgdGhl IGluZGV4IChub3QgRlVMTCkKK0FMVEVSIFRBQkxFIHJlcGlkX3Rlc3QgUkVQTElDQSBJREVO VElUWSBVU0lORyBJTkRFWCByZXBpZF90ZXN0X2xhcmdlX2lkeDsKKy0tIEluc2VydCBhIGxh cmdlIHZhbHVlIChsYXJnZSBlbm91Z2ggdG8gYmUgVE9BU1RlZCkKK0lOU0VSVCBJTlRPIHJl cGlkX3Rlc3QgVkFMVUVTICgxLCByZXBlYXQoJ3gnLCAxMDAwMDApLCAnaW5pdGlhbCcpOwor LS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0cworU0VMRUNUIENPVU5UKCopIEZST00gcGdf bG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxM KQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEgTk9UIExJS0UgJ0NP TU1JVCAlJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCistLSBVcGRh dGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIHN0aWxsIGxvZyBpbmRleGVkX2xhcmdl X3RleHQgaW4gb2xkIGtleQorLS0gZGVzcGl0ZSBiZWluZyB1bm1vZGlmaWVkIGJlY2F1c2Ug aXQgaXMgVE9BU1RlZCBhbmQgaW4gdGhlIHJlcGxpY2Ega2V5CitVUERBVEUgcmVwaWRfdGVz dCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CistLSBWZXJpZnkgVE9BU1Rl ZCBpbmRleGVkIGNvbHVtbiBwYXJ0IG9mIHRoZSByZWxpY2EgaWRlbnRpdHkgaXMgbG9nZ2Vk IGluIG9sZCBrZXkKK1NFTEVDVCBDT1VOVCgqKSBBUyB0b2FzdGVkX2luZGV4X2xvZ2dlZCBG Uk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVM TCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnIEFORCBkYXRhIExJS0UgJyVp bmRleGVkX2xhcmdlX3RleHQlJzsKKyB0b2FzdGVkX2luZGV4X2xvZ2dlZCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBE cm9wcGVkIGNvbHVtbnMgYW5kIHJlcGxpY2EgaWRlbnRpdHkKK0RST1AgVEFCTEUgcmVwaWRf dGVzdDsKK0NSRUFURSBUQUJMRSByZXBpZF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZHJvcHBlZF9jb2wgaW50LAorICAgIGtlcHRfY29sIGludCwKKyAgICBkYXRh IHRleHQKKyk7CitBTFRFUiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJVFkgRlVM TDsKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgxLCA5OTksIDEwMCwgJ2luaXRp YWwnKTsKKy0tIERyb3AgYSBjb2x1bW4KK0FMVEVSIFRBQkxFIHJlcGlkX3Rlc3QgRFJPUCBD T0xVTU4gZHJvcHBlZF9jb2w7CistLSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnQgYW5kIERE TCAoZmlsdGVyIG91dCB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGZvciBzdGFiaWxpdHkpCitT RUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVz dF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTk9UIExJS0UgJ0JFR0lOICUnIEFO RCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0YWJs ZSBwdWJsaWMucmVwaWRfdGVzdDogSU5TRVJUOiBpZFtpbnRlZ2VyXToxIGRyb3BwZWRfY29s W2ludGVnZXJdOjk5OSBrZXB0X2NvbFtpbnRlZ2VyXToxMDAgZGF0YVt0ZXh0XTonaW5pdGlh bCcKKygxIHJvdykKKworLS0gVXBkYXRlIC0gb2xkIGtleSBzaG91bGQgaGFuZGxlIGRyb3Bw ZWQgY29sdW1uCitVUERBVEUgcmVwaWRfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVS RSBpZCA9IDE7CistLSBDaGVjayBsb2dpY2FsIGRlY29kaW5nIG91dHB1dAorU0VMRUNUIGRh dGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcs IE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdGFibGUgcHVibGljLnJlcGlkX3Rlc3Q6IFVQREFURTogb2xkLWtleTogaWRbaW50 ZWdlcl06MSBrZXB0X2NvbFtpbnRlZ2VyXToxMDAgZGF0YVt0ZXh0XTonaW5pdGlhbCcgbmV3 LXR1cGxlOiBpZFtpbnRlZ2VyXToxIGtlcHRfY29sW2ludGVnZXJdOjEwMCBkYXRhW3RleHRd Oid1cGRhdGVkJworKDEgcm93KQorCistLSBERUZBVUxUIHJlcGxpY2EgaWRlbnRpdHkgd2l0 aCBjb21wb3NpdGUgcHJpbWFyeSBrZXkKK0RST1AgVEFCTEUgcmVwaWRfdGVzdDsKK0NSRUFU RSBUQUJMRSByZXBpZF90ZXN0ICgKKyAgICBpZF9hIGludCwKKyAgICBpZF9iIGludCwKKyAg ICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChp ZF9hLCBpZF9iKQorKTsKK0NSRUFURSBJTkRFWCByZXBpZF90ZXN0X2lkeCBPTiByZXBpZF90 ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgxLCAx MCwgMTAwLCAnaW5pdGlhbCcpOworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IChmaWx0 ZXIgb3V0IHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3Qn LCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEg Tk9UIExJS0UgJ0NPTU1JVCAlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBp ZF90ZXN0OiBJTlNFUlQ6IGlkX2FbaW50ZWdlcl06MSBpZF9iW2ludGVnZXJdOjEwIGluZGV4 ZWRfY29sW2ludGVnZXJdOjEwMCBkYXRhW3RleHRdOidpbml0aWFsJworKDEgcm93KQorCist LSBVcGRhdGUgbm9uLWtleSBjb2x1bW5zIC0gc2hvdWxkIGxvZyBib3RoIGlkX2EgYW5kIGlk X2IgaW4gb2xkIGtleQorVVBEQVRFIHJlcGlkX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcs IGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkX2EgPSAxIEFORCBpZF9iID0gMTA7CistLSBD aGVjayBsb2dpY2FsIGRlY29kaW5nIG91dHB1dCAtIHNob3VsZCBzZWUgb2xkIGtleSB3aXRo IGJvdGggcHJpbWFyeSBrZXkgY29sdW1ucworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVS RSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5y ZXBpZF90ZXN0OiBVUERBVEU6IGlkX2FbaW50ZWdlcl06MSBpZF9iW2ludGVnZXJdOjEwIGlu ZGV4ZWRfY29sW2ludGVnZXJdOjE1MCBkYXRhW3RleHRdOid1cGRhdGVkJworKDEgcm93KQor CistLSBFeHByZXNzaW9uIGluZGV4IGFuZCByZXBsaWNhIGlkZW50aXR5CitEUk9QIFRBQkxF IHJlcGlkX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVwaWRfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIGVtYWlsIHRleHQgTk9UIE5VTEwsCisgICAgZGF0YSB0ZXh0Cisp OworLS0gQ3JlYXRlIHVuaXF1ZSBleHByZXNzaW9uIGluZGV4CitDUkVBVEUgVU5JUVVFIElO REVYIHJlcGlkX3Rlc3RfbG93ZXJfZW1haWxfaWR4IE9OIHJlcGlkX3Rlc3QobG93ZXIoZW1h aWwpKTsKKy0tIENhbm5vdCB1c2UgZXhwcmVzc2lvbiBpbmRleCBmb3IgcmVwbGljYSBpZGVu dGl0eSAoc2hvdWxkIGZhaWwpCistLSBQb3N0Z3JlU1FMIHJlcXVpcmVzIHRoZSBpbmRleCB0 byBiZSBvbiBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMKKy0tIFRoaXMgc2hvdWxkIHByb2R1 Y2UgYW4gZXJyb3IKK0RPICQkCitCRUdJTgorICAgIEFMVEVSIFRBQkxFIHJlcGlkX3Rlc3Qg UkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCByZXBpZF90ZXN0X2xvd2VyX2VtYWlsX2lk eDsKKyAgICBSQUlTRSBFWENFUFRJT04gJ1Nob3VsZCBoYXZlIGZhaWxlZCAtIGV4cHJlc3Np b24gaW5kZXhlcyBjYW5ub3QgYmUgdXNlZCBmb3IgcmVwbGljYSBpZGVudGl0eSc7CitFWENF UFRJT04KKyAgICBXSEVOIGZlYXR1cmVfbm90X3N1cHBvcnRlZCBUSEVOCisgICAgICAgIFJB SVNFIE5PVElDRSAnQ29ycmVjdGx5IHJlamVjdGVkIGV4cHJlc3Npb24gaW5kZXggZm9yIHJl cGxpY2EgaWRlbnRpdHknOworRU5EJCQ7CitOT1RJQ0U6ICBDb3JyZWN0bHkgcmVqZWN0ZWQg ZXhwcmVzc2lvbiBpbmRleCBmb3IgcmVwbGljYSBpZGVudGl0eQorLS0gVXNlIEZVTEwgaW5z dGVhZAorQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBSRVBMSUNBIElERU5USVRZIEZVTEw7CitJ TlNFUlQgSU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMSwgJ3VzZXJAZXhhbXBsZS5jb20nLCAn aW5pdGlhbCcpOworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IChmaWx0ZXIgb3V0IHRy YW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBkYXRhIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBO VUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEgTk9UIExJS0Ug J0NPTU1JVCAlJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB0YWJsZSBwdWJsaWMucmVwaWRfdGVzdDogSU5TRVJUOiBpZFtpbnRlZ2VyXToxIGVtYWls W3RleHRdOid1c2VyQGV4YW1wbGUuY29tJyBkYXRhW3RleHRdOidpbml0aWFsJworKDEgcm93 KQorCistLSBVcGRhdGUgLSBzaG91bGQgbG9nIGFsbCBjb2x1bW5zIGluIG9sZCBrZXkKK1VQ REFURSByZXBpZF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKKy0t IENoZWNrIGxvZ2ljYWwgZGVjb2Rpbmcgb3V0cHV0CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkK K1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0YWJsZSBwdWJsaWMucmVwaWRfdGVzdDog VVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2VyXToxIGVtYWlsW3RleHRdOid1c2VyQGV4YW1w bGUuY29tJyBkYXRhW3RleHRdOidpbml0aWFsJyBuZXctdHVwbGU6IGlkW2ludGVnZXJdOjEg ZW1haWxbdGV4dF06J3VzZXJAZXhhbXBsZS5jb20nIGRhdGFbdGV4dF06J3VwZGF0ZWQnCiso MSByb3cpCisKKy0tIE5VTEwgdmFsdWVzIGluIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1ucwor RFJPUCBUQUJMRSByZXBpZF90ZXN0OworQ1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBudWxsYWJsZV9jb2wgaW50LAorICAgIGRhdGEg dGV4dAorKTsKK0FMVEVSIFRBQkxFIHJlcGlkX3Rlc3QgUkVQTElDQSBJREVOVElUWSBGVUxM OworSU5TRVJUIElOVE8gcmVwaWRfdGVzdCBWQUxVRVMgKDEsIE5VTEwsICdpbml0aWFsJyk7 CistLSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnQgKGZpbHRlciBvdXQgdHJhbnNhY3Rpb24g Ym91bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVS RSBkYXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0YSBOT1QgTElLRSAnQ09NTUlUICUn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0YWJsZSBwdWJsaWMucmVw aWRfdGVzdDogSU5TRVJUOiBpZFtpbnRlZ2VyXToxIG51bGxhYmxlX2NvbFtpbnRlZ2VyXTpu dWxsIGRhdGFbdGV4dF06J2luaXRpYWwnCisoMSByb3cpCisKKy0tIFVwZGF0ZSAtIG9sZCBr ZXkgc2hvdWxkIGluY2x1ZGUgTlVMTCB2YWx1ZQorVVBEQVRFIHJlcGlkX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGlu ZyBvdXRwdXQgLSBzaG91bGQgc2VlIG9sZCBrZXkgd2l0aCBOVUxMCitTRUxFQ1QgZGF0YSBG Uk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVM TCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgZGF0YVt0ZXh0XTonaW5pdGlhbCcgbmV3LXR1cGxl OiBpZFtpbnRlZ2VyXToxIG51bGxhYmxlX2NvbFtpbnRlZ2VyXTpudWxsIGRhdGFbdGV4dF06 J3VwZGF0ZWQnCisoMSByb3cpCisKKy0tIEdlbmVyYXRlZCBjb2x1bW5zIGFuZCByZXBsaWNh IGlkZW50aXR5CitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CitDUkVBVEUgVEFCTEUgcmVwaWRf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGJhc2VfY29sIGludCwKKyAg ICBnZW5lcmF0ZWRfY29sIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChiYXNlX2NvbCAqIDIp IFNUT1JFRCwKKyAgICBkYXRhIHRleHQKKyk7CitBTFRFUiBUQUJMRSByZXBpZF90ZXN0IFJF UExJQ0EgSURFTlRJVFkgRlVMTDsKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgKGlkLCBiYXNl X2NvbCwgZGF0YSkgVkFMVUVTICgxLCA1MCwgJ2luaXRpYWwnKTsKKy0tIEFkdmFuY2Ugc2xv dCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGZvciBz dGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTk9UIExJS0Ug J0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBJTlNFUlQ6IGlkW2ludGVnZXJd OjEgYmFzZV9jb2xbaW50ZWdlcl06NTAgZ2VuZXJhdGVkX2NvbFtpbnRlZ2VyXToxMDAgZGF0 YVt0ZXh0XTonaW5pdGlhbCcKKygxIHJvdykKKworLS0gVXBkYXRlIGJhc2VfY29sIC0gZ2Vu ZXJhdGVkX2NvbCB3aWxsIGNoYW5nZSBhdXRvbWF0aWNhbGx5CitVUERBVEUgcmVwaWRfdGVz dCBTRVQgYmFzZV9jb2wgPSA2MCBXSEVSRSBpZCA9IDE7CistLSBDaGVjayBsb2dpY2FsIGRl Y29kaW5nIG91dHB1dCAtIHNob3VsZCBpbmNsdWRlIG9sZCBnZW5lcmF0ZWRfY29sIHZhbHVl CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRf dGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHRhYmxlIHB1YmxpYy5yZXBpZF90ZXN0OiBVUERBVEU6IG9sZC1rZXk6 IGlkW2ludGVnZXJdOjEgYmFzZV9jb2xbaW50ZWdlcl06NTAgZ2VuZXJhdGVkX2NvbFtpbnRl Z2VyXToxMDAgZGF0YVt0ZXh0XTonaW5pdGlhbCcgbmV3LXR1cGxlOiBpZFtpbnRlZ2VyXTox IGJhc2VfY29sW2ludGVnZXJdOjYwIGdlbmVyYXRlZF9jb2xbaW50ZWdlcl06MTIwIGRhdGFb dGV4dF06J2luaXRpYWwnCisoMSByb3cpCisKKy0tIENsZWFudXAKK1NFTEVDVCBwZ19kcm9w X3JlcGxpY2F0aW9uX3Nsb3QoJ3JlcGlkX3Rlc3Rfc2xvdCcpOworIHBnX2Ryb3BfcmVwbGlj YXRpb25fc2xvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K0RST1AgVEFCTEUgcmVwaWRfdGVzdDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDU0OWU5YjJkN2JlLi4wMWVkNDNlYmExOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCkBAIC0xMzcsNiArMTM3LDEzIEBAIHRlc3Q6IGV2ZW50X3RyaWdnZXJf bG9naW4KICMgdGhpcyB0ZXN0IGFsc28gdXNlcyBldmVudCB0cmlnZ2Vycywgc28gbGlrZXdp c2UgcnVuIGl0IGJ5IGl0c2VsZgogdGVzdDogZmFzdF9kZWZhdWx0CiAKKyMgLS0tLS0tLS0t LQorIyBIT1QgdXBkYXRlcyBhbmQgcmVwbGljYSBpZGVudGl0eSBsb2dnaW5nIHRlc3RzCisj IFJ1biB0aGVzZSBzZXF1ZW50aWFsbHkgdG8gYXZvaWQgbG9naWNhbCByZXBsaWNhdGlvbiBz bG90IGludGVyZmVyZW5jZQorIyAtLS0tLS0tLS0tCit0ZXN0OiBob3RfdXBkYXRlcwordGVz dDogcmVwbGljYV9pZGVudGl0eV9sb2dnaW5nCisKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBh dCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJp bmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgogdGVzdDogdGFibGVzcGFj ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MDMwZjRmYzZkYgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDU1MyBA QAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBUZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1 cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhpcyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlm aWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5k IGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFy ZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9k czoKKy0tIDEuIEluZGV4IHZlcmlmaWNhdGlvbiAoaW5kZXggc3RpbGwgd29ya3MgPSBwcm92 ZXMgbm8gaW5kZXggdXBkYXRlIGZvciBIT1QpCistLSAyLiBTdGF0aXN0aWNzIGZ1bmN0aW9u cyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQorLS0gMy4gcGFnZWluc3BlY3Qg ZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24KKy0tCisKKy0tIExvYWQgcmVx dWlyZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2Vp bnNwZWN0OworCistLSBDbGVhbiB1cCBmcm9tIHByaW9yIHJ1bnMKK0RST1AgVEFCTEUgSUYg RVhJU1RTIGhvdF90ZXN0IENBU0NBREU7CisKKy0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBk YXRlIGNvdW50CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJl bF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICgKKyAgICB1cGRhdGVzIEJJR0lOVCwKKyAg ICBob3QgQklHSU5UCispIEFTICQkCitERUNMQVJFCisgIHJlbF9vaWQgb2lkOworQkVHSU4K KyAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgUEVSRk9STSBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKworICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7Cisg IGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApICsKKyAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKworICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExB TkdVQUdFIHBscGdzcWw7CisKKy0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFydCBvZiBhIEhP VCBjaGFpbiAoaGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorQ1JFQVRFIE9SIFJF UExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3Rp ZCB0aWQpCitSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGlu dDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKK0JFR0lOCisgIGJsb2NrX251bSA6PSAodGFyZ2V0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIExvb2sgZm9yIGEgZGlmZmVy ZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0 dXBsZQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9j dGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBi bG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCBJ UyBOT1QgTlVMTAorICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICBBTkQg KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRp ZCAhPSB0YXJnZXRfY3RpZAorICBMT09QCisgICAgUkVUVVJOIHRydWU7CisgIEVORCBMT09Q OworCisgIFJFVFVSTiBmYWxzZTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0t IFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwg c3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3Rp ZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBB UworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2Nr X251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsKKyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFy dF9jdGlkOworICBuZXh0X2N0aWQgdGlkOworICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4 X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRf cHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVH SU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsK KworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91 ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJl bF9uYW1lLCBibG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5E IHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9PUAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygn IHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcp Jyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOworICAgIEVYSVQ7Cisg IEVORCBMT09QOworCisgIC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRo IHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAg Y3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cg dGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBM T09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjpp bnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdz LCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxf bmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09Q CisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8gbmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0g Q0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAo MCknCisgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEpJworICAgICAgICBXSEVOIDIg VEhFTiAncmVkaXJlY3QgKDIpJworICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisg ICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8 ICcpJworICAgICAgRU5EOworCisgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAg IHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUs CisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQsCisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlk IElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4K KyAgICAgIDsKKworICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2Vf aXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisg ICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0g VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRf Y3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7Cisg ICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJO OworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCistLSBUcmlnZ2VyIHBhZ2UgcHJ1bmluZyB2aWEgdGFibGUgc2NhbgorQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gaGVhcF9wcnVuZV9wYWdlKHJlbF9uYW1lIHRleHQsIHRhcmdl dF9jdGlkIHRpZCkKK1JFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICBibG9ja19udW0g aW50OworQkVHSU4KKyAgLS0gRXh0cmFjdCBibG9jayBudW1iZXIgZnJvbSBjdGlkCisgIGJs b2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0t IFNjYW4gb25seSB0aGUgc3BlY2lmaWMgcGFnZSB0byB0cmlnZ2VyIHBydW5pbmcgb24gdGhh dCBwYWdlCisgIEVYRUNVVEUgJ1NFTEVDVCBDT1VOVCgqKSBGUk9NICcgfHwgcXVvdGVfaWRl bnQocmVsX25hbWUpIHx8CisgICAgICAgICAgICcgV0hFUkUgY3RpZCA+PSAoJyB8fCBibG9j a19udW0gfHwgJywwKSBBTkQgY3RpZCA8ICgnIHx8IChibG9ja19udW0gKyAxKSB8fCAnLDAp JzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0tIEJhc2ljIEhPVCB1cGRhdGUg KHVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4pCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbm9u X2luZGV4ZWRfY29sIHRleHQKKykgVVNJTkcgaGVhcDsKKworQ1JFQVRFIElOREVYIGhvdF90 ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworCistLSBHZXQgYmFzZWxpbmUgYW5k IGluaXRpYWwgY3RpZAorV0lUSCBpbml0aWFsX3N0YXRlIEFTICgKKyAgU0VMRUNUIGN0aWQg RlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICAnSW5pdGlhbCBTdGF0 ZScgQVMgcGhhc2UsCisgIGluaXRpYWxfc3RhdGUuY3RpZCwKKyAgKGdldF9ob3RfY291bnQo J2hvdF90ZXN0JykpLnVwZGF0ZXMsCisgIChnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpKS5o b3QKK0ZST00gaW5pdGlhbF9zdGF0ZTsKKworLS0gU2hvdWxkIGJlIEhPVCB1cGRhdGVzIChv bmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKK1VQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitVUERBVEUgaG90 X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwor VVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJF IGlkID0gMzsKKworLS0gVmVyaWZ5IEhPVCB1cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QKKyAg J0FmdGVyIFVwZGF0ZXMnIEFTIHBoYXNlLAorICAoZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KSkudXBkYXRlcywKKyAgKGdldF9ob3RfY291bnQoJ2hvdF90ZXN0JykpLmhvdDsKKworLS0g RHVtcCB0aGUgSE9UIGNoYWluIGJlZm9yZSBwcnVuaW5nCitXSVRIIGN1cnJlbnRfdHVwbGUg QVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQorKQorU0VM RUNUCisgICdCZWZvcmUgVkFDVVVNJyBBUyBwaGFzZSwKKyAgaGFzX2hvdF9jaGFpbignaG90 X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9z aXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlk CitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rl c3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCitTRVQgU0VTU0lPTiBlbmFibGVfc2Vxc2Nh biA9IE9GRjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT0ZGOworCistLSBW ZXJpZnkgaW5kZXhlcyBzdGlsbCB3b3JrCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBp ZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsK K1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29s IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgaWQsIGlu ZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0t IFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNl CitWQUNVVU0gaG90X3Rlc3Q7CisKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBh ZnRlciB2YWN1dW0KK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgJ0FmdGVyIFZBQ1VVTScg QVMgcGhhc2UsCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5j dGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9ob3RfY2hh aW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLAor TEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNU IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBpbmRleCB3YXMgdXBk YXRlZCAobmV3IHZhbHVlIGZpbmRhYmxlKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg aWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 CitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9j b2wgPSAxNTA7CisKKy0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4CitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4 ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9j b2wgPSAxMDA7CisKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFzY2FuID0gT047CitTRVQgU0VT U0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9OOworCistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0 eTogdXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRh dGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50 LAorICAgIGNvbF9jIGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFVTSU5HIGhlYXA7 CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hX2lkeCBPTiBob3RfdGVzdChjb2xfYSk7CitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYl9pZHggT04gaG90X3Rlc3QoY29sX2IpOworQ1JFQVRF IElOREVYIGhvdF90ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9jKTsKKworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworCistLSBV cGRhdGUgb25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgYW4gaW5kZXhl ZCBjb2x1bW4gY2hhbmdlZAorLS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBtdXN0IGJlIHVw ZGF0ZWQgKGFsbC1vci1ub25lIHByb3BlcnR5KQorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xf YSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBWZXJpZnkgYWxsIHRocmVlIGluZGV4ZXMgc3RpbGwgd29yayBjb3JyZWN0bHkK K1NFTEVDVCBpZCwgY29sX2EgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYSA9IDE1OyAgLS0g dXBkYXRlZCBpbmRleAorU0VMRUNUIGlkLCBjb2xfYiBGUk9NIGhvdF90ZXN0IFdIRVJFIGNv bF9iID0gMjA7ICAtLSB1bmNoYW5nZWQgaW5kZXgKK1NFTEVDVCBpZCwgY29sX2MgRlJPTSBo b3RfdGVzdCBXSEVSRSBjb2xfYyA9IDMwOyAgLS0gdW5jaGFuZ2VkIGluZGV4CisKKy0tIE5v dyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0ZWQnOworU0VMRUNUIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBhbGwgaW5kZXhlcyBzdGlsbCB3 b3JrCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYSA9IDE1IEFORCBjb2xf YiA9IDIwIEFORCBjb2xfYyA9IDMwOworCistLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBh bmQgbmV3IG91dHNpZGUgcHJlZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQorRFJP UCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFVT SU5HIGhlYXA7CisKKy0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2Fj dGl2ZScKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0 YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRl eGVkIGNvbHVtbiBvbiAnYWN0aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hh bmdlZCkKKy0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2luYWN0aXZlJyByb3cg KG91dHNpZGUgcHJlZGljYXRlKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0 IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFjdGl2ZScg dG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdyZVNRTCBp cyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRpY2F0ZSBj aGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFsdWVzIGFy ZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMgPSAnZGVs ZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisKKy0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2FjdGl2ZScgcm93cworU0VM RUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK KworLS0gRXhwcmVzc2lvbiBpbmRleCB3aXRoIEpTT05CCitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBtZXRhZGF0YSBqc29uYgorKSBVU0lORyBoZWFwOworCistLSBJbmRleCBvbiBKU09O QiBleHByZXNzaW9uCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfdXNlcl9pZF9pZHggT04gaG90 X3Rlc3QoKG1ldGFkYXRhLT4+J3VzZXJfaWQnKSk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3Rf c3RhdHVzX2lkeCBPTiBob3RfdGVzdCgobWV0YWRhdGEtPj4nc3RhdHVzJykpOworCitJTlNF UlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICd7InVzZXJfaWQiOiAiMTIzIiwgInN0YXR1 cyI6ICJhY3RpdmUifSc6Ompzb25iKTsKKworLS0gVXBkYXRlIEpTT05CIGZpZWxkIHVzZWQg aW4gZXhwcmVzc2lvbiBpbmRleCB0byB0aGUgc2FtZSB2YWx1ZSwKKy0tIHRoaXMgd2lsbCBi ZSBIT1QgYmVjYXVzZSB0aGUgZW50aXJlIEpTT05CIGZpZWxkIGlzIG9ic2VydmVkIHRvCist LSBiZSB1bmNoYW5nZWQuCitVUERBVEUgaG90X3Rlc3QgU0VUIG1ldGFkYXRhID0ganNvbmJf c2V0KG1ldGFkYXRhLCAne3VzZXJfaWR9JywgJyIxMjMiJykKK1dIRVJFIGlkID0gMTsKK1NF TEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgZmll bGQgdGhhdCBpcyBubyB1c2VkIGluIGFueSBpbmRleCB0byBzb21lIG5ldyB2YWx1ZSwgdGhp cworLS0gd2lsbCBwcmV2ZW50IGEgSE9UIHVwZGF0ZSBkZXNwaXRlIG5vdCBjaGFuZ2luZyB3 aGF0IGlzIHVzZWQgd2hlbiBmb3JtaW5nCistLSB0aGUgaW5kZXgga2V5LCB0aGlzIGlzIGNv dW50ZXIgaW50dWl0aXZlIGFuZCBjYXVzZXMgaW5kZXggYmxvYXQgYXMgd2VsbAorLS0gYXMg c2xvd3MgZG93biB1cGRhdGVzIG9uIEpTT05CIGRhdGEgYXMgYW55IGNoYW5nZSB3aWxsIHRy aWdnZXIgYWxsCistLSBpbmRleGVzIHRvIGJlIHVwZGF0ZWQuCitVUERBVEUgaG90X3Rlc3Qg U0VUIG1ldGFkYXRhID0ganNvbmJfc2V0KG1ldGFkYXRhLCAne2Zvb2R9JywgJyJhcHBsZSIn KQorV0hFUkUgaWQgPSAxOworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisK Ky0tIFVzZSBhIGZldyBkaWZmZXJlbnQgbWV0aG9kcyBmb3IgbXV0YXRpbmcgSlNPTkIgZGF0 YSwgYnV0IGRvbid0IG1vZGlmeQorLS0gaW5kZXhlZCBwb3J0aW9ucyBvZiB0aGUgZG9jdW1l bnQuICBOb25lIG9mIHRoZXNlIHdpbGwgYmUgSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBt ZXRhZGF0YSA9IGpzb25iX3NldCgKKyAganNvbmJfc2V0KG1ldGFkYXRhLCAne2Zvb2R9Jywg JyJwZWFyIicpLAorICAne3RpbWVzdGFtcH0nLAorICB0b19qc29uYihub3coKSkKKykKK1dI RVJFIGlkID0gMTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCitVUERB VEUgaG90X3Rlc3QKK1NFVCBtZXRhZGF0YSA9IG1ldGFkYXRhIHx8ICd7InVzZXJfaWQiOiAi MTIzIiwgInRpbWVzdGFtcCI6ICIyMDI0LTAxLTAxIn0nOjpqc29uYgorV0hFUkUgaWQgPSAx OworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKK1VQREFURSBob3RfdGVz dCBTRVQgbWV0YWRhdGEgPQorICBqc29uYl9zZXQoCisgICAganNvbmJfc2V0KG1ldGFkYXRh LCAne3VzZXJfaWR9JywgJyIxMjMiJyksCisgICAgJ3tmcnVpdH0nLAorICAgICcicGx1bWIi JworICApOworU0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKK1VQREFURSBo b3RfdGVzdCBTRVQgbWV0YWRhdGEgPSBtZXRhZGF0YSB8fCBqc29uYl9idWlsZF9vYmplY3Qo CisgICd1c2VyX2lkJywgJzEyMycsCisgICd0aW1lc3RhbXAnLCBub3coKSwKKyAgJ2ZydWl0 JywgJ2hvbmV5ZGV3JworKTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1bW5z CitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAgdmFsdWUgaW50 LAorICAgIGJyaW5fY29sIGludAorKSBVU0lORyBoZWFwOworCitDUkVBVEUgSU5ERVggaG90 X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKHRzKTsKK0NSRUFURSBJTkRF WCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4oYnJpbl9j b2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAxLTAxJywg MTAwLCAxMDAwKTsKKworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1bW5zIC0gc2hvdWxkIHN0 aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQorVVBEQVRFIGhvdF90ZXN0 IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgQlJJTiBp bmRleGVzIHdvcmsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIHRzID49ICcyMDI0 LTAxLTAyJzsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGJyaW5fY29sID49IDIw MDA7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYWxzbyBiZSBI T1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VM RUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFRPQVNUIGFuZCBIT1Q6IFRP QVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCitEUk9QIFRBQkxFIGhvdF90 ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbGFyZ2VfdGV4dCB0ZXh0LAorICAgIHNt YWxsX3RleHQgdGV4dAorKSBVU0lORyBoZWFwOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3Rf aWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworLS0gSW5zZXJ0IHJvdyB3aXRoIFRP QVNUZWQgY29sdW1uICg+IDJLQikKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CisKKy0tIFVwZGF0ZSBub24taW5k ZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90 ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQnOworU0VMRUNUIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBI T1QgaWYgaW5kZXhlZCBjb2x1bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxh cmdlX3RleHQgPSByZXBlYXQoJ3knLCAzMDAwKTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdo b3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MKK1NFTEVDVCBpZCBG Uk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworCistLSBVcGRhdGUgaW5k ZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBp bmRleGVkX2NvbCA9IDIwMDsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOworCistLSBVbmlxdWUgY29uc3RyYWludCAodW5p cXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAorRFJPUCBUQUJMRSBob3Rf dGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBVU0lO RyBoZWFwOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2RhdGEx Jyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2RhdGEyJyk7CisK Ky0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJhaW50IHN0aWxsIGVuZm9y Y2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3RfdGVzdCBPUkRFUiBC WSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFU RSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CisKKy0tIE11 bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9QIFRB QkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9j IGludCwKKyAgICBkYXRhIHRleHQKKykgVVNJTkcgaGVhcDsKKworQ1JFQVRFIElOREVYIGhv dF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChjb2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0 ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKK1NFTEVDVCBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xf YSA9IDEwOworCistLSBVcGRhdGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4 KSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjU7 CitTRUxFQ1QgZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2IgPSAyMDsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEg KG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0 YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgbXVsdGktY29sdW1uIGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3Rf dGVzdCBXSEVSRSBjb2xfYSA9IDEwIEFORCBjb2xfYiA9IDIwOworCistLSBQYXJ0aXRpb25l ZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBUQUJMRSBJRiBF WElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKKworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnRpdGlvbmVkICgKKyAgICBpZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBp bnQsCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZ IEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0 aW9uX2tleSkgVVNJTkcgaGVhcDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnQxIFBB UlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDEwMCkgVVNJTkcgaGVhcDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0MiBQ QVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZST00g KDEwMCkgVE8gKDIwMCkgVVNJTkcgaGVhcDsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3Bh cnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4ZWRfY29sKTsKKworSU5TRVJU IElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5pdGlh bDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUw LCAyMDAsICdpbml0aWFsMicpOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5vbi1p bmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0 aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKKworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVS RSBpZCA9IDI7CisKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwor U0VMRUNUIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisKKy0tIFZlcmlmeSBp bmRleGVzIHdvcmsgb24gcGFydGl0aW9ucworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBob3Rf dGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDIwMDsKKworLS0gVXBkYXRl IGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlvbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworCistLSBW ZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRp dGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworCistLSBDbGVhbnVwCitEUk9QIFRB QkxFIElGIEVYSVNUUyBob3RfdGVzdDsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0 X3BhcnRpdGlvbmVkIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90 X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhlYXBfcHJ1bmUo dGV4dCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRfaG90X2NvdW50KHRleHQpOwor RFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9yZXBsaWNhX2lkZW50aXR5X2xvZ2dpbmcuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcmVwbGljYV9pZGVudGl0eV9sb2dnaW5nLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNGM0NWU3NmUxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9yZXBsaWNhX2lkZW50aXR5X2xvZ2dpbmcuc3FsCkBAIC0w LDAgKzEsMzQ5IEBACistLQorLS0gUkVQTElDQV9JREVOVElUWV9MT0dHSU5HCistLSBUZXN0 IHRoYXQgcmVwbGljYSBpZGVudGl0eSBrZXlzIGFyZSBjb3JyZWN0bHkgZXh0cmFjdGVkIGFu ZCBsb2dnZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24KKy0tCistLSBUaGlzIHRlc3QgdmVy aWZpZXMgdGhhdCB0aGUgY29ycmVjdCBvbGQga2V5IGNvbHVtbnMgYXJlIGluY2x1ZGVkIGlu IFdBTCByZWNvcmRzCistLSBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiwgYmFzZWQgb24gdGhl IHRhYmxlJ3MgcmVwbGljYSBpZGVudGl0eSBzZXR0aW5nLgorLS0KKworLS0gQ2xlYW4gdXAg ZnJvbSBwcmlvciBydW5zCitEUk9QIFRBQkxFIElGIEVYSVNUUyByZXBpZF90ZXN0IENBU0NB REU7CisKKy0tIERyb3AgcmVwbGljYXRpb24gc2xvdCBpZiBpdCBleGlzdHMgZnJvbSBwcmlv ciBydW4KK1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlcGlkX3Rlc3Rfc2xv dCcpIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ3JlcGlk X3Rlc3Rfc2xvdCc7CisKKy0tIEVuYWJsZSBsb2dpY2FsIGRlY29kaW5nIHRvIHZlcmlmeSB3 aGF0IGdldHMgbG9nZ2VkCitTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3JlYXRlX2xvZ2ljYWxf cmVwbGljYXRpb25fc2xvdCgncmVwaWRfdGVzdF9zbG90JywgJ3Rlc3RfZGVjb2RpbmcnKTsK KworLS0gUkVQTElDQSBJREVOVElUWSBERUZBVUxUIChwcmltYXJ5IGtleSBjb2x1bW5zIG9u bHkpCitDUkVBVEUgVEFCTEUgcmVwaWRfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKyk7CisKK0NSRUFURSBJ TkRFWCByZXBpZF90ZXN0X2lkeCBPTiByZXBpZF90ZXN0KGluZGV4ZWRfY29sKTsKKworSU5T RVJUIElOVE8gcmVwaWRfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VS VCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CisKKy0tIEFk dmFuY2Ugc2xvdCB0byBza2lwIGluc2VydHMgKGZpbHRlciBvdXQgdHJhbnNhY3Rpb24gYm91 bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBk YXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0YSBOT1QgTElLRSAnQ09NTUlUICUnOwor CistLSBVcGRhdGUgbm9uLWtleSBjb2x1bW4gLSBzaG91bGQgbG9nIG9ubHkgaWQgaW4gb2xk IGtleQorVVBEQVRFIHJlcGlkX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworCistLSBVcGRhdGUgaW5kZXhlZCBub24ta2V5IGNvbHVtbiAtIHNob3VsZCBzdGls bCBsb2cgb25seSBpZCBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQgaW5kZXhl ZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAyOworCistLSBDaGVjayBsb2dpY2FsIGRlY29kaW5n IG91dHB1dCAtIHNob3VsZCBzZWUgb2xkIGtleSB3aXRoIG9ubHkgaWQKK1NFTEVDVCBkYXRh IEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBO VUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtFICclVVBEQVRFJSc7CisKKy0tIFJFUExJQ0Eg SURFTlRJVFkgRlVMTCAoYWxsIGNvbHVtbnMgaW4gb2xkIGtleSkKK0RST1AgVEFCTEUgcmVw aWRfdGVzdDsKKworQ1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0CispOworCitB TFRFUiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKworQ1JFQVRF IElOREVYIHJlcGlkX3Rlc3RfaWR4IE9OIHJlcGlkX3Rlc3QoaW5kZXhlZF9jb2wpOworCitJ TlNFUlQgSU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworCist LSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnQgKGZpbHRlciBvdXQgdHJhbnNhY3Rpb24gYm91 bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBk YXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0YSBOT1QgTElLRSAnQ09NTUlUICUnOwor CistLSBVcGRhdGUgYW55IGNvbHVtbiAtIHNob3VsZCBsb2cgQUxMIGNvbHVtbnMgaW4gb2xk IGtleQorVVBEQVRFIHJlcGlkX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworCistLSBDaGVjayBsb2dpY2FsIGRlY29kaW5nIG91dHB1dCAtIHNob3VsZCBzZWUg b2xkIGtleSB3aXRoIGFsbCBjb2x1bW5zCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJF IGRhdGEgTElLRSAnJVVQREFURSUnOworCistLSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElO REVYIChpbmRleCBjb2x1bW5zIG9ubHkpCitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CisKK0NS RUFURSBUQUJMRSByZXBpZF90ZXN0ICgKKyAgICBpZCBpbnQsCisgICAgdW5pcXVlX2NvbCBp bnQgVU5JUVVFIE5PVCBOVUxMLAorICAgIGRhdGEgdGV4dAorKTsKKworQUxURVIgVEFCTEUg cmVwaWRfdGVzdCBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHJlcGlkX3Rlc3RfdW5p cXVlX2NvbF9rZXk7CisKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgxLCAxMDAs ICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAn aW5pdGlhbCcpOworCistLSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnRzIChmaWx0ZXIgb3V0 IHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBkYXRhIEZS T00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxM LCBOVUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEgTk9UIExJ S0UgJ0NPTU1JVCAlJzsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBsb2cgb25seSB1bmlxdWVfY29sIGluIG9sZCBrZXkKK1VQREFURSByZXBpZF90ZXN0IFNF VCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIHVuaXF1ZV9jb2wgPSAxMDA7CisKKy0tIFVwZGF0 ZSBpZCAobm90IGluIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXgpIC0gc2hvdWxkIHN0aWxsIGxv ZyBvbmx5IHVuaXF1ZV9jb2wKK1VQREFURSByZXBpZF90ZXN0IFNFVCBpZCA9IDEwIFdIRVJF IHVuaXF1ZV9jb2wgPSAyMDA7CisKKy0tIENoZWNrIGxvZ2ljYWwgZGVjb2Rpbmcgb3V0cHV0 IC0gc2hvdWxkIHNlZSBvbGQga2V5IHdpdGggb25seSB1bmlxdWVfY29sCitTRUxFQ1QgZGF0 YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90Jywg TlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFURSUnOworCistLSBSRVBMSUNB IElERU5USVRZIE5PVEhJTkcgKG5vIG9sZCBrZXkgbG9nZ2VkKQorRFJPUCBUQUJMRSByZXBp ZF90ZXN0OworCitDUkVBVEUgVEFCTEUgcmVwaWRfdGVzdCAoCisgICAgaWQgaW50IFBSSU1B UlkgS0VZLAorICAgIGRhdGEgdGV4dAorKTsKKworQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBS RVBMSUNBIElERU5USVRZIE5PVEhJTkc7CisKK0lOU0VSVCBJTlRPIHJlcGlkX3Rlc3QgVkFM VUVTICgxLCAnaW5pdGlhbCcpOworCistLSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnQgKGZp bHRlciBvdXQgdHJhbnNhY3Rpb24gYm91bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xv dCcsIE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0 YSBOT1QgTElLRSAnQ09NTUlUICUnOworCistLSBVcGRhdGUgLSBzaG91bGQgbG9nIG5vIG9s ZCBrZXkKK1VQREFURSByZXBpZF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlk ID0gMTsKKworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGluZyBvdXRwdXQgLSBzaG91bGQgc2Vl IHVwZGF0ZSB3aXRoIG5vIG9sZCBrZXkKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUg ZGF0YSBMSUtFICclVVBEQVRFJSc7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleCByZXBsaWNh IGlkZW50aXR5CitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CisKK0NSRUFURSBUQUJMRSByZXBp ZF90ZXN0ICgKKyAgICBpZCBpbnQsCisgICAgY29sX2EgaW50IE5PVCBOVUxMLAorICAgIGNv bF9iIGludCBOT1QgTlVMTCwKKyAgICBjb2xfYyBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAg IFVOSVFVRSAoY29sX2EsIGNvbF9iKQorKTsKKworQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBS RVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHJlcGlkX3Rlc3RfY29sX2FfY29sX2Jfa2V5 OworCitJTlNFUlQgSU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2lu aXRpYWwnKTsKKworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IChmaWx0ZXIgb3V0IHRy YW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBkYXRhIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBOVUxMLCBO VUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEgTk9UIExJS0Ug J0NPTU1JVCAlJzsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbnMgLSBzaG91bGQg bG9nIGNvbF9hIGFuZCBjb2xfYiBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJywgY29sX2MgPSAzNSBXSEVSRSBjb2xfYSA9IDEwIEFORCBjb2xf YiA9IDIwOworCistLSBDaGVjayBsb2dpY2FsIGRlY29kaW5nIG91dHB1dCAtIHNob3VsZCBz ZWUgb2xkIGtleSB3aXRoIGNvbF9hIGFuZCBjb2xfYgorU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwp CitXSEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKworLS0gVE9BU1QvZXh0ZXJuYWwgY29s dW1ucyBpbiByZXBsaWNhIGlkZW50aXR5CitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CisKK0NS RUFURSBUQUJMRSByZXBpZF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg bGFyZ2VfdGV4dCB0ZXh0LAorICAgIGRhdGEgdGV4dAorKTsKKworLS0gUkVQTElDQSBJREVO VElUWSBGVUxMIGluY2x1ZGVzIHRvYXN0ZWQgY29sdW1ucworQUxURVIgVEFCTEUgcmVwaWRf dGVzdCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisKKy0tIEluc2VydCBhIGxhcmdlIHZhbHVl IChsYXJnZSBlbm91Z2ggdG8gc2hvdyB0aGUgY29uY2VwdCB3aXRob3V0IGV4Y2Vzc2l2ZSBv dXRwdXQpCitJTlNFUlQgSU5UTyByZXBpZF90ZXN0IFZBTFVFUyAoMSwgcmVwZWF0KCd4Jywg MTAwKSwgJ2luaXRpYWwnKTsKKworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IChmaWx0 ZXIgb3V0IHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3Qn LCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScgQU5EIGRhdGEg Tk9UIExJS0UgJ0NPTU1JVCAlJzsKKworLS0gVXBkYXRlIHNtYWxsIGNvbHVtbiAtIHNob3Vs ZCBzdGlsbCBsb2cgbGFyZ2VfdGV4dCBjb2x1bW4gaW4gb2xkIGtleQorVVBEQVRFIHJlcGlk X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBDaGVjayBs b2dpY2FsIGRlY29kaW5nIG91dHB1dCAtIHZlcmlmeSBib3RoIG9sZCBhbmQgbmV3IHZhbHVl cyBhcmUgbG9nZ2VkCistLSBKdXN0IGNoZWNrIHRoYXQgVVBEQVRFIGhhcHBlbmVkIGFuZCBp bmNsdWRlcyBib3RoIGxhcmdlX3RleHQgYW5kIGRhdGEgY29sdW1ucworU0VMRUNUIENPVU5U KCopIGFzIHVwZGF0ZV9jb3VudCBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn cmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRhdGEgTElLRSAnJVVQREFU RSUnIEFORCBkYXRhIExJS0UgJyVsYXJnZV90ZXh0JScgQU5EIGRhdGEgTElLRSAnJW9sZC1r ZXklJzsKKworLS0gVGVzdCBUT0FTVCBjb2x1bW5zIHdpdGggUkVQTElDQSBJREVOVElUWSBV U0lORyBJTkRFWAorRFJPUCBUQUJMRSByZXBpZF90ZXN0OworCitDUkVBVEUgVEFCTEUgcmVw aWRfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfbGFyZ2Vf dGV4dCB0ZXh0IE5PVCBOVUxMLAorICAgIGRhdGEgdGV4dAorKTsKKworLS0gQ3JlYXRlIHVu aXF1ZSBpbmRleCBvbiB0aGUgbGFyZ2UgdGV4dCBjb2x1bW4KK0NSRUFURSBVTklRVUUgSU5E RVggcmVwaWRfdGVzdF9sYXJnZV9pZHggT04gcmVwaWRfdGVzdChpbmRleGVkX2xhcmdlX3Rl eHQpOworCistLSBTZXQgcmVwbGljYSBpZGVudGl0eSB0byB1c2UgdGhlIGluZGV4IChub3Qg RlVMTCkKK0FMVEVSIFRBQkxFIHJlcGlkX3Rlc3QgUkVQTElDQSBJREVOVElUWSBVU0lORyBJ TkRFWCByZXBpZF90ZXN0X2xhcmdlX2lkeDsKKworLS0gSW5zZXJ0IGEgbGFyZ2UgdmFsdWUg KGxhcmdlIGVub3VnaCB0byBiZSBUT0FTVGVkKQorSU5TRVJUIElOVE8gcmVwaWRfdGVzdCBW QUxVRVMgKDEsIHJlcGVhdCgneCcsIDEwMDAwMCksICdpbml0aWFsJyk7CisKKy0tIEFkdmFu Y2Ugc2xvdCBwYXN0IGluc2VydHMKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJF IGRhdGEgTk9UIExJS0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7 CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgc3RpbGwgbG9nIGlu ZGV4ZWRfbGFyZ2VfdGV4dCBpbiBvbGQga2V5CistLSBkZXNwaXRlIGJlaW5nIHVubW9kaWZp ZWQgYmVjYXVzZSBpdCBpcyBUT0FTVGVkIGFuZCBpbiB0aGUgcmVwbGljYSBrZXkKK1VQREFU RSByZXBpZF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKKworLS0g VmVyaWZ5IFRPQVNUZWQgaW5kZXhlZCBjb2x1bW4gcGFydCBvZiB0aGUgcmVsaWNhIGlkZW50 aXR5IGlzIGxvZ2dlZCBpbiBvbGQga2V5CitTRUxFQ1QgQ09VTlQoKikgQVMgdG9hc3RlZF9p bmRleF9sb2dnZWQgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rl c3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJyBBTkQg ZGF0YSBMSUtFICclaW5kZXhlZF9sYXJnZV90ZXh0JSc7CistLSBEcm9wcGVkIGNvbHVtbnMg YW5kIHJlcGxpY2EgaWRlbnRpdHkKK0RST1AgVEFCTEUgcmVwaWRfdGVzdDsKKworQ1JFQVRF IFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkcm9w cGVkX2NvbCBpbnQsCisgICAga2VwdF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKTsKKwor QUxURVIgVEFCTEUgcmVwaWRfdGVzdCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisKK0lOU0VS VCBJTlRPIHJlcGlkX3Rlc3QgVkFMVUVTICgxLCA5OTksIDEwMCwgJ2luaXRpYWwnKTsKKwor LS0gRHJvcCBhIGNvbHVtbgorQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBEUk9QIENPTFVNTiBk cm9wcGVkX2NvbDsKKworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5zZXJ0IGFuZCBEREwgKGZp bHRlciBvdXQgdHJhbnNhY3Rpb24gYm91bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xv dCcsIE5VTEwsIE5VTEwpCitXSEVSRSBkYXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0 YSBOT1QgTElLRSAnQ09NTUlUICUnOworCistLSBVcGRhdGUgLSBvbGQga2V5IHNob3VsZCBo YW5kbGUgZHJvcHBlZCBjb2x1bW4KK1VQREFURSByZXBpZF90ZXN0IFNFVCBkYXRhID0gJ3Vw ZGF0ZWQnIFdIRVJFIGlkID0gMTsKKworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGluZyBvdXRw dXQKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBp ZF90ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtFICclVVBEQVRFJSc7 CisKKy0tIERFRkFVTFQgcmVwbGljYSBpZGVudGl0eSB3aXRoIGNvbXBvc2l0ZSBwcmltYXJ5 IGtleQorRFJPUCBUQUJMRSByZXBpZF90ZXN0OworCitDUkVBVEUgVEFCTEUgcmVwaWRfdGVz dCAoCisgICAgaWRfYSBpbnQsCisgICAgaWRfYiBpbnQsCisgICAgaW5kZXhlZF9jb2wgaW50 LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoaWRfYSwgaWRfYikKKyk7CisK K0NSRUFURSBJTkRFWCByZXBpZF90ZXN0X2lkeCBPTiByZXBpZF90ZXN0KGluZGV4ZWRfY29s KTsKKworSU5TRVJUIElOVE8gcmVwaWRfdGVzdCBWQUxVRVMgKDEsIDEwLCAxMDAsICdpbml0 aWFsJyk7CisKKy0tIEFkdmFuY2Ugc2xvdCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFu c2FjdGlvbiBib3VuZGFyaWVzIGZvciBzdGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBn X2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVM TCkKK1dIRVJFIGRhdGEgTk9UIExJS0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdD T01NSVQgJSc7CisKKy0tIFVwZGF0ZSBub24ta2V5IGNvbHVtbnMgLSBzaG91bGQgbG9nIGJv dGggaWRfYSBhbmQgaWRfYiBpbiBvbGQga2V5CitVUERBVEUgcmVwaWRfdGVzdCBTRVQgZGF0 YSA9ICd1cGRhdGVkJywgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWRfYSA9IDEgQU5EIGlk X2IgPSAxMDsKKworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGluZyBvdXRwdXQgLSBzaG91bGQg c2VlIG9sZCBrZXkgd2l0aCBib3RoIHByaW1hcnkga2V5IGNvbHVtbnMKK1NFTEVDVCBkYXRh IEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90ZXN0X3Nsb3QnLCBO VUxMLCBOVUxMKQorV0hFUkUgZGF0YSBMSUtFICclVVBEQVRFJSc7CisKKy0tIEV4cHJlc3Np b24gaW5kZXggYW5kIHJlcGxpY2EgaWRlbnRpdHkKK0RST1AgVEFCTEUgcmVwaWRfdGVzdDsK KworQ1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBlbWFpbCB0ZXh0IE5PVCBOVUxMLAorICAgIGRhdGEgdGV4dAorKTsKKworLS0gQ3Jl YXRlIHVuaXF1ZSBleHByZXNzaW9uIGluZGV4CitDUkVBVEUgVU5JUVVFIElOREVYIHJlcGlk X3Rlc3RfbG93ZXJfZW1haWxfaWR4IE9OIHJlcGlkX3Rlc3QobG93ZXIoZW1haWwpKTsKKwor LS0gQ2Fubm90IHVzZSBleHByZXNzaW9uIGluZGV4IGZvciByZXBsaWNhIGlkZW50aXR5IChz aG91bGQgZmFpbCkKKy0tIFBvc3RncmVTUUwgcmVxdWlyZXMgdGhlIGluZGV4IHRvIGJlIG9u IHNpbXBsZSBjb2x1bW4gcmVmZXJlbmNlcworLS0gVGhpcyBzaG91bGQgcHJvZHVjZSBhbiBl cnJvcgorRE8gJCQKK0JFR0lOCisgICAgQUxURVIgVEFCTEUgcmVwaWRfdGVzdCBSRVBMSUNB IElERU5USVRZIFVTSU5HIElOREVYIHJlcGlkX3Rlc3RfbG93ZXJfZW1haWxfaWR4OworICAg IFJBSVNFIEVYQ0VQVElPTiAnU2hvdWxkIGhhdmUgZmFpbGVkIC0gZXhwcmVzc2lvbiBpbmRl eGVzIGNhbm5vdCBiZSB1c2VkIGZvciByZXBsaWNhIGlkZW50aXR5JzsKK0VYQ0VQVElPTgor ICAgIFdIRU4gZmVhdHVyZV9ub3Rfc3VwcG9ydGVkIFRIRU4KKyAgICAgICAgUkFJU0UgTk9U SUNFICdDb3JyZWN0bHkgcmVqZWN0ZWQgZXhwcmVzc2lvbiBpbmRleCBmb3IgcmVwbGljYSBp ZGVudGl0eSc7CitFTkQkJDsKKworLS0gVXNlIEZVTEwgaW5zdGVhZAorQUxURVIgVEFCTEUg cmVwaWRfdGVzdCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisKK0lOU0VSVCBJTlRPIHJlcGlk X3Rlc3QgVkFMVUVTICgxLCAndXNlckBleGFtcGxlLmNvbScsICdpbml0aWFsJyk7CisKKy0t IEFkdmFuY2Ugc2xvdCBwYXN0IGluc2VydCAoZmlsdGVyIG91dCB0cmFuc2FjdGlvbiBib3Vu ZGFyaWVzIGZvciBzdGFiaWxpdHkpCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVwaWRfdGVzdF9zbG90JywgTlVMTCwgTlVMTCkKK1dIRVJFIGRh dGEgTk9UIExJS0UgJ0JFR0lOICUnIEFORCBkYXRhIE5PVCBMSUtFICdDT01NSVQgJSc7CisK Ky0tIFVwZGF0ZSAtIHNob3VsZCBsb2cgYWxsIGNvbHVtbnMgaW4gb2xkIGtleQorVVBEQVRF IHJlcGlkX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBD aGVjayBsb2dpY2FsIGRlY29kaW5nIG91dHB1dAorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5VTEwpCitX SEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKworLS0gTlVMTCB2YWx1ZXMgaW4gcmVwbGlj YSBpZGVudGl0eSBjb2x1bW5zCitEUk9QIFRBQkxFIHJlcGlkX3Rlc3Q7CisKK0NSRUFURSBU QUJMRSByZXBpZF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgbnVsbGFi bGVfY29sIGludCwKKyAgICBkYXRhIHRleHQKKyk7CisKK0FMVEVSIFRBQkxFIHJlcGlkX3Rl c3QgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyByZXBpZF90ZXN0IFZB TFVFUyAoMSwgTlVMTCwgJ2luaXRpYWwnKTsKKworLS0gQWR2YW5jZSBzbG90IHBhc3QgaW5z ZXJ0IChmaWx0ZXIgb3V0IHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgZm9yIHN0YWJpbGl0eSkK K1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZXBpZF90 ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMKQorV0hFUkUgZGF0YSBOT1QgTElLRSAnQkVHSU4gJScg QU5EIGRhdGEgTk9UIExJS0UgJ0NPTU1JVCAlJzsKKworLS0gVXBkYXRlIC0gb2xkIGtleSBz aG91bGQgaW5jbHVkZSBOVUxMIHZhbHVlCitVUERBVEUgcmVwaWRfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CisKKy0tIENoZWNrIGxvZ2ljYWwgZGVjb2Rpbmcg b3V0cHV0IC0gc2hvdWxkIHNlZSBvbGQga2V5IHdpdGggTlVMTAorU0VMRUNUIGRhdGEgRlJP TSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEws IE5VTEwpCitXSEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKworLS0gR2VuZXJhdGVkIGNv bHVtbnMgYW5kIHJlcGxpY2EgaWRlbnRpdHkKK0RST1AgVEFCTEUgcmVwaWRfdGVzdDsKKwor Q1JFQVRFIFRBQkxFIHJlcGlkX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAg ICBiYXNlX2NvbCBpbnQsCisgICAgZ2VuZXJhdGVkX2NvbCBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoYmFzZV9jb2wgKiAyKSBTVE9SRUQsCisgICAgZGF0YSB0ZXh0CispOworCitBTFRF UiBUQUJMRSByZXBpZF90ZXN0IFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKKworSU5TRVJUIElO VE8gcmVwaWRfdGVzdCAoaWQsIGJhc2VfY29sLCBkYXRhKSBWQUxVRVMgKDEsIDUwLCAnaW5p dGlhbCcpOworCistLSBBZHZhbmNlIHNsb3QgcGFzdCBpbnNlcnQgKGZpbHRlciBvdXQgdHJh bnNhY3Rpb24gYm91bmRhcmllcyBmb3Igc3RhYmlsaXR5KQorU0VMRUNUIGRhdGEgRlJPTSBw Z19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5VTEwsIE5V TEwpCitXSEVSRSBkYXRhIE5PVCBMSUtFICdCRUdJTiAlJyBBTkQgZGF0YSBOT1QgTElLRSAn Q09NTUlUICUnOworCistLSBVcGRhdGUgYmFzZV9jb2wgLSBnZW5lcmF0ZWRfY29sIHdpbGwg Y2hhbmdlIGF1dG9tYXRpY2FsbHkKK1VQREFURSByZXBpZF90ZXN0IFNFVCBiYXNlX2NvbCA9 IDYwIFdIRVJFIGlkID0gMTsKKworLS0gQ2hlY2sgbG9naWNhbCBkZWNvZGluZyBvdXRwdXQg LSBzaG91bGQgaW5jbHVkZSBvbGQgZ2VuZXJhdGVkX2NvbCB2YWx1ZQorU0VMRUNUIGRhdGEg RlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlcGlkX3Rlc3Rfc2xvdCcsIE5V TEwsIE5VTEwpCitXSEVSRSBkYXRhIExJS0UgJyVVUERBVEUlJzsKKworLS0gQ2xlYW51cAor U0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVwaWRfdGVzdF9zbG90Jyk7CitE Uk9QIFRBQkxFIHJlcGlkX3Rlc3Q7Ci0tIAoyLjUxLjIKCg== --e01e3c6d1a964d21a0f843c0c79509ed Content-Disposition: attachment; filename*0="v33-0002-Idenfity-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v33-0002-Idenfity-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwZWY3MjYwMzQzNDE1Zjk4MjAxMTA4Nzc4ZDA3OTNhZjVlYmNmMWIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog U3VuLCAyIE5vdiAyMDI1IDExOjM2OjIwIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MzMgMi8y XSBJZGVuZml0eSBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMgaW4gdGhlIGV4ZWN1dG9y CiBvbiBVUERBVEUKClJlZmFjdG9yIGV4ZWN1dG9yIHVwZGF0ZSBsb2dpYyB0byBkZXRlcm1p bmUgd2hpY2ggaW5kZXhlZCBjb2x1bW5zIGhhdmUKYWN0dWFsbHkgY2hhbmdlZCBkdXJpbmcg YW4gVVBEQVRFIG9wZXJhdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoaXMgdXAKdG8gSGVh cERldGVybWluZUNvbHVtbnNJbmZvKCkgaW4gaGVhcF91cGRhdGUoKS4gIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXMsCmJ1dCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgIm1vZGlmaWVk IGluZGV4ZWQgYXR0cmlidXRlcyIgKG1peF9hdHRycywKd2FzIGtub3duIGFzIG1vZGlmaWVk X2F0dHJzKSBub3cgaGFwcGVucyBvdXRzaWRlIHRoZSBidWZmZXIgbG9jayBhbmQgY2FuCmlu Zm9ybSBvdGhlciBkZWNpc2lvbnMgdW5yZWxhdGVkIHRvIGhlYXAuCgpFeGVjVXBkYXRlTW9k SWR4QXR0cnMoKSByZXBsYWNlcyBIZWFwRGV0ZXJtaW5lc0NvbHVtbnNJbmZvKCkgYW5kIGlz CmNhbGxlZCBiZWZvcmUgdGFibGVfdHVwbGVfdXBkYXRlKCkgY3J1Y2lhbGx5IHdpdGhvdXQg dGhlIG5lZWQgZm9yIGFuCmV4Y2x1c2l2ZSBidWZmZXIgbG9jayBvbiB0aGUgcGFnZSB0aGF0 IGhvbGRzIHRoZSB0dXBsZSBiZWluZyB1cGRhdGVkLgpUaGlzIHJlZHVjZXMgdGhlIHRpbWUg dGhlIGxvY2sgaXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFu ZCBoZWFwX3VwZGF0ZSgpLgoKRXhlY1VwZGF0ZU1vZElkeEF0dHJzKCkgaW4gdHVybiB1c2Vz IEV4ZWNDb21wYXJlU2xvdEF0dHJzKCkgdG8gaWRlbnRpZnkKd2hpY2ggYXR0cmlidXRlcyBo YXZlIGNoYW5nZWQgYW5kIHRoZW4gaW50ZXJzZWN0cyB0aGF0IHdpdGggdGhlIHNldCBvZgpp bmRleGVkIGF0dHJpYnV0ZXMgdG8gaWRlbnRpZnkgdGhlIG1vZGlmaWVkIGluZGV4ZWQgc2V0 LCB0aGUgbWl4X2F0dHJzLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlm aWVkIGluZGV4ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMg YWxzbyByZXNwb25zaWJsZSBmb3IgcGFydCBvZiB0aGUgbG9naWMKaW52b2xlZCBpbiB0aGUg ZGVjaXNpb24gdG8gaW5jbHVkZSB0aGUgcmVwbGljYSBpZGVudGl0eSBrZXkgb3Igbm90LgpU aGlzIG1vdmVkIGludG8gaGVhcF91cGRhdGUoKSBhbmQgb3V0IG9mIEhlYXBEZXRlcm1pbmVD b2x1bW5zSW5mbygpCndoaWNoIGhhcyBiZWVuIHJlbmFtZWQgdG8gSGVhcFVwZGF0ZU1vZElk eEF0dHJzKCkgYXMgaXQgaXMgc3RpbGwKcmVxdWlyZWQgd2l0aGluIHNpbXBsZV9oZWFwX3Vw ZGF0ZSgpIHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgbWl4X2F0dHJzCmdpdmVuIG9ubHkgYW4g b2xkIFRJRCBhbmQgYSBuZXcgSGVhcFR1cGxlLgoKVXBkYXRlcyBzdGVtbWluZyBmcm9tIGxv Z2ljYWwgcmVwbGljYXRpb24gYWxzbyB1c2UgdGhlIG5ldwpFeGVjVXBkYXRlTW9kSWR4QXR0 cnMoKSBpbiBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoKS4KClRoaXMgcGF0Y2ggYWxzbyBp bnRyb2R1Y2VzIGEgZmV3IGhlbHBlciBmdW5jdGlvbnM6IEhlYXBVcGRhdGVIb3RBbGxvd2Fi bGUoKSwKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCkuICBUaGVzZSBhcmUgdXNlZCBp biBib3RoIGhlYXBfdXBkYXRlKCkgYW5kCnNpbXBsZV9oZWFwX3VwZGF0ZSgpLgoKVGhlIGhl YXBfdXBkYXRlKCkgZnVuY3Rpb24gaXMgY2FsbGVkIG5vdyB3aXRoIGxvY2ttb2RlIHByZS1k ZXRlcm1pbmVkCmFuZCBhIGJvb2xlYW5pbmcgaW5kaWNhdGluZyBpZiB0aGUgdXBkYXRlIGFs bG93cyBIT1QgdXBkYXRlcyBvciBub3QuCklmIGR1cmluZyBoZWFwX3VwZGF0ZSgpIHRoZSBu ZXcgdHVwbGUgd2lsbCBmaXQgb24gdGhlIHNhbWUgcGFnZSBhbmQgdGhhdApib29sZWFuIGlz IHRydWUsIHRoZSB1cGRhdGUgaXMgSE9ULiAgTm9uZSBvZiB0aGUgbG9naWMgcmVsYXRlZCB0 byB3aGVuCkhPVCBpcyBhbGxvd2VkIGhhcyBjaGFuZ2VkLgoKVHJpZ2dlcnMgYXJlIGZyZWUg dG8gdXNlIGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIHVwZGF0ZSBhdHRyaWJ1dGVzIG5vdApm b3VuZCBpbiB0aGUgVVBEQVRFIHN0YXRlbWVudCBvciB0cmlnZ2VycyB0aGF0IGZpcmUgZHVl IHRvIGFuIFVQREFURS4KV2hlbiB0aGF0IGhhcHBlbnMgdGhlIGV4ZWN1dG9yIGhhcyBubyBr bm93bGVkZ2Ugb2YgdGhvc2UgY2hhbmdlcy4gIFRoaXMKZm9yY2VkIEhlYXBEZXRlcm1pbmVD b2x1bW5zSW5mbygpIHRvIHNjYW4gYWxsIGluZGV4ZWQgYXR0cmlidXRlcyBvbiBhCnJlbGF0 aW9uIHJhdGhlciB0aGFuIG9ubHkgdGhlIGludGVyc2VjdGlvbiBvZiBpbmRleGVkIGFuZCB0 aG9zZQppZGVudGlmaWVkIGJ5IEV4ZWNHZXRBbGxVcGRhdGVkQ29scygpLiAgVGhpcyBvY2N1 cnMgaW4gYXQgbGVhc3Qgb25lIHRlc3QKdGhhdCB1c2VzIHRoZSB0c3ZlY3Rvcl91cGRhdGVf dHJpZ2dlcigpIGZ1bmN0aW9uICh0c2VhcmNoLnNxbCkuCkV4ZWNCUlVwZGF0ZVRyaWdnZXJz KCkgaGFzIGJlZW4gY2hhbmdlZCB0byBpZGVudGlmeSBjaGFuZ2VzIHRvIGluZGV4ZWQKY29s dW1ucyBub3QgZm91bmQgYnkgRXhlY0dldEFsbFVwZGF0ZUNvbHMoKSBhbmQgYWRkIHRob3Nl IGF0dHJpYnV0ZXMgdG8KcmlfZXh0cmFVcGRhdGVkQ29scy4KClRocmVlIHRlc3RzIHdlcmUg YWRqdXN0ZWQgdG8gYXZvaWQgaW5zdGFiaWxpdHkgZHVlIHRvIHR1cGxlIG9yZGVyaW5nCmR1 cmluZyBoZWFwIHBhZ2Ugc2NhbnMuICBUaGlzIGF2b2lkcyBub25kZXRlcm1pbmlzdGljIHJl c3VsdHMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAg ICAgIHwgNDgxICsrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgIDMyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGUvdGFibGVhbS5jICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAyMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjVHVwbGVzLmMgICAgICAgICAgICAgfCAgNzggKysrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAgOTMgKysrLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICst CiAuLi4vcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAx NiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0IHwg ICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgICAg fCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbCAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCAg ICAgIHwgICAyICstCiAxOSBmaWxlcyBjaGFuZ2VkLCA1OTEgaW5zZXJ0aW9ucygrKSwgMjMz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYTIzMTU2 M2YwZGYuLjE4OTYxZDcxNGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAt MzcsMTQgKzM3LDE5IEBACiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1 ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgor I2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0u aCIKICNpbmNsdWRlICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJp bGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2Vf ZC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImV4ZWN1dG9y L3R1cHRhYmxlLmgiCisjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0aWxzLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJz dG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNTIs NiArNTcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMv aW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRl ICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjgsMTEgKzc0LDggQEAgc3RhdGljIHZv aWQgY2hlY2tfbG9ja19pZl9pbnBsYWNlX3VwZGF0ZWFibGVfcmVsKFJlbGF0aW9uIHJlbGF0 aW9uLAogCQkJCQkJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIHZvaWQgY2hl Y2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVwbGUgb2xkdHVwKTsKICNlbmRpZgotc3RhdGlj IEJpdG1hcHNldCAqSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9u LAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqaW50ZXJlc3RpbmdfY29scywKLQkJCQkJCQkJ CQkgICBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMsCi0JCQkJCQkJCQkJICAgSGVhcFR1cGxl IG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkJCQkgICBib29sICpoYXNfZXh0 ZXJuYWwpOworc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1vZElkeEF0dHJzKFJlbGF0 aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCUhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBu ZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxl TW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wg KmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMzAyLDcgKzMzMDUsNyBAQCBzaW1wbGVfaGVhcF9k ZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQog ICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAgKiBTZWUgdGFibGVfdHVw bGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBwYXJhbWV0ZXJzLCBleGNl cHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVwbGUgcmF0aGVy IHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgaGVhcCB0 dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhlIGZhaWx1cmUgY2FzZXMs IHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxlJ3MgdF9jdGlkLAogICog dF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3QsIGlmIG5lY2Vzc2FyeSks IGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMzEyLDE3ICszMzE1LDEzIEBAIHNpbXBsZV9o ZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0 aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJCQlDb21tYW5kSWQg Y2lkLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCi0JCQlUTV9GYWlsdXJlRGF0 YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQlUVV9VcGRhdGVJbmRleGVz ICp1cGRhdGVfaW5kZXhlcykKKwkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2Nr VHVwbGVNb2RlIGxvY2ttb2RlLAorCQkJY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsIGNv bnN0IGJvb2wgaG90X2FsbG93ZWQpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUcmFuc2Fj dGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7Ci0JQml0bWFwc2V0ICAq aG90X2F0dHJzOwotCUJpdG1hcHNldCAgKnN1bV9hdHRyczsKLQlCaXRtYXBzZXQgICprZXlf YXR0cnM7Ci0JQml0bWFwc2V0ICAqaWRfYXR0cnM7Ci0JQml0bWFwc2V0ICAqaW50ZXJlc3Rp bmdfYXR0cnM7Ci0JQml0bWFwc2V0ICAqbW9kaWZpZWRfYXR0cnM7CisJQml0bWFwc2V0ICAq aWR4X2F0dHJzLAorCQkJICAgKnJpZF9hdHRyczsKIAlJdGVtSWQJCWxwOwogCUhlYXBUdXBs ZURhdGEgb2xkdHVwOwogCUhlYXBUdXBsZQloZWFwdHVwOwpAQCAtMzM0MSwxMyArMzM0MCwx MiBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJE YXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJCWhhdmVfdHVwbGVfbG9jayA9 IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNlX2hvdF91cGRhdGUgPSBmYWxz ZTsKLQlib29sCQlzdW1tYXJpemVkX3VwZGF0ZSA9IGZhbHNlOwogCWJvb2wJCWtleV9pbnRh Y3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCWJvb2wJCWFsbF92 aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CiAJYm9vbAkJY2hlY2tlZF9sb2NrZXJzOwog CWJvb2wJCWxvY2tlcl9yZW1haW5zOwotCWJvb2wJCWlkX2hhc19leHRlcm5hbCA9IGZhbHNl OworCWJvb2wJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBmYWxzZTsKIAlUcmFuc2FjdGlvbklk IHhtYXhfbmV3X3R1cGxlLAogCQkJCXhtYXhfb2xkX3R1cGxlOwogCXVpbnQxNgkJaW5mb21h c2tfb2xkX3R1cGxlLApAQCAtMzM3OCwzMyArMzM3NiwxNCBAQCBoZWFwX3VwZGF0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUg bmV3dHVwLAogI2VuZGlmCiAKIAkvKgotCSAqIEZldGNoIHRoZSBsaXN0IG9mIGF0dHJpYnV0 ZXMgdG8gYmUgY2hlY2tlZCBmb3IgdmFyaW91cyBvcGVyYXRpb25zLgotCSAqCi0JICogRm9y IEhPVCBjb25zaWRlcmF0aW9ucywgdGhpcyBpcyB3YXN0ZWQgZWZmb3J0IGlmIHdlIGZhaWwg dG8gdXBkYXRlIG9yCi0JICogaGF2ZSB0byBwdXQgdGhlIG5ldyB0dXBsZSBvbiBhIGRpZmZl cmVudCBwYWdlLiAgQnV0IHdlIG11c3QgY29tcHV0ZSB0aGUKLQkgKiBsaXN0IGJlZm9yZSBv YnRhaW5pbmcgYnVmZmVyIGxvY2sgLS0tIGluIHRoZSB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUK LQkgKiBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZSByZWxldmFudCBzeXN0ZW0gY2F0 YWxvZ3MsIHdlIGNvdWxkCi0JICogZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRoZSBs aXN0IGxhdGVyLiAgSW4gYW55IGNhc2UsIHRoZSByZWxjYWNoZQotCSAqIGNhY2hlcyB0aGUg ZGF0YSBzbyB0aGlzIGlzIHVzdWFsbHkgcHJldHR5IGNoZWFwLgotCSAqCi0JICogV2UgYWxz byBuZWVkIGNvbHVtbnMgdXNlZCBieSB0aGUgcmVwbGljYSBpZGVudGl0eSBhbmQgY29sdW1u cyB0aGF0IGFyZQotCSAqIGNvbnNpZGVyZWQgdGhlICJrZXkiIG9mIHJvd3MgaW4gdGhlIHRh YmxlLgorCSAqIEZldGNoIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYWNyb3NzIGFsbCBpbmRleGVz IG9uIHRoaXMgcmVsYXRpb24gYXMgd2VsbAorCSAqIGFzIHRoZSByZXBsaWNhIGlkZW50aXR5 IGFuZCBjb2x1bW5zLgogCSAqCi0JICogTm90ZSB0aGF0IHdlIGdldCBjb3BpZXMgb2YgZWFj aCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5IGFib3V0Ci0JICogcmVsY2FjaGUgZmx1 c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoLgotCSAqLwotCWhvdF9hdHRycyA9IFJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FU VFJfQklUTUFQX0hPVF9CTE9DS0lORyk7Ci0Jc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBf U1VNTUFSSVpFRCk7Ci0Ja2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAo cmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0tFWSk7Ci0JaWRfYXR0cnMgPSBSZWxhdGlv bkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgIElOREVYX0FUVFJf QklUTUFQX0lERU5USVRZX0tFWSk7Ci0JaW50ZXJlc3RpbmdfYXR0cnMgPSBOVUxMOwotCWlu dGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBo b3RfYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVy ZXN0aW5nX2F0dHJzLCBzdW1fYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2Fk ZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBrZXlfYXR0cnMpOwotCWludGVyZXN0aW5n X2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBpZF9hdHRycyk7 CisJICogTk9URTogcmVsY2FjaGUgcmV0dXJucyBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNv IHdlIG5lZWQgbm90IHdvcnJ5CisJICogYWJvdXQgcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5n IG1pZHdheSB0aHJvdWdoLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlyaWRf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRU Ul9CSVRNQVBfSURFTlRJVFlfS0VZKTsKIAogCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9j a051bWJlcihvdGlkKTsKIAlJTkpFQ1RJT05fUE9JTlQoImhlYXBfdXBkYXRlLWJlZm9yZS1w aW4iLCBOVUxMKTsKQEAgLTM0NTgsMjAgKzM0MzcsMTcgQEAgaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5l d3R1cCwKIAkJdG1mZC0+Y3RpZCA9ICpvdGlkOwogCQl0bWZkLT54bWF4ID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7CiAJCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwotCQkqdXBk YXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCi0JCWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JCWJt c19mcmVlKHN1bV9hdHRycyk7Ci0JCWJtc19mcmVlKGtleV9hdHRycyk7Ci0JCWJtc19mcmVl KGlkX2F0dHJzKTsKLQkJLyogbW9kaWZpZWRfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAq LwotCQlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7CisJCWJtc19mcmVlKHJpZF9hdHRy cyk7CisJCWJtc19mcmVlKGlkeF9hdHRycyk7CisJCS8qIG1peF9hdHRycyBpcyBvd25lZCBi eSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCisKIAkJcmV0dXJuIFRNX0RlbGV0ZWQ7 CiAJfQogCiAJLyoKLQkgKiBGaWxsIGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCBmb3IgSGVh cERldGVybWluZUNvbHVtbnNJbmZvIHRvIHdvcmsKLQkgKiBwcm9wZXJseS4KKwkgKiBGaWxs IGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCB0byBkZXRlcm1pbmUgcmVwbGljYSBpZGVudGl0 eSBhdHRyaWJ1dGUKKwkgKiByZXF1aXJlbWVudHMuCiAJICovCiAJb2xkdHVwLnRfdGFibGVP aWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAlvbGR0dXAudF9kYXRhID0gKEhl YXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwpAQCAtMzQ4MiwxNiArMzQ1 OCw1OSBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCW5ld3R1cC0+dF90YWJsZU9pZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgY29s dW1ucyBtb2RpZmllZCBieSB0aGUgdXBkYXRlLiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQot CSAqIHdoZXRoZXIgYW55IG9mIHRoZSB1bm1vZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5 IGF0dHJpYnV0ZXMgaW4gdGhlCi0JICogb2xkIHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVk IG9yIG5vdC4gIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJp YnV0ZXMgdGhlIGZsYXR0ZW5lZCB2YWx1ZSB3b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQg b2YgdGhlCi0JICogbmV3IHR1cGxlIHNvIHdlIG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9m IHRoZSBvbGRfa2V5X3R1cGxlLiAgU2VlCi0JICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4K KwkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5KCkgbmVlZHMgdG8ga25vdyBpZiBhIG1vZGlm aWVkIGluZGV4ZWQgYXR0cmJ1dGUKKwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpbmRlbnRp dHkgb3IgaWYgYW55IG9mIHRoZSByZXBsaWNhIGlkZW50aXR5CisJICogYXR0cmlidXRlcyBh cmUgcmVmZXJlbmNlZCBpbiBhbiBpbmRleCwgdW5tb2RpZmllZCwgYW5kIGFyZSBzdG9yZWQK KwkgKiBleHRlcm5hbGx5IGluIHRoZSBvbGQgdHVwbGUgYmVpbmcgcmVwbGFjZWQuICBJbiB0 aG9zZSBjYXNlcyBpdCBtYXkgYmUKKwkgKiBuZWNlc3NhcnkgdG8gV0FMIGxvZyB0aGVtIHRv IHNvIHRoZXkgYXJlIGF2YWlsYWJsZSB0byByZXBsaWNhcy4KIAkgKi8KLQltb2RpZmllZF9h dHRycyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhyZWxhdGlvbiwgaW50ZXJlc3Rpbmdf YXR0cnMsCi0JCQkJCQkJCQkJCSAgaWRfYXR0cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAg bmV3dHVwLCAmaWRfaGFzX2V4dGVybmFsKTsKKwlyZXBfaWRfa2V5X3JlcXVpcmVkID0gYm1z X292ZXJsYXAobWl4X2F0dHJzLCByaWRfYXR0cnMpOworCWlmICghcmVwX2lkX2tleV9yZXF1 aXJlZCkKKwl7CisJCUJpdG1hcHNldCAgKmF0dHJzOworCQlUdXBsZURlc2MJdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCQlpbnQJCQlhdHRpZHggPSAtMTsKKwor CQkvKgorCQkgKiBSZWR1Y2UgdGhlIHNldCB1bmRlciByZXZpZXcgdG8gb25seSB0aGUgdW5t b2RpZmllZCBpbmRleGVkIHJlcGxpY2EKKwkJICogaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMu ICBpZHhfYXR0cnMgaXMgY29waWVkIChieSBibXNfZGlmZmVyZW5jZSgpKQorCQkgKiBub3Qg bW9kaWZpZWQgaGVyZS4KKwkJICovCisJCWF0dHJzID0gYm1zX2RpZmZlcmVuY2UoaWR4X2F0 dHJzLCBtaXhfYXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgcmlk X2F0dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywg YXR0aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2Vk LCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlB dHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkv KgorCQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FU VFJfQklUTUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLwor CQkJQXNzZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9s ZHR1cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8g Y2hlY2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJ CQlpZiAoaXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0 cm51bSAtIDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNr IGlmIHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8K KwkJCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0 UG9pbnRlcih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVl OworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAog CS8qCiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNh biBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTM1MDQsOSArMzUyMyw4IEBAIGhlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxh dGUga2V5IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFy cml2ZSBhdCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAo bW9kaWZpZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBs ZU5vS2V5RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNs dXNpdmU7CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwog CQlrZXlfaW50YWN0ID0gdHJ1ZTsKIApAQCAtMzUyMyw3ICszNTQxLDcgQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxl RXhjbHVzaXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsK IAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0 ID0gZmFsc2U7CiAJfQpAQCAtMzUzNCw3ICszNTUyLDYgQEAgaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5l d3R1cCwKIAkgKiB3aXRoIHRoZSBuZXcgdHVwbGUncyBsb2NhdGlvbiwgc28gdGhlcmUncyBn cmVhdCByaXNrIG9mIGNvbmZ1c2lvbiBpZiB3ZQogCSAqIHVzZSBvdGlkIGFueW1vcmUuCiAJ ICovCi0KIGwyOgogCWNoZWNrZWRfbG9ja2VycyA9IGZhbHNlOwogCWxvY2tlcl9yZW1haW5z ID0gZmFsc2U7CkBAIC0zNjAyLDcgKzM2MTksNyBAQCBsMjoKIAkJCWJvb2wJCWN1cnJlbnRf aXNfbWVtYmVyID0gZmFsc2U7CiAKIAkJCWlmIChEb2VzTXVsdGlYYWN0SWRDb25mbGljdCgo TXVsdGlYYWN0SWQpIHh3YWl0LCBpbmZvbWFzaywKLQkJCQkJCQkJCQkqbG9ja21vZGUsICZj dXJyZW50X2lzX21lbWJlcikpCisJCQkJCQkJCQkJbG9ja21vZGUsICZjdXJyZW50X2lzX21l bWJlcikpCiAJCQl7CiAJCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9D Syk7CiAKQEAgLTM2MTEsNyArMzYyOCw3IEBAIGwyOgogCQkJCSAqIHJlcXVlc3RpbmcgYSBs b2NrIGFuZCBhbHJlYWR5IGhhdmUgb25lOyBhdm9pZHMgZGVhZGxvY2spLgogCQkJCSAqLwog CQkJCWlmICghY3VycmVudF9pc19tZW1iZXIpCi0JCQkJCWhlYXBfYWNxdWlyZV90dXBsb2Nr KHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUsCisJCQkJCWhlYXBfYWNx dWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJ CQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7CiAKIAkJCQkvKiB3 YWl0IGZvciBtdWx0aXhhY3QgKi8KQEAgLTM2OTYsNyArMzcxMyw3IEBAIGwyOgogCQkJICog bG9jay4KIAkJCSAqLwogCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9D Syk7Ci0JCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgKmxvY2ttb2RlLAorCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xk dHVwLnRfc2VsZiksIGxvY2ttb2RlLAogCQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVf dHVwbGVfbG9jayk7CiAJCQlYYWN0TG9ja1RhYmxlV2FpdCh4d2FpdCwgcmVsYXRpb24sICZv bGR0dXAudF9zZWxmLAogCQkJCQkJCSAgWExUV19VcGRhdGUpOwpAQCAtMzc1NiwxNyArMzc3 MywxNCBAQCBsMjoKIAkJCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwogCQlVbmxv Y2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCWlmIChoYXZlX3R1cGxlX2xvY2spCi0JCQlV bmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9k ZSk7CisJCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiks IGxvY2ttb2RlKTsKIAkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAot CQlibXNfZnJlZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNf ZnJlZShrZXlfYXR0cnMpOwotCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1v ZGlmaWVkX2F0dHJzKTsKLQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCQlibXNf ZnJlZShyaWRfYXR0cnMpOworCQlibXNfZnJlZShpZHhfYXR0cnMpOworCQkvKiBtaXhfYXR0 cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLworCiAJCXJldHVy biByZXN1bHQ7CiAJfQogCkBAIC0zNzk2LDcgKzM4MTAsNyBAQCBsMjoKIAljb21wdXRlX25l d194bWF4X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0 YSksCiAJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLAogCQkJCQkJCSAgb2xk dHVwLnRfZGF0YS0+dF9pbmZvbWFzazIsCi0JCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgdHJ1 ZSwKKwkJCQkJCQkgIHhpZCwgbG9ja21vZGUsIHRydWUsCiAJCQkJCQkJICAmeG1heF9vbGRf dHVwbGUsICZpbmZvbWFza19vbGRfdHVwbGUsCiAJCQkJCQkJICAmaW5mb21hc2syX29sZF90 dXBsZSk7CiAKQEAgLTM5MTMsNyArMzkyNyw3IEBAIGwyOgogCQljb21wdXRlX25ld194bWF4 X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJ CQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkJICBvbGR0dXAu dF9kYXRhLT50X2luZm9tYXNrMiwKLQkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2Us CisJCQkJCQkJCSAgeGlkLCBsb2NrbW9kZSwgZmFsc2UsCiAJCQkJCQkJCSAgJnhtYXhfbG9j a19vbGRfdHVwbGUsICZpbmZvbWFza19sb2NrX29sZF90dXBsZSwKIAkJCQkJCQkJICAmaW5m b21hc2syX2xvY2tfb2xkX3R1cGxlKTsKIApAQCAtNDA3MywzNyArNDA4NywxNiBAQCBsMjoK IAogCS8qCiAJICogQXQgdGhpcyBwb2ludCBuZXdidWYgYW5kIGJ1ZmZlciBhcmUgYm90aCBw aW5uZWQgYW5kIGxvY2tlZCwgYW5kIG5ld2J1ZgotCSAqIGhhcyBlbm91Z2ggc3BhY2UgZm9y IHRoZSBuZXcgdHVwbGUuICBJZiB0aGV5IGFyZSB0aGUgc2FtZSBidWZmZXIsIG9ubHkKLQkg KiBvbmUgcGluIGlzIGhlbGQuCisJICogaGFzIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5ldyB0 dXBsZSBzbyB3ZSBjYW4gdXNlIHRoZSBIT1QgdXBkYXRlIHBhdGggaWYKKwkgKiB0aGUgY2Fs bGVyIGRldGVybWluZWQgdGhhdCBpdCBpcyBhbGxvd2FibGUuCisJICoKKwkgKiBOT1RFOiBJ ZiBuZXdidWYgPT0gYnVmZmVyIHRoZW4gb25seSBvbmUgcGluIGlzIGhlbGQuCiAJICovCi0K LQlpZiAobmV3YnVmID09IGJ1ZmZlcikKLQl7Ci0JCS8qCi0JCSAqIFNpbmNlIHRoZSBuZXcg dHVwbGUgaXMgZ29pbmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0J CSAqIHRvIGRvIGEgSE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29s dW1ucyBoYXZlIGJlZW4KLQkJICogY2hhbmdlZC4KLQkJICovCi0JCWlmICghYm1zX292ZXJs YXAobW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRycykpCi0JCXsKLQkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKLQotCQkJLyoKLQkJCSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhhdCBh cmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5kZXhlcwotCQkJICogd2VyZSB1cGRhdGVkLCB3 ZSBjYW4gYXBwbHkgSE9ULCBidXQgd2UgZG8gc3RpbGwgbmVlZCB0byBjaGVjawotCQkJICog aWYgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHN1bW1hcml6aW5nIGluZGV4ZXMsIGFuZCB1cGRh dGUgdGhvc2UKLQkJCSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBv ciB3ZSBtYXkgZmFpbCB0byBkZXRlY3QKLQkJCSAqIGUuZy4gdmFsdWUgYm91bmQgY2hhbmdl cyBpbiBCUklOIG1pbm1heCBpbmRleGVzLgotCQkJICovCi0JCQlpZiAoYm1zX292ZXJsYXAo bW9kaWZpZWRfYXR0cnMsIHN1bV9hdHRycykpCi0JCQkJc3VtbWFyaXplZF91cGRhdGUgPSB0 cnVlOwotCQl9Ci0JfQorCWlmICgobmV3YnVmID09IGJ1ZmZlcikgJiYgaG90X2FsbG93ZWQp CisJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKIAllbHNlCi0JewogCQkvKiBTZXQgYSBoaW50 IHRoYXQgdGhlIG9sZCBwYWdlIGNvdWxkIHVzZSBwcnVuZS9kZWZyYWcgKi8KIAkJUGFnZVNl dEZ1bGwocGFnZSk7Ci0JfQogCiAJLyoKIAkgKiBDb21wdXRlIHJlcGxpY2EgaWRlbnRpdHkg dHVwbGUgYmVmb3JlIGVudGVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uIHNvCkBAIC00MTEz LDggKzQxMDYsNyBAQCBsMjoKIAkgKiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMg ZXh0ZXJuYWwgZGF0YS4KIAkgKi8KIAlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJ ZGVudGl0eShyZWxhdGlvbiwgJm9sZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcCht b2RpZmllZF9hdHRycywgaWRfYXR0cnMpIHx8Ci0JCQkJCQkJCQkJICAgaWRfaGFzX2V4dGVy bmFsLAorCQkJCQkJCQkJCSAgIHJlcF9pZF9rZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJICAg Jm9sZF9rZXlfY29waWVkKTsKIAogCS8qIE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0 aWxsIGNoYW5nZXMgYXJlIGxvZ2dlZCAqLwpAQCAtNDI0Myw3ICs0MjM1LDcgQEAgbDI6CiAJ ICogUmVsZWFzZSB0aGUgbG1nciB0dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQuCiAJICovCiAJ aWYgKGhhdmVfdHVwbGVfbG9jaykKLQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAm KG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUpOworCQlVbmxvY2tUdXBsZVR1cGxvY2socmVs YXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2RlKTsKIAogCXBnc3RhdF9jb3VudF9o ZWFwX3VwZGF0ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIp OwogCkBAIC00MjU3LDMxICs0MjQ5LDEyIEBAIGwyOgogCQloZWFwX2ZyZWV0dXBsZShoZWFw dHVwKTsKIAl9CiAKLQkvKgotCSAqIElmIGl0IGlzIGEgSE9UIHVwZGF0ZSwgdGhlIHVwZGF0 ZSBtYXkgc3RpbGwgbmVlZCB0byB1cGRhdGUgc3VtbWFyaXplZAotCSAqIGluZGV4ZXMsIGxl c3Qgd2UgZmFpbCB0byB1cGRhdGUgdGhvc2Ugc3VtbWFyaWVzIGFuZCBnZXQgaW5jb3JyZWN0 Ci0JICogcmVzdWx0cyAoZm9yIGV4YW1wbGUsIG1pbm1heCBib3VuZHMgb2YgdGhlIGJsb2Nr IG1heSBjaGFuZ2Ugd2l0aCB0aGlzCi0JICogdXBkYXRlKS4KLQkgKi8KLQlpZiAodXNlX2hv dF91cGRhdGUpCi0JewotCQlpZiAoc3VtbWFyaXplZF91cGRhdGUpCi0JCQkqdXBkYXRlX2lu ZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRleGVzID0g VFVfTm9uZTsKLQl9Ci0JZWxzZQotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7Ci0KIAlp ZiAob2xkX2tleV90dXBsZSAhPSBOVUxMICYmIG9sZF9rZXlfY29waWVkKQogCQloZWFwX2Zy ZWV0dXBsZShvbGRfa2V5X3R1cGxlKTsKIAotCWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JYm1z X2ZyZWUoc3VtX2F0dHJzKTsKLQlibXNfZnJlZShrZXlfYXR0cnMpOwotCWJtc19mcmVlKGlk X2F0dHJzKTsKLQlibXNfZnJlZShtb2RpZmllZF9hdHRycyk7Ci0JYm1zX2ZyZWUoaW50ZXJl c3RpbmdfYXR0cnMpOworCWJtc19mcmVlKHJpZF9hdHRycyk7CisJYm1zX2ZyZWUoaWR4X2F0 dHJzKTsKKwkvKiBtaXhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJl ZSBpdCAqLwogCiAJcmV0dXJuIFRNX09rOwogfQpAQCAtNDQ1NCwyOCArNDQyNywxMTMgQEAg aGVhcF9hdHRyX2VxdWFscyhUdXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0sIERhdHVt IHZhbHVlMSwgRGF0dW0gdmFsdWUyLAogfQogCiAvKgotICogQ2hlY2sgd2hpY2ggY29sdW1u cyBhcmUgYmVpbmcgdXBkYXRlZC4KLSAqCi0gKiBHaXZlbiBhbiB1cGRhdGVkIHR1cGxlLCBk ZXRlcm1pbmUgKGFuZCByZXR1cm4gaW50byB0aGUgb3V0cHV0IGJpdG1hcHNldCksCi0gKiBm cm9tIHRob3NlIGxpc3RlZCBhcyBpbnRlcmVzdGluZywgdGhlIHNldCBvZiBjb2x1bW5zIHRo YXQgY2hhbmdlZC4KLSAqCi0gKiBoYXNfZXh0ZXJuYWwgaW5kaWNhdGVzIGlmIGFueSBvZiB0 aGUgdW5tb2RpZmllZCBhdHRyaWJ1dGVzIChmcm9tIHRob3NlCi0gKiBsaXN0ZWQgYXMgaW50 ZXJlc3RpbmcpIG9mIHRoZSBvbGQgdHVwbGUgaXMgYSBtZW1iZXIgb2YgZXh0ZXJuYWxfY29s cyBhbmQgaXMKLSAqIHN0b3JlZCBleHRlcm5hbGx5LgorICogSE9UIHVwZGF0ZXMgYXJlIHBv c3NpYmxlIHdoZW4gZWl0aGVyOiBhKSB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXhlZAor ICogYXR0cmlidXRlcywgb3IgYikgdGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJlIGFsbCBv biBzdW1tYXJpemluZyBpbmRleGVzLgorICogTGF0ZXIsIGluIGhlYXBfdXBkYXRlKCksIHdl IGNhbiBjaG9vc2UgdG8gcGVyZm9ybSBhIEhPVCB1cGRhdGUgaWYgdGhlcmUgaXMKKyAqIHNw YWNlIG9uIHRoZSBwYWdlIGZvciB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgZm9sbG93aW5nIGNv ZGUgaGFzIGRldGVybWluZWQKKyAqIHRoYXQgSE9UIGlzIGFsbG93ZWQuCisgKi8KK2Jvb2wK K0hlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1h cHNldCAqbWl4X2F0dHJzLAorCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpCit7CisJ Ym9vbAkJaG90X2FsbG93ZWQ7CisKKwkvKgorCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5k IHN0YXJ0IG9mZiBieSBhc3N1bWluZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCisJICog bmVlZCB1cGRhdGluZyBhbmQgSE9UIGlzIGFsbG93YWJsZS4KKwkgKi8KKwlob3RfYWxsb3dl ZCA9IHRydWU7CisJKnN1bW1hcml6ZWRfb25seSA9IGZhbHNlOworCisJLyoKKwkgKiBDaGVj ayBmb3IgY2FzZSAoYSk7IHdoZW4gdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4IGF0dHJp YnV0ZXMgSE9UIGlzCisJICogYWxsb3dlZC4KKwkgKi8KKwlpZiAoYm1zX2lzX2VtcHR5KG1p eF9hdHRycykpCisJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwllbHNlCisJeworCQlCaXRtYXBz ZXQgICpzdW1fYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwK KwkJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7CisKKwkJ LyoKKwkJICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQsIGJ1 dCBpcyB0aGlzIGNhc2UgKGIpCisJCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5kZXgg YXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGJ5CisJCSAqIHN1bW1hcml6aW5nIGluZGV4ZXM/ ICBJZiB0aGF0J3MgdGhlIGNhc2Ugd2UgbmVlZCB0byB1cGRhdGUgdGhvc2UKKwkJICogaW5k ZXhlcywgYnV0IHRoaXMgY2FuIGJlIGEgSE9UIHVwZGF0ZS4KKwkJICovCisJCWlmIChibXNf aXNfc3Vic2V0KG1peF9hdHRycywgc3VtX2F0dHJzKSkKKwkJeworCQkJaG90X2FsbG93ZWQg PSB0cnVlOworCQkJKnN1bW1hcml6ZWRfb25seSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7 CisJCQkvKgorCQkJICogTm93IHdlIGtub3cgdGhhdCBvbmUgb3IgbW9yZSBpbmRleGVkIGF0 dHJpYnV0ZSB3ZXJlIHVwZGF0ZWQgYW5kCisJCQkgKiB0aGF0IHRoZXJlIHdhcyBhdCBsZWFz dCBvbmUgb2YgdGhvc2UgYXR0cmlidXRlcyB3ZXJlIHJlZmVyZW5jZWQKKwkJCSAqIGJ5IGEg bm9uLXN1bW1hcml6aW5nIGluZGV4LiBIT1QgaXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJ CWhvdF9hbGxvd2VkID0gZmFsc2U7CisJCX0KKworCQlibXNfZnJlZShzdW1fYXR0cnMpOwor CX0KKworCXJldHVybiBob3RfYWxsb3dlZDsKK30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1 cGRhdGluZyBhbnkgImtleSIgYXR0cmlidXRlcywgd2UgY2FuIGdyYWIgYSB3ZWFrZXIgbG9j ayB0eXBlLgorICogVGhpcyBhbGxvd3MgZm9yIG1vcmUgY29uY3VycmVuY3kgd2hlbiB3ZSBh cmUgcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoCisgKiBmb3JlaWduIGtleSBjaGVja3Mu CisgKi8KK0xvY2tUdXBsZU1vZGUKK0hlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMpCit7CisJTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsKKworCUJpdG1hcHNldCAg KmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJ CQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CisKKwlpZiAoIWJtc19vdmVy bGFwKG1peF9hdHRycywga2V5X2F0dHJzKSkKKwkJbG9ja21vZGUgPSBMb2NrVHVwbGVOb0tl eUV4Y2x1c2l2ZTsKKworCWJtc19mcmVlKGtleV9hdHRycyk7CisKKwlyZXR1cm4gbG9ja21v ZGU7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUg c2V0IG9mIG1vZGlmaWVkIChjaGFuZ2VkKSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdl ZW4gb2xkdHVwIGFuZCBuZXd0dXAuCiAgKi8KIHN0YXRpYyBCaXRtYXBzZXQgKgotSGVhcERl dGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJIEJpdG1hcHNl dCAqaW50ZXJlc3RpbmdfY29scywKLQkJCQkJCSBCaXRtYXBzZXQgKmV4dGVybmFsX2NvbHMs Ci0JCQkJCQkgSGVhcFR1cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCSBi b29sICpoYXNfZXh0ZXJuYWwpCitIZWFwVXBkYXRlTW9kSWR4QXR0cnMoUmVsYXRpb24gcmVs YXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXApCiB7CiAJaW50CQkJ YXR0aWR4OwotCUJpdG1hcHNldCAgKm1vZGlmaWVkID0gTlVMTDsKKwlCaXRtYXBzZXQgICph dHRycywKKwkJCSAgICptaXhfYXR0cnMgPSBOVUxMOwogCVR1cGxlRGVzYwl0dXBkZXNjID0g UmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CiAKKwkvKiBHZXQgdGhlIHNldCBvZiBhbGwg YXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4ZXMgZm9yIHRoaXMgcmVsYXRpb24gKi8KKwlh dHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRS X0JJVE1BUF9JTkRFWEVEKTsKKworCS8qIE5vIGluZGV4ZWQgYXR0cmlidXRlcywgd2UncmUg ZG9uZSAqLworCWlmIChibXNfaXNfZW1wdHkoYXR0cnMpKQorCQlyZXR1cm4gTlVMTDsKKwor CS8qCisJICogVGhpcyBoZWFwIHVwZGF0ZSBmdW5jdGlvbiBpcyB1c2VkIG91dHNpZGUgdGhl IGV4ZWN1dG9yIGFuZCBzbyB1bmxpa2UKKwkgKiBoZWFwYW1fdHVwbGVfdXBkYXRlKCkgd2hl cmUgdGhlcmUgaXMgUmVzdWx0UmVsSW5mbyBhbmQgRVN0YXRlIHRvCisJICogcHJvdmlkZSB0 aGUgY29uY2lzZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBtb2Rp ZmllZAorCSAqICh2aWEgRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkpIHdlIHNpbXBseSBjaGVj ayBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvCisJICogZmluZCB0aGUgc3Vic2V0IHRoYXQg Y2hhbmdlZCB2YWx1ZS4gIFRoYXQncyB0aGUgIm1vZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRy aWJ1dGVzIiBvciAibWl4X2F0dHJzIi4KKwkgKi8KIAlhdHRpZHggPSAtMTsKLQl3aGlsZSAo KGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihpbnRlcmVzdGluZ19jb2xzLCBhdHRpZHgpKSA+ PSAwKQorCXdoaWxlICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgp KSA+PSAwKQogCXsKIAkJLyogYXR0aWR4IGlzIHplcm8tYmFzZWQsIGF0dHJudW0gaXMgdGhl IG5vcm1hbCBhdHRyaWJ1dGUgbnVtYmVyICovCiAJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0 dGlkeCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CkBAIC00NDkxLDcg KzQ1NDksNyBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24s CiAJCSAqLwogCQlpZiAoYXR0cm51bSA9PSAwKQogCQl7Ci0JCQltb2RpZmllZCA9IGJtc19h ZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCQkJbWl4X2F0dHJzID0gYm1zX2FkZF9t ZW1iZXIobWl4X2F0dHJzLCBhdHRpZHgpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNDUw NCw3ICs0NTYyLDcgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0 aW9uLAogCQl7CiAJCQlpZiAoYXR0cm51bSAhPSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikK IAkJCXsKLQkJCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgp OworCQkJCW1peF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1peF9hdHRycywgYXR0aWR4KTsK IAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAtNDUyMCwyOSArNDU3OCwxMiBAQCBIZWFw RGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAKIAkJaWYgKCFoZWFw X2F0dHJfZXF1YWxzKHR1cGRlc2MsIGF0dHJudW0sIHZhbHVlMSwKIAkJCQkJCQkgIHZhbHVl MiwgaXNudWxsMSwgaXNudWxsMikpCi0JCXsKLQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWQsIGF0dGlkeCk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAq IE5vIG5lZWQgdG8gY2hlY2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRl cm5hbGx5LiBOb3RlCi0JCSAqIHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMgY2FuJ3QgYmUgc3Rv cmVkIGV4dGVybmFsbHkuCi0JCSAqLwotCQlpZiAoYXR0cm51bSA8IDAgfHwgaXNudWxsMSB8 fAotCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpLT5hdHRs ZW4gIT0gLTEpCi0JCQljb250aW51ZTsKLQotCQkvKgotCQkgKiBDaGVjayBpZiB0aGUgb2xk IHR1cGxlJ3MgYXR0cmlidXRlIGlzIHN0b3JlZCBleHRlcm5hbGx5IGFuZCBpcyBhCi0JCSAq IG1lbWJlciBvZiBleHRlcm5hbF9jb2xzLgotCQkgKi8KLQkJaWYgKFZBUkFUVF9JU19FWFRF Uk5BTCgodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUxKSkgJiYKLQkJCWJtc19p c19tZW1iZXIoYXR0aWR4LCBleHRlcm5hbF9jb2xzKSkKLQkJCSpoYXNfZXh0ZXJuYWwgPSB0 cnVlOworCQkJbWl4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXIobWl4X2F0dHJzLCBhdHRpZHgp OwogCX0KIAotCXJldHVybiBtb2RpZmllZDsKKwlibXNfZnJlZShhdHRycyk7CisKKwlyZXR1 cm4gbWl4X2F0dHJzOwogfQogCiAvKgpAQCAtNDU1NCwxNyArNDU5NSwxMDggQEAgSGVhcERl dGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogICogdmlhIGVyZXBvcnQo KS4KICAqLwogdm9pZAotc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBj b25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAsCitzaW1wbGVfaGVh cF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9p bmRleGVzKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsK IAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCUJ1 ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNsb3Q7CisJSGVhcFR1cGxlCW9sZHR1cDsKKwli b29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKKwlCaXRtYXBzZXQgICppZHhfYXR0cnMsCisJCQkg ICAqbWl4X2F0dHJzOworCWJvb2wJCWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25s eTsKKwlCdWZmZXIJCWJ1ZmZlcjsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9u LCBvdGlkLCB0dXAsCi0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxp ZFNuYXBzaG90LAotCQkJCQkJIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJ CSAmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJQXNzZXJ0KEl0ZW1Qb2lu dGVySXNWYWxpZChvdGlkKSk7CisKKwkvKgorCSAqIEZldGNoIHRoaXMgYml0bWFwIG9mIGlu dGVyZXN0aW5nIGF0dHJpYnV0ZXMgZnJvbSByZWxjYWNoZSBiZWZvcmUKKwkgKiBvYnRhaW5p bmcgYSBidWZmZXIgbG9jayBiZWNhdXNlIGlmIHdlIGFyZSBkb2luZyBhbiB1cGRhdGUgb24g b25lIG9mIHRoZQorCSAqIHJlbGV2YW50IHN5c3RlbSBjYXRhbG9ncyB3ZSBjb3VsZCBkZWFk bG9jayBpZiB3ZSB0cnkgdG8gZmV0Y2ggdGhlbQorCSAqIGxhdGVyIG9uLiBSZWxjYWNoZSB3 aWxsIHJldHVybiBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90CisJICog d29ycnkgYWJvdXQgcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoIHRo aXMgb3BlcmF0aW9uLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKworCUlOSkVD VElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIsIE5VTEwpOworCisJLyoKKwkg KiBUbyB1cGRhdGUgYSBoZWFwIHR1cGxlIHdlIG5lZWQgdG8gZmluZCB0aGUgc2V0IG9mIG1v ZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzICgibWl4X2F0dHJzIikgc28gYXMgdG8g c2VlIGlmIGEgSE9UIHVwZGF0ZSBpcyBhbGxvd2FibGUgb3IKKwkgKiBub3QuICBXaGVuIHVw ZGF0aW5nIGhlYXAgdHVwbGVzIHZpYSBleGVjdXRpb24gb2YgVVBEQVRFIHN0YXRlbWVudHMg dGhpcworCSAqIHNldCBpcyBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSB0 YWJsZSBBTSdzIHR1cGxlX3VwZGF0ZSgpCisJICogZnVuY3Rpb24gYnkgdGhlIGZ1bmN0aW9u IEV4ZWNVcGRhdGVNb2RJZHhBdHRycygpIHdoaWNoIGNvbXBhcmVzIHRoZQorCSAqIG9sZC9u ZXcgVHVwbGVUYWJsZVNsb3RzLiAgSG93ZXZlciwgaGVyZSB3ZSBoYXZlIHRoZSBvbGQgVElE IGFuZCB0aGUgbmV3CisJICogdHVwbGUsIG5vdCB0d28gVHVwbGVUYWJsZVNsb3RzLCBidXQg d2Ugc3RpbGwgbmVlZCB0byBjb25zdHJ1Y3QgYSBzaW1sYXIKKwkgKiBiaXRtYXAgc28gYXMg dG8gYmUgYWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzIGFyZSBhbGxvd2VkIG9yIG5vdC4g IFRvCisJICogZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZldGNoIHRoZSBvbGQgdHVwbGUg aXRzZWxmLiAgQmVjYXVzZQorCSAqIGhlYXBhbV9mZXRjaF9yb3dfdmVyc2lvbigpIGlzIHN0 YXRpYywgd2UgaGF2ZSB0byByZXBsaWNhdGUgdGhhdCBjb2RlCisJICogaGVyZS4gVGhpcyBp cyBhIGJpdCByZXBldGl0aXZlIGJlY2F1c2UgaGVhcF91cGRhdGUoKSB3aWxsIGFnYWluIGZp bmQKKwkgKiBhbmQgZm9ybSB0aGUgb2xkIEhlYXBUdXBsZSBmcm9tIHRoZSBvbGQgVElEIGFu ZCBpbiBtb3N0IGNhc2VzIHRoZQorCSAqIGNhbGxlcnMgKGlnbm9yaW5nIGV4dGVuc2lvbnMs IGFsd2F5cyBjYXRhbG9nIHR1cGxlIHVwZGF0ZXMpIGFscmVhZHkgaGFkCisJICogdGhlIHNl dCBvZiBjaGFuZ2VkIGF0dHJpYnV0ZXMgKGUuZy4gdGhlICJyZXBsYWNlcyIgYXJyYXkpLCBi dXQgZm9yIG5vdworCSAqIHRoaXMgbWlub3IgcmVwZXRpdGlvbiBvZiB3b3JrIGlzIG5lY2Vz c2FyeS4KKwkgKi8KKworCXNsb3QgPSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihyZWxhdGlvbiksICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCWJzbG90ID0gKEJ1 ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqKSBzbG90OworCisJLyoKKwkgKiBTZXQgdGhlIFRJ RCBpbiB0aGUgc2xvdCBhbmQgdGhlbiBmZXRjaCB0aGUgb2xkIHR1cGxlIHNvIHdlIGNhbiBl eGFtaW5lCisJICogaXQKKwkgKi8KKwlic2xvdC0+YmFzZS50dXBkYXRhLnRfc2VsZiA9ICpv dGlkOworCWlmICghaGVhcF9mZXRjaChyZWxhdGlvbiwgU25hcHNob3RBbnksICZic2xvdC0+ YmFzZS50dXBkYXRhLCAmYnVmZmVyLCBmYWxzZSkpCisJeworCQkvKgorCQkgKiBoZWFwX3Vw ZGF0ZSgpIGNoZWNrcyBmb3IgIUl0ZW1JZElzTm9ybWFsKGxwKSBhbmQgd2lsbCByZXR1cm4g ZmFsc2UKKwkJICogaW4gdGhvc2UgY2FzZXMuCisJCSAqLworCQlBc3NlcnQoUmVsYXRpb25T dXBwb3J0c1N5c0NhY2hlKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKSk7CisKKwkJKnVw ZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKKworCQkvKiBtaXhfYXR0cnMgbm90IHlldCBpbml0 aWFsaXplZCAqLworCQlibXNfZnJlZShpZHhfYXR0cnMpOworCQlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOworCisJCWVsb2coRVJST1IsICJ0dXBsZSBjb25jdXJyZW50 bHkgZGVsZXRlZCIpOworCisJCXJldHVybjsKKwl9CisKKwlBc3NlcnQoYnVmZmVyICE9IElu dmFsaWRCdWZmZXIpOworCisJLyogU3RvcmUgaW4gc2xvdCwgdHJhbnNmZXJyaW5nIGV4aXN0 aW5nIHBpbiAqLworCUV4ZWNTdG9yZVBpbm5lZEJ1ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJh c2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKKwlvbGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVh cFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJlZSk7CisKKwltaXhfYXR0cnMgPSBIZWFw VXBkYXRlTW9kSWR4QXR0cnMocmVsYXRpb24sIG9sZHR1cCwgdHVwbGUpOworCWxvY2ttb2Rl ID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtaXhfYXR0cnMpOwor CWhvdF9hbGxvd2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbWl4X2F0 dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsKKworCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0 aW9uLCBvdGlkLCB0dXBsZSwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCSBJ bnZhbGlkU25hcHNob3QsIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKKwkJCQkJCSAm dG1mZCwgbG9ja21vZGUsIG1peF9hdHRycywgaG90X2FsbG93ZWQpOworCisJaWYgKHNob3Vs ZEZyZWUpCisJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1 cGxlVGFibGVTbG90KHNsb3QpOworCWJtc19mcmVlKGlkeF9hdHRycyk7CisKKwkvKgorCSAq IERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0 dXBsZQorCSAqCisJICogSWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0 ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUg dGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCisJICog dXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8K KwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJ Y2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00NTc0LDYgKzQ3MDYsMTAgQEAgc2ltcGxlX2hl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSB0dXAKIAogCQljYXNlIFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNz ZnVsbHkgKi8KKwkJCWlmICghSGVhcFR1cGxlSXNIZWFwT25seSh0dXBsZSkpCisJCQkJKnVw ZGF0ZV9pbmRleGVzID0gVFVfQWxsOworCQkJZWxzZSBpZiAoc3VtbWFyaXplZF9vbmx5KQor CQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUTV9VcGRhdGVkOgpAQCAtNDU5MCw3ICs0NzI2LDYgQEAgc2ltcGxlX2hlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXAKIAl9CiB9CiAKLQogLyoKICAqIFJldHVybiB0aGUgTXVsdGlYYWN0U3Rh dHVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHR1cGxlIGxvY2sgbW9kZS4KICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggM2ZmMzZm NTliZjguLjQ2MDBhZjYxNzkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3Nj YW4uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90 c21hcGkuaCIKLSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUg ImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9pbmRleC5oIgpAQCAtNDQsNiArNDMsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogc3RhdGljIHZvaWQgcmVmb3JtX2FuZF9yZXdy aXRlX3R1cGxlKEhlYXBUdXBsZSB0dXBsZSwKQEAgLTMxNiwxOSArMzE2LDI2IEBAIGhlYXBh bV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIHRpZCwgQ29t bWFuZElkIGNpZCwKIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90 LAogCQkJCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jv c3NjaGVjaywKLQkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJ TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKQorCQkJCQlib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVN b2RlICpsb2NrbW9kZSwKKwkJCQkJY29uc3QgQml0bWFwc2V0ICptaXhfYXR0cnMsIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQogewogCWJvb2wJCXNob3VsZEZyZWUgPSB0 cnVlOwogCUhlYXBUdXBsZQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwg dHJ1ZSwgJnNob3VsZEZyZWUpOworCWJvb2wJCWhvdF9hbGxvd2VkOworCWJvb2wJCXN1bW1h cml6ZWRfb25seTsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCisJQXNzZXJ0KEl0ZW1Qb2ludGVy SXNWYWxpZChvdGlkKSk7CisKKwlob3RfYWxsb3dlZCA9IEhlYXBVcGRhdGVIb3RBbGxvd2Fi bGUocmVsYXRpb24sIG1peF9hdHRycywgJnN1bW1hcml6ZWRfb25seSk7CisJKmxvY2ttb2Rl ID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtaXhfYXR0cnMpOwor CiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNsb3QtPnR0c190 YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxlLT50X3RhYmxl T2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCiAJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVs YXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1m ZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCSB0bWZkLCAqbG9ja21vZGUs IG1peF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Qb2ludGVyQ29weSgmdHVwbGUtPnRf c2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTM0MSwxNiArMzQ4LDE3IEBAIGhl YXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQs IFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1 cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCiAJICogdXBkYXRlIG9u bHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KIAkgKi8KLQlpZiAocmVz dWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJaWYgKHJlc3Vs dCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSk7 Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJCWlmIChIZWFwVHVwbGVJc0hlYXBP bmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRl X2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQorCQllbHNlCisJCQkqdXBkYXRlX2lu ZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1 cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwpOwotCWVsc2UKLQkJ QXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8Ci0JCQkgICAo KnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAogCWlmIChzaG91bGRGcmVlKQogCQlw ZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCBkZmRh MWFmNDEyZS4uNDJhY2Q1YjE3YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YwpAQCAtMzU5LDYgKzM1OSw3IEBAIHZvaWQKIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUo UmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJICBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkgIGNvbnN0IEJp dG1hcHNldCAqbWl4X2F0dHJzLAogCQkJCQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVf aW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwpAQCAtMzY5LDcgKzM3MCw5IEBAIHNp bXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlk LAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAogCQkJCQkJCQlzbmFwc2hv dCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAq LyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJ CQkJJnRtZmQsICZsb2NrbW9kZSwKKwkJCQkJCQkJbWl4X2F0dHJzLAorCQkJCQkJCQl1cGRh dGVfaW5kZXhlcyk7CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKaW5kZXggOThkNDAyYzBhM2IuLjY0ZWZhNTVkZmUzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jCkBAIC0yOTc4LDYgKzI5NzgsNyBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhF U3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQkJCQkgYm9vbCBpc19tZXJn ZV91cGRhdGUpCiB7CiAJVHJpZ2dlckRlc2MgKnRyaWdkZXNjID0gcmVsaW5mby0+cmlfVHJp Z0Rlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGluZm8t PnJpX1JlbGF0aW9uRGVzYyk7CiAJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QgPSBFeGVjR2V0 VHJpZ2dlck9sZFNsb3QoZXN0YXRlLCByZWxpbmZvKTsKIAlIZWFwVHVwbGUJbmV3dHVwbGUg PSBOVUxMOwogCUhlYXBUdXBsZQl0cmlndHVwbGU7CkBAIC0yOTg1LDcgKzI5ODYsOSBAQCBF eGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRl LAogCWJvb2wJCXNob3VsZF9mcmVlX25ldyA9IGZhbHNlOwogCVRyaWdnZXJEYXRhIExvY1Ry aWdnZXJEYXRhID0gezB9OwogCWludAkJCWk7Ci0JQml0bWFwc2V0ICAqdXBkYXRlZENvbHM7 CisJQml0bWFwc2V0ICAqdXBkYXRlZENvbHMgPSBOVUxMOworCUJpdG1hcHNldCAgKnJlbWFp bmluZ0NvbHMgPSBOVUxMOworCUJpdG1hcHNldCAgKm1vZGlmaWVkQ29sczsKIAlMb2NrVHVw bGVNb2RlIGxvY2ttb2RlOwogCiAJLyogRGV0ZXJtaW5lIGxvY2sgbW9kZSB0byB1c2UgKi8K QEAgLTMxMjcsNiArMzEzMCwyMSBAQCBFeGVjQlJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVz dGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCWlmIChzaG91bGRfZnJlZV90cmlnKQogCQlo ZWFwX2ZyZWV0dXBsZSh0cmlndHVwbGUpOwogCisJLyoKKwkgKiBCZWZvcmUgVVBEQVRFIHRy aWdnZXJzIG1heSBoYXZlIHVwZGF0ZWQgYXR0cmlidXRlcyBub3Qga25vd24gdG8KKwkgKiBF eGVjR2V0QWxsVXBkYXRlZENvbHVtbnMoKSB1c2luZyBoZWFwX21vZGlmeV90dXBsZSgpIG9y CisJICogaGVhcF9tb2RpZml5X3R1cGxlX2J5X2NvbHMoKS4gIEZpbmQgYW5kIHJlY29yZCB0 aG9zZSBub3cuCisJICovCisJcmVtYWluaW5nQ29scyA9IGJtc19hZGRfcmFuZ2UoTlVMTCwg MSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkJICAgdHVw ZGVzYy0+bmF0dHMgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwly ZW1haW5pbmdDb2xzID0gYm1zX2RlbF9tZW1iZXJzKHJlbWFpbmluZ0NvbHMsIHVwZGF0ZWRD b2xzKTsKKwltb2RpZmllZENvbHMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyh0dXBkZXNjLCBy ZW1haW5pbmdDb2xzLCBvbGRzbG90LCBuZXdzbG90KTsKKwlyZWxpbmZvLT5yaV9leHRyYVVw ZGF0ZWRDb2xzID0KKwkJYm1zX2FkZF9tZW1iZXJzKHJlbGluZm8tPnJpX2V4dHJhVXBkYXRl ZENvbHMsIG1vZGlmaWVkQ29scyk7CisKKwlibXNfZnJlZShyZW1haW5pbmdDb2xzKTsKKwli bXNfZnJlZShtb2RpZmllZENvbHMpOworCiAJcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggMjQ5N2VlN2VkYzUuLmMyZTc3 NzQwZTc2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAt MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVsY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgpAQCAt OTA2LDYgKzkwNyw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKKwlCaXRtYXBzZXQgICptaXhfYXR0cnM7 CiAKIAkvKgogCSAqIFdlIHN1cHBvcnQgb25seSBub24tc3lzdGVtIHRhYmxlcywgd2l0aApA QCAtOTQ0LDggKzk0NiwxMSBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlv bikKIAkJCUV4ZWNQYXJ0aXRpb25DaGVjayhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUs IHRydWUpOwogCisJCW1peF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RJZHhBdHRycyhyZXN1bHRS ZWxJbmZvLAorCQkJCQkJCQkJCSAgZXN0YXRlLCBzZWFyY2hzbG90LCBzbG90KTsKKwogCQlz aW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3Nu YXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbWl4X2F0 dHJzLCAmdXBkYXRlX2luZGV4ZXMpOwogCiAJCWNvbmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJl bEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlczsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1R1cGxlcy5jCmluZGV4IGI3NjhlYWU5ZTUzLi4xMDY0ZWJlODQ1YiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYwpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIm5v ZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1 ZGUgInV0aWxzL2V4cGFuZGVkZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgpAQCAtMTkyOSw2ICsxOTMwLDgzIEBA IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAly ZXR1cm4gcmV0OwogfQogCisvKgorICogRXhlY0NvbXBhcmVTbG90QXR0cnMKKyAqCisgKiBD b21wYXJlIHRoZSBzdWJzZXQgb2YgYXR0cmlidXRlcyBpbiBhdHRycyBiZXd0d2VlbiBUdXBs ZVRhYmxlU2xvdHMgdG8gZGV0ZWN0CisgKiB3aGljaCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdl ZC4KKyAqCisgKiBSZXR1cm5zIGEgQml0bWFwc2V0IG9mIGF0dHJpYnV0ZSBpbmRpY2VzICh1 c2luZworICogRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50aW9u KSB0aGF0IGRpZmZlciBiZXR3ZWVuIHRoZSB0d28KKyAqIHNsb3RzLgorICovCitCaXRtYXBz ZXQgKgorRXhlY0NvbXBhcmVTbG90QXR0cnMoVHVwbGVEZXNjIHR1cGRlc2MsIGNvbnN0IEJp dG1hcHNldCAqYXR0cnMsCisJCQkJCSBUdXBsZVRhYmxlU2xvdCAqczEsIFR1cGxlVGFibGVT bG90ICpzMikKK3sKKwlpbnQJCQlhdHRpZHggPSAtMTsKKwlCaXRtYXBzZXQgICptb2RpZmll ZCA9IE5VTEw7CisKKwkvKiBYWFggd2hhdCBpZiBzbG90cyBkb24ndCBzaGFyZSB0aGUgc2Ft ZSB0dXBsZURlc2NyaXB0b3IuLi4gKi8KKwkvKiBBc3NlcnQoczEtPnR0c190dXBsZURlc2Ny aXB0b3IgPT0gczItPnR0c190dXBsZURlc2NyaXB0b3IpOyAqLworCisJd2hpbGUgKChhdHRp ZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkvKiBh dHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0ZSBu dW1iZXIgKi8KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJbnZh bGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFsdWUy OworCQlib29sCQludWxsMSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUgKmF0 dDsKKworCQkvKgorCQkgKiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBzYXkg Im5vdCBlcXVhbCIuICBJdCdzIG5vdCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGluZyB0 aGlzIGNhc2UsIHNpbmNlIGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAqIG5v LW9wIHVwZGF0ZSwgd2hpY2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5nIGZv ci4KKwkJICovCisJCWlmIChhdHRybnVtID09IDApCisJCXsKKwkJCW1vZGlmaWVkID0gYm1z X2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CS8qCisJCSAqIExpa2V3aXNlLCBhdXRvbWF0aWNhbGx5IHNheSAibm90IGVxdWFsIiBmb3Ig YW55IHN5c3RlbSBhdHRyaWJ1dGUKKwkJICogb3RoZXIgdGhhbiB0YWJsZU9JRDsgd2UgY2Fu bm90IGV4cGVjdCB0aGVzZSB0byBiZSBjb25zaXN0ZW50IGluIGEKKwkJICogSE9UIGNoYWlu LCBvciBldmVuIHRvIGJlIHNldCBjb3JyZWN0bHkgeWV0IGluIHRoZSBuZXcgdHVwbGUuCisJ CSAqLworCQlpZiAoYXR0cm51bSA8IDApCisJCXsKKwkJCWlmIChhdHRybnVtICE9IFRhYmxl T2lkQXR0cmlidXRlTnVtYmVyKQorCQkJeworCQkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWQsIGF0dGlkeCk7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQlh dHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cih0dXBkZXNjLCBhdHRybnVtIC0gMSk7CisJCXZh bHVlMSA9IHNsb3RfZ2V0YXR0cihzMSwgYXR0cm51bSwgJm51bGwxKTsKKwkJdmFsdWUyID0g c2xvdF9nZXRhdHRyKHMyLCBhdHRybnVtLCAmbnVsbDIpOworCisJCS8qIEEgY2hhbmdlIHRv L2Zyb20gTlVMTCwgc28gbm90IGVxdWFsICovCisJCWlmIChudWxsMSAhPSBudWxsMikKKwkJ eworCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJLyogQm90aCBOVUxMLCBubyBjaGFuZ2UvdW5tb2RpZmll ZCAqLworCQlpZiAobnVsbDIpCisJCQljb250aW51ZTsKKworCQlpZiAoIWRhdHVtX2ltYWdl X2VxKHZhbHVlMSwgdmFsdWUyLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQlt b2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCX0KKworCXJl dHVybiBtb2RpZmllZDsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCQkJY29udmVuaWVuY2Ug aW5pdGlhbGl6YXRpb24gcm91dGluZXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNzkzYzc2ZDRmODIuLjQ5MjdmYzg4ZTYx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTcsNiAr MTcsNyBAQAogICoJCUV4ZWNNb2RpZnlUYWJsZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBs ZSBmcm9tIHRoZSBub2RlCiAgKgkJRXhlY0VuZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRo ZSBNb2RpZnlUYWJsZSBub2RlCiAgKgkJRXhlY1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2Fu IHRoZSBNb2RpZnlUYWJsZSBub2RlCisgKgkJRXhlY1VwZGF0ZU1vZElkeEF0dHJzIC0gZmlu ZCBzZXQgb2YgdXBkYXRlZCBpbmRleGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlU aGUgTW9kaWZ5VGFibGUgbm9kZSByZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4s IHdoaWNoIGlzCkBAIC01NCw2ICs1NSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nl c3MvdHVwZGVzYy5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIK QEAgLTE4OCw2ICsxOTAsNjggQEAgc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjTWVyZ2VO b3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgICBS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCSAgIGJvb2wgY2FuU2V0 VGFnKTsKIAorLyoKKyAqIEV4ZWNVcGRhdGVNb2RJZHhBdHRycworICoKKyAqIEZpbmQgdGhl IHNldCBvZiBhdHRyaWJ1dGVzIHJlZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNl ZCBpbiB0aGlzCisgKiBVUERBVEUgdGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBp cyBkb25lIGJ5IHJldmlld2luZyBzbG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBE QVRFIHN0YXRtZW50IGFuZCBhcmUga25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFz dCBvbmUKKyAqIGluZGV4IGluIHNvbWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAi bW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIiBvcgorICogIm1peF9hdHRycyIuICBBbiBv dmVybGFwIG9mIGEgc2luZ2xlIGluZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcyAibWl4IiBz ZXQKKyAqIHNpZ25hbHMgdGhhdCB0aGUgYXR0cmlidXRlcyBpbiB0aGUgbmV3X3R0cyB1c2Vk IHRvIGZvcm0gdGhlIGluZGV4IGRhdHVtIGhhdmUKKyAqIGNoYW5nZWQuCisgKgorICogUmV0 dXJuIGEgQml0bWFwc2V0IHRoYXQgY29udGFpbnMgdGhlIHNldCBvZiBtb2RpZmllZCAoY2hh bmdlZCkgaW5kZXhlZAorICogYXR0cmlidXRlcyBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3dHVw LgorICoKKyAqIE5PVEU6IFRoZXJlIGlzIGEgc2ltbGFyIGZ1bmN0aW9uIGNhbGxlZCBIZWFw VXBkYXRlTW9kSUR4QXR0cnMoKSB0aGF0IG9wZXJhdGVzCisgKiBvbiB0aGUgb2xkIFRJRCBh bmQgbmV3IEhlYXBUdXBsZSByYXRoZXIgdGhhbiB0aGUgb2xkL25ldyBUdXBsZVRhYmxlU2xv dHMgYXMKKyAqIHRoaXMgZnVuY3Rpb24gZG9lcy4gIFRoZXNlIHR3byBmdW5jdGlvbnMgc2hv dWxkIG1pcnJvciBvbmUgYW5vdGhlciB1bnRpbAorICogc29tZWRheSB3aGVuIGNhdGFsb2cg dHVwbGUgdXBkYXRlcyB0cmFjayB0aGVpciBjaGFuZ2VzIGF2b2lkaW5nIHRoZSBuZWVkIHRv CisgKiByZS1kaXNjb3ZlciB0aGVtIGluIHNpbXBsZV9oZWFwX3VwZGF0ZSgpLgorICovCitC aXRtYXBzZXQgKgorRXhlY1VwZGF0ZU1vZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCisJCQkJCSAgRVN0YXRlICplc3RhdGUsCisJCQkJCSAgVHVwbGVUYWJsZVNs b3QgKm9sZF90dHMsCisJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpCit7CisJUmVs YXRpb24JcmVsYXRpb24gPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJVHVw bGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlCaXRtYXBz ZXQgICphdHRycywKKwkJCSAgICptaXhfYXR0cnMgPSBOVUxMOworCisJLyogSWYgbm8gaW5k ZXhlcywgd2UncmUgZG9uZSAqLworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2Vz ID09IDApCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBHZXQgdGhlIHNldCBvZiBhbGwg YXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQor CSAqIHRoZSByZWxjYWNoZSwgaXQgcmV0dXJucyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBz byB3ZSBjYW4gbW9kaWZ5IGl0LgorCSAqLworCWF0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOworCisJLyoK KwkgKiBGZXRjaCB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgZXhwbGljaXR5IFNFVCBpbiB0aGUg VVBEQVRFIHN0YXRlbWVudCBvcgorCSAqIHNldCBieSBhIGJlZm9yZSByb3cgdHJpZ2dlciAo ZXZlbiBpZiBub3QgbWVudGlvbmVkIGluIHRoZSBTUUwpIGZyb20gdGhlCisJICogZXhlY3V0 b3Igc3RhdGUgYW5kIHRoZW4gZmluZCB0aGUgaW50ZXJzZWN0aW9uIHdpdGggdGhlIGluZGV4 ZWQKKwkgKiBhdHRyaWJ1dGVzLiAgQXR0cmlidXRlcyB0aGF0IGFyZSBTRVQgbWlnaHQgbm90 IGNoYW5nZSB2YWx1ZSwgc28gd2UgaGF2ZQorCSAqIHRvIGV4YW1pbmUgdGhlbSBmb3IgY2hh bmdlcy4KKwkgKi8KKwlhdHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgRXhlY0dldEFs bFVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSkpOworCisJLyoKKwkgKiBXaGVu IHRoZXJlIGFyZSBpbmRleGVkIGF0dHJpYnV0ZXMgbWVudGlvbmVkIGluIHRoZSBVUERBVEUg dGhlbiB3ZSBuZWVkCisJICogdG8gZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1 ZS4gIFRoYXQncyB0aGUgIm1vZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzIiBvciAi bWl4X2F0dHJzIi4KKwkgKi8KKwlpZiAoIWJtc19pc19lbXB0eShhdHRycykpCisJCW1peF9h dHRycyA9IEV4ZWNDb21wYXJlU2xvdEF0dHJzKHR1cGRlc2MsIGF0dHJzLCBvbGRfdHRzLCBu ZXdfdHRzKTsKKworCWJtc19mcmVlKGF0dHJzKTsKKworCXJldHVybiBtaXhfYXR0cnM7Cit9 CiAKIC8qCiAgKiBWZXJpZnkgdGhhdCB0aGUgdHVwbGVzIHRvIGJlIHByb2R1Y2VkIGJ5IElO U0VSVCBtYXRjaCB0aGUKQEAgLTIxOTUsMTQgKzIyNTksMTcgQEAgRXhlY1VwZGF0ZVByZXBh cmVTbG90KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKi8KIHN0YXRpYyBUTV9S ZXN1bHQKIEV4ZWNVcGRhdGVBY3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAotCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkLCBI ZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJICBib29sIGNh blNldFRhZywgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0KQorCQkJICBJdGVtUG9pbnRlciB0 dXBsZWlkLCBIZWFwVHVwbGUgb2xkdHVwbGUsIFR1cGxlVGFibGVTbG90ICpvbGRTbG90LAor CQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRl eHQgKnVwZGF0ZUN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IGNvbnRleHQtPmVzdGF0 ZTsKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CiAJYm9vbAkJcGFydGl0aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRN X1Jlc3VsdAlyZXN1bHQ7CiAKKwkvKiBUaGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlcyB0aGF0IHRyaWdnZXIgbmV3IGluZGV4IGVudHJpZXMgKi8KKwlCaXRtYXBzZXQg ICptaXhfYXR0cnMgPSBOVUxMOworCiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBm YWxzZTsKIAogCS8qCkBAIC0yMzE5LDcgKzIzODYsMTYgQEAgbHJlcGxhY2U6CiAJCUV4ZWND b25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOwogCiAJLyoKLQkgKiBy ZXBsYWNlIHRoZSBoZWFwIHR1cGxlCisJICogTmV4dCB1cCB3ZSBuZWVkIHRvIGZpbmQgb3V0 IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgaGF2ZQorCSAqIGNoYW5nZWQg aW4gdmFsdWUgYW5kIHNob3VsZCB0cmlnZ2VyIGEgbmV3IGluZGV4IHR1cGxlLiAgV2UgY291 bGQgc3RhcnQKKwkgKiB3aXRoIHRoZSBzZXQgb2YgdXBkYXRlZCBjb2x1bW5zIHZpYSBFeGVj R2V0VXBkYXRlZENvbHMoKSwgYnV0IGlmIHdlIGRvCisJICogd2Ugd2lsbCBvdmVybG9vayBh dHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1cGxlKCkKKwkg KiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRVcGRhdGVkQ29scygpLgorCSAqLwor CW1peF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBlc3Rh dGUsIG9sZFNsb3QsIHNsb3QpOworCisJLyoKKwkgKiBDYWxsIGludG8gdGhlIHRhYmxlIEFN IHRvIHVwZGF0ZSB0aGUgaGVhcCB0dXBsZS4KIAkgKgogCSAqIE5vdGU6IGlmIGVzX2Nyb3Nz Y2hlY2tfc25hcHNob3QgaXNuJ3QgSW52YWxpZFNuYXBzaG90LCB3ZSBjaGVjayB0aGF0CiAJ ICogdGhlIHJvdyB0byBiZSB1cGRhdGVkIGlzIHZpc2libGUgdG8gdGhhdCBzbmFwc2hvdCwg YW5kIHRocm93IGEKQEAgLTIzMzMsNiArMjQwOSw3IEBAIGxyZXBsYWNlOgogCQkJCQkJCQll c3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBm b3IgY29tbWl0ICovICwKIAkJCQkJCQkJJmNvbnRleHQtPnRtZmQsICZ1cGRhdGVDeHQtPmxv Y2ttb2RlLAorCQkJCQkJCQltaXhfYXR0cnMsCiAJCQkJCQkJCSZ1cGRhdGVDeHQtPnVwZGF0 ZUluZGV4ZXMpOwogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTI1NTUsOCArMjYzMiw4IEBAIEV4 ZWNVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCQkgKi8KIHJlZG9fYWN0OgogCQlsb2NrZWR0aWQgPSAqdHVwbGVp ZDsKLQkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0 dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCwKLQkJCQkJCQkgICBjYW5TZXRUYWcsICZ1cGRhdGVD eHQpOworCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8s IHR1cGxlaWQsIG9sZHR1cGxlLCBvbGRTbG90LAorCQkJCQkJCSAgIHNsb3QsIGNhblNldFRh ZywgJnVwZGF0ZUN4dCk7CiAKIAkJLyoKIAkJICogSWYgRXhlY1VwZGF0ZUFjdCByZXBvcnRz IHRoYXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIHdhcyBkb25lLApAQCAtMzQwNiw4ICsz NDgzLDggQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJCUFzc2VydChvbGR0dXBsZSA9PSBOVUxM KTsKIAogCQkJCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQsIHJlc3VsdFJlbElu Zm8sIHR1cGxlaWQsCi0JCQkJCQkJCQkJICAgTlVMTCwgbmV3c2xvdCwgY2FuU2V0VGFnLAot CQkJCQkJCQkJCSAgICZ1cGRhdGVDeHQpOworCQkJCQkJCQkJCSAgIE5VTEwsIHJlc3VsdFJl bEluZm8tPnJpX29sZFR1cGxlU2xvdCwKKwkJCQkJCQkJCQkgICBuZXdzbG90LCBjYW5TZXRU YWcsICZ1cGRhdGVDeHQpOwogCiAJCQkJCS8qCiAJCQkJCSAqIEFzIGluIEV4ZWNVcGRhdGUo KSwgaWYgRXhlY1VwZGF0ZUFjdCgpIHJlcG9ydHMgdGhhdCBhCkBAIC00NTM5LDcgKzQ2MTYs NyBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqIEZvciBVUERB VEUvREVMRVRFL01FUkdFLCBmZXRjaCB0aGUgcm93IGlkZW50aXR5IGluZm8gZm9yIHRoZSB0 dXBsZQogCQkgKiB0byBiZSB1cGRhdGVkL2RlbGV0ZWQvbWVyZ2VkLiAgRm9yIGEgaGVhcCBy ZWxhdGlvbiwgdGhhdCdzIGEgVElEOwogCQkgKiBvdGhlcndpc2Ugd2UgbWF5IGhhdmUgYSB3 aG9sZXJvdyBqdW5rIGF0dHIgdGhhdCBjYXJyaWVzIHRoZSBvbGQKLQkJICogdHVwbGUgaW4g dG90by4gIEtlZXAgdGhpcyBpbiBzdGVwIHdpdGggdGhlIHBhcnQgb2YKKwkJICogdHVwbGUg aW4gdG90YWwuICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRoIHRoZSBwYXJ0IG9mCiAJCSAqIEV4 ZWNJbml0TW9kaWZ5VGFibGUgdGhhdCBzZXRzIHVwIHJpX1Jvd0lkQXR0Tm8uCiAJCSAqLwog CQlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0aW9uID09IENNRF9ERUxF VEUgfHwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0YzlmZmYx Li5mMzA1MDVkOGFlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0y NDc1LDggKzI0NzUsOCBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlvbiByZWxh dGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9r ZXlhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90YmxvY2tp bmdhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCWJt c19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJaWYgKHJlbGF0aW9uLT5yZF9w dWJkZXNjKQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHViZGVzYyk7CiAJaWYgKHJlbGF0aW9u LT5yZF9vcHRpb25zKQpAQCAtNTI3Niw4ICs1Mjc2LDggQEAgUmVsYXRpb25HZXRJbmRleFBy ZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBp ZiBQSyBpcyBkZWZlcnJhYmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tF WQlDb2x1bW5zIGluIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJ aW5kZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJ TkcJQ29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVY X0FUVFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemlu ZyBpbmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgb25s eSBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1B UF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcwogICoKICAqIEF0dHJp YnV0ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAo ZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTMwMCw4ICs1 MzAwLDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24s IEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0 cnM7CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2lu ZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBz ZXQgICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkg Ki8KLQlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9U IGJsb2NraW5nIGluZGV4ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8q IGNvbHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqc3Vt bWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIG9ubHkgaW4gc3VtbWFyaXppbmcgaW5kZXhlcyAq LworCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZlcmVuY2VkIGJ5 IGluZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5k ZXhvaWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzIwLDEwICs1MzIwLDEwIEBA IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0 dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+ cmRfcGthdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgog CQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQkJCWNhc2UgSU5E RVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HOgotCQkJCXJldHVybiBibXNfY29weShyZWxh dGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBf U1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3N1bW1hcml6 ZWRhdHRyKTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCQlyZXR1 cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAkJCWRlZmF1bHQ6CiAJ CQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJCX0K QEAgLTUzNjYsOCArNTM2Niw4IEBAIHJlc3RhcnQ6CiAJdWluZGV4YXR0cnMgPSBOVUxMOwog CXBraW5kZXhhdHRycyA9IE5VTEw7CiAJaWRpbmRleGF0dHJzID0gTlVMTDsKLQlob3RibG9j a2luZ2F0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWluZGV4ZWRh dHRycyA9IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9pZGxpc3QpCiAJewogCQlPaWQJCQlp bmRleE9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC01NDI2LDcgKzU0MjYsNyBAQCByZXN0YXJ0 OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZykKIAkJCWF0dHJz ID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdh dHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBDb2xsZWN0IHNpbXBs ZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBpIDwgaW5kZXhEZXNj LT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0MzUsOSArNTQzNSw5IEBAIHJlc3Rh cnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5nIGluZGV4ZXMgd2l0 aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0aGVtIGFjY3VyYXRl bHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50bwotCQkJICogaG90 YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJlIGluIGlu ZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgorCQkJICogaGFu ZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRl ZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0dHJzLCBzaW5jZSB0 aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxkbid0IG1pc3MgdGhl bS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdCBibG9jayBIT1Qs IGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhlIGNvbHVtbiB2YWx1 ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTQ5OCwxMiArNTQ5OCwy MCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKHBr aW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0JCWJtc19mcmVlKGhv dGJsb2NraW5nYXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOworCQlibXNf ZnJlZShpbmRleGVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKKwkvKgorCSAq IFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJp emluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICogYXR0cmlidXRlcy4K KwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGF0 dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhp bmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24ndCBsZWFrIHRoZSBv bGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJlbGF0aW9uLT5yZF9h dHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2tleWF0dHIpOwpA QCAtNTUxMiwxMCArNTUyMCwxMCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9wa2F0dHIg PSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwogCXJlbGF0aW9uLT5y ZF9pZGF0dHIgPSBOVUxMOwotCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0 dHIpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxMOwogCWJtc19mcmVl KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6 ZWRhdHRyID0gTlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOwor CXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IE5VTEw7CiAKIAkvKgogCSAqIE5vdyBzYXZl IGNvcGllcyBvZiB0aGUgYml0bWFwcyBpbiB0aGUgcmVsY2FjaGUgZW50cnkuICBXZSBpbnRl bnRpb25hbGx5CkBAIC01NTI4LDggKzU1MzYsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5y ZF9rZXlhdHRyID0gYm1zX2NvcHkodWluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0 dHIgPSBibXNfY29weShwa2luZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBi bXNfY29weShpZGluZGV4YXR0cnMpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIg PSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXpl ZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOworCXJlbGF0aW9uLT5yZF9pbmRl eGVkYXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJz dmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01 NTQyLDEwICs1NTUwLDEwIEBAIHJlc3RhcnQ6CiAJCQlyZXR1cm4gcGtpbmRleGF0dHJzOwog CQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCXJldHVybiBpZGlu ZGV4YXR0cnM7Ci0JCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HOgotCQkJ cmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VN TUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJpemVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRU Ul9CSVRNQVBfSU5ERVhFRDoKKwkJCXJldHVybiBpbmRleGVkYXR0cnM7CiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJ CXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDNjMDk2MWFiMzZiLi43YWJj OGUyNGYyMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzY1LDEwICszNjUsOSBAQCBleHRl cm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKnRpZCwKIGV4dGVybiB2b2lkIGhlYXBfZmluaXNoX3NwZWN1bGF0aXZl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRl cm4gdm9pZCBoZWFwX2Fib3J0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsCi0JCQkJ CQkJIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90 IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQs IExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1 cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJZCBj aWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKKwkJCQkJCQkgVE1fRmFpbHVy ZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCisJCQkJCQkJIGNv bnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKTsKIGV4 dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2RlIG1v ZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCBmb2xsb3df dXBkYXRlcywKQEAgLTQzMCw2ICs0MjksMTIgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CQkJCSAgT2Zmc2V0TnVtYmVyICpkZWFkLCBpbnQgbmRlYWQsCiAJCQkJCQkJCQkgIE9mZnNl dE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCk7CiAKKy8qIGluIGhlYXAvaGVhcGFtLmMg Ki8KK2V4dGVybiBib29sIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEJpdG1hcHNldCAqbWl4X2F0dHJzLAorCQkJCQkJCQkgICBib29sICpzdW1t YXJpemVkX29ubHkpOworZXh0ZXJuIExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURldGVybWlu ZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJIGNvbnN0IEJpdG1h cHNldCAqbWl4X2F0dHJzKTsKKwogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4dGVy biB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFj dXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCmluZGV4IDA2MDg0NzUyMjQ1Li4xOWM1OGE3Njg1NCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCkBAIC01NDksNiArNTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFi bGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVE YXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCQkJ CSBjb25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywKIAkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4 ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9y IHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTIzLDEyICsxNTI0LDEyIEBA IHN0YXRpYyBpbmxpbmUgVE1fUmVzdWx0CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24g cmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBD b21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywK IAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2Rl ICpsb2NrbW9kZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykK KwkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1peF9hdHRycywgVFVfVXBkYXRlSW5kZXhlcyAq dXBkYXRlX2luZGV4ZXMpCiB7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfdXBk YXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBzbmFwc2hvdCwgY3Jvc3Nj aGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwKLQkJCQkJCQkJCQkgbG9ja21vZGUsIHVw ZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUsCisJCQkJ CQkJCQkJIG1peF9hdHRycywgdXBkYXRlX2luZGV4ZXMpOwogfQogCiAvKgpAQCAtMjAwOSw2 ICsyMDEwLDcgQEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxh dGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiBy ZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90 LCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptaXhf YXR0cnMsCiAJCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK IAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBkNDZiYTU5ODk1ZC4uMjY2ZDUz MDkxMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTcsNiArMTcsNyBAQAog I2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rl cy5oIgogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC02MDYsNiAr NjA3LDEwIEBAIGV4dGVybiBUdXBsZURlc2MgRXhlY0NsZWFuVHlwZUZyb21UTChMaXN0ICp0 YXJnZXRMaXN0KTsKIGV4dGVybiBUdXBsZURlc2MgRXhlY1R5cGVGcm9tRXhwckxpc3QoTGlz dCAqZXhwckxpc3QpOwogZXh0ZXJuIHZvaWQgRXhlY1R5cGVTZXRDb2xOYW1lcyhUdXBsZURl c2MgdHlwZUluZm8sIExpc3QgKm5hbWVzTGlzdCk7CiBleHRlcm4gdm9pZCBVcGRhdGVDaGFu Z2VkUGFyYW1TZXQoUGxhblN0YXRlICpub2RlLCBCaXRtYXBzZXQgKm5ld2NoZyk7CitleHRl cm4gQml0bWFwc2V0ICpFeGVjQ29tcGFyZVNsb3RBdHRycyhUdXBsZURlc2MgdHVwZGVzYywK KwkJCQkJCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqYXR0cnMsCisJCQkJCQkJCQkgICBUdXBs ZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdf dHRzKTsKIAogdHlwZWRlZiBzdHJ1Y3QgVHVwT3V0cHV0U3RhdGUKIHsKQEAgLTgwMyw1ICs4 MDgsOSBAQCBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lk KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsCiAJCQkJCQkJCQkJCSAgIE9pZCByZXN1bHRvaWQs CiAJCQkJCQkJCQkJCSAgIGJvb2wgbWlzc2luZ19vaywKIAkJCQkJCQkJCQkJICAgYm9vbCB1 cGRhdGVfY2FjaGUpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY1VwZGF0ZU1vZElkeEF0dHJz KFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCisJCQkJCQkJCQkJRVN0YXRlICplc3RhdGUsCisJ CQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkJVHVwbGVUYWJs ZVNsb3QgKm5ld190dHMpOwogCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1VUT1JfSCAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKaW5kZXggMjM2ODMwZjZiOTMuLjEwZTVlOTA0NGVlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAt MTYyLDggKzE2Miw4IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCUJpdG1hcHNl dCAgKnJkX2tleWF0dHI7CQkvKiBjb2xzIHRoYXQgY2FuIGJlIHJlZidkIGJ5IGZvcmVpZ24g a2V5cyAqLwogCUJpdG1hcHNldCAgKnJkX3BrYXR0cjsJCS8qIGNvbHMgaW5jbHVkZWQgaW4g cHJpbWFyeSBrZXkgKi8KIAlCaXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBp biByZXBsaWNhIGlkZW50aXR5IGluZGV4ICovCi0JQml0bWFwc2V0ICAqcmRfaG90YmxvY2tp bmdhdHRyOyAvKiBjb2xzIGJsb2NraW5nIEhPVCB1cGRhdGUgKi8KIAlCaXRtYXBzZXQgICpy ZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4 ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMgcmVmZXJl bmNlZCBieSBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRlc2M7CS8q IHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hl LmgKaW5kZXggMjcwMDIyNDkzOWEuLjU3YjQ2ZWU1NGU1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hl LmgKQEAgLTY5LDggKzY5LDggQEAgdHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQK IAlJTkRFWF9BVFRSX0JJVE1BUF9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfUFJJTUFSWV9L RVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAotCUlOREVYX0FUVFJfQklU TUFQX0hPVF9CTE9DS0lORywKIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAorCUlO REVYX0FUVFJfQklUTUFQX0lOREVYRUQsCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4 dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJl bGF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nZW5lcmF0 ZWRfdmlydHVhbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92 aXJ0dWFsLm91dAppbmRleCA2ZGFiNjBjOTM3Yi4uN2ViYjc4OTBkOTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC0y ODcsNyArMjg3LDcgQEAgREVUQUlMOiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1 bW4uCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVFUyAoOCwgREVGQVVMVCksICg5LCBERUZB VUxUKTsgIC0tIGVycm9yCiBFUlJPUjogIGNhbm5vdCBpbnNlcnQgYSBub24tREVGQVVMVCB2 YWx1ZSBpbnRvIGNvbHVtbiAiYiIKIERFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5lcmF0 ZWQgY29sdW1uLgotU0VMRUNUICogRlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBndGVz dDF2IE9SREVSIEJZIGE7CiAgYSB8IGIgIAogLS0tKy0tLS0KICAzIHwgIDYKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQKaW5kZXggOThkZWU2M2I1MGEuLmVmOThm ZDBjY2NmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dApAQCAt OTU5LDE2ICs5NTksMjQgQEAgTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBVUERBVEUgU1RB VEVNRU5UIChiZWZvcmVfdmlld191cGRfc3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBBRlRF UiBVUERBVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X3VwZF9zdG10KQogVVBEQVRFIDAKIC0t IERlbGV0ZSBmcm9tIHZpZXcgdXNpbmcgdHJpZ2dlcgotREVMRVRFIEZST00gbWFpbl92aWV3 IFdIRVJFIGEgSU4gKDIwLDIxKTsKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0g MjAgQU5EIGIgPSAzMTsKIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRF TUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVB RCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKLU5PVElDRTogIE9MRDogKDIxLDEw KQotTk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9v Zl9kZWwpCiBOT1RJQ0U6ICBPTEQ6ICgyMCwzMSkKK05PVElDRTogIG1haW5fdmlldyBBRlRF UiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X2RlbF9zdG10KQorREVMRVRFIDEKK0RF TEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAxMDsKK05PVElDRTog IG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0 bXQpCitOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFk X29mX2RlbCkKK05PVElDRTogIE9MRDogKDIxLDEwKQorTk9USUNFOiAgbWFpbl92aWV3IEFG VEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfZGVsX3N0bXQpCitERUxFVEUgMQor REVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMyOworTk9USUNF OiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxf c3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3Rl YWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAoMjEsMzIpCiBOT1RJQ0U6ICBtYWluX3ZpZXcg QUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld19kZWxfc3RtdCkKLURFTEVURSAz CitERUxFVEUgMQogREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAzMSBSRVRVUk5J TkcgYSwgYjsKIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAo YmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBE RUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCA5Y2VhNTM4YjhlOC4uNDg3N2ExZGRj ZTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3Zp ZXdzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3 cy5vdXQKQEAgLTM3MiwxNSArMzcyLDE1IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAoYSwg YikgVkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndfdmll dzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIEVSUk9SOiAg bXVsdGlwbGUgYXNzaWdubWVudHMgdG8gc2FtZSBjb2x1bW4gImEiCiBVUERBVEUgcndfdmll dzE2IFNFVCBhYT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJP TSBiYXNlX3RibDsKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKICBhICB8 ICAgYiAgICAKIC0tLS0rLS0tLS0tLS0KKyAtMyB8IFJvdyAzCiAgLTIgfCBSb3cgLTIKICAt MSB8IFJvdyAtMQogICAwIHwgUm93IDAKICAgMSB8IFJvdyAxCiAgIDIgfCBSb3cgMgotIC0z IHwgUm93IDMKICg2IHJvd3MpCiAKIERFTEVURSBGUk9NIHJ3X3ZpZXcxNiBXSEVSRSBhPS0z OyAtLSBzaG91bGQgYmUgT0sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dl bmVyYXRlZF92aXJ0dWFsLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92 aXJ0dWFsLnNxbAppbmRleCBlNzUwODY2ZDJkOC4uODc3MTUyZDZkNjkgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKQEAgLTEyNyw3ICsxMjcs NyBAQCBBTFRFUiBWSUVXIGd0ZXN0MXYgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMTAw OwogSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpOyAgLS0gZXJyb3IK IElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQp OyAgLS0gZXJyb3IKIAotU0VMRUNUICogRlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBn dGVzdDF2IE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSBndGVzdDF2IFdIRVJFIGEgPj0gNTsK IERST1AgVklFVyBndGVzdDF2OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC90cmlnZ2Vycy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKaW5k ZXggZWEzOTgxN2VlM2QuLjZjZWI2MTYwOGFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC90cmlnZ2Vycy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dl cnMuc3FsCkBAIC02NjAsNyArNjYwLDkgQEAgVVBEQVRFIG1haW5fdmlldyBTRVQgYiA9IDMy IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMxIFJFVFVSTklORyBhLCBiOwogVVBEQVRFIG1haW5f dmlldyBTRVQgYiA9IDAgV0hFUkUgZmFsc2U7CiAKIC0tIERlbGV0ZSBmcm9tIHZpZXcgdXNp bmcgdHJpZ2dlcgotREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgSU4gKDIwLDIxKTsK K0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjAgQU5EIGIgPSAzMTsKK0RFTEVU RSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAxMDsKK0RFTEVURSBGUk9N IG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAzMjsKIERFTEVURSBGUk9NIG1haW5f dmlldyBXSEVSRSBhID0gMzEgUkVUVVJOSU5HIGEsIGI7CiAKIFxzZXQgUVVJRVQgdHJ1ZQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKaW5kZXggMTYzNWFk ZGUyZDQuLjE2MGU3Nzk5NzE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJs ZV92aWV3cy5zcWwKQEAgLTEyNSw3ICsxMjUsNyBAQCBJTlNFUlQgSU5UTyByd192aWV3MTYg VkFMVUVTICgzLCAnUm93IDMnLCAzKTsgLS0gc2hvdWxkIGZhaWwKIElOU0VSVCBJTlRPIHJ3 X3ZpZXcxNiAoYSwgYikgVkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBV UERBVEUgcndfdmlldzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZh aWwKIFVQREFURSByd192aWV3MTYgU0VUIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJl IE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2VfdGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBP UkRFUiBCWSBhOwogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNob3Vs ZCBiZSBPSwogLS0gUmVhZC1vbmx5IHZpZXdzCiBJTlNFUlQgSU5UTyByb192aWV3MTcgVkFM VUVTICgzLCAnUk9XIDMnKTsKLS0gCjIuNTEuMgoK --e01e3c6d1a964d21a0f843c0c79509ed--