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 1w0Lqe-001ptC-1M for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 15:51:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w0Lqc-009ofo-2P for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Mar 2026 15:51:47 +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 1w0Lqb-009ofV-1o for pgsql-hackers@lists.postgresql.org; Wed, 11 Mar 2026 15:51:46 +0000 Received: from fout-a8-smtp.messagingengine.com ([103.168.172.151]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w0LqR-00000001d6m-10eq for pgsql-hackers@postgresql.org; Wed, 11 Mar 2026 15:51:45 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id E5C2EEC054C; Wed, 11 Mar 2026 11:51:33 -0400 (EDT) Received: from phl-imap-14 ([10.202.2.87]) by phl-compute-02.internal (MEProxy); Wed, 11 Mar 2026 11:51:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1773244293; x=1773330693; bh=6OTYjyWfyd rp3JfzsbzGEehIfr5g8DubtpAq9G7t3jE=; b=tVdLmo6FR6+n24iB8USR5snfHj 83Gzhnknse+rfD/frS7Y8NHnuL8nHl2x8hABs7jd+qD36uff9kKWnsSVM35TogCd o7G6s8JEZ1YTMEpdwEzXsjhDGl9AUT4Z+yFXxo/Z+iREOQ7WHe4wGyPBkL324Bsm E3ijJbCYas4RwbuLaCpwXO1kuL7seUi4C3EwDguAdZWiy6In4H5v3njID8uRu5et LbABGm4dYhizf3NVYrZc+hBm88NqqjyFOUFwydRvHInKJoQ0P9jle5BxbewA4fTh wQ3U0BZjfCZ+0Qn9XaZJFtevf6HeGvHZhDz/1OvrF/NtGivDxSJ2tzfnyAHg== 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= 1773244293; x=1773330693; bh=6OTYjyWfydrp3JfzsbzGEehIfr5g8DubtpA q9G7t3jE=; b=QhjVVZrkT9Zi7ya7IYyPz3cWjvBjtf0gwvLNbZLTsKSj+M3bhnR xAp9JrRSMR6lHO/76n7y4d3albLh/IlKkTEyBrfttHDzxx4DpuSq+OipLa7NS7za 5DFi9/5DYWPU/4HZUngNNAV7JQeTt/ZRMvnp4Jn3sRbi7VxZsY86wOcN/HwyrYmm ujaBs7XHUWPZh35pQs7NoSDnke1XblpTGSQ0QGuolY8yz0Btvu2DyQWoNG3X4TMn ldQ4s5RMYPGjwAFLmBgsc0ES7mlKSckZ7fYzfDrfMxSE8YPDjCp6YxP8Cw0SqJ/t pRx3ngMMDpar1Xl7kY9IBiLi6SNYtzDq8ag== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvkeegfedtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepofggfffhvfevkfgjfhfutgesmhdtreerredttdenucfhrhhomhepfdfirhgvghcu uehurhgufdcuoehgrhgvghessghurhgurdhmvgeqnecuggftrfgrthhtvghrnhephfevle ehfeefffduledvuddtgffhieelieekueefhffhledvffduvddvjeelkeelnecuvehluhhs thgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepghhrvghgsegsuhhrug drmhgvpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhuthdprhgtphhtthho pehnrghthhgrnhgusghoshhsrghrthesghhmrghilhdrtghomhdprhgtphhtthhopehpgh hsqhhlsehjqdgurghvihhsrdgtohhmpdhrtghpthhtohepphhgshhqlhdqhhgrtghkvghr shesphhoshhtghhrvghsqhhlrdhorhhg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 763A3C40075; Wed, 11 Mar 2026 11:51:33 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: A1gxZgRQNkgk Date: Wed, 11 Mar 2026 11:51:03 -0400 From: "Greg Burd" To: pgsql-hackers Cc: "Jeff Davis" , "Nathan Bossart" Message-Id: <872b875c-0aa4-4269-9c84-532227b32361@app.fastmail.com> 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=a8a718ca00664839aa14577324b2a80c List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --a8a718ca00664839aa14577324b2a80c Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello again, Attached is v35 (master@f4a4ce52c0d) where I've separated out changes into three patches. Still nothing related to $subject directly, but foundational for that work (coming soon). I'd like to get these into v19 if at all possible and then target the rest of $subject for v20 so that it has more time to soak. 0001 - This patch adds tests to validate and capture the expected behavior of Heap-only tuple (HOT) updates. This also serves as a foundation that will aide in documenting what exactly changed in the commits implementing $subject at some later date. This patch isn't required, but it does a good job of demonstrating that a) the changes in 0002 don't impact HOT decisions (as intended) and b) that future patches which change HOT behavior have a very obvious record of what changed because they update these test results (not tests) to illustrate that. That said, if the next two patches are merged without this one I'd be just as happy as if all 3 made it into v19. 0002 - This patch plugs a hole (bug?) in ExecGetAllUpdatedCols() which is triggered by an existing test in tsearch.sql and the tsvector_update_trigger(). That trigger uses heap_modify_tuple() to change an indexed attribute that is not discovered by ExecGetAllUpdatedCols(), which seems odd to me at best and at worst wrong (or even a potential security issue). This patch finds and adds columns that are updated into the Bitmapset returned by ExecGetAllUpdatedCols(). The patch includes a helper function ExecCompareSlotAttrs() that will be used in follow-on patches as well. 0003 - This patch moves the logic for HeapDetermineColumnsInfo() into the executor while preserving the functionality of simple_heap_update(). A few helper functions are created to better illustrate HOT and lock mode decision making and are reused when possible. The portion of HeapDetermineColumnsInfo() related to replica identity key WAL logging is now in-line in heap_update(). These commits maintain 100% identical logic for HOT, lockmode, and replica identity decisions (or there's a flaw and that should be fixed so let me know) They simply juggle the logic into places where I think they fit better and provide for future work in this area. I appreciate your time and effort considering these changes. best. -greg --a8a718ca00664839aa14577324b2a80c Content-Disposition: attachment; filename*0="v35-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v35-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjMDlmZDdkMTgyNTk2NWRiMzY5OGZhZDhiOGIzMmI2MjUxNTVlNDVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjM1IDEv M10gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKVGhpcyBjb21taXQgaW50cm9kdWNlcyB0ZXN0IGluZnJhc3RydWN0dXJlIGZv ciB2ZXJpZnlpbmcgSGVhcC1Pbmx5IFR1cGxlCihIT1QpIHVwZGF0ZSBmdW5jdGlvbmFsaXR5 IGluIFBvc3RncmVTUUwuIEl0IHByb3ZpZGVzIGEgYmFzZWxpbmUgZm9yCmRlbW9uc3RyYXRp bmcgYW5kIHZhbGlkYXRpbmcgSE9UIHVwZGF0ZSBiZWhhdmlvci4KClJlZ3Jlc3Npb24gdGVz dHM6Ci0gQmFzaWMgSE9UIHZzIG5vbi1IT1QgdXBkYXRlIGRlY2lzaW9ucwotIEFsbC1vci1u b25lIHByb3BlcnR5IGZvciBtdWx0aXBsZSBpbmRleGVzCi0gUGFydGlhbCBpbmRleGVzIGFu ZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBhbGxv d2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVtbiBoYW5kbGluZyB3aXRoIEhPVAotIFVu aXF1ZSBjb25zdHJhaW50cyBiZWhhdmlvcgotIE11bHRpLWNvbHVtbiBpbmRleGVzCi0gUGFy dGl0aW9uZWQgdGFibGUgSE9UIHVwZGF0ZXMKCklzb2xhdGlvbiB0ZXN0czoKLSBIT1QgY2hh aW4gZm9ybWF0aW9uIGFuZCBtYWludGVuYW5jZQotIENvbmN1cnJlbnQgSE9UIHVwZGF0ZSBz Y2VuYXJpb3MKLSBJbmRleCBzY2FuIGJlaGF2aW9yIHdpdGggSE9UIGNoYWlucwotLS0KIC4u Li9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfY2hhaW4ub3V0ICB8IDE0NCArKysK IC4uLi9leHBlY3RlZC9ob3RfdXBkYXRlc19jb25jdXJyZW50Lm91dCAgICAgICB8IDE0MyAr KysKIC4uLi9leHBlY3RlZC9ob3RfdXBkYXRlc19pbmRleF9zY2FuLm91dCAgICAgICB8IDEz MiArKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8 ICAgMyArCiAuLi4vaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NoYWluLnNwZWMgICAg fCAxMTAgKysKIC4uLi9zcGVjcy9ob3RfdXBkYXRlc19jb25jdXJyZW50LnNwZWMgICAgICAg ICB8IDEwNyArKwogLi4uL3NwZWNzL2hvdF91cGRhdGVzX2luZGV4X3NjYW4uc3BlYyAgICAg ICAgIHwgIDk0ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91 dCAgICAgfCA5NTAgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv aG90X3VwZGF0ZXMuc3FsICAgICAgICAgIHwgNjkyICsrKysrKysrKysrKysKIDEwIGZpbGVz IGNoYW5nZWQsIDIzODAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19jaGFpbi5vdXQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfY29u Y3VycmVudC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvaG90X3VwZGF0ZXNfaW5kZXhfc2Nhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X3VwZGF0ZXNfY2hhaW4uc3BlYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBkYXRlc19jb25j dXJyZW50LnNwZWMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvaG90X3VwZGF0ZXNfaW5kZXhfc2Nhbi5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfY2hhaW4ub3V0IGIv c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2hvdF91cGRhdGVzX2NoYWluLm91dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTAzMjUyMDA5ZWEKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNf Y2hhaW4ub3V0CkBAIC0wLDAgKzEsMTQ0IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggNSBz ZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFfaG90X3VwZGF0 ZTEgczFfaG90X3VwZGF0ZTIgczFfaG90X3VwZGF0ZTMgczFfY29tbWl0IHMxX3NlbGVjdCBz MV92ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0 ZTE6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdI RVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3VwZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTInIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfaG90 X3VwZGF0ZTM6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0 ZTMnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX3Nl bGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7CitpZHxpbmRleGVk X2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor IDF8ICAgICAgICAxMDB8dXBkYXRlMyAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfdmVy aWZ5X2hvdDogCisgICAgLS0gQ2hlY2sgZm9yIEhPVCBjaGFpbjogTFBfUkVESVJFQ1Qgb3Ig dHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENP VU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMo Z2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAg LS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQg SVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6 aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwn IHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFzX2hv dF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9iZWdpbiBzMl9zZWxlY3RfYmVmb3JlIHMxX2JlZ2lu IHMxX2hvdF91cGRhdGUxIHMxX2hvdF91cGRhdGUyIHMxX2NvbW1pdCBzMl9zZWxlY3RfYWZ0 ZXIgczJfY29tbWl0CitzdGVwIHMyX2JlZ2luOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOworc3RlcCBzMl9zZWxlY3RfYmVmb3JlOiBTRUxFQ1Qgbm9uX2luZGV4 ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxOworbm9uX2luZGV4ZWRfY29sCist LS0tLS0tLS0tLS0tLS0KK2luaXRpYWwgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX2Jl Z2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTE6IFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfaG90 X3VwZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0 ZTInIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX3Nl bGVjdF9hZnRlcjogU0VMRUNUIG5vbl9pbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJF IGlkID0gMTsKK25vbl9pbmRleGVkX2NvbAorLS0tLS0tLS0tLS0tLS0tCitpbml0aWFsICAg ICAgICAKKygxIHJvdykKKworc3RlcCBzMl9jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxX2JlZ2luIHMxX2hvdF91cGRhdGUxIHMxX2hvdF91cGRhdGUyIHMx X2NvbW1pdCBzM19iZWdpbiBzM19ub25faG90X3VwZGF0ZSBzM19jb21taXQgczFfc2VsZWN0 CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTE6IFVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdIRVJFIGlkID0gMTsK K3N0ZXAgczFfaG90X3VwZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZTInIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMzX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczNfbm9uX2hvdF91cGRhdGU6IFVQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworc3RlcCBz M19jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfc2VsZWN0OiBTRUxFQ1QgKiBGUk9NIGhvdF90 ZXN0IFdIRVJFIGlkID0gMTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgMXwgICAgICAgIDE1MHx1cGRhdGUyICAg ICAgICAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFf aG90X3VwZGF0ZTEgczFfY29tbWl0IHMzX2JlZ2luIHMzX25vbl9ob3RfdXBkYXRlIHMzX2Nv bW1pdCBzNF9iZWdpbiBzNF9ob3RfYWZ0ZXJfbm9uX2hvdCBzNF9jb21taXQgczRfc2VsZWN0 IHM0X3ZlcmlmeV9ob3QKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9ob3RfdXBk YXRlMTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlMScg V0hFUkUgaWQgPSAxOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczNfYmVnaW46 IEJFR0lOOworc3RlcCBzM19ub25faG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBp bmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitzdGVwIHMzX2NvbW1pdDogQ09NTUlU Oworc3RlcCBzNF9iZWdpbjogQkVHSU47CitzdGVwIHM0X2hvdF9hZnRlcl9ub25faG90OiBV UERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICdhZnRlcl9ub25faG90JyBX SEVSRSBpZCA9IDE7CitzdGVwIHM0X2NvbW1pdDogQ09NTUlUOworc3RlcCBzNF9zZWxlY3Q6 IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxOworaWR8aW5kZXhlZF9jb2x8 bm9uX2luZGV4ZWRfY29sCistLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAxfCAg ICAgICAgMTUwfGFmdGVyX25vbl9ob3QgIAorKDEgcm93KQorCitzdGVwIHM0X3ZlcmlmeV9o b3Q6IAorICAgIC0tIENoZWNrIGZvciBuZXcgSE9UIGNoYWluIGFmdGVyIG5vbi1IT1QgdXBk YXRlIGJyb2tlIHRoZSBwcmV2aW91cyBjaGFpbgorICAgIFNFTEVDVCBDT1VOVCgqKSA+IDAg QVMgaGFzX2hvdF9jaGFpbgorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZSgnaG90X3Rlc3QnLCAwKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDIKKyAgICAgICBPUiAo dF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAgICAgIEFORCAodF9jdGlkOjp0ZXh0Ojpwb2lu dClbMF06OmludCA9IDAKKyAgICAgICAgICAgQU5EIHRfY3RpZCAhPSAoJygwLCcgfHwgbHAg fHwgJyknKTo6dGlkKTsKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAg ICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBz MV9ob3RfdXBkYXRlMSBzMV9ob3RfdXBkYXRlMiBzNV9iZWdpbiBzNV9ob3RfdXBkYXRlX3Jv dzJfMSBzNV9ob3RfdXBkYXRlX3JvdzJfMiBzMV9jb21taXQgczVfY29tbWl0IHMxX3NlbGVj dCBzNV9zZWxlY3QgczFfdmVyaWZ5X2hvdCBzNV92ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2lu OiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTE6IFVQREFURSBob3RfdGVzdCBTRVQgbm9u X2luZGV4ZWRfY29sID0gJ3VwZGF0ZTEnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfaG90X3Vw ZGF0ZTI6IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZTIn IFdIRVJFIGlkID0gMTsKK3N0ZXAgczVfYmVnaW46IEJFR0lOOworc3RlcCBzNV9ob3RfdXBk YXRlX3JvdzJfMTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAncm93 Ml91cGRhdGUxJyBXSEVSRSBpZCA9IDI7CitzdGVwIHM1X2hvdF91cGRhdGVfcm93Ml8yOiBV UERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICdyb3cyX3VwZGF0ZTInIFdI RVJFIGlkID0gMjsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHM1X2NvbW1pdDog Q09NTUlUOworc3RlcCBzMV9zZWxlY3Q6IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUg aWQgPSAxOworaWR8aW5kZXhlZF9jb2x8bm9uX2luZGV4ZWRfY29sCistLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0KKyAxfCAgICAgICAgMTAwfHVwZGF0ZTIgICAgICAgIAorKDEg cm93KQorCitzdGVwIHM1X3NlbGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBp ZCA9IDI7CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLQorIDJ8ICAgICAgICAyMDB8cm93Ml91cGRhdGUyICAgCisoMSBy b3cpCisKK3N0ZXAgczFfdmVyaWZ5X2hvdDogCisgICAgLS0gQ2hlY2sgZm9yIEhPVCBjaGFp bjogTFBfUkVESVJFQ1Qgb3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBw YWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJP TSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgor ICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFO RCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVu dCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHM1X3ZlcmlmeV9ob3Q6IAorICAgIC0tIENoZWNrIGZvciBI T1QgY2hhaW4gb24gcGFnZSAwCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90 X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVz dCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMg Tk9UIE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50 ID0gMAorICAgICAgICAgICBBTkQgdF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0 aWQpOworCitoYXNfaG90X2NoYWluCistLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgCiso MSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3Rf dXBkYXRlc19jb25jdXJyZW50Lm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9o b3RfdXBkYXRlc19jb25jdXJyZW50Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYjFhOGIwY2I3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9p c29sYXRpb24vZXhwZWN0ZWQvaG90X3VwZGF0ZXNfY29uY3VycmVudC5vdXQKQEAgLTAsMCAr MSwxNDMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCA0IHNlc3Npb25zCisKK3N0YXJ0aW5n IHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMyX2JlZ2luIHMyX2hvdF91 cGRhdGUgczFfY29tbWl0IHMyX2NvbW1pdCBzMV9zZWxlY3QgczJfc2VsZWN0IHMyX3Zlcmlm eV9ob3QKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9ob3RfdXBkYXRlOiBVUERB VEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkX3MxJyBXSEVSRSBp ZCA9IDE7CitzdGVwIHMyX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczJfaG90X3VwZGF0ZTogVVBE QVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZF9zMicgV0hFUkUg aWQgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxX2NvbW1pdDogQ09NTUlUOworc3RlcCBz Ml9ob3RfdXBkYXRlOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMxX3NlbGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7 CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLQorIDF8ICAgICAgICAxMDB8dXBkYXRlZF9zMiAgICAgCisoMSByb3cpCisK K3N0ZXAgczJfc2VsZWN0OiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsK K2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tCisgMXwgICAgICAgIDEwMHx1cGRhdGVkX3MyICAgICAKKygxIHJvdykKKwor c3RlcCBzMl92ZXJpZnlfaG90OiAKKyAgICAtLSBDaGVjayBmb3IgSE9UIGNoYWluOiBsb29r IGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9Mikgb3IgdHVwbGUgd2l0aCB0X2N0aWQgcG9p bnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90 X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVz dCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5kaWNh dGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAg ICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBwYWdl CisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRpZCk7 ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0t LQordCAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMzX2JlZ2luIHMzX25vbl9ob3RfdXBkYXRlIHMxX2Nv bW1pdCBzM19jb21taXQgczNfc2VsZWN0IHMzX3ZlcmlmeV9pbmRleAorc3RlcCBzMV9iZWdp bjogQkVHSU47CitzdGVwIHMxX2hvdF91cGRhdGU6IFVQREFURSBob3RfdGVzdCBTRVQgbm9u X2luZGV4ZWRfY29sID0gJ3VwZGF0ZWRfczEnIFdIRVJFIGlkID0gMTsKK3N0ZXAgczNfYmVn aW46IEJFR0lOOworc3RlcCBzM19ub25faG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNF VCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX25vbl9ob3RfdXBkYXRlOiA8Li4uIGNvbXBs ZXRlZD4KK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX3NlbGVjdDogU0VMRUNU ICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDE7CitpZHxpbmRleGVkX2NvbHxub25faW5k ZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDF8ICAgICAgICAx NTB8dXBkYXRlZF9zMSAgICAgCisoMSByb3cpCisKK3N0ZXAgczNfdmVyaWZ5X2luZGV4OiAK KyAgICAtLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKHByb3ZlcyBub24tSE9UKQorICAg IFNFTEVDVCBDT1VOVCgqKSA9IDEgQVMgaW5kZXhfdXBkYXRlZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgIFNFTEVDVCBDT1VOVCgqKSA9IDAgQVMgb2xk X3ZhbHVlX2dvbmUgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKwor aW5kZXhfdXBkYXRlZAorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQor CitvbGRfdmFsdWVfZ29uZQorLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgCisoMSBy b3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX2JlZ2luIHMzX25vbl9ob3RfdXBk YXRlIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczNfY29tbWl0IHMxX2NvbW1pdCBzMV9zZWxl Y3QgczFfdmVyaWZ5X2hvdAorc3RlcCBzM19iZWdpbjogQkVHSU47CitzdGVwIHMzX25vbl9o b3RfdXBkYXRlOiBVUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJF IGlkID0gMTsKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9ob3RfdXBkYXRlOiBV UERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkX3MxJyBXSEVS RSBpZCA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7CitzdGVw IHMxX2hvdF91cGRhdGU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMV9jb21taXQ6IENPTU1J VDsKK3N0ZXAgczFfc2VsZWN0OiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0g MTsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tCisgMXwgICAgICAgIDE1MHx1cGRhdGVkX3MxICAgICAKKygxIHJvdykK Kworc3RlcCBzMV92ZXJpZnlfaG90OiAKKyAgICAtLSBDaGVjayBmb3IgSE9UIGNoYWluOiBs b29rIGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9Mikgb3IgdHVwbGUgd2l0aCB0X2N0aWQg cG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNf aG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3Rf dGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5k aWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAg ICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBw YWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRp ZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0t LS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHM0X2JlZ2luIHM0X2hvdF91cGRhdGVfcm93MiBz MV9jb21taXQgczRfY29tbWl0IHMxX3NlbGVjdCBzNF9zZWxlY3QgczFfdmVyaWZ5X2hvdCBz NF92ZXJpZnlfaG90CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0 ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZF9zMScg V0hFUkUgaWQgPSAxOworc3RlcCBzNF9iZWdpbjogQkVHSU47CitzdGVwIHM0X2hvdF91cGRh dGVfcm93MjogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZF9zNCcgV0hFUkUgaWQgPSAyOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczRf Y29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX3NlbGVjdDogU0VMRUNUICogRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDE7CitpZHxpbmRleGVkX2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIDF8ICAgICAgICAxMDB8dXBkYXRlZF9zMSAg ICAgCisoMSByb3cpCisKK3N0ZXAgczRfc2VsZWN0OiBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMjsKK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgMnwgICAgICAgIDIwMHx1cGRhdGVkX3M0ICAg ICAKKygxIHJvdykKKworc3RlcCBzMV92ZXJpZnlfaG90OiAKKyAgICAtLSBDaGVjayBmb3Ig SE9UIGNoYWluOiBsb29rIGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9Mikgb3IgdHVwbGUg d2l0aCB0X2N0aWQgcG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCop ID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jh d19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBf UkVESVJFQ1QgaW5kaWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9U IE5VTEwKKyAgICAgICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0g MCAgLS0gc2FtZSBwYWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxw IHx8ICcpJyk6OnRpZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKKworaGFzX2hvdF9jaGFp bgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHM0X3Zl cmlmeV9ob3Q6IAorICAgIC0tIENoZWNrIGZvciBIT1QgY2hhaW4gb24gcGFnZSAwCisgICAg U0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2Zs YWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5E ICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMAorICAgICAgICAgICBBTkQgdF9j dGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOworCitoYXNfaG90X2NoYWluCist LS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19pbmRleF9zY2FuLm91dCBi L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfdXBkYXRlc19pbmRleF9zY2FuLm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2Q4ZTlmZjg4NTcK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X3Vw ZGF0ZXNfaW5kZXhfc2Nhbi5vdXQKQEAgLTAsMCArMSwxMzIgQEAKK1BhcnNlZCB0ZXN0IHNw ZWMgd2l0aCA0IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBz MV9ob3RfdXBkYXRlIHMyX2JlZ2luIHMyX2luZGV4X3NjYW4gczFfY29tbWl0IHMyX2NvbW1p dAorc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX2hvdF91cGRhdGU6IFVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ2hvdF91cGRhdGVkJyBXSEVSRSBpZCA9 IDUwOworc3RlcCBzMl9iZWdpbjogQkVHSU47CitzdGVwIHMyX2luZGV4X3NjYW46IFNFTEVD VCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSA1MDA7CitpZHxpbmRleGVk X2NvbHxub25faW5kZXhlZF9jb2wKKy0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor NTB8ICAgICAgICA1MDB8aW5pdGlhbDUwICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFfY29t bWl0OiBDT01NSVQ7CitzdGVwIHMyX2NvbW1pdDogQ09NTUlUOworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczFfYmVnaW4gczFfbm9uX2hvdF91cGRhdGUgczFfY29tbWl0IHMyX2JlZ2lu IHMyX2luZGV4X3NjYW5fbmV3IHMyX2NvbW1pdCBzMl92ZXJpZnlfaW5kZXgKK3N0ZXAgczFf YmVnaW46IEJFR0lOOworc3RlcCBzMV9ub25faG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0 IFNFVCBpbmRleGVkX2NvbCA9IDU1NSBXSEVSRSBpZCA9IDUwOworc3RlcCBzMV9jb21taXQ6 IENPTU1JVDsKK3N0ZXAgczJfYmVnaW46IEJFR0lOOworc3RlcCBzMl9pbmRleF9zY2FuX25l dzogU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDU1NTsKK2lk fGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tCis1MHwgICAgICAgIDU1NXxpbml0aWFsNTAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMl9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfdmVyaWZ5X2luZGV4OiAKKyAgICAtLSBB ZnRlciBub24tSE9UIHVwZGF0ZSwgdmVyaWZ5IGluZGV4IHJlZmxlY3RzIHRoZSBjaGFuZ2UK KyAgICBTRUxFQ1QgQ09VTlQoKikgPSAxIEFTIGZvdW5kX25ld192YWx1ZSBGUk9NIGhvdF90 ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gNTU1OworICAgIFNFTEVDVCBDT1VOVCgqKSA9IDAg QVMgb2xkX3ZhbHVlX2dvbmUgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDUw MDsKKworZm91bmRfbmV3X3ZhbHVlCistLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAg IAorKDEgcm93KQorCitvbGRfdmFsdWVfZ29uZQorLS0tLS0tLS0tLS0tLS0KK3QgICAgICAg ICAgICAgCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMzX2JlZ2luIHMz X3NlbGVjdF9mb3JfdXBkYXRlIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczNfY29tbWl0IHMx X2NvbW1pdCBzMV92ZXJpZnlfaG90CitzdGVwIHMzX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczNf c2VsZWN0X2Zvcl91cGRhdGU6IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSA1 MCBGT1IgVVBEQVRFOworaWR8aW5kZXhlZF9jb2x8bm9uX2luZGV4ZWRfY29sCistLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKzUwfCAgICAgICAgNTAwfGluaXRpYWw1MCAgICAg IAorKDEgcm93KQorCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0 ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAnaG90X3VwZGF0ZWQn IFdIRVJFIGlkID0gNTA7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMxX2hvdF91cGRhdGU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMV9jb21taXQ6 IENPTU1JVDsKK3N0ZXAgczFfdmVyaWZ5X2hvdDogCisgICAgLS0gVmVyaWZ5IEhPVCBjaGFp biBleGlzdHMgZm9yIHJvdyB3aXRoIGlkPTUwCisgICAgLS0gVXNlIGFjdHVhbCBjdGlkIHRv IGZpbmQgdGhlIGNvcnJlY3QgcGFnZQorICAgIFNFTEVDVCBFWElTVFMgKAorICAgICAgICBT RUxFQ1QgMSBGUk9NIGhlYXBfcGFnZV9pdGVtcygKKyAgICAgICAgICAgIGdldF9yYXdfcGFn ZSgnaG90X3Rlc3QnLCAoU0VMRUNUIChjdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCBGUk9N IGhvdF90ZXN0IFdIRVJFIGlkID0gNTApKQorICAgICAgICApCisgICAgICAgIFdIRVJFIGxw X2ZsYWdzID0gMgorICAgICAgICAgICBPUiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAg ICAgICAgICBBTkQgdF9jdGlkICE9ICgnKCcgfHwgKFNFTEVDVCAoY3RpZDo6dGV4dDo6cG9p bnQpWzBdOjppbnQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwKSB8fCAnLCcgfHwgbHAg fHwgJyknKTo6dGlkCisgICAgICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQp WzBdOjppbnQgPSAoU0VMRUNUIChjdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCBGUk9NIGhv dF90ZXN0IFdIRVJFIGlkID0gNTApKQorICAgICkgQVMgaGFzX2hvdF9jaGFpbjsKKworaGFz X2hvdF9jaGFpbgorLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgIAorKDEgcm93KQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMzX2JlZ2lu IHMzX3NlbGVjdF9mb3JfdXBkYXRlIHMxX2NvbW1pdCBzM19jb21taXQKK3N0ZXAgczFfYmVn aW46IEJFR0lOOworc3RlcCBzMV9ob3RfdXBkYXRlOiBVUERBVEUgaG90X3Rlc3QgU0VUIG5v bl9pbmRleGVkX2NvbCA9ICdob3RfdXBkYXRlZCcgV0hFUkUgaWQgPSA1MDsKK3N0ZXAgczNf YmVnaW46IEJFR0lOOworc3RlcCBzM19zZWxlY3RfZm9yX3VwZGF0ZTogU0VMRUNUICogRlJP TSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwIEZPUiBVUERBVEU7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMzX3NlbGVjdF9mb3JfdXBkYXRlOiA8Li4u IGNvbXBsZXRlZD4KK2lkfGluZGV4ZWRfY29sfG5vbl9pbmRleGVkX2NvbAorLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tCis1MHwgICAgICAgIDUwMHxob3RfdXBkYXRlZCAgICAK KygxIHJvdykKKworc3RlcCBzM19jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0 YXRpb246IHM0X2JlZ2luIHM0X3NlbGVjdF9mb3Jfa2V5X3NoYXJlIHMxX2JlZ2luIHMxX2hv dF91cGRhdGUgczRfY29tbWl0IHMxX2NvbW1pdCBzMV92ZXJpZnlfaG90CitzdGVwIHM0X2Jl Z2luOiBCRUdJTjsKK3N0ZXAgczRfc2VsZWN0X2Zvcl9rZXlfc2hhcmU6IFNFTEVDVCAqIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSA1MCBGT1IgS0VZIFNIQVJFOworaWR8aW5kZXhlZF9j b2x8bm9uX2luZGV4ZWRfY29sCistLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKzUw fCAgICAgICAgNTAwfGluaXRpYWw1MCAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX2JlZ2lu OiBCRUdJTjsKK3N0ZXAgczFfaG90X3VwZGF0ZTogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25f aW5kZXhlZF9jb2wgPSAnaG90X3VwZGF0ZWQnIFdIRVJFIGlkID0gNTA7CitzdGVwIHM0X2Nv bW1pdDogQ09NTUlUOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczFfdmVyaWZ5 X2hvdDogCisgICAgLS0gVmVyaWZ5IEhPVCBjaGFpbiBleGlzdHMgZm9yIHJvdyB3aXRoIGlk PTUwCisgICAgLS0gVXNlIGFjdHVhbCBjdGlkIHRvIGZpbmQgdGhlIGNvcnJlY3QgcGFnZQor ICAgIFNFTEVDVCBFWElTVFMgKAorICAgICAgICBTRUxFQ1QgMSBGUk9NIGhlYXBfcGFnZV9p dGVtcygKKyAgICAgICAgICAgIGdldF9yYXdfcGFnZSgnaG90X3Rlc3QnLCAoU0VMRUNUIChj dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gNTAp KQorICAgICAgICApCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMgorICAgICAgICAgICBP UiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAgICAgICAgICBBTkQgdF9jdGlkICE9ICgn KCcgfHwgKFNFTEVDVCAoY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDUwKSB8fCAnLCcgfHwgbHAgfHwgJyknKTo6dGlkCisgICAgICAgICAg ICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgPSAoU0VMRUNUIChjdGlk Ojp0ZXh0Ojpwb2ludClbMF06OmludCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gNTApKQor ICAgICkgQVMgaGFzX2hvdF9jaGFpbjsKKworaGFzX2hvdF9jaGFpbgorLS0tLS0tLS0tLS0t LQordCAgICAgICAgICAgIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz NF9iZWdpbiBzNF9zZWxlY3RfZm9yX2tleV9zaGFyZSBzMV9iZWdpbiBzMV9ub25faG90X3Vw ZGF0ZSBzNF9jb21taXQgczFfY29tbWl0CitzdGVwIHM0X2JlZ2luOiBCRUdJTjsKK3N0ZXAg czRfc2VsZWN0X2Zvcl9rZXlfc2hhcmU6IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUg aWQgPSA1MCBGT1IgS0VZIFNIQVJFOworaWR8aW5kZXhlZF9jb2x8bm9uX2luZGV4ZWRfY29s CistLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKzUwfCAgICAgICAgNTAwfGluaXRp YWw1MCAgICAgIAorKDEgcm93KQorCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFf bm9uX2hvdF91cGRhdGU6IFVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSA1NTUg V0hFUkUgaWQgPSA1MDsKK3N0ZXAgczRfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMxX2NvbW1p dDogQ09NTUlUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXgg NGU0NjY1ODBjZDQuLjQ2NTI1YjBhNjJhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUKQEAgLTE5LDYgKzE5LDkgQEAgdGVzdDogbXVsdGlwbGUtcm93LXZlcnNp b25zCiB0ZXN0OiBpbmRleC1vbmx5LXNjYW4KIHRlc3Q6IGluZGV4LW9ubHktYml0bWFwc2Nh bgogdGVzdDogcHJlZGljYXRlLWxvY2staG90LXR1cGxlCit0ZXN0OiBob3RfdXBkYXRlc19j b25jdXJyZW50Cit0ZXN0OiBob3RfdXBkYXRlc19pbmRleF9zY2FuCit0ZXN0OiBob3RfdXBk YXRlc19jaGFpbgogdGVzdDogdXBkYXRlLWNvbmZsaWN0LW91dAogdGVzdDogZGVhZGxvY2st c2ltcGxlCiB0ZXN0OiBkZWFkbG9jay1oYXJkCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvaG90X3VwZGF0ZXNfY2hhaW4uc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9ob3RfdXBkYXRlc19jaGFpbi5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi44NWNkMjE3NjEzMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfdXBkYXRlc19jaGFpbi5zcGVjCkBAIC0wLDAgKzEs MTEwIEBACisjIFRlc3QgSE9UIHVwZGF0ZSBjaGFpbnMgYW5kIHRoZWlyIGludGVyYWN0aW9u IHdpdGggVkFDVVVNIGFuZCBwYWdlIHBydW5pbmcKKyMKKyMgVGhpcyB0ZXN0IHZlcmlmaWVz IHRoYXQgSE9UIHVwZGF0ZSBjaGFpbnMgYXJlIGNvcnJlY3RseSBtYWludGFpbmVkIHdoZW4K KyMgbXVsdGlwbGUgSE9UIHVwZGF0ZXMgb2NjdXIgb24gdGhlIHNhbWUgcm93LCBhbmQgdGhh dCBWQUNVVU0gY29ycmVjdGx5CisjIGhhbmRsZXMgSE9UIGNoYWlucy4KKworc2V0dXAKK3sK KyAgICBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CisKKyAg ICBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgICAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgICAgIGluZGV4ZWRfY29sIGludCwKKyAgICAgICAgbm9uX2luZGV4ZWRfY29sIHRl eHQKKyAgICApOworCisgICAgQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9O IGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworICAgIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworICAgIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOworfQorCit0ZWFyZG93bgoreworICAgIERST1Ag VEFCTEUgaG90X3Rlc3Q7CisgICAgRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7Cit9CisK KyMgU2Vzc2lvbiAxOiBDcmVhdGUgSE9UIGNoYWluIHdpdGggbXVsdGlwbGUgdXBkYXRlcwor c2Vzc2lvbiBzMQorc3RlcCBzMV9iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHMxX2hvdF91cGRh dGUxIHsgVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlMScg V0hFUkUgaWQgPSAxOyB9CitzdGVwIHMxX2hvdF91cGRhdGUyIHsgVVBEQVRFIGhvdF90ZXN0 IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlMicgV0hFUkUgaWQgPSAxOyB9CitzdGVw IHMxX2hvdF91cGRhdGUzIHsgVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wg PSAndXBkYXRlMycgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMxX2NvbW1pdCB7IENPTU1JVDsg fQorc3RlcCBzMV9zZWxlY3QgeyBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0g MTsgfQorc3RlcCBzMV92ZXJpZnlfaG90IHsKKyAgICAtLSBDaGVjayBmb3IgSE9UIGNoYWlu OiBMUF9SRURJUkVDVCBvciB0dXBsZSB3aXRoIHRfY3RpZCBwb2ludGluZyB0byBzYW1lIHBh Z2UKKyAgICBTRUxFQ1QgQ09VTlQoKikgPiAwIEFTIGhhc19ob3RfY2hhaW4KKyAgICBGUk9N IGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0JywgMCkpCisgICAgV0hF UkUgbHBfZmxhZ3MgPSAyICAtLSBMUF9SRURJUkVDVCBpbmRpY2F0ZXMgSE9UIGNoYWluCisg ICAgICAgT1IgKHRfY3RpZCBJUyBOT1QgTlVMTAorICAgICAgICAgICBBTkQgKHRfY3RpZDo6 dGV4dDo6cG9pbnQpWzBdOjppbnQgPSAwICAtLSBzYW1lIHBhZ2UKKyAgICAgICAgICAgQU5E IHRfY3RpZCAhPSAoJygwLCcgfHwgbHAgfHwgJyknKTo6dGlkKTsgICAgLS0gZGlmZmVyZW50 IG9mZnNldAorfQorCisjIFNlc3Npb24gMjogUmVhZCB3aGlsZSBIT1QgY2hhaW4gaXMgYmVp bmcgYnVpbHQKK3Nlc3Npb24gczIKK3N0ZXAgczJfYmVnaW4geyBCRUdJTiBJU09MQVRJT04g TEVWRUwgUkVQRUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyX3NlbGVjdF9iZWZvcmUgeyBTRUxF Q1Qgbm9uX2luZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxOyB9CitzdGVw IHMyX3NlbGVjdF9hZnRlciB7IFNFTEVDVCBub25faW5kZXhlZF9jb2wgRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczJfY29tbWl0IHsgQ09NTUlUOyB9CisKKyMgU2Vz c2lvbiAzOiBCcmVhayBIT1QgY2hhaW4gd2l0aCBub24tSE9UIHVwZGF0ZQorc2Vzc2lvbiBz Mworc3RlcCBzM19iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHMzX25vbl9ob3RfdXBkYXRlIHsg VVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7IH0K K3N0ZXAgczNfY29tbWl0IHsgQ09NTUlUOyB9CisKKyMgU2Vzc2lvbiA0OiBUcnkgdG8gYnVp bGQgSE9UIGNoYWluIGFmdGVyIG5vbi1IT1QgdXBkYXRlCitzZXNzaW9uIHM0CitzdGVwIHM0 X2JlZ2luIHsgQkVHSU47IH0KK3N0ZXAgczRfaG90X2FmdGVyX25vbl9ob3QgeyBVUERBVEUg aG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICdhZnRlcl9ub25faG90JyBXSEVSRSBp ZCA9IDE7IH0KK3N0ZXAgczRfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHM0X3NlbGVjdCB7 IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHM0X3Zlcmlm eV9ob3QgeworICAgIC0tIENoZWNrIGZvciBuZXcgSE9UIGNoYWluIGFmdGVyIG5vbi1IT1Qg dXBkYXRlIGJyb2tlIHRoZSBwcmV2aW91cyBjaGFpbgorICAgIFNFTEVDVCBDT1VOVCgqKSA+ IDAgQVMgaGFzX2hvdF9jaGFpbgorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdf cGFnZSgnaG90X3Rlc3QnLCAwKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDIKKyAgICAgICBP UiAodF9jdGlkIElTIE5PVCBOVUxMCisgICAgICAgICAgIEFORCAodF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCA9IDAKKyAgICAgICAgICAgQU5EIHRfY3RpZCAhPSAoJygwLCcgfHwg bHAgfHwgJyknKTo6dGlkKTsKK30KKworIyBTZXNzaW9uIDU6IE11bHRpcGxlIHNlc3Npb25z IGJ1aWxkaW5nIHNlcGFyYXRlIEhPVCBjaGFpbnMgb24gZGlmZmVyZW50IHJvd3MKK3Nlc3Np b24gczUKK3N0ZXAgczVfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzNV9ob3RfdXBkYXRlX3Jv dzJfMSB7IFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3JvdzJfdXBk YXRlMScgV0hFUkUgaWQgPSAyOyB9CitzdGVwIHM1X2hvdF91cGRhdGVfcm93Ml8yIHsgVVBE QVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAncm93Ml91cGRhdGUyJyBXSEVS RSBpZCA9IDI7IH0KK3N0ZXAgczVfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHM1X3NlbGVj dCB7IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAyOyB9CitzdGVwIHM1X3Zl cmlmeV9ob3QgeworICAgIC0tIENoZWNrIGZvciBIT1QgY2hhaW4gb24gcGFnZSAwCisgICAg U0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFwX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2Zs YWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAgQU5E ICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMAorICAgICAgICAgICBBTkQgdF9j dGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOworfQorCisjIEJ1aWxkIEhPVCBj aGFpbiB3aXRoaW4gc2luZ2xlIHRyYW5zYWN0aW9uCisjIEFsbCB1cGRhdGVzIHNob3VsZCBm b3JtIGEgSE9UIGNoYWluCitwZXJtdXRhdGlvbiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlMSBz MV9ob3RfdXBkYXRlMiBzMV9ob3RfdXBkYXRlMyBzMV9jb21taXQgczFfc2VsZWN0IHMxX3Zl cmlmeV9ob3QKKworIyBSRVBFQVRBQkxFIFJFQUQgc2hvdWxkIHNlZSBjb25zaXN0ZW50IHNu YXBzaG90IGFjcm9zcyBIT1QgY2hhaW4gdXBkYXRlcworIyBTZXNzaW9uIDIgc3RhcnRzIGJl Zm9yZSB1cGRhdGVzLCBzaG91bGQgc2VlICdpbml0aWFsJyB0aHJvdWdob3V0CitwZXJtdXRh dGlvbiBzMl9iZWdpbiBzMl9zZWxlY3RfYmVmb3JlIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUx IHMxX2hvdF91cGRhdGUyIHMxX2NvbW1pdCBzMl9zZWxlY3RfYWZ0ZXIgczJfY29tbWl0CisK KyMgSE9UIGNoYWluIGZvbGxvd2VkIGJ5IG5vbi1IT1QgdXBkYXRlCisjIE5vbi1IT1QgdXBk YXRlIGJyZWFrcyB0aGUgSE9UIGNoYWluCitwZXJtdXRhdGlvbiBzMV9iZWdpbiBzMV9ob3Rf dXBkYXRlMSBzMV9ob3RfdXBkYXRlMiBzMV9jb21taXQgczNfYmVnaW4gczNfbm9uX2hvdF91 cGRhdGUgczNfY29tbWl0IHMxX3NlbGVjdAorCisjIEhPVCB1cGRhdGUgYWZ0ZXIgbm9uLUhP VCB1cGRhdGUgY2FuIHN0YXJ0IG5ldyBIT1QgY2hhaW4KKyMgQWZ0ZXIgYnJlYWtpbmcgY2hh aW4gd2l0aCBpbmRleGVkIGNvbHVtbiB1cGRhdGUsIG5ldyBIT1QgdXBkYXRlcyBjYW4gc3Rh cnQgZnJlc2ggY2hhaW4KK3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUxIHMx X2NvbW1pdCBzM19iZWdpbiBzM19ub25faG90X3VwZGF0ZSBzM19jb21taXQgczRfYmVnaW4g czRfaG90X2FmdGVyX25vbl9ob3QgczRfY29tbWl0IHM0X3NlbGVjdCBzNF92ZXJpZnlfaG90 CisKKyMgTXVsdGlwbGUgc2Vzc2lvbnMgYnVpbGRpbmcgc2VwYXJhdGUgSE9UIGNoYWlucyBv biBkaWZmZXJlbnQgcm93cworcGVybXV0YXRpb24gczFfYmVnaW4gczFfaG90X3VwZGF0ZTEg czFfaG90X3VwZGF0ZTIgczVfYmVnaW4gczVfaG90X3VwZGF0ZV9yb3cyXzEgczVfaG90X3Vw ZGF0ZV9yb3cyXzIgczFfY29tbWl0IHM1X2NvbW1pdCBzMV9zZWxlY3QgczVfc2VsZWN0IHMx X3ZlcmlmeV9ob3QgczVfdmVyaWZ5X2hvdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NvbmN1cnJlbnQuc3BlYyBiL3NyYy90ZXN0L2lzb2xh dGlvbi9zcGVjcy9ob3RfdXBkYXRlc19jb25jdXJyZW50LnNwZWMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVhYzc4ZDYyYWM1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2NvbmN1cnJlbnQuc3Bl YwpAQCAtMCwwICsxLDEwNyBAQAorIyBUZXN0IGNvbmN1cnJlbnQgSE9UIHVwZGF0ZXMgYW5k IHZhbGlkYXRlIEhPVCBjaGFpbnMKKyMKKyMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgSE9U IHVwZGF0ZXMgd29yayBjb3JyZWN0bHkgd2hlbiBtdWx0aXBsZSBzZXNzaW9ucworIyBhcmUg dXBkYXRpbmcgdGhlIHNhbWUgdGFibGUgY29uY3VycmVudGx5LCBhbmQgdmFsaWRhdGVzIHRo YXQgSE9UIGNoYWlucworIyBhcmUgYWN0dWFsbHkgY3JlYXRlZCB1c2luZyBoZWFwX3BhZ2Vf aXRlbXMoKS4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElT VFMgcGFnZWluc3BlY3Q7CisKKyAgICBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgICAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgICAgIGluZGV4ZWRfY29sIGludCwKKyAgICAg ICAgbm9uX2luZGV4ZWRfY29sIHRleHQKKyAgICApOworCisgICAgQ1JFQVRFIElOREVYIGhv dF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworICAgIElO U0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbDEnKTsKKyAgICBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwyJyk7CisgICAg SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsMycpOworfQor Cit0ZWFyZG93bgoreworICAgIERST1AgVEFCTEUgaG90X3Rlc3Q7CisgICAgRFJPUCBFWFRF TlNJT04gcGFnZWluc3BlY3Q7Cit9CisKKyMgU2Vzc2lvbiAxOiBIT1QgdXBkYXRlIChtb2Rp Znkgbm9uLWluZGV4ZWQgY29sdW1uKQorc2Vzc2lvbiBzMQorc3RlcCBzMV9iZWdpbiB7IEJF R0lOOyB9CitzdGVwIHMxX2hvdF91cGRhdGUgeyBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9p bmRleGVkX2NvbCA9ICd1cGRhdGVkX3MxJyBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfY29t bWl0IHsgQ09NTUlUOyB9CitzdGVwIHMxX3NlbGVjdCB7IFNFTEVDVCAqIEZST00gaG90X3Rl c3QgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMxX3ZlcmlmeV9ob3QgeworICAgIC0tIENoZWNr IGZvciBIT1QgY2hhaW46IGxvb2sgZm9yIExQX1JFRElSRUNUIChscF9mbGFncz0yKSBvciB0 dXBsZSB3aXRoIHRfY3RpZCBwb2ludGluZyB0byBzYW1lIHBhZ2UKKyAgICBTRUxFQ1QgQ09V TlQoKikgPiAwIEFTIGhhc19ob3RfY2hhaW4KKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0JywgMCkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAyICAt LSBMUF9SRURJUkVDVCBpbmRpY2F0ZXMgSE9UIGNoYWluCisgICAgICAgT1IgKHRfY3RpZCBJ UyBOT1QgTlVMTAorICAgICAgICAgICBBTkQgKHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQgPSAwICAtLSBzYW1lIHBhZ2UKKyAgICAgICAgICAgQU5EIHRfY3RpZCAhPSAoJygwLCcg fHwgbHAgfHwgJyknKTo6dGlkKTsgICAgLS0gZGlmZmVyZW50IG9mZnNldAorfQorCisjIFNl c3Npb24gMjogSE9UIHVwZGF0ZSAobW9kaWZ5IG5vbi1pbmRleGVkIGNvbHVtbiBvbiBzYW1l IHJvdykKK3Nlc3Npb24gczIKK3N0ZXAgczJfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzMl9o b3RfdXBkYXRlIHsgVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZF9zMicgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMyX2NvbW1pdCB7IENPTU1JVDsgfQor c3RlcCBzMl9zZWxlY3QgeyBTRUxFQ1QgKiBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMTsg fQorc3RlcCBzMl92ZXJpZnlfaG90IHsKKyAgICAtLSBDaGVjayBmb3IgSE9UIGNoYWluOiBs b29rIGZvciBMUF9SRURJUkVDVCAobHBfZmxhZ3M9Mikgb3IgdHVwbGUgd2l0aCB0X2N0aWQg cG9pbnRpbmcgdG8gc2FtZSBwYWdlCisgICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNf aG90X2NoYWluCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3Rf dGVzdCcsIDApKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMiAgLS0gTFBfUkVESVJFQ1QgaW5k aWNhdGVzIEhPVCBjaGFpbgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAg ICAgICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMCAgLS0gc2FtZSBw YWdlCisgICAgICAgICAgIEFORCB0X2N0aWQgIT0gKCcoMCwnIHx8IGxwIHx8ICcpJyk6OnRp ZCk7ICAgIC0tIGRpZmZlcmVudCBvZmZzZXQKK30KKworIyBTZXNzaW9uIDM6IE5vbi1IT1Qg dXBkYXRlIChtb2RpZnkgaW5kZXhlZCBjb2x1bW4pCitzZXNzaW9uIHMzCitzdGVwIHMzX2Jl Z2luIHsgQkVHSU47IH0KK3N0ZXAgczNfbm9uX2hvdF91cGRhdGUgeyBVUERBVEUgaG90X3Rl c3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsgfQorc3RlcCBzM19jb21t aXQgeyBDT01NSVQ7IH0KK3N0ZXAgczNfc2VsZWN0IHsgU0VMRUNUICogRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczNfdmVyaWZ5X2luZGV4IHsKKyAgICAtLSBWZXJp ZnkgaW5kZXggd2FzIHVwZGF0ZWQgKHByb3ZlcyBub24tSE9UKQorICAgIFNFTEVDVCBDT1VO VCgqKSA9IDEgQVMgaW5kZXhfdXBkYXRlZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRf Y29sID0gMTUwOworICAgIFNFTEVDVCBDT1VOVCgqKSA9IDAgQVMgb2xkX3ZhbHVlX2dvbmUg RlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK30KKworIyBTZXNzaW9u IDQ6IENvbmN1cnJlbnQgSE9UIHVwZGF0ZXMgb24gZGlmZmVyZW50IHJvd3MKK3Nlc3Npb24g czQKK3N0ZXAgczRfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzNF9ob3RfdXBkYXRlX3JvdzIg eyBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkX3M0JyBX SEVSRSBpZCA9IDI7IH0KK3N0ZXAgczRfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHM0X3Nl bGVjdCB7IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAyOyB9CitzdGVwIHM0 X3ZlcmlmeV9ob3QgeworICAgIC0tIENoZWNrIGZvciBIT1QgY2hhaW4gb24gcGFnZSAwCisg ICAgU0VMRUNUIENPVU5UKCopID4gMCBBUyBoYXNfaG90X2NoYWluCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdob3RfdGVzdCcsIDApKQorICAgIFdIRVJFIGxw X2ZsYWdzID0gMgorICAgICAgIE9SICh0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICAg QU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gMAorICAgICAgICAgICBBTkQg dF9jdGlkICE9ICgnKDAsJyB8fCBscCB8fCAnKScpOjp0aWQpOworfQorCisjIFR3byBzZXNz aW9ucyBib3RoIGRvaW5nIEhPVCB1cGRhdGVzIG9uIHNhbWUgcm93CisjIFNlY29uZCBzZXNz aW9uIHNob3VsZCBibG9jayB1bnRpbCBmaXJzdCBjb21taXRzCisjIEJvdGggc2hvdWxkIGNy ZWF0ZSBIT1QgY2hhaW5zCitwZXJtdXRhdGlvbiBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHMy X2JlZ2luIHMyX2hvdF91cGRhdGUgczFfY29tbWl0IHMyX2NvbW1pdCBzMV9zZWxlY3QgczJf c2VsZWN0IHMyX3ZlcmlmeV9ob3QKKworIyBIT1QgdXBkYXRlIGZvbGxvd2VkIGJ5IG5vbi1I T1QgdXBkYXRlCisjIE5vbi1IT1QgdXBkYXRlIHNob3VsZCB3YWl0IGZvciBIT1QgdXBkYXRl IHRvIGNvbW1pdAorIyBGaXJzdCB1cGRhdGUgaXMgSE9ULCBzZWNvbmQgaXMgbm9uLUhPVCAo aW5kZXggdXBkYXRlZCkKK3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczNf YmVnaW4gczNfbm9uX2hvdF91cGRhdGUgczFfY29tbWl0IHMzX2NvbW1pdCBzM19zZWxlY3Qg czNfdmVyaWZ5X2luZGV4CisKKyMgTm9uLUhPVCB1cGRhdGUgZm9sbG93ZWQgYnkgSE9UIHVw ZGF0ZQorIyBIT1QgdXBkYXRlIHNob3VsZCB3YWl0IGZvciBub24tSE9UIHVwZGF0ZSB0byBj b21taXQKKyMgRmlyc3QgdXBkYXRlIGlzIG5vbi1IT1QgKGluZGV4KSwgc2Vjb25kIGlzIEhP VAorcGVybXV0YXRpb24gczNfYmVnaW4gczNfbm9uX2hvdF91cGRhdGUgczFfYmVnaW4gczFf aG90X3VwZGF0ZSBzM19jb21taXQgczFfY29tbWl0IHMxX3NlbGVjdCBzMV92ZXJpZnlfaG90 CisKKyMgQ29uY3VycmVudCBIT1QgdXBkYXRlcyBvbiBkaWZmZXJlbnQgcm93cyAoc2hvdWxk IG5vdCBibG9jaykKKyMgQm90aCBzZXNzaW9ucyBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUg SE9UIGNoYWlucyBpbmRlcGVuZGVudGx5CitwZXJtdXRhdGlvbiBzMV9iZWdpbiBzMV9ob3Rf dXBkYXRlIHM0X2JlZ2luIHM0X2hvdF91cGRhdGVfcm93MiBzMV9jb21taXQgczRfY29tbWl0 IHMxX3NlbGVjdCBzNF9zZWxlY3QgczFfdmVyaWZ5X2hvdCBzNF92ZXJpZnlfaG90CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X3VwZGF0ZXNfaW5kZXhfc2Nh bi5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF91cGRhdGVzX2luZGV4X3Nj YW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzBjM2Rh ZTUxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90 X3VwZGF0ZXNfaW5kZXhfc2Nhbi5zcGVjCkBAIC0wLDAgKzEsOTQgQEAKKyMgVGVzdCBIT1Qg dXBkYXRlcyBpbnRlcmFjdGlvbiB3aXRoIGluZGV4IHNjYW5zIGFuZCBTRUxFQ1QgRk9SIFVQ REFURQorIworIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgY29y cmVjdGx5IGhhbmRsZWQgd2hlbiBjb25jdXJyZW50CisjIHNlc3Npb25zIGFyZSBwZXJmb3Jt aW5nIGluZGV4IHNjYW5zLCB1c2luZyBTRUxFQ1QgRk9SIFVQREFURSwgYW5kIHZhbGlkYXRl cworIyBIT1QgY2hhaW5zIHVzaW5nIGhlYXBfcGFnZV9pdGVtcygpLgorCitzZXR1cAorewor ICAgIENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworICAg IENSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICAgICAgaW5kZXhlZF9jb2wgaW50LAorICAgICAgICBub25faW5kZXhlZF9jb2wgdGV4 dAorICAgICk7CisKKyAgICBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04g aG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCisgICAgSU5TRVJUIElOVE8gaG90X3Rlc3QgU0VM RUNUIGksIGkgKiAxMCwgJ2luaXRpYWwnIHx8IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwKSBpOworfQorCit0ZWFyZG93bgoreworICAgIERST1AgVEFCTEUgaG90X3Rlc3Q7Cisg ICAgRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7Cit9CisKKyMgU2Vzc2lvbiAxOiBQZXJm b3JtIEhPVCB1cGRhdGUKK3Nlc3Npb24gczEKK3N0ZXAgczFfYmVnaW4geyBCRUdJTjsgfQor c3RlcCBzMV9ob3RfdXBkYXRlIHsgVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9j b2wgPSAnaG90X3VwZGF0ZWQnIFdIRVJFIGlkID0gNTA7IH0KK3N0ZXAgczFfbm9uX2hvdF91 cGRhdGUgeyBVUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gNTU1IFdIRVJFIGlk ID0gNTA7IH0KK3N0ZXAgczFfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHMxX3ZlcmlmeV9o b3QgeworICAgIC0tIFZlcmlmeSBIT1QgY2hhaW4gZXhpc3RzIGZvciByb3cgd2l0aCBpZD01 MAorICAgIC0tIFVzZSBhY3R1YWwgY3RpZCB0byBmaW5kIHRoZSBjb3JyZWN0IHBhZ2UKKyAg ICBTRUxFQ1QgRVhJU1RTICgKKyAgICAgICAgU0VMRUNUIDEgRlJPTSBoZWFwX3BhZ2VfaXRl bXMoCisgICAgICAgICAgICBnZXRfcmF3X3BhZ2UoJ2hvdF90ZXN0JywgKFNFTEVDVCAoY3Rp ZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwKSkK KyAgICAgICAgKQorICAgICAgICBXSEVSRSBscF9mbGFncyA9IDIKKyAgICAgICAgICAgT1Ig KHRfY3RpZCBJUyBOT1QgTlVMTAorICAgICAgICAgICAgICAgQU5EIHRfY3RpZCAhPSAoJygn IHx8IChTRUxFQ1QgKGN0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50IEZST00gaG90X3Rlc3Qg V0hFUkUgaWQgPSA1MCkgfHwgJywnIHx8IGxwIHx8ICcpJyk6OnRpZAorICAgICAgICAgICAg ICAgQU5EICh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ID0gKFNFTEVDVCAoY3RpZDo6 dGV4dDo6cG9pbnQpWzBdOjppbnQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwKSkKKyAg ICApIEFTIGhhc19ob3RfY2hhaW47Cit9CisKKyMgU2Vzc2lvbiAyOiBJbmRleCBzY2FuIHdo aWxlIEhPVCB1cGRhdGUgaW4gcHJvZ3Jlc3MKK3Nlc3Npb24gczIKK3N0ZXAgczJfYmVnaW4g eyBCRUdJTjsgfQorc3RlcCBzMl9pbmRleF9zY2FuIHsgU0VMRUNUICogRlJPTSBob3RfdGVz dCBXSEVSRSBpbmRleGVkX2NvbCA9IDUwMDsgfQorc3RlcCBzMl9pbmRleF9zY2FuX25ldyB7 IFNFTEVDVCAqIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSA1NTU7IH0KK3N0 ZXAgczJfY29tbWl0IHsgQ09NTUlUOyB9CitzdGVwIHMyX3ZlcmlmeV9pbmRleCB7CisgICAg LS0gQWZ0ZXIgbm9uLUhPVCB1cGRhdGUsIHZlcmlmeSBpbmRleCByZWZsZWN0cyB0aGUgY2hh bmdlCisgICAgU0VMRUNUIENPVU5UKCopID0gMSBBUyBmb3VuZF9uZXdfdmFsdWUgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDU1NTsKKyAgICBTRUxFQ1QgQ09VTlQoKikg PSAwIEFTIG9sZF92YWx1ZV9nb25lIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSA1MDA7Cit9CisKKyMgU2Vzc2lvbiAzOiBTRUxFQ1QgRk9SIFVQREFURQorc2Vzc2lvbiBz Mworc3RlcCBzM19iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHMzX3NlbGVjdF9mb3JfdXBkYXRl IHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDUwIEZPUiBVUERBVEU7IH0K K3N0ZXAgczNfY29tbWl0IHsgQ09NTUlUOyB9CisKKyMgU2Vzc2lvbiA0OiBTRUxFQ1QgRk9S IEtFWSBTSEFSRSAoc2hvdWxkIG5vdCBibG9jayBIT1QgdXBkYXRlIG9mIG5vbi1rZXkgY29s dW1uKQorc2Vzc2lvbiBzNAorc3RlcCBzNF9iZWdpbiB7IEJFR0lOOyB9CitzdGVwIHM0X3Nl bGVjdF9mb3Jfa2V5X3NoYXJlIHsgU0VMRUNUICogRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDUwIEZPUiBLRVkgU0hBUkU7IH0KK3N0ZXAgczRfY29tbWl0IHsgQ09NTUlUOyB9CisKKyMg SW5kZXggc2NhbiBzaG91bGQgc2VlIGNvbnNpc3RlbnQgc25hcHNob3QgZHVyaW5nIEhPVCB1 cGRhdGUKKyMgSW5kZXggc2NhbiBzdGFydHMgYmVmb3JlIEhPVCB1cGRhdGUgY29tbWl0cwor cGVybXV0YXRpb24gczFfYmVnaW4gczFfaG90X3VwZGF0ZSBzMl9iZWdpbiBzMl9pbmRleF9z Y2FuIHMxX2NvbW1pdCBzMl9jb21taXQKKworIyBJbmRleCBzY2FuIGFmdGVyIG5vbi1IT1Qg dXBkYXRlIHNob3VsZCBzZWUgbmV3IGluZGV4IGVudHJ5CisjIEluZGV4IHNjYW4gc3RhcnRz IGFmdGVyIG5vbi1IT1QgdXBkYXRlIGNvbW1pdHMKK3Blcm11dGF0aW9uIHMxX2JlZ2luIHMx X25vbl9ob3RfdXBkYXRlIHMxX2NvbW1pdCBzMl9iZWdpbiBzMl9pbmRleF9zY2FuX25ldyBz Ml9jb21taXQgczJfdmVyaWZ5X2luZGV4CisKKyMgU0VMRUNUIEZPUiBVUERBVEUgYmxvY2tz IEhPVCB1cGRhdGUKKyMgRk9SIFVQREFURSBzaG91bGQgYmxvY2sgdGhlIFVQREFURSB1bnRp bCBTRUxFQ1QgY29tbWl0cworcGVybXV0YXRpb24gczNfYmVnaW4gczNfc2VsZWN0X2Zvcl91 cGRhdGUgczFfYmVnaW4gczFfaG90X3VwZGF0ZSBzM19jb21taXQgczFfY29tbWl0IHMxX3Zl cmlmeV9ob3QKKworIyBIT1QgdXBkYXRlIGJsb2NrcyBTRUxFQ1QgRk9SIFVQREFURQorIyBT RUxFQ1QgRk9SIFVQREFURSBzaG91bGQgd2FpdCBmb3IgSE9UIHVwZGF0ZSB0byBjb21taXQK K3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX2hvdF91cGRhdGUgczNfYmVnaW4gczNfc2VsZWN0 X2Zvcl91cGRhdGUgczFfY29tbWl0IHMzX2NvbW1pdAorCisjIFNFTEVDVCBGT1IgS0VZIFNI QVJFIHNob3VsZCBub3QgYmxvY2sgSE9UIHVwZGF0ZSAobm9uLWtleSBjb2x1bW4pCisjIEhP VCB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uIHNob3VsZCBub3QgY29uZmxpY3Qgd2l0 aCBGT1IgS0VZIFNIQVJFCitwZXJtdXRhdGlvbiBzNF9iZWdpbiBzNF9zZWxlY3RfZm9yX2tl eV9zaGFyZSBzMV9iZWdpbiBzMV9ob3RfdXBkYXRlIHM0X2NvbW1pdCBzMV9jb21taXQgczFf dmVyaWZ5X2hvdAorCisjIE5vbi1IT1QgdXBkYXRlIChrZXkgY29sdW1uKSBzaG91bGQgYmxv Y2sgYWZ0ZXIgRk9SIEtFWSBTSEFSRQorIyBOb24tSE9UIHVwZGF0ZSBvZiBpbmRleGVkIGNv bHVtbiBzaG91bGQgd2FpdCBmb3IgRk9SIEtFWSBTSEFSRQorcGVybXV0YXRpb24gczRfYmVn aW4gczRfc2VsZWN0X2Zvcl9rZXlfc2hhcmUgczFfYmVnaW4gczFfbm9uX2hvdF91cGRhdGUg czRfY29tbWl0IHMxX2NvbW1pdApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ob3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTk5 YTUxOTY2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2hvdF91cGRhdGVzLm91dApAQCAtMCwwICsxLDk1MCBAQAorLS0gTG9hZCByZXF1aXJlZCBl eHRlbnNpb25zCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7 CistLSBGdW5jdGlvbiB0byBnZXQgSE9UIHVwZGF0ZSBjb3VudAorQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJM RSAoCisgICAgdXBkYXRlcyBCSUdJTlQsCisgICAgaG90IEJJR0lOVAorKSBBUyAkJAorREVD TEFSRQorICByZWxfb2lkIG9pZDsKK0JFR0lOCisgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJl Z2NsYXNzOjpvaWQ7CisKKyAgLS0gUmVhZCBib3RoIGNvbW1pdHRlZCBhbmQgdHJhbnNhY3Rp b24tbG9jYWwgc3RhdHMKKyAgLS0gSW4gYXV0b2NvbW1pdCBtb2RlIChkZWZhdWx0IGZvciBy ZWdyZXNzaW9uIHRlc3RzKSwgdGhpcyB3b3JrcyBjb3JyZWN0bHkKKyAgLS0gTm90ZTogSW4g ZXhwbGljaXQgdHJhbnNhY3Rpb25zIChCRUdJTi9DT01NSVQpLCBjb21taXR0ZWQgc3RhdHMg YWxyZWFkeQorICAtLSBpbmNsdWRlIGZsdXNoZWQgdXBkYXRlcywgc28gdGhpcyB3b3VsZCBk b3VibGUtY291bnQuIEZvciBleHBsaWNpdAorICAtLSB0cmFuc2FjdGlvbiB0ZXN0aW5nLCBj YWxsIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgor ICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9v aWQpLCAwKSArCisgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dl dF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgIENPQUxFU0NF KHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKwor ICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBDaGVjayBp ZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9u IHNhbWUgcGFnZSkKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4o cmVsX25hbWUgdGV4dCwgdGFyZ2V0X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQk CitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJ TgorICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsK KworICAtLSBMb29rIGZvciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRo YXQgcG9pbnRzIHRvIG91ciB0YXJnZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAg IFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFn cyA9IDEKKyAgICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQg PSB0YXJnZXRfY3RpZAorICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcs JyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAg IFJFVFVSTiB0cnVlOworICBFTkQgTE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGluZyBm cm9tIGEgZ2l2ZW4gdHVwbGUKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hv dF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKK1JFVFVSTlMgVEFCTEUo Y2hhaW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRp ZCwgY2hhaW5fZW5kIGJvb2xlYW4pIEFTCiskJAorI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9j b2x1bW4KK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKKyAgbGluZV9wdHIgaW50OworICBj dXJyZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIG5leHRfY3RpZCB0aWQ7CisgIHBv c2l0aW9uIGludCA6PSAwOworICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICBwYWdl X2l0ZW0gcmVjb3JkOworICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwor ICBmbGFnc19uYW1lIHRleHQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChv bGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCisgIEZPUiBwYWdlX2l0ZW0g SU4KKyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUg bHBfZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAorICBMT09QCisg ICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBw YWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgIGZvdW5kX3ByZWRlY2Vzc29y IDo9IHRydWU7CisgICAgRVhJVDsKKyAgRU5EIExPT1A7CisKKyAgLS0gSWYgbm8gcHJlZGVj ZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKKyAgSUYgTk9UIGZvdW5k X3ByZWRlY2Vzc29yIFRIRU4KKyAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKKyAg RU5EIElGOworCisgIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAorICBXSElMRSBwb3Np dGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9j dGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKworICAgIEZPUiBwYWdlX2l0ZW0gSU4KKyAg ICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgV0hFUkUg bHAgPSBsaW5lX3B0cgorICAgIExPT1AKKyAgICAgIC0tIE1hcCBscF9mbGFncyB0byBuYW1l cworICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAg ICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1h bCAoMSknCisgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAgIFdI RU4gMyBUSEVOICdkZWFkICgzKScKKyAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdl X2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICBFTkQ7CisKKyAgICAgIFJFVFVS TiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGN1cnJlbnRfY3Rp ZCwKKyAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAg ICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0g Y3VycmVudF9jdGlkKTo6Ym9vbGVhbgorICAgICAgOworCisgICAgICBJRiBwYWdlX2l0ZW0u dF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVO CisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJRjsKKworICAgICAgbmV4dF9jdGlkIDo9 IHBhZ2VfaXRlbS50X2N0aWQ7CisKKyAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50 KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVO RCBJRjsKKworICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAgIHBvc2l0 aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIElGIHBvc2l0aW9u ID0gMCBUSEVOCisgICAgICBSRVRVUk47CisgICAgRU5EIElGOworICBFTkQgTE9PUDsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBCYXNpYyBIT1QgdXBkYXRlIGZ1bmN0aW9u YWxpdHkKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBV U0lORyBoZWFwIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90X3Rl c3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworLS0gR2V0IGJhc2VsaW5lCitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gU2hvdWxkIGJl IEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKK1VQREFU RSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicg V0hFUkUgaWQgPSAyOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAn dXBkYXRlZDMnIFdIRVJFIGlkID0gMzsKKy0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1cnJl ZAorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAzIHwgICAzCisoMSByb3cpCisKKy0t IER1bXAgdGhlIEhPVCBjaGFpbiBmb3IgdHVwbGUgd2l0aCBpZCA9PSAxCitXSVRIIGN1cnJl bnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0g MQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9ob3Rf Y2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxl LAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5j dGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdz ICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0KKyB0ICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgwLDEp IHwgbm9ybWFsICgxKSB8ICgwLDQpCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCAo MCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorKDIgcm93cykKKworLS0gVHJpZ2dlciBvcHRp bWlzdGljIGhlYXAgcGFnZSBwcnVuaW5nCitTRUxFQ1QgY3RpZCwgKiBGUk9NIGhvdF90ZXN0 OworIGN0aWQgIHwgaWQgfCBpbmRleGVkX2NvbCB8IG5vbl9pbmRleGVkX2NvbCAKKy0tLS0t LS0rLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgKDAsNCkgfCAgMSB8 ICAgICAgICAgMTAwIHwgdXBkYXRlZDEKKyAoMCw1KSB8ICAyIHwgICAgICAgICAyMDAgfCB1 cGRhdGVkMgorICgwLDYpIHwgIDMgfCAgICAgICAgIDMwMCB8IHVwZGF0ZWQzCisoMyByb3dz KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYWZ0ZXIgcHJ1bmUKK1dJVEggY3VycmVudF90 dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCisp CitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0 aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFp bi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitM QVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQp OworIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBfZmxhZ3MgIHwg dF9jdGlkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAwIHwgKDAsMSkgfCBu b3JtYWwgKDEpIHwgKDAsNCkKKyB0ICAgICAgICAgfCAgICAgICAgICAgICAgMSB8ICgwLDQp IHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMiByb3dzKQorCitTRVQgU0VTU0lPTiBlbmFibGVf c2Vxc2NhbiA9IE9GRjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT0ZGOwor LS0gVmVyaWZ5IGluZGV4ZXMgc3RpbGwgd29yaworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAx MDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEluZGV4IFNjYW4gdXNpbmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QK KyAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVD VCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKKyBpZCB8IGluZGV4ZWRfY29sIAorLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCAgICAg ICAgIDEwMAorKDEgcm93KQorCistLSBWYWN1dW0gdGhlIHJlbGF0aW9uLCBleHBlY3QgdGhl IEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhvdF90ZXN0OworLS0gU2hvdyB0aGF0 IHRoZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZhY3V1bQorV0lUSCBjdXJyZW50X3R1cGxlIEFT ICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVD VAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMg aGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQs CisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwg cHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CisgaGFz X2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tCisgZiAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCw0KSB8IG5vcm1hbCAo MSkgfCAoMCw0KQorKDEgcm93KQorCistLSBOb24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4 ZWQgY29sdW1uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Cisg dXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDQgfCAgIDMKKygxIHJv dykKKworLS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUp CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3Rf dGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBob3RfdGVz dF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAorICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29s ID0gMTUwKQorKDIgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIHwgaW5kZXhlZF9jb2wgCistLS0t Ky0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTUwCisoMSByb3cpCisKKy0tIFZlcmlm eSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4CitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBD b25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisoMiByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3Mp CisKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFzY2FuID0gT047CitTRVQgU0VTU0lPTiBlbmFi bGVfYml0bWFwc2NhbiA9IE9OOworLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5n IG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcworRFJPUCBU QUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgY29sX2Mg aW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgVVNJTkcgaGVhcCBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNv bF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwor LS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGlu ZGV4ZWQgY29sdW1uIGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBi ZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQg Y29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAg IDEgfCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IGFsbCB0aHJlZSBpbmRleGVzIHN0aWxs IHdvcmsgY29ycmVjdGx5CitTRUxFQ1QgaWQsIGNvbF9hIEZST00gaG90X3Rlc3QgV0hFUkUg Y29sX2EgPSAxNTsgIC0tIHVwZGF0ZWQgaW5kZXgKKyBpZCB8IGNvbF9hIAorLS0tLSstLS0t LS0tCisgIDEgfCAgICAxNQorKDEgcm93KQorCitTRUxFQ1QgaWQsIGNvbF9iIEZST00gaG90 X3Rlc3QgV0hFUkUgY29sX2IgPSAyMDsgIC0tIHVuY2hhbmdlZCBpbmRleAorIGlkIHwgY29s X2IgCistLS0tKy0tLS0tLS0KKyAgMSB8ICAgIDIwCisoMSByb3cpCisKK1NFTEVDVCBpZCwg Y29sX2MgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYyA9IDMwOyAgLS0gdW5jaGFuZ2VkIGlu ZGV4CisgaWQgfCBjb2xfYyAKKy0tLS0rLS0tLS0tLQorICAxIHwgICAgMzAKKygxIHJvdykK KworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7CitTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAK Ky0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5 IGFsbCBpbmRleGVzIHN0aWxsIHdvcmsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJF IGNvbF9hID0gMTUgQU5EIGNvbF9iID0gMjAgQU5EIGNvbF9jID0gMzA7CisgaWQgCistLS0t CisgIDEKKygxIHJvdykKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBv dXRzaWRlIHByZWRpY2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUg aG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKy0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2Fj dGl2ZScKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0 YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQg Y29sdW1uIG9uICdhY3RpdmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2Vk KQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0 ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDEKKygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3Rp dmUnIHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0t LS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3Rh dHVzIGZyb20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNh dGUpCistLSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVu cyBiZWZvcmUgcHJlZGljYXRlIGNoZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0 aG91Z2ggYm90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rl c3QgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0t LSstLS0tLQorICAgICAgIDMgfCAgIDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0 aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhv dF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSst LS0tLS0tLQorICAxIHwgYWN0aXZlCisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFy aXppbmcpIGluZGV4ZXMgb24gbm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7 CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAg ICB0cyB0aW1lc3RhbXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4g T04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJp bl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0g VXBkYXRlIGJvdGggQlJJTiBjb2x1bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBz dW1tYXJpemluZyBpbmRleGVzKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAx LTAyJywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBWZXJpZnkgQlJJTiBpbmRleGVz IHdvcmsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIHRzID49ICcyMDI0LTAxLTAy JzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVz dCBXSEVSRSBicmluX2NvbCA+PSAyMDAwOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisK Ky0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYWxzbyBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0t LS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25z dHJhaW50ICh1bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4 dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFM VUVTICgxLCAxMDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgy LCAyMDAsICdkYXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAor LS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkg dW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2Nv bCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8 ICBkYXRhICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAx MDAgfCB1cGRhdGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKwor LS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVz dCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0 ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1 ZV9jb2xfa2V5IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4 aXN0cy4KKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24t SE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwK KyAgICBjb2xfYyBpbnQsCisgICAgY29sX2QgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBj b2xfYik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaW5jX2NfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hLCBjb2xfYikgSU5DTFVERShjb2xfYyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwKTsKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAg MAorKDEgcm93KQorCistLSBVcGRhdGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGlu ZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjU7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCwgYnV0IGluY2x1ZGVkKSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBWZXJpZnkg bXVsdGktY29sdW1uIGluZGV4LW9ubHkgc2NhbiBmb3IgaW5jbHVkZWQgY29sdW1ucyB3b3Jr cworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY29sX2MgRlJPTSBob3RfdGVzdCBXSEVS RSBjb2xfYSA9IDE1IEFORCBjb2xfYiA9IDI1OworICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBPbmx5IFNj YW4gdXNpbmcgaG90X3Rlc3RfYWJfaW5jX2NfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBD b25kOiAoKGNvbF9hID0gMTUpIEFORCAoY29sX2IgPSAyNSkpCisoMiByb3dzKQorCitTRUxF Q1QgY29sX2MgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYSA9IDE1IEFORCBjb2xfYiA9IDI1 OworIGNvbF9jIAorLS0tLS0tLQorICAgIDM1CisoMSByb3cpCisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEV4cHJlc3Npb24gaW5kZXhlcyB3aXRoIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgor KSBVU0lORyBoZWFwIFdJVEgoZmlsbGZhY3RvciA9IDUwKTsKKy0tIEluZGV4ZXMgb24gc3Bl Y2lmaWMgSlNPTkIgcGF0aHMKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9zdGF0dXNfaWR4IE9O IGhvdF90ZXN0KChkYXRhLT4nc3RhdHVzJykpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3Vz ZXJfaWRfaWR4IE9OIGhvdF90ZXN0KChkYXRhLT4ndXNlcictPidpZCcpKTsKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoCisgICAgMSwKKyAgICAneyJzdGF0dXMiOiAiYWN0aXZl IiwgInVzZXIiOiB7ImlkIjogMTIzLCAibmFtZSI6ICJBbGljZSJ9LCAiY291bnQiOiAwfSc6 Ompzb25iCispOworLS0gQmFzZWxpbmUKK1NFTEVDVCAnQmFzZWxpbmUnIEFTIHRlc3QsICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgdGVzdCAgIHwgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tCisgQmFzZWxpbmUgfCAgICAgICAw IHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBwYXRoIHtjb3VudH0g LSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJf c2V0KGRhdGEsICd7Y291bnR9JywgJzEnKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVy IHVwZGF0aW5nIGNvdW50IChub24taW5kZXhlZCknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAg ICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIGNvdW50IChub24taW5kZXhl ZCkgfCAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBkaWZmZXJlbnQgbm9u LWluZGV4ZWQgcGF0aCB7dXNlcixuYW1lfSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3t1c2VyLG5hbWV9JywgJyJC b2IiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyB1c2VyLm5hbWUg KG5vbi1pbmRleGVkKScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisgICAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgfCB1cGRhdGVz IHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0KKyBBZnRlciB1cGRhdGluZyB1c2VyLm5hbWUgKG5vbi1pbmRleGVkKSB8 ICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIGluZGV4ZWQgcGF0aCB7c3Rh dHVzfSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBq c29uYl9zZXQoZGF0YSwgJ3tzdGF0dXN9JywgJyJpbmFjdGl2ZSInKSBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIHN0YXR1cyAoaW5kZXhlZCknIEFTIHRlc3QsICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAgICB0ZXN0ICAg ICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIHN0YXR1cyAoaW5k ZXhlZCkgfCAgICAgICAzIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIHBh dGgge3VzZXIsaWR9IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne3VzZXIsaWR9JywgJzQ1NicpIFdIRVJFIGlkID0g MTsKK1NFTEVDVCAnQWZ0ZXIgdXBkYXRpbmcgdXNlci5pZCAoaW5kZXhlZCknIEFTIHRlc3Qs ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAgICAgdGVz dCAgICAgICAgICAgICAgIHwgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tCisgQWZ0ZXIgdXBkYXRpbmcgdXNlci5p ZCAoaW5kZXhlZCkgfCAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRl eGVzIHN0aWxsIHdvcmsgY29ycmVjdGx5CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVS RSBkYXRhLT4nc3RhdHVzJyA9ICciaW5hY3RpdmUiJzo6anNvbmI7CisgaWQgCistLS0tCisg IDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgZGF0YS0+J3Vz ZXInLT4naWQnID0gJzQ1Nic6Ompzb25iOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE5lc3RlZCBwYXRocyBhbmQgcGF0aCBp bnRlcnNlY3Rpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFCTEUgaG90 X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBkYXRhIGpzb25iCispIFVTSU5HIGhlYXAgV0lUSChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2RlZXBfaWR4IE9OIGhvdF90ZXN0KChkYXRhLT4n YSctPidiJy0+J2MnKSk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKAorICAgIDEs CisgICAgJ3siYSI6IHsiYiI6IHsiYyI6ICJpbmRleGVkIiwgImQiOiAibm90LWluZGV4ZWQi fX0sICJ4IjogIm90aGVyIn0nOjpqc29uYgorKTsKK1NFTEVDVCAnQmFzZWxpbmUnIEFTIHRl c3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgdGVzdCAgIHwgdXBk YXRlcyB8IGhvdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tCisgQmFzZWxpbmUgfCAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBzaWJsaW5nIG9mIGluZGV4ZWQg cGF0aCB7YSxiLGR9IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2EsYixkfScsICcidXBkYXRlZCInKSBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIGEuYi5kIChzaWJsaW5nLCBub24taW5k ZXhlZCknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAg ICAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIGEuYi5kIChzaWJsaW5nLCBub24taW5k ZXhlZCkgfCAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB1bnJlbGF0ZWQg cGF0aCB7eH0gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRh ID0ganNvbmJfc2V0KGRhdGEsICd7eH0nLCAnIm1vZGlmaWVkIicpIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAnQWZ0ZXIgdXBkYXRpbmcgeCAodW5yZWxhdGVkIHBhdGgpJyBBUyB0ZXN0LCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyAgICAgICAgICAgICAgIHRlc3Qg ICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tCisgQWZ0ZXIgdXBkYXRpbmcgeCAodW5y ZWxhdGVkIHBhdGgpIHwgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgcGFy ZW50IG9mIGluZGV4ZWQgcGF0aCB7YSxifSAtIHNob3VsZCBOT1QgYmUgSE9UIChhZmZlY3Rz IGNoaWxkKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7 YSxifScsICd7ImMiOiAibmV3IiwgImQiOiAiZGF0YSJ9JykgV0hFUkUgaWQgPSAxOworU0VM RUNUICdBZnRlciB1cGRhdGluZyBhLmIgKHBhcmVudCBvZiBpbmRleGVkKScgQVMgdGVzdCwg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgICAgICAgICAgICAgICAgICB0 ZXN0ICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBBZnRlciB1cGRh dGluZyBhLmIgKHBhcmVudCBvZiBpbmRleGVkKSB8ICAgICAgIDMgfCAgIDAKKygxIHJvdykK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTXVsdGlwbGUgSlNPTkIgbXV0YXRp b24gZnVuY3Rpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZGF0YSBqc29uYgorKSBVU0lORyBoZWFwIFdJVEgoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9rZWVwX2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+ J2tlZXAnKSk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKAorICAgIDEsCisgICAg J3sia2VlcCI6ICJpbXBvcnRhbnQiLCAicmVtb3ZlIjogInVuaW1wb3J0YW50IiwgImV4dHJh IjogImRhdGEifSc6Ompzb25iCispOworU0VMRUNUICdCYXNlbGluZScgQVMgdGVzdCwgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgICB0ZXN0ICAgfCB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBCYXNlbGluZSB8ICAgICAgIDAg fCAgIDAKKygxIHJvdykKKworLS0ganNvbmJfZGVsZXRlIG9uIG5vbi1pbmRleGVkIGtleSAt IHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0g J3JlbW92ZScgV0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciBkZWxldGluZyBub24taW5k ZXhlZCBrZXknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor ICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICB8IHVwZGF0ZXMgfCBob3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBBZnRlciBk ZWxldGluZyBub24taW5kZXhlZCBrZXkgfCAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0t IGpzb25iX3NldCBvbiBub24taW5kZXhlZCBrZXkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBE QVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7ZXh0cmF9JywgJyJt b2RpZmllZCInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIG1vZGlmeWluZyBub24t aW5kZXhlZCBrZXknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIEFm dGVyIG1vZGlmeWluZyBub24taW5kZXhlZCBrZXkgfCAgICAgICAyIHwgICAwCisoMSByb3cp CisKKy0tIGpzb25iX2RlbGV0ZSBvbiBpbmRleGVkIGtleSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2tlZXAnIFdIRVJFIGlkID0g MTsKK1NFTEVDVCAnQWZ0ZXIgZGVsZXRpbmcgaW5kZXhlZCBrZXknIEFTIHRlc3QsICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAgdGVzdCAgICAgICAg ICAgIHwgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tCisgQWZ0ZXIgZGVsZXRpbmcgaW5kZXhlZCBrZXkgfCAgICAgICAzIHwg ICAwCisoMSByb3cpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFycmF5IG9w ZXJhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFCTEUgaG90X3Rl c3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICBkYXRhIGpzb25iCispIFVTSU5HIGhlYXAgV0lUSChmaWxsZmFjdG9yID0gNTApOwor LS0gSW5kZXggb24gYXJyYXkgZWxlbWVudAorQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RhZ3Nf aWR4IE9OIGhvdF90ZXN0KChkYXRhLT4ndGFncyctPjApKTsKK0lOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoCisgICAgMSwKKyAgICAneyJ0YWdzIjogWyJpbmRleGVkIiwgInNlY29u ZCIsICJ0aGlyZCJdLCAib3RoZXIiOiAiZGF0YSJ9Jzo6anNvbmIKKyk7CitTRUxFQ1QgJ0Jh c2VsaW5lJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyAg IHRlc3QgICB8IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQor IEJhc2VsaW5lIHwgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgYXJyYXkgZWxlbWVudCAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rl c3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3t0YWdzLDF9JywgJyJtb2RpZmllZCIn KSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIHRhZ3NbMV0nIEFTIHRl c3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgIHRlc3Qg ICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIHRhZ3NbMV0gfCAgICAgICAxIHwgICAw CisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIGFycmF5IGVsZW1lbnQgLSBzaG91bGQg Tk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEs ICd7dGFncywwfScsICciY2hhbmdlZCInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVy IHVwZGF0aW5nIHRhZ3NbMF0gKGluZGV4ZWQpJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgICB8 IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIHRhZ3NbMF0gKGluZGV4ZWQpIHwgICAg ICAgMiB8ICAgMAorKDEgcm93KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBX aG9sZSBjb2x1bW4gaW5kZXgKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICBkYXRhIGpzb25iCispIFVTSU5HIGhlYXAgV0lUSChmaWxsZmFjdG9y ID0gNTApOworLS0gSW5kZXggb24gZW50aXJlIEpTT05CIGNvbHVtbiwgYW5kIGEgcGF0aCBl eHRyYWN0aW9uCitDUkVBVEUgSU5ERVggaG90X3Rlc3Rfd2hvbGVfaWR4IE9OIGhvdF90ZXN0 KGRhdGEpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RhZ3NfaWR4IE9OIGhvdF90ZXN0KChk YXRhLT4nYScpKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJ3siYSI6IDEs ICJiIjogMX0nOjpqc29uYik7CitTRUxFQ1QgJ0Jhc2VsaW5lJyBBUyB0ZXN0LCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyAgIHRlc3QgICB8IHVwZGF0ZXMgfCBob3Qg CistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIEJhc2VsaW5lIHwgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBBbnkgbW9kaWZpY2F0aW9uIHRvIGRhdGEgLSBzaG91bGQgTk9U IGJlIEhPVCAod2hvbGUgY29sdW1uIGluZGV4ZWQpCitVUERBVEUgaG90X3Rlc3QgU0VUIGRh dGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tifScsICcyJykgV0hFUkUgaWQgPSAxOworU0VMRUNU ICdBZnRlciBtb2RpZnlpbmcgYW55IGZpZWxkICh3aG9sZSBjb2x1bW4gaW5kZXhlZCknIEFT IHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAg ICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgfCBob3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0KKyBBZnRlciBtb2RpZnlpbmcgYW55IGZpZWxkICh3aG9sZSBjb2x1 bW4gaW5kZXhlZCkgfCAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIFBlcmZvcm1hbmNlIGF0IHNjYWxlCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0 ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgorKSBVU0lORyBo ZWFwIFdJVEgoZmlsbGZhY3Rvcj01MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3Rfc3RhdHVz X2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J3N0YXR1cycpKTsKK0NSRUFURSBJTkRFWCBob3Rf dGVzdF9wcmlvcml0eV9pZHggT04gaG90X3Rlc3QoKGRhdGEtPidwcmlvcml0eScpKTsKKy0t IEluc2VydCAxMDAwMCByb3dzCitJTlNFUlQgSU5UTyBob3RfdGVzdAorU0VMRUNUIGksIGpz b25iX2J1aWxkX29iamVjdCgKKyAgICAnc3RhdHVzJywgJ2FjdGl2ZScsCisgICAgJ3ByaW9y aXR5JywgMSwKKyAgICAnY291bnQnLCAwLAorICAgICdkYXRhJywgJ3ZhbHVlXycgfHwgaQor KQorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIGk7CitTRUxFQ1QgJ0Jhc2VsaW5l ICgxMDAwMCByb3dzKScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisgICAgICAgICB0ZXN0ICAgICAgICAgIHwgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIEJhc2VsaW5lICgxMDAwMCByb3dz KSB8ICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGZp ZWxkcyBvbiBhbGwgcm93cyAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tjb3VudH0nLCB0b19qc29uYigoZGF0YS0+ Pidjb3VudCcpOjppbnQgKyAxKSk7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIDEwMDAwIHJv d3MgKG5vbi1pbmRleGVkKScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgICAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICAgIHwgdXBk YXRlcyB8IGhvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIDEwMDAwIHJvd3MgKG5vbi1pbmRl eGVkKSB8ICAgMTAwMDAgfCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IGNvcnJlY3RuZXNz CitTRUxFQ1QgQ09VTlQoKikgQVMgcm93c193aXRoX2NvdW50XzEgRlJPTSBob3RfdGVzdCBX SEVSRSAoZGF0YS0+Pidjb3VudCcpOjppbnQgPSAxOworIHJvd3Nfd2l0aF9jb3VudF8xIAor LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIDEwMDAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBpbmRleGVkIGZpZWxkIG9uIHN1YnNldCAtIHNob3VsZCBOT1QgYmUgSE9UIGZv ciB0aG9zZSByb3dzCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0 YSwgJ3tzdGF0dXN9JywgJyJpbmFjdGl2ZSInKQorV0hFUkUgaWQgPD0gMTA7CitTRUxFQ1Qg J0FmdGVyIHVwZGF0aW5nIDEwIHJvd3MgKGluZGV4ZWQpJyBBUyB0ZXN0LCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAg ICAgICB8IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIDEwIHJvd3MgKGluZGV4ZWQp IHwgICAxMDAxMCB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrCitT RUxFQ1QgQ09VTlQoKikgRlJPTSBob3RfdGVzdCBXSEVSRSBkYXRhLT4+J3N0YXR1cycgPSAn aW5hY3RpdmUnOworIGNvdW50IAorLS0tLS0tLQorICAgIDEwCisoMSByb3cpCisKK1NFTEVD VCBDT1VOVCgqKSBGUk9NIGhvdF90ZXN0IFdIRVJFIGRhdGEtPj4nc3RhdHVzJyA9ICdhY3Rp dmUnOworIGNvdW50IAorLS0tLS0tLQorICA5OTkwCisoMSByb3cpCisKKy0tIE9ubHkgQlJJ TiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUg aG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29s IGludAorKSBVU0lORyBoZWFwIFdJVEgoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMpOworQ1JFQVRF IElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbihi cmluX2NvbCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAxLTAx JywgMTAwLCAxMDAwKTsKKy0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAtIHNob3VsZCBz dGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKK1VQREFURSBob3RfdGVz dCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIHRzLCBicmluX2NvbCAoc3VtbWFyaXppbmctb25s eSknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAg ICAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIHRzLCBicmluX2NvbCAoc3VtbWFy aXppbmctb25seSkgfCAgICAgICAxIHwgICAxCisoMSByb3cpCisKKy0tIFZlcmlmeSBCUklO IGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgdHMgPj0gJzIw MjQtMDEtMDInOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9N IGhvdF90ZXN0IFdIRVJFIGJyaW5fY29sID49IDIwMDA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKK0RS T1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBsYXJnZV90ZXh0IHRleHQKKykgVVNJTkcgaGVhcCBXSVRI KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90 ZXN0KGxhcmdlX3RleHQpOworLS0gSW5zZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+ IDJLQikKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgcmVwZWF0KCd4JywgMzAw MCkpOworLS0gVXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScsIDMwMDApOworU0VM RUNUICdBZnRlciB1cGRhdGluZyBsYXJnZV90ZXh0IChUT0FTVGVkKScgQVMgdGVzdCwgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgICAgICAgICAgICAgICAgdGVzdCAg ICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBBZnRlciB1cGRhdGluZyBsYXJn ZV90ZXh0IChUT0FTVGVkKSB8ICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUGFydGl0 aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0NSRUFURSBUQUJM RSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBhcnRpdGlvbl9r ZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQsCisgICAgUFJJ TUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkgUkFOR0UgKHBh cnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnQxIFBBUlRJVElPTiBP RiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw MCk7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0 X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApOworQ1JF QVRFIElOREVYIGhvdF90ZXN0X3BhcnRpdGlvbmVkX2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRp b25lZChpbmRleGVkX2NvbCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydDJfZGF0YSBP TiBob3RfdGVzdF9wYXJ0MihkYXRhKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlv bmVkIFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CitJTlNFUlQgSU5UTyBob3Rf dGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKKy0t IFVwZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBi ZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICdVUERBVEVE JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIHBhcnRpdGlvbiAxIGRh dGEnIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwor ICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIEFmdGVy IHVwZGF0aW5nIHBhcnRpdGlvbiAxIGRhdGEgfCAgICAgICAxIHwgICAxCisoMSByb3cpCisK Ky0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMiAoaW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIE5P VCBiZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICdVUERB VEVEJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIGxhcmdlX3RleHQg KFRPQVNUZWQpJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFy dDInKTsKKyAgICAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIGxhcmdlX3RleHQgKFRPQVNUZWQpIHwgICAgICAg MSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlv bnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRf Y29sID0gMTAwOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9N IGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOworIGlkIAor LS0tLQorICAyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBpbiBwYXJ0 aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorLS0gUGFydGl0aW9uIDEgcHJldmlvdXNseSBo YWQgMSB1cGRhdGUgYW5kIDEgSE9UIHVwZGF0ZSwgdGhpcyBzaG91bGQKKy0tIGNoYW5nZSB0 aGF0IHRvIDIgdXBkYXRlcyBhbmQgMSBIT1QgdXBkYXRlLgorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg J0FmdGVyIHVwZGF0aW5nIGluZGV4ZWRfY29sJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyAgICAgICAgICAgIHRlc3QgICAgICAgICAgICB8 IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLQorIEFmdGVyIHVwZGF0aW5nIGluZGV4ZWRfY29sIHwgICAgICAgMiB8ICAgMQor KDEgcm93KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQYXJ0aWFsIGluZGV4 ZXMgd2l0aCBjb21wbGV4IHByZWRpY2F0ZXMgb24gSlNPTkIKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgcGFydGlhbCBpbmRleGVzIHdpdGggV0hFUkUgY2xhdXNlcyBv biBKU09OQiBleHByZXNzaW9ucy4KK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkYXRhIGpzb25i CispIFVTSU5HIGhlYXAgV0lUSChmaWxsZmFjdG9yID0gNTApOworLS0gUGFydGlhbCBpbmRl eDogb25seSBpbmRleCBzdGF0dXMgd2hlbiBwcmlvcml0eSA+IDUKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9wYXJ0aWFsX2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J3N0YXR1cycpKQorICAg IFdIRVJFIChkYXRhLT4+J3ByaW9yaXR5Jyk6OmludCA+IDU7CitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKAorICAgIDEsCisgICAgJ3sic3RhdHVzIjogImFjdGl2ZSIsICJwcmlv cml0eSI6IDEwLCAiY291bnQiOiAwfSc6Ompzb25iCispOworSU5TRVJUIElOVE8gaG90X3Rl c3QgVkFMVUVTICgKKyAgICAyLAorICAgICd7InN0YXR1cyI6ICJhY3RpdmUiLCAicHJpb3Jp dHkiOiAzLCAiY291bnQiOiAwfSc6Ompzb25iCispOworU0VMRUNUICdQYXJ0aWFsIEluZGV4 IFRlc3Q6IEJhc2VsaW5lJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyAgICAgICAgICAgICB0ZXN0ICAgICAgICAgICAgIHwgdXBkYXRlcyB8IGhvdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBQYXJ0 aWFsIEluZGV4IFRlc3Q6IEJhc2VsaW5lIHwgICAgICAgMCB8ICAgMAorKDEgcm93KQorCist LSBVcGRhdGUgbm9uLWluZGV4ZWQgcGF0aCBvbiByb3cgaW5zaWRlIHByZWRpY2F0ZSAocHJp b3JpdHk9MTAgPiA1KQorLS0gU2hvdWxkIE5PVCBiZSBIT1QgZGVzcGl0ZSB7Y291bnR9IGlz IG5vdCBpbmRleGVkCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0 YSwgJ3tjb3VudH0nLCAnMScpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAnUGFydGlhbCBJbmRl eCBUZXN0OiBjb3VudCB1cGRhdGUsIGluc2lkZSBwcmVkaWNhdGUnIEFTIHRlc3QsICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworICAgICAgICAgICAgICAgICAgICAgICAg dGVzdCAgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tCisgUGFydGlhbCBJbmRleCBUZXN0OiBjb3VudCB1cGRhdGUsIGluc2lkZSBwcmVk aWNhdGUgfCAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhl ZCBwYXRoIG9uIHJvdyBvdXRzaWRlIHByZWRpY2F0ZSAocHJpb3JpdHk9MyA8PSA1KQorLS0g U2hvdWxkIE5PVCBiZSBIT1QgZGlzcGl0ZSB7Y291bnR9IGlzIG5vdCBpbmRleGVkCitVUERB VEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tjb3VudH0nLCAnMScp IFdIRVJFIGlkID0gMjsKK1NFTEVDVCAnUGFydGlhbCBJbmRleCBUZXN0OiBjb3VudCB1cGRh dGUsIG91dHNpZGUgcHJlZGljYXRlJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAg ICAgICAgICAgICAgfCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tCisgUGFydGlh bCBJbmRleCBUZXN0OiBjb3VudCB1cGRhdGUsIG91dHNpZGUgcHJlZGljYXRlIHwgICAgICAg MiB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBwYXRoIG9uIHJvdyBpbnNp ZGUgcHJlZGljYXRlIChwcmlvcml0eT0xMCA+IDUpCistLSBTaG91bGQgTk9UIGJlIEhPVCBp bmRleGVkIHBvcnRpb24gaXMgdXBkYXRlZAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g anNvbmJfc2V0KGRhdGEsICd7c3RhdHVzfScsICciaW5hY3RpdmUiJykgV0hFUkUgaWQgPSAx OworU0VMRUNUICdQYXJ0aWFsIEluZGV4IFRlc3Q6IHN0YXR1cyB1cGRhdGUsIGluc2lkZSBw cmVkaWNhdGUnIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0KKyBQYXJ0aWFsIEluZGV4IFRlc3Q6 IHN0YXR1cyB1cGRhdGUsIGluc2lkZSBwcmVkaWNhdGUgfCAgICAgICAzIHwgICAwCisoMSBy b3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIHBhdGggb24gcm93IG91dHNpZGUgcHJlZGljYXRl IChwcmlvcml0eT0zIDw9IDUpCistLSBQb3N0Z3JlU1FMIG1ha2VzIGEgY29uc2VydmF0aXZl IGNob2ljZSBhbmQgdHJlYXRzIGl0IGFzIG5vbi1IT1QgYmVjYXVzZSB0aGUKKy0tIGluZGV4 ZWQgY29sdW1uIGNoYW5nZWQsIGV2ZW4gdGhvdWdoIHRoZSBiZWZvcmUvYWZ0ZXIgcm93cyBh cmUgb3V0c2lkZSB0aGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBq c29uYl9zZXQoZGF0YSwgJ3tzdGF0dXN9JywgJyJpbmFjdGl2ZSInKSBXSEVSRSBpZCA9IDI7 CitTRUxFQ1QgJ1BhcnRpYWwgSW5kZXggVGVzdDogc3RhdHVzIHVwZGF0ZSwgb3V0c2lkZSBw cmVkaWNhdGUnIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgICAgICAgICAgICAgICAgICAgICAgICAg fCB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLQorIFBhcnRpYWwgSW5kZXggVGVz dDogc3RhdHVzIHVwZGF0ZSwgb3V0c2lkZSBwcmVkaWNhdGUgfCAgICAgICA0IHwgICAwCiso MSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3Rl c3QgV0hFUkUgZGF0YS0+J3N0YXR1cycgPSAnImluYWN0aXZlIic6Ompzb25iIEFORCAoZGF0 YS0+Pidwcmlvcml0eScpOjppbnQgPiA1OworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90 ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FE RTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsK K0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOwor RFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKK0RST1AgRVhU RU5TSU9OIHBhZ2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5k ZXggNTQ5ZTliMmQ3YmUuLmUwNjI0N2VmN2VhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKQEAgLTEzNyw2ICsxMzcsMTEgQEAgdGVzdDogZXZlbnRfdHJpZ2dlcl9sb2dp bgogIyB0aGlzIHRlc3QgYWxzbyB1c2VzIGV2ZW50IHRyaWdnZXJzLCBzbyBsaWtld2lzZSBy dW4gaXQgYnkgaXRzZWxmCiB0ZXN0OiBmYXN0X2RlZmF1bHQKIAorIyAtLS0tLS0tLS0tCisj IEhPVCB1cGRhdGVzIHRlc3RzCisjIC0tLS0tLS0tLS0KK3Rlc3Q6IGhvdF91cGRhdGVzCisK ICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhl IHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBt YXkgdXNlLgogdGVzdDogdGFibGVzcGFjZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvaG90X3VwZGF0ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0 ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zNGRhNDU1 MmQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRh dGVzLnNxbApAQCAtMCwwICsxLDY5MiBAQAorLS0gTG9hZCByZXF1aXJlZCBleHRlbnNpb25z CitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7CisKKy0tIEZ1 bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICgKKyAg ICB1cGRhdGVzIEJJR0lOVCwKKyAgICBob3QgQklHSU5UCispIEFTICQkCitERUNMQVJFCisg IHJlbF9vaWQgb2lkOworQkVHSU4KKyAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6 Om9pZDsKKworICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2Nh bCBzdGF0cworICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Np b24gdGVzdHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQorICAtLSBOb3RlOiBJbiBleHBsaWNp dCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5 CisgIC0tIGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1j b3VudC4gRm9yIGV4cGxpY2l0CisgIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCisgIHVwZGF0 ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp ICsKKyAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgQ09BTEVTQ0UocGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworCisgIFJFVFVS TiBORVhUOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworLS0gQ2hlY2sgaWYgYSB0 dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1l IHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2NoYWluKHJlbF9u YW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBBUyAkJAorREVD TEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOworQkVHSU4KKyAg YmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisKKyAg LS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSB0aGF0IHBv aW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICBTRUxF Q1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRf cmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBfZmxhZ3MgPSAx CisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9jdGlkID0gdGFy Z2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwg bHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AKKyAgICBSRVRV Uk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGluZyBmcm9t IGEgZ2l2ZW4gdHVwbGUKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hvdF9j aGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKK1JFVFVSTlMgVEFCTEUoY2hh aW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRpZCwg Y2hhaW5fZW5kIGJvb2xlYW4pIEFTCiskJAorI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9jb2x1 bW4KK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKKyAgbGluZV9wdHIgaW50OworICBjdXJy ZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIG5leHRfY3RpZCB0aWQ7CisgIHBvc2l0 aW9uIGludCA6PSAwOworICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICBwYWdlX2l0 ZW0gcmVjb3JkOworICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOworICBm bGFnc19uYW1lIHRleHQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRl eHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChvbGQg dHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAorICBMT09QCisgICAg Y3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdl X2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9 IHRydWU7CisgICAgRVhJVDsKKyAgRU5EIExPT1A7CisKKyAgLS0gSWYgbm8gcHJlZGVjZXNz b3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKKyAgSUYgTk9UIGZvdW5kX3By ZWRlY2Vzc29yIFRIRU4KKyAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKKyAgRU5E IElGOworCisgIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAorICBXSElMRSBwb3NpdGlv biA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlk Ojp0ZXh0Ojpwb2ludClbMV06OmludDsKKworICAgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAg IFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRl bXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgV0hFUkUgbHAg PSBsaW5lX3B0cgorICAgIExPT1AKKyAgICAgIC0tIE1hcCBscF9mbGFncyB0byBuYW1lcwor ICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICBX SEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAo MSknCisgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAgIFdIRU4g MyBUSEVOICdkZWFkICgzKScKKyAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0 ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICBFTkQ7CisKKyAgICAgIFJFVFVSTiBR VUVSWSBTRUxFQ1QKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGN1cnJlbnRfY3RpZCwK KyAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAg ICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3Vy cmVudF9jdGlkKTo6Ym9vbGVhbgorICAgICAgOworCisgICAgICBJRiBwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisg ICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJRjsKKworICAgICAgbmV4dF9jdGlkIDo9IHBh Z2VfaXRlbS50X2N0aWQ7CisKKyAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVsw XTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJ RjsKKworICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAgIHBvc2l0aW9u IDo9IHBvc2l0aW9uICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIElGIHBvc2l0aW9uID0g MCBUSEVOCisgICAgICBSRVRVUk47CisgICAgRU5EIElGOworICBFTkQgTE9PUDsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0tIEJhc2ljIEhPVCB1cGRhdGUgZnVuY3Rpb25h bGl0eQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0ZXh0CispIFVT SU5HIGhlYXAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90 ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworCistLSBHZXQgYmFzZWxpbmUKK1NF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gU2hvdWxkIGJl IEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKK1VQREFU RSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicg V0hFUkUgaWQgPSAyOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAn dXBkYXRlZDMnIFdIRVJFIGlkID0gMzsKKworLS0gVmVyaWZ5IEhPVCB1cGRhdGVzIG9jY3Vy cmVkCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIER1 bXAgdGhlIEhPVCBjaGFpbiBmb3IgdHVwbGUgd2l0aCBpZCA9PSAxCitXSVRIIGN1cnJlbnRf dHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQor KQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5j dGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9ob3RfY2hh aW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLAor TEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KTsKKworLS0gVHJpZ2dlciBvcHRpbWlzdGljIGhlYXAgcGFnZSBwcnVuaW5nCitTRUxFQ1Qg Y3RpZCwgKiBGUk9NIGhvdF90ZXN0OworCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYWZ0ZXIg cHJ1bmUKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90 X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rl c3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRp b24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitG Uk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpOworCitTRVQgU0VTU0lPTiBlbmFibGVfc2Vxc2NhbiA9 IE9GRjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT0ZGOworCistLSBWZXJp ZnkgaW5kZXhlcyBzdGlsbCB3b3JrCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwg aW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK1NF TEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9 IDEwMDsKKworLS0gVmFjdXVtIHRoZSByZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4g dG8gY29sbGFwc2UKK1ZBQ1VVTSBob3RfdGVzdDsKKworLS0gU2hvdyB0aGF0IHRoZXJlIGlz IG5vIGNoYWluIGFmdGVyIHZhY3V1bQorV0lUSCBjdXJyZW50X3R1cGxlIEFTICgKKyAgU0VM RUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICBoYXNf aG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWlu LAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQsCisgIGxwX2Zs YWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwgcHJpbnRfaG90 X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkIChuZXcg dmFsdWUgZmluZGFibGUpCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhl ZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKK1NFTEVDVCBp ZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsK KworLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAx MDA7CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsK KworU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNjYW4gPSBPTjsKK1NFVCBTRVNTSU9OIGVuYWJs ZV9iaXRtYXBzY2FuID0gT047CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5OiB1cGRhdGlu ZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0ZXMKK0RST1Ag VEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9j IGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFVTSU5HIGhlYXAgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgYWxsIHRocmVlIGluZGV4ZXMgc3Rp bGwgd29yayBjb3JyZWN0bHkKK1NFTEVDVCBpZCwgY29sX2EgRlJPTSBob3RfdGVzdCBXSEVS RSBjb2xfYSA9IDE1OyAgLS0gdXBkYXRlZCBpbmRleAorU0VMRUNUIGlkLCBjb2xfYiBGUk9N IGhvdF90ZXN0IFdIRVJFIGNvbF9iID0gMjA7ICAtLSB1bmNoYW5nZWQgaW5kZXgKK1NFTEVD VCBpZCwgY29sX2MgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYyA9IDMwOyAgLS0gdW5jaGFu Z2VkIGluZGV4CisKKy0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBz aG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0 ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBW ZXJpZnkgYWxsIGluZGV4ZXMgc3RpbGwgd29yaworU0VMRUNUIGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgY29sX2EgPSAxNSBBTkQgY29sX2IgPSAyMCBBTkQgY29sX2MgPSAzMDsKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworLS0gUGFy dGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAnYWN0aXZlJworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZl JywgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2 ZScsICdkYXRhMicpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVsZXRl ZCcsICdkYXRhMycpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3Rp dmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJl IEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVw ZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2luYWN0aXZlJyByb3cgKG91dHNpZGUgcHJl ZGljYXRlKQorLS0gU2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAnaW5hY3RpdmUnIHRvICdk ZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKKy0tIFBvc3RncmVTUUwgaXMgY29u c2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBwcmVkaWNhdGUgY2hlY2sK Ky0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3RoIHZhbHVlcyBhcmUgb3V0 c2lkZSBwcmVkaWNhdGUKK1VQREFURSBob3RfdGVzdCBTRVQgc3RhdHVzID0gJ2RlbGV0ZWQn IFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCitT RUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUn OworCistLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1 bW5zCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHMgdGltZXN0YW1wLAorICAgIHZhbHVlIGlu dCwKKyAgICBicmluX2NvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JF QVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lO RyBicmluKGJyaW5fY29sKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAn MjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CisKKy0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1u cyAtIHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKK1VQ REFURSBob3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisKKy0tIFZlcmlmeSBCUklOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90X3Rl c3QgV0hFUkUgdHMgPj0gJzIwMjQtMDEtMDInOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgYnJpbl9jb2wgPj0gMjAwMDsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt biAtIHNob3VsZCBhbHNvIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIw MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlr ZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdW5pcXVlX2NvbCBpbnQg VU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2RhdGExJyk7CitJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2RhdGEyJyk7CisKKy0tIFVwZGF0ZSBk YXRhIChub24taW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VU IGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisKKy0tIFZlcmlmeSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAor U0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7 CisKKy0tIFRoaXMgc2hvdWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCitVUERBVEUgaG90 X3Rlc3QgU0VUIHVuaXF1ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworCistLSBNdWx0aS1j b2x1bW4gaW5kZXg6IGFueSBjb2x1bW4gY2hhbmdlID0gbm9uLUhPVAorRFJPUCBUQUJMRSBo b3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgY29sX2MgaW50LAor ICAgIGNvbF9kIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5E RVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitDUkVBVEUg SU5ERVggaG90X3Rlc3RfYWJfaW5jX2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYikg SU5DTFVERShjb2xfYyk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAs IDIwLCAzMCwgNDApOworCistLSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1u IGluZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9h ID0gMTU7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5P VCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIGNvbF9jIChub3Qg aW5kZXhlZCwgYnV0IGluY2x1ZGVkKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90 X3Rlc3QgU0VUIGNvbF9jID0gMzU7CisKKy0tIFZlcmlmeSBtdWx0aS1jb2x1bW4gaW5kZXgt b25seSBzY2FuIGZvciBpbmNsdWRlZCBjb2x1bW5zIHdvcmtzCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBjb2xfYyBGUk9NIGhvdF90ZXN0IFdIRVJFIGNvbF9hID0gMTUgQU5EIGNv bF9iID0gMjU7CitTRUxFQ1QgY29sX2MgRlJPTSBob3RfdGVzdCBXSEVSRSBjb2xfYSA9IDE1 IEFORCBjb2xfYiA9IDI1OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFeHBy ZXNzaW9uIGluZGV4ZXMgd2l0aCBKU09OQgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgVVNJTkcgaGVhcCBXSVRIKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEluZGV4ZXMgb24gc3BlY2lmaWMgSlNPTkIgcGF0aHMK K0NSRUFURSBJTkRFWCBob3RfdGVzdF9zdGF0dXNfaWR4IE9OIGhvdF90ZXN0KChkYXRhLT4n c3RhdHVzJykpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3VzZXJfaWRfaWR4IE9OIGhvdF90 ZXN0KChkYXRhLT4ndXNlcictPidpZCcpKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFM VUVTICgKKyAgICAxLAorICAgICd7InN0YXR1cyI6ICJhY3RpdmUiLCAidXNlciI6IHsiaWQi OiAxMjMsICJuYW1lIjogIkFsaWNlIn0sICJjb3VudCI6IDB9Jzo6anNvbmIKKyk7CisKKy0t IEJhc2VsaW5lCitTRUxFQ1QgJ0Jhc2VsaW5lJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIHBhdGgge2NvdW50 fSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29u Yl9zZXQoZGF0YSwgJ3tjb3VudH0nLCAnMScpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAnQWZ0 ZXIgdXBkYXRpbmcgY291bnQgKG5vbi1pbmRleGVkKScgQVMgdGVzdCwgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBkaWZmZXJlbnQgbm9uLWluZGV4 ZWQgcGF0aCB7dXNlcixuYW1lfSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rl c3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3t1c2VyLG5hbWV9JywgJyJCb2IiJykg V0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyB1c2VyLm5hbWUgKG5vbi1p bmRleGVkKScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisK Ky0tIFVwZGF0ZSBpbmRleGVkIHBhdGgge3N0YXR1c30gLSBzaG91bGQgTk9UIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7c3RhdHVzfScs ICciaW5hY3RpdmUiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyBz dGF0dXMgKGluZGV4ZWQpJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKworLS0gVXBkYXRlIGluZGV4ZWQgcGF0aCB7dXNlcixpZH0gLSBzaG91bGQgTk9U IGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7 dXNlcixpZH0nLCAnNDU2JykgV0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGlu ZyB1c2VyLmlkIChpbmRleGVkKScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBpbmRleGVzIHN0aWxsIHdvcmsgY29ycmVjdGx5CitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBkYXRhLT4nc3RhdHVzJyA9ICciaW5hY3Rp dmUiJzo6anNvbmI7CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBkYXRhLT4ndXNl cictPidpZCcgPSAnNDU2Jzo6anNvbmI7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIE5lc3RlZCBwYXRocyBhbmQgcGF0aCBpbnRlcnNlY3Rpb24KKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkYXRhIGpzb25iCispIFVTSU5H IGhlYXAgV0lUSChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3Rf ZGVlcF9pZHggT04gaG90X3Rlc3QoKGRhdGEtPidhJy0+J2InLT4nYycpKTsKKworSU5TRVJU IElOVE8gaG90X3Rlc3QgVkFMVUVTICgKKyAgICAxLAorICAgICd7ImEiOiB7ImIiOiB7ImMi OiAiaW5kZXhlZCIsICJkIjogIm5vdC1pbmRleGVkIn19LCAieCI6ICJvdGhlciJ9Jzo6anNv bmIKKyk7CisKK1NFTEVDVCAnQmFzZWxpbmUnIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgc2libGluZyBvZiBpbmRleGVkIHBhdGgg e2EsYixkfSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEg PSBqc29uYl9zZXQoZGF0YSwgJ3thLGIsZH0nLCAnInVwZGF0ZWQiJykgV0hFUkUgaWQgPSAx OworU0VMRUNUICdBZnRlciB1cGRhdGluZyBhLmIuZCAoc2libGluZywgbm9uLWluZGV4ZWQp JyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBk YXRlIHVucmVsYXRlZCBwYXRoIHt4fSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90 X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3t4fScsICcibW9kaWZpZWQiJykg V0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyB4ICh1bnJlbGF0ZWQgcGF0 aCknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBV cGRhdGUgcGFyZW50IG9mIGluZGV4ZWQgcGF0aCB7YSxifSAtIHNob3VsZCBOT1QgYmUgSE9U IChhZmZlY3RzIGNoaWxkKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0 KGRhdGEsICd7YSxifScsICd7ImMiOiAibmV3IiwgImQiOiAiZGF0YSJ9JykgV0hFUkUgaWQg PSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyBhLmIgKHBhcmVudCBvZiBpbmRleGVkKScg QVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIE11bHRpcGxlIEpTT05CIG11dGF0aW9uIGZ1bmN0aW9u cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NS RUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRh dGEganNvbmIKKykgVVNJTkcgaGVhcCBXSVRIKGZpbGxmYWN0b3IgPSA1MCk7CisKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9rZWVwX2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J2tlZXAnKSk7 CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoCisgICAgMSwKKyAgICAneyJrZWVw IjogImltcG9ydGFudCIsICJyZW1vdmUiOiAidW5pbXBvcnRhbnQiLCAiZXh0cmEiOiAiZGF0 YSJ9Jzo6anNvbmIKKyk7CisKK1NFTEVDVCAnQmFzZWxpbmUnIEFTIHRlc3QsICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBqc29uYl9kZWxldGUgb24gbm9uLWlu ZGV4ZWQga2V5IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0 YSA9IGRhdGEgLSAncmVtb3ZlJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIGRlbGV0 aW5nIG5vbi1pbmRleGVkIGtleScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CisKKy0tIGpzb25iX3NldCBvbiBub24taW5kZXhlZCBrZXkgLSBzaG91bGQg Tk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEs ICd7ZXh0cmF9JywgJyJtb2RpZmllZCInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVy IG1vZGlmeWluZyBub24taW5kZXhlZCBrZXknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworCistLSBqc29uYl9kZWxldGUgb24gaW5kZXhlZCBrZXkgLSBz aG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdr ZWVwJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIGRlbGV0aW5nIGluZGV4ZWQga2V5 JyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQXJyYXkgb3BlcmF0aW9ucworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3Rf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgVVNJ TkcgaGVhcCBXSVRIKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIEluZGV4IG9uIGFycmF5IGVs ZW1lbnQKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90YWdzX2lkeCBPTiBob3RfdGVzdCgoZGF0 YS0+J3RhZ3MnLT4wKSk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoCisgICAg MSwKKyAgICAneyJ0YWdzIjogWyJpbmRleGVkIiwgInNlY29uZCIsICJ0aGlyZCJdLCAib3Ro ZXIiOiAiZGF0YSJ9Jzo6anNvbmIKKyk7CisKK1NFTEVDVCAnQmFzZWxpbmUnIEFTIHRlc3Qs ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgYXJyYXkgZWxlbWVudCAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rl c3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3t0YWdzLDF9JywgJyJtb2RpZmllZCIn KSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0aW5nIHRhZ3NbMV0nIEFTIHRl c3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgaW5k ZXhlZCBhcnJheSBlbGVtZW50IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne3RhZ3MsMH0nLCAnImNoYW5nZWQiJykg V0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyB0YWdzWzBdIChpbmRleGVk KScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFdob2xlIGNvbHVtbiBpbmRleAorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykg VVNJTkcgaGVhcCBXSVRIKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIEluZGV4IG9uIGVudGly ZSBKU09OQiBjb2x1bW4sIGFuZCBhIHBhdGggZXh0cmFjdGlvbgorQ1JFQVRFIElOREVYIGhv dF90ZXN0X3dob2xlX2lkeCBPTiBob3RfdGVzdChkYXRhKTsKK0NSRUFURSBJTkRFWCBob3Rf dGVzdF90YWdzX2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J2EnKSk7CisKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMSwgJ3siYSI6IDEsICJiIjogMX0nOjpqc29uYik7CisKK1NF TEVDVCAnQmFzZWxpbmUnIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworCistLSBBbnkgbW9kaWZpY2F0aW9uIHRvIGRhdGEgLSBzaG91bGQgTk9UIGJlIEhP VCAod2hvbGUgY29sdW1uIGluZGV4ZWQpCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBq c29uYl9zZXQoZGF0YSwgJ3tifScsICcyJykgV0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRl ciBtb2RpZnlpbmcgYW55IGZpZWxkICh3aG9sZSBjb2x1bW4gaW5kZXhlZCknIEFTIHRlc3Qs ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBQZXJmb3JtYW5jZSBhdCBzY2FsZQorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgVVNJTkcgaGVh cCBXSVRIKGZpbGxmYWN0b3I9NTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3Rfc3RhdHVz X2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J3N0YXR1cycpKTsKK0NSRUFURSBJTkRFWCBob3Rf dGVzdF9wcmlvcml0eV9pZHggT04gaG90X3Rlc3QoKGRhdGEtPidwcmlvcml0eScpKTsKKwor LS0gSW5zZXJ0IDEwMDAwIHJvd3MKK0lOU0VSVCBJTlRPIGhvdF90ZXN0CitTRUxFQ1QgaSwg anNvbmJfYnVpbGRfb2JqZWN0KAorICAgICdzdGF0dXMnLCAnYWN0aXZlJywKKyAgICAncHJp b3JpdHknLCAxLAorICAgICdjb3VudCcsIDAsCisgICAgJ2RhdGEnLCAndmFsdWVfJyB8fCBp CispCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMCkgaTsKKworU0VMRUNUICdCYXNl bGluZSAoMTAwMDAgcm93cyknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgZmllbGRzIG9uIGFsbCByb3dzIC0g c2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3Nl dChkYXRhLCAne2NvdW50fScsIHRvX2pzb25iKChkYXRhLT4+J2NvdW50Jyk6OmludCArIDEp KTsKKworU0VMRUNUICdBZnRlciB1cGRhdGluZyAxMDAwMCByb3dzIChub24taW5kZXhlZCkn IEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJp ZnkgY29ycmVjdG5lc3MKK1NFTEVDVCBDT1VOVCgqKSBBUyByb3dzX3dpdGhfY291bnRfMSBG Uk9NIGhvdF90ZXN0IFdIRVJFIChkYXRhLT4+J2NvdW50Jyk6OmludCA9IDE7CisKKy0tIFVw ZGF0ZSBpbmRleGVkIGZpZWxkIG9uIHN1YnNldCAtIHNob3VsZCBOT1QgYmUgSE9UIGZvciB0 aG9zZSByb3dzCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwg J3tzdGF0dXN9JywgJyJpbmFjdGl2ZSInKQorV0hFUkUgaWQgPD0gMTA7CisKK1NFTEVDVCAn QWZ0ZXIgdXBkYXRpbmcgMTAgcm93cyAoaW5kZXhlZCknIEFTIHRlc3QsICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrCitTRUxF Q1QgQ09VTlQoKikgRlJPTSBob3RfdGVzdCBXSEVSRSBkYXRhLT4+J3N0YXR1cycgPSAnaW5h Y3RpdmUnOworU0VMRUNUIENPVU5UKCopIEZST00gaG90X3Rlc3QgV0hFUkUgZGF0YS0+Pidz dGF0dXMnID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4 ZXMgb24gbm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3Rh bXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBVU0lORyBoZWFwIFdJ VEgoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4g T04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJp bl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKKworSU5TRVJU IElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CisK Ky0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAtIHNob3VsZCBzdGlsbCBiZSBIT1QgKG9u bHkgc3VtbWFyaXppbmcgaW5kZXhlcykKK1VQREFURSBob3RfdGVzdCBTRVQgdHMgPSAnMjAy NC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVy IHVwZGF0aW5nIHRzLCBicmluX2NvbCAoc3VtbWFyaXppbmctb25seSknIEFTIHRlc3QsICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgQlJJTiBpbmRl eGVzIHdvcmsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIHRzID49ICcyMDI0LTAx LTAyJzsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGJyaW5fY29sID49IDIwMDA7 CisKKy0tIFRPQVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgbGFyZ2VfdGV4dCB0ZXh0CispIFVTSU5HIGhlYXAgV0lUSChmaWxs ZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0 KGxhcmdlX3RleHQpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4g MktCKQorSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCByZXBlYXQoJ3gnLCAzMDAw KSk7CisKKy0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitV UERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQoJ3knLCAzMDAwKTsKK1NF TEVDVCAnQWZ0ZXIgdXBkYXRpbmcgbGFyZ2VfdGV4dCAoVE9BU1RlZCknIEFTIHRlc3QsICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBQYXJ0aXRpb25lZCB0YWJs ZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0 X3BhcnRpdGlvbmVkICgKKyAgICBpZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisg ICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAo aWQsIHBhcnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tl eSk7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0MSBQQVJUSVRJT04gT0YgaG90X3Rl c3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMDApOworQ1JF QVRFIFRBQkxFIGhvdF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRp b25lZAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsKKworQ1JFQVRFIElO REVYIGhvdF90ZXN0X3BhcnRpdGlvbmVkX2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRpb25lZChp bmRleGVkX2NvbCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydDJfZGF0YSBPTiBob3Rf dGVzdF9wYXJ0MihkYXRhKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQg VkFMVUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworCistLSBV cGRhdGUgaW4gcGFydGl0aW9uIDEgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUg SE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAnVVBEQVRFRCcg V0hFUkUgaWQgPSAxOworU0VMRUNUICdBZnRlciB1cGRhdGluZyBwYXJ0aXRpb24gMSBkYXRh JyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKwor LS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChpbmRleGVkIGNvbHVtbikgLSBzaG91bGQgTk9U IGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ1VQREFU RUQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAnQWZ0ZXIgdXBkYXRpbmcgbGFyZ2VfdGV4dCAo VE9BU1RlZCknIEFTIHRlc3QsICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0 MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlvbnMKK1NFTEVDVCBp ZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwor U0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wg PSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91 bGQgTk9UIGJlIEhPVAorLS0gUGFydGl0aW9uIDEgcHJldmlvdXNseSBoYWQgMSB1cGRhdGUg YW5kIDEgSE9UIHVwZGF0ZSwgdGhpcyBzaG91bGQKKy0tIGNoYW5nZSB0aGF0IHRvIDIgdXBk YXRlcyBhbmQgMSBIT1QgdXBkYXRlLgorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNF VCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgJ0FmdGVyIHVwZGF0 aW5nIGluZGV4ZWRfY29sJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3RfcGFydDEnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGFydGlhbCBp bmRleGVzIHdpdGggY29tcGxleCBwcmVkaWNhdGVzIG9uIEpTT05CCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBUZXN0IHBhcnRpYWwgaW5kZXhlcyB3aXRoIFdIRVJFIGNsYXVz ZXMgb24gSlNPTkIgZXhwcmVzc2lvbnMuCitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRF IFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBq c29uYgorKSBVU0lORyBoZWFwIFdJVEgoZmlsbGZhY3RvciA9IDUwKTsKKworLS0gUGFydGlh bCBpbmRleDogb25seSBpbmRleCBzdGF0dXMgd2hlbiBwcmlvcml0eSA+IDUKK0NSRUFURSBJ TkRFWCBob3RfdGVzdF9wYXJ0aWFsX2lkeCBPTiBob3RfdGVzdCgoZGF0YS0+J3N0YXR1cycp KQorICAgIFdIRVJFIChkYXRhLT4+J3ByaW9yaXR5Jyk6OmludCA+IDU7CisKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoCisgICAgMSwKKyAgICAneyJzdGF0dXMiOiAiYWN0aXZl IiwgInByaW9yaXR5IjogMTAsICJjb3VudCI6IDB9Jzo6anNvbmIKKyk7CitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKAorICAgIDIsCisgICAgJ3sic3RhdHVzIjogImFjdGl2ZSIs ICJwcmlvcml0eSI6IDMsICJjb3VudCI6IDB9Jzo6anNvbmIKKyk7CisKK1NFTEVDVCAnUGFy dGlhbCBJbmRleCBUZXN0OiBCYXNlbGluZScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBwYXRoIG9uIHJvdyBp bnNpZGUgcHJlZGljYXRlIChwcmlvcml0eT0xMCA+IDUpCistLSBTaG91bGQgTk9UIGJlIEhP VCBkZXNwaXRlIHtjb3VudH0gaXMgbm90IGluZGV4ZWQKK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2NvdW50fScsICcxJykgV0hFUkUgaWQgPSAxOwor U0VMRUNUICdQYXJ0aWFsIEluZGV4IFRlc3Q6IGNvdW50IHVwZGF0ZSwgaW5zaWRlIHByZWRp Y2F0ZScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBub24taW5kZXhlZCBwYXRoIG9uIHJvdyBvdXRzaWRlIHByZWRpY2F0ZSAocHJp b3JpdHk9MyA8PSA1KQorLS0gU2hvdWxkIE5PVCBiZSBIT1QgZGlzcGl0ZSB7Y291bnR9IGlz IG5vdCBpbmRleGVkCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0 YSwgJ3tjb3VudH0nLCAnMScpIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAnUGFydGlhbCBJbmRl eCBUZXN0OiBjb3VudCB1cGRhdGUsIG91dHNpZGUgcHJlZGljYXRlJyBBUyB0ZXN0LCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIGluZGV4ZWQgcGF0 aCBvbiByb3cgaW5zaWRlIHByZWRpY2F0ZSAocHJpb3JpdHk9MTAgPiA1KQorLS0gU2hvdWxk IE5PVCBiZSBIT1QgaW5kZXhlZCBwb3J0aW9uIGlzIHVwZGF0ZWQKK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne3N0YXR1c30nLCAnImluYWN0aXZlIicp IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAnUGFydGlhbCBJbmRleCBUZXN0OiBzdGF0dXMgdXBk YXRlLCBpbnNpZGUgcHJlZGljYXRlJyBBUyB0ZXN0LCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIGluZGV4ZWQgcGF0aCBvbiByb3cgb3V0c2lkZSBw cmVkaWNhdGUgKHByaW9yaXR5PTMgPD0gNSkKKy0tIFBvc3RncmVTUUwgbWFrZXMgYSBjb25z ZXJ2YXRpdmUgY2hvaWNlIGFuZCB0cmVhdHMgaXQgYXMgbm9uLUhPVCBiZWNhdXNlIHRoZQor LS0gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCwgZXZlbiB0aG91Z2ggdGhlIGJlZm9yZS9hZnRl ciByb3dzIGFyZSBvdXRzaWRlIHRoZSBwcmVkaWNhdGUKK1VQREFURSBob3RfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne3N0YXR1c30nLCAnImluYWN0aXZlIicpIFdIRVJF IGlkID0gMjsKK1NFTEVDVCAnUGFydGlhbCBJbmRleCBUZXN0OiBzdGF0dXMgdXBkYXRlLCBv dXRzaWRlIHByZWRpY2F0ZScgQVMgdGVzdCwgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisKKy0tIFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3Rl c3QgV0hFUkUgZGF0YS0+J3N0YXR1cycgPSAnImluYWN0aXZlIic6Ompzb25iIEFORCAoZGF0 YS0+Pidwcmlvcml0eScpOjppbnQgPiA1OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7Ci0tIAoyLjUx LjIKCg== --a8a718ca00664839aa14577324b2a80c Content-Disposition: attachment; filename*0="v35-0002-Identify-and-track-columns-modified-by-heap_modi.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v35-0002-Identify-and-track-columns-modified-by-heap=5Fmodi.pa?= =?UTF-8?Q?tch?=" Content-Transfer-Encoding: base64 RnJvbSBmZjI2MDg0MGVhZGZkMWNjNDE1MjhmYzUwMzQzNWMwNGJlNDIxMDgzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjM1IDIv M10gSWRlbnRpZnkgYW5kIHRyYWNrIGNvbHVtbnMgbW9kaWZpZWQgYnkKIGhlYXBfbW9kaWZp eV90dXBsZSgpIG9uIHVwZGF0ZQoKRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkgbWlzc2VzIGF0 dHJpYnV0ZXMgbW9kaWZpZWQgdXNpbmcKaGVhcF9tb2RpZnlfdHVwbGUoKSB0aGF0IGFyZSBu b3QgZXhwbGljdGx5IFNFVCBpbiB0aGUgVVBEQVRFIG9yIGJ5CnRyaWdnZXJzLiAgVGhpcyBo YXBwZW5zIGluIG9uZSB0ZXN0ICh0c2VhcmNoLnNxbCkgd2hlbiB0aGUKdHN2ZWN0b3JfdXBk YXRlX3RyaWdnZXIoKSBpcyBpbnZva2VkIGFuZCBtb2RpZmllcyBhbiBpbmRleGVkIGF0dHJp YnV0ZQp0aGF0IGlzbid0IHJlZmVyZW5jZWQgaW4gYW55IFNRTC4KClRoZSBuZXQgaXMgdGhh dCB0aGUgZnVuY3Rpb25zIGxpa2UgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKCkgaGF2ZSB0 bwpzY2FuIGFsbCBpbmRleGVkIGF0dHJpYnV0ZXMgZm9yIGNoYW5nZXMgcmF0aGVyIHRoYW4g YmVpbmcgYWJsZSB0byBmaXJzdApyZWR1Y2UgdGhlIGluZGV4ZWQgc2V0IGJ5IGludGVyc2Vj dGluZyBpdCB3aXRoIHRoZSBzZXQgb2YgYXR0cmlidXRlcwprbm93biB0byBiZSBwb3RlbnRp YWxseSB1cGRhdGVkLgoKV2hpbGUgdGhpcyBpc24ndCBzbyBiYWQsIGl0IGlzIGFuIG92ZXJz aWdodCBzaG91bGQgc29tZW9uZSBpbiB0aGUgZnV0dXJlCmJ1aWxkIHNvbWUgc2VjdXJpdHkg cmVsYXRlZCBmZWF0dXJlIHVzaW5nIHRoYXQgaW5jb21wbGV0ZSByZXN1bHQuICBJdAphbHNv IG1pZ2h0IHNhdmUgYSBmcmFjdGlvbiBvZiBvdmVyaGVhZCBjYWxjdWxhdGluZyBtb2RpZmll ZCBpbmRleAphdHRyaWJ1dGVzIGluIGhlYXBfdXBkYXRlKCkuCgpUaGlzIGNvbW1pdCBhZGRz IHRvIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKCkgY29kZSB0aGF0IGlkZW50aWZ5IGNoYW5nZXMg dG8KaW5kZXhlZCBjb2x1bW5zIG5vdCBmb3VuZCBieSBFeGVjR2V0QWxsVXBkYXRlZENvbHMo KSBhbmQgYWRkcyB0aG9zZQphdHRyaWJ1dGVzIHRvIHJpX2V4dHJhVXBkYXRlZENvbHMuCgpU aGlzIGNvbW1pdCBpbnRyb2R1Y2VzIEV4ZWNDb21wYXJlU2xvdEF0dHJzKCkgYXMgYSB1dGls aXR5IGZ1bmN0aW9uIHRvCmlkZW50aWZ5IHRob3NlIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGNo YW5nZWQuICBJdCBjb21wYXJlcyBhIHN1YnNldCBvZgphdHRyaWJ1dGVzIGJldHdlZW4gdHdv IFR1cGxlVGFibGVTbG90cyBhbmQgcmV0dXJucyBhIEJpdG1hcHNldCBvZgphdHRyaWJ1dGVz IHRoYXQgZGlmZmVyLgoKSXQgd291bGQgYmUgbmljZSB0byBpbnRlZ3JhdGUgdGhpcyBpbnRv IEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpLApob3dldmVyIGl0IHdvdWxkIGJlIGEgbGF5 ZXJpbmcgdmlvbGF0aW9uIGdpdmVuIHRoYXQgaXQgaXMgd2l0aGluCmhlYXBfdXBkYXRlKCku Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgIHwgMjAgKysrKysrKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyB8IDc4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICB8 ICA1ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDk4ZDQwMmMwYTNiLi5iYmUwNzdh OWNhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtMjk3OCw2ICsyOTc4LDcgQEAg RXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0 ZSwKIAkJCQkJIGJvb2wgaXNfbWVyZ2VfdXBkYXRlKQogewogCVRyaWdnZXJEZXNjICp0cmln ZGVzYyA9IHJlbGluZm8tPnJpX1RyaWdEZXNjOworCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVs YXRpb25HZXREZXNjcihyZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2MpOwogCVR1cGxlVGFibGVT bG90ICpvbGRzbG90ID0gRXhlY0dldFRyaWdnZXJPbGRTbG90KGVzdGF0ZSwgcmVsaW5mbyk7 CiAJSGVhcFR1cGxlCW5ld3R1cGxlID0gTlVMTDsKIAlIZWFwVHVwbGUJdHJpZ3R1cGxlOwpA QCAtMjk4NSw3ICsyOTg2LDkgQEAgRXhlY0JSVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3Rh dGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAlib29sCQlzaG91bGRfZnJlZV9uZXcgPSBmYWxz ZTsKIAlUcmlnZ2VyRGF0YSBMb2NUcmlnZ2VyRGF0YSA9IHswfTsKIAlpbnQJCQlpOwotCUJp dG1hcHNldCAgKnVwZGF0ZWRDb2xzOworCUJpdG1hcHNldCAgKnVwZGF0ZWRDb2xzID0gTlVM TDsKKwlCaXRtYXBzZXQgICpyZW1haW5pbmdDb2xzID0gTlVMTDsKKwlCaXRtYXBzZXQgICpt b2RpZmllZENvbHM7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKIAogCS8qIERldGVybWlu ZSBsb2NrIG1vZGUgdG8gdXNlICovCkBAIC0zMTI3LDYgKzMxMzAsMjEgQEAgRXhlY0JSVXBk YXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAlpZiAo c2hvdWxkX2ZyZWVfdHJpZykKIAkJaGVhcF9mcmVldHVwbGUodHJpZ3R1cGxlKTsKIAorCS8q CisJICogQmVmb3JlIFVQREFURSB0cmlnZ2VycyBtYXkgaGF2ZSB1cGRhdGVkIGF0dHJpYnV0 ZXMgbm90IGtub3duIHRvCisJICogRXhlY0dldEFsbFVwZGF0ZWRDb2x1bW5zKCkgdXNpbmcg aGVhcF9tb2RpZnlfdHVwbGUoKSBvcgorCSAqIGhlYXBfbW9kaWZpeV90dXBsZV9ieV9jb2xz KCkuICBGaW5kIGFuZCByZWNvcmQgdGhvc2Ugbm93LgorCSAqLworCXJlbWFpbmluZ0NvbHMg PSBibXNfYWRkX3JhbmdlKE5VTEwsIDEgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLAorCQkJCQkJCQkgIHR1cGRlc2MtPm5hdHRzIC0gRmlyc3RMb3dJbnZhbGlkSGVh cEF0dHJpYnV0ZU51bWJlcik7CisJcmVtYWluaW5nQ29scyA9IGJtc19kZWxfbWVtYmVycyhy ZW1haW5pbmdDb2xzLCB1cGRhdGVkQ29scyk7CisJbW9kaWZpZWRDb2xzID0gRXhlY0NvbXBh cmVTbG90QXR0cnModHVwZGVzYywgcmVtYWluaW5nQ29scywgb2xkc2xvdCwgbmV3c2xvdCk7 CisJcmVsaW5mby0+cmlfZXh0cmFVcGRhdGVkQ29scyA9CisJCWJtc19hZGRfbWVtYmVycyhy ZWxpbmZvLT5yaV9leHRyYVVwZGF0ZWRDb2xzLCBtb2RpZmllZENvbHMpOworCisJYm1zX2Zy ZWUocmVtYWluaW5nQ29scyk7CisJYm1zX2ZyZWUobW9kaWZpZWRDb2xzKTsKKwogCXJldHVy biB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVw bGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKaW5kZXggYjc2OGVh ZTllNTMuLjEwNjRlYmU4NDViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBA IC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2lu Y2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRkYXR1bS5o IgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNh Y2hlLmgiCkBAIC0xOTI5LDYgKzE5MzAsODMgQEAgRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURh dHVtKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBF eGVjQ29tcGFyZVNsb3RBdHRycworICoKKyAqIENvbXBhcmUgdGhlIHN1YnNldCBvZiBhdHRy aWJ1dGVzIGluIGF0dHJzIGJld3R3ZWVuIFR1cGxlVGFibGVTbG90cyB0byBkZXRlY3QKKyAq IHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkLgorICoKKyAqIFJldHVybnMgYSBCaXRt YXBzZXQgb2YgYXR0cmlidXRlIGluZGljZXMgKHVzaW5nCisgKiBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhl IHR3bworICogc2xvdHMuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ29tcGFyZVNsb3RBdHRy cyhUdXBsZURlc2MgdHVwZGVzYywgY29uc3QgQml0bWFwc2V0ICphdHRycywKKwkJCQkJIFR1 cGxlVGFibGVTbG90ICpzMSwgVHVwbGVUYWJsZVNsb3QgKnMyKQoreworCWludAkJCWF0dGlk eCA9IC0xOworCUJpdG1hcHNldCAgKm1vZGlmaWVkID0gTlVMTDsKKworCS8qIFhYWCB3aGF0 IGlmIHNsb3RzIGRvbid0IHNoYXJlIHRoZSBzYW1lIHR1cGxlRGVzY3JpcHRvci4uLiAqLwor CS8qIEFzc2VydChzMS0+dHRzX3R1cGxlRGVzY3JpcHRvciA9PSBzMi0+dHRzX3R1cGxlRGVz Y3JpcHRvcik7ICovCisKKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRy cywgYXR0aWR4KSkgPj0gMCkKKwl7CisJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRy bnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlciAqLworCQlBdHRyTnVtYmVyCWF0 dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwor CQlEYXR1bQkJdmFsdWUxLAorCQkJCQl2YWx1ZTI7CisJCWJvb2wJCW51bGwxLAorCQkJCQlu dWxsMjsKKwkJQ29tcGFjdEF0dHJpYnV0ZSAqYXR0OworCisJCS8qCisJCSAqIElmIGl0J3Mg YSB3aG9sZS10dXBsZSByZWZlcmVuY2UsIHNheSAibm90IGVxdWFsIi4gIEl0J3Mgbm90IHJl YWxseQorCQkgKiB3b3J0aCBzdXBwb3J0aW5nIHRoaXMgY2FzZSwgc2luY2UgaXQgY291bGQg b25seSBzdWNjZWVkIGFmdGVyIGEKKwkJICogbm8tb3AgdXBkYXRlLCB3aGljaCBpcyBoYXJk bHkgYSBjYXNlIHdvcnRoIG9wdGltaXppbmcgZm9yLgorCQkgKi8KKwkJaWYgKGF0dHJudW0g PT0gMCkKKwkJeworCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0 aWR4KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogTGlrZXdpc2UsIGF1dG9t YXRpY2FsbHkgc2F5ICJub3QgZXF1YWwiIGZvciBhbnkgc3lzdGVtIGF0dHJpYnV0ZQorCQkg KiBvdGhlciB0aGFuIHRhYmxlT0lEOyB3ZSBjYW5ub3QgZXhwZWN0IHRoZXNlIHRvIGJlIGNv bnNpc3RlbnQgaW4gYQorCQkgKiBIT1QgY2hhaW4sIG9yIGV2ZW4gdG8gYmUgc2V0IGNvcnJl Y3RseSB5ZXQgaW4gdGhlIG5ldyB0dXBsZS4KKwkJICovCisJCWlmIChhdHRybnVtIDwgMCkK KwkJeworCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpCisJCQl7 CisJCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0aWR4KTsKKwkJ CQljb250aW51ZTsKKwkJCX0KKwkJfQorCisJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRy KHR1cGRlc2MsIGF0dHJudW0gLSAxKTsKKwkJdmFsdWUxID0gc2xvdF9nZXRhdHRyKHMxLCBh dHRybnVtLCAmbnVsbDEpOworCQl2YWx1ZTIgPSBzbG90X2dldGF0dHIoczIsIGF0dHJudW0s ICZudWxsMik7CisKKwkJLyogQSBjaGFuZ2UgdG8vZnJvbSBOVUxMLCBzbyBub3QgZXF1YWwg Ki8KKwkJaWYgKG51bGwxICE9IG51bGwyKQorCQl7CisJCQltb2RpZmllZCA9IGJtc19hZGRf bWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBC b3RoIE5VTEwsIG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlmIChudWxsMikKKwkJCWNv bnRpbnVlOworCisJCWlmICghZGF0dW1faW1hZ2VfZXEodmFsdWUxLCB2YWx1ZTIsIGF0dC0+ YXR0Ynl2YWwsIGF0dC0+YXR0bGVuKSkKKwkJCW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIo bW9kaWZpZWQsIGF0dGlkeCk7CisJfQorCisJcmV0dXJuIG1vZGlmaWVkOworfQorCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJCQljb252ZW5pZW5jZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcwog ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZDQ2YmE1OTg5 NWQuLjVkY2ZhYTIwMjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE3LDYg KzE3LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rl cy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1 ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpA QCAtNjA2LDYgKzYwNywxMCBAQCBleHRlcm4gVHVwbGVEZXNjIEV4ZWNDbGVhblR5cGVGcm9t VEwoTGlzdCAqdGFyZ2V0TGlzdCk7CiBleHRlcm4gVHVwbGVEZXNjIEV4ZWNUeXBlRnJvbUV4 cHJMaXN0KExpc3QgKmV4cHJMaXN0KTsKIGV4dGVybiB2b2lkIEV4ZWNUeXBlU2V0Q29sTmFt ZXMoVHVwbGVEZXNjIHR5cGVJbmZvLCBMaXN0ICpuYW1lc0xpc3QpOwogZXh0ZXJuIHZvaWQg VXBkYXRlQ2hhbmdlZFBhcmFtU2V0KFBsYW5TdGF0ZSAqbm9kZSwgQml0bWFwc2V0ICpuZXdj aGcpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0NvbXBhcmVTbG90QXR0cnMoVHVwbGVEZXNj IHR1cGRlc2MsCisJCQkJCQkJCQkgICBjb25zdCBCaXRtYXBzZXQgKmF0dHJzLAorCQkJCQkJ CQkJICAgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkgICBUdXBsZVRhYmxl U2xvdCAqbmV3X3R0cyk7CiAKIHR5cGVkZWYgc3RydWN0IFR1cE91dHB1dFN0YXRlCiB7Ci0t IAoyLjUxLjIKCg== --a8a718ca00664839aa14577324b2a80c Content-Disposition: attachment; filename*0="v35-0003-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v35-0003-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwMjA4NzU2ZDk2NjZjYjNiMzBiNWI4NWE0NDNhNGRmNjU0NjNjYjM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxODoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjM1IDMv M10gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXMsCmJ1dCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgIm1vZGlmaWVk IGluZGV4ZWQgYXR0cmlidXRlcyIKKG1vZGlmaWVkX2lkeF9hdHRycywgZm9ybWVybHkga25v d24gYXMgbW9kaWZpZWRfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSBy ZXBsYWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9y ZSB0YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3Ig YW4KZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1 cGxlIGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxv Y2sgaXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFw X3VwZGF0ZSgpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSB1c2VzIHRoZSBwcmV2 aW91c2x5LWludHJvZHVjZWQKRXhlY0NvbXBhcmVTbG90QXR0cnMoKSBmdW5jdGlvbiB0byBp ZGVudGlmeSB3aGljaCBhdHRyaWJ1dGVzIGhhdmUKY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNl Y3RzIHRoYXQgd2l0aCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0bwppZGVudGlm eSB0aGUgbW9kaWZpZWQgaW5kZXhlZCBzZXQsIHRoZSBtb2RpZmllZF9pZHhfYXR0cnMuCgpC ZXNpZGVzIGlkZW50aWZ5aW5nIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1 dGVzCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIHdhcyBhbHNvIHJlc3BvbnNpYmxlIGZv ciBwYXJ0IG9mIHRoZSBsb2dpYwppbnZvbHZlZCBpbiB0aGUgZGVjaXNpb24gYWJvdXQgd2hh dCB0byBXQUwgbG9nIGZvciB0aGUgcmVwbGljYSBpZGVudGl0eQprZXkuIFRoaXMgbG9naWMg bW92ZWQgaW50byBoZWFwX3VwZGF0ZSgpIGFuZCBvdXQgb2YgdGhlIHJlcGxhY2VtZW50Cm5h bWVkIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkuICBEb2luZyB0aGlzIGFsbG93cyBm b3IKc2ltcGxlX2hlYXBfdXBkYXRlKCkgYW5kIGhlYXBhbV90dXBsZV91cGRhdGUoKSB0byBz aGFyZSB0aGUgc2FtZSBsb2dpYwphcyB0aGV5IGJvdGggY2FsbCBpbnRvIGhlYXBfdXBkYXRl KCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBhbHNvIHVz ZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgaW4gRXhlY1NpbXBsZVJl bGF0aW9uVXBkYXRlKCkuCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1 bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbgphbmQgaW5jcmVhc2UgcmVhZGFi aWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSwKSGVhcFVwZGF0ZURldGVybWluZUxv Y2ttb2RlKCkuIFRoZXNlIGFyZSB1c2VkIGluIGJvdGggaGVhcF91cGRhdGUoKSBhbmQKc2lt cGxlX2hlYXBfdXBkYXRlKCkuCgpUaGUgaGVhcF91cGRhdGUoKSBmdW5jdGlvbiBpcyBjYWxs ZWQgbm93IHdpdGggbG9ja21vZGUgcHJlLWRldGVybWluZWQKYW5kIGEgYm9vbGVhbiBpbmRp Y2F0aW5nIGlmIHRoZSB1cGRhdGUgYWxsb3dzIEhPVCB1cGRhdGVzIG9yIG5vdCwgYm90aApj b25zdC4gSWYgZHVyaW5nIGhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSB3aWxsIGZpdCBv biB0aGUgc2FtZSBwYWdlCmFuZCB0aGF0IGJvb2xlYW4gaXMgdHJ1ZSwgdGhlIHVwZGF0ZSBp cyBIT1QuIFRoaXMgbWVhbnMgdGhhdCBhbHRob3VnaAp0aGUgZnVuY3Rpb25zIGFuZCB0aW1p bmcgb2YgdGhlIGNvZGUgaW52b2xlZCBpbiBIT1QgZGVjaXNpb25zIGhhdmUKY2hhbmdlZCwg bm9uZSBvZiB0aGUgbG9naWMgcmVsYXRlZCB0byB3aGVuIEhPVCBpcyBhbGxvd2VkIGhhcyBj aGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJlIGV4cG9zZWQgbm9uZGV0ZXJt aW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0ZXN0cyB3aGljaCBoYXZlIGJl ZW4gYWRqdXN0ZWQgdG8gYXZvaWQgaW5jb25zaXN0ZW50IHRlc3QKcmVzdWx0cyBkdWUgdG8g dHVwbGUgb3JkZXJpbmcgZHVyaW5nIGhlYXAgcGFnZSBzY2Fucy4KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NzggKysrKysrKysrKyst LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAg ICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAg ICAgICAgfCAgOTMgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAg ICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAg ICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAg ICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUu aCAgICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vcmVncmVzcy9leHBlY3RlZC9nZW5l cmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0IHwgICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3RyaWdnZXJzLnNxbCAgICAgICAgICAgICB8ICAgNCArLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCAgICAgIHwgICAyICstCiAxNyBmaWxlcyBjaGFu Z2VkLCA0OTIgaW5zZXJ0aW9ucygrKSwgMjI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggMWVjYzgzMzA4NTEuLjk5N2RjOTY0MmQ4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzcsMTQgKzM3LDIwIEBACiAjaW5jbHVkZSAi YWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgorI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgi CisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdmFsaWQu aCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Zh Y3V1bS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL2Nvc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBAIC01 Miw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGls cy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1 ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC02OCwxMSArNzUsOCBAQCBzdGF0aWMg dm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRpb24gcmVs YXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMgdm9pZCBj aGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlmCi1zdGF0 aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRp b24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJ CQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBIZWFwVHVw bGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wgKmhhc19l eHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0dXAsIEhl YXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkg TG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJ CQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMzAyLDcgKzMzMDYsNyBAQCBzaW1w bGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAgKiBTZWUg dGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBwYXJhbWV0 ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2VzIGEgdHVw bGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhlIGZhaWx1 cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxlJ3MgdF9j dGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3QsIGlmIG5l Y2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMzEyLDE3ICszMzE2LDEzIEBA IHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJCQlD b21tYW5kSWQgY2lkLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCi0JCQlUTV9G YWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCi0JCQlUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCVRNX0ZhaWx1cmVEYXRhICp0bWZkLCBj b25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAorCQkJY29uc3QgQml0bWFwc2V0ICptb2Rp ZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQpCiB7CiAJVE1fUmVzdWx0 CXJlc3VsdDsKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklk KCk7Ci0JQml0bWFwc2V0ICAqaG90X2F0dHJzOwotCUJpdG1hcHNldCAgKnN1bV9hdHRyczsK LQlCaXRtYXBzZXQgICprZXlfYXR0cnM7Ci0JQml0bWFwc2V0ICAqaWRfYXR0cnM7Ci0JQml0 bWFwc2V0ICAqaW50ZXJlc3RpbmdfYXR0cnM7Ci0JQml0bWFwc2V0ICAqbW9kaWZpZWRfYXR0 cnM7CisJQml0bWFwc2V0ICAqaWR4X2F0dHJzLAorCQkJICAgKnJpZF9hdHRyczsKIAlJdGVt SWQJCWxwOwogCUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBUdXBsZQloZWFwdHVwOwpA QCAtMzM0MSwxMyArMzM0MSwxMiBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJ CWhhdmVfdHVwbGVfbG9jayA9IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNl X2hvdF91cGRhdGUgPSBmYWxzZTsKLQlib29sCQlzdW1tYXJpemVkX3VwZGF0ZSA9IGZhbHNl OwogCWJvb2wJCWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZh bHNlOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CiAJYm9vbAkJ Y2hlY2tlZF9sb2NrZXJzOwogCWJvb2wJCWxvY2tlcl9yZW1haW5zOwotCWJvb2wJCWlkX2hh c19leHRlcm5hbCA9IGZhbHNlOworCWJvb2wJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBmYWxz ZTsKIAlUcmFuc2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLAogCQkJCXhtYXhfb2xkX3R1cGxl OwogCXVpbnQxNgkJaW5mb21hc2tfb2xkX3R1cGxlLApAQCAtMzM3OCwzMyArMzM3NywxNCBA QCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogI2VuZGlmCiAKIAkvKgotCSAqIEZldGNoIHRo ZSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYmUgY2hlY2tlZCBmb3IgdmFyaW91cyBvcGVyYXRp b25zLgotCSAqCi0JICogRm9yIEhPVCBjb25zaWRlcmF0aW9ucywgdGhpcyBpcyB3YXN0ZWQg ZWZmb3J0IGlmIHdlIGZhaWwgdG8gdXBkYXRlIG9yCi0JICogaGF2ZSB0byBwdXQgdGhlIG5l dyB0dXBsZSBvbiBhIGRpZmZlcmVudCBwYWdlLiAgQnV0IHdlIG11c3QgY29tcHV0ZSB0aGUK LQkgKiBsaXN0IGJlZm9yZSBvYnRhaW5pbmcgYnVmZmVyIGxvY2sgLS0tIGluIHRoZSB3b3Jz dCBjYXNlLCBpZiB3ZSBhcmUKLQkgKiBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZSBy ZWxldmFudCBzeXN0ZW0gY2F0YWxvZ3MsIHdlIGNvdWxkCi0JICogZGVhZGxvY2sgaWYgd2Ug dHJ5IHRvIGZldGNoIHRoZSBsaXN0IGxhdGVyLiAgSW4gYW55IGNhc2UsIHRoZSByZWxjYWNo ZQotCSAqIGNhY2hlcyB0aGUgZGF0YSBzbyB0aGlzIGlzIHVzdWFsbHkgcHJldHR5IGNoZWFw LgotCSAqCi0JICogV2UgYWxzbyBuZWVkIGNvbHVtbnMgdXNlZCBieSB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucyB0aGF0IGFyZQotCSAqIGNvbnNpZGVyZWQgdGhlICJrZXki IG9mIHJvd3MgaW4gdGhlIHRhYmxlLgorCSAqIEZldGNoIHRoZSBhdHRyaWJ1dGVzIHVzZWQg YWNyb3NzIGFsbCBpbmRleGVzIG9uIHRoaXMgcmVsYXRpb24gYXMgd2VsbAorCSAqIGFzIHRo ZSByZXBsaWNhIGlkZW50aXR5IGFuZCBjb2x1bW5zLgogCSAqCi0JICogTm90ZSB0aGF0IHdl IGdldCBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5IGFib3V0 Ci0JICogcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoLgotCSAqLwot CWhvdF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJ CQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORyk7Ci0Jc3VtX2F0dHJz ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICAg SU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCk7Ci0Ja2V5X2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0tFWSk7Ci0J aWRfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJ CQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7Ci0JaW50ZXJlc3Rpbmdf YXR0cnMgPSBOVUxMOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGlu dGVyZXN0aW5nX2F0dHJzLCBob3RfYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1z X2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBzdW1fYXR0cnMpOwotCWludGVyZXN0 aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBrZXlfYXR0 cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5n X2F0dHJzLCBpZF9hdHRycyk7CisJICogTk9URTogcmVsY2FjaGUgcmV0dXJucyBjb3BpZXMg b2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5CisJICogYWJvdXQgcmVsY2Fj aGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoLgorCSAqLworCWlkeF9hdHRycyA9 IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1B UF9JTkRFWEVEKTsKKwlyaWRfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChy ZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZKTsKIAogCWJsb2NrID0g SXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihvdGlkKTsKIAlJTkpFQ1RJT05fUE9JTlQoImhl YXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsKQEAgLTM0NTgsMjAgKzM0MzgsMTcgQEAg aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq b3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJdG1mZC0+Y3RpZCA9ICpvdGlkOwogCQl0bWZk LT54bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCXRtZmQtPmNtYXggPSBJbnZhbGlk Q29tbWFuZElkOwotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCi0JCWJtc19mcmVl KGhvdF9hdHRycyk7Ci0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JCWJtc19mcmVlKGtleV9h dHRycyk7Ci0JCWJtc19mcmVlKGlkX2F0dHJzKTsKLQkJLyogbW9kaWZpZWRfYXR0cnMgbm90 IHlldCBpbml0aWFsaXplZCAqLwotCQlibXNfZnJlZShpbnRlcmVzdGluZ19hdHRycyk7CisJ CWJtc19mcmVlKHJpZF9hdHRycyk7CisJCWJtc19mcmVlKGlkeF9hdHRycyk7CisJCS8qIG1v ZGlmaWVkX2lkeF9hdHRycyBpcyBvd25lZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0 ICovCisKIAkJcmV0dXJuIFRNX0RlbGV0ZWQ7CiAJfQogCiAJLyoKLQkgKiBGaWxsIGluIGVu b3VnaCBkYXRhIGluIG9sZHR1cCBmb3IgSGVhcERldGVybWluZUNvbHVtbnNJbmZvIHRvIHdv cmsKLQkgKiBwcm9wZXJseS4KKwkgKiBGaWxsIGluIGVub3VnaCBkYXRhIGluIG9sZHR1cCB0 byBkZXRlcm1pbmUgcmVwbGljYSBpZGVudGl0eSBhdHRyaWJ1dGUKKwkgKiByZXF1aXJlbWVu dHMuCiAJICovCiAJb2xkdHVwLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0 aW9uKTsKIAlvbGR0dXAudF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0o cGFnZSwgbHApOwpAQCAtMzQ4MiwxNiArMzQ1OSw1OSBAQCBoZWFwX3VwZGF0ZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3 dHVwLAogCW5ld3R1cC0+dF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24p OwogCiAJLyoKLQkgKiBEZXRlcm1pbmUgY29sdW1ucyBtb2RpZmllZCBieSB0aGUgdXBkYXRl LiAgQWRkaXRpb25hbGx5LCBpZGVudGlmeQotCSAqIHdoZXRoZXIgYW55IG9mIHRoZSB1bm1v ZGlmaWVkIHJlcGxpY2EgaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMgaW4gdGhlCi0JICogb2xk IHR1cGxlIGlzIGV4dGVybmFsbHkgc3RvcmVkIG9yIG5vdC4gIFRoaXMgaXMgcmVxdWlyZWQg YmVjYXVzZSBmb3IKLQkgKiBzdWNoIGF0dHJpYnV0ZXMgdGhlIGZsYXR0ZW5lZCB2YWx1ZSB3 b24ndCBiZSBXQUwgbG9nZ2VkIGFzIHBhcnQgb2YgdGhlCi0JICogbmV3IHR1cGxlIHNvIHdl IG11c3QgaW5jbHVkZSBpdCBhcyBwYXJ0IG9mIHRoZSBvbGRfa2V5X3R1cGxlLiAgU2VlCi0J ICogRXh0cmFjdFJlcGxpY2FJZGVudGl0eS4KKwkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5 KCkgbmVlZHMgdG8ga25vdyBpZiBhIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmJ1dGUKKwkgKiBp cyB1c2VkIGFzIGEgcmVwbGljYSBpbmRlbnRpdHkgb3IgaWYgYW55IG9mIHRoZSByZXBsaWNh IGlkZW50aXR5CisJICogYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBpbiBhbiBpbmRleCwg dW5tb2RpZmllZCwgYW5kIGFyZSBzdG9yZWQKKwkgKiBleHRlcm5hbGx5IGluIHRoZSBvbGQg dHVwbGUgYmVpbmcgcmVwbGFjZWQuICBJbiB0aG9zZSBjYXNlcyBpdCBtYXkgYmUKKwkgKiBu ZWNlc3NhcnkgdG8gV0FMIGxvZyB0aGVtIHRvIHNvIHRoZXkgYXJlIGF2YWlsYWJsZSB0byBy ZXBsaWNhcy4KIAkgKi8KLQltb2RpZmllZF9hdHRycyA9IEhlYXBEZXRlcm1pbmVDb2x1bW5z SW5mbyhyZWxhdGlvbiwgaW50ZXJlc3RpbmdfYXR0cnMsCi0JCQkJCQkJCQkJCSAgaWRfYXR0 cnMsICZvbGR0dXAsCi0JCQkJCQkJCQkJCSAgbmV3dHVwLCAmaWRfaGFzX2V4dGVybmFsKTsK KwlyZXBfaWRfa2V5X3JlcXVpcmVkID0gYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJz LCByaWRfYXR0cnMpOworCWlmICghcmVwX2lkX2tleV9yZXF1aXJlZCkKKwl7CisJCUJpdG1h cHNldCAgKmF0dHJzOworCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3Io cmVsYXRpb24pOworCQlpbnQJCQlhdHRpZHggPSAtMTsKKworCQkvKgorCQkgKiBSZWR1Y2Ug dGhlIHNldCB1bmRlciByZXZpZXcgdG8gb25seSB0aGUgdW5tb2RpZmllZCBpbmRleGVkIHJl cGxpY2EKKwkJICogaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMuICBpZHhfYXR0cnMgaXMgY29w aWVkIChieSBibXNfZGlmZmVyZW5jZSgpKQorCQkgKiBub3QgbW9kaWZpZWQgaGVyZS4KKwkJ ICovCisJCWF0dHJzID0gYm1zX2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtb2RpZmllZF9pZHhf YXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgcmlkX2F0dHJzKTsK KworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkg Pj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVt IGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRyTnVtYmVy CWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy OworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgorCQkJICog U3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJfQklUTUFQ X0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJQXNzZXJ0 KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1cCwgYXR0 cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hlY2sgYXR0 cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlpZiAoaXNu dWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEp LT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlmIHRoZSBv bGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlmIChW QVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9pbnRlcih2 YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOworCQkJCWJy ZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8qCiAJICog SWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBncmFiIGEg d2Vha2VyIGxvY2sgdHlwZS4KQEAgLTM1MDQsOSArMzUyNCw4IEBAIGhlYXBfdXBkYXRlKFJl bGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBs ZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUga2V5IGNv bHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2ZSBhdCB0 aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRf YXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5vS2V5RXhj bHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7CiAJ CW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlrZXlfaW50 YWN0ID0gdHJ1ZTsKIApAQCAtMzUyMyw3ICszNTQyLDcgQEAgaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5l d3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZl OworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJbXhhY3Rf c3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0gZmFsc2U7 CiAJfQpAQCAtMzUzNCw3ICszNTUzLDYgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkg KiB3aXRoIHRoZSBuZXcgdHVwbGUncyBsb2NhdGlvbiwgc28gdGhlcmUncyBncmVhdCByaXNr IG9mIGNvbmZ1c2lvbiBpZiB3ZQogCSAqIHVzZSBvdGlkIGFueW1vcmUuCiAJICovCi0KIGwy OgogCWNoZWNrZWRfbG9ja2VycyA9IGZhbHNlOwogCWxvY2tlcl9yZW1haW5zID0gZmFsc2U7 CkBAIC0zNjAyLDcgKzM2MjAsNyBAQCBsMjoKIAkJCWJvb2wJCWN1cnJlbnRfaXNfbWVtYmVy ID0gZmFsc2U7CiAKIAkJCWlmIChEb2VzTXVsdGlYYWN0SWRDb25mbGljdCgoTXVsdGlYYWN0 SWQpIHh3YWl0LCBpbmZvbWFzaywKLQkJCQkJCQkJCQkqbG9ja21vZGUsICZjdXJyZW50X2lz X21lbWJlcikpCisJCQkJCQkJCQkJbG9ja21vZGUsICZjdXJyZW50X2lzX21lbWJlcikpCiAJ CQl7CiAJCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKQEAg LTM2MTEsNyArMzYyOSw3IEBAIGwyOgogCQkJCSAqIHJlcXVlc3RpbmcgYSBsb2NrIGFuZCBh bHJlYWR5IGhhdmUgb25lOyBhdm9pZHMgZGVhZGxvY2spLgogCQkJCSAqLwogCQkJCWlmICgh Y3VycmVudF9pc19tZW1iZXIpCi0JCQkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9u LCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUsCisJCQkJCWhlYXBfYWNxdWlyZV90dXBs b2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJCQkg TG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7CiAKIAkJCQkvKiB3YWl0IGZvciBt dWx0aXhhY3QgKi8KQEAgLTM2OTYsNyArMzcxNCw3IEBAIGwyOgogCQkJICogbG9jay4KIAkJ CSAqLwogCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JCQlo ZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2tt b2RlLAorCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2Vs ZiksIGxvY2ttb2RlLAogCQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9j ayk7CiAJCQlYYWN0TG9ja1RhYmxlV2FpdCh4d2FpdCwgcmVsYXRpb24sICZvbGR0dXAudF9z ZWxmLAogCQkJCQkJCSAgWExUV19VcGRhdGUpOwpAQCAtMzc1NiwxNyArMzc3NCwxNCBAQCBs MjoKIAkJCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwogCQlVbmxvY2tSZWxlYXNl QnVmZmVyKGJ1ZmZlcik7CiAJCWlmIChoYXZlX3R1cGxlX2xvY2spCi0JCQlVbmxvY2tUdXBs ZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9kZSk7CisJCQlV bmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksIGxvY2ttb2Rl KTsKIAkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJCQlSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAotCQlibXNfZnJl ZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNfZnJlZShrZXlf YXR0cnMpOwotCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1vZGlmaWVkX2F0 dHJzKTsKLQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCQlibXNfZnJlZShyaWRf YXR0cnMpOworCQlibXNfZnJlZShpZHhfYXR0cnMpOworCQkvKiBtb2RpZmllZF9pZHhfYXR0 cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLworCiAJCXJldHVy biByZXN1bHQ7CiAJfQogCkBAIC0zNzk2LDcgKzM4MTEsNyBAQCBsMjoKIAljb21wdXRlX25l d194bWF4X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0 YSksCiAJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrLAogCQkJCQkJCSAgb2xk dHVwLnRfZGF0YS0+dF9pbmZvbWFzazIsCi0JCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgdHJ1 ZSwKKwkJCQkJCQkgIHhpZCwgbG9ja21vZGUsIHRydWUsCiAJCQkJCQkJICAmeG1heF9vbGRf dHVwbGUsICZpbmZvbWFza19vbGRfdHVwbGUsCiAJCQkJCQkJICAmaW5mb21hc2syX29sZF90 dXBsZSk7CiAKQEAgLTM5MTMsNyArMzkyOCw3IEBAIGwyOgogCQljb21wdXRlX25ld194bWF4 X2luZm9tYXNrKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJ CQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkJICBvbGR0dXAu dF9kYXRhLT50X2luZm9tYXNrMiwKLQkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2Us CisJCQkJCQkJCSAgeGlkLCBsb2NrbW9kZSwgZmFsc2UsCiAJCQkJCQkJCSAgJnhtYXhfbG9j a19vbGRfdHVwbGUsICZpbmZvbWFza19sb2NrX29sZF90dXBsZSwKIAkJCQkJCQkJICAmaW5m b21hc2syX2xvY2tfb2xkX3R1cGxlKTsKIApAQCAtNDA3MywzNyArNDA4OCwxOSBAQCBsMjoK IAogCS8qCiAJICogQXQgdGhpcyBwb2ludCBuZXdidWYgYW5kIGJ1ZmZlciBhcmUgYm90aCBw aW5uZWQgYW5kIGxvY2tlZCwgYW5kIG5ld2J1ZgotCSAqIGhhcyBlbm91Z2ggc3BhY2UgZm9y IHRoZSBuZXcgdHVwbGUuICBJZiB0aGV5IGFyZSB0aGUgc2FtZSBidWZmZXIsIG9ubHkKLQkg KiBvbmUgcGluIGlzIGhlbGQuCisJICogaGFzIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5ldyB0 dXBsZSBzbyB3ZSBjYW4gdXNlIHRoZSBIT1QgdXBkYXRlIHBhdGggaWYKKwkgKiB0aGUgY2Fs bGVyIGRldGVybWluZWQgdGhhdCBpdCBpcyBhbGxvd2FibGUuCisJICoKKwkgKiBOT1RFOiBJ ZiBuZXdidWYgPT0gYnVmZmVyIHRoZW4gb25seSBvbmUgcGluIGlzIGhlbGQuCiAJICovCi0K IAlpZiAobmV3YnVmID09IGJ1ZmZlcikKIAl7Ci0JCS8qCi0JCSAqIFNpbmNlIHRoZSBuZXcg dHVwbGUgaXMgZ29pbmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0J CSAqIHRvIGRvIGEgSE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29s dW1ucyBoYXZlIGJlZW4KLQkJICogY2hhbmdlZC4KLQkJICovCi0JCWlmICghYm1zX292ZXJs YXAobW9kaWZpZWRfYXR0cnMsIGhvdF9hdHRycykpCi0JCXsKKwkJaWYgKGhvdF9hbGxvd2Vk KQogCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOwotCi0JCQkvKgotCQkJICogSWYgbm9uZSBv ZiB0aGUgY29sdW1ucyB0aGF0IGFyZSB1c2VkIGluIGhvdC1ibG9ja2luZyBpbmRleGVzCi0J CQkgKiB3ZXJlIHVwZGF0ZWQsIHdlIGNhbiBhcHBseSBIT1QsIGJ1dCB3ZSBkbyBzdGlsbCBu ZWVkIHRvIGNoZWNrCi0JCQkgKiBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3VtbWFyaXpp bmcgaW5kZXhlcywgYW5kIHVwZGF0ZSB0aG9zZQotCQkJICogaW5kZXhlcyBpZiB0aGUgY29s dW1ucyB3ZXJlIHVwZGF0ZWQsIG9yIHdlIG1heSBmYWlsIHRvIGRldGVjdAotCQkJICogZS5n LiB2YWx1ZSBib3VuZCBjaGFuZ2VzIGluIEJSSU4gbWlubWF4IGluZGV4ZXMuCi0JCQkgKi8K LQkJCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywgc3VtX2F0dHJzKSkKLQkJCQlz dW1tYXJpemVkX3VwZGF0ZSA9IHRydWU7Ci0JCX0KIAl9CiAJZWxzZQotCXsKIAkJLyogU2V0 IGEgaGludCB0aGF0IHRoZSBvbGQgcGFnZSBjb3VsZCB1c2UgcHJ1bmUvZGVmcmFnICovCiAJ CVBhZ2VTZXRGdWxsKHBhZ2UpOwotCX0KIAogCS8qCiAJICogQ29tcHV0ZSByZXBsaWNhIGlk ZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2VjdGlvbiBzbwpA QCAtNDExMyw4ICs0MTEwLDcgQEAgbDI6CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3Ig aXQgaGFzIGV4dGVybmFsIGRhdGEuCiAJICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RS ZXBsaWNhSWRlbnRpdHkocmVsYXRpb24sICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292 ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGlkX2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hh c19leHRlcm5hbCwKKwkJCQkJCQkJCQkgICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJ CQkJCSAgICZvbGRfa2V5X2NvcGllZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9t IGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBsb2dnZWQgKi8KQEAgLTQyNDMsNyArNDIzOSw3IEBA IGwyOgogCSAqIFJlbGVhc2UgdGhlIGxtZ3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0Lgog CSAqLwogCWlmIChoYXZlX3R1cGxlX2xvY2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxh dGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBs b2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRf Y291bnRfaGVhcF91cGRhdGUocmVsYXRpb24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0g YnVmZmVyKTsKIApAQCAtNDI1NywzMSArNDI1MywxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVw bGUoaGVhcHR1cCk7CiAJfQogCi0JLyoKLQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRo ZSB1cGRhdGUgbWF5IHN0aWxsIG5lZWQgdG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRl eGVzLCBsZXN0IHdlIGZhaWwgdG8gdXBkYXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGlu Y29ycmVjdAotCSAqIHJlc3VsdHMgKGZvciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRo ZSBibG9jayBtYXkgY2hhbmdlIHdpdGggdGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYg KHVzZV9ob3RfdXBkYXRlKQotCXsKLQkJaWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVw ZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX05vbmU7Ci0JfQotCWVsc2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxs OwotCiAJaWYgKG9sZF9rZXlfdHVwbGUgIT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJ aGVhcF9mcmVldHVwbGUob2xkX2tleV90dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMp OwotCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKLQlibXNf ZnJlZShpZF9hdHRycyk7Ci0JYm1zX2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVl KGludGVyZXN0aW5nX2F0dHJzKTsKKwlibXNfZnJlZShyaWRfYXR0cnMpOworCWJtc19mcmVl KGlkeF9hdHRycyk7CisJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBj YWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KIAogCXJldHVybiBUTV9PazsKIH0KQEAgLTQ0NTQs MjggKzQ0MzEsMTEzIEBAIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGlu dCBhdHRybnVtLCBEYXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKIH0KIAogLyoKLSAqIENo ZWNrIHdoaWNoIGNvbHVtbnMgYXJlIGJlaW5nIHVwZGF0ZWQuCi0gKgotICogR2l2ZW4gYW4g dXBkYXRlZCB0dXBsZSwgZGV0ZXJtaW5lIChhbmQgcmV0dXJuIGludG8gdGhlIG91dHB1dCBi aXRtYXBzZXQpLAotICogZnJvbSB0aG9zZSBsaXN0ZWQgYXMgaW50ZXJlc3RpbmcsIHRoZSBz ZXQgb2YgY29sdW1ucyB0aGF0IGNoYW5nZWQuCi0gKgotICogaGFzX2V4dGVybmFsIGluZGlj YXRlcyBpZiBhbnkgb2YgdGhlIHVubW9kaWZpZWQgYXR0cmlidXRlcyAoZnJvbSB0aG9zZQot ICogbGlzdGVkIGFzIGludGVyZXN0aW5nKSBvZiB0aGUgb2xkIHR1cGxlIGlzIGEgbWVtYmVy IG9mIGV4dGVybmFsX2NvbHMgYW5kIGlzCi0gKiBzdG9yZWQgZXh0ZXJuYWxseS4KKyAqIEhP VCB1cGRhdGVzIGFyZSBwb3NzaWJsZSB3aGVuIGVpdGhlcjogYSkgdGhlcmUgYXJlIG5vIG1v ZGlmaWVkIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMsIG9yIGIpIHRoZSBtb2RpZmllZCBhdHRy aWJ1dGVzIGFyZSBhbGwgb24gc3VtbWFyaXppbmcgaW5kZXhlcy4KKyAqIExhdGVyLCBpbiBo ZWFwX3VwZGF0ZSgpLCB3ZSBjYW4gY2hvb3NlIHRvIHBlcmZvcm0gYSBIT1QgdXBkYXRlIGlm IHRoZXJlIGlzCisgKiBzcGFjZSBvbiB0aGUgcGFnZSBmb3IgdGhlIG5ldyB0dXBsZSBhbmQg dGhlIGZvbGxvd2luZyBjb2RlIGhhcyBkZXRlcm1pbmVkCisgKiB0aGF0IEhPVCBpcyBhbGxv d2VkLgorICovCitib29sCitIZWFwVXBkYXRlSG90QWxsb3dhYmxlKFJlbGF0aW9uIHJlbGF0 aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKKwkJCQkJICAgYm9v bCAqc3VtbWFyaXplZF9vbmx5KQoreworCWJvb2wJCWhvdF9hbGxvd2VkOworCisJLyoKKwkg KiBMZXQncyBiZSBvcHRpbWlzdGljIGFuZCBzdGFydCBvZmYgYnkgYXNzdW1pbmcgdGhlIGJl c3QgY2FzZSwgbm8gaW5kZXhlcworCSAqIG5lZWQgdXBkYXRpbmcgYW5kIEhPVCBpcyBhbGxv d2FibGUuCisJICovCisJaG90X2FsbG93ZWQgPSB0cnVlOworCSpzdW1tYXJpemVkX29ubHkg PSBmYWxzZTsKKworCS8qCisJICogQ2hlY2sgZm9yIGNhc2UgKGEpOyB3aGVuIHRoZXJlIGFy ZSBubyBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIEhPVCBpcworCSAqIGFsbG93ZWQuCisJ ICovCisJaWYgKGJtc19pc19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlob3RfYWxs b3dlZCA9IHRydWU7CisJZWxzZQorCXsKKwkJQml0bWFwc2V0ICAqc3VtX2F0dHJzID0gUmVs YXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJCQkJCSAgIElO REVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOworCisJCS8qCisJCSAqIEF0IGxlYXN0IG9u ZSBpbmRleCBhdHRyaWJ1dGUgd2FzIG1vZGlmaWVkLCBidXQgaXMgdGhpcyBjYXNlIChiKQor CQkgKiB3aGVyZSBhbGwgdGhlIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgYXJlIG9ubHkg dXNlZCBieQorCQkgKiBzdW1tYXJpemluZyBpbmRleGVzPyAgSWYgdGhhdCdzIHRoZSBjYXNl IHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlzIGNhbiBi ZSBhIEhPVCB1cGRhdGUuCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9p ZHhfYXR0cnMsIHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJ CSpzdW1tYXJpemVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJ CSAqIE5vdyB3ZSBrbm93IHRoYXQgb25lIG9yIG1vcmUgaW5kZXhlZCBhdHRyaWJ1dGUgd2Vy ZSB1cGRhdGVkIGFuZAorCQkJICogdGhhdCB0aGVyZSB3YXMgYXQgbGVhc3Qgb25lIG9mIHRo b3NlIGF0dHJpYnV0ZXMgd2VyZSByZWZlcmVuY2VkCisJCQkgKiBieSBhIG5vbi1zdW1tYXJp emluZyBpbmRleC4gSE9UIGlzIG5vdCBhbGxvd2VkLgorCQkJICovCisJCQlob3RfYWxsb3dl ZCA9IGZhbHNlOworCQl9CisKKwkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwl9CisKKwlyZXR1 cm4gaG90X2FsbG93ZWQ7Cit9CisKKy8qCisgKiBJZiB3ZSdyZSBub3QgdXBkYXRpbmcgYW55 ICJrZXkiIGF0dHJpYnV0ZXMsIHdlIGNhbiBncmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KKyAq IFRoaXMgYWxsb3dzIGZvciBtb3JlIGNvbmN1cnJlbmN5IHdoZW4gd2UgYXJlIHJ1bm5pbmcg c2ltdWx0YW5lb3VzbHkgd2l0aAorICogZm9yZWlnbiBrZXkgY2hlY2tzLgorICovCitMb2Nr VHVwbGVNb2RlCitIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRp b24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQoreworCUxvY2tUdXBs ZU1vZGUgbG9ja21vZGUgPSBMb2NrVHVwbGVFeGNsdXNpdmU7CisKKwlCaXRtYXBzZXQgICpr ZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJ CQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCisJaWYgKCFibXNfb3Zlcmxh cChtb2RpZmllZF9pZHhfYXR0cnMsIGtleV9hdHRycykpCisJCWxvY2ttb2RlID0gTG9ja1R1 cGxlTm9LZXlFeGNsdXNpdmU7CisKKwlibXNfZnJlZShrZXlfYXR0cnMpOworCisJcmV0dXJu IGxvY2ttb2RlOworfQorCisvKgorICogUmV0dXJuIGEgQml0bWFwc2V0IHRoYXQgY29udGFp bnMgdGhlIHNldCBvZiBtb2RpZmllZCAoY2hhbmdlZCkgaW5kZXhlZAorICogYXR0cmlidXRl cyBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3dHVwLgogICovCiBzdGF0aWMgQml0bWFwc2V0ICoK LUhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCSBC aXRtYXBzZXQgKmludGVyZXN0aW5nX2NvbHMsCi0JCQkJCQkgQml0bWFwc2V0ICpleHRlcm5h bF9jb2xzLAotCQkJCQkJIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXAsCi0J CQkJCQkgYm9vbCAqaGFzX2V4dGVybmFsKQorSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo UmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXAp CiB7CiAJaW50CQkJYXR0aWR4OwotCUJpdG1hcHNldCAgKm1vZGlmaWVkID0gTlVMTDsKKwlC aXRtYXBzZXQgICphdHRycywKKwkJCSAgICptb2RpZmllZF9pZHhfYXR0cnMgPSBOVUxMOwog CVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CiAKKwkv KiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4ZXMgZm9y IHRoaXMgcmVsYXRpb24gKi8KKwlhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKworCS8qIE5vIGluZGV4 ZWQgYXR0cmlidXRlcywgd2UncmUgZG9uZSAqLworCWlmIChibXNfaXNfZW1wdHkoYXR0cnMp KQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogVGhpcyBoZWFwIHVwZGF0ZSBmdW5jdGlv biBpcyB1c2VkIG91dHNpZGUgdGhlIGV4ZWN1dG9yIGFuZCBzbyB1bmxpa2UKKwkgKiBoZWFw YW1fdHVwbGVfdXBkYXRlKCkgd2hlcmUgdGhlcmUgaXMgUmVzdWx0UmVsSW5mbyBhbmQgRVN0 YXRlIHRvCisJICogcHJvdmlkZSB0aGUgY29uY2lzZSBzZXQgb2YgYXR0cmlidXRlcyB0aGF0 IG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZAorCSAqICh2aWEgRXhlY0dldEFsbFVwZGF0ZWRD b2xzKCkpIHdlIHNpbXBseSBjaGVjayBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvCisJICog ZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQncyB0aGUgIm1vZGlm aWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzIiBvciAibW9kaWZpZWRfaWR4X2F0dHJzIi4K KwkgKi8KIAlhdHRpZHggPSAtMTsKLQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJl cihpbnRlcmVzdGluZ19jb2xzLCBhdHRpZHgpKSA+PSAwKQorCXdoaWxlICgoYXR0aWR4ID0g Ym1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgpKSA+PSAwKQogCXsKIAkJLyogYXR0aWR4 IGlzIHplcm8tYmFzZWQsIGF0dHJudW0gaXMgdGhlIG5vcm1hbCBhdHRyaWJ1dGUgbnVtYmVy ICovCiAJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dGlkeCArIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXI7CkBAIC00NDkxLDcgKzQ1NTMsNyBAQCBIZWFwRGV0ZXJtaW5l Q29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAJCSAqLwogCQlpZiAoYXR0cm51bSA9 PSAwKQogCQl7Ci0JCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRp ZHgpOworCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWRf aWR4X2F0dHJzLCBhdHRpZHgpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNDUwNCw3ICs0 NTY2LDcgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAog CQl7CiAJCQlpZiAoYXR0cm51bSAhPSBUYWJsZU9pZEF0dHJpYnV0ZU51bWJlcikKIAkJCXsK LQkJCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOworCQkJ CW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRy cywgYXR0aWR4KTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAtNDUyMCwyOSArNDU4 MiwxMiBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAK IAkJaWYgKCFoZWFwX2F0dHJfZXF1YWxzKHR1cGRlc2MsIGF0dHJudW0sIHZhbHVlMSwKIAkJ CQkJCQkgIHZhbHVlMiwgaXNudWxsMSwgaXNudWxsMikpCi0JCXsKLQkJCW1vZGlmaWVkID0g Ym1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7Ci0JCQljb250aW51ZTsKLQkJfQot Ci0JCS8qCi0JCSAqIE5vIG5lZWQgdG8gY2hlY2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJl IHN0b3JlZCBleHRlcm5hbGx5LiBOb3RlCi0JCSAqIHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMg Y2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkuCi0JCSAqLwotCQlpZiAoYXR0cm51bSA8IDAg fHwgaXNudWxsMSB8fAotCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51 bSAtIDEpLT5hdHRsZW4gIT0gLTEpCi0JCQljb250aW51ZTsKLQotCQkvKgotCQkgKiBDaGVj ayBpZiB0aGUgb2xkIHR1cGxlJ3MgYXR0cmlidXRlIGlzIHN0b3JlZCBleHRlcm5hbGx5IGFu ZCBpcyBhCi0JCSAqIG1lbWJlciBvZiBleHRlcm5hbF9jb2xzLgotCQkgKi8KLQkJaWYgKFZB UkFUVF9JU19FWFRFUk5BTCgodmFybGVuYSAqKSBEYXR1bUdldFBvaW50ZXIodmFsdWUxKSkg JiYKLQkJCWJtc19pc19tZW1iZXIoYXR0aWR4LCBleHRlcm5hbF9jb2xzKSkKLQkJCSpoYXNf ZXh0ZXJuYWwgPSB0cnVlOworCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOwogCX0KIAotCXJldHVybiBtb2RpZmll ZDsKKwlibXNfZnJlZShhdHRycyk7CisKKwlyZXR1cm4gbW9kaWZpZWRfaWR4X2F0dHJzOwog fQogCiAvKgpAQCAtNDU1NCwxNyArNDU5OSwxMDkgQEAgSGVhcERldGVybWluZUNvbHVtbnNJ bmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogICogdmlhIGVyZXBvcnQoKS4KICAqLwogdm9pZAot c2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRl ckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAsCitzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1 cGxlLAogCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQogewogCVRN X1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKIAlMb2NrVHVwbGVNb2Rl IGxvY2ttb2RlOworCVR1cGxlVGFibGVTbG90ICpzbG90OworCUJ1ZmZlckhlYXBUdXBsZVRh YmxlU2xvdCAqYnNsb3Q7CisJSGVhcFR1cGxlCW9sZHR1cDsKKwlib29sCQlzaG91bGRGcmVl ID0gdHJ1ZTsKKwlCaXRtYXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4 X2F0dHJzOworCWJvb2wJCWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25seTsKKwlC dWZmZXIJCWJ1ZmZlcjsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlk LCB0dXAsCi0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBz aG90LAotCQkJCQkJIHRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCSAmdG1m ZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJQXNzZXJ0KEl0ZW1Qb2ludGVySXNW YWxpZChvdGlkKSk7CisKKwkvKgorCSAqIEZldGNoIHRoaXMgYml0bWFwIG9mIGludGVyZXN0 aW5nIGF0dHJpYnV0ZXMgZnJvbSByZWxjYWNoZSBiZWZvcmUKKwkgKiBvYnRhaW5pbmcgYSBi dWZmZXIgbG9jayBiZWNhdXNlIGlmIHdlIGFyZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9m IHRoZQorCSAqIHJlbGV2YW50IHN5c3RlbSBjYXRhbG9ncyB3ZSBjb3VsZCBkZWFkbG9jayBp ZiB3ZSB0cnkgdG8gZmV0Y2ggdGhlbQorCSAqIGxhdGVyIG9uLiBSZWxjYWNoZSB3aWxsIHJl dHVybiBjb3BpZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90CisJICogd29ycnkg YWJvdXQgcmVsY2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoIHRoaXMgb3Bl cmF0aW9uLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw KHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKworCUlOSkVDVElPTl9Q T0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIsIE5VTEwpOworCisJLyoKKwkgKiBUbyB1 cGRhdGUgYSBoZWFwIHR1cGxlIHdlIG5lZWQgdG8gZmluZCB0aGUgc2V0IG9mIG1vZGlmaWVk IGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzICgibW9kaWZpZWRfaWR4X2F0dHJzIikgc28gYXMg dG8gc2VlIGlmIGEgSE9UIHVwZGF0ZSBpcworCSAqIGFsbG93YWJsZSBvciBub3QuICBXaGVu IHVwZGF0aW5nIGhlYXAgdHVwbGVzIHZpYSBleGVjdXRpb24gb2YgVVBEQVRFCisJICogc3Rh dGVtZW50cyB0aGlzIHNldCBpcyBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRo ZSB0YWJsZSBBTSdzCisJICogdHVwbGVfdXBkYXRlKCkgZnVuY3Rpb24gYnkgdGhlIGZ1bmN0 aW9uIEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkKKwkgKiB3aGljaCBjb21wYXJlcyB0 aGUgb2xkL25ldyBUdXBsZVRhYmxlU2xvdHMuICBIb3dldmVyLCBoZXJlIHdlIGhhdmUgdGhl CisJICogb2xkIFRJRCBhbmQgdGhlIG5ldyB0dXBsZSwgbm90IHR3byBUdXBsZVRhYmxlU2xv dHMsIGJ1dCB3ZSBzdGlsbCBuZWVkCisJICogdG8gY29uc3RydWN0IGEgc2ltaWxhciBiaXRt YXAgc28gYXMgdG8gYmUgYWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzCisJICogYXJlIGFs bG93ZWQgb3Igbm90LiAgVG8gZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZldGNoIHRoZSBv bGQgdHVwbGUKKwkgKiBpdHNlbGYuICBCZWNhdXNlIGhlYXBhbV9mZXRjaF9yb3dfdmVyc2lv bigpIGlzIHN0YXRpYywgd2UgaGF2ZSB0bworCSAqIHJlcGxpY2F0ZSB0aGF0IGNvZGUgaGVy ZS4gVGhpcyBpcyBhIGJpdCByZXBldGl0aXZlIGJlY2F1c2UKKwkgKiBoZWFwX3VwZGF0ZSgp IHdpbGwgYWdhaW4gZmluZCBhbmQgZm9ybSB0aGUgb2xkIEhlYXBUdXBsZSBmcm9tIHRoZSBv bGQKKwkgKiBUSUQgYW5kIGluIG1vc3QgY2FzZXMgdGhlIGNhbGxlcnMgKGlnbm9yaW5nIGV4 dGVuc2lvbnMsIGFsd2F5cyBjYXRhbG9nCisJICogdHVwbGUgdXBkYXRlcykgYWxyZWFkeSBo YWQgdGhlIHNldCBvZiBjaGFuZ2VkIGF0dHJpYnV0ZXMgKGUuZy4gdGhlCisJICogInJlcGxh Y2VzIiBhcnJheSksIGJ1dCBmb3Igbm93IHRoaXMgbWlub3IgcmVwZXRpdGlvbiBvZiB3b3Jr IGlzCisJICogbmVjZXNzYXJ5LgorCSAqLworCisJc2xvdCA9IE1ha2VUdXBsZVRhYmxlU2xv dChSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7 CisJYnNsb3QgPSAoQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICopIHNsb3Q7CisKKwkvKgor CSAqIFNldCB0aGUgVElEIGluIHRoZSBzbG90IGFuZCB0aGVuIGZldGNoIHRoZSBvbGQgdHVw bGUgc28gd2UgY2FuIGV4YW1pbmUKKwkgKiBpdAorCSAqLworCWJzbG90LT5iYXNlLnR1cGRh dGEudF9zZWxmID0gKm90aWQ7CisJaWYgKCFoZWFwX2ZldGNoKHJlbGF0aW9uLCBTbmFwc2hv dEFueSwgJmJzbG90LT5iYXNlLnR1cGRhdGEsICZidWZmZXIsIGZhbHNlKSkKKwl7CisJCS8q CisJCSAqIGhlYXBfdXBkYXRlKCkgY2hlY2tzIGZvciAhSXRlbUlkSXNOb3JtYWwobHApIGFu ZCB3aWxsIHJldHVybiBmYWxzZQorCQkgKiBpbiB0aG9zZSBjYXNlcy4KKwkJICovCisJCUFz c2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlv bikpKTsKKworCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCisJCS8qIG1vZGlmaWVk X2lkeF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisJCWJtc19mcmVlKGlkeF9hdHRy cyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkJZWxvZyhF UlJPUiwgInR1cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7CisKKwkJcmV0dXJuOworCX0K KworCUFzc2VydChidWZmZXIgIT0gSW52YWxpZEJ1ZmZlcik7CisKKwkvKiBTdG9yZSBpbiBz bG90LCB0cmFuc2ZlcnJpbmcgZXhpc3RpbmcgcGluICovCisJRXhlY1N0b3JlUGlubmVkQnVm ZmVySGVhcFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBzbG90LCBidWZmZXIpOworCW9s ZHR1cCA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsICZzaG91bGRGcmVl KTsKKworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJz KHJlbGF0aW9uLCBvbGR0dXAsIHR1cGxlKTsKKwlsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRl cm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfYWxs b3dlZCA9IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9h dHRycywgJnN1bW1hcml6ZWRfb25seSk7CisKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxh dGlvbiwgb3RpZCwgdHVwbGUsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksCisJCQkJCQkg SW52YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCisJCQkJCQkg JnRtZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKKwor CWlmIChzaG91bGRGcmVlKQorCQloZWFwX2ZyZWV0dXBsZShvbGR0dXApOworCisJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwlibXNfZnJlZShpZHhfYXR0cnMpOwor CisJLyoKKwkgKiBEZWNpZGUgd2hldGhlciBuZXcgaW5kZXggZW50cmllcyBhcmUgbmVlZGVk IGZvciB0aGUgdHVwbGUKKwkgKgorCSAqIElmIHRoZSB1cGRhdGUgaXMgbm90IEhPVCwgd2Ug bXVzdCB1cGRhdGUgYWxsIGluZGV4ZXMuIElmIHRoZSB1cGRhdGUgaXMKKwkgKiBIT1QsIGl0 IGNvdWxkIGJlIHRoYXQgd2UgdXBkYXRlZCBzdW1tYXJpemVkIGNvbHVtbnMsIHNvIHdlIGVp dGhlcgorCSAqIHVwZGF0ZSBvbmx5IHN1bW1hcml6ZWQgaW5kZXhlcywgb3Igbm9uZSBhdCBh bGwuCisJICovCisJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAlzd2l0Y2ggKHJlc3Vs dCkKIAl7CiAJCWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpAQCAtNDU3NCw2ICs0NzExLDEwIEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAKIAkJY2FzZSBUTV9PazoKIAkJCS8qIGRv bmUgc3VjY2Vzc2Z1bGx5ICovCisJCQlpZiAoIUhlYXBUdXBsZUlzSGVhcE9ubHkodHVwbGUp KQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKKwkJCWVsc2UgaWYgKHN1bW1hcml6 ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKIAkJCWJy ZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoKQEAgLTQ1OTAsNyArNDczMSw2IEBAIHNpbXBs ZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJfQogfQogCi0KIC8qCiAgKiBSZXR1cm4gdGhlIE11 bHRpWGFjdFN0YXR1cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiB0dXBsZSBsb2NrIG1v ZGUuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmlu ZGV4IDNmZjM2ZjU5YmY4Li5iYmRiNzMyYzAwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3N5bmNzY2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRl ICJhY2Nlc3MvdHNtYXBpLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5o IgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKQEAgLTQ0LDYgKzQzLDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKIHN0YXRpYyB2b2lkIHJlZm9y bV9hbmRfcmV3cml0ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCkBAIC0zMTYsMTkgKzMxNiwy NiBAQCBoZWFwYW1fdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRl ciB0aWQsIENvbW1hbmRJZCBjaWQsCiBzdGF0aWMgVE1fUmVzdWx0CiBoZWFwYW1fdHVwbGVf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCwKIAkJCQkJQ29tbWFuZElkIGNpZCwgU25hcHNob3Qgc25hcHNob3QsIFNu YXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRt ZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1 cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwg TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZp ZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAli b29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hT bG90SGVhcFR1cGxlKHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxs b3dlZDsKKwlib29sCQlzdW1tYXJpemVkX29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAor CUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOworCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUg dHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlv bkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190 YWJsZU9pZDsKIAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBs ZSwgY2lkLCBjcm9zc2NoZWNrLCB3YWl0LAotCQkJCQkJIHRtZmQsIGxvY2ttb2RlLCB1cGRh dGVfaW5kZXhlcyk7CisJCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0 cnMsIGhvdF9hbGxvd2VkKTsKIAlJdGVtUG9pbnRlckNvcHkoJnR1cGxlLT50X3NlbGYsICZz bG90LT50dHNfdGlkKTsKIAogCS8qCkBAIC0zNDEsMTYgKzM0OCwxNyBAQCBoZWFwYW1fdHVw bGVfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAkgKiBIT1QsIGl0IGNvdWxkIGJlIHRoYXQgd2UgdXBkYXRlZCBz dW1tYXJpemVkIGNvbHVtbnMsIHNvIHdlIGVpdGhlcgogCSAqIHVwZGF0ZSBvbmx5IHN1bW1h cml6ZWQgaW5kZXhlcywgb3Igbm9uZSBhdCBhbGwuCiAJICovCi0JaWYgKHJlc3VsdCAhPSBU TV9PaykKKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCWlmIChyZXN1bHQgPT0gVE1f T2spCiAJewotCQlBc3NlcnQoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpOwotCQkqdXBk YXRlX2luZGV4ZXMgPSBUVV9Ob25lOworCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seSh0dXBs ZSkpCisJCXsKKwkJCWlmIChzdW1tYXJpemVkX29ubHkpCisJCQkJKnVwZGF0ZV9pbmRleGVz ID0gVFVfU3VtbWFyaXppbmc7CisJCX0KKwkJZWxzZQorCQkJKnVwZGF0ZV9pbmRleGVzID0g VFVfQWxsOwogCX0KLQllbHNlIGlmICghSGVhcFR1cGxlSXNIZWFwT25seSh0dXBsZSkpCi0J CUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfQWxsKTsKLQllbHNlCi0JCUFzc2VydCgo KnVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKSB8fAotCQkJICAgKCp1cGRhdGVf aW5kZXhlcyA9PSBUVV9Ob25lKSk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVw bGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggZGZkYTFhZjQxMmUu LjliYTcyZDUxZGZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTM1 OSw2ICszNTksNyBAQCB2b2lkCiBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9u IHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3Qs CiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJICBjb25zdCBCaXRtYXBzZXQg Km1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKQEAgLTM2OSw3ICszNzAsOSBAQCBz aW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3Rp ZCwKIAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25hcHNo b3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQg Ki8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJ CQkJCSZ0bWZkLCAmbG9ja21vZGUsCisJCQkJCQkJCW1vZGlmaWVkX2lkeF9hdHRycywKKwkJ CQkJCQkJdXBkYXRlX2luZGV4ZXMpOwogCiAJc3dpdGNoIChyZXN1bHQpCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCAyNDk3ZWU3ZWRjNS4uNzRh NzM3OTE4NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBA IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRl ICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBA IC05MDYsNiArOTA3LDcgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbElu Zm8gKnJlc3VsdFJlbEluZm8sCiAJYm9vbAkJc2tpcF90dXBsZSA9IGZhbHNlOwogCVJlbGF0 aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKIAlJdGVtUG9pbnRl ciB0aWQgPSAmKHNlYXJjaHNsb3QtPnR0c190aWQpOworCUJpdG1hcHNldCAgKm1vZGlmaWVk X2lkeF9hdHRyczsKIAogCS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5vbi1zeXN0ZW0gdGFi bGVzLCB3aXRoCkBAIC05NDQsOCArOTQ2LDEzIEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0 ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlpZiAocmVsLT5yZF9yZWwtPnJl bGlzcGFydGl0aW9uKQogCQkJRXhlY1BhcnRpdGlvbkNoZWNrKHJlc3VsdFJlbEluZm8sIHNs b3QsIGVzdGF0ZSwgdHJ1ZSk7CiAKKwkJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0 ZU1vZGlmaWVkSWR4QXR0cnMocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJZXN0YXRl LCBzZWFyY2hzbG90LCBzbG90KTsKKwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJl bCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVf aW5kZXhlcyk7CisJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4 ZXMpOworCQlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3Rp bmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDMyN2MyN2Fi ZmY5Li5jY2E4MzRhNzM1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKQEAgLTE3LDYgKzE3LDcgQEAKICAqCQlFeGVjTW9kaWZ5VGFibGUJCS0gcmV0cmll dmUgdGhlIG5leHQgdHVwbGUgZnJvbSB0aGUgbm9kZQogICoJCUV4ZWNFbmRNb2RpZnlUYWJs ZQktIHNodXQgZG93biB0aGUgTW9kaWZ5VGFibGUgbm9kZQogICoJCUV4ZWNSZVNjYW5Nb2Rp ZnlUYWJsZSAtIHJlc2NhbiB0aGUgTW9kaWZ5VGFibGUgbm9kZQorICoJCUV4ZWNVcGRhdGVN b2RpZmllZElkeEF0dHJzIC0gZmluZCBzZXQgb2YgdXBkYXRlZCBpbmRleGVkIGNvbHVtbnMK ICAqCiAgKgkgTk9URVMKICAqCQlUaGUgTW9kaWZ5VGFibGUgbm9kZSByZWNlaXZlcyBpbnB1 dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNoIGlzCkBAIC01NCw2ICs1NSw3IEBACiAKICNp bmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxl YW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWNQYXJ0aXRpb24uaCIKQEAgLTE4OCw2ICsxOTAsNjggQEAgc3RhdGljIFR1cGxl VGFibGVTbG90ICpFeGVjTWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJ CQkJCQkJCSAgIGJvb2wgY2FuU2V0VGFnKTsKIAorLyoKKyAqIEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzCisgKgorICogRmluZCB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgcmVmZXJlbmNl ZCBieSB0aGlzIHJlbGF0aW9uIGFuZCB1c2VkIGluIHRoaXMKKyAqIFVQREFURSB0aGF0IG5v dyBkaWZmZXIgaW4gdmFsdWUuICBUaGlzIGlzIGRvbmUgYnkgcmV2aWV3aW5nIHNsb3QgZGF0 dW0gdGhhdAorICogYXJlIGluIHRoZSBVUERBVEUgc3RhdG1lbnQgYW5kIGFyZSBrbm93biB0 byBiZSByZWZlcmVuY2VkIGJ5IGF0IGxlYXN0IG9uZQorICogaW5kZXggaW4gc29tZSB3YXku ICBUaGlzIHNldCBpcyBjYWxsZWQgdGhlICJtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMi IG9yCisgKiAibW9kaWZpZWRfaWR4X2F0dHJzIi4gIEFuIG92ZXJsYXAgb2YgYSBzaW5nbGUg aW5kZXgncyBhdHRyaWJ1dGVzIGFuZCB0aGlzICJtaXgiIHNldAorICogc2lnbmFscyB0aGF0 IHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBuZXdfdHRzIHVzZWQgdG8gZm9ybSB0aGUgaW5kZXgg ZGF0dW0gaGF2ZQorICogY2hhbmdlZC4KKyAqCisgKiBSZXR1cm4gYSBCaXRtYXBzZXQgdGhh dCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlmaWVkIChjaGFuZ2VkKSBpbmRleGVkCisgKiBh dHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFuZCBuZXd0dXAuCisgKgorICogTk9URTogVGhl cmUgaXMgYSBzaW1pbGFyIGZ1bmN0aW9uIGNhbGxlZCBIZWFwVXBkYXRlTW9kaWZpZWRJZHhB dHRycygpIHRoYXQgb3BlcmF0ZXMKKyAqIG9uIHRoZSBvbGQgVElEIGFuZCBuZXcgSGVhcFR1 cGxlIHJhdGhlciB0aGFuIHRoZSBvbGQvbmV3IFR1cGxlVGFibGVTbG90cyBhcworICogdGhp cyBmdW5jdGlvbiBkb2VzLiAgVGhlc2UgdHdvIGZ1bmN0aW9ucyBzaG91bGQgbWlycm9yIG9u ZSBhbm90aGVyIHVudGlsCisgKiBzb21lZGF5IHdoZW4gY2F0YWxvZyB0dXBsZSB1cGRhdGVz IHRyYWNrIHRoZWlyIGNoYW5nZXMgYXZvaWRpbmcgdGhlIG5lZWQgdG8KKyAqIHJlLWRpc2Nv dmVyIHRoZW0gaW4gc2ltcGxlX2hlYXBfdXBkYXRlKCkuCisgKi8KK0JpdG1hcHNldCAqCitF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LAorCQkJCQkJICAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAq b2xkX3R0cywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJlbGF0 aW9uCXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxl RGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFwc2V0 ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKKworCS8qIElm IG5vIGluZGV4ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVt SW5kaWNlcyA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogR2V0IHRoZSBzZXQg b2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbCBpbmRleGVzIGZvciB0aGlzIHJlbGF0aW9u IGZyb20KKwkgKiB0aGUgcmVsY2FjaGUsIGl0IHJldHVybnMgdXMgYSBjb3B5IG9mIHRoZSBi aXRtYXAgc28gd2UgY2FuIG1vZGlmeSBpdC4KKwkgKi8KKwlhdHRycyA9IFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsK KworCS8qCisJICogRmV0Y2ggdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGV4cGxpY2l0eSBTRVQg aW4gdGhlIFVQREFURSBzdGF0ZW1lbnQgb3IKKwkgKiBzZXQgYnkgYSBiZWZvcmUgcm93IHRy aWdnZXIgKGV2ZW4gaWYgbm90IG1lbnRpb25lZCBpbiB0aGUgU1FMKSBmcm9tIHRoZQorCSAq IGV4ZWN1dG9yIHN0YXRlIGFuZCB0aGVuIGZpbmQgdGhlIGludGVyc2VjdGlvbiB3aXRoIHRo ZSBpbmRleGVkCisJICogYXR0cmlidXRlcy4gIEF0dHJpYnV0ZXMgdGhhdCBhcmUgU0VUIG1p Z2h0IG5vdCBjaGFuZ2UgdmFsdWUsIHNvIHdlIGhhdmUKKwkgKiB0byBleGFtaW5lIHRoZW0g Zm9yIGNoYW5nZXMuCisJICovCisJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIEV4 ZWNHZXRBbGxVcGRhdGVkQ29scyhyZXN1bHRSZWxJbmZvLCBlc3RhdGUpKTsKKworCS8qCisJ ICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIG1lbnRpb25lZCBpbiB0aGUg VVBEQVRFIHRoZW4gd2UgbmVlZAorCSAqIHRvIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5n ZWQgdmFsdWUuICBUaGF0J3MgdGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRl cyIgb3IgIm1vZGlmaWVkX2lkeF9hdHRycyIuCisJICovCisJaWYgKCFibXNfaXNfZW1wdHko YXR0cnMpKQorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyh0 dXBkZXNjLCBhdHRycywgb2xkX3R0cywgbmV3X3R0cyk7CisKKwlibXNfZnJlZShhdHRycyk7 CisKKwlyZXR1cm4gbW9kaWZpZWRfaWR4X2F0dHJzOworfQogCiAvKgogICogVmVyaWZ5IHRo YXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNlZCBieSBJTlNFUlQgbWF0Y2ggdGhlCkBAIC0y MTk1LDE0ICsyMjU5LDE3IEBAIEV4ZWNVcGRhdGVQcmVwYXJlU2xvdChSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogICovCiBzdGF0aWMgVE1fUmVzdWx0CiBFeGVjVXBkYXRlQWN0 KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVs SW5mbywKLQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCSAgYm9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRl eHQgKnVwZGF0ZUN4dCkKKwkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCwgSGVhcFR1cGxlIG9s ZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqb2xkU2xvdCwKKwkJCSAgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJ RVN0YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3RhdGU7CiAJUmVsYXRpb24JcmVzdWx0 UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCWJvb2wJ CXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCisJ LyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCB0cmlnZ2Vy IG5ldyBpbmRleCBlbnRyaWVzICovCisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJz ID0gTlVMTDsKKwogCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0VXBkYXRlID0gZmFsc2U7CiAKIAkv KgpAQCAtMjMxOSw3ICsyMzg2LDE2IEBAIGxyZXBsYWNlOgogCQlFeGVjQ29uc3RyYWludHMo cmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAogCS8qCi0JICogcmVwbGFjZSB0aGUg aGVhcCB0dXBsZQorCSAqIE5leHQgdXAgd2UgbmVlZCB0byBmaW5kIG91dCB0aGUgc2V0IG9m IGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhhdmUKKwkgKiBjaGFuZ2VkIGluIHZhbHVlIGFu ZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRleCB0dXBsZS4gIFdlIGNvdWxkIHN0YXJ0CisJ ICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQgY29sdW1ucyB2aWEgRXhlY0dldFVwZGF0ZWRD b2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdlIHdpbGwgb3Zlcmxvb2sgYXR0cmlidXRlcyBk aXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21vZGlmeV90dXBsZSgpCisJICogd2hpY2ggYXJl IG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRlZENvbHMoKS4KKwkgKi8KKwltb2RpZmllZF9p ZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBl c3RhdGUsIG9sZFNsb3QsIHNsb3QpOworCisJLyoKKwkgKiBDYWxsIGludG8gdGhlIHRhYmxl IEFNIHRvIHVwZGF0ZSB0aGUgaGVhcCB0dXBsZS4KIAkgKgogCSAqIE5vdGU6IGlmIGVzX2Ny b3NzY2hlY2tfc25hcHNob3QgaXNuJ3QgSW52YWxpZFNuYXBzaG90LCB3ZSBjaGVjayB0aGF0 CiAJICogdGhlIHJvdyB0byBiZSB1cGRhdGVkIGlzIHZpc2libGUgdG8gdGhhdCBzbmFwc2hv dCwgYW5kIHRocm93IGEKQEAgLTIzMzMsNiArMjQwOSw3IEBAIGxyZXBsYWNlOgogCQkJCQkJ CQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2Fp dCBmb3IgY29tbWl0ICovICwKIAkJCQkJCQkJJmNvbnRleHQtPnRtZmQsICZ1cGRhdGVDeHQt PmxvY2ttb2RlLAorCQkJCQkJCQltb2RpZmllZF9pZHhfYXR0cnMsCiAJCQkJCQkJCSZ1cGRh dGVDeHQtPnVwZGF0ZUluZGV4ZXMpOwogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTI1NTUsOCAr MjYzMiw4IEBAIEV4ZWNVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKi8KIHJlZG9fYWN0OgogCQlsb2NrZWR0 aWQgPSAqdHVwbGVpZDsKLQkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFjdChjb250ZXh0LCByZXN1 bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgc2xvdCwKLQkJCQkJCQkgICBjYW5TZXRU YWcsICZ1cGRhdGVDeHQpOworCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQsIHJl c3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBvbGRTbG90LAorCQkJCQkJCSAgIHNs b3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJLyoKIAkJICogSWYgRXhlY1VwZGF0 ZUFjdCByZXBvcnRzIHRoYXQgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIHdhcyBkb25lLApA QCAtMzQwNiw4ICszNDgzLDggQEAgbG1lcmdlX21hdGNoZWQ6CiAJCQkJCUFzc2VydChvbGR0 dXBsZSA9PSBOVUxMKTsKIAogCQkJCQlyZXN1bHQgPSBFeGVjVXBkYXRlQWN0KGNvbnRleHQs IHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsCi0JCQkJCQkJCQkJICAgTlVMTCwgbmV3c2xvdCwg Y2FuU2V0VGFnLAotCQkJCQkJCQkJCSAgICZ1cGRhdGVDeHQpOworCQkJCQkJCQkJCSAgIE5V TEwsIHJlc3VsdFJlbEluZm8tPnJpX29sZFR1cGxlU2xvdCwKKwkJCQkJCQkJCQkgICBuZXdz bG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCQkJCS8qCiAJCQkJCSAqIEFzIGlu IEV4ZWNVcGRhdGUoKSwgaWYgRXhlY1VwZGF0ZUFjdCgpIHJlcG9ydHMgdGhhdCBhCkBAIC00 NTQ0LDcgKzQ2MjEsNyBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJ CSAqIEZvciBVUERBVEUvREVMRVRFL01FUkdFLCBmZXRjaCB0aGUgcm93IGlkZW50aXR5IGlu Zm8gZm9yIHRoZSB0dXBsZQogCQkgKiB0byBiZSB1cGRhdGVkL2RlbGV0ZWQvbWVyZ2VkLiAg Rm9yIGEgaGVhcCByZWxhdGlvbiwgdGhhdCdzIGEgVElEOwogCQkgKiBvdGhlcndpc2Ugd2Ug bWF5IGhhdmUgYSB3aG9sZXJvdyBqdW5rIGF0dHIgdGhhdCBjYXJyaWVzIHRoZSBvbGQKLQkJ ICogdHVwbGUgaW4gdG90by4gIEtlZXAgdGhpcyBpbiBzdGVwIHdpdGggdGhlIHBhcnQgb2YK KwkJICogdHVwbGUgaW4gdG90YWwuICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRoIHRoZSBwYXJ0 IG9mCiAJCSAqIEV4ZWNJbml0TW9kaWZ5VGFibGUgdGhhdCBzZXRzIHVwIHJpX1Jvd0lkQXR0 Tm8uCiAJCSAqLwogCQlpZiAob3BlcmF0aW9uID09IENNRF9VUERBVEUgfHwgb3BlcmF0aW9u ID09IENNRF9ERUxFVEUgfHwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4 IGExYzg4YzZiMWI2Li40MzAzMTA4NTY1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCkBAIC0yNDc1LDggKzI0NzUsOCBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJl bGF0aW9uLT5yZF9rZXlhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfcGthdHRyKTsK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQlibXNfZnJlZShyZWxhdGlvbi0+ cmRfaG90YmxvY2tpbmdhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXpl ZGF0dHIpOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJaWYgKHJl bGF0aW9uLT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHViZGVzYyk7CiAJ aWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQpAQCAtNTI3Niw4ICs1Mjc2LDggQEAgUmVsYXRp b25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJl d2FyZTogZXZlbiBpZiBQSyBpcyBkZWZlcnJhYmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQ X0lERU5USVRZX0tFWQlDb2x1bW5zIGluIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkK ICAqCQkJCQkJCQkJaW5kZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1B UF9IT1RfQkxPQ0tJTkcJQ29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBI T1QKLSAqCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBp biBzdW1tYXJpemluZyBpbmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVE CUNvbHVtbnMgb25seSBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBpbmRleGVzCisgKglJTkRF WF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcwog ICoKICAqIEF0dHJpYnV0ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0g YXR0cmlidXRlcyAoZS5nLiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpA QCAtNTMwMCw4ICs1MzAwLDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRp b24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0 ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRt YXBzZXQgICpwa2luZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXgg Ki8KIAlCaXRtYXBzZXQgICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxp Y2EgaWRlbnRpdHkgKi8KLQlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1 bW5zIHdpdGggSE9UIGJsb2NraW5nIGluZGV4ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJp emVkYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0 bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIG9ubHkgaW4gc3VtbWFyaXpp bmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyBy ZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlz dAkgICAqbmV3aW5kZXhvaWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzIwLDEw ICs1MzIwLDEwIEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0 aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29w eShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSURF TlRJVFlfS0VZOgogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaWRhdHRyKTsK LQkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HOgotCQkJCXJldHVybiBi bXNfY29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyKTsKIAkJCWNhc2UgSU5ERVhf QVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX3N1bW1hcml6ZWRhdHRyKTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhF RDoKKwkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAkJ CWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRy S2luZCk7CiAJCX0KQEAgLTUzNjYsOCArNTM2Niw4IEBAIHJlc3RhcnQ6CiAJdWluZGV4YXR0 cnMgPSBOVUxMOwogCXBraW5kZXhhdHRycyA9IE5VTEw7CiAJaWRpbmRleGF0dHJzID0gTlVM TDsKLQlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxM OworCWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9pZGxpc3QpCiAJ ewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC01NDI2LDcgKzU0MjYs NyBAQCByZXN0YXJ0OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZykKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAm aG90YmxvY2tpbmdhdHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBD b2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBp IDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0MzUsOSArNTQz NSw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5n IGluZGV4ZXMgd2l0aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0 aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50 bwotCQkJICogaG90YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRo ZXkgYXJlIGluIGluZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVt LgorCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMg bXVzdCBiZSBhZGRlZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0 dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxk bid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5v dCBibG9jayBIT1QsIGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhl IGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTQ5 OCwxMiArNTQ5OCwyMCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJ CWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0J CWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0 cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9 CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNl ZCBieSBzdW1tYXJpemluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUg b3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICog YXR0cmlidXRlcy4KKwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo c3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19h ZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24n dCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X2tleWF0dHIpOwpAQCAtNTUxMiwxMCArNTUyMCwxMCBAQCByZXN0YXJ0OgogCXJlbGF0aW9u LT5yZF9wa2F0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwog CXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBOVUxMOwotCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9o b3RibG9ja2luZ2F0dHIpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxM OwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24t PnJkX3N1bW1hcml6ZWRhdHRyID0gTlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5k ZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IE5VTEw7CiAKIAkvKgog CSAqIE5vdyBzYXZlIGNvcGllcyBvZiB0aGUgYml0bWFwcyBpbiB0aGUgcmVsY2FjaGUgZW50 cnkuICBXZSBpbnRlbnRpb25hbGx5CkBAIC01NTI4LDggKzU1MzYsOCBAQCByZXN0YXJ0Ogog CXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2NvcHkodWluZGV4YXR0cnMpOwogCXJlbGF0 aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2luZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5y ZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwotCXJlbGF0aW9uLT5yZF9ob3Ri bG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9ja2luZ2F0dHJzKTsKIAlyZWxhdGlvbi0+ cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOworCXJlbGF0 aW9uLT5yZF9pbmRleGVkYXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVsYXRp b24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOwogCkBAIC01NTQyLDEwICs1NTUwLDEwIEBAIHJlc3RhcnQ6CiAJCQlyZXR1cm4gcGtp bmRleGF0dHJzOwogCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJ CXJldHVybiBpZGluZGV4YXR0cnM7Ci0JCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JM T0NLSU5HOgotCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRU Ul9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJpemVkYXR0cnM7CisJCWNh c2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCXJldHVybiBpbmRleGVkYXR0cnM7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0 dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDI0YTI3 Y2MwNDNhLi45MDliNGZhZDdjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzY2LDEwICsz NjYsOSBAQCBleHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIGV4dGVybiB2b2lkIGhlYXBfZmluaXNo X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg KnRpZCk7CiBleHRlcm4gdm9pZCBoZWFwX2Fib3J0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gVE1fUmVzdWx0 IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsCi0JCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQkJCQkJIENvbW1hbmRJZCBj aWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCQkJCQkgVE1fRmFpbHVy ZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCSBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAs IENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKKwkJCQkJ CQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUs CisJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBjb25zdCBi b29sIGhvdF9hbGxvd2VkKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJl bGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQg Y2lkLCBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAog CQkJCQkJCQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQzMSw2ICs0MzAsMTIgQEAgZXh0 ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpkZWFkLCBpbnQgbmRl YWQsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCk7CiAK Ky8qIGluIGhlYXAvaGVhcGFtLmMgKi8KK2V4dGVybiBib29sIEhlYXBVcGRhdGVIb3RBbGxv d2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4 X2F0dHJzLAorCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpOworZXh0ZXJuIExv Y2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz KTsKKwogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFj dXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFt cywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CmluZGV4IDA2MDg0NzUyMjQ1Li44ZWMyMGRjZmMxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CkBAIC01NDksNiArNTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJ CQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJCQkJCSBjb25zdCBCaXRtYXBz ZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVy ZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTIzLDEyICsxNTI0LDEyIEBAIHN0YXRp YyBpbmxpbmUgVE1fUmVzdWx0CiB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJ dGVtUG9pbnRlciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5k SWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkg ICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2Nr bW9kZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkg ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgVFVfVXBkYXRlSW5kZXhl cyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVf dXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBzbmFwc2hvdCwgY3Jv c3NjaGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwKLQkJCQkJCQkJCQkgbG9ja21vZGUs IHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUsCisJ CQkJCQkJCQkJIG1vZGlmaWVkX2lkeF9hdHRycywgdXBkYXRlX2luZGV4ZXMpOwogfQogCiAv KgpAQCAtMjAwOSw2ICsyMDEwLDcgQEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxl X2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25h cHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0 ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCSAgY29uc3QgQml0 bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCiAJCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4 ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRl eCA1ZGNmYWEyMDI3Zi4uMjRlYzQzYzM1YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3Iu aApAQCAtODA4LDUgKzgwOCw5IEBAIGV4dGVybiBSZXN1bHRSZWxJbmZvICpFeGVjTG9va3Vw UmVzdWx0UmVsQnlPaWQoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSwKIAkJCQkJCQkJCQkJICAg T2lkIHJlc3VsdG9pZCwKIAkJCQkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29rLAogCQkJCQkJ CQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjVXBk YXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJ CQkgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0 cywKKwkJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKTsKIAogI2VuZGlmCQkJ CQkJCS8qIEVYRUNVVE9SX0ggICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IDIzNjgzMGY2YjkzLi4xMGU1 ZTkwNDRlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTE2Miw4ICsxNjIsOCBAQCB0eXBlZGVmIHN0cnVj dCBSZWxhdGlvbkRhdGEKIAlCaXRtYXBzZXQgICpyZF9rZXlhdHRyOwkJLyogY29scyB0aGF0 IGNhbiBiZSByZWYnZCBieSBmb3JlaWduIGtleXMgKi8KIAlCaXRtYXBzZXQgICpyZF9wa2F0 dHI7CQkvKiBjb2xzIGluY2x1ZGVkIGluIHByaW1hcnkga2V5ICovCiAJQml0bWFwc2V0ICAq cmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4gcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwot CUJpdG1hcHNldCAgKnJkX2hvdGJsb2NraW5nYXR0cjsgLyogY29scyBibG9ja2luZyBIT1Qg dXBkYXRlICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7CS8qIGNvbHMgaW5k ZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqcmRfaW5kZXhl ZGF0dHI7IC8qIGFsbCBjb2xzIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwogCiAJUHVibGlj YXRpb25EZXNjICpyZF9wdWJkZXNjOwkvKiBwdWJsaWNhdGlvbiBkZXNjcmlwdG9yLCBvciBO VUxMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCmluZGV4IDI3MDAyMjQ5MzlhLi41N2I0NmVl NTRlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCkBAIC02OSw4ICs2OSw4IEBAIHR5cGVkZWYg ZW51bSBJbmRleEF0dHJCaXRtYXBLaW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfS0VZLAogCUlO REVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5U SVRZX0tFWSwKLQlJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcsCiAJSU5ERVhfQVRU Ul9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELAogfSBJ bmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKaW5kZXggNmRhYjYwYzkzN2Iu LjdlYmI3ODkwZDk2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dl bmVyYXRlZF92aXJ0dWFsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dl bmVyYXRlZF92aXJ0dWFsLm91dApAQCAtMjg3LDcgKzI4Nyw3IEBAIERFVEFJTDogIENvbHVt biAiYiIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLgogSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxV RVMgKDgsIERFRkFVTFQpLCAoOSwgREVGQVVMVCk7ICAtLSBlcnJvcgogRVJST1I6ICBjYW5u b3QgaW5zZXJ0IGEgbm9uLURFRkFVTFQgdmFsdWUgaW50byBjb2x1bW4gImIiCiBERVRBSUw6 ICBDb2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KLVNFTEVDVCAqIEZST00gZ3Rl c3QxdjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogIGEgfCBiICAKIC0t LSstLS0tCiAgMyB8ICA2CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RyaWdnZXJzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0 CmluZGV4IDk4ZGVlNjNiNTBhLi5lZjk4ZmQwY2NjZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90cmlnZ2Vycy5vdXQKQEAgLTk1OSwxNiArOTU5LDI0IEBAIE5PVElDRTogIG1h aW5fdmlldyBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfdXBkX3N0bXQp CiBOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgVVBEQVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmll d191cGRfc3RtdCkKIFVQREFURSAwCiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdn ZXIKLURFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUg RlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIwIEFORCBiID0gMzE7CiBOT1RJQ0U6ICBtYWlu X3ZpZXcgQkVGT1JFIERFTEVURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQog Tk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9k ZWwpCi1OT1RJQ0U6ICBPTEQ6ICgyMSwxMCkKLU5PVElDRTogIG1haW5fdmlldyBJTlNURUFE IE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAoMjAsMzEp CitOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmll d19kZWxfc3RtdCkKK0RFTEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9 IDIxIEFORCBiID0gMTA7CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBTVEFU RU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQorTk9USUNFOiAgbWFpbl92aWV3IElOU1RF QUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCitOT1RJQ0U6ICBPTEQ6ICgyMSwx MCkKK05PVElDRTogIG1haW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92 aWV3X2RlbF9zdG10KQorREVMRVRFIDEKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBh ID0gMjEgQU5EIGIgPSAzMjsKK05PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNU QVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5T VEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIx LDMyKQogTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfZGVsX3N0bXQpCi1ERUxFVEUgMworREVMRVRFIDEKIERFTEVURSBGUk9NIG1haW5f dmlldyBXSEVSRSBhID0gMzEgUkVUVVJOSU5HIGEsIGI7CiBOT1RJQ0U6ICBtYWluX3ZpZXcg QkVGT1JFIERFTEVURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNF OiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKaW5k ZXggOWNlYTUzOGI4ZTguLjQ4NzdhMWRkY2U5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zNzIsMTUgKzM3MiwxNSBAQCBJ TlNFUlQgSU5UTyByd192aWV3MTYgKGEsIGIpIFZBTFVFUyAoMywgJ1JvdyAzJyk7IC0tIHNo b3VsZCBiZSBPSwogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYT0zLCBhYT0tMyBXSEVSRSBhPTM7 IC0tIHNob3VsZCBmYWlsCiBFUlJPUjogIG11bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNhbWUg Y29sdW1uICJhIgogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9LTMgV0hFUkUgYT0zOyAtLSBz aG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7CitTRUxFQ1QgKiBGUk9NIGJh c2VfdGJsIE9SREVSIEJZIGE7CiAgYSAgfCAgIGIgICAgCiAtLS0tKy0tLS0tLS0tCisgLTMg fCBSb3cgMwogIC0yIHwgUm93IC0yCiAgLTEgfCBSb3cgLTEKICAgMCB8IFJvdyAwCiAgIDEg fCBSb3cgMQogICAyIHwgUm93IDIKLSAtMyB8IFJvdyAzCiAoNiByb3dzKQogCiBERUxFVEUg RlJPTSByd192aWV3MTYgV0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKaW5kZXggZTc1MDg2NmQyZDgu Ljg3NzE1MmQ2ZDY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0 ZWRfdmlydHVhbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3Zp cnR1YWwuc3FsCkBAIC0xMjcsNyArMTI3LDcgQEAgQUxURVIgVklFVyBndGVzdDF2IEFMVEVS IENPTFVNTiBiIFNFVCBERUZBVUxUIDEwMDsKIElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFMVUVT ICg4LCBERUZBVUxUKTsgIC0tIGVycm9yCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVFUyAo OCwgREVGQVVMVCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiAKLVNFTEVDVCAqIEZST00g Z3Rlc3QxdjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogREVMRVRFIEZS T00gZ3Rlc3QxdiBXSEVSRSBhID49IDU7CiBEUk9QIFZJRVcgZ3Rlc3QxdjsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHJpZ2dlcnMuc3FsCmluZGV4IGVhMzk4MTdlZTNkLi42Y2ViNjE2MDhhZSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbApAQCAtNjYwLDcgKzY2MCw5IEBAIFVQ REFURSBtYWluX3ZpZXcgU0VUIGIgPSAzMiBXSEVSRSBhID0gMjEgQU5EIGIgPSAzMSBSRVRV Uk5JTkcgYSwgYjsKIFVQREFURSBtYWluX3ZpZXcgU0VUIGIgPSAwIFdIRVJFIGZhbHNlOwog CiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdnZXIKLURFTEVURSBGUk9NIG1haW5f dmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUg YSA9IDIwIEFORCBiID0gMzE7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIx IEFORCBiID0gMTA7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFORCBi ID0gMzI7CiBERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklORyBh LCBiOwogCiBcc2V0IFFVSUVUIHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFi bGVfdmlld3Muc3FsCmluZGV4IDE2MzVhZGRlMmQ0Li4xNjBlNzc5OTcxNSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCkBAIC0xMjUsNyArMTI1LDcg QEAgSU5TRVJUIElOVE8gcndfdmlldzE2IFZBTFVFUyAoMywgJ1JvdyAzJywgMyk7IC0tIHNo b3VsZCBmYWlsCiBJTlNFUlQgSU5UTyByd192aWV3MTYgKGEsIGIpIFZBTFVFUyAoMywgJ1Jv dyAzJyk7IC0tIHNob3VsZCBiZSBPSwogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYT0zLCBhYT0t MyBXSEVSRSBhPTM7IC0tIHNob3VsZCBmYWlsCiBVUERBVEUgcndfdmlldzE2IFNFVCBhYT0t MyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJPTSBiYXNlX3RibDsK K1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKIERFTEVURSBGUk9NIHJ3X3Zp ZXcxNiBXSEVSRSBhPS0zOyAtLSBzaG91bGQgYmUgT0sKIC0tIFJlYWQtb25seSB2aWV3cwog SU5TRVJUIElOVE8gcm9fdmlldzE3IFZBTFVFUyAoMywgJ1JPVyAzJyk7Ci0tIAoyLjUxLjIK Cg== --a8a718ca00664839aa14577324b2a80c--