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 1wgjC6-006MLU-1M for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 13:17:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgjC5-000NkF-0B for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 13:17:05 +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 1wgjC3-000Nk5-10 for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 13:17:04 +0000 Received: from fout-a4-smtp.messagingengine.com ([103.168.172.147]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wgjBl-00000001qip-0GUA for pgsql-hackers@postgresql.org; Mon, 06 Jul 2026 13:17:02 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 9380CEC01D4 for ; Mon, 6 Jul 2026 09:16:43 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Mon, 06 Jul 2026 09:16:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=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=fm2; t=1783343803; x=1783430203; bh=BFCJXBmdrb C20Kgl7YxivwT7+/wk+77msYlvCFEhG1M=; b=as9P4COIyUhEIh2TcoF9aki2N+ jWYeAIVB4L4WhH5ylSBReB5NgbM0qeBemE2IFxyqUgqemjCtwxCN6xSJYup125xY su2o6bo9sd7/N+7fLtxb1+ktr6/u5WW8fEHtKEwiEfXKuoLR8v1xYT6QAU4u5jQJ 3XRfPaA4ZUyKja7HB+E4IokOQ2RQlwTHZlzEEDDY7gdvD4fQH8LFCxzHwRpqb2MG an4kRujBeVHF3fMpZpKnYf+jX7+Jj6B4Q5nRbaz1AoFiJ2Qo+aoyGGZfIypYqQaL TI7IYB9w1vRCMixQxjDWpJJtAmbj+3xmKD6jdh8uH4sqggjlBB/70pcxfLvw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=fm2; t= 1783343803; x=1783430203; bh=BFCJXBmdrbC20Kgl7YxivwT7+/wk+77msYl vCFEhG1M=; b=By4Igwq1X5xEooUN8Qx9Y/NjiaRXHe2JVcGareUFXQhBOZnivA7 DsFM7H3EBobDIigQvk0tfV0OoRchBvD8Cu12Z4+AkphCE9mkZEuSgdCnSLfn6UhT XcHAgDwmDxmAtScsHXrO9LNnFmVZJYWYJqz7G6z7cMFUUw087YhbFWSzWS88MQct 7npK9abz786mx7a9058lC+3LEmIqtCoY0CdlKz4M0PXNeQhgZYYjvugCoL7hIzpi SGCa6PxaZEa/M8mqWtw7wXlNvax4e2wNa/0KvHSPm/n5P408wwHkrQoaIcr4fxpJ q6QiERkF3KuFA/hw1s8QNi7LGX76Zfnlg9Q== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTFju6jw0oMx1zz7PA8wHx5VYseWTsHO2qKgKkregldwdZt/H2fbEQkD5amEayjsgA z+aNslh9v88/DbUsURSkN0P8YumIVm7FeitaCOuVC3nKtVLmmEKklJrqrVyJMncTixFrbU PrKmoAdAbVu0A77CcDzLT2ZW+2D3BUi6aMgi/xZa7MEyoSbcC8xwIjaEAyoYoecfbU6uO3 PBLH28N83A0zbmYHwnZvBzrqFkKbd88h2qEr1T+mBEZ2BUCMbZY935f/kR+AAM6NSntW2i b/ay52UGB4jiDOgzCkX9u88MTqs/LRIghzuZc+c0wtfE0M77hmHh8CU5yePNhiAeLbj4W+ q07R67pIqxUZoK9eqL98kWvfziOcNRATKZT3bjnafH9loJ7LyJ8XpnJ7u5MgC3cBox/SWn mDAahRbXIZ+hx9GqDolRvr41cGESgk145D6x8OKycDkO1zS431ieNDvO8rXKgWDLQuNn1M vAeiJ+5YNseKMJ+AQmcAGcN5/N5NvOFegsVkRV/x5J67lFnmsO1MlcRBi43d8IgHqJtXvB fF/hn5DfQaNMtwHXEHK52BnMBepBmflgEa42knXANwjJVr5017oaG1FyEKE3rc7KCJipp3 bw9M9HfMA6ljdwJCnLG6PugSidDc1gGcnGTYrwYUqwV4LlHqAlLqqSQ20O/Q X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 31236700065; Mon, 6 Jul 2026 09:16:43 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Mon, 06 Jul 2026 09:16:22 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: In-Reply-To: <264c0f83-708d-4ac2-88fa-a5d6d73200d3@app.fastmail.com> References: <780845de-c0f9-4888-b43d-8d3caa7c2899@app.fastmail.com> <57c9e23a-bb03-4d7c-81f5-551cd42f8b34@app.fastmail.com> <264c0f83-708d-4ac2-88fa-a5d6d73200d3@app.fastmail.com> Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=f813cfcf58bb71b174850efc07610ae5296bf168 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, I've rebased Tepid (e994f956e48) and done a bit of minor cleanup. No ne= w features, no design changes. Same nine commits, same structure. Two co= mmits are unchanged (the HOT-behavior test commit and the benchmark harn= ess). * pg_surgery now understands SIU stubs. heap_force_freeze/heap_force_kil= l skip xid-free HOT-indexed stubs instead of erroring or corrupting them= , with a regression test that builds a real stub. (This was the one subs= tantive gap the macOS reviewer flagged against v48.) * Prune/vacuum correctness =E2=80=94 the most important fixes: - Restored upstream's hard elog(ERROR, "dead heap-only tuple =E2=80=A6 = not linked to from any HOT chain") guard for the classic-HOT case. v48 s= ilently reclaimed such a tuple, which would have masked real heap corrup= tion; SIU's legitimate stub handling is now cleanly separated from that = error path. - Fixed a primary/standby divergence bug: the lazy_vacuum_heap_page WAL= record must always log a hardcoded false cleanup-lock flag (that call s= ite never re-points redirects/stubs), and v48 was passing the runtime-va= riable value. - Added bounds checking (Assert(bmnatts <=3D relnatts) plus a defensive= clamp) before the stub-bitmap union/subset operations, closing a stack-= buffer-overflow risk from a corrupt or unbounded stub natts. * Executor / index-scan: - Fixed an out-of-bounds read in ExecCompareSlotAttrs (missing continue= after the system-attribute branch). - RelationGetIndexedAttrs now parses raw catalog text directly rather t= han going through RelationGetIndexExpressions/Predicate, which could con= st-fold away Var references and under-report indexed attributes. - Removed dead code (an unused idx_attrs fetch in simple_heap_update, a= n empty branch in index_delete_check_htid) and corrected an inaccurate "= must mirror heap_multi_insert" comment. * amcheck now reports corruption on out-of-range or self-referential stu= b forward links, matching the existing redirect-link check. * Statistics: the n_hot_indexed counter and the matched/skipped pgstat c= ounters now exclude stubs and fire only after the partial-index predicat= e check (v48 over-counted). * Logical replication: rebased over upstream's new conflict_log_destinat= ion feature (a subscription bit-flag collision resolved, 0x00080000->0x0= 0100000), and the subscription field/option renamed hotindexedmode=E2=86= =92hotindexedonapply for clarity, with a matching psql \dRs+ display fix= (shows the word, not the raw char code). * Tests: hardened the count-sensitive tables against an autovacuum lock-= steal race (autovacuum_enabled =3D false), and replaced a relpages-based= assertion (only updated by VACUUM/ANALYZE, so trivially true) with a re= al pg_relation_size check. * Plus routine cleanups =E2=80=94 removed a few redundant/unused include= s, fixed typos. best. -greg --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiNzJmMjMxMWI3MjI5NjkwY2VhNzdlYjk4NjgyYWU5ZThjZWU4MjFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDEv OV0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGV4aXN0aW5nIGNsYXNzaWMg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZQpiZWhhdmlvciwgY29tbWl0dGVkIGZpcnN0 IHNvIHRoZSBiZWhhdmlvcmFsIGNoYW5nZXMgaW4gdGhlIGxhdGVyIEhPVC1pbmRleGVkCmNv bW1pdHMgYXJlIGRpZmZhYmxlIGFnYWluc3QgYSBrbm93bi1nb29kIGJhc2VsaW5lLiAgVGhp cyBjb21taXQgYWRkcwp0ZXN0cyBzbyBhcyB0byBjb2RpZnkgZXhwbGljaXRseSB0aGUgSE9U IGNvbnRyYWN0IGZvciB0aGUgaGVhcCBBTS4KClRoZSBuZXcgaG90X3VwZGF0ZXMgcmVncmVz c2lvbiB0ZXN0IGV4ZXJjaXNlczoKLSBCYXNpYyBIT1QgdnMgbm9uLUhPVCB1cGRhdGUgZGVj aXNpb25zCi0gVGhlIGFsbC1vci1ub25lIHByb3BlcnR5IGFjcm9zcyBtdWx0aXBsZSBpbmRl eGVzCi0gUGFydGlhbCBpbmRleGVzIGFuZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChz dW1tYXJpemluZykgaW5kZXhlcyBhbGxvd2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVt biBoYW5kbGluZyB3aXRoIEhPVAotIFVuaXF1ZSBjb25zdHJhaW50IGJlaGF2aW9yCi0gTXVs dGktY29sdW1uIGluZGV4ZXMKLSBQYXJ0aXRpb25lZCB0YWJsZSBIT1QgdXBkYXRlcwotIEhP VCBjaGFpbiBmb3JtYXRpb24gYW5kIHRoZSBpbmRleC1zY2FuIHdhbGsgb3ZlciBhIGNoYWlu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgfCA3NDUgKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgfCA2MDUg KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNTUgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVz Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjczZmUzMzEw ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDc0NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBU ZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhp cyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVz ZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUu Zy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNl IG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rp b25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVj dCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0 byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcworLS0KKy0tIExvYWQgcmVxdWly ZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNw ZWN0OworLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMg VEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5ULAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQK K0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitCRUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1l OjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBm b3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6 IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0 YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291 bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGlu ZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlv bi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09BTEVTQ0UocGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ2hl Y2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3Nv ciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2No YWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOwor QkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFn ZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9j dGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8 fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AK KyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRp bmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmlu dF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRB QkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3Rp ZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1 c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsK KyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOwor ICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAg cGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxz ZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3Nv ciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9P UAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcg fHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNl c3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHBy ZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBm b3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7 CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUg cG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJl bnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElO CisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdI RVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50 X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs CisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3Np dGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQp CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMg b2NjdXJyZWQKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAgMworKDEgcm93 KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJy ZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90 X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFn cyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwx KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygyIHJvd3MpCisKKy0tIFZhY3V1bSB0aGUg cmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0gaG90 X3Rlc3Q7CistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCitX SVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBw cmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJy ZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwg IGxwX2ZsYWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBmICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSByb3cpCisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisg ICAgICAgNCB8ICAgMworKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQg KG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2 YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVT RVQgZW5hYmxlX3NlcXNjYW47CistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcg b25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVzCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBp bnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gVXBkYXRlIG9u bHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1u IGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChh bGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygx IHJvdykKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIFBhcnRp YWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAn ZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywg J2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywg J2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJv dyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVk aWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAn dXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0 byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FMIGlz IGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNo ZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJl IG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxl dGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAg IDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZl JyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZl CisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9u LVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAg dmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVz dCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1 bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQor VVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28g YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0 IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsK Ky0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcp OworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVtbiB1 bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cp CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAzIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1 bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgdW5pcXVlIGNv bnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBG Uk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAg CistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAxMDAgfCB1cGRh dGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKworLS0gVGhpcyBz aG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5p cXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFs dWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5 IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KKy0t IE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xf YyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Cist LSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAg MAorKDEgcm93KQorCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIw OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAt IHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNiB8ICAgMgorKDEgcm93KQorCistLSBQ YXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK05PVElDRTog IHRhYmxlICJob3RfdGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5n CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwKKyAg ICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0 ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9O IEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFM VUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVS RSBpZCA9IDE7CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVt bikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRh dGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4ZXMgd29y ayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDIwMDsKKyBpZCAKKy0tLS0KKyAgMgorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBj b2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cpCisKKy0t IFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQorQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04g aG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKKy0tIENyZWF0ZSBhIHRyaWdnZXIg dGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitC RUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOwor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRS SUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKKyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90 cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1v ZGlmeV90cmlnZ2VyZWRfY29sKCk7CitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1 bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQ REFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0g MTsKKy0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4g d2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBj b2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9N IGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9jb2wgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90 X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBKU09OQiBw YXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lm aWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9q c29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rl c3QgVkFMVUVTCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJO WUMifScpLAorICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0n KTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJl IEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tu YW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29y a3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScg PSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCistLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAwCisoMSByb3cpCisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAorU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr CistLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQorTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CitJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9y ZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUg SE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIp CitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMSdd IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDAKKygxIHJvdykKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFmdGVy IGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGluZyBv biBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBhbmQg dmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7ImtleTEi OiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMg fCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBp ZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdI RVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3In0nOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYmQ5NWNjMjQ5Nzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQzLDYgKzE0MywxMSBA QCB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCiAjIHRoaXMgdGVzdCBhbHNvIHVzZXMgZXZl bnQgdHJpZ2dlcnMsIHNvIGxpa2V3aXNlIHJ1biBpdCBieSBpdHNlbGYKIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogCisjIC0tLS0tLS0tLS0KKyMgSE9UIHVwZGF0ZXMgdGVzdHMKKyMgLS0tLS0t LS0tLQordGVzdDogaG90X3VwZGF0ZXMKKwogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRo ZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwog IyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE4ODk0MDA2MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsNjA1IEBACist LQorLS0gSE9UX1VQREFURVMKKy0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tCistLSBUaGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMg dGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZv aWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1v ZGlmaWVkKS4KKy0tCistLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgor LS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1p bmF0aW9uCistLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRh dGVzCistLQorCistLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJ T04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IEhP VCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291 bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5U LAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQKK0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitC RUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJl YWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIElu IGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMg d29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAo QkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBm bHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGlj aXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2Yg YSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0 X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgIGJsb2NrX251 bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHRh cmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBMb29rIGZvciBhIGRp ZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJn ZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFt ZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAgIFJFVFVSTiB0cnVlOworICBFTkQg TE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CistLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRl eHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQs IGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVh bikgQVMKKyQkCisjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBsaW5lX3B0ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0g c3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlkIHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7Cisg IG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZv dW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsK K0JFR0lOCisgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0 byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwg bHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAg IEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0g KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8 fCAnKScpOjp0aWQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElU OworICBFTkQgTE9PUDsKKworICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQg d2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgor ICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9s bG93IHRoZSBjaGFpbiBmb3J3YXJkCisgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlv bnMgTE9PUAorICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworCisgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAg TE9PUAorICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1l IDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVz ZWQgKDApJworICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMp JworICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgIEVORDsKKworICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICBwb3NpdGlvbiwKKyAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19u YW1lLAorICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRf Y3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29s ZWFuCisgICAgICA7CisKKyAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOwor ICAgICAgRU5EIElGOworCisgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsK KworICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBjdXJy ZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAx OworICAgIEVORCBMT09QOworCisgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJF VFVSTjsKKyAgICBFTkQgSUY7CisgIEVORCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt bikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9p ZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgz LCAzMDAsICdpbml0aWFsJyk7CisKKy0tIEdldCBiYXNlbGluZQorU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMg KG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOworCistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK KyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFn cywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCistLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhv dF90ZXN0OworCistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAor ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOworCistLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZCA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRp Y2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworCistLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1 bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCist LSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAo b3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24g bm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwK KyAgICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworCistLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmlu X2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IGFsc28gYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0g VE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QK K0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90 ZXh0IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9j b2wpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1 bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK KworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUg aW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0 YTInKTsKKworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZp b2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBp ZCA9IDI7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBu b24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2Ig aW50LAorICAgIGNvbF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAy MCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKworLS0gVXBkYXRl IGNvbF9iIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYiA9IDIwOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEgKG5vdCBp bmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBh cnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQs CisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkg UkFOR0UgKHBhcnRpdGlvbl9rZXkpOworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEg UEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CisKKy0tIFVw ZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScg V0hFUkUgaWQgPSAxOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVk IGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9u IHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9u ZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVt biBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisKKy0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9U CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5 IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBo ZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4g dGhlIFVQREFURSdzIFNFVCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwK KyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OworCistLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1 bW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkK K1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9 IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkK KyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKK0lO U0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwor CistLSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5k ZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2Rp ZmllZCBhbiBpbmRleGVkIGNvbHVtbgorVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBWZXJpZnkgaXQgd2FzIE5PVCBh IEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisKKy0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 CisKK0RST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElP TiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tp bmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRv IG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworCitDUkVBVEUg VEFCTEUgaG90X2pzb25iX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBk YXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENyZWF0ZSBleHBy ZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90 X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwor CitJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6 IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJC b2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O IHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScs ICczMScpIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0t IFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworCistLSBUZXN0IGpzb25iX2RlbGV0ZSBv biBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hF UkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7CisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBz aG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90 ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0 dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0 aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRl cworCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVBVEUgSU5ERVgg aG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1l L3RleHQoKScsIGRvYykpKTsKKworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwor ICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJz b24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+ PC9wZXJzb24+Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9y IGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKKy0tIEZ1bGwgWE1MIHZhbHVl IHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1 aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8 cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJF IGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3Qn KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNl MjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBp bmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKKwor RFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBh bWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNo CisKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CitDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKKworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CisKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK K1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10g V0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5f dGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1j b21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5nIG9uIEdJ TiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1 ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZh bDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitVUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOworCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1NFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Rf cGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3Vu dCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41MC4xCgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBmNjgyMjk5MjM1MzM5NmQ4Mzg5Y2Q4OTQxYWExMWQ2M2U3YzQyNTg2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDIv OV0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXM7CndoYXQgbW92ZXMgdG8gdGhlIGV4ZWN1dG9yIGlzIG9ubHkgdGhl IGRldGVybWluYXRpb24gb2YgdGhlICJtb2RpZmllZAppbmRleGVkIGF0dHJpYnV0ZXMiICht b2RpZmllZF9pZHhfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSByZXBs YWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9yZSB0 YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4K ZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1cGxl IGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxvY2sg aXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFwX3Vw ZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBwYXJ0 aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdBTCBs b2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhhdCBsb2dpYwptb3ZlcyBpbnRv IGhlYXBfdXBkYXRlKCkgYW5kIGludG8gdGhlIHJlcGxhY2VtZW50IGhlbHBlcgpIZWFwVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpLCBzbyBzaW1wbGVfaGVhcF91cGRhdGUoKSBhbmQKaGVh cGFtX3R1cGxlX3VwZGF0ZSgpIHNoYXJlIHRoZSBzYW1lIGxvZ2ljIHNpbmNlIGJvdGggY2Fs bCBpbnRvCmhlYXBfdXBkYXRlKCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KCkgaW4gRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHVzZXMgRXhlY0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGlj aCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0 aCB0aGUgc2V0IG9mCmluZGV4ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZp ZWQgaW5kZXhlZCBzZXQsIHRoZQptb2RpZmllZF9pZHhfYXR0cnMuCgpUaGlzIHBhdGNoIGlu dHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNh dGlvbgphbmQgaW5jcmVhc2UgcmVhZGFiaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo KSBhbmQKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIHVzZWQgaW4gYm90aCBoZWFw X3VwZGF0ZSgpIGFuZApzaW1wbGVfaGVhcF91cGRhdGUoKS4KCmhlYXBfdXBkYXRlKCkgaXMg bm93IGNhbGxlZCB3aXRoIGxvY2ttb2RlIHByZS1kZXRlcm1pbmVkIGFuZCBhIGJvb2xlYW4K aW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgbWF5IGJlIEhPVCwgYm90aCBjb25zdC4g SWYgZHVyaW5nCmhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSBmaXRzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHRoYXQgYm9vbGVhbiBpcwp0cnVlLCB0aGUgdXBkYXRlIGlzIEhPVC4gU28g YWx0aG91Z2ggdGhlIGZ1bmN0aW9ucyBhbmQgdGltaW5nIG9mIHRoZQpIT1QgZGVjaXNpb24g Y29kZSBoYXZlIGNoYW5nZWQsIG5vbmUgb2YgdGhlIGxvZ2ljIGdvdmVybmluZyB3aGVuIEhP VCBpcwphbGxvd2VkIGhhcyBjaGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJl IGV4cG9zZWQgbm9uZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0 ZXN0cywgd2hpY2ggaGF2ZSBiZWVuIGFkanVzdGVkIHRvIGF2b2lkIGluY29uc2lzdGVudCBy ZXN1bHRzCmR1ZSB0byB0dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgoK QXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpEaXNjdXNzaW9uOiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTU1Ni8KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0Lzc4NTc0QjI0LUJF MEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQyU0MGFtYXpvbi5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NTEgKysrKysrKysrKysr LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAg ICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAg ICAgICAgICB8ICA3MiArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICA4NiArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hl LXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQog MjMgZmlsZXMgY2hhbmdlZCwgNTc2IGluc2VydGlvbnMoKyksIDIyNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi41YjA1OWE1 YWNlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDggQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRy YW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBAQCBz dGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMg dm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlm Ci1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBI ZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wg Kmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxv Y2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwK IAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMsNyBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAg KiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5 IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhl IGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxl J3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3Qs IGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICszMjAz LDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAs CiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2Vk KCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0Owog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlCaXRt YXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQgICpp bnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlCaXRt YXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsKIAlI ZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEsMTMg KzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxl X2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRl ID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlr ZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9j a2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwg PSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJhbnNh Y3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50MTYJ CWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBh dHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgot CSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3 ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24g YSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBi ZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYg d2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lz dGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRj aCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBjYWNo ZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgotCSAq IFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkgYW5k IGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBhbGwg aW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0gTlVM TDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVy cyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaWRf YXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0 YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUg ZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICogY2F0 YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBs YXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGllcyBv ZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxjYWNo ZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRvIGZy ZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVf aW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCi0J CWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0 IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAqIEZp bGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4g b2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAqIHJl cXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdl R2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRo ZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkgb2Yg dGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUK LQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBpcyBy ZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRlbmVk IHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcgdHVw bGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUu ICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBsaWNh SWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1 dGUKKwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpZGVudGl0eSBvciBpZiBhbnkgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGluIGFu IGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkgaW4g dGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1heSBi ZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gc28gdGhleSBhcmUgYXZhaWxhYmxl IHRvIHJlcGxpY2FzLgogCSAqLwotCW1vZGlmaWVkX2F0dHJzID0gSGVhcERldGVybWluZUNv bHVtbnNJbmZvKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKLQkJCQkJCQkJCQkJICBp ZF9hdHRycywgJm9sZHR1cCwKLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0ZXJu YWwpOworCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhf YXR0cnMsIGlkX2F0dHJzKTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJeworCQlC aXRtYXBzZXQgICphdHRyczsKKwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERl c2NyKHJlbGF0aW9uKTsKKwkJaW50CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICogUmVk dWNlIHRoZSBzZXQgdW5kZXIgcmV2aWV3IHRvIG9ubHkgdGhlIHVubW9kaWZpZWQgaW5kZXhl ZCByZXBsaWNhCisJCSAqIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzLiAgaWR4X2F0dHJzIGlz IGNvcGllZCAoYnkgYm1zX2RpZmZlcmVuY2UoKSkKKwkJICogbm90IG1vZGlmaWVkIGhlcmUu CisJCSAqLworCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkeF9hdHRycywgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwkJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIGlkX2F0dHJz KTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4 KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRy bnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRyTnVt YmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgorCQkJ ICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJfQklU TUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJQXNz ZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1cCwg YXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hlY2sg YXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlpZiAo aXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAt IDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlmIHRo ZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlm IChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9pbnRl cih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8qCiAJ ICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBncmFi IGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTMzOTQsOSArMzQxNyw4IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUga2V5 IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2ZSBh dCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9kaWZp ZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5vS2V5 RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7 CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlrZXlf aW50YWN0ID0gdHJ1ZTsKIApAQCAtMzQxMyw3ICszNDM1LDcgQEAgaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVz aXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJbXhh Y3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0gZmFs c2U7CiAJfQpAQCAtMzQ5Miw3ICszNTE0LDcgQEAgbDI6CiAJCQlib29sCQljdXJyZW50X2lz X21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3QoKE11 bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2RlLCAmY3Vy cmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9pc19tZW1i ZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwogCkBAIC0zNTAxLDcgKzM1MjMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEgbG9j ayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8KIAkJ CQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhy ZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2FjcXVp cmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUsCiAJCQkJ CQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyogd2Fp dCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNTg2LDcgKzM2MDgsNyBAQCBsMjoKIAkJCSAqIGxv Y2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiks ICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1 cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAmb2xk dHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM2NDYsMTcgKzM2Njgs MTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJVW5s b2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUp OworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBs b2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJUmVsZWFz ZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJ Ym1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2Zy ZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJlZShtb2Rp ZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2Zy ZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRo ZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApA QCAtMzY4Niw3ICszNzA1LDcgQEAgbDI6CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhI ZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAgb2xk dHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5m b21hc2syLAotCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4aWQs IGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21hc2tf b2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0zODAz LDcgKzM4MjIsNyBAQCBsMjoKIAkJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVw bGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1cC50 X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFz azIsCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhpZCwg bG9ja21vZGUsIGZhbHNlLAogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAmaW5m b21hc2tfbG9ja19vbGRfdHVwbGUsCiAJCQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29sZF90 dXBsZSk7CiAKQEAgLTM5NzYsMjAgKzM5OTUsOCBAQCBsMjoKIAkJICogdG8gZG8gYSBIT1Qg dXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgog CQkgKiBjaGFuZ2VkLgogCQkgKi8KLQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRy cywgaG90X2F0dHJzKSkKLQkJeworCQlpZiAoaG90X2FsbG93ZWQpCiAJCQl1c2VfaG90X3Vw ZGF0ZSA9IHRydWU7Ci0KLQkJCS8qCi0JCQkgKiBJZiBub25lIG9mIHRoZSBjb2x1bW5zIHRo YXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMKLQkJCSAqIHdlcmUgdXBkYXRl ZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sKLQkJ CSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBhbmQg dXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5zIHdlcmUgdXBkYXRl ZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVlIGJvdW5kIGNo YW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KLQkJCSAqLwotCQkJaWYgKGJtc19vdmVy bGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBkYXRl ID0gdHJ1ZTsKLQkJfQogCX0KIAllbHNlCiAJewpAQCAtNDAwNSw4ICs0MDEyLDcgQEAgbDI6 CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEuCiAJ ICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVsYXRpb24s ICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGlk X2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwKKwkJCQkJCQkJCQkg ICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGllZCk7 CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBs b2dnZWQgKi8KQEAgLTQxMzYsNyArNDE0Miw3IEBAIGwyOgogCSAqIFJlbGVhc2UgdGhlIGxt Z3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0LgogCSAqLwogCWlmIChoYXZlX3R1cGxlX2xv Y2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwg KmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50 X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVsYXRp b24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKIApAQCAtNDE1MCwzMSAr NDE1NiwxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CiAJfQogCi0JLyoK LQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1cGRhdGUgbWF5IHN0aWxsIG5lZWQg dG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8gdXBk YXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGluY29ycmVjdAotCSAqIHJlc3VsdHMgKGZv ciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRoZSBibG9jayBtYXkgY2hhbmdlIHdpdGgg dGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYgKHVzZV9ob3RfdXBkYXRlKQotCXsKLQkJ aWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFy aXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0JfQotCWVs c2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCiAJaWYgKG9sZF9rZXlfdHVwbGUg IT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tleV90 dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRycyk7 Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1zX2Zy ZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwli bXNfZnJlZShpZHhfYXR0cnMpOworCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25lZCBi eSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCiAKIAlyZXR1cm4gVE1fT2s7CiB9CkBA IC00MzQ3LDI4ICs0MzM0LDExNSBAQCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0dXBk ZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsCiB9CiAKIC8q Ci0gKiBDaGVjayB3aGljaCBjb2x1bW5zIGFyZSBiZWluZyB1cGRhdGVkLgotICoKLSAqIEdp dmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRoZSBv dXRwdXQgYml0bWFwc2V0KSwKLSAqIGZyb20gdGhvc2UgbGlzdGVkIGFzIGludGVyZXN0aW5n LCB0aGUgc2V0IG9mIGNvbHVtbnMgdGhhdCBjaGFuZ2VkLgotICoKLSAqIGhhc19leHRlcm5h bCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZyb20g dGhvc2UKLSAqIGxpc3RlZCBhcyBpbnRlcmVzdGluZykgb2YgdGhlIG9sZCB0dXBsZSBpcyBh IG1lbWJlciBvZiBleHRlcm5hbF9jb2xzIGFuZCBpcwotICogc3RvcmVkIGV4dGVybmFsbHku CisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRoZXI6IGEpIHRoZXJlIGFy ZSBubyBtb2RpZmllZCBpbmRleGVkCisgKiBhdHRyaWJ1dGVzLCBvciBiKSB0aGUgbW9kaWZp ZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGluZGV4ZXMuCisgKiBMYXRl ciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBwZXJmb3JtIGEgSE9UIHVw ZGF0ZSBpZiB0aGVyZSBpcworICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRoZSBuZXcgdHVw bGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZAorICogdGhhdCBIT1Qg aXMgYWxsb3dlZC4KKyAqLworYm9vbAorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJ CSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSkKK3sKKwlib29sCQlob3RfYWxsb3dlZDsKKwor CS8qCisJICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2ZmIGJ5IGFzc3VtaW5n IHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKKwkgKiBuZWVkIHVwZGF0aW5nIGFuZCBIT1Qg aXMgYWxsb3dhYmxlLgorCSAqLworCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkqc3VtbWFyaXpl ZF9vbmx5ID0gZmFsc2U7CisKKwkvKgorCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hlbiB0 aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKKwkgKiBhbGxv d2VkLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJ aG90X2FsbG93ZWQgPSB0cnVlOworCWVsc2UKKwl7CisJCUJpdG1hcHNldCAgKnN1bV9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJ CQkgICBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEKTsKKworCQkvKgorCQkgKiBBdCBs ZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMgY2Fz ZSAoYikKKwkJICogd2hlcmUgYWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIGFy ZSBvbmx5IHVzZWQgYnkKKwkJICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlzLCB0 aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlzIHVw ZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKKwkJICogYW5k IGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUgcmVs YXRpb24uCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0cnMs IHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJCSpzdW1tYXJp emVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5vdyB3 ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVk CisJCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhl IFVQREFURSkgYW5kIHRoYXQKKwkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBhdHRy aWJ1dGVzIGlzIHVzZWQgYnkgYQorCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBIT1Qg aXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7CisJCX0K KworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxsb3dlZDsK K30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgYXR0cmlidXRlcyB1c2Vk IHdoZW4gZm9ybWluZyB0aGUgaW5kZXgga2V5cyB3ZSBjYW4KKyAqIGdyYWIgYSB3ZWFrZXIg bG9jayB0eXBlLiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdlIGFy ZQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZvcmVpZ24ga2V5IGNoZWNrcy4K KyAqLworTG9ja1R1cGxlTW9kZQorSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykKK3sK KwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCisJQml0 bWFwc2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCisJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlmICgh Ym1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBrZXlfYXR0cnMpKQorCQlsb2NrbW9k ZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOworCisJYm1zX2ZyZWUoa2V5X2F0dHJzKTsK KworCXJldHVybiBsb2NrbW9kZTsKK30KKworLyoKKyAqIFJldHVybiBhIEJpdG1hcHNldCB0 aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQKKyAq IGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5ld3R1cC4KICAqLwogc3RhdGljIEJp dG1hcHNldCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24s Ci0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1hcHNl dCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUg bmV3dHVwLAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2RpZmll ZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmllZCA9 IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0dHJz ID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRp b24pOwogCisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbCBp bmRleGVzIGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisKKwkv KiBObyBpbmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lzX2Vt cHR5KGF0dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1cGRh dGUgZnVuY3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5saWtl CisJICogaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJlbElu Zm8gYW5kIEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0dHJp YnV0ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNHZXRB bGxVcGRhdGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmlidXRl cyB0bworCSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3Mg dGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVkX2lk eF9hdHRycyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBibXNf bmV4dF9tZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGlsZSAo KGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7CiAJ CS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmli dXRlIG51bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDU4LDcgQEAgSGVh cERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJaWYg KGF0dHJudW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2Rp ZmllZCwgYXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVy KG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAg LTQzOTcsNyArNDQ3MSw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiBy ZWxhdGlvbiwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVOdW1i ZXIpCiAJCQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0 aWR4KTsKKwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2RpZmll ZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTQ0 MTMsMjkgKzQ0ODcsMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJl bGF0aW9uLAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVtLCB2 YWx1ZTEsCiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0JCQlt b2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29udGlu dWU7Ci0JCX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMgdGhh dCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3RlbSBh dHRyaWJ1dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYgKGF0 dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRl c2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJLyoK LQkJICogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQgZXh0 ZXJuYWxseSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJICov Ci0JCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2ludGVy KHZhbHVlMSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29scykp Ci0JCQkqaGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJt c19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQlyZXR1 cm4gbW9kaWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVkX2lk eF9hdHRyczsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MTAsOTQgQEAgc2ltcGxlX2hlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSB0dXAKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK KwlCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OworCUhlYXBUdXBsZQlvbGR0dXA7 CisJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOworCWJvb2wJCWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25seTsKKwlC dWZmZXIJCWJ1ZmZlcjsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlk LCB0dXAsCi0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwKLQkJCQkJCSBJ bnZhbGlkU25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAot CQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwlBc3NlcnQoSXRl bVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8qCisJICogVG8gdXBkYXRlIGEgaGVhcCB0 dXBsZSB3ZSBuZWVkIHRvIGZpbmQgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkCisJICog YXR0cmlidXRlcyAoIm1vZGlmaWVkX2lkeF9hdHRycyIpIGFuZCB1c2UgdGhhdCB0byBkZXRl cm1pbmUgaWYgYSBIT1QKKwkgKiB1cGRhdGUgaXMgYWxsb3dhYmxlIG9yIG5vdC4gV2hlbiB1 cGRhdGluZyBoZWFwIHR1cGxlcyB2aWEgZXhlY3V0aW9uIG9mCisJICogVVBEQVRFIHN0YXRl bWVudHMgdGhpcyBzZXQgaXMgY29uc3RydWN0ZWQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUg dGFibGUKKwkgKiBBTSdzIHVwZGF0ZSBmdW5jdGlvbiBieSBFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHdoaWNoIGNvbXBhcmVzIHRoZQorCSAqIG9sZC9uZXcgVHVwbGVUYWJsZVNs b3RzLgorCSAqCisJICogSGVyZSB0aGluZ3MgYXJlIGEgYml0IGRpZmZlcmVudCwgd2UgaGF2 ZSB0aGUgb2xkIFRJRCBhbmQgdGhlIG5ldyB0dXBsZSwKKwkgKiBub3QgdHdvIFR1cGxlVGFi bGVTbG90cywgYnV0IHdlIHN0aWxsIG5lZWQgdG8gY29uc3RydWN0IGEgc2ltaWxhcgorCSAq IGJpdG1hcCBzbyBhcyB0byBiZSBhYmxlIHRvIGtub3cgaWYgSE9UIHVwZGF0ZXMgYXJlIGFs bG93ZWQgb3Igbm90LgorCSAqCisJICogVG8gZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZl dGNoIHRoZSBvbGQgdHVwbGUgaXRzZWxmLCBidXQgYmVjYXVzZQorCSAqIGhlYXBhbV9mZXRj aF9yb3dfdmVyc2lvbigpIGlzIHN0YXRpYywgd2UgcmVwbGljYXRlIGluIHBhcnQgdGhhdCBj b2RlCisJICogaGVyZS4KKwkgKgorCSAqIFRoaXMgaXMgYSBiaXQgcmVwZXRpdGl2ZSBiZWNh dXNlIGhlYXBfdXBkYXRlKCkgd2lsbCBhZ2FpbiBmaW5kIGFuZCBmb3JtCisJICogdGhlIG9s ZCBIZWFwVHVwbGUgZnJvbSB0aGUgb2xkIFRJRCBhbmQgaW4gbW9zdCBjYXNlcyB0aGUgY2Fs bGVycworCSAqIChpZ25vcmluZyBleHRlbnNpb25zLCBhcmUgYWx3YXlzIGNhdGFsb2cgdHVw bGUgdXBkYXRlcykgYWxyZWFkeSBoYWQgdGhlCisJICogc2V0IG9mIGNoYW5nZWQgYXR0cmli dXRlcyAodGhlICJyZXBsYWNlcyIgYXJyYXkpLCBidXQgZm9yIG5vdyB0aGlzCisJICogbWlu b3IgcmVwZXRpdGlvbiBvZiB3b3JrIGlzIG5lY2Vzc2FyeS4KKwkgKi8KKwlJTkpFQ1RJT05f UE9JTlQoInNpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwlzbG90 ID0gTWFrZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCAmVFRT T3BzQnVmZmVySGVhcFR1cGxlLCAwKTsKKwlic2xvdCA9IChCdWZmZXJIZWFwVHVwbGVUYWJs ZVNsb3QgKikgc2xvdDsKKworCS8qCisJICogU2V0IHRoZSBUSUQgaW4gdGhlIHNsb3QgYW5k IHRoZW4gZmV0Y2ggdGhlIG9sZCB0dXBsZSBzbyB3ZSBjYW4gZXhhbWluZQorCSAqIGl0CisJ ICovCisJYnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqb3RpZDsKKwlpZiAoIWhlYXBf ZmV0Y2gocmVsYXRpb24sIFNuYXBzaG90QW55LCAmYnNsb3QtPmJhc2UudHVwZGF0YSwgJmJ1 ZmZlciwgZmFsc2UpKQorCXsKKwkJLyoKKwkJICogaGVhcF91cGRhdGUoKSBjaGVja3MgZm9y ICFJdGVtSWRJc05vcm1hbChscCkgYW5kIHdpbGwgcmV0dXJuIGZhbHNlCisJCSAqIGluIHRo b3NlIGNhc2VzLgorCQkgKi8KKwkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShS ZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSkpOworCisJCSp1cGRhdGVfaW5kZXhlcyA9IFRV X05vbmU7CisKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQg Ki8KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCQllbG9nKEVS Uk9SLCAidHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsKKworCQlyZXR1cm47CisJfQor CisJQXNzZXJ0KGJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKTsKKworCS8qIFN0b3JlIGluIHNs b3QsIHRyYW5zZmVycmluZyBleGlzdGluZyBwaW4gKi8KKwlFeGVjU3RvcmVQaW5uZWRCdWZm ZXJIZWFwVHVwbGUoJmJzbG90LT5iYXNlLnR1cGRhdGEsIHNsb3QsIGJ1ZmZlcik7CisJb2xk dHVwID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgJnNob3VsZEZyZWUp OworCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo cmVsYXRpb24sIG9sZHR1cCwgdHVwKTsKKwlsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1p bmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfYWxsb3dl ZCA9IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRy cywgJnN1bW1hcml6ZWRfb25seSk7CisKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlv biwgb3RpZCwgdHVwLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLCAwLAorCQkJCQkJIElu dmFsaWRTbmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAorCQkJCQkJICZ0 bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CisKKwlp ZiAoc2hvdWxkRnJlZSkKKwkJaGVhcF9mcmVldHVwbGUob2xkdHVwKTsKKworCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVy IG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICog SWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4g SWYgdGhlIHVwZGF0ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVk IHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3Vt bWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4 ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9k aWZpZWQ6CkBAIC00NDY4LDYgKzQ2MDcsMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0 dXAKIAogCQljYXNlIFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlm ICghSGVhcFR1cGxlSXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRV X0FsbDsKKwkJCWVsc2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4 ZXMgPSBUVV9TdW1tYXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhj YzI3N2JjLi5lNmNiODE5N2RlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNz Y2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv dHNtYXBpLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvaW5kZXguaCIKQEAgLTIyNCwyMCArMjIzLDI2IEBAIHN0YXRpYyBUTV9S ZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxv Y2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhl cykKKwkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRG cmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxl KHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29s CQlzdW1tYXJpemVkX29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVt UG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29u bHkpOworCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlv biwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0 YWJsZSBvaWQgKi8KIAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bGF0aW9uKTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAot CXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRp b25zLAotCQkJCQkJIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUs IHVwZGF0ZV9pbmRleGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3Rp ZCwgdHVwbGUsIGNpZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZk LCAqbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Q b2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAg LTI1MCwxNiArMjU1LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwg aXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2Ug ZWl0aGVyCiAJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0 IGFsbC4KIAkgKi8KLQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9 IFRVX05vbmU7CisJaWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRl X2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJ CWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6 ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQor CQllbHNlCisJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFI ZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9 PSBUVV9BbGwpOwotCWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3Vt bWFyaXppbmcpIHx8Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAog CWlmIChzaG91bGRGcmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYwppbmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBs ZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAog CQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJ CQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJ cmVzdWx0OwpAQCAtMzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUo UmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29t bWFuZElkKHRydWUpLAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAog CQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwK KwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7 CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9yZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IGZh YTA3ZDFhMTE4Li45NzYxYmRhYzlkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcmVwYWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2 ODksOCArMjY4OSwxOCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWws IFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21v ZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9p bmRleGVzOworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJ cmVzOwogCisJLyoKKwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAo c3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJ ICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhl ZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNV cGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9u ZGlza190dXBsZSwKKwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICog Q2Fycnkgb3V0IHRoZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0 LgogCSAqLwpAQCAtMjcwMCw3ICsyNzEwLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUo UmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkg SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZh bHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJ CQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5k ZXhlcyk7CiAJaWYgKHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJj b2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzIxLDYgKzI3 MzEsOCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFi bGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3Bh cmFtKFBST0dSRVNTX1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19m cmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcx YmQ5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMz LDYgKzMzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0 aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkx MCw2ICs5MTEsNyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24J cmVsID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRp ZCA9ICYoc2VhcmNoc2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOwogCiAJLyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMs IHdpdGgKQEAgLTk0OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwg ZXN0YXRlLCB0cnVlKTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9k aWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90 LCBzbG90KTsKKwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90 LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJ CQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNf ZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVz dWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVHVwbGVzLmMKaW5kZXggN2Y0ZWJmOTU0MzIuLjI5ZjllNmNlNjdjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk ZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAj aW5jbHVkZSAidXRpbHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMs NzcgQEAgRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90 KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBFeGVjQ29tcGFyZVNsb3RBdHRycworICoK KyAqIENvbXBhcmUgdGhlIHN1YnNldCBvZiBhdHRyaWJ1dGVzIGluIGF0dHJzIGJldHdlZW4g VHVwbGVUYWJsZVNsb3RzIHRvIGRldGVjdAorICogd2hpY2ggYXR0cmlidXRlcyBoYXZlIGNo YW5nZWQuCisgKgorICogVGhlIGlucHV0IEJpdG1hcHNldCBhdHRycyBpcyBtb2RpZmllZCBp biBwbGFjZSAocmVjeWNsZWQgd2hlbiBwb3NzaWJsZSB2aWEKKyAqIGJtc19kZWxfbWVtYmVy LCB3aGljaCBtYXkgcGZyZWUgaXQgYW5kIHJldHVybiBOVUxMKSBhbmQgbWF5IGJlIGZyZWVk OworICogY2FsbGVycyBtdXN0IHVzZSBvbmx5IHRoZSByZXR1cm5lZCBwb2ludGVyLCBub3Qg dGhlaXIgb3JpZ2luYWwgYXR0cnMKKyAqIHZhbHVlLiAgUmV0dXJucyB0aGUgQml0bWFwc2V0 IG9mIGF0dHJpYnV0ZSBpbmRpY2VzICh1c2luZyB0aGUKKyAqIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXIgY29udmVudGlvbikgdGhhdCBkaWZmZXIgYmV0d2VlbiB0aGUg dHdvCisgKiBzbG90cy4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNDb21wYXJlU2xvdEF0dHJz KEJpdG1hcHNldCAqYXR0cnMsIFR1cGxlRGVzYyB0dXBkZXNjLAorCQkJCQkgVHVwbGVUYWJs ZVNsb3QgKnMxLCBUdXBsZVRhYmxlU2xvdCAqczIpCit7CisJaW50CQkJYXR0aWR4ID0gLTE7 CisKKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkg Pj0gMCkKKwl7CisJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBu b3JtYWwgYXR0cmlidXRlIG51bWJlciAqLworCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRp ZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCQlEYXR1bQkJdmFs dWUxLAorCQkJCQl2YWx1ZTI7CisJCWJvb2wJCW51bGwxLAorCQkJCQludWxsMjsKKwkJQ29t cGFjdEF0dHJpYnV0ZSAqYXR0OworCisJCS8qCisJCSAqIElmIGl0J3MgYSB3aG9sZS10dXBs ZSByZWZlcmVuY2UsIHNheSAibm90IGVxdWFsIi4gIEl0J3Mgbm90IHJlYWxseQorCQkgKiB3 b3J0aCBzdXBwb3J0aW5nIHRoaXMgY2FzZSwgc2luY2UgaXQgY291bGQgb25seSBzdWNjZWVk IGFmdGVyIGEKKwkJICogbm8tb3AgdXBkYXRlLCB3aGljaCBpcyBoYXJkbHkgYSBjYXNlIHdv cnRoIG9wdGltaXppbmcgZm9yLgorCQkgKi8KKwkJaWYgKGF0dHJudW0gPT0gMCkKKwkJCWNv bnRpbnVlOworCisJCS8qCisJCSAqIExpa2V3aXNlLCBhdXRvbWF0aWNhbGx5IHNheSAibm90 IGVxdWFsIiBmb3IgYW55IHN5c3RlbSBhdHRyaWJ1dGUKKwkJICogb3RoZXIgdGhhbiB0YWJs ZU9JRDsgd2UgY2Fubm90IGV4cGVjdCB0aGVzZSB0byBiZSBjb25zaXN0ZW50IGluIGEKKwkJ ICogSE9UIGNoYWluLCBvciBldmVuIHRvIGJlIHNldCBjb3JyZWN0bHkgeWV0IGluIHRoZSBu ZXcgdHVwbGUuCisJCSAqLworCQlpZiAoYXR0cm51bSA8IDApCisJCXsKKwkJCWlmIChhdHRy bnVtID09IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQorCQkJCWF0dHJzID0gYm1zX2RlbF9t ZW1iZXIoYXR0cnMsIGF0dGlkeCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWF0dCA9IFR1 cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIGF0dHJudW0gLSAxKTsKKwkJdmFsdWUxID0g c2xvdF9nZXRhdHRyKHMxLCBhdHRybnVtLCAmbnVsbDEpOworCQl2YWx1ZTIgPSBzbG90X2dl dGF0dHIoczIsIGF0dHJudW0sICZudWxsMik7CisKKwkJLyogQSBjaGFuZ2UgdG8vZnJvbSBO VUxMLCBzbyBub3QgZXF1YWwgKi8KKwkJaWYgKG51bGwxICE9IG51bGwyKQorCQkJY29udGlu dWU7CisKKwkJLyogQm90aCBOVUxMLCBubyBjaGFuZ2UvdW5tb2RpZmllZCAqLworCQlpZiAo bnVsbDIpCisJCXsKKwkJCWF0dHJzID0gYm1zX2RlbF9tZW1iZXIoYXR0cnMsIGF0dGlkeCk7 CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChkYXR1bV9pbWFnZV9lcSh2YWx1ZTEsIHZh bHVlMiwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQorCQkJYXR0cnMgPSBibXNfZGVs X21lbWJlcihhdHRycywgYXR0aWR4KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQkJCWNvbnZlbmllbmNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVz CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CmluZGV4IGMzMzNkNzEzOWZhLi5lYjZlMGVmMmFkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAqCQlFeGVjTW9kaWZ5 VGFibGUJCS0gcmV0cmlldmUgdGhlIG5leHQgdHVwbGUgZnJvbSB0aGUgbm9kZQogICoJCUV4 ZWNFbmRNb2RpZnlUYWJsZQktIHNodXQgZG93biB0aGUgTW9kaWZ5VGFibGUgbm9kZQogICoJ CUV4ZWNSZVNjYW5Nb2RpZnlUYWJsZSAtIHJlc2NhbiB0aGUgTW9kaWZ5VGFibGUgbm9kZQor ICoJCUV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzIC0gZmluZCBzZXQgb2YgdXBkYXRlZCBp bmRleGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlUaGUgTW9kaWZ5VGFibGUgbm9k ZSByZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNoIGlzCkBAIC01Niw2 ICs1Nyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIKKyNp bmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCIKQEAgLTIwMiw2ICsyMDQsNjMgQEAgc3RhdGljIHZvaWQgZmlyZUFTVHJp Z2dlcnMoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBFeGVjSW5pdEZv clBvcnRpb25PZihNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOwogCisvKgorICogRXhl Y1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMKKyAqCisgKiBGaW5kIHRoZSBzZXQgb2YgYXR0cmli dXRlcyByZWZlcmVuY2VkIGJ5IHRoaXMgcmVsYXRpb24gYW5kIHVzZWQgaW4gdGhpcworICog VVBEQVRFIHRoYXQgbm93IGRpZmZlciBpbiB2YWx1ZS4gIFRoaXMgaXMgZG9uZSBieSByZXZp ZXdpbmcgc2xvdCBkYXR1bSB0aGF0CisgKiBhcmUgaW4gdGhlIFVQREFURSBzdGF0bWVudCBh bmQgYXJlIGtub3duIHRvIGJlIHJlZmVyZW5jZWQgYnkgYXQgbGVhc3Qgb25lCisgKiBpbmRl eCBpbiBzb21lIHdheS4gIFRoaXMgc2V0IGlzIGNhbGxlZCB0aGUgIm1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcyIgb3IKKyAqICJtb2RpZmllZF9pZHhfYXR0cnMiLiAgQW4gb3Zlcmxh cCBvZiBhIHNpbmdsZSBpbmRleCdzIGF0dHJpYnV0ZXMgYW5kIHRoaXMKKyAqIG1vZGlmaWVk X2lkeF9hdHRycyBzZXQgc2lnbmFscyB0aGF0IHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBuZXdf dHRzIHVzZWQgdG8KKyAqIGZvcm0gdGhlIGluZGV4IGRhdHVtIGhhdmUgY2hhbmdlZC4KKyAq CisgKiBSZXR1cm4gYSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlm aWVkIChjaGFuZ2VkKSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFu ZCBuZXd0dXAuCisgKgorICogTm90ZTogVGhlcmUgaXMgYSBzaW1pbGFyIGZ1bmN0aW9uIGNh bGxlZCBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIHRoYXQgb3BlcmF0ZXMKKyAqIG9u IHRoZSBvbGQgVElEIGFuZCBuZXcgSGVhcFR1cGxlIHJhdGhlciB0aGFuIHRoZSBvbGQvbmV3 IFR1cGxlVGFibGVTbG90cyBhcworICogdGhpcyBmdW5jdGlvbiBkb2VzLiAgVGhlc2UgdHdv IGZ1bmN0aW9ucyBzaG91bGQgbWlycm9yIG9uZSBhbm90aGVyIHVudGlsCisgKiBzb21lZGF5 IHdoZW4gY2F0YWxvZyB0dXBsZSB1cGRhdGVzIHRyYWNrIHRoZWlyIGNoYW5nZXMgYXZvaWRp bmcgdGhlIG5lZWQgdG8KKyAqIHJlLWRpc2NvdmVyIHRoZW0gaW4gc2ltcGxlX2hlYXBfdXBk YXRlKCkuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJICAgVHVwbGVUYWJsZVNsb3Qg Km9sZF90dHMsCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cykKK3sKKwlSZWxh dGlvbglyZWxhdGlvbiA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlUdXBs ZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCUJpdG1hcHNl dCAgKmF0dHJzOworCisJLyogSWYgbm8gaW5kZXhlcywgd2UncmUgZG9uZSAqLworCWlmIChy ZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID09IDApCisJCXJldHVybiBOVUxMOworCisJ LyoKKwkgKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4 ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQorCSAqIHRoZSByZWxjYWNoZSwgaXQgcmV0dXJu cyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBzbyB3ZSBjYW4gbW9kaWZ5IGl0LgorCSAqCisJ ICogTm90ZTogV2UgaW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMgd2hl biBsb29raW5nIGZvcgorCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQgc2V0 IGJ5IGludGVyc2VjdGluZyBpdCB3aXRoCisJICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCku ICBEZXNpcHRlIHRoZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKKwkgKiB0YXJnZXRl ZCBhdHRyaWJ1dGVzIGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55IHRy aWdnZXJzLAorCSAqIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRlcyB1 cGRhdGVkIHVzaW5nCisJICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9uZSB0 ZXN0IGluIHRzZWFyY2guc3FsIHRoYXQgZG9lcyBqdXN0CisJICogdGhhdCwgbW9kaWZpZXMg YW4gaW5kZXhlZCBhdHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNRTCBh bmQKKwkgKiBzbyBpc24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqLworCWF0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJf QklUTUFQX0lOREVYRUQpOworCisJLyoKKwkgKiBXaGVuIHRoZXJlIGFyZSBpbmRleGVkIGF0 dHJpYnV0ZXMgbWVudGlvbmVkIGluIHRoZSBVUERBVEUgdGhlbiB3ZSBuZWVkCisJICogdG8g ZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQncyB0aGUKKwkgKiAi bW9kaWZpZWRfaWR4X2F0dHJzIi4KKwkgKi8KKwlhdHRycyA9IEV4ZWNDb21wYXJlU2xvdEF0 dHJzKGF0dHJzLCB0dXBkZXNjLCBvbGRfdHRzLCBuZXdfdHRzKTsKKworCXJldHVybiBhdHRy czsKK30KIAogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVjZWQg YnkgSU5TRVJUIG1hdGNoIHRoZQpAQCAtMjQ0NiwxNCArMjUwNSwxNyBAQCBFeGVjVXBkYXRl UHJlcGFyZVNsb3QoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKICAqLwogc3RhdGlj IFRNX1Jlc3VsdAogRXhlY1VwZGF0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCi0JCQkgIEl0ZW1Qb2ludGVyIHR1cGxl aWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCi0JCQkgIGJv b2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCisJCQkgIEl0ZW1Qb2lu dGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKm9sZFNs b3QsCisJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBib29sIGNhblNldFRhZywgVXBkYXRl Q29udGV4dCAqdXBkYXRlQ3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8t PnJpX1JlbGF0aW9uRGVzYzsKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7 CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLworCUJpdG1h cHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisKIAl1cGRhdGVDeHQtPmNyb3Nz UGFydFVwZGF0ZSA9IGZhbHNlOwogCiAJLyoKQEAgLTI1NzAsNyArMjYzMiwxNiBAQCBscmVw bGFjZToKIAkJRXhlY0NvbnN0cmFpbnRzKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSk7 CiAKIAkvKgotCSAqIHJlcGxhY2UgdGhlIGhlYXAgdHVwbGUKKwkgKiBOZXh0IHVwIHdlIG5l ZWQgdG8gZmluZCBvdXQgdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBoYXZl CisJICogY2hhbmdlZCBpbiB2YWx1ZSBhbmQgc2hvdWxkIHRyaWdnZXIgYSBuZXcgaW5kZXgg dHVwbGUuICBXZSBjb3VsZCBzdGFydAorCSAqIHdpdGggdGhlIHNldCBvZiB1cGRhdGVkIGNv bHVtbnMgdmlhIEV4ZWNHZXRVcGRhdGVkQ29scygpLCBidXQgaWYgd2UgZG8KKwkgKiB3ZSB3 aWxsIG92ZXJsb29rIGF0dHJpYnV0ZXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgaGVhcF9tb2Rp ZnlfdHVwbGUoKQorCSAqIHdoaWNoIGFyZSBub3Qga25vd24gdG8gRXhlY0dldFVwZGF0ZWRD b2xzKCkuCisJICovCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCk7CisKKwkvKgorCSAqIENh bGwgaW50byB0aGUgdGFibGUgQU0gdG8gdXBkYXRlIHRoZSBoZWFwIHR1cGxlLgogCSAqCiAJ ICogTm90ZTogaWYgZXNfY3Jvc3NjaGVja19zbmFwc2hvdCBpc24ndCBJbnZhbGlkU25hcHNo b3QsIHdlIGNoZWNrIHRoYXQKIAkgKiB0aGUgcm93IHRvIGJlIHVwZGF0ZWQgaXMgdmlzaWJs ZSB0byB0aGF0IHNuYXBzaG90LCBhbmQgdGhyb3cgYQpAQCAtMjU4NSw2ICsyNjU2LDcgQEAg bHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJ CQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAogCQkJCQkJCQkmY29udGV4dC0+ dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCisJCQkJCQkJCW1vZGlmaWVkX2lkeF9hdHRy cywKIAkJCQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyk7CiAKIAlyZXR1cm4gcmVz dWx0OwpAQCAtMjgxMiw4ICsyODg0LDggQEAgRXhlY1VwZGF0ZShNb2RpZnlUYWJsZUNvbnRl eHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCSAqLwogcmVk b19hY3Q6CiAJCWxvY2tlZHRpZCA9ICp0dXBsZWlkOwotCQlyZXN1bHQgPSBFeGVjVXBkYXRl QWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBzbG90LAot CQkJCQkJCSAgIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CisJCXJlc3VsdCA9IEV4ZWNVcGRh dGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIG9sZFNs b3QsCisJCQkJCQkJICAgc2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkvKgog CQkgKiBJZiBFeGVjVXBkYXRlQWN0IHJlcG9ydHMgdGhhdCBhIGNyb3NzLXBhcnRpdGlvbiB1 cGRhdGUgd2FzIGRvbmUsCkBAIC0zNjYzLDggKzM3MzUsOCBAQCBsbWVyZ2VfbWF0Y2hlZDoK IAkJCQkJQXNzZXJ0KG9sZHR1cGxlID09IE5VTEwpOwogCiAJCQkJCXJlc3VsdCA9IEV4ZWNV cGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwKLQkJCQkJCQkJCQkg ICBOVUxMLCBuZXdzbG90LCBjYW5TZXRUYWcsCi0JCQkJCQkJCQkJICAgJnVwZGF0ZUN4dCk7 CisJCQkJCQkJCQkJICAgTlVMTCwgcmVzdWx0UmVsSW5mby0+cmlfb2xkVHVwbGVTbG90LAor CQkJCQkJCQkJCSAgIG5ld3Nsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJCQkJ LyoKIAkJCQkJICogQXMgaW4gRXhlY1VwZGF0ZSgpLCBpZiBFeGVjVXBkYXRlQWN0KCkgcmVw b3J0cyB0aGF0IGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZiNGUw NDJiZThhLi4wNTVmNzU3MTA3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlv biByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9rZXlhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAlibXNf ZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90 YmxvY2tpbmdhdHRyKTsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOwog CWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJaWYgKHJlbGF0aW9u LT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHViZGVzYyk7CkBAIC01Mjkx LDggKzUyOTEsOCBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0 aW9uKQogICoJCQkJCQkJCQkoYmV3YXJlOiBldmVuIGlmIFBLIGlzIGRlZmVycmFibGUhKQog ICoJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZCUNvbHVtbnMgaW4gdGhlIHRhYmxl J3MgcmVwbGljYSBpZGVudGl0eQogICoJCQkJCQkJCQlpbmRleCAoZW1wdHkgaWYgRlVMTCkK LSAqCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORwlDb2x1bW5zIHRoYXQgYmxvY2sg dXBkYXRlcyBmcm9tIGJlaW5nIEhPVAotICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RAlDb2x1bW5zIGluY2x1ZGVkIGluIHN1bW1hcml6aW5nIGluZGV4ZXMKKyAqCUlOREVYX0FU VFJfQklUTUFQX0lOREVYRUQJCUNvbHVtbnMgcmVmZXJlbmNlZCBieSBpbmRleGVzCisgKglJ TkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgb25seSBpbmNsdWRlZCBpbiBz dW1tYXJpemluZyBpbmRleGVzCiAgKgogICogQXR0cmlidXRlIG51bWJlcnMgYXJlIG9mZnNl dCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIHNvIHRoYXQKICAqIHdl IGNhbiBpbmNsdWRlIHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRt YXAgcmVwcmVzZW50YXRpb24uCkBAIC01MzE1LDggKzUzMTUsOCBAQCBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBh dHRyS2luZCkKIAlCaXRtYXBzZXQgICp1aW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB1bmlx dWUgaW5kZXhlcyAqLwogCUJpdG1hcHNldCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBp biB0aGUgcHJpbWFyeSBpbmRleCAqLwogCUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyog Y29sdW1ucyBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSAqLwotCUJpdG1hcHNldCAgKmhvdGJs b2NraW5nYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBIT1QgYmxvY2tpbmcgaW5kZXhlcyAqLwot CUJpdG1hcHNldCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyB3aXRoIHN1bW1hcml6 aW5nIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CS8qIGNvbHVtbnMg cmVmZXJlbmNlZCBieSBpbmRleGVzICovCisJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJz OwkvKiBjb2x1bW5zIG9ubHkgaW4gc3VtbWFyaXppbmcgaW5kZXhlcyAqLwogCUxpc3QJICAg KmluZGV4b2lkbGlzdDsKIAlMaXN0CSAgICpuZXdpbmRleG9pZGxpc3Q7CiAJT2lkCQkJcmVs cGtpbmRleDsKQEAgLTUzMzUsOCArNTMzNSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQog CQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAkJCWNhc2UgSU5E RVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgogCQkJCXJldHVybiBibXNfY29weShyZWxh dGlvbi0+cmRfaWRhdHRyKTsKLQkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NL SU5HOgotCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRy KTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCQlyZXR1cm4gYm1z X2NvcHkocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9C SVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3N1 bW1hcml6ZWRhdHRyKTsKIAkJCWRlZmF1bHQ6CkBAIC01MzgxLDcgKzUzODEsNyBAQCByZXN0 YXJ0OgogCXVpbmRleGF0dHJzID0gTlVMTDsKIAlwa2luZGV4YXR0cnMgPSBOVUxMOwogCWlk aW5kZXhhdHRycyA9IE5VTEw7Ci0JaG90YmxvY2tpbmdhdHRycyA9IE5VTEw7CisJaW5kZXhl ZGF0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOwogCWZvcmVhY2gobCwg aW5kZXhvaWRsaXN0KQogCXsKQEAgLTU0NDEsNyArNTQ0MSw3IEBAIHJlc3RhcnQ6CiAJCWlm IChpbmRleERlc2MtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nKQogCQkJYXR0cnMgPSAmc3Vt bWFyaXplZGF0dHJzOwogCQllbHNlCi0JCQlhdHRycyA9ICZob3RibG9ja2luZ2F0dHJzOwor CQkJYXR0cnMgPSAmaW5kZXhlZGF0dHJzOwogCiAJCS8qIENvbGxlY3Qgc2ltcGxlIGF0dHJp YnV0ZSByZWZlcmVuY2VzICovCiAJCWZvciAoaSA9IDA7IGkgPCBpbmRleERlc2MtPnJkX2lu ZGV4LT5pbmRuYXR0czsgaSsrKQpAQCAtNTQ1MCw5ICs1NDUwLDkgQEAgcmVzdGFydDoKIAog CQkJLyoKIAkJCSAqIFNpbmNlIHdlIGhhdmUgY292ZXJpbmcgaW5kZXhlcyB3aXRoIG5vbi1r ZXkgY29sdW1ucywgd2UgbXVzdAotCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJl LiBub24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRlZCBpbnRvCi0JCQkgKiBob3RibG9ja2lu Z2F0dHJzIG9yIHN1bW1hcml6ZWRhdHRycywgc2luY2UgdGhleSBhcmUgaW4gaW5kZXgsCi0J CQkgKiBhbmQgdXBkYXRlIHNob3VsZG4ndCBtaXNzIHRoZW0uCisJCQkgKiBoYW5kbGUgdGhl bSBhY2N1cmF0ZWx5IGhlcmUuIE5vbi1rZXkgY29sdW1ucyBtdXN0IGJlIGFkZGVkIGludG8K KwkJCSAqIGluZGV4ZWRhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJl IGluIGluZGV4LCBhbmQKKwkJCSAqIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgogCQkJ ICoKIAkJCSAqIFN1bW1hcml6aW5nIGluZGV4ZXMgZG8gbm90IGJsb2NrIEhPVCwgYnV0IGRv IG5lZWQgdG8gYmUgdXBkYXRlZAogCQkJICogd2hlbiB0aGUgY29sdW1uIHZhbHVlIGNoYW5n ZXMsIHRodXMgcmVxdWlyZSBhIHNlcGFyYXRlCkBAIC01NTEzLDEyICs1NTEzLDIwIEBAIHJl c3RhcnQ6CiAJCWJtc19mcmVlKHVpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUocGtpbmRleGF0 dHJzKTsKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKLQkJYm1zX2ZyZWUoaG90YmxvY2tp bmdhdHRycyk7CisJCWJtc19mcmVlKGluZGV4ZWRhdHRycyk7CiAJCWJtc19mcmVlKHN1bW1h cml6ZWRhdHRycyk7CiAKIAkJZ290byByZXN0YXJ0OwogCX0KIAorCS8qCisJICogUmVjb3Jk IHdoYXQgYXR0cmlidXRlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IHN1bW1hcml6aW5nIGlu ZGV4ZXMuIFRoZW4KKwkgKiBhZGQgdGhhdCBpbnRvIHRoZSBvdGhlciBpbmRleGVkIGF0dHJp YnV0ZXMgdG8gdHJhY2sgYWxsIHJlZmVyZW5jZWQKKwkgKiBhdHRyaWJ1dGVzLgorCSAqLwor CXN1bW1hcml6ZWRhdHRycyA9IGJtc19kZWxfbWVtYmVycyhzdW1tYXJpemVkYXR0cnMsIGlu ZGV4ZWRhdHRycyk7CisJaW5kZXhlZGF0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGluZGV4ZWRh dHRycywgc3VtbWFyaXplZGF0dHJzKTsKKwogCS8qIERvbid0IGxlYWsgdGhlIG9sZCB2YWx1 ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFs aWQgPSBmYWxzZTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7CkBAIC01NTI3 LDggKzU1MzUsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBOVUxMOwog CWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIg PSBOVUxMOwotCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOwotCXJl bGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxMOworCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9pbmRleGVkYXR0cik7CisJcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gTlVMTDsK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwogCXJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0ciA9IE5VTEw7CiAKQEAgLTU1NDMsNyArNTU1MSw3IEBAIHJlc3Rh cnQ6CiAJcmVsYXRpb24tPnJkX2tleWF0dHIgPSBibXNfY29weSh1aW5kZXhhdHRycyk7CiAJ cmVsYXRpb24tPnJkX3BrYXR0ciA9IGJtc19jb3B5KHBraW5kZXhhdHRycyk7CiAJcmVsYXRp b24tPnJkX2lkYXR0ciA9IGJtc19jb3B5KGlkaW5kZXhhdHRycyk7Ci0JcmVsYXRpb24tPnJk X2hvdGJsb2NraW5nYXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nYXR0cnMpOworCXJlbGF0 aW9uLT5yZF9pbmRleGVkYXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVsYXRp b24tPnJkX3N1bW1hcml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsKIAly ZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CkBAIC01NTU3LDggKzU1NjUsOCBAQCByZXN0YXJ0OgogCQkJcmV0dXJuIHBr aW5kZXhhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVk6CiAJ CQlyZXR1cm4gaWRpbmRleGF0dHJzOwotCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0hPVF9C TE9DS0lORzoKLQkJCXJldHVybiBob3RibG9ja2luZ2F0dHJzOworCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4gaW5kZXhlZGF0dHJzOwogCQljYXNlIElO REVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQlyZXR1cm4gc3VtbWFyaXplZGF0dHJz OwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDUxNzY0NzhjMjk1Li4yZGJm YWQ5MjExMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzg1LDExICszODUsMTAgQEAgZXh0 ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQsCiBleHRlcm4gdm9pZCBoZWFwX2ZpbmlzaF9zcGVjdWxhdGl2 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0 ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJ CQkJCSBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCSBDb21tYW5kSWQgY2lkLCB1aW50MzIg b3B0aW9ucywKKwkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgdWlu dDMyIG9wdGlvbnMsCiAJCQkJCQkJIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwK LQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAotCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJ IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAor CQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgY29uc3QgYm9v bCBob3RfYWxsb3dlZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNp ZCwgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJ CQkJCQkJIGJvb2wgZm9sbG93X3VwZGF0ZXMsCkBAIC00NjQsNiArNDYzLDEyIEBAIGV4dGVy biB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFk LAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOwogCisv KiBpbiBoZWFwL2hlYXBhbS5jICovCitleHRlcm4gYm9vbCBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywKKwkJCQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KTsKK2V4dGVybiBMb2Nr VHVwbGVNb2RlIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlvbiByZWxhdGlv biwKKwkJCQkJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7 CisKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICovCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1 bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1z LCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK aW5kZXggZjJjMzY2OTZiY2EuLmE5Nzc4YjM1MjhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK QEAgLTU4Niw2ICs1ODYsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJ CQkJCQkgYm9vbCB3YWl0LAogCQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJ CQkJCSBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKKwkJCQkJCQkJIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpOwogCiAJLyogc2VlIHRhYmxlX3R1cGxlX2xvY2soKSBmb3IgcmVmZXJl bmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KQEAgLTE1OTksMTIgKzE2MDAsMTIgQEAgdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCiAJ CQkJICAgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCiAJCQkJICAg Ym9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21v ZGUsCi0JCQkJICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIFRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQogewogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX3Vw ZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywgc25hcHNo b3QsIGNyb3NzY2hlY2ssCi0JCQkJCQkJCQkJIHdhaXQsIHRtZmQsCi0JCQkJCQkJCQkJIGxv Y2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2tt b2RlLAorCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsK IH0KIAogLyoKQEAgLTIwODksNiArMjA5MCw3IEBAIGV4dGVybiB2b2lkIHNpbXBsZV90YWJs ZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJ CQkgIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBs ZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkJICBU dXBsZVRhYmxlU2xvdCAqc2xvdCwgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkgIGNv bnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkJICBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKaW5kZXggMTc5OGU2MDI3ZDQuLjE2NjYxYmM2NmQ5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3Rh bXAuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImZtZ3Iu aCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nr b3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgpAQCAtNjE1LDYgKzYxNiwxMCBAQCBleHRlcm4gVHVwbGVEZXNj IEV4ZWNDbGVhblR5cGVGcm9tVEwoTGlzdCAqdGFyZ2V0TGlzdCk7CiBleHRlcm4gVHVwbGVE ZXNjIEV4ZWNUeXBlRnJvbUV4cHJMaXN0KExpc3QgKmV4cHJMaXN0KTsKIGV4dGVybiB2b2lk IEV4ZWNUeXBlU2V0Q29sTmFtZXMoVHVwbGVEZXNjIHR5cGVJbmZvLCBMaXN0ICpuYW1lc0xp c3QpOwogZXh0ZXJuIHZvaWQgVXBkYXRlQ2hhbmdlZFBhcmFtU2V0KFBsYW5TdGF0ZSAqbm9k ZSwgQml0bWFwc2V0ICpuZXdjaGcpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0NvbXBhcmVT bG90QXR0cnMoQml0bWFwc2V0ICphdHRycywKKwkJCQkJCQkJCSAgIFR1cGxlRGVzYyB0dXBk ZXNjLAorCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkg ICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKIHR5cGVkZWYgc3RydWN0IFR1cE91dHB1 dFN0YXRlCiB7CkBAIC04MTQsNSArODE5LDggQEAgZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4 ZWNMb29rdXBSZXN1bHRSZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJ CQkJCQkgICBPaWQgcmVzdWx0b2lkLAogCQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ss CiAJCQkJCQkJCQkJCSAgIGJvb2wgdXBkYXRlX2NhY2hlKTsKK2V4dGVybiBCaXRtYXBzZXQg KkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCisJ CQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJCQkJIFR1cGxl VGFibGVTbG90ICpuZXdfdHRzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEVYRUNVVE9SX0ggICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3JlbC5oCmluZGV4IDg5YzE1OWIxMzNmLi4xN2RiZGJlNjQ1ZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK QEAgLTE2Miw3ICsxNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlCaXRt YXBzZXQgICpyZF9rZXlhdHRyOwkJLyogY29scyB0aGF0IGNhbiBiZSByZWYnZCBieSBmb3Jl aWduIGtleXMgKi8KIAlCaXRtYXBzZXQgICpyZF9wa2F0dHI7CQkvKiBjb2xzIGluY2x1ZGVk IGluIHByaW1hcnkga2V5ICovCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVk ZWQgaW4gcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwotCUJpdG1hcHNldCAgKnJkX2hvdGJs b2NraW5nYXR0cjsgLyogY29scyBibG9ja2luZyBIT1QgdXBkYXRlICovCisJQml0bWFwc2V0 ICAqcmRfaW5kZXhlZGF0dHI7IC8qIGFsbCBjb2xzIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAq LwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6ZWRhdHRyOwkvKiBjb2xzIGluZGV4ZWQgYnkg c3VtbWFyaXppbmcgaW5kZXhlcyAqLwogCiAJUHVibGljYXRpb25EZXNjICpyZF9wdWJkZXNj OwkvKiBwdWJsaWNhdGlvbiBkZXNjcmlwdG9yLCBvciBOVUxMICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaAppbmRleCA4OWMyN2FhMTUyOS4uODk3ODgwOTE1NzYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaApAQCAtNzAsNyArNzAsNyBAQCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2lu ZAogCUlOREVYX0FUVFJfQklUTUFQX0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9QUklNQVJZ X0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVksCi0JSU5ERVhfQVRUUl9C SVRNQVBfSE9UX0JMT0NLSU5HLAorCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQsCiAJSU5E RVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKIH0gSW5kZXhBdHRyQml0bWFwS2luZDsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0CmluZGV4IGE2 YTRlOGRiOTk2Li4wN2VmNjdhMWViNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0Cisr KyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dApAQCAtMTYsOCArMTYsOCBAQCBzdGVwIHdha2VpbnZhbDQ6 CiBzdGVwIGF0MjogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VpbnZhbDQ6IDwuLi4gY29t cGxldGVkPgogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwotCVNFTEVDVCBGUk9NIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VM RUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1i ZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3Np bXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRpbmcgLi4uPgogc3RlcCBn cmFudDE6IDwuLi4gY29tcGxldGVkPgogRVJST1I6ICB0dXBsZSBjb25jdXJyZW50bHkgZGVs ZXRlZApAQCAtNDIsOCArNDIsOCBAQCBzdGVwIG1rcmVsczQ6CiAJU0VMRUNUIEZST00gdmFj dGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwgMTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5V U0VECiAKIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVm b3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1w bGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3Jh bnQxOiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9s YXRlcyB1bmlxdWUgY29uc3RyYWludCAicGdfY2xhc3Nfb2lkX2luZGV4IgpAQCAtNzEsOCAr NzEsOCBAQCBzdGVwIGF0MjogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VpbnZhbDQ6IDwu Li4gY29tcGxldGVkPgogc3RlcCBhdDQ6IEFMVEVSIFRBQkxFIHZhY3Rlc3QuY2hpbGQ1MCBJ TkhFUklUIHZhY3Rlc3Qub3JpZzUwOwogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJP TSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBs ZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3Bv aW50c193YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRp bmcgLi4uPgogc3RlcCBncmFudDE6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3YWtlZ3JhbnQ0 OiA8Li4uIGNvbXBsZXRlZD4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5l ZC5zcGVjCmluZGV4IGUzYTQyOTViZDEyLi5mZWY5YWM4OTVhMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1w cnVuZWQuc3BlYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Bl Y3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjCkBAIC0xMDMsNyArMTAzLDcgQEAgc2Vz c2lvbiBzMQogc2V0dXAJewogCVNFVCBkZWJ1Z19kaXNjYXJkX2NhY2hlcyA9IDA7CiAJU0VM RUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKLQlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicsICd3YWl0 Jyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3NpbXBsZV9oZWFw X3VwZGF0ZS1iZWZvcmUtcGluJywgJ3dhaXQnKTsKIH0KIHN0ZXAgY2FjaGVmaWxsMQl7IFNF TEVDVCBGUk9NIHZhY3Rlc3QucmVsb2lkX2NhdGNhY2hlX3NldCgndmFjdGVzdC5vcmlnNTAn KTsgfQogc3RlcCBncmFudDEJeyBHUkFOVCBTRUxFQ1QgT04gdmFjdGVzdC5vcmlnNTAgVE8g UFVCTElDOyB9CkBAIC0xNDAsOCArMTQwLDggQEAgc3RlcCBta3JlbHM0CXsKIAlTRUxFQ1Qg RlJPTSB2YWN0ZXN0Lm1rcmVscygnaW50cnVkZXInLCAxLCAxMDApOyAgLS0gcmVwb3B1bGF0 ZSBMUF9VTlVTRUQKIH0KIHN0ZXAgd2FrZWdyYW50NAl7Ci0JU0VMRUNUIEZST00gaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1Qg RlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicp OworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91 cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogfQogc3RlcCBhdDQJeyBB TFRFUiBUQUJMRSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsgfQog c3RlcCB3YWtlaW52YWw0CXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n ZW5lcmF0ZWRfdmlydHVhbC5vdXQKaW5kZXggMDFlZTI5ZmVlMTAuLmE3YTI0NjNlNTRkIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dApAQCAtMjg3LDcgKzI4Nyw3IEBAIERFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5l cmF0ZWQgY29sdW1uLgogSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQp LCAoOSwgREVGQVVMVCk7ICAtLSBlcnJvcgogRVJST1I6ICBjYW5ub3QgaW5zZXJ0IGEgbm9u LURFRkFVTFQgdmFsdWUgaW50byBjb2x1bW4gImIiCiBERVRBSUw6ICBDb2x1bW4gImIiIGlz IGEgZ2VuZXJhdGVkIGNvbHVtbi4KLVNFTEVDVCAqIEZST00gZ3Rlc3QxdjsKK1NFTEVDVCAq IEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogIGEgfCBiICAKIC0tLSstLS0tCiAgMyB8ICA2 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CmluZGV4IDhmY2IzM2Fj ODFhLi4wMGViZTMwNTg3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC90cmlnZ2Vycy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vy cy5vdXQKQEAgLTk1OSwxNiArOTU5LDI0IEBAIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUg VVBEQVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfdXBkX3N0bXQpCiBOT1RJQ0U6ICBtYWlu X3ZpZXcgQUZURVIgVVBEQVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld191cGRfc3RtdCkKIFVQ REFURSAwCiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdnZXIKLURFTEVURSBGUk9N IG1haW5fdmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcg V0hFUkUgYSA9IDIwIEFORCBiID0gMzE7CiBOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERF TEVURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92 aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCi1OT1RJQ0U6ICBP TEQ6ICgyMSwxMCkKLU5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cg KGluc3RlYWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAoMjAsMzEpCitOT1RJQ0U6ICBtYWlu X3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld19kZWxfc3RtdCkKK0RF TEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFORCBiID0gMTA7 CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBTVEFURU1FTlQgKGJlZm9yZV92 aWV3X2RlbF9zdG10KQorTk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJP VyAoaW5zdGVhZF9vZl9kZWwpCitOT1RJQ0U6ICBPTEQ6ICgyMSwxMCkKK05PVElDRTogIG1h aW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X2RlbF9zdG10KQor REVMRVRFIDEKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAz MjsKK05PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3Jl X3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUg Uk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIxLDMyKQogTk9USUNFOiAg bWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfZGVsX3N0bXQp Ci1ERUxFVEUgMworREVMRVRFIDEKIERFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0g MzEgUkVUVVJOSU5HIGEsIGI7CiBOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBT VEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3IElO U1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90c2VhcmNoLm91dAppbmRleCA1YjdjMjEyM2YzNy4uNmRjMTkzZjAyZDYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dApAQCAtMjQ5Myw3ICsyNDkz LDggQEAgU0VMRUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBib29LcycpOwogICdza3kn IHwgJ2Jvb2snCiAoMSByb3cpCiAKLS0tdHJpZ2dlcgorLS0gdHN2ZWN0b3JfdXBkYXRlX3Ry aWdnZXIoKSB1c2VzIGhlYXBfbW9kaWZ5X3R1cGxlKCkgdG8gc2V0IGNvbHVtbiAnYScKKy0t IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgZXhlY3V0b3IncyBTRVQtY2xhdXNlIHRyYWNr aW5nLgogQ1JFQVRFIFRSSUdHRVIgdHN2ZWN0b3J1cGRhdGUKIEJFRk9SRSBVUERBVEUgT1Ig SU5TRVJUIE9OIHRlc3RfdHN2ZWN0b3IKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcihhLCAncGdfY2F0YWxvZy5lbmdsaXNoJywgdCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3 cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQK aW5kZXggN2IwMGM3NDI3NzYuLmNkNmU3MWFjNDkwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zNzIsMTUgKzM3MiwxNSBA QCBJTlNFUlQgSU5UTyByd192aWV3MTYgKGEsIGIpIFZBTFVFUyAoMywgJ1JvdyAzJyk7IC0t IHNob3VsZCBiZSBPSwogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYT0zLCBhYT0tMyBXSEVSRSBh PTM7IC0tIHNob3VsZCBmYWlsCiBFUlJPUjogIG11bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNh bWUgY29sdW1uICJhIgogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9LTMgV0hFUkUgYT0zOyAt LSBzaG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7CitTRUxFQ1QgKiBGUk9N IGJhc2VfdGJsIE9SREVSIEJZIGE7CiAgYSAgfCAgIGIgICAgCiAtLS0tKy0tLS0tLS0tCisg LTMgfCBSb3cgMwogIC0yIHwgUm93IC0yCiAgLTEgfCBSb3cgLTEKICAgMCB8IFJvdyAwCiAg IDEgfCBSb3cgMQogICAyIHwgUm93IDIKLSAtMyB8IFJvdyAzCiAoNiByb3dzKQogCiBERUxF VEUgRlJPTSByd192aWV3MTYgV0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKaW5kZXggMGNiMTRlYjBl MzYuLmJjOTE3NDJhNDkyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5l cmF0ZWRfdmlydHVhbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsCkBAIC0xMjcsNyArMTI3LDcgQEAgQUxURVIgVklFVyBndGVzdDF2IEFM VEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEwMDsKIElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFM VUVTICg4LCBERUZBVUxUKTsgIC0tIGVycm9yCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVF UyAoOCwgREVGQVVMVCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiAKLVNFTEVDVCAqIEZS T00gZ3Rlc3QxdjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogREVMRVRF IEZST00gZ3Rlc3QxdiBXSEVSRSBhID49IDU7CiBEUk9QIFZJRVcgZ3Rlc3QxdjsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCmluZGV4IDIyODVlOTAxMTBlLi4xOWMyNTcyMjAx ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbApAQCAtNjYwLDcgKzY2MCw5IEBA IFVQREFURSBtYWluX3ZpZXcgU0VUIGIgPSAzMiBXSEVSRSBhID0gMjEgQU5EIGIgPSAzMSBS RVRVUk5JTkcgYSwgYjsKIFVQREFURSBtYWluX3ZpZXcgU0VUIGIgPSAwIFdIRVJFIGZhbHNl OwogCiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdnZXIKLURFTEVURSBGUk9NIG1h aW5fdmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hF UkUgYSA9IDIwIEFORCBiID0gMzE7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9 IDIxIEFORCBiID0gMTA7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFO RCBiID0gMzI7CiBERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklO RyBhLCBiOwogCiBcc2V0IFFVSUVUIHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RzZWFyY2guc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwK aW5kZXggOGIzZDcwMGY1N2MuLjA5NDE4MWU3NzY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC90c2VhcmNoLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2Vh cmNoLnNxbApAQCAtNzYwLDcgKzc2MCw4IEBAIFNFTEVDVCB0b190c3ZlY3RvcignU0tJRVMg TXkgYm9vS3MnKTsKIFNFTEVDVCBwbGFpbnRvX3RzcXVlcnkoJ1NLSUVTIE15IGJvb0tzJyk7 CiBTRUxFQ1QgdG9fdHNxdWVyeSgnU0tJRVMgJiBNeSB8IGJvb0tzJyk7CiAKLS0tdHJpZ2dl cgorLS0gdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSB1c2VzIGhlYXBfbW9kaWZ5X3R1cGxl KCkgdG8gc2V0IGNvbHVtbiAnYScKKy0tIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgZXhl Y3V0b3IncyBTRVQtY2xhdXNlIHRyYWNraW5nLgogQ1JFQVRFIFRSSUdHRVIgdHN2ZWN0b3J1 cGRhdGUKIEJFRk9SRSBVUERBVEUgT1IgSU5TRVJUIE9OIHRlc3RfdHN2ZWN0b3IKIEZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcihhLCAn cGdfY2F0YWxvZy5lbmdsaXNoJywgdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRh YmxlX3ZpZXdzLnNxbAppbmRleCA0YTYwMTI2ZWM5MC4uMDE3MDA0MGMwOTggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbApAQCAtMTI1LDcgKzEyNSw3 IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiBWQUxVRVMgKDMsICdSb3cgMycsIDMpOyAtLSBz aG91bGQgZmFpbAogSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxVRVMgKDMsICdS b3cgMycpOyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VUIGE9MywgYWE9 LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgZmFpbAogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9 LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7 CitTRUxFQ1QgKiBGUk9NIGJhc2VfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByd192 aWV3MTYgV0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCiAtLSBSZWFkLW9ubHkgdmlld3MK IElOU0VSVCBJTlRPIHJvX3ZpZXcxNyBWQUxVRVMgKDMsICdST1cgMycpOwotLSAKMi41MC4x Cgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA0NzdlOTQ3NzJkMjQ2MDIxZjdkZjg4OTRkMTcyNTgxZmU3Y2MwYzY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDMv OV0gQWRkIHRoZSBIT1QtaW5kZXhlZCBvbi1kaXNrIGZvcm1hdDogaW5saW5lIGF0dHIKIGJp dG1hcCBhbmQgc3R1YnMKCkRlZmluZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBhIEhP VC1pbmRleGVkIHVwZGF0ZSBhbmQgaXRzIGxhdGVyCnBydW5lL2NvbGxhcHNlIHByb2R1Y2Us IGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgb3Igd3JpdGVzIGl0OgoKLSBIRUFQX0lO REVYRURfVVBEQVRFRCAoaHR1cF9kZXRhaWxzLmgpLCB0aGUgdF9pbmZvbWFzazIgYml0IG1h cmtpbmcgYQogIGhlYXAtb25seSB0dXBsZSB3aG9zZSBwcm9kdWNpbmcgVVBEQVRFIGFsc28g Y2hhbmdlZCBhbiBpbmRleGVkIGNvbHVtbjsgYW5kCi0gYWNjZXNzL2hvdF9pbmRleGVkLmgs IHRoZSBpbmxpbmUgZml4ZWQtc2l6ZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgc3RvcmVkIGlu CiAgdGhlIHRhaWwgb2Ygc3VjaCBhIHR1cGxlLCBwbHVzIHRoZSB4aWQtZnJlZSAiY29sbGFw c2Utc3Vydml2b3Igc3R1YiIgZm9ybWF0CiAgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHdpdGgg bmF0dHMgPT0gMCwgYSBmb3J3YXJkIGxpbmssIGFuZCB0aGUgc2VnbWVudCdzCiAgYml0bWFw KSBhbmQgdGhlIGFjY2Vzc29ycyBib3RoIHNoYXJlLgoKUkVBRE1FLkhPVC1JTkRFWEVEIGlu dHJvZHVjZXMgdGhlIGRlc2lnbiBhbmQgdGhlIHJlbGF4ZWQgY2xhc3NpYy1IT1QKaW52YXJp YW50OyBsYXRlciBjb21taXRzIGRvY3VtZW50IHRoZSBlbGlnaWJpbGl0eSwgd3JpdGUsIHJl YWQsIGFuZApwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgaW4gdGhlaXIgb3duIHNlY3Rpb25z LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3Jl ZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAgNTYgKysrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaCAgICAgICAgICAgfCAxOTggKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgg ICAgICAgICAgfCAgIDggKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNGI3MDFlNDI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTAsMCArMSw1NiBAQAorSE9ULWluZGV4ZWQg dXBkYXRlcyAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSwgIkhPVC9TSVUiKQorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDbGFz c2ljIEhPVCAoc2VlIFJFQURNRS5IT1QpIGtlZXBzIGFuIFVQREFURSBvZmYgdGhlIGluZGV4 ZXMgb25seSB3aGVuIG5vCitpbmRleGVkIGNvbHVtbiBjaGFuZ2VkOiB0aGUgbmV3IHR1cGxl IGlzIGEgaGVhcC1vbmx5IHR1cGxlIGFwcGVuZGVkIHRvIHRoZQorY2hhaW4sIGFuZCBldmVy eSBpbmRleCBlbnRyeSBjb250aW51ZXMgdG8gcmVzb2x2ZSwgdmlhIHRoZSBzYW1lLXBhZ2Ug dF9jdGlkCitjaGFpbiwgdG8gYSB0dXBsZSB3aG9zZSBpbmRleGVkIHZhbHVlcyBzdGlsbCBl cXVhbCB0aGUgZW50cnkncyBrZXkuCisKK0hPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXgg VXBkYXRlLCBTSVUpIHJlbGF4ZXMgdGhhdCB0bzogYW4gVVBEQVRFIG1heQorY2hhbmdlIGlu ZGV4ZWQgY29sdW1ucyBhbmQgc3RpbGwgYmUgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwKK3Byb3ZpZGVkIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBpbnNlcnRlZCBvbmx5 IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5CithdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5n ZWQuICBUaGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGRpZCBub3QgY2hhbmdlIGFyZQor bGVmdCB1bnRvdWNoZWQsIHdoaWNoIGlzIHdoZXJlIHRoZSB3cml0ZS1hbXBsaWZpY2F0aW9u IHNhdmluZyBjb21lcyBmcm9tLgorCitUaGUgcHJpY2UgaXMgdGhhdCBhIGNoYWluIG1heSBu b3cgY29udGFpbiB0dXBsZXMgd2l0aCBkaWZmZXJlbnQgaW5kZXgga2V5cywgc28KK2FuIGlu ZGV4IGVudHJ5IGZvciBhbiBvbGQga2V5IGNhbiBjaGFpbi1yZXNvbHZlIHRvIGEgbGl2ZSB0 dXBsZSB3aG9zZSBjdXJyZW50CitrZXkgZGlmZmVycy4gIFN1Y2ggYW4gZW50cnkgaXMgU1RB TEUuICBUaGUgcmVhZCBzaWRlIGRldGVjdHMgYW5kIGRyb3BzIHN0YWxlCitlbnRyaWVzIGJ5 IHRlc3RpbmcgdGhlIGhlYXAncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgYWdhaW5zdCB0 aGUgaW5kZXgncwora2V5IGNvbHVtbnMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVs aWdpYmlsaXR5IHJ1bGVzLCB0aGUgd3JpdGUgcGF0aCwgdGhlIG9uLWNoYWluCityZXByZXNl bnRhdGlvbiwgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCwgcHJ1bmUvY29sbGFwc2Us IHZhY3V1bSByZWNsYW1hdGlvbiwKK3JlY292ZXJ5LCB0aGUgbG9naWNhbC1yZXBsaWNhdGlv biBhcHBseSBnYXRpbmcsIGFuZCB0aGUgc3RhdGlzdGljcy4KKworCitUaGUgY2xhc3NpYy1I T1QgaW52YXJpYW50IHdlIGFyZSByZWxheGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsYXNzaWMgSE9UIHJlbGllcyBvbiB0d28gcHJvcGVy dGllczoKKworICAoYSkgZXZlcnkgbGl2ZSBpbmRleCBlbnRyeSByZXNvbHZlcywgdmlhIGEg c2FtZS1wYWdlIHRfY3RpZCBjaGFpbiwgdG8gdGhlCisgICAgICBjaGFpbidzIHJvb3QgbGlu ZSBwb2ludGVyOyBhbmQKKworICAoYikgdGhlIGluZGV4ZWQgdmFsdWVzIG9mIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBjaGFpbiBlcXVhbCB0aGUga2V5IG9mIGV2ZXJ5CisgICAgICBpbmRleCBl bnRyeSB0aGF0IHJlYWNoZXMgaXQuCisKK0hPVC1pbmRleGVkIGtlZXBzIChhKSBidXQgYnJl YWtzIChiKTogYWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlIGNoYWluCitob2xkcyB0 dXBsZXMgd2l0aCBkaWZmZXJlbnQga2V5cywgYW5kIGEgbmV3IGluZGV4IGVudHJ5IGlzIHBs YW50ZWQgdGhhdCBwb2ludHMKK2F0IHRoZSAqc3BlY2lmaWMqIGhlYXAtb25seSB0dXBsZSB3 aG9zZSBrZXkgaXQgbWF0Y2hlcyAtLSBub3QgbmVjZXNzYXJpbHkgdGhlCityb290LgorCisK K1RoZSBIT1QtaW5kZXhlZCBpbnZhcmlhbnQgKHRoZSBuZXcgY29udHJhY3QpCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFuIGluZGV4IGVu dHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHR1cGxlIHZlcnNpb24gd2hvc2UgaW5kZXhl ZCBrZXkgaXQKKyAgbWF0Y2hlZCBhdCBpbnNlcnRpb24gdGltZS4gIEEgY2hhaW4gd2FsayB0 aGF0IHJlYWNoZXMgYSBsaXZlIHR1cGxlIGJ5CisgIGNyb3NzaW5nIGEgSE9ULWluZGV4ZWQg aG9wICphZnRlciogdGhlIGVudHJ5J3Mgb3duIHRhcmdldCBtYXkgYmUgc3RhbGU6IGlmCisg IHRoZSB1bmlvbiBvZiB0aG9zZSBjcm9zc2VkIGhvcHMnIG1vZGlmaWVkIGF0dHJpYnV0ZXMg b3ZlcmxhcHMgdGhlIGluZGV4J3MKKyAga2V5IGNvbHVtbnMsIHRoZSBlbnRyeSBpcyBzdGFs ZSBhbmQgdGhlIHR1cGxlIGlzIGRyb3BwZWQgZnJvbSB0aGF0IHNjYW4uCisgIFRoZSByb3cg aXMKKyAgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IHRoYXQgdGhlIHNhbWUgdXBk YXRlIGluc2VydGVkIGZvciB0aGUgbmV3CisgIGtleS4KKworVGhpcyBpcyB3aGF0IG1ha2Vz IGRyb3BwaW5nIGEgc3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwor cmVhY2hhYmxlIHRocm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRl eC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjI5NWY1ODk1MzVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCArMSwxOTggQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgKKyAqCSAgSW5saW5lLXRyYWls aW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJ VSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBsZSBwcm9kdWNlZCBieSBhIEhP VC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0CisgKiBpbiB0 X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0ZXIgaXRzIG5vcm1hbCBhdHRy aWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAgcmVjb3JkaW5nIHdoaWNoIGhl YXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4gaG9wCisgKiAocmVsYXRpdmUg dG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0dG51bSAtIDEpIGNvcnJlc3Bv bmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisgKgorICogVGhlIGJpdG1hcCBp cyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93 bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0IHdhcyB3cml0dGVuIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0dXBsZTsgcHJlc2VydmVkIHNl cGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0cyBsZW5ndGggaXMgbm90Cisg KiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5lIHBvaW50ZXIncyBpdGVtIGFu ZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwgcGFzdCB0aGUKKyAqIGF0dHJp YnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUgdHVwbGUgc3RvcCBhdCBuYXR0 cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNhdXNlIEFERCBDT0xVTU4gcmFp c2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4aXN0aW5nCisg KiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdob3NlIGJpdG1hcHMgd2VyZSBz aXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0dHMgdGhhbiB0aGUgcmVsYXRp b24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6ZSBhbmQKKyAqIGxvY2F0ZSBh IHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9XTiB3cml0ZS10aW1lIG5hdHRz CisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBuZXZlciBmcm9tIHRoZSByZWxh dGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUg YmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlcgorICogYml0 bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9mIGEgbGFyZ2VyIGFjY3VtdWxh dG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gKKyNkZWZpbmUgSE9UX0lOREVY RURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorCisvKgorICogTnVt YmVyIG9mIGJ5dGVzIGluIHRoZSB0cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAgZm9y IGEgcmVsYXRpb24gd2l0aAorICogbmF0dHMgdXNlciBhdHRyaWJ1dGVzIChvbmUgYml0IHBl ciBhdHRyaWJ1dGUsIGF0dG51bSAtIDEpLgorICovCitzdGF0aWMgaW5saW5lIFNpemUKK0hv dEluZGV4ZWRCaXRtYXBCeXRlcyhpbnQgbmF0dHMpCit7CisJQXNzZXJ0KG5hdHRzID49IDAp OworCXJldHVybiAoU2l6ZSkgKChuYXR0cyArIDcpIC8gOCk7Cit9CisKKy8qCisgKiBSZWFk LW9ubHkgcG9pbnRlciB0byB0aGUgdHJhaWxpbmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9m IGEgSE9ULWluZGV4ZWQKKyAqIHR1cGxlLiAgaXRlbV9sZW4gaXMgSXRlbUlkR2V0TGVuZ3Ro KCkgb2YgdGhlIHR1cGxlJ3MgbGluZSBwb2ludGVyOyBuYXR0cyBpcworICogdGhlIHJlbGF0 aW9uJ3MgbnVtYmVyIG9mIGF0dHJpYnV0ZXMuICBUaGUgY2FsbGVyIG11c3QgaGF2ZSB2ZXJp ZmllZCB0aGF0CisgKiB0aGUgdHVwbGUgaGFzIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldC4K KyAqLworc3RhdGljIGlubGluZSBjb25zdCB1aW50OCAqCitIb3RJbmRleGVkR2V0TW9kaWZp ZWRCaXRtYXAoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAqaHR1cCwKKwkJCQkJCQlTaXpl IGl0ZW1fbGVuLCBpbnQgbmF0dHMpCit7CisJcmV0dXJuIChjb25zdCB1aW50OCAqKSAoKGNv bnN0IGNoYXIgKikgaHR1cCArCisJCQkJCQkJaXRlbV9sZW4gLSBIb3RJbmRleGVkQml0bWFw Qnl0ZXMobmF0dHMpKTsKK30KKworLyogV3JpdGFibGUgdmFyaWFudCwgZm9yIE9SLWluZyB0 aGUgdW5pb24gb250byBhIHN1cnZpdmluZyByZWRpcmVjdCB0YXJnZXQuICovCitzdGF0aWMg aW5saW5lIHVpbnQ4ICoKK0hvdEluZGV4ZWRHZXRNb2RpZmllZEJpdG1hcFJXKEhlYXBUdXBs ZUhlYWRlckRhdGEgKmh0dXAsCisJCQkJCQkJICBTaXplIGl0ZW1fbGVuLCBpbnQgbmF0dHMp Cit7CisJcmV0dXJuICh1aW50OCAqKSAoKGNoYXIgKikgaHR1cCArCisJCQkJCSAgaXRlbV9s ZW4gLSBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMpKTsKK30KKworLyogVHJ1ZSBpZiB1 c2VyIGF0dHJpYnV0ZSBhdHRudW0gKDEtYmFzZWQpIGlzIHNldCBpbiB0aGUgYml0bWFwLiAq Lworc3RhdGljIGlubGluZSBib29sCitIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQoY29uc3Qg dWludDggKmJpdG1hcCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJaW50CQkJYml0ID0gYXR0 bnVtIC0gMTsKKworCUFzc2VydChhdHRudW0gPj0gMSk7CisJcmV0dXJuIChiaXRtYXBbYml0 IC8gOF0gJiAoMSA8PCAoYml0ICUgOCkpKSAhPSAwOworfQorCisvKiBTZXQgdXNlciBhdHRy aWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpbiB0aGUgYml0bWFwLiAqLworc3RhdGljIGlubGlu ZSB2b2lkCitIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKHVpbnQ4ICpiaXRtYXAsIEF0dHJO dW1iZXIgYXR0bnVtKQoreworCWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlBc3NlcnQo YXR0bnVtID49IDEpOworCWJpdG1hcFtiaXQgLyA4XSB8PSAodWludDgpICgxIDw8IChiaXQg JSA4KSk7Cit9CisKKy8qIE9SIHRoZSBmaXJzdCBuYnl0ZXMgb2Ygc3JjIGludG8gZHN0LiAg ZHN0IG11c3QgYmUgYXQgbGVhc3QgbmJ5dGVzIGxvbmc7IGl0CisgKiBtYXkgYmUgbG9uZ2Vy IChzaXplZCBmb3IgYSBsYXJnZXIgbmF0dHMpIC0tIGJpdCBwb3NpdGlvbnMgYXJlIGF0dHJp YnV0ZQorICogYmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIE9SLWluZyBv bmx5IHNyYydzIGJ5dGVzIGlzIGNvcnJlY3QuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0hv dEluZGV4ZWRCaXRtYXBVbmlvbih1aW50OCAqZHN0LCBjb25zdCB1aW50OCAqc3JjLCBpbnQg c3JjX25hdHRzKQoreworCVNpemUJCW5ieXRlcyA9IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhz cmNfbmF0dHMpOworCisJZm9yIChTaXplIGkgPSAwOyBpIDwgbmJ5dGVzOyBpKyspCisJCWRz dFtpXSB8PSBzcmNbaV07Cit9CisKKy8qCisgKiBJcyBldmVyeSBiaXQgc2V0IGluIHN1YiBh bHNvIHNldCBpbiBzdXBlcj8gIHN1YiBpcyBzaXplZCBmb3Igc3ViX25hdHRzOworICogc3Vw ZXIgbXVzdCBiZSBhdCBsZWFzdCB0aGF0IGxvbmcuICBVc2VkIGJ5IHBydW5lIHRvIGRlY2lk ZSBhIGNvbGxhcHNlCisgKiBzdXJ2aXZvciBpcyByZWNsYWltYWJsZTogd2hlbiB0aGUgYXR0 cmlidXRlcyBhIGRlYWQgbWVtYmVyIGNoYW5nZWQgYXJlIGFsbAorICogY2hhbmdlZCBhZ2Fp biBieSBsYXRlciBob3BzLCBldmVyeSBpbmRleCBlbnRyeSBwb2ludGluZyBhdCB0aGF0IG1l bWJlciBpcworICogc3VwZXJzZWRlZCAoc3RhbGUpLCBzbyBpdCBjYXJyaWVzIG5vIGxpdmUg ZW50cnkuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEJpdG1hcElzU3Vi c2V0KGNvbnN0IHVpbnQ4ICpzdWIsIGNvbnN0IHVpbnQ4ICpzdXBlciwgaW50IHN1Yl9uYXR0 cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoc3ViX25hdHRz KTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5ieXRlczsgaSsrKQorCQlpZiAoKHN1Yltp XSAmIH5zdXBlcltpXSkgIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIFN0dWIgbGluZSBwb2ludGVycyAoY29sbGFwc2Ugc3Vydml2b3JzKS4K KyAqCisgKiBXaGVuIHBydW5lIGNvbGxhcHNlcyBhIGRlYWQgSE9ULWluZGV4ZWQgY2hhaW4g aXQgY2Fubm90IGtlZXAgdGhlIGRlYWQga2V5CisgKiB0dXBsZXMgYXMgbGl2ZSBkYXRhLWJl YXJpbmcgdHVwbGVzICh0aGVpciBYSURzIHdvdWxkIGhvbGQgYmFjaworICogcmVsZnJvemVu eGlkKS4gIEVhY2ggcHJlc2VydmVkIGRlYWQga2V5IHR1cGxlIGlzIGluc3RlYWQgY29udmVy dGVkIHRvIGFuCisgKiB4aWQtZnJlZSAic3R1YiI6IGFuIExQX05PUk1BTCBpdGVtIHdob3Nl IEhlYXBUdXBsZUhlYWRlciBpcyBmcm96ZW4gYW5kCisgKiBtYXJrZWQgbm90LWEtcmVhbC10 dXBsZSAoSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0LCBIZWFwVHVwbGVIZWFkZXJHZXROYXR0 cworICogPT0gMCksIHdob3NlIHRfY3RpZC5vZmZudW0gZm9yd2FyZHMgdG8gdGhlIG5leHQg a2V5IHR1cGxlIG9uIHRoZSBwYWdlLCBhbmQKKyAqIHdob3NlIHBheWxvYWQgaXMgdGhlIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcCBmb3IgdGhlIHNlZ21lbnQgaXQgcmVwcmVzZW50cyAtLQor ICogbG9jYXRlZCwgbGlrZSBhIGxpdmUgdHVwbGUncyBpbmxpbmUgYml0bWFwLCBpbiB0aGUg ZmluYWwKKyAqIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YgdGhlIGl0 ZW0sIHNvIHRoZSBzYW1lIGFjY2Vzc29ycyB3b3JrCisgKiBmb3IgYm90aC4gIEJlY2F1c2Ug dGhlIG5hdHRzIGZpZWxkIGlzIG92ZXJ3cml0dGVuIHdpdGggdGhlIDAgc2VudGluZWwsIHRo ZQorICogc3R1YidzIHdyaXRlLXRpbWUgbmF0dHMgKG5lZWRlZCB0byBzaXplL2xvY2F0ZSB0 aGF0IGJpdG1hcCkgaXMgcHJlc2VydmVkIGluCisgKiB0aGUgb3RoZXJ3aXNlLXVudXNlZCBi bG9jay1udW1iZXIgaGFsZiBvZiB0X2N0aWQ7IEhvdEluZGV4ZWRTdHViR2V0Rm9yd2FyZAor ICogcmVhZHMgb25seSB0aGUgb2Zmc2V0IGhhbGYuCisgKgorICogQSBzdHViIGlzIHNpZ25h dHVyZS1za2lwcGVkIChub3QgdmlzaWJpbGl0eS1za2lwcGVkKSBieSBldmVyeSBjb25zdW1l ciB0aGF0CisgKiB3YWxrcyBMUF9OT1JNQUwgaXRlbXMuCisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorSG90SW5kZXhlZEhlYWRlcklzU3R1Yihjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRh ICp0dXApCit7CisJcmV0dXJuICh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQ REFURUQpICE9IDAgJiYKKwkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKSA9PSAwOwor fQorCisvKiBPZmZzZXQgb2YgdGhlIG5leHQga2V5IHR1cGxlIHRoaXMgc3R1YiBmb3J3YXJk cyB0byAoc2FtZSBwYWdlKS4gKi8KK3N0YXRpYyBpbmxpbmUgT2Zmc2V0TnVtYmVyCitIb3RJ bmRleGVkU3R1YkdldEZvcndhcmQoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwKQor eworCXJldHVybiBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soJnR1cC0+dF9j dGlkKTsKK30KKworLyoKKyAqIEJpdG1hcCBzaXppbmcgYWNyb3NzIHRoZSByZWxhdGlvbidz IGxpZmV0aW1lLgorICoKKyAqIFRoZSB0cmFpbGluZyBiaXRtYXAgaXMgY2VpbChuYXR0cyAv IDgpIGJ5dGVzLCB3aGVyZSBuYXR0cyBpcyB0aGUgcmVsYXRpb24ncworICogYXR0cmlidXRl IGNvdW50ICphdCB0aGUgdGltZSB0aGUgdHVwbGUgd2FzIHdyaXR0ZW4qLiAgQUREIENPTFVN TiByYWlzZXMgdGhlCisgKiByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4 aXN0aW5nIHR1cGxlcywgc28gYSBjaGFpbiBjYW4gaG9sZAorICogdHVwbGVzIHdob3NlIGJp dG1hcHMgd2VyZSBzaXplZCBmb3IgZGlmZmVyZW50IChzbWFsbGVyKSBuYXR0cyB0aGFuIHRo ZQorICogcmVsYXRpb24gaGFzIG5vdy4gIEV2ZXJ5IGNvbnN1bWVyIG11c3QgdGhlcmVmb3Jl IHNpemUgYW5kIGxvY2F0ZSBhIHR1cGxlJ3MKKyAqIGJpdG1hcCBmcm9tIHRoYXQgdHVwbGUn cyBvd24gd3JpdGUtdGltZSBuYXR0cywgbmV2ZXIgZnJvbSB0aGUgcmVsYXRpb24ncworICog Y3VycmVudCBuYXR0cy4KKyAqCisgKiBGb3IgYSBsaXZlIEhPVC1pbmRleGVkIHR1cGxlIHRo ZSB3cml0ZS10aW1lIG5hdHRzIGlzIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzCisgKiAoYSBm cmVzaGx5IGZvcm1lZCBVUERBVEUgdHVwbGUgc3RvcmVzIHRoZSBmdWxsIHJlbGF0aW9uIG5h dHRzLCB3aGljaCBpcyB3aGF0CisgKiBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUgc2l6 ZWQgdGhlIGJpdG1hcCB3aXRoKS4gIEEgc3R1YiBvdmVyd3JpdGVzIG5hdHRzCisgKiB3aXRo IDAgYXMgaXRzIHNlbnRpbmVsLCBzbyBpdCBwcmVzZXJ2ZXMgaXRzIHdyaXRlLXRpbWUgbmF0 dHMgaW4gdGhlIHVudXNlZAorICogYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlkIGluc3Rl YWQgKHRoZSBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZAorICogbGluaykuCisgKi8K K3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFN0dWJTZXRCaXRtYXBOYXR0cyhIZWFw VHVwbGVIZWFkZXJEYXRhICp0dXAsIGludCBuYXR0cykKK3sKKwlCbG9ja0lkU2V0KCZ0dXAt PnRfY3RpZC5pcF9ibGtpZCwgKEJsb2NrTnVtYmVyKSBuYXR0cyk7Cit9CisKK3N0YXRpYyBp bmxpbmUgaW50CitIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKGNvbnN0IEhlYXBUdXBs ZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gKGludCkgQmxvY2tJZEdldEJsb2NrTnVt YmVyKCZ0dXAtPnRfY3RpZC5pcF9ibGtpZCk7Cit9CisKKy8qIFdyaXRlLXRpbWUgbmF0dHMg b2YgYW55IEhPVC1pbmRleGVkIGl0ZW0gKGxpdmUgdHVwbGUgb3Igc3R1YikuICovCitzdGF0 aWMgaW5saW5lIGludAorSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoY29uc3QgSGVhcFR1 cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKHR1 cCkpCisJCXJldHVybiBIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKHR1cCk7CisJcmV0 dXJuIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCk7Cit9CisKKyNlbmRpZgkJCQkJCQkv KiBIT1RfSU5ERVhFRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1 cF9kZXRhaWxzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKaW5kZXgg NzdhNmM0OGZkNzEuLjdlYjdmODZmNWVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaHR1cF9kZXRhaWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWls cy5oCkBAIC0yODksNyArMjg5LDEzIEBAIEhFQVBfWE1BWF9JU19LRVlTSFJfTE9DS0VEKHVp bnQxNiBpbmZvbWFzaykKICAqIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0X2luZm9tYXNrMjoK ICAqLwogI2RlZmluZSBIRUFQX05BVFRTX01BU0sJCQkweDA3RkYJLyogMTEgYml0cyBmb3Ig bnVtYmVyIG9mIGF0dHJpYnV0ZXMgKi8KLS8qIGJpdHMgMHgxODAwIGFyZSBhdmFpbGFibGUg Ki8KKyNkZWZpbmUgSEVBUF9JTkRFWEVEX1VQREFURUQJMHgwODAwCS8qIEhPVCB0dXBsZSBw cm9kdWNlZCBieSBhbiBVUERBVEUKKwkJCQkJCQkJCQkgKiB0aGF0IGFsc28gY2hhbmdlZCBh biBpbmRleGVkCisJCQkJCQkJCQkJICogYXR0cmlidXRlIChIT1QvU0lVKTsgaW5kZXggc2Nh bnMKKwkJCQkJCQkJCQkgKiB0aGF0IHJlYWNoIGl0IHZpYSBhIGNoYWluIHJlY2hlY2sKKwkJ CQkJCQkJCQkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdhaW5zdCB0aGUKKwkJCQkJCQkJ CQkgKiBsaXZlIHR1cGxlLiAqLworLyogYml0IDB4MTAwMCBpcyBhdmFpbGFibGUgKi8KICNk ZWZpbmUgSEVBUF9LRVlTX1VQREFURUQJCTB4MjAwMAkvKiB0dXBsZSB3YXMgdXBkYXRlZCBh bmQga2V5IGNvbHMKIAkJCQkJCQkJCQkgKiBtb2RpZmllZCwgb3IgdHVwbGUgZGVsZXRlZCAq LwogI2RlZmluZSBIRUFQX0hPVF9VUERBVEVECQkweDQwMDAJLyogdHVwbGUgd2FzIEhPVC11 cGRhdGVkICovCi0tIAoyLjUwLjEKCg== --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4MTMxY2FlMTJhODI2ZjNlZWQ0MjU2NTc1N2I3MjUwOTBhN2YyNDI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDQv OV0gQWRkIEhPVC1pbmRleGVkIHVwZGF0ZXM6IHNlbGVjdGl2ZSBpbmRleCBtYWludGVuYW5j ZQogYW5kIHJlYWRzCgpJbXBsZW1lbnQgdGhlIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5k ZXggVXBkYXRlKSBmZWF0dXJlIG9uIHRoZSBmb3VuZGF0aW9uCmxhaWQgYnkgdGhlIGV4ZWN1 dG9yJ3MgbW9kaWZpZWQtYXR0cmlidXRlIGlkZW50aWZpY2F0aW9uLgoKRWxpZ2liaWxpdHk6 IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBhIEhlYXBVcGRhdGVJbmRleE1vZGUg LS0KSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgKG5vdCBIT1Q7IGV2ZXJ5IGluZGV4IG5lZWRz IGFuIGVudHJ5KSwgSEVBUF9VUERBVEVfSE9UCihjbGFzc2ljIEhPVDsgbm8gaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgKEhPVApjaGFp biwgb25seSB0aGUgY2hhbmdlZCBpbmRleGVzIG1haW50YWluZWQpIC0tIGNvbXB1dGVkIGZy b20gbW9kaWZpZWRfaWR4X2F0dHJzCmFuZCB0aGUgcGVyLXJlbGF0aW9uIGluZGV4ZWQtYXR0 cmlidXRlIHNldCAoUmVsYXRpb25HZXRJbmRleGVkQXR0cnMpLiAgQW4KVVBEQVRFIHRoYXQg Y2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBpcwpIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUgdW5sZXNzIGl0IGlzIGZvcmNlZCB0byBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBieQpvbmUgb2Y6IGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5n ZWQgKG5vdGhpbmcgdG8gc2tpcCksIGFuIGF0dHJpYnV0ZQpyZWZlcmVuY2VkIGJ5IGFuIGV4 cHJlc3Npb24gaW5kZXggY2hhbmdlZCAoZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZSBp cyBub3QKaW1wbGVtZW50ZWQgeWV0KSwgYSBzeXN0ZW0gY2F0YWxvZywgb3IgdGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgZ2F0ZSAoc2VlCnRoZSBhcHBseS1nYXRpbmcgY29tbWl0 KS4gIFBhcnRpYWwgaW5kZXhlcywgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25l ZAp0YWJsZXMsIGFuZCBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgYXJlIGFsbCBlbGlnaWJs ZSAtLSB0aGUgcmVhZCBwYXRoIGlzCmFjY2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MKYXR0cmlidXRlIHNldCwg c28gbm8gY2FydmUtb3V0IGlzIG5lZWRlZCBmb3IgdGhlbS4KCldyaXRlIHBhdGg6IHRoZSB0 YWJsZS1BTSB1cGRhdGUgY29udHJhY3QgY2FycmllcyBtb2RpZmllZCBhdHRyaWJ1dGVzIElO L09VVCBhcwphIEJpdG1hcHNldCAob24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1y b3cgc2VudGluZWwsClRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCB0byBzaWduYWwgImV2 ZXJ5IGluZGV4IG5lZWRzIGFuIGVudHJ5IiksIGFuZApoZWFwX3VwZGF0ZSwgZm9yIEhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSwga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uIHRoZSBI T1QKY2hhaW4gd2hpbGUgRXhlY0luc2VydEluZGV4VHVwbGVzIG1haW50YWlucyBvbmx5IHRo ZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMKY2hhbmdlZC4gIFRoZSBuZXcgaGVhcC1vbmx5 IHR1cGxlIHJlY29yZHMsIGluIGFuIGlubGluZSBiaXRtYXAgaW4gaXRzIHRhaWwsIHRoZQph dHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBhdCBpdHMgaG9wLiAgT25seSB0aGUgc3RvcmVkIHR1 cGxlIGNhcnJpZXMgdGhlIGJpdG1hcAphbmQgdGhlIEhFQVBfSU5ERVhFRF9VUERBVEVEIGZs YWc7IHRoZSBjYWxsZXIncyBpbi1tZW1vcnkgY29weSBpcyBsZWZ0IHVubWFya2VkCnNvIHRo ZSBmbGFnIG5ldmVyIHByb21pc2VzIGEgdHJhaWxpbmcgYml0bWFwIHRoYXQgaXMgbm90IHBy ZXNlbnQuCgpSZWFkIHBhdGg6IGEgY2hhaW4gd2FsayB0byB0aGUgbGl2ZSB0dXBsZSB1bmlv bnMgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZQpiaXRtYXBzIG9mIGV2ZXJ5IGhvcCBpdCBjcm9z c2VzLiAgVGhlIGluZGV4LWFjY2VzcyBsYXllciB0cmVhdHMgdGhhdApjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgYXMgdGhlIHN0YWxlbmVzcyBhdXRob3JpdHk6IGlmIGl0IG92ZXJsYXBz IHRoZQphcnJpdmluZyBpbmRleCdzIGtleSBjb2x1bW5zIHRoZSBlbnRyeSBpcyBzdGFsZSBh bmQgaXMgZHJvcHBlZCwgYW5kIHRoZSByb3cgaXMKcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNo IGVudHJ5IHRoZSBzYW1lIHVwZGF0ZSBwbGFudGVkLiAgVGhlIHJlYWQgcGF0aCBpcwphY2Nl c3MtbWV0aG9kIGFnbm9zdGljIGFuZCBuZWVkcyBubyB2YWx1ZSByZWNoZWNrIG9yIGxlYWYg a2V5OiBpdCBpcyBjb3JyZWN0CmV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQgYXdheSBhbmQg YmFjaywgYmVjYXVzZSB0aGUgdmFsdWUtcmVzdG9yaW5nIHVwZGF0ZQpwbGFudGVkIGEgZnJl c2ggZW50cnkgd2hvc2Ugd2FsayBjcm9zc2VzIG5vIGxhdGVyIGtleS1jaGFuZ2luZyBob3Au CgpVbmlxdWUgY2hlY2tzIGFyZSB0aGUgb25lIHBsYWNlIHRoYXQgZG9lcyBjb21wYXJlIHZh bHVlczogX2J0X2NoZWNrX3VuaXF1ZQpmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1 bmRlciBTbmFwc2hvdERpcnR5IGFuZCwgb24gYSBjcm9zc2VkLWhvcAphcnJpdmFsLCBjb21w YXJlcyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5n IGxlYWYgd2l0aAp0aGUgaW5kZXgncyBvd24gb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVh cF9rZXlzX2VxdWFsX2xlYWYsIEJUT1JERVJfUFJPQwp1bmRlciBlYWNoIGNvbHVtbidzIGNv bGxhdGlvbikuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhIGJpdHdp c2UKaW1hZ2UgY29tcGFyaXNvbiAtLSBkaXN0aW5ndWlzaGVzIGEgc3RhbGUgYW5jZXN0b3Ig bGVhZiBmcm9tIGEgZ2VudWluZWx5IGxpdmUKZHVwbGljYXRlIChlcXVhbCB1bmRlciB0aGUg b3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCkgYW5kLCBpbiB0aGUKaW4t ZmxpZ2h0IHdpbmRvdyBvZiBhIHJlc3RvcmluZyB1cGRhdGUsIHJvdXRlcyB0aGUgc3RhbGUt YW5jZXN0b3IgaGl0IGludG8KX2J0X2RvaW5zZXJ0J3MgeHdhaXQgc28gdGhlIGR1cGxpY2F0 ZSBpcyBzdGlsbCBjYXVnaHQuICBUaGUgY29tcGFyaXNvbiByZWFkcwpwbGFpbiBrZXkgY29s dW1ucyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Q7IGl0IG5ldmVyIGV2YWx1YXRlcyBh biBpbmRleGVkCmV4cHJlc3Npb24sIGJlY2F1c2UgYW4gVVBEQVRFIHRvdWNoaW5nIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlIGlzCmluZWxpZ2libGUgZm9yIEhPVC1pbmRleGVk LCBzbyBhbiBleHByZXNzaW9uIGluZGV4IGlzIG5ldmVyIHRoZSBvbmUgcmVjZWl2aW5nCnRo ZSBmcmVzaCBlbnRyeSB3aG9zZSBpbnNlcnQgcnVucyB0aGlzIGNoZWNrLgoKQ28tYXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3JlZC1ieTogTmF0aGFu IEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICB8ICAzNCArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICB8IDMwNiArKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgfCA0NzEgKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgIHwgMTg3 ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMgICB8 IDE5MiArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAg ICAgfCAgOTQgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAg ICAgICB8IDE3MSArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAg ICAgICAgICAgIHwgIDY2ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAg ICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgfCAzMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICB8ICAzMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyAgICAgICB8ICA3MyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgICAgICAgICAgIHwgMjQxICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmggICAgICAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oICAgICAgICAgICAgICAgICAgfCAgNTAgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmggICAgICAgICAgICAgICAgIHwgIDYwICsrCiBzcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICB8ICA3MSArLQogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvaW5jbHVkZS9w Z3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogc3JjL2luY2x1ZGUv dXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgICAgfCA3NzEgKysrKysrKy0tLS0tLS0t LS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgICAgfCA2 MDMgKysrKystLS0tLS0tLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICB8ICAgMiArLQogMzMgZmlsZXMgY2hhbmdlZCwgMjU5NCBpbnNlcnRpb25z KCspLCAxMzgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDc0ZTQwN2YzNzVhLi43MTIzNjU2MTczYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCkBAIC0xNTYsNiArMTU2LDQwIEBAIGFsbCBzdW1tYXJpemluZyBpbmRl eGVzLiAgKFJlYWxpc3RpY2FsbHksIHdlIG9ubHkgbmVlZCB0byBwcm9wYWdhdGUgdGhlCiB1 cGRhdGUgdG8gdGhlIGluZGV4ZXMgdGhhdCBjb250YWluIHRoZSB1cGRhdGVkIHZhbHVlcywg YnV0IHRoYXQgaXMgeWV0IHRvCiBiZSBpbXBsZW1lbnRlZC4pCiAKKworUGVyLUluZGV4IFVw ZGF0ZSBUcmFja2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZnRlciB0aGUg dGFibGUgQU0gcGVyZm9ybXMgdGhlIHVwZGF0ZSwgdGhlIGV4ZWN1dG9yIGRldGVybWluZXMg d2hpY2gKK2luZGV4ZXMgbmVlZCBuZXcgZW50cmllcyB1c2luZyBwZXItaW5kZXggdHJhY2tp bmcuCisKK1RoZSB0YWJsZSBBTSBjb21tdW5pY2F0ZXMgd2hldGhlciBhIEhPVCB1cGRhdGUg b2NjdXJyZWQgdmlhIHRoZQordXBkYXRlX2FsbF9pbmRleGVzIGJvb2xlYW4gb3V0cHV0IG9m IHRhYmxlX3R1cGxlX3VwZGF0ZSgpLCB0b2dldGhlciB3aXRoIHRoZQorbW9kaWZpZWQtYXR0 cnMgQml0bWFwc2V0IHRoZSBjYWxsZXIgcGFzc2VkIGluIChhdHRyaWJ1dGUgbnVtYmVycyBl bmNvZGVkIHdpdGgKK0ZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpLiAgV2hl biB1cGRhdGVfYWxsX2luZGV4ZXMgaXMgdHJ1ZSB0aGUKK3VwZGF0ZSB3YXMgbm9uLUhPVCBh bmQgZXZlcnkgaW5kZXggcmVxdWlyZXMgYSBuZXcgZW50cnkgKHRoZSB0dXBsZSBoYXMgYSBu ZXcKK1RJRCkuICBXaGVuIGZhbHNlIHRoZSB1cGRhdGUgd2FzIEhPVDogdGhlIGNhbGxlciBj b25zdWx0cyBtb2RpZmllZF9hdHRycyB3aXRoCitlYWNoIGluZGV4J3Mgb3duIGF0dHJpYnV0 ZXMgdG8gaW5zZXJ0IGVudHJpZXMgb25seSBpbnRvIHRoZSBpbmRleGVzIHdob3NlIGtleQor YXR0cmlidXRlcyBjaGFuZ2VkIChhIEhPVC1pbmRleGVkIHVwZGF0ZSkgb3Igb25seSB0aGUg c3VtbWFyaXppbmcgaW5kZXhlcyAoYQorY2xhc3NpYyBIT1QgdXBkYXRlIHRoYXQgY2hhbmdl ZCBhIHN1bW1hcml6ZWQgY29sdW1uKSwgYW5kIHNraXBzIHRoZSByZXN0LgorCitUaGUgZXhl Y3V0b3IgdGhlbiBjYWxscyBFeGVjU2V0SW5kZXhVbmNoYW5nZWQoKSB0byBwb3B1bGF0ZSB0 aGUgcGVyLWluZGV4CitpaV9JbmRleFVuY2hhbmdlZCBmbGFnIG9uIGVhY2ggSW5kZXhJbmZv LiAgVGhpcyBmbGFnIGluZGljYXRlcyB3aGV0aGVyIGVhY2gKK2luZGV4J3Mga2V5IHZhbHVl cyBhcmUgdW5jaGFuZ2VkIGJ5IHRoZSB1cGRhdGUuICBGb3Igbm9uLUhPVCB1cGRhdGVzCit0 aGUgZmxhZyBpcyBjbGVhcmVkIG9uIGV2ZXJ5IGluZGV4LCBzbyBlYWNoIGdldHMgYSBmcmVz aCBlbnRyeSBhdCB0aGUKK25ldyBUSUQ7IHRoZSBmbGFnIGlzIG5ldmVyIGEgc2tpcCBvbiBp dHMgb3duLCBqdXN0IGEgaGludCB0byB0aGUKK2luZGV4IEFNJ3MgYW1pbnNlcnQgZm9yIG9w dGltaXphdGlvbnMgc3VjaCBhcyBib3R0b20tdXAgZGVsZXRpb24gb2YKK2xvZ2ljYWxseSBl cXVpdmFsZW50IGR1cGxpY2F0ZSBlbnRyaWVzLgorCitFeGVjSW5zZXJ0SW5kZXhUdXBsZXMg Y29uc3VsdHMgaWlfSW5kZXhVbmNoYW5nZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8KK3NraXAg YSBub24tc3VtbWFyaXppbmcgaW5kZXggZHVyaW5nIGFuIFVQREFURTogaWYgdGhlIGluZGV4 IGlzIG1hcmtlZAordW5jaGFuZ2VkLCB0aGUgSE9UIGNoYWluIHJvb3QncyBleGlzdGluZyBl bnRyeSBzdGlsbCBwb2ludHMgYXQgdGhlCit0dXBsZSwgc28gbm8gbmV3IGVudHJ5IGlzIG5l ZWRlZC4gIEZvciBub24tSE9UIHVwZGF0ZXMgdGhlIFRJRAorY2hhbmdlZCBhbmQgRXhlY1Nl dEluZGV4VW5jaGFuZ2VkIG1hcmtzIGV2ZXJ5IGluZGV4IGFzIGNoYW5nZWQsCitmb3JjaW5n IGVhY2ggdG8gcmVjZWl2ZSBhIG5ldyBlbnRyeS4gIFN1bW1hcml6aW5nIGluZGV4ZXMgYWx3 YXlzIGdldAordGhlIG9wcG9ydHVuaXR5IHRvIHVwZGF0ZSB0aGVpciBibG9jay1sZXZlbCBz dW1tYXJpZXMuCisKKwogQWJvcnQgQ2FzZXMKIC0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCA0YjcwMWU0MjU4Ni4u NWQ0YTJjN2Q2NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQKQEAgLTU0LDMgKzU0LDMwOSBAQCBUaGUgSE9ULWluZGV4ZWQgaW52YXJpYW50 ICh0aGUgbmV3IGNvbnRyYWN0KQogCiBUaGlzIGlzIHdoYXQgbWFrZXMgZHJvcHBpbmcgYSBz dGFsZSBlbnRyeSBzYWZlOiB0aGUgbGl2ZSByb3cgaXMgYWx3YXlzCiByZWFjaGFibGUgdGhy b3VnaCBleGFjdGx5IG9uZSBub24tc3RhbGUgZW50cnkgcGVyIGluZGV4LgorCisKK0VsaWdp YmlsaXR5OiBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitUaGUgZXhlY3V0b3IgY29tcHV0ZXMgbW9kaWZpZWRfaWR4X2F0 dHJzICh0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoaXMgVVBEQVRFCitjaGFuZ2VkLCBhdHRy aWJ1dGUgbnVtYmVycyBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlcikgYW5kCitwYXNzZXMgaXQgdG8gaGVhcF91cGRhdGUgdmlhIHRhYmxlX3R1cGxlX3Vw ZGF0ZS4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUKK2NsYXNzaWZpZXMgdGhlIHVwZGF0ZToK KworICBIRUFQX1VQREFURV9BTExfSU5ERVhFUworICAgICAgICBIT1QgaXMgbm90IHBlcm1p dHRlZDsgdGhlIG5ldyB0dXBsZSBnb2VzIG9uIGEgZnJlc2ggVElEIGFuZCBldmVyeQorICAg ICAgICBpbmRleCBnZXRzIGEgbmV3IGVudHJ5LgorICBIRUFQX0hFQVBfT05MWV9VUERBVEUK KyAgICAgICAgbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQs IHNvIG5vIGluZGV4IG5lZWRzIGEKKyAgICAgICAgbmV3IGVudHJ5IChjbGFzc2ljIEhPVCku CisgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURQorICAgICAgICBhdCBsZWFzdCBvbmUg bm9uLXN1bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0aGUKKyAg ICAgICAgdXBkYXRlIG1heSBzdGF5IG9uIHRoZSBIT1QgY2hhaW4gYW5kIG1haW50YWluIG9u bHkgdGhlIGNoYW5nZWQKKyAgICAgICAgaW5kZXhlcyBzZWxlY3RpdmVseS4KKworQSBub24t c3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdpbmcgeWllbGRzIEhFQVBfU0VM RUNUSVZFX0lOREVYX1VQREFURQordW5sZXNzIG9uZSBvZiB0aGVzZSBmb3JjZXMgSEVBUF9V UERBVEVfQUxMX0lOREVYRVM6CisKKyAgMS4gVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBw bHkgcGF0aCwgZ2F0ZWQgcGVyIHN1YnNjcmlwdGlvbiAoc2VlICJMb2dpY2FsCisgICAgIHJl cGxpY2F0aW9uIiBiZWxvdykuCisgIDIuIEFuIFVQREFURSB0b3VjaGluZyBhbiBhdHRyaWJ1 dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uIGluZGV4CisgICAgIChzZWxlY3RpdmUg bWFpbnRlbmFuY2Ugb2YgZXhwcmVzc2lvbiBpbmRleGVzIGlzIG5vdCBpbXBsZW1lbnRlZCB5 ZXQpLgorICAzLiBBbiBVUERBVEUgdGhhdCBjaGFuZ2VzICpldmVyeSogaW5kZXhlZCBhdHRy aWJ1dGU6IHRoZXJlIGlzIG5vIGluZGV4IHRvCisgICAgIHNraXAsIHNvIGEgcGxhaW4gbm9u LUhPVCB1cGRhdGUgaXMgY2hlYXBlci4KKworU3lzdGVtIGNhdGFsb2dzIHN0YXkgY2xhc3Np Yy1IT1Qgb25seTogYSBjYXRhbG9nIFVQREFURSB0aGF0IGNoYW5nZXMgYQorbm9uLXN1bW1h cml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGZhbGxzIGJhY2sgdG8gSEVBUF9VUERBVEVfQUxM X0lOREVYRVMsIGJlY2F1c2UKK2NhdGFsb2cgcmVhZHMgZ28gdGhyb3VnaCBtYW55IHBhdGhz IG5vdCBhbGwgcHJvdmVuIHNhZmUgYWdhaW5zdCBzdGFsZSBjaGFpbgorZW50cmllcy4gIFRo aXMgaXMgdGhlIHByZS1IT1QtaW5kZXhlZCBiZWhhdmlvdXIgZm9yIHN1Y2ggdXBkYXRlcy4K KworSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCAoY2FjaGVkIGluIHJkX2luZGV4ZWRhdHRy KSBpcyB0aGUgc2V0IG9mIGNvbHVtbnMKK3JlZmVyZW5jZWQgYnkgbm9uLXN1bW1hcml6aW5n IGluZGV4ZXMgcGx1cywgZm9sZGVkIGluLCB0aGUgY29sdW1ucyByZWZlcmVuY2VkCitvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHNvIHRoYXQgYSBjaGFuZ2UgdG8gYSBzdW1tYXJp emluZy1vbmx5IGNvbHVtbiBpcworc2VlbiBieSB0aGUgbW9kaWZpZWQtYXR0cmlidXRlIGNv bXBhcmlzb24gKGl0cyBpbmRleCBpcyBtYWludGFpbmVkIHZpYSB0aGUKK2NsYXNzaWMtSE9U IHN1bW1hcml6aW5nIHBhdGgpLiAgUmVhZC1zaWRlIHN0YWxlbmVzcyBpcyBmaWx0ZXJlZCBi eSB0aGUKK2Nyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggaXMgYWNjZXNzLW1ldGhv ZCBhZ25vc3RpYywgc28gYSBjaGFuZ2UgdG8gYQorY29sdW1uIGNvdmVyZWQgYnkgYW55IGlu ZGV4IGlzIEhPVC1pbmRleGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGluZGV4J3MgYWNjZXNzCitt ZXRob2QuICBTdW1tYXJpemluZyBpbmRleGVzIChlLmcuIEJSSU4pIGtlZXAgbm8gcGVyLXJv dyBsZWFmIHRoYXQgY2FuIGdvCitzdGFsZSBhbmQgYXJlIG1haW50YWluZWQgdmlhIHRoZSBz dW1tYXJpemluZyBwYXRoLgorCisKK1RoZSB3cml0ZSBwYXRoCistLS0tLS0tLS0tLS0tLQor CitGb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFLCBoZWFwX3VwZGF0ZToKKworICAt IHN0b3JlcyB0aGUgbmV3IHR1cGxlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIG9uIHRoZSBzYW1l IHBhZ2UsIGxpbmtlZCBpbnRvCisgICAgdGhlIGNoYWluIHZpYSB0X2N0aWQsIGV4YWN0bHkg bGlrZSBjbGFzc2ljIEhPVDsgYW5kCisgIC0gc2V0cyBIRUFQX0lOREVYRURfVVBEQVRFRCAo dF9pbmZvbWFzazIgYml0IDB4MDgwMCkgb24gdGhlIG5ldyB0dXBsZSB0bworICAgIG1hcmsg dGhhdCB0aGUgY2hhaW4gbm93IGNhcnJpZXMgZGlmZmVyaW5nIGtleXMuCisKK1RoZXJlIGlz IG5vIHNlcGFyYXRlIG9uLXBhZ2UgbWV0YS1pdGVtOiB0aGUgYml0IG9uIHRoZSBoZWFwLW9u bHkgdHVwbGUgaXMgdGhlCitlbnRpcmUgb24tZGlzayBmb290cHJpbnQuICBBcyBmb3IgY2xh c3NpYyBIT1QsIGlmIHRoZSBuZXcgdHVwbGUgZG9lcyBub3QgZml0CitvbiB0aGUgcGFnZSB0 aGUgdXBkYXRlIGZhbGxzIGJhY2sgdG8gYSBub24tSE9UIChuZXctcGFnZSkgdXBkYXRlLgor CitUaGUgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpcyBjZWlsKG5hdHRzLzgpIGJ5 dGVzLCBzaXplZCBieSB0aGUgdHVwbGUncworT1dOIGF0dHJpYnV0ZSBjb3VudCBhdCB3cml0 ZSB0aW1lIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyksIG5vdCB0aGUgcmVsYXRpb24ncwor Y3VycmVudCBuYXR0cy4gIEFERCBDT0xVTU4gcmFpc2VzIHRoZSByZWxhdGlvbidzIG5hdHRz IHdpdGhvdXQgcmV3cml0aW5nCitleGlzdGluZyB0dXBsZXMsIHNvIG9uZSBjaGFpbiBjYW4g aG9sZCBob3BzIHdob3NlIGJpdG1hcHMgd2VyZSBzaXplZCBmb3IKK2RpZmZlcmVudCAoc21h bGxlcikgbmF0dHM7IGV2ZXJ5IGNvbnN1bWVyIGxvY2F0ZXMgYW5kIHNpemVzIGEgaG9wJ3Mg Yml0bWFwCitmcm9tIHRoYXQgaG9wJ3Mgb3duIHdyaXRlLXRpbWUgbmF0dHMgKEhvdEluZGV4 ZWRUdXBsZUJpdG1hcE5hdHRzIGluCithY2Nlc3MvaG90X2luZGV4ZWQuaCkuICBBIGNvbGxh cHNlLXN1cnZpdm9yIHN0dWIgb3ZlcndyaXRlcyBuYXR0cyB3aXRoIGl0cyAwCitzZW50aW5l bCwgc28gaXQgcHJlc2VydmVzIGl0cyB3cml0ZS10aW1lIG5hdHRzIGluIHRoZSB1bnVzZWQg YmxvY2stbnVtYmVyIGhhbGYKK29mIHRfY3RpZCAodGhlIG9mZnNldCBoYWxmIGlzIHRoZSBm b3J3YXJkIGxpbmspLiAgQml0IHBvc2l0aW9ucyBhcmUgYXR0cmlidXRlCitiYXNlZCBhbmQg aWRlbnRpY2FsIGFjcm9zcyBzaXplcywgc28gYSBzbWFsbGVyIGJpdG1hcCBzaW1wbHkgT1Jz IGludG8gdGhlIGxvdworYnl0ZXMgb2YgYSBsYXJnZXIgY3Jvc3NlZC1hdHRyaWJ1dGUgYWNj dW11bGF0b3IuICBEUk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0bnVtCitzbG90IChpdCBuZXZl ciByZW51bWJlcnMpLCBzbyBleGlzdGluZyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KKworQWZ0 ZXIgdGhlIHVwZGF0ZSwgdGFibGVfdHVwbGVfdXBkYXRlIHJlcG9ydHMgdXBkYXRlX2FsbF9p bmRleGVzID0gZmFsc2UgKHRoZQordHVwbGUgaXMgaGVhcC1vbmx5KS4gIFRoZSBleGVjdXRv ciB0aGVuIG1haW50YWlucyBpbmRleGVzIHNlbGVjdGl2ZWx5OgorRXhlY1NldEluZGV4VW5j aGFuZ2VkIG1hcmtzIGVhY2ggaW5kZXggd2hvc2Uga2V5IGF0dHJpYnV0ZXMgZGlkIG5vdCBj aGFuZ2UgYXMKK3VuY2hhbmdlZCwgYW5kIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyBpbnNlcnRz IGEgZnJlc2ggZW50cnkgb25seSBpbnRvIHRoZQoraW5kZXhlcyB0aGF0IGRpZCBjaGFuZ2Uu ICBFYWNoIHN1Y2ggZW50cnkgcG9pbnRzIGF0IHRoZSBuZXcgdHVwbGUncyBvd24gVElELgor CisKK1RoZSBjaGFpbiBhbmQgdGhlIHR3byBraW5kcyBvZiBsZWFmIGVudHJ5CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgYSBIT1QtaW5k ZXhlZCB1cGRhdGUgdGhlcmUgYXJlLCBmb3IgYSBjaGFuZ2VkIGluZGV4LCB0d28ga2luZHMg b2YgbGVhZgorZW50cnkgcmVhY2hpbmcgdGhlIGNoYWluOgorCisgIC0gdGhlIHByZS11cGRh dGUgZW50cnkgZm9yIHRoZSBPTEQga2V5LCBzdGlsbCBwb2ludGluZyBhdCBhbiBvbGRlciBj aGFpbgorICAgIG1lbWJlciAobm93IHN0YWxlIG9uY2UgdGhlIHdhbGsgY3Jvc3NlcyB0aGUg SE9ULWluZGV4ZWQgaG9wKTsgYW5kCisgIC0gdGhlIGZyZXNoIGVudHJ5IGZvciB0aGUgTkVX IGtleSwgcG9pbnRpbmcgYXQgdGhlIG5ldyBoZWFwLW9ubHkgdHVwbGUuCisKK0luZGV4IGJ1 aWxkIGFuZCBSRUlOREVYIGluZGV4IGEgbGl2ZSBIT1QtaW5kZXhlZCB0dXBsZSB1bmRlciBp dHMgT1dOIFRJRCAobm90Cit0aGUgY2hhaW4gcm9vdCksIHNvIHRoZSBmcmVzaGx5IGJ1aWx0 IGVudHJ5IGhhcyBubyBob3AgYWZ0ZXIgaXQgYW5kIGlzIG5ldmVyCit0cmVhdGVkIGFzIHN0 YWxlLgorCisKK1JlYWQtc2lkZSBjb3JyZWN0bmVzczogdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK2hlYXBfaG90X3NlYXJjaF9idWZmZXIgd2Fsa3MgdGhlIGNoYWluIGZyb20g dGhlIGVudHJ5J3MgdGFyZ2V0IHRvIHRoZSBsaXZlCit2aXNpYmxlIHR1cGxlLiAgRWFjaCBo b3AgaXQgY3Jvc3NlcyBhZnRlciB0aGUgZW50cnkncyBvd24gdGFyZ2V0IC0tIGEgbGl2ZQor SE9ULWluZGV4ZWQgbWVtYmVyLCBhIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsIG9yIGEgY29s bGFwc2VkIChyZWRpcmVjdGVkKQorcHJlZml4IC0tIGNvbnRyaWJ1dGVzIHRoYXQgaG9wJ3Mg aW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0byBhIHJ1bm5pbmcKK3VuaW9uLCBJbmRl eEZldGNoVGFibGVEYXRhLnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQsIGFuZCBzZXRzCisqaG90 X2luZGV4ZWRfcmVjaGVjayB0byBmbGFnIHRoYXQgdGhlIHdhbGsgY3Jvc3NlZCBhdCBsZWFz dCBvbmUgc3VjaCBob3AuCisKK1RoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgKGluZGV4X2ZldGNo X2hlYXApIHRlc3RzIHRoYXQgdW5pb24gYWdhaW5zdCB0aGUKK2Fycml2aW5nIGluZGV4J3Mg a2V5IGNvbHVtbnMuICBBbnkgb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNoYW5nZWQg b25lIG9mCit0aGlzIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUgZW50cnkncyBzdG9yZWQga2V5 IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBsaXZlCit0dXBsZTogSW5kZXhTY2FuRGVzYy54c19o b3RfaW5kZXhlZF9zdGFsZSBpcyBzZXQsIGFuZCBJbmRleFNjYW4sCitJbmRleE9ubHlTY2Fu LCBDTFVTVEVSLCBhbmQgdGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gcmVwbGljYS1pZGVudGl0 eSBsb29rdXBzCitkcm9wIHRoZSB0dXBsZS4gIElmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBm cm9tIHRoZSBpbmRleCdzIGtleSBjb2x1bW5zLCBub25lCitvZiB0aGUgaW5kZXgncyBpbnB1 dHMgY2hhbmdlZCBhY3Jvc3MgdGhlIGNoYWluLCBzbyB0aGUgZW50cnkgaXMgY3VycmVudCBh bmQKK3RoZSByb3cgaXMgcmV0dXJuZWQuCisKK1RoZSB1bmlvbiBpcyBjb21wbGV0ZTogZXZl cnkgY3Jvc3NlZCBsaXZlIGhvcCBhbmQgc3R1YiBjb250cmlidXRlcyBpdHMKK2JpdG1hcCwg YW5kIGNoYWluIGNvbGxhcHNlIG9ubHkgZXZlciByZWNsYWltcyBhIG1lbWJlciB3aG9zZSBh dHRyaWJ1dGVzIGFyZSBhCitzdWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRlciBob3BzIChz ZWUgIlBydW5lIGFuZCBjaGFpbiBjb2xsYXBzZSIpLCBzbyBhCityZWFkZXIgY3Jvc3Npbmcg dGhlIHN1cnZpdm9ycyBzdGlsbCBzZWVzIGV2ZXJ5IGNvbGxhcHNlZCBob3AncyBhdHRyaWJ1 dGVzLgorRGlzam9pbnRuZXNzIHRoZXJlZm9yZSByZWxpYWJseSBtZWFucyB0aGUgZW50cnkg aXMgY3VycmVudC4KKworVGhpcyBuZWVkcyBubyB2YWx1ZSBjb21wYXJpc29uIGFuZCBubyBs ZWFmIGtleSwgc28gaXQgc2VydmVzIGVxdWFsaXR5LCByYW5nZSwKK2FuZCBpbmVxdWFsaXR5 IHNjYW5zIHVuaWZvcm1seSwgd29ya3MgZm9yIGFueSBhY2Nlc3MgbWV0aG9kIHdob3NlIGNv bHVtbnMgYXJlCitlbGlnaWJsZSBmb3IgSE9ULWluZGV4ZWQgdXBkYXRlcywgYW5kIGlzIGNv cnJlY3QgZXZlbiB3aGVuIGEga2V5IGlzIGN5Y2xlZAorYXdheSBhbmQgYmFjayAoWCAtPiBZ IC0+IFgpOiB0aGUgdXBkYXRlIHRoYXQgcmVzdG9yZWQgdGhlIHZhbHVlIHBsYW50ZWQgYQor ZnJlc2ggZW50cnkgcG9pbnRpbmcgYXQgaXRzIG93biBsaXZlIHR1cGxlLCB3aG9zZSB3YWxr IGNyb3NzZXMgbm8gbGF0ZXIKK2tleS1jaGFuZ2luZyBob3AsIHNvIHRoYXQgZW50cnkgdW5p cXVlbHkgcmV0dXJucyB0aGUgcm93IHdoaWxlIHRoZSBzdGFsZQorYW5jZXN0b3IgZW50cnkg LS0gd2hvc2Ugd2FsayBkb2VzIGNyb3NzIHRoZSBjaGFuZ2luZyBob3BzIC0tIGlzIGRyb3Bw ZWQuCisKK1RoZSByZWFkIG1lY2hhbmlzbSBuZXZlciByZWNvbnN0cnVjdHMgb3IgY29tcGFy ZXMgYW4gaW5kZXgga2V5LCBzbyBpdCBuZWVkcyBubworcGVyLWFjY2Vzcy1tZXRob2Qgc3Vw cG9ydC4gIChuYnRyZWUga2VlcHMgYW4gaW50ZXJuYWwgbGVhZi1rZXkgY29tcGFyaXNvbiwK K19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiwgdXNlZCBvbmx5IGJ5IF9idF9jaGVja191bmlx dWUgdG8gdGVsbCBhIHN0YWxlIGNoYWluCitlbnRyeSBmcm9tIGEgbGl2ZSBkdXBsaWNhdGUg ZHVyaW5nIGEgdW5pcXVlIGluc2VydDsgaXQgaXMgbm90IHBhcnQgb2YgdGhlIHJlYWQKK3Bh dGguKQorCitVbmlxdWUgY2hlY2tzLiAgX2J0X2NoZWNrX3VuaXF1ZSBmZXRjaGVzIHRoZSBj b25mbGljdGluZyB0dXBsZSB1bmRlcgorU25hcHNob3REaXJ0eSBhbmQsIHdoZW4gdGhlIGNo YWluIHdhbGsgY3Jvc3NlZCBhIEhPVC1pbmRleGVkIGhvcCwgY29tcGFyZXMgdGhlCitsaXZl IHR1cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUgYXJyaXZpbmcgbGVhZiB3aXRoIHRo ZSBpbmRleCdzIG93bgorb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVhcF9rZXlzX2VxdWFs X2xlYWYsIHVzaW5nIEJUT1JERVJfUFJPQyB1bmRlciBlYWNoCitjb2x1bW4ncyBjb2xsYXRp b24pLiAgVGhpcyByZWNoZWNrIGlzIHJlYWNoZWQgb25seSBmb3IgYW4gaW5kZXggcmVjZWl2 aW5nIGEKK2ZyZXNoIGVudHJ5IGR1cmluZyBhIEhPVC1pbmRleGVkIHVwZGF0ZTsgSGVhcFVw ZGF0ZUhvdEFsbG93YWJsZSBkaXNxdWFsaWZpZXMKK2FueSBVUERBVEUgdGhhdCB0b3VjaGVz IGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRlLCBzbyB0aGUgaW5kZXggaGVyZSBuZXZl cgoraGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkga2V5IGNvbHVtbiBpcyBh IHBsYWluIGF0dHJpYnV0ZSksIGFuZCB0aGUKK2NvbXBhcmlzb24gcmVhZHMgYXR0cmlidXRl IHZhbHVlcyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3QgLS0gbm8gZXhwcmVzc2lvbgor ZXZhbHVhdGlvbiBvciBleGVjdXRvciBzdGF0ZSBpcyBuZWVkZWQuICBVc2luZyB0aGUgb3Bj bGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhCitiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24gLS0g bWVhbnMgYSBrZXkKK3RoYXQgd2FzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChYIC0+IFkgLT4g WCkgZG9lcyBub3QgcmFpc2UgYSBzcHVyaW91cworZHVwbGljYXRlIGFnYWluc3QgaXRzIG93 biBzdGFsZSBsZWFmLCB3aGlsZSBhIGdlbnVpbmVseSBsaXZlIGR1cGxpY2F0ZSAoZXF1YWwK K3VuZGVyIHRoZSBvcGNsYXNzIGV2ZW4gaWYgbm90IGJpdHdpc2UtaWRlbnRpY2FsLCBlLmcu IG51bWVyaWMgMS4wIHZzIDEuMDApIGlzCitzdGlsbCBkZXRlY3RlZC4gIChBcHBlbmRpeCBB IG1vdGl2YXRlcyB0aGlzIHJlY2hlY2sgaW4gZGV0YWlsLikKKworCitBcHBlbmRpY2VzCist LS0tLS0tLS0tCisKK0FwcGVuZGl4IEE6IFdoeSB0aGUgdW5pcXVlLWNoZWNrIHBhdGggbmVl ZHMgYSB2YWx1ZSBjb21wYXJpc29uIGF0IGFsbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMg aXMgdGhlIG9uZSBwbGFjZSBIT1QtaW5kZXhlZCBkb2VzIGNvbXBhcmUgYSBrZXkgdmFsdWUs IGV2ZW4gdGhvdWdoIHRoZQorcmVhZCBwYXRoIGRlbGliZXJhdGVseSBhdm9pZHMgb25lLiAg VGhlIHJlc3Qgb2YgdGhpcyBhcHBlbmRpeCBleHBsYWlucyB3aHkgdGhlCitjb21wYXJpc29u IGlzIG5lZWRlZCwgd2h5IGl0IG11c3QgdXNlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IgcmF0 aGVyIHRoYW4gYQorYml0d2lzZSBvbmUsIGFuZCB3aHkgdGhlIEFCQSBjYXNlIGlzIHdoYXQg Zm9yY2VzIHRoZSBpc3N1ZS4KKworMS4gVGhlIHNldHVwOiB3aHkgYSB1bmlxdWUgaW5zZXJ0 IGNhbiBldmVuIHJlYWNoIGEgc3RhbGUgbGVhZgorCitVbmRlciBjbGFzc2ljIEhPVCwgYW4g aW5kZXggaGFzIGV4YWN0bHkgb25lIGxlYWYgZW50cnkgcGVyIGxvZ2ljYWwgcm93LCBhbmQK K2V2ZXJ5IGxlYWYgZW50cnkncyBrZXkgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZSBpdCBjaGFp bi1yZXNvbHZlcyB0by4gIFNvCitfYnRfY2hlY2tfdW5pcXVlIGNhbiB0cnVzdDogImlmIEkg ZmluZCBhIGxlYWYgd2hvc2Uga2V5IGVxdWFscyBteSBuZXcga2V5LCBhbmQKK2l0IHJlc29s dmVzIHRvIGEgbGl2ZSB0dXBsZSwgdGhhdCdzIGEgZ2VudWluZSBkdXBsaWNhdGUuIgorCitI T1QvU0lVIGJyZWFrcyB0aGF0IG9uZS10by1vbmUgY29ycmVzcG9uZGVuY2UuICBBIEhPVC1p bmRleGVkIFVQREFURSB0aGF0CitjaGFuZ2VzIGNvbHVtbiBhIGZyb20gWCB0byBZOgorIC0g aW5zZXJ0cyBhIGZyZXNoIGxlYWYgZW50cnkgKFkgLT4gbmV3IHR1cGxlKSBpbnRvIGlkeF9h LCBhbmQKKyAtIGxlYXZlcyB0aGUgb2xkIGxlYWYgZW50cnkgKFggLT4gb2xkIGNoYWluIHJv b3QpIGluIHBsYWNlLgorCitUaGF0IG9sZCAoWCAtPiByb290KSBlbnRyeSBpcyBub3cgc3Rh bGU6IGl0IHN0aWxsIGNoYWluLXJlc29sdmVzIHRvIGEgbGl2ZQordHVwbGUsIGJ1dCB0aGF0 IGxpdmUgdHVwbGUncyBjdXJyZW50IGEgaXMgWSwgbm90IFguICBUaGUgcmVhZCBwYXRoIGhh bmRsZXMgdGhpcword2l0aCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIChubyB2YWx1 ZSBjb21wYXJpc29uIG5lZWRlZCk6IGlmIHRoZSB3YWxrCitmcm9tIHRoZSBlbnRyeSdzIHRh cmdldCB0byB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VzIGEgaG9wIHRoYXQgY2hhbmdlZCBhLCB0 aGUKK2VudHJ5IGlzIHN0YWxlIGFuZCBkcm9wcGVkLgorCitXaGVuIHlvdSBub3cgSU5TRVJU IGEgcm93IHdpdGggYSA9IFgsIF9idF9jaGVja191bmlxdWUgc2NhbnMgaWR4X2EgZm9yIGtl eSBYCithbmQgZmluZHMgdGhhdCBzdGFsZSAoWCAtPiByb290KSBsZWFmLiAgSXQgbXVzdCBk ZWNpZGU6IGlzIHRoaXMgYSByZWFsCitjb25mbGljdD8KKworMi4gV2h5IHRoZSByZWFkLXBh dGggYml0bWFwIGlzIG5vdCBzdWZmaWNpZW50IGhlcmUKKworVGhlIHJlYWQgcGF0aCdzIGxv Z2ljIGlzOiAidGhpcyBlbnRyeSBjcm9zc2VkIGEgaG9wIHRoYXQgY2hhbmdlZCBhID0+IHN0 YWxlID0+Citkcm9wIGl0LCB0aGUgZnJlc2ggZW50cnkgd2lsbCBzdXBwbHkgdGhlIHJvdy4i ICBGb3Igc2NhbnMgdGhhdCdzIGNvcnJlY3QgYW5kCitjb21wbGV0ZSwgYmVjYXVzZSBldmVy eSBsaXZlIHJvdyBoYXMgZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHRoYXQKK3JlLXN1 cHBsaWVzIGl0LgorCitCdXQgYSB1bmlxdWUgY2hlY2sgaXMgYXNraW5nIGEgZGlmZmVyZW50 IHF1ZXN0aW9uLiAgSXQgaXMgbm90ICJzaG91bGQgSSByZXR1cm4KK3RoaXMgcm93PyIgLS0g aXQgaXMgImRvZXMgdGhlIGxpdmUgdHVwbGUgdGhpcyBlbnRyeSByZXNvbHZlcyB0byBjb25m bGljdCB3aXRoCit0aGUga2V5IEknbSBpbnNlcnRpbmc/IiAgVGhlIGJpdG1hcCBjYW4gb25s eSB0ZWxsIHlvdSAiYW4gaW5kZXhlZCBhdHRyaWJ1dGUKK2NoYW5nZWQgc29tZXdoZXJlIG9u IHRoZSBjaGFpbi4iICBJdCBjYW5ub3QgdGVsbCB5b3Ugd2hhdCB0aGUgbGl2ZSB2YWx1ZSBp cworbm93LCBhbmQgdGhhdCBpcyBleGFjdGx5IHdoYXQgeW91IG5lZWQgdG8ga25vdyB0byBk ZXRlY3QgYSBkdXBsaWNhdGUuCisKK1RoaXMgaXMgdGhlIGNydXggb2YgdGhlIEFCQSBwcm9i bGVtLiAgQ29uc2lkZXI6CisKKyAgSU5TRVJUIChhPTEwKSAgICAgICAgICAgICAgICAgIExQ WzFdIGE9MTAgICAocm9vdCkKKyAgVVBEQVRFIGE9MTEgICAoSE9ULWluZGV4ZWQpICAgIExQ WzJdIGE9MTEgICBiaXRtYXAge2F9LCBsZWFmICgxMSktPkxQWzJdCisgIFVQREFURSBhPTEw ICAgKEhPVC1pbmRleGVkKSAgICBMUFszXSBhPTEwICAgYml0bWFwIHthfSwgbGVhZiAoMTAp LT5MUFszXSwgbGl2ZQorCitpZHhfYSBub3cgaGFzIGxlYXZlcyAoMTApLT5MUFsxXSBbc3Rh bGUgYW5jZXN0b3JdLCAoMTEpLT5MUFsyXSBbc3RhbGVdLCBhbmQKKygxMCktPkxQWzNdIFtm cmVzaCwgbGl2ZV0uCisKK05vdyBJTlNFUlQgKGE9MTApLCBhIGdlbnVpbmUgZHVwbGljYXRl IG9mIHRoZSBsaXZlIHJvdy4gIF9idF9jaGVja191bmlxdWUgc2NhbnMKK2ZvciBrZXkgMTAg YW5kIGZpbmRzIHRoZSAoMTApLT5MUFsxXSBzdGFsZSBhbmNlc3RvciBlbnRyeS4gIFRoZSBj aGFpbiB3YWxrIGZyb20KK0xQWzFdIHRvIHRoZSBsaXZlIHR1cGxlIExQWzNdIGNyb3NzZXMg aG9wcyB0aGF0IGNoYW5nZWQgYSAoMTAtPjExLCB0aGVuCisxMS0+MTApLCBzbyB0aGUgYml0 bWFwIHNheXMgInN0YWxlLiIgIElmIHRoZSB1bmlxdWUgY2hlY2sgdHJ1c3RlZCB0aGUgYml0 bWFwCithbG9uZSBpdCB3b3VsZCBza2lwICgxMCktPkxQWzFdIGFzIHN0YWxlIGFuZCBtaXNz IHRoZSByZWFsIGR1cGxpY2F0ZS4gIFRoZQorYml0bWFwIGlzIGZvb2xlZCBiZWNhdXNlIGEg Y2hhbmdlZCAoc28gdGhlIGJpdCBpcyBzZXQpIGV2ZW4gdGhvdWdoIGl0IGNoYW5nZWQKK2Jh Y2sgdG8gdGhlIHNhbWUgdmFsdWU6ICJhbiBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0aGUgY2hh aW4iIGlzIG5vdCAidGhlIGxpdmUKK3ZhbHVlIGRpZmZlcnMgZnJvbSB0aGlzIGxlYWYncyBr ZXkuIiAgVW5kZXIgQUJBIHRoZXkgZGl2ZXJnZS4KKworVGhlIHNoYXJwZXIgY2FzZSBpcyBj b25jdXJyZW5jeS4gIFdoaWxlIHRoZSByZXN0b3JpbmcgVVBEQVRFIChhOiAxMSAtPiAxMCkg aXMKK2luIGZsaWdodCwgaXQgaGFzIHdyaXR0ZW4gaXRzIG5ldyBoZWFwIHR1cGxlIGJ1dCBu b3QgeWV0IGluc2VydGVkIHRoZSBmcmVzaAorKDEwKS0+TFBbM10gbGVhZi4gIEEgY29uY3Vy cmVudCBJTlNFUlQgKGE9MTApIHJ1bm5pbmcgaXRzIF9idF9jaGVja191bmlxdWUgc2Nhbgor aW4gdGhhdCB3aW5kb3cgc2VlcyBvbmx5IHRoZSBzdGFsZSAoMTApLT5MUFsxXSBhbmNlc3Rv ci4gIFRoZSB2YWx1ZSByZWNoZWNrCitiZWxvdyBtYWtlcyB0aGF0IGhpdCByZXNvbHZlIHRv IHh3YWl0IG9uIHRoZSBpbi1mbGlnaHQgdXBkYXRlciAodmlhCitfYnRfZG9pbnNlcnQncyB3 YWl0LWFuZC1yZWNoZWNrKSwgc28gdGhlIGluc2VydGVyIHJlLWNoZWNrcyBhZnRlciB0aGUg dXBkYXRlcgorY29tbWl0cyBhbmQgZmluZHMgdGhlIGNvbmZsaWN0LiAgQSBiaXRtYXAtb25s eSB2ZXJkaWN0IHdvdWxkIHNraXAgdGhlIGFuY2VzdG9yCitiZWZvcmUgcmVhY2hpbmcgdGhl IHh3YWl0IGxvZ2ljIGFuZCBhZG1pdCBhIGR1cGxpY2F0ZSAtLSB3aGljaCBpcyB3aHkgdGhl CityZWNoZWNrIGlzIGEgY29ycmVjdG5lc3MgcmVxdWlyZW1lbnQsIG5vdCBtZXJlbHkgYW4g b3B0aW1pemF0aW9uLgorCiszLiBXaHkgYSB2YWx1ZSBjb21wYXJpc29uIGZpeGVzIGl0LCBh bmQgd2h5IGl0IG11c3QgYmUgdGhlIG9wY2xhc3MgY29tcGFyYXRvcgorCitTbyB0aGUgdW5p cXVlIHBhdGggbmVlZHMgdG8gbG9vayBhdCB0aGUgYWN0dWFsIGxpdmUgdmFsdWUsIG5vdCBq dXN0ICJkaWQKK3NvbWV0aGluZyBjaGFuZ2UuIiAgX2J0X2NoZWNrX3VuaXF1ZSBmZXRjaGVz IHRoZSBjb25mbGljdGluZyB0dXBsZSB1bmRlcgorU25hcHNob3REaXJ0eSBhbmQsIHdoZW4g aGlfcmVjaGVjayBzYXlzIGEgSE9ULWluZGV4ZWQgaG9wIHdhcyBjcm9zc2VkLCBjYWxscwor X2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmIHRvIGNvbXBhcmUgdGhlIGxpdmUgdHVwbGUncyBj dXJyZW50IGtleSBhZ2FpbnN0IHRoZQorYXJyaXZpbmcgbGVhZidzIHN0b3JlZCBrZXk6CisK KyAtIGxpdmUga2V5IGVxdWFscyB0aGUgbGVhZiBrZXkgLT4gZ2VudWluZSBkdXBsaWNhdGUg KG9yIGFuIGluLWZsaWdodCBjb25mbGljdAorICAgcmVhY2hlZCBhcyB4d2FpdCkgLS0gY29y cmVjdDogQUJBIGJhY2sgdG8gWCBpcyBhIHJlYWwgY29uZmxpY3Qgd2l0aCBhIG5ldyBYLgor IC0gbGl2ZSBrZXkgZGlmZmVycyAtPiB0aGUgbGVhZiBpcyB0cnVseSBzdGFsZSAtPiBza2lw IGl0ICh0aGUgZnJlc2ggZW50cnkKKyAgIGhhbmRsZXMgdGhlIHJlYWwgcm93KS4KKworV2hp Y2ggZXF1YWxpdHk/ICBUd28gY2FuZGlkYXRlczoKKworQml0d2lzZS9pbWFnZSBjb21wYXJp c29uIChkYXR1bV9pbWFnZV9lcSkgY29tcGFyZXMgcmF3IGJ5dGVzLiAgVGhhdCBpcyB3cm9u ZworZm9yIHVuaXF1ZSBjaGVja2luZyBpbiB0aGUgZGFuZ2Vyb3VzIGRpcmVjdGlvbi4gIFVu aXF1ZW5lc3MgaW4gUG9zdGdyZVNRTCBpcworZGVmaW5lZCBieSB0aGUgaW5kZXggb3BjbGFz cydzIGVxdWFsaXR5IG9wZXJhdG9yLCBub3QgYnl0ZSBpZGVudGl0eSwgYW5kIG1hbnkKK3R5 cGVzIGhhdmUgdmFsdWVzIGVxdWFsIHVuZGVyIHRoZSBvcGNsYXNzIGJ1dCBieXRlLWRpc3Rp bmN0OgorIC0gbnVtZXJpYzogMS4wIGFuZCAxLjAwIGFyZSBvcGNsYXNzLWVxdWFsLCBkaWZm ZXJlbnQgb24tZGlzayBieXRlcy4KKyAtIGZsb2F0ODogLTAuMCBhbmQgKzAuMCBhcmUgZXF1 YWwsIGRpZmZlcmVudCBiaXQgcGF0dGVybnMuCisgLSB0ZXh0L2NpdGV4dCB1bmRlciBhIG5v bmRldGVybWluaXN0aWMgY29sbGF0aW9uOiBjYW5vbmljYWxseS1lcXVpdmFsZW50CisgICBz dHJpbmdzIHRoYXQgYXJlIG5vdCBieXRlLWlkZW50aWNhbC4KKworQSBiaXR3aXNlIGNvbXBh cmlzb24gd291bGQgY29uY2x1ZGUgIm5vdCBlcXVhbCA9PiBzdGFsZSA9PiBza2lwIiBmb3Ig YSBsaXZlCisxLjAwIHZlcnN1cyBhbiBpbnNlcnRlZCAxLjAgYW5kIG1pc3MgYSBnZW51aW5l IHZpb2xhdGlvbiAtLSBhIGNvcnJlY3RuZXNzIGhvbGUKK2FzIGJhZCBhcyB0aGUgQUJBIG9u ZS4KKworU28gX2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmIHVzZXMgdGhlIGluZGV4J3Mgb3du IEJUT1JERVJfUFJPQyAoYnRyZWUgc3VwcG9ydAorZnVuY3Rpb24gMSkgdW5kZXIgZWFjaCBr ZXkgY29sdW1uJ3MgY29sbGF0aW9uLCB0aGUgc2FtZSBtYWNoaW5lcnkgX2J0X2NvbXBhcmUK K2FuZCBfYnRfbWtzY2Fua2V5IHVzZSB0byBkZWZpbmUgZXF1YWxpdHkgZm9yIHRoZSBpbmRl eC4gIEEgemVybyByZXN1bHQgbWVhbnMKKyJlcXVhbCBhcyB0aGUgaW5kZXggZGVmaW5lcyBl cXVhbGl0eSwiIHdoaWNoIGlzIHByZWNpc2VseSB0aGUgdW5pcXVlLXZpb2xhdGlvbgorY29u ZGl0aW9uLCBhbmQgdGhlIHZlcmRpY3QgYWdyZWVzIHdpdGggdGhlIGluZGV4J3Mgb3duIG5v dGlvbiBvZiB1bmlxdWVuZXNzIGluCitib3RoIGRpcmVjdGlvbnMuCisKKzQuIFdoeSBubyBl eHByZXNzaW9uIGV2YWx1YXRpb24gaXMgbmVlZGVkCisKK19idF9oZWFwX2tleXNfZXF1YWxf bGVhZiByZWFkcyBlYWNoIGtleSBjb2x1bW4gc3RyYWlnaHQgZnJvbSB0aGUgaGVhcCBzbG90 Cisoc2xvdF9nZXRhdHRyKSBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIGxlYWYgZGF0dW07IGl0 IGRvZXMgbm90IGV2YWx1YXRlIGluZGV4ZWQKK2V4cHJlc3Npb25zIGFuZCBuZWVkcyBubyBl eGVjdXRvciBzdGF0ZS4gIFRoYXQgaXMgc3VmZmljaWVudCBiZWNhdXNlIHRoZQorcmVjaGVj ayBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBmb3IgYW4gaW5kZXggcmVjZWl2aW5nIGEgZnJlc2gg ZW50cnkgZHVyaW5nIGEKK0hPVC1pbmRleGVkIHVwZGF0ZSwgYW5kIEhlYXBVcGRhdGVIb3RB bGxvd2FibGUgZGlzcXVhbGlmaWVzIGFueSBVUERBVEUgdGhhdAordG91Y2hlcyBhbiBhdHRy aWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uIGluZGV4CisoSU5ERVhfQVRUUl9C SVRNQVBfRVhQUkVTU0lPTiBjYXB0dXJlcyBldmVyeSBzdWNoIGF0dHJpYnV0ZSkuICBTbyBh IEhPVC1pbmRleGVkCitjaGFpbiBuZXZlciBoYXMgYSBjcm9zc2VkIGhvcCBhZmZlY3Rpbmcg YW4gZXhwcmVzc2lvbiBpbmRleCwgdGhlIGluZGV4IHJlYWNoaW5nCit0aGUgcmVjaGVjayBu ZXZlciBoYXMgYW4gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkgaXMgYSBy ZWFsCithdHRyaWJ1dGUgbnVtYmVyKSwgYW5kIHRoZXJlIGlzIG5vdGhpbmcgdG8gZXZhbHVh dGUuICBJZiBzZWxlY3RpdmUgbWFpbnRlbmFuY2UKK29mIGV4cHJlc3Npb24gaW5kZXhlcyBp cyBpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlLCB0aGlzIGlzIHdoZXJlIGFuCitleHByZXNz aW9uLWV2YWx1YXRpbmcgY29tcGFyaXNvbiAoZS5nLiBGb3JtSW5kZXhEYXR1bSkgd291bGQg YmUgcmVpbnRyb2R1Y2VkLgorCis1LiBXaHkgdGhlIGFzeW1tZXRyeSAoYml0bWFwIG9uIHJl YWQsIHZhbHVlIHJlY2hlY2sgb24gdW5pcXVlKSBpcyBpbnRlbnRpb25hbAorCitJdCBsb29r cyBsaWtlIHR3byBkaWZmZXJlbnQgYW5zd2VycyB0byB0aGUgc2FtZSBxdWVzdGlvbiwgYnV0 IHRoZSBxdWVzdGlvbnMKK2RpZmZlcjoKKworIC0gUmVhZC9zY2FuIHBhdGg6ICJzaG91bGQg dGhpcyByb3cgYmUgcmV0dXJuZWQ/IiAgQSBzdGFsZSBlbnRyeSBpcyByZWR1bmRhbnQKKyAg ICh0aGUgZnJlc2ggZW50cnkgc3VwcGxpZXMgdGhlIHJvdyksIHNvIHRoZSBjb25zZXJ2YXRp dmUgYml0bWFwIHZlcmRpY3QgaXMKKyAgIHN1ZmZpY2llbnQgLS0gd29yc3QgY2FzZSB1bmRl ciBBQkEgeW91IGRyb3AgYSByZWR1bmRhbnQgZW50cnkgYW5kIHRoZSBmcmVzaAorICAgb25l IHN0aWxsIHJldHVybnMgdGhlIHJvdy4gIE5vIHZhbHVlIGNvbXBhcmlzb24sIHNvIHJlYWRz IHN0YXkKKyAgIGFjY2Vzcy1tZXRob2QtYWdub3N0aWMgYW5kIGNoZWFwLgorIC0gVW5pcXVl LWNoZWNrIHBhdGg6ICJpcyB0aGlzIGEgY29uZmxpY3Q/IiAgQSB3cm9uZyAic3RhbGUiIHZl cmRpY3QgaGVyZSBkb2VzCisgICBub3QganVzdCBkcm9wIGEgcmVkdW5kYW50IGVudHJ5OyBp dCBzaWxlbnRseSBhZG1pdHMgYSBkdXBsaWNhdGUsIGNvcnJ1cHRpbmcKKyAgIHRoZSBjb25z dHJhaW50LiAgSXQgY2Fubm90IHRvbGVyYXRlIHRoZSBiaXRtYXAncyBmYWxzZSAic3RhbGUi IHVuZGVyIEFCQSBhbmQKKyAgIG11c3QgY29uc3VsdCB0aGUgbGl2ZSB2YWx1ZSAob3Igd2Fp dCBvbiBhbiBpbi1mbGlnaHQgdXBkYXRlcikgdmlhIHRoZQorICAgb3BjbGFzcyBjb21wYXJh dG9yLgorCitUaGUgYml0bWFwIGlzIGEgZmlsdGVyIChhIG5lY2Vzc2FyeSBjb25kaXRpb246 ICJjb3VsZCBiZSBzdGFsZSIpOyB0aGUgb3BjbGFzcworcmVjaGVjayBpcyB0aGUgYXV0aG9y aXR5ICh0aGUgc3VmZmljaWVudCBjb25kaXRpb246ICJpcyB0aGUgbGl2ZSBrZXkgYWN0dWFs bHkKK2RpZmZlcmVudCwgb3IgaXMgYSBjb25mbGljdGluZyB1cGRhdGUgaW4gZmxpZ2h0Iiku ICBUaGUgdW5pcXVlIHBhdGggbGF5ZXJzIHRoZQorYXV0aG9yaXR5IG9uIHRvcCBvZiB0aGUg ZmlsdGVyIHByZWNpc2VseSBiZWNhdXNlIGl0cyBlcnJvciBtb2RlIGlzCit1bmZvcmdpdmlu Zy4KKworSW4gb25lIHNlbnRlbmNlOiB0aGUgdW5pcXVlIGNoZWNrIGNvbXBhcmVzIHRoZSBs aXZlIHR1cGxlJ3MgY3VycmVudCBrZXkgdG8gdGhlCithcnJpdmluZyBsZWFmIHdpdGggdGhl IGluZGV4J3Mgb3duIGVxdWFsaXR5IChub3QgYnl0ZXMpIGJlY2F1c2UgdGhlCitjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAgY2FuIG9ubHkgc2F5ICJzb21ldGhpbmcgY2hhbmdlZCIgLS0g dHJ1ZSB1bmRlciBhbgorWC0+WS0+WCBjeWNsZSBldmVuIHRob3VnaCB0aGUgdmFsdWUgaXMg YmFjayB0byBYIC0tIGFuZCBvbmx5IGFuIG9wY2xhc3MtY29ycmVjdAordmFsdWUgY29tcGFy aXNvbiAod2hpY2ggYWxzbyByb3V0ZXMgYW4gaW4tZmxpZ2h0IHJlc3RvcmluZyB1cGRhdGUg dG8geHdhaXQpIGNhbgorYm90aCByZWNvZ25pemUgdGhlIGN5Y2xlZC1iYWNrIHZhbHVlIGFz IGEgZ2VudWluZSBkdXBsaWNhdGUgYW5kIGNhdGNoCitkdXBsaWNhdGVzIHRoYXQgYXJlIG9w Y2xhc3MtZXF1YWwgYnV0IG5vdCBieXRlLWlkZW50aWNhbCwgZWl0aGVyIG9mIHdoaWNoIGEK K2JpdG1hcCBvciBhIGJpdHdpc2UgY29tcGFyaXNvbiB3b3VsZCBnZXQgd3JvbmcuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDViMDU5YTVhY2VmLi4zYmZhYzhjMGIxOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy9oaW8uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQu aCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1 YnRyYW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCkBAIC00NCwxMyArNDUs MTQgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvbG9ja29w dGlvbnMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0 aWxzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAg LTc4LDYgKzgwLDggQEAgc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFw VHVwbGUgb2xkdHVwKTsKICNlbmRpZgogc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCSBIZWFwVHVw bGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwKTsKK3N0YXRpYyBIZWFwVHVwbGUgaGVhcF9m b3JtX2hvdF9pbmRleGVkX3R1cGxlKEhlYXBUdXBsZSB0dXAsIGludCByZWxuYXR0cywKKwkJ CQkJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiBzdGF0 aWMgYm9vbCBoZWFwX2FjcXVpcmVfdHVwbG9jayhSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICp0aWQsCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlIG1vZGUsIExv Y2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCAqaGF2ZV90dXBsZV9s b2NrKTsKQEAgLTIxMDksOSArMjExMywyOCBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxh dGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJICogSWYgdGhpcyBpcyB0 aGUgc2luZ2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLCB3ZSBjYW4gcmVpbml0IHRoZQog CQkgKiBwYWdlIGluc3RlYWQgb2YgcmVzdG9yaW5nIHRoZSB3aG9sZSB0aGluZy4gIFNldCBm bGFnLCBhbmQgaGlkZQogCQkgKiBidWZmZXIgcmVmZXJlbmNlcyBmcm9tIFhMb2dJbnNlcnQu CisJCSAqCisJCSAqIEFsc28gcmVxdWlyZSB0aGF0IHRoZSBwYWdlJ3MgdHVwbGUgYXJlYSBj b250YWlucyBub3RoaW5nIG90aGVyIHRoYW4KKwkJICogdGhpcyB0dXBsZS4gIFZhY3V1bSdz IGxwX3RydW5jYXRlX29ubHkgc2Vjb25kIHBhc3MKKwkJICogKFBSVU5FX1ZBQ1VVTV9DTEVB TlVQKSBkb2VzIG5vdCBjYWxsIFBhZ2VSZXBhaXJGcmFnbWVudGF0aW9uLCBzbyBhCisJCSAq IHBhZ2UgY2FuIGxlZ2l0aW1hdGVseSBlbmQgdXAgd2l0aCBvbmUgTFBfVU5VU0VEIHNsb3Qg YXQgb2Zmc2V0IDEKKwkJICogcGx1cyBvcnBoYW4gdHVwbGUgYnl0ZXMgbGVmdCBvdmVyIGZy b20gdGhlIHByZXZpb3VzIGxpZmV0aW1lLiBJZgorCQkgKiBoZWFwX2luc2VydCByZXVzZXMg dGhhdCBMUF9VTlVTRUQgc2xvdCwgcHJpbWFyeSdzIHBhZ2Uga2VlcHMgdGhlCisJCSAqIG9y cGhhbiBieXRlcyB3aGlsZSBhIHN0YW5kYnkgcmVwbGF5aW5nIElOU0VSVCtJTklUIHplcm9l cyB0aGVtLgorCQkgKiBFbWl0dGluZyBJTlNFUlQrSU5JVCBpbiB0aGF0IGNhc2UgdHJpcHMg d2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nLgorCQkgKiBGYWxsaW5nIGJhY2sgdG8gYSByZWd1 bGFyIElOU0VSVCAod2l0aCB0aGUgRlBJIG9uIGZpcnN0IHRvdWNoIGFmdGVyCisJCSAqIGEg Y2hlY2twb2ludCkga2VlcHMgcmVwbGF5IGJ5dGUtaWRlbnRpY2FsIHdpdGhvdXQgc2Fjcmlm aWNpbmcgY3Jhc2gKKwkJICogc2FmZXR5LgorCQkgKgorCQkgKiBOT1RFOiBoZWFwX211bHRp X2luc2VydCgpIGRvZXMgbm90IG5lZWQgdGhpcyBleHRyYSBjaGVjazogaXQgdXNlcyB0aGUK KwkJICogc2ltcGxlciBzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgKFBhZ2VHZXRNYXhPZmZz ZXROdW1iZXIocGFnZSkgPT0gMCkKKwkJICogZ2F0ZSBmb3IgaXRzIG93biBJTklUX1BBR0Ug ZGVjaXNpb24sIGJlY2F1c2UgYnkgY29uc3RydWN0aW9uIGl0IGlzCisJCSAqIG5ldmVyIGhh bmRlZCBhIHBhZ2Ugd2l0aCBsZWZ0b3ZlciBvcnBoYW4gYnl0ZXMgZnJvbSBhIHByaW9yIGxp ZmV0aW1lLgogCQkgKi8KIAkJaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCYoaGVh cHR1cC0+dF9zZWxmKSkgPT0gRmlyc3RPZmZzZXROdW1iZXIgJiYKLQkJCVBhZ2VHZXRNYXhP ZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXROdW1iZXIpCisJCQlQYWdlR2V0TWF4 T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkoKFBhZ2VI ZWFkZXIpIHBhZ2UpLT5wZF91cHBlciA9PQorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRf c3BlY2lhbCAtIE1BWEFMSUdOKGhlYXB0dXAtPnRfbGVuKSkKIAkJewogCQkJaW5mbyB8PSBY TE9HX0hFQVBfSU5JVF9QQUdFOwogCQkJYnVmZmxhZ3MgfD0gUkVHQlVGX1dJTExfSU5JVDsK QEAgLTMyMDIsOSArMzIyNSwxMSBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogICovCiBUTV9SZXN1bHQKIGhl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cyBwZ19hdHRyaWJ1dGVfdW51c2VkKCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2Fp dCwKKwkJCUNvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zIHBnX2F0dHJpYnV0ZV91bnVz ZWQoKSwKKwkJCVNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCVRNX0ZhaWx1 cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAotCQkJY29uc3Qg Qml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQp CisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKKwkJCUhlYXBVcGRh dGVJbmRleE1vZGUgaG90X21vZGUpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUcmFuc2Fj dGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CkBAIC0zMjMwLDYgKzMy NTUsOSBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJCWhhdmVfdHVwbGVfbG9j ayA9IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNlX2hvdF91cGRhdGUgPSBm YWxzZTsKKwlib29sCQlob3RfaW5kZXhlZCA9IGZhbHNlOwkvKiBIT1QtaW5kZXhlZCB1cGRh dGUgKG1vZGlmaWVkIGFuCisJCQkJCQkJCQkJICogaW5kZXhlZCBhdHRyIGJ1dCBzdGF5ZWQg SE9UKSAqLworCVNpemUJCWhpX2JtYnl0ZXMgPSAwOyAvKiB0cmFpbGluZyBtb2RpZmllZC1h dHRycyBiaXRtYXAgc2l6ZSwgaWYgYW55ICovCiAJYm9vbAkJa2V5X2ludGFjdDsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xl YXJlZF9uZXcgPSBmYWxzZTsKQEAgLTM3OTQsNiArMzgyMiwzOCBAQCBsMjoKIAogCW5ld3R1 cHNpemUgPSBNQVhBTElHTihuZXd0dXAtPnRfbGVuKTsKIAorCS8qCisJICogS2VlcCBIT1Qt aW5kZXhlZCAoU0lVKSBjaGFpbnMgdW5pZm9ybS4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg cmV0dXJucworCSAqIEhFQVBfSEVBUF9PTkxZX1VQREFURSB3aGVuZXZlciB0aGlzIHVwZGF0 ZSBtb2RpZmllcyBubyBpbmRleGVkCisJICogYXR0cmlidXRlLiAgQnV0IGlmIHRoZSB0dXBs ZSBiZWluZyB1cGRhdGVkIGlzIGFscmVhZHkgYSBIT1QtaW5kZXhlZAorCSAqIGNoYWluIG1l bWJlciAoaXQgY2FycmllcyBIRUFQX0lOREVYRURfVVBEQVRFRCksIGVtaXR0aW5nIGEgY2xh c3NpYy1IT1QKKwkgKiB2ZXJzaW9uIHdvdWxkIHNwbGljZSBhIG5vbi1IRUFQX0lOREVYRURf VVBEQVRFRCB0dXBsZSBpbnRvIHRoZSBjaGFpbi4KKwkgKiBUaGUgcHJ1bmUvY29sbGFwc2Ug bWFjaGluZXJ5IGZvcndhcmRzIG9ubHkgSEVBUF9JTkRFWEVEX1VQREFURUQgbWVtYmVycwor CSAqIHRocm91Z2ggYnJpZGdlcywgc28gc3VjaCBhIGNsYXNzaWMtSE9UIHZlcnNpb24sIG9u Y2UgaXQgZGllcyBtaWQKKwkgKiBjb2xsYXBzZWQtY2hhaW4sIGhhcyBubyBoYW5kbGVyIGFu ZCB0cmlwcyB0aGUgIm5vdCBsaW5rZWQgdG8gZnJvbSBhbnkKKwkgKiBIT1QgY2hhaW4iIGVy cm9yLiAgUHJvbW90ZSB0byBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgaW5zdGVhZDog d2l0aCBhbgorCSAqIGVtcHR5IG1vZGlmaWVkLWF0dHJzIHNldCB0aGUgbmV3IHZlcnNpb24g Y2FycmllcyBIRUFQX0lOREVYRURfVVBEQVRFRAorCSAqIGFuZCBhbiBlbXB0eSBpbmxpbmUt dHJhaWxpbmcgYml0bWFwLCBpbnNlcnRzIGludG8gbm8gaW5kZXggKG5vdGhpbmcKKwkgKiBj aGFuZ2VkKSwgYW5kIGtlZXBzIGV2ZXJ5IGNoYWluIG1lbWJlciB1bmlmb3JtLiAgQ2F0YWxv ZyByZWxhdGlvbnMgYXJlCisJICogY2xhc3NpYy1IT1Qgb25seSBhbmQgbmV2ZXIgY2Fycnkg SEVBUF9JTkRFWEVEX1VQREFURUQsIHNvIHRoaXMgbmV2ZXIKKwkgKiBmaXJlcyBmb3IgdGhl bS4KKwkgKi8KKwlpZiAoaG90X21vZGUgPT0gSEVBUF9IRUFQX09OTFlfVVBEQVRFICYmCisJ CShvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwKQorCQlob3RfbW9kZSA9IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURTsKKworCS8q CisJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgYXBwZW5kcyBhIGZpeGVkLXNpemUgaW5saW5l LXRyYWlsaW5nCisJICogbW9kaWZpZWQtYXR0cnMgYml0bWFwIHRvIHRoZSBuZXcgdHVwbGUg KHNlZSBhY2Nlc3MvaG90X2luZGV4ZWQuaCkuCisJICogUmVzZXJ2ZSByb29tIGZvciBpdCBp biB0aGUgcGFnZS1maXQgY2FsY3VsYXRpb24gbm93LCB3aGlsZSB3ZSBzdGlsbAorCSAqIG1p Z2h0IHRha2UgdGhlIHNhbWUtcGFnZSBIT1QgcGF0aDsgaWYgdGhlIHVwZGF0ZSBsYXRlciBk cm9wcyB0byBub24tSE9UCisJICogKHRoZSB0dXBsZSBkb2VzIG5vdCBmaXQgb24gdGhlIHBh Z2UpIGl0IGlzIHN0b3JlZCB3aXRob3V0IHRoZSBiaXRtYXAgYW5kCisJICogdGhlIHJlc2Vy dmF0aW9uIGlzIHNpbXBseSBjb25zZXJ2YXRpdmUuCisJICovCisJaWYgKGhvdF9tb2RlID09 IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSkKKwkJaGlfYm1ieXRlcyA9IEhvdEluZGV4 ZWRCaXRtYXBCeXRlcyhSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWxhdGlvbikp OworCW5ld3R1cHNpemUgPSBNQVhBTElHTihuZXd0dXAtPnRfbGVuICsgaGlfYm1ieXRlcyk7 CisKIAlpZiAobmVlZF90b2FzdCB8fCBuZXd0dXBzaXplID4gcGFnZWZyZWUpCiAJewogCQlU cmFuc2FjdGlvbklkIHhtYXhfbG9ja19vbGRfdHVwbGU7CkBAIC0zODkxLDcgKzM5NTEsNyBA QCBsMjoKIAkJewogCQkJLyogTm90ZSB3ZSBhbHdheXMgdXNlIFdBTCBhbmQgRlNNIGR1cmlu ZyB1cGRhdGVzICovCiAJCQloZWFwdHVwID0gaGVhcF90b2FzdF9pbnNlcnRfb3JfdXBkYXRl KHJlbGF0aW9uLCBuZXd0dXAsICZvbGR0dXAsIDApOwotCQkJbmV3dHVwc2l6ZSA9IE1BWEFM SUdOKGhlYXB0dXAtPnRfbGVuKTsKKwkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVw LT50X2xlbiArIGhpX2JtYnl0ZXMpOwogCQl9CiAJCWVsc2UKIAkJCWhlYXB0dXAgPSBuZXd0 dXA7CkBAIC0zOTkyLDEwICs0MDUyLDEwIEBAIGwyOgogCXsKIAkJLyoKIAkJICogU2luY2Ug dGhlIG5ldyB0dXBsZSBpcyBnb2luZyBpbnRvIHRoZSBzYW1lIHBhZ2UsIHdlIG1pZ2h0IGJl IGFibGUKLQkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBp bmRleCBjb2x1bW5zIGhhdmUgYmVlbgotCQkgKiBjaGFuZ2VkLgorCQkgKiB0byBkbyBhIEhP VCB1cGRhdGUuICBDaGVjayBpZiBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgaGFzCisJCSAq IHNhbmN0aW9uZWQgaXQgKEhFQVBfSEVBUF9PTkxZX1VQREFURSBvciBIRUFQX1NFTEVDVElW RV9JTkRFWF9VUERBVEUpLgogCQkgKi8KLQkJaWYgKGhvdF9hbGxvd2VkKQorCQlpZiAoaG90 X21vZGUgIT0gSEVBUF9VUERBVEVfQUxMX0lOREVYRVMpCiAJCQl1c2VfaG90X3VwZGF0ZSA9 IHRydWU7CiAJfQogCWVsc2UKQEAgLTQwMDQsNiArNDA2NCwyNyBAQCBsMjoKIAkJUGFnZVNl dEZ1bGwocGFnZSk7CiAJfQogCisJLyoKKwkgKiBGb3IgYSBzYW1lLXBhZ2UgSE9ULWluZGV4 ZWQgdXBkYXRlLCByZXBsYWNlIGhlYXB0dXAgd2l0aCBhIGNvcHkgdGhhdAorCSAqIGNhcnJp ZXMgdGhlIGlubGluZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAgKGFuZAorCSAq IEhFQVBfSU5ERVhFRF9VUERBVEVEKS4gIERvbmUgaGVyZSwgb3V0c2lkZSB0aGUgY3JpdGlj YWwgc2VjdGlvbiwKKwkgKiBiZWNhdXNlIGl0IGFsbG9jYXRlczsgdGhlIGJpdG1hcCdzIHNp emUgd2FzIHJlc2VydmVkIGluIG5ld3R1cHNpemUKKwkgKiBhYm92ZS4gIE9ubHkgdGhlIHN0 b3JlZCB0dXBsZSAoaGVhcHR1cCkgZ2V0cyB0aGUgYml0bWFwIGFuZCB0aGUgZmxhZzsKKwkg KiB0aGUgY2FsbGVyJ3MgbmV3dHVwIG11c3QgTk9UIGJlIG1hcmtlZCBIRUFQX0lOREVYRURf VVBEQVRFRCwgYmVjYXVzZSBpdAorCSAqIGhhcyBubyB0cmFpbGluZyBiaXRtYXAgLS0gc2Vl IHRoZSBmbGFnIGhhbmRsaW5nIGJlbG93LgorCSAqLworCWlmICh1c2VfaG90X3VwZGF0ZSAm JiBob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJeworCQlIZWFw VHVwbGUJZXh0OworCisJCWV4dCA9IGhlYXBfZm9ybV9ob3RfaW5kZXhlZF90dXBsZShoZWFw dHVwLAorCQkJCQkJCQkJCSAgUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRp b24pLAorCQkJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJaWYgKGhlYXB0dXAg IT0gbmV3dHVwKQorCQkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CisJCWhlYXB0dXAgPSBl eHQ7CisJfQorCiAJLyoKIAkgKiBDb21wdXRlIHJlcGxpY2EgaWRlbnRpdHkgdHVwbGUgYmVm b3JlIGVudGVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uIHNvCiAJICogd2UgZG9uJ3QgUEFO SUMgdXBvbiBhIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCkBAIC00MDQwLDYgKzQxMjEs MjkgQEAgbDI6CiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5KGhlYXB0dXApOwogCQkvKiBNYXJr IHRoZSBjYWxsZXIncyBjb3B5IHRvbywgaW4gY2FzZSBkaWZmZXJlbnQgZnJvbSBoZWFwdHVw ICovCiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5KG5ld3R1cCk7CisKKwkJLyoKKwkJICogRm9y IGEgSE9ULWluZGV4ZWQgdXBkYXRlLCB0aGUgbmV3IGxpdmUgdHVwbGUgY2FycmllcworCQkg KiBIRUFQX0lOREVYRURfVVBEQVRFRCBzbyBpbmRleCBzY2FucyB3YWxraW5nIHRoZSBjaGFp biBrbm93IGl0IGlzIGEKKwkJICogSE9ULWluZGV4ZWQgaG9wIGNhcnJ5aW5nIGFuIGlubGlu ZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAuCisJCSAqCisJCSAqIFNldCB0aGUg ZmxhZyBvbmx5IG9uIGhlYXB0dXAsIHRoZSB2ZXJzaW9uIGFjdHVhbGx5IHN0b3JlZCBvbiB0 aGUKKwkJICogcGFnZTogaGVhcHR1cCBjYXJyaWVzIHRoZSB0cmFpbGluZyBiaXRtYXAsIHNv IHRoZSBmbGFnJ3MgcHJvbWlzZSAoYQorCQkgKiBiaXRtYXAgb2NjdXBpZXMgdGhlIGZpbmFs IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YgdGhlCisJCSAqIGl0ZW0p IGhvbGRzLiAgVGhlIGNhbGxlcidzIG5ld3R1cCBpcyBhIHNlcGFyYXRlIGluLW1lbW9yeSB0 dXBsZQorCQkgKiB3aG9zZSB0X2xlbiBkb2VzIG5vdCBpbmNsdWRlIHRoZSBiaXRtYXA7IG1h cmtpbmcgaXQKKwkJICogSEVBUF9JTkRFWEVEX1VQREFURUQgd291bGQgYXNzZXJ0IGEgdHJh aWxpbmcgYml0bWFwIHRoYXQgaXMgbm90CisJCSAqIHRoZXJlLCBzbyBhbnkgbGF0ZXIgcmVh ZGVyIHVzaW5nIEl0ZW1JZEdldExlbmd0aCgpLXJlbGF0aXZlIGFjY2VzcworCQkgKiB3b3Vs ZCBtaXNyZWFkIGF0dHJpYnV0ZSBkYXRhIGFzIHRoZSBiaXRtYXAuICBXZSB0aGVyZWZvcmUg bGVhdmUKKwkJICogbmV3dHVwJ3MgZmxhZyBjbGVhci4gIE5vdGhpbmcgcmVhZHMgdGhlIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcCBvZmYgYW4KKwkJICogaW4tbWVtb3J5IHR1cGxlOyBldmVy eSBjb25zdW1lciByZWFkcyBpdCBmcm9tIHRoZSBwYWdlIHZpYSB0aGUgbGluZQorCQkgKiBw b2ludGVyJ3MgbGVuZ3RoLgorCQkgKi8KKwkJaWYgKGhvdF9tb2RlID09IEhFQVBfU0VMRUNU SVZFX0lOREVYX1VQREFURSkKKwkJeworCQkJaGVhcHR1cC0+dF9kYXRhLT50X2luZm9tYXNr MiB8PSBIRUFQX0lOREVYRURfVVBEQVRFRDsKKwkJCWhvdF9pbmRleGVkID0gdHJ1ZTsKKwkJ fQogCX0KIAllbHNlCiAJewpAQCAtNDE0NCw3ICs0MjQ4LDggQEAgbDI6CiAJaWYgKGhhdmVf dHVwbGVfbG9jaykKIAkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50 X3NlbGYpLCBsb2NrbW9kZSk7CiAKLQlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVsYXRp b24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKKwlwZ3N0YXRfY291bnRf aGVhcF91cGRhdGUocmVsYXRpb24sIHVzZV9ob3RfdXBkYXRlLCBob3RfaW5kZXhlZCwKKwkJ CQkJCQkgbmV3YnVmICE9IGJ1ZmZlcik7CiAKIAkvKgogCSAqIElmIGhlYXB0dXAgaXMgYSBw cml2YXRlIGNvcHksIHJlbGVhc2UgaXQuICBEb24ndCBmb3JnZXQgdG8gY29weSB0X3NlbGYK QEAgLTQyOTAsNyArNDM5NSw3IEBAIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVhcFR1cGxl IG9sZHR1cCkKIAogLyoKICAqIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlJ3Mg dmFsdWVzIGFyZSB0aGUgc2FtZS4gIFN1YnJvdXRpbmUgZm9yCi0gKiBIZWFwRGV0ZXJtaW5l Q29sdW1uc0luZm8uCisgKiBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycy4KICAqLwogc3Rh dGljIGJvb2wKIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBhdHRy bnVtLCBEYXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKQEAgLTQzMzQsNjMgKzQ0MzksMTAz IEBAIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBhdHRybnVtLCBE YXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKIH0KIAogLyoKLSAqIEhPVCB1cGRhdGVzIGFy ZSBwb3NzaWJsZSB3aGVuIGVpdGhlcjogYSkgdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4 ZWQKLSAqIGF0dHJpYnV0ZXMsIG9yIGIpIHRoZSBtb2RpZmllZCBhdHRyaWJ1dGVzIGFyZSBh bGwgb24gc3VtbWFyaXppbmcgaW5kZXhlcy4KLSAqIExhdGVyLCBpbiBoZWFwX3VwZGF0ZSgp LCB3ZSBjYW4gY2hvb3NlIHRvIHBlcmZvcm0gYSBIT1QgdXBkYXRlIGlmIHRoZXJlIGlzCi0g KiBzcGFjZSBvbiB0aGUgcGFnZSBmb3IgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIGZvbGxvd2lu ZyBjb2RlIGhhcyBkZXRlcm1pbmVkCi0gKiB0aGF0IEhPVCBpcyBhbGxvd2VkLgorICogSGVh cFVwZGF0ZUhvdEFsbG93YWJsZSAtLQorICoKKyAqIENsYXNzaWZ5IGFuIFVQREFURSBmb3Ig SE9UIGVsaWdpYmlsaXR5IGZyb20gdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMKKyAq IGl0IGNoYW5nZWQgKG1vZGlmaWVkX2lkeF9hdHRycywgY29tcHV0ZWQgYnkgdGhlIGV4ZWN1 dG9yKToKKyAqCisgKiAgIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTICAgSE9UIGlzIG5vdCBw ZXJtaXR0ZWQ7IHRoZSBuZXcgdHVwbGUgZ29lcyBvbiBhCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJlc2ggVElEIGFuZCBldmVyeSBpbmRleCBnZXRzIGEgbmV3IGVudHJ5 LgorICogICBIRUFQX0hFQVBfT05MWV9VUERBVEUgICAgIENsYXNzaWMgSE9UOiBubyBub24t c3VtbWFyaXppbmcgaW5kZXhlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0 dHJpYnV0ZSBjaGFuZ2VkLCBzbyBubyBpbmRleCBuZWVkcyBhIG5ldworICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudHJ5IGFuZCB0aGUgbmV3IHR1cGxlIGpvaW5zIHRoZSBj aGFpbiB2aWEgYQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfY3RpZCBmb3J3 YXJkIGxpbmsuCisgKiAgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSBIT1Qgd2l0aCBz ZWxlY3RpdmUgaW5kZXggdXBkYXRlOiBhdCBsZWFzdCBvbmUKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub24tc3VtbWFyaXppbmcgaW5kZXgncyBhdHRyaWJ1dGUgY2hhbmdl ZCwgYnV0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB0dXBsZSBj YW4gc3RpbGwgam9pbiB0aGUgSE9UIGNoYWluIG9uCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlIHNhbWUgcGFnZTsgb25seSB0aGUgaW5kZXhlcyB3aG9zZQorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgY2hhbmdlZCByZWNlaXZlIGEg bmV3IGVudHJ5LgorICoKKyAqIFRoaXMgcm91dGluZSBvbmx5IGNsYXNzaWZpZXMgdGhlIHVw ZGF0ZTsgaGVhcF91cGRhdGUoKSBwZXJmb3JtcyBpdCBhbmQgbWF5CisgKiBzdGlsbCBmYWxs IGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZSB3aGVuIHRoZSBuZXcgdHVwbGUgZG9lcyBub3Qg Zml0IG9uIHRoZQorICogcGFnZSwgZXhhY3RseSBhcyBmb3IgY2xhc3NpYyBIT1QuCiAgKi8K LWJvb2wKLUhlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkgICBib29sICpzdW1tYXJp emVkX29ubHkpCitIZWFwVXBkYXRlSW5kZXhNb2RlCitIZWFwVXBkYXRlSG90QWxsb3dhYmxl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRy cykKIHsKLQlib29sCQlob3RfYWxsb3dlZDsKKwljb25zdCBCaXRtYXBzZXQgKmFsbF9pZHhf YXR0cnM7CiAKIAkvKgotCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9mZiBi eSBhc3N1bWluZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCi0JICogbmVlZCB1cGRhdGlu ZyBhbmQgSE9UIGlzIGFsbG93YWJsZS4KKwkgKiBDYXNlIChhKTogbm8gaW5kZXhlZCBhdHRy aWJ1dGUgd2FzIG1vZGlmaWVkIC0+IGNsYXNzaWMgSE9ULgogCSAqLwotCWhvdF9hbGxvd2Vk ID0gdHJ1ZTsKLQkqc3VtbWFyaXplZF9vbmx5ID0gZmFsc2U7CisJaWYgKGJtc19pc19lbXB0 eShtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4gSEVBUF9IRUFQX09OTFlfVVBEQVRF OwogCiAJLyoKLQkgKiBDaGVjayBmb3IgY2FzZSAoYSk7IHdoZW4gdGhlcmUgYXJlIG5vIG1v ZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgSE9UIGlzCi0JICogYWxsb3dlZC4KKwkgKiBDYXNl IChiKTogYXQgbGVhc3Qgb25lIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBJZiBhbGwg b2YgdGhlbSBhcmUKKwkgKiB1c2VkIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcywgd2Ug Y2FuIHN0aWxsIHRha2UgdGhlIGNsYXNzaWMgSE9UCisJICogcGF0aCAtLSB0aGUgc3VtbWFy aXppbmcgaW5kZXggQU0gZ2V0cyBhIG5ldyBlbnRyeSB2aWEgYW1pbnNlcnQgYW5kIG5vCisJ ICogbm9uLXN1bW1hcml6aW5nIGluZGV4IG5lZWRzIHRvIGNoYW5nZS4KIAkgKi8KLQlpZiAo Ym1zX2lzX2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCi0JCWhvdF9hbGxvd2VkID0gdHJ1 ZTsKLQllbHNlCi0JewotCQlCaXRtYXBzZXQgICpzdW1fYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9C SVRNQVBfU1VNTUFSSVpFRCk7CisJaWYgKGJtc19pc19zdWJzZXQobW9kaWZpZWRfaWR4X2F0 dHJzLCBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJ CQkJCQkJCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpKSkKKwkJcmV0dXJuIEhFQVBf SEVBUF9PTkxZX1VQREFURTsKIAotCQkvKgotCQkgKiBBdCBsZWFzdCBvbmUgaW5kZXggYXR0 cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMgY2FzZSAoYikKLQkJICogd2hlcmUg YWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIGFyZSBvbmx5IHVzZWQgYnkKLQkJ ICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlzLCB0aGVuIHdlIG5lZWQgdG8gdXBk YXRlIHRob3NlCi0JCSAqIGluZGV4ZXMsIGJ1dCB0aGlzIHVwZGF0ZSBjYW4gc3RpbGwgYmUg Y29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKLQkJICogYW5kIGF2b2lkIHVwZGF0aW5nIGFu eSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUgcmVsYXRpb24uCi0JCSAqLwotCQlp ZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0cnMsIHN1bV9hdHRycykpCi0JCXsK LQkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKLQkJCSpzdW1tYXJpemVkX29ubHkgPSB0cnVlOwot CQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIE5vdyB3ZSBrbm93IGEpIG9uZSBvciBt b3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVkCi0JCQkgKiAoY2hhbmdlZCB2 YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIFVQREFURSkgYW5kIHRoYXQK LQkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBhdHRyaWJ1dGVzIGlzIHVzZWQgYnkg YQotCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBIT1QgaXMgbm90IGFsbG93ZWQuCi0J CQkgKi8KLQkJCWhvdF9hbGxvd2VkID0gZmFsc2U7Ci0JCX0KKwkvKgorCSAqIEEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBIT1QtaW5kZXhlZCBpcyBz dXBwb3J0ZWQKKwkgKiB3aGVuZXZlciB0aGUgcmVsYXRpb24gY2FuIHRvbGVyYXRlIGV4dHJh IGluZGV4IGVudHJpZXMgaW4gYSBjaGFpbiB3aG9zZQorCSAqIHBlci1jaGFpbi1tZW1iZXIg a2V5cyBtYXkgZGlmZmVyLiAgVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aAor CSAqIGlzIGdhdGVkIGFib3ZlIGJ5IGhvdF9pbmRleGVkX29uX2FwcGx5LiAgVGhlIHJlbWFp bmluZworCSAqIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTIGZhbGxiYWNrcyBhcmU6CisJICoK KwkgKiAtIEFuIFVQREFURSB0aGF0IG1vZGlmaWVzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2Vk IGJ5IGFuIGV4cHJlc3Npb24KKwkgKiBpbmRleC4gIFNlbGVjdGl2ZSBtYWludGVuYW5jZSBv ZiBhbiBleHByZXNzaW9uIGluZGV4IHJlcXVpcmVzCisJICogZXZhbHVhdGluZyB0aGUgaW5k ZXhlZCBleHByZXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0cyB2YWx1ZSAoaGVuY2UKKwkg KiBpdHMgZW50cnkpIGNoYW5nZWQ7IHRoYXQgZXhwcmVzc2lvbi1hd2FyZSBwYXRoIGlzIG5v dCBpbXBsZW1lbnRlZCB5ZXQsCisJICogc28gc3VjaCBhbiB1cGRhdGUgZmFsbHMgYmFjayB0 byBub24tSE9ULiAgVXBkYXRlcyB0aGF0IGRvIG5vdCB0b3VjaCBhbnkKKwkgKiBleHByZXNz aW9uLWluZGV4IGF0dHJpYnV0ZSBzdGF5IGVsaWdpYmxlLgorCSAqCisJICogLSBBbiBVUERB VEUgdGhhdCBtb2RpZmllcyBldmVyeSBpbmRleGVkIGF0dHJpYnV0ZSBvZiB0aGUgcmVsYXRp b24uCisJICogSE9ULWluZGV4ZWQgb25seSBwYXlzIG9mZiB3aGVuIGl0IGNhbiBza2lwIG1h aW50YWluaW5nIGF0IGxlYXN0IG9uZQorCSAqIGluZGV4IHdob3NlIGtleSBkaWQgbm90IGNo YW5nZTsgaWYgYWxsIGluZGV4ZWQgYXR0cmlidXRlcyBjaGFuZ2VkIHRoZXJlCisJICogaXMg bm90aGluZyB0byBza2lwLCBzbyBhIHBsYWluIG5vbi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIg KGl0IGF2b2lkcyB0aGUKKwkgKiBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVy aGVhZCkuCisJICovCisJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKTsKIAotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCX0KKwkvKgorCSAqIFN5c3Rl bSBjYXRhbG9ncyBrZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcgbm8gbm9u LXN1bW1hcml6aW5nCisJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1cm5lZCBI RUFQX0hFQVBfT05MWV9VUERBVEUgYWJvdmUpLCBidXQgZG8KKwkgKiBOT1QgdGFrZSB0aGUg SE9ULWluZGV4ZWQgcGF0aDogY2F0YWxvZyByZWFkcyBnbyB0aHJvdWdoIG1hbnkgY29kZSBw YXRocworCSAqIChzeXN0YWJsZSBpbmRleCBzY2FucywgU25hcHNob3REaXJ0eSB1bmlxdWUg Y2hlY2tzLCBzZXFzY2FucyBpbgorCSAqIG9yZGVyaW5ncyB0aGUgY2hhaW4td2FsayBkZWR1 cCBkb2VzIG5vdCBjb3ZlcikgdGhhdCBhcmUgbm90IGFsbCBwcm92ZW4KKwkgKiBzYWZlIGFn YWluc3Qgc3RhbGUgY2hhaW4gZW50cmllcy4gIEZhbGxpbmcgYmFjayB0byBhIG5vbi1IT1Qg dXBkYXRlCisJICogaGVyZSBpcyBleGFjdGx5IHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZp b3VyIGZvciBzdWNoIGNhdGFsb2cgdXBkYXRlcy4KKwkgKi8KKwlpZiAoSXNDYXRhbG9nUmVs YXRpb24ocmVsYXRpb24pKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CiAK LQlyZXR1cm4gaG90X2FsbG93ZWQ7CisJLyoKKwkgKiBEaXNxdWFsaWZ5IHdoZW4gdGhlIHVw ZGF0ZSB0b3VjaGVzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2VkIGJ5IGFuCisJICogZXhwcmVz c2lvbiBpbmRleCAoc2VlIGNhc2UgMSBhYm92ZSkuICBVcGRhdGVzIHRoYXQgbGVhdmUgZXZl cnkKKwkgKiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSB1bmNoYW5nZWQgcmVtYWluIGVs aWdpYmxlLgorCSAqLworCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsCisJ CQkJCVJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OKSkpCisJCXJldHVybiBIRUFQ X1VQREFURV9BTExfSU5ERVhFUzsKKworCS8qCisJICogSWYgZXZlcnkgaW5kZXhlZCBhdHRy aWJ1dGUgY2hhbmdlZCwgYSBIT1Qtc2VsZWN0aXZlIHVwZGF0ZSBjb3VsZCBub3QKKwkgKiBz a2lwIGFueSBpbmRleCAtLSBlYWNoIGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkgYW55d2F5 IC0tIHNvIGl0IHdvdWxkCisJICogcGF5IHRoZSBIT1QvU0lVIGNoYWluLXdhbGsgYW5kIGJp dG1hcC1vdmVybGFwIG92ZXJoZWFkIGZvciBubyBzYXZlZAorCSAqIGluZGV4IG1haW50ZW5h bmNlLiAgRmFsbCBiYWNrIHRvIGEgcGxhaW4gbm9uLUhPVCB1cGRhdGUgaW4gdGhhdCBjYXNl LgorCSAqLworCWlmIChibXNfaXNfc3Vic2V0KGFsbF9pZHhfYXR0cnMsIG1vZGlmaWVkX2lk eF9hdHRycykpCisJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKworCXJldHVy biBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEU7CiB9CiAKIC8qCkBAIC00NDAyLDE1ICs0 NTQ3LDMzIEBAIExvY2tUdXBsZU1vZGUKIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMp CiB7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsKKwlj b25zdCBCaXRtYXBzZXQgKmtleV9hdHRyczsKKworCS8qCisJICogQ29tbW9uIGZhc3QgcGF0 aDogd2hlbiBubyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkIChlLmcuIHBnYmVuY2gtc3R5 bGUKKwkgKiAiVVBEQVRFIHQgU0VUIG5vbl9pZHhfY29sID0gLi4uIiBvciB0aGUgd2lkZV8w ICJVUERBVEUgdCBTRVQgaWQgPSBpZCIKKwkgKiB3b3JrbG9hZCBhZnRlciB0aGUgZXhlY3V0 b3IncyBmYXN0IHBhdGggaW4gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMpLAorCSAqIG1v ZGlmaWVkX2lkeF9hdHRycyBpcyBlbXB0eSBhbmQgYSBrZXkgY29sdW1uIGNhbm5vdCBoYXZl IGNoYW5nZWQuICBTa2lwCisJICogdGhlIHJlbGNhY2hlIGxvb2t1cCBhbmQgcmV0dXJuIHRo ZSB3ZWFrZXIgbG9jayBpbW1lZGlhdGVseS4gIEF0IGhpZ2gKKwkgKiBUUFMgdGhpcyBhdm9p ZHMgYSBwZXItVVBEQVRFIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIGNhbGwgKGFuZCBp dHMKKwkgKiBibXNfY29weSkgb24gdGhlIEtFWSBiaXRtYXAuCisJICovCisJaWYgKGJtc19p c19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4gTG9ja1R1cGxlTm9LZXlF eGNsdXNpdmU7CiAKLQlCaXRtYXBzZXQgICprZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1B UF9LRVkpOworCS8qCisJICogQm9ycm93IHRoZSBjYWNoZWQgYml0bWFwIHJhdGhlciB0aGFu IGNvcHlpbmcgaXQ7IHdlIG9ubHkgdGVzdCBvdmVybGFwCisJICogYW5kIG5ldmVyIG11dGF0 ZSBvciBmcmVlIGtleV9hdHRycy4gIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZSBydW5z CisJICogd2l0aG91dCBidWZmZXIgbG9ja3MgYnV0IHRoZSByZWxjYWNoZSBlbnRyeSBpcyBw aW5uZWQgYnkgdGhlIGNhbGxlcidzCisJICogbG9jayBvbiB0aGUgcmVsYXRpb24sIGFuZCB3 ZSB0b3VjaCBub3RoaW5nIGJldHdlZW4gZmV0Y2ggYW5kIHRoZQorCSAqIGJtc19vdmVybGFw IHRoYXQgY291bGQgdHJpZ2dlciBhIHJlbGNhY2hlIGludmFsaWRhdGlvbi4KKwkgKi8KKwlr ZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwK KwkJCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCiAJaWYgKCFibXNfb3Zl cmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIGtleV9hdHRycykpCiAJCWxvY2ttb2RlID0gTG9j a1R1cGxlTm9LZXlFeGNsdXNpdmU7CiAKLQlibXNfZnJlZShrZXlfYXR0cnMpOwotCiAJcmV0 dXJuIGxvY2ttb2RlOwogfQogCkBAIC00NDk1LDYgKzQ2NTgsNzEgQEAgSGVhcFVwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhl YXBUdXBsZSBuZXd0dXAKIAlyZXR1cm4gbW9kaWZpZWRfaWR4X2F0dHJzOwogfQogCisvKgor ICogaGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlCisgKgorICogUmV0dXJuIGEgbmV3bHkg cGFsbG9jJ2QgY29weSBvZiB0dXAgdGhhdCBjYXJyaWVzIHRoZSBmaXhlZC1zaXplCisgKiBp bmxpbmUtdHJhaWxpbmcgbW9kaWZpZWQtYXR0cmlidXRlcyBiaXRtYXAgKHNlZSBhY2Nlc3Mv aG90X2luZGV4ZWQuaCksCisgKiB3aXRoIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldC4gIFRo ZSBiaXRtYXAgcmVjb3JkcyB0aGUgdXNlciBhdHRyaWJ1dGVzIGluCisgKiBtb2RpZmllZF9p ZHhfYXR0cnMgKHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhpcyBVUERBVEUgY2hhbmdlZCwg dXNpbmcgdGhlCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIG9mZnNl dCBjb252ZW50aW9uKTsgYW4gZW1wdHkgc2V0IHlpZWxkcworICogYW4gYWxsLXplcm8gYml0 bWFwLCB3aGljaCBpcyBjb3JyZWN0IGZvciB0aGUgY2hhaW4tdW5pZm9ybWl0eSBwcm9tb3Rp b24gb2YKKyAqIGEgY2xhc3NpYy1IT1QgdXBkYXRlIG9uIGFuIGFscmVhZHktSE9ULWluZGV4 ZWQgY2hhaW4uCisgKgorICogVGhlIGJpdG1hcCBvY2N1cGllcyB0aGUgZmluYWwgSG90SW5k ZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSBieXRlcyBvZiB0aGUKKyAqIHR1cGxlLCB3aGVyZSBu YXR0cyBpcyB0aGUgdHVwbGUncyBvd24gYXR0cmlidXRlIGNvdW50CisgKiAoSGVhcFR1cGxl SGVhZGVyR2V0TmF0dHMpIC0tIHdoaWNoIGEgcmVhZGVyIHJlY292ZXJzIGZyb20gdGhlIHN0 b3JlZCB0dXBsZSwKKyAqIHNvIHRoZSBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIGV2ZW4gYWZ0 ZXIgdGhlIHJlbGF0aW9uJ3MgbmF0dHMgbGF0ZXIgZ3Jvd3MKKyAqIHZpYSBBREQgQ09MVU1O LiAgRm9yIGEgZnJlc2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHRoaXMgZXF1YWxzIHRoZQor ICogcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzOyB3ZSBhc3NlcnQgdGhhdCB0byBjYXRjaCBh bnkgZnV0dXJlIGRpdmVyZ2VuY2UuCisgKiBUaGUgYml0bWFwIHNpdHMgcGFzdCB0aGUgYXR0 cmlidXRlIGRhdGEsIHNvIGhlYXBfZGVmb3JtX3R1cGxlIG5ldmVyIHNlZXMKKyAqIGl0LiAg VGhlIGNhbGxlciBtdXN0IGhhdmUgcmVzZXJ2ZWQgcm9vbSBmb3IgdGhlIGV4dHJhIGJ5dGVz IGluIHRoZSBwYWdlLWZpdAorICogY2FsY3VsYXRpb24sIGFuZCBtdXN0IGZyZWUgdGhlIHJl dHVybmVkIHR1cGxlLgorICovCitzdGF0aWMgSGVhcFR1cGxlCitoZWFwX2Zvcm1faG90X2lu ZGV4ZWRfdHVwbGUoSGVhcFR1cGxlIHR1cCwgaW50IHJlbG5hdHRzLAorCQkJCQkJCWNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQoreworCWludAkJCW5hdHRzID0gSGVh cFR1cGxlSGVhZGVyR2V0TmF0dHModHVwLT50X2RhdGEpOworCVNpemUJCWJtYnl0ZXM7CisJ U2l6ZQkJbmV3bGVuOworCUhlYXBUdXBsZQluZXd0dXBsZTsKKwl1aW50OAkgICAqYml0bWFw OworCWludAkJCXggPSAtMTsKKworCS8qCisJICogVGhlIGJpdG1hcCBpcyBzaXplZCBhbmQg bG9jYXRlZCBieSB0aGUgdHVwbGUncyBvd24gbmF0dHM7IGEgZnJlc2hseQorCSAqIGZvcm1l ZCBVUERBVEUgdHVwbGUgY2FycmllcyB0aGUgZnVsbCByZWxhdGlvbiBuYXR0cy4gIElmIHRo ZXNlIGV2ZXIKKwkgKiBkaXZlcmdlIHRoZSBwYWdlLWZpdCByZXNlcnZhdGlvbiAobWFkZSB3 aXRoIHJlbG5hdHRzKSBhbmQgdGhlIGFjdHVhbAorCSAqIGJpdG1hcCBzaXplIHdvdWxkIGRp c2FncmVlLgorCSAqLworCUFzc2VydChuYXR0cyA9PSByZWxuYXR0cyk7CisJYm1ieXRlcyA9 IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cyk7CisJbmV3bGVuID0gdHVwLT50X2xlbiAr IGJtYnl0ZXM7CisKKwluZXd0dXBsZSA9IChIZWFwVHVwbGUpIHBhbGxvYzAoSEVBUFRVUExF U0laRSArIG5ld2xlbik7CisJbmV3dHVwbGUtPnRfbGVuID0gbmV3bGVuOworCW5ld3R1cGxl LT50X3NlbGYgPSB0dXAtPnRfc2VsZjsKKwluZXd0dXBsZS0+dF90YWJsZU9pZCA9IHR1cC0+ dF90YWJsZU9pZDsKKwluZXd0dXBsZS0+dF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgKChj aGFyICopIG5ld3R1cGxlICsgSEVBUFRVUExFU0laRSk7CisKKwkvKiBjb3B5IHRoZSBvcmln aW5hbCB0dXBsZTsgdGhlIHRyYWlsaW5nIGJpdG1hcCBieXRlcyBzdGF5IHplcm8gKi8KKwlt ZW1jcHkobmV3dHVwbGUtPnRfZGF0YSwgdHVwLT50X2RhdGEsIHR1cC0+dF9sZW4pOworCW5l d3R1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syIHw9IEhFQVBfSU5ERVhFRF9VUERBVEVEOwor CisJYml0bWFwID0gSG90SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwUlcobmV3dHVwbGUtPnRf ZGF0YSwgbmV3bGVuLCBuYXR0cyk7CisJd2hpbGUgKCh4ID0gYm1zX25leHRfbWVtYmVyKG1v ZGlmaWVkX2lkeF9hdHRycywgeCkpID49IDApCisJeworCQlBdHRyTnVtYmVyCWF0dG51bSA9 IHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCS8qIG9ubHkg dXNlciBhdHRyaWJ1dGVzIGNhbiBiZSBtb2RpZmllZC1hbmQtaW5kZXhlZCAqLworCQlpZiAo YXR0bnVtID49IDEpCisJCQlIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKGJpdG1hcCwgYXR0 bnVtKTsKKwl9CisKKwlyZXR1cm4gbmV3dHVwbGU7Cit9CisKIC8qCiAgKglzaW1wbGVfaGVh cF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCkBAIC00NTA1LDcgKzQ3MzMsNyBAQCBI ZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cAogICovCiB2b2lkCiBzaW1wbGVfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIHR1cCwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykK KwkJCQkgICBib29sICp1cGRhdGVfYWxsX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3Vs dDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwpAQCAtNDUxNCwxMyArNDc0MiwxNCBAQCBzaW1w bGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNs b3Q7CiAJSGVhcFR1cGxlCW9sZHR1cDsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKLQlC aXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnM7Ci0JYm9vbAkJaG90X2FsbG93ZWQsCi0J CQkJc3VtbWFyaXplZF9vbmx5OworCUJpdG1hcHNldCAgKmxvY2FsX21vZGlmaWVkX2lkeF9h dHRyczsKKwlIZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVy OwogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CiAKKwkqdXBkYXRlX2Fs bF9pbmRleGVzID0gZmFsc2U7CisKIAkvKgogCSAqIFRvIHVwZGF0ZSBhIGhlYXAgdHVwbGUg d2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAogCSAqIGF0dHJp YnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0ZXJtaW5l IGlmIGEgSE9UCkBAIC00NTYxLDggKzQ3OTAsNiBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IHR1cAogCQkgKi8KIAkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShSZWxhdGlv bkdldFJlbGlkKHJlbGF0aW9uKSkpOwogCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7 Ci0KIAkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8KIAkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIApAQCAtNDU3NywyNyArNDgw NCwyMCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCUV4ZWNTdG9yZVBpbm5lZEJ1 ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKIAlv bGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJl ZSk7CiAKLQltb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOwotCWxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVy bWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOwotCWhvdF9hbGxv d2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0 dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsKKwlsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMgPSBI ZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOworCWxv Y2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBsb2NhbF9t b2RpZmllZF9pZHhfYXR0cnMpOworCWhvdF9tb2RlID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJs ZShyZWxhdGlvbiwgbG9jYWxfbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAotCXJlc3VsdCA9IGhl YXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1 ZSksIDAsCisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0 Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCSAwIC8qIG9wdGlvbnMgKi8gLAogCQkJ CQkJIEludmFsaWRTbmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJ CQkJICZ0bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7 CisJCQkJCQkgJnRtZmQsIGxvY2ttb2RlLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9tb2RlKTsKIAogCWlmIChzaG91bGRGcmVlKQogCQloZWFwX2ZyZWV0dXBsZShvbGR0dXAp OwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAotCS8qCi0JICog RGVjaWRlIHdoZXRoZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRlZCBmb3IgdGhlIHR1 cGxlCi0JICoKLQkgKiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRl IGFsbCBpbmRleGVzLiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0 aGF0IHdlIHVwZGF0ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1 cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgotCSAqLwot CSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAJc3dpdGNoIChyZXN1bHQpCiAJewogCQlj YXNlIFRNX1NlbGZNb2RpZmllZDoKQEAgLTQ2MDYsMTEgKzQ4MjYsMTQgQEAgc2ltcGxlX2hl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSB0dXAKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fT2s6Ci0JCQkvKiBk b25lIHN1Y2Nlc3NmdWxseSAqLwotCQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCkp Ci0JCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCQkJZWxzZSBpZiAoc3VtbWFyaXpl ZF9vbmx5KQotCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOworCisJCQkv KgorCQkJICogSWYgdGhlIHR1cGxlIHN0b3JlZCBieSBoZWFwX3VwZGF0ZSBpcyBoZWFwLW9u bHkgdGhpcyB3YXMgYSBIT1QKKwkJCSAqIHVwZGF0ZSBhbmQgKHN1YmplY3QgdG8gcGVyLWlu ZGV4IGNoZWNrcykgbm90IGV2ZXJ5IGluZGV4IG5lZWRzCisJCQkgKiBhIG5ldyBlbnRyeTsg b3RoZXJ3aXNlIGV2ZXJ5IGluZGV4IG11c3QgZ2V0IG9uZSBwb2ludGluZyBhdCB0aGUKKwkJ CSAqIG5ldyB0dXBsZSdzIFRJRC4KKwkJCSAqLworCQkJKnVwZGF0ZV9hbGxfaW5kZXhlcyA9 ICFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRNX1Vw ZGF0ZWQ6CkBAIC00NjI1LDYgKzQ4NDgsOCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1 cAogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBoZWFwX3VwZGF0ZSBzdGF0dXM6ICV1 IiwgcmVzdWx0KTsKIAkJCWJyZWFrOwogCX0KKworCWJtc19mcmVlKGxvY2FsX21vZGlmaWVk X2lkeF9hdHRycyk7CiB9CiAKIApAQCAtODE4OSw0MCArODQxNCw0MiBAQCBpbmRleF9kZWxl dGVfY2hlY2tfaHRpZChUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSwKIAlBc3NlcnQoT2Zm c2V0TnVtYmVySXNWYWxpZChpc3RhdHVzLT5pZHhvZmZudW0pKTsKIAogCWlmICh1bmxpa2Vs eShpbmRleHBhZ2Vob2ZmbnVtID4gbWF4b2ZmKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZ19pbnRlcm5h bCgiaGVhcCB0aWQgZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyBwYXN0IGVuZCBv ZiBoZWFwIHBhZ2UgbGluZSBwb2ludGVyIGFycmF5IGF0IG9mZnNldCAldSBvZiBibG9jayAl dSBpbiBpbmRleCBcIiVzXCIiLAotCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJl cihodGlkKSwKLQkJCQkJCQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCSBpc3RhdHVz LT5pZHhvZmZudW0sIGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJCQkJCQkgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmlyZWwpKSkpOworCXsKKwkJLyoKKwkJICogVW5kZXIg SE9ULWluZGV4ZWQgdXBkYXRlcywgYSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gb3V0bGl2ZSBo ZWFwCisJCSAqIHBydW5pbmcvdmFjdXVtIG9mIHRoZSBwYWdlIGl0IHRhcmdldHM7IGlmIHRo ZSB0YXJnZXQgb2Zmc2V0IGlzIHBhc3QKKwkJICogdGhlIGN1cnJlbnQgbWF4LCB0cmVhdCBh cyB2YWN1dW1hYmxlIGluc3RlYWQgb2YgcmFpc2luZyBhbgorCQkgKiBpbmRleC1jb3JydXB0 aW9uIGVycm9yLgorCQkgKi8KKwkJcmV0dXJuOworCX0KIAogCWlpZCA9IFBhZ2VHZXRJdGVt SWQocGFnZSwgaW5kZXhwYWdlaG9mZm51bSk7CiAJaWYgKHVubGlrZWx5KCFJdGVtSWRJc1Vz ZWQoaWlkKSkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRF WF9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5k ZXggdHVwbGUgKCV1LCV1KSBwb2ludHMgdG8gdW51c2VkIGhlYXAgcGFnZSBpdGVtIGF0IG9m ZnNldCAldSBvZiBibG9jayAldSBpbiBpbmRleCBcIiVzXCIiLAotCQkJCQkJCQkgSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJCQkJCQkJIGluZGV4cGFnZWhvZmZudW0s Ci0JCQkJCQkJCSBpc3RhdHVzLT5pZHhvZmZudW0sIGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJ CQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmlyZWwpKSkpOwotCi0J aWYgKEl0ZW1JZEhhc1N0b3JhZ2UoaWlkKSkKIAl7Ci0JCUhlYXBUdXBsZUhlYWRlciBodHVw OwotCi0JCUFzc2VydChJdGVtSWRJc05vcm1hbChpaWQpKTsKLQkJaHR1cCA9IChIZWFwVHVw bGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGlpZCk7Ci0KLQkJaWYgKHVubGlrZWx5KEhl YXBUdXBsZUhlYWRlcklzSGVhcE9ubHkoaHR1cCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCQkgZXJybXNnX2lu dGVybmFsKCJoZWFwIHRpZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIGhl YXAtb25seSB0dXBsZSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wi IiwKLQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGh0aWQpLAotCQkJCQkJ CQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBk ZWxzdGF0ZS0+aWJsa251bSwKLQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShk ZWxzdGF0ZS0+aXJlbCkpKSk7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0 ZXMsIGEgc3RhbGUgYnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBh dCBhbiBMUCB0aGF0IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkK KwkJICogcHJ1bmluZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVh dCB0aGF0IGFzICJ0aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRv d25zdHJlYW0gY2hhaW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNp b24pIHJhdGhlciB0aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQly ZXR1cm47CiAJfQorCisJLyoKKwkgKiBBIHJlZGlyZWN0IHRhcmdldCAoTFBfUkVESVJFQ1Qp IGlzIGEgdmFsaWQgY2hhaW4gcm9vdDogYW4gaW5kZXggZW50cnkKKwkgKiBwb2ludGluZyBh dCBpdCBpcyBsZWdpdGltYXRlIGFuZCB0aGUgY2FsbGVyJ3MgY2hhaW4gd2FsayBkZWNpZGVz CisJICogZGVsZXRhYmlsaXR5LiAgT25seSBnZW51aW5lbHkgbm9ybWFsIHR1cGxlcyBhcmUg aW5zcGVjdGVkIGJlbG93LgorCSAqCisJICogQSBub3JtYWwgdHVwbGUgdGhhdCBpcyBoZWFw LW9ubHkgKEhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkpIGlzIGFsc28KKwkgKiB0b2xlcmF0 ZWQgd2l0aG91dCBmdXJ0aGVyIGNoZWNrczogYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRz IGEgZnJlc2gKKwkgKiBpbmRleCBlbnRyeSB0aGF0IHBvaW50cyBkaXJlY3RseSBhdCBzdWNo IGEgdHVwbGUgKGl0IGNhcnJpZXMKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCksIGFuZCBh IHN0YWxlIGJ0cmVlIGVudHJ5IGNhbiBsaWtld2lzZSBhcnJpdmUgYXQKKwkgKiBhIGhlYXAt b25seSB0dXBsZSB3aGVuIGl0cyBjaGFpbiByb290IHdhcyBwcnVuZWQgb3V0LiAgQm90aCBh cmUgbGVnYWwKKwkgKiB1bmRlciBIT1QtaW5kZXhlZDsgdGhlIGNhbGxlcidzIGNoYWluIHdh bGsgZGVjaWRlcyB3aGV0aGVyIHRoZSBlbnRyeQorCSAqIGlzIGRlbGV0YWJsZSwgc28gdGhl cmUgaXMgbm90aGluZyB0byBjaGVjayBoZXJlIGZvciB0aGF0IGNhc2UuCisJICovCiB9CiAK IC8qCkBAIC04NDM2LDcgKzg2NjMsNyBAQCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVs YXRpb24gcmVsLCBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAogCQkJLyogQXJlIGFu eSB0dXBsZXMgZnJvbSB0aGlzIEhPVCBjaGFpbiBub24tdmFjdXVtYWJsZT8gKi8KIAkJCWlm IChoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKCZ0bXAsIHJlbCwgYnVmLCAmU25hcHNob3ROb25W YWN1dW1hYmxlLAotCQkJCQkJCQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCisJCQkJ CQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMKSkKIAkJ CQljb250aW51ZTsJCS8qIGNhbid0IGRlbGV0ZSBlbnRyeSAqLwogCiAJCQkvKiBDYWxsZXIg d2lsbCBkZWxldGUsIHNpbmNlIHdob2xlIEhPVCBjaGFpbiBpcyB2YWN1dW1hYmxlICovCkBA IC05MDE4LDkgKzkyNDUsMjAgQEAgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1 ZmZlciBvbGRidWYsCiAJCX0KIAl9CiAKLQkvKiBJZiBuZXcgdHVwbGUgaXMgdGhlIHNpbmds ZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZS4uLiAqLworCS8qCisJICogSWYgbmV3IHR1cGxl IGlzIHRoZSBzaW5nbGUgYW5kIGZpcnN0IHR1cGxlIG9uIHBhZ2UsIHJlcGxheSBjYW4gcmVp bml0CisJICogdGhlIHBhZ2UgZnJvbSBzY3JhdGNoLgorCSAqCisJICogQWxzbyByZXF1aXJl IHRoYXQgdGhlIHBhZ2UncyB0dXBsZSBhcmVhIGNvbnRhaW5zIG5vdGhpbmcgb3RoZXIgdGhh biB0aGlzCisJICogdHVwbGUuICBTZWUgaGVhcF9pbnNlcnQgZm9yIHdoeSB0aGlzIG1hdHRl cnMgd2hlbiB2YWN1dW0gaGFzIGxlZnQgb3JwaGFuCisJICogdHVwbGUgYnl0ZXMgYmVoaW5k IGFuIExQX1VOVVNFRCBzbG90LgorCSAqCisJICogTk9URTogdGhpcyBtdXN0IG1pcnJvciB0 aGUgc2FtZSBsb2dpYyBpbiBoZWFwX2luc2VydCgpCisJICovCiAJaWYgKEl0ZW1Qb2ludGVy R2V0T2Zmc2V0TnVtYmVyKCYobmV3dHVwLT50X3NlbGYpKSA9PSBGaXJzdE9mZnNldE51bWJl ciAmJgotCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVt YmVyKQorCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCisJCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3VwcGVyID09CisJCSgoUGFnZUhl YWRlcikgcGFnZSktPnBkX3NwZWNpYWwgLSBNQVhBTElHTihuZXd0dXAtPnRfbGVuKSkKIAl7 CiAJCWluZm8gfD0gWExPR19IRUFQX0lOSVRfUEFHRTsKIAkJaW5pdCA9IHRydWU7CkBAIC05 MDgyLDYgKzkzMjAsNyBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwgQnVmZmVy IG9sZGJ1ZiwKIAkgKiBUaGUgJ2RhdGEnIGRvZXNuJ3QgaW5jbHVkZSB0aGUgY29tbW9uIHBy ZWZpeCBvciBzdWZmaXguCiAJICovCiAJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmeGxoZHIs IFNpemVPZkhlYXBIZWFkZXIpOworCiAJaWYgKHByZWZpeGxlbiA9PSAwKQogCXsKIAkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZTZjYjgxOTdkZWMuLjg4MGEyM2JiYTI5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTIyNCw0OCArMjI0LDM3IEBA IGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIg b3B0aW9ucywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ss CiAJCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLAotCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJCUJpdG1hcHNldCAqKm1v ZGlmaWVkX2F0dHJzKQogewogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBs ZQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1ZSwgJnNob3VsZEZy ZWUpOwotCWJvb2wJCWhvdF9hbGxvd2VkOwotCWJvb2wJCXN1bW1hcml6ZWRfb25seTsKKwlI ZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2RlOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKIAlB c3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKIAotCWhvdF9hbGxvd2VkID0gSGVh cFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzLCAmc3Vt bWFyaXplZF9vbmx5KTsKLQkqbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21v ZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBk YXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCAqbW9kaWZpZWRfYXR0cnMpOworCSpsb2NrbW9k ZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgKm1vZGlmaWVkX2F0 dHJzKTsKIAogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90 LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+ dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhlYXBfdXBk YXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLCBjcm9zc2NoZWNrLCB3 YWl0LAotCQkJCQkJIHRtZmQsICpsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3Rf YWxsb3dlZCk7CisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxl LCBjaWQsIG9wdGlvbnMsCisJCQkJCQkgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZk LCAqbG9ja21vZGUsICptb2RpZmllZF9hdHRycywgaG90X21vZGUpOwogCUl0ZW1Qb2ludGVy Q29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKLQkgKiBEZWNp ZGUgd2hldGhlciBuZXcgaW5kZXggZW50cmllcyBhcmUgbmVlZGVkIGZvciB0aGUgdHVwbGUK LQkgKgotCSAqIE5vdGU6IGhlYXBfdXBkYXRlIHJldHVybnMgdGhlIHRpZCAobG9jYXRpb24p IG9mIHRoZSBuZXcgdHVwbGUgaW4gdGhlCi0JICogdF9zZWxmIGZpZWxkLgotCSAqCi0JICog SWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4g SWYgdGhlIHVwZGF0ZSBpcwotCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVk IHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCi0JICogdXBkYXRlIG9ubHkgc3Vt bWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKiBUZWxsIHRoZSBjYWxsZXIg d2hldGhlciBldmVyeSBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeS4gIElmIHRoZSBuZXcKKwkg KiB0dXBsZSBpcyBub3QgaGVhcC1vbmx5IHRoZSB1cGRhdGUgd2FzIG5vdCBIT1Q6IGl0IGlz IGFuIGluZGVwZW5kZW50CisJICogdmVyc2lvbiByZXF1aXJpbmcgYSBmcmVzaCBlbnRyeSBp biBldmVyeSBpbmRleCwgd2hpY2ggd2Ugc2lnbmFsIGJ5CisJICogYWRkaW5nIHRoZSB3aG9s ZS1yb3cgYXR0cmlidXRlIHRvICptb2RpZmllZF9hdHRycy4gIE90aGVyd2lzZSAoY2xhc3Np YworCSAqIEhPVCBvciBIT1QtaW5kZXhlZCkgdGhlIGNhbGxlciBjb25zdWx0cyB0aGUgcGVy LWluZGV4IGF0dHJpYnV0ZXMuCiAJICovCi0JKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsK LQlpZiAocmVzdWx0ID09IFRNX09rKQotCXsKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHko dHVwbGUpKQotCQl7Ci0JCQlpZiAoc3VtbWFyaXplZF9vbmx5KQotCQkJCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX1N1bW1hcml6aW5nOwotCQl9Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhl cyA9IFRVX0FsbDsKLQl9CisJaWYgKHJlc3VsdCA9PSBUTV9PayAmJiAhSGVhcFR1cGxlSXNI ZWFwT25seSh0dXBsZSkpCisJCSptb2RpZmllZF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKCpt b2RpZmllZF9hdHRycywKKwkJCQkJCQkJCQkgVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMp OwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCXBmcmVlKHR1cGxlKTsKQEAgLTczMSw5ICs3MjAs MzMgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVh cCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90KGluZGV4 U2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCQkJCWJyZWFrOwogCi0JCQkv KiBTaW5jZSB3ZSB1c2VkIG5vIHNjYW4ga2V5cywgc2hvdWxkIG5ldmVyIG5lZWQgdG8gcmVj aGVjayAqLworCQkJLyoKKwkJCSAqIENMVVNURVIgdXNlcyBhIG5vLWtleSBmdWxsLWluZGV4 IHNjYW47IGl0IGNhbm5vdCBkbyBhbnkKKwkJCSAqIHR1cGxlLWxldmVsIGZpbHRlcmluZyBp dHNlbGYuICBUaGUgSE9ULWluZGV4ZWQgcmVhZGVyIHBhdGgKKwkJCSAqIHJvdXRpbmVseSBz ZXRzIHhzX3JlY2hlY2sgd2hlbiB3YWxraW5nIGNoYWluIGVudHJpZXMgd2hvc2UKKwkJCSAq IGluZGV4IGtleSBtYXkgYmUgc3RhbGUgcmVsYXRpdmUgdG8gdGhlIHZpc2libGUgaGVhcCB0 dXBsZS4KKwkJCSAqIFRob3NlIGVudHJpZXMgY2F1c2UgdGhlIHNhbWUgbGl2ZSB0dXBsZSB0 byBiZSB2aXNpdGVkIHZpYSB0aGUKKwkJCSAqIGZyZXNoIGhvdC1pbmRleGVkLWluc2VydGVk IGVudHJ5IHRvbzsgaW5jbHVkaW5nIHRoZW0gd291bGQKKwkJCSAqIGR1cGxpY2F0ZSByb3dz IGluIHRoZSByZXdyaXR0ZW4gaGVhcC4gIFNraXAgdGhlbSBoZXJlIC0tIHRoZQorCQkJICog dHVwbGUgaXMgcmVhY2hhYmxlIHRocm91Z2ggaXRzIGNhbm9uaWNhbCBpbmRleCBlbnRyeS4K KwkJCSAqCisJCQkgKiBJZiB4c19yZWNoZWNrIGlzIHNldCB3aXRoIGFjdHVhbCBzY2FuIGtl eXMsIHRoYXQncyBhIHJlYWwgbG9zc3kKKwkJCSAqIGluZGV4IHNjZW5hcmlvIENMVVNURVIg Y2FuJ3QgaGFuZGxlIChoaXN0b3JpY2FsIHJlc3RyaWN0aW9uKS4KKwkJCSAqLwogCQkJaWYg KGluZGV4U2Nhbi0+eHNfcmVjaGVjaykKLQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RFUiBkb2Vz IG5vdCBzdXBwb3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCXsKKwkJCQlpZiAo aW5kZXhTY2FuLT5udW1iZXJPZktleXMgPiAwKQorCQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RF UiBkb2VzIG5vdCBzdXBwb3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCQljb250 aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFNhbWUgcmVhc29uaW5nIGFzIGZvciB4c19y ZWNoZWNrOiBhIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5CisJCQkgKiB3b3VsZCByZS1lbWl0 IGFuIGFscmVhZHktdmlzaXRlZCB0dXBsZSB2aWEgaXRzIGNhbm9uaWNhbCBmcmVzaAorCQkJ ICogZW50cnkuICBTa2lwLgorCQkJICovCisJCQlpZiAoaW5kZXhTY2FuLT54c19ob3RfaW5k ZXhlZF9zdGFsZSkKKwkJCQljb250aW51ZTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTE2NDcs MzAgKzE2NjAsNDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCiAJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJl cigmaGVhcFR1cGxlLT50X3NlbGYpOwogCi0JCQkvKgotCQkJICogSWYgYSBIT1QgdHVwbGUg cG9pbnRzIHRvIGEgcm9vdCB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQsCi0JCQkgKiBvYnRh aW4gcm9vdCBpdGVtcyBhZnJlc2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQg YXMKLQkJCSAqIGNvcnJ1cHRpb24uCi0JCQkgKi8KLQkJCWlmIChyb290X29mZnNldHNbb2Zm bnVtIC0gMV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikKKwkJCWlmICgoaGVhcFR1cGxlLT50 X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCiAJCQl7 Ci0JCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0J CQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJ CWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQkJTG9ja0J1 ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkvKgorCQkJ CSAqIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXggVXBkYXRlKSBsaXZlIHR1cGxlOiBp bmRleCBpdAorCQkJCSAqIHVuZGVyIGl0cyBPV04gVElELCBub3QgdGhlIGNoYWluIHJvb3Qu ICBJdHMgaW5kZXhlZCB2YWx1ZXMKKwkJCQkgKiBkaWZmZXIgZnJvbSBlYXJsaWVyIGNoYWlu IG1lbWJlcnMnLCBhbmQgdGhlIGJpdG1hcC1vdmVybGFwCisJCQkJICogcmVhZCBwYXRoIGtl ZXBzIGFuIGVudHJ5IG9ubHkgd2hlbiBubyBob3AgYWZ0ZXIgdGhlIGVudHJ5J3MKKwkJCQkg KiB0YXJnZXQgY2hhbmdlZCB0aGUgaW5kZXgncyBhdHRyaWJ1dGVzLiAgVGhhdCBob2xkcyBm b3IgYW4KKwkJCQkgKiBlbnRyeSBwb2ludGluZyBkaXJlY3RseSBhdCB0aGUgbGl2ZSB0dXBs ZSAobm8gbGF0ZXIgaG9wKTsKKwkJCQkgKiBhbiBlbnRyeSBwb2ludGVkIGF0IHRoZSByb290 IHdvdWxkIGJlIGRyb3BwZWQgYXMgc3RhbGUsCisJCQkJICogbG9zaW5nIHRoZSByb3cuCisJ CQkJICovCisJCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051 bWJlcigmaGVhcFR1cGxlLT50X3NlbGYpLAorCQkJCQkJCSAgIG9mZm51bSk7CiAJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiBhIEhPVCB0dXBsZSBwb2ludHMgdG8g YSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKKwkJCQkgKiBvYnRhaW4gcm9vdCBp dGVtcyBhZnJlc2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQKKwkJCQkgKiBh cyBjb3JydXB0aW9uLgorCQkJCSAqLworCQkJCWlmIChyb290X29mZnNldHNbb2ZmbnVtIC0g MV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikKKwkJCQl7CisJCQkJCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKIAotCQkJaWYgKCFPZmZzZXROdW1iZXJJ c1ZhbGlkKHJvb3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSkpCi0JCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCQkJIGVycm1z Z19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxlIGZvciBoZWFwLW9ubHkg dHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJCQkJCSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkJCQkJIG9m Zm51bSwKLQkJCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9u KSkpKTsKKwkJCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hB UkUpOworCQkJCQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwor CQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwor CQkJCX0KIAotCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051 bWJlcigmaGVhcFR1cGxlLT50X3NlbGYpLAotCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51 bSAtIDFdKTsKKwkJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZzZXRzW29m Zm51bSAtIDFdKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQg dG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGlu IHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJCQkJCSBvZmZudW0sCisJCQkJCQkJCQkJ CSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOworCisJCQkJSXRl bVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmaGVhcFR1cGxl LT50X3NlbGYpLAorCQkJCQkJCSAgIHJvb3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSk7CisJCQl9 CiAKIAkJCS8qIENhbGwgdGhlIEFNJ3MgY2FsbGJhY2sgcm91dGluZSB0byBwcm9jZXNzIHRo ZSB0dXBsZSAqLwogCQkJY2FsbGJhY2soaW5kZXhSZWxhdGlvbiwgJnRpZCwgdmFsdWVzLCBp c251bGwsIHR1cGxlSXNBbGl2ZSwKQEAgLTE4MzUsNyArMTg2Niw4IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJcm9vdFR1cGxlID0g KmhlYXBjdXJzb3I7CiAJCXJvb3Rfb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1i ZXIoaGVhcGN1cnNvcik7CiAKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxl KSkKKwkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJgorCQkJKGhlYXBU dXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSA9PSAw KQogCQl7CiAJCQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFd OwogCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKQEAgLTI1OTIs NiArMjYyNCw3IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2Nh biwKIAkJICogb2Zmc2V0LgogCQkgKi8KIAkJaW50CQkJY3Vyc2xvdDsKKwkJYm9vbAkJcGFn ZV9oYWRfaG90X2luZGV4ZWQgPSBmYWxzZTsKIAogCQkvKiBXZSBtdXN0IGhhdmUgZXh0cmFj dGVkIHRoZSB0dXBsZSBvZmZzZXRzIGJ5IG5vdyAqLwogCQlBc3NlcnQobm9mZnNldHMgPiAt MSk7CkBAIC0yNjAxLDExICsyNjM0LDYzIEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRh YmxlU2NhbkRlc2Mgc2NhbiwKIAkJCU9mZnNldE51bWJlciBvZmZudW0gPSBvZmZzZXRzW2N1 cnNsb3RdOwogCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKIAkJCUhlYXBUdXBsZURhdGEgaGVh cFR1cGxlOworCQkJYm9vbAkJaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKIAogCQkJSXRl bVBvaW50ZXJTZXQoJnRpZCwgYmxvY2ssIG9mZm51bSk7CiAJCQlpZiAoaGVhcF9ob3Rfc2Vh cmNoX2J1ZmZlcigmdGlkLCBzY2FuLT5yc19yZCwgYnVmZmVyLCBzbmFwc2hvdCwKLQkJCQkJ CQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUpKQotCQkJCWhzY2FuLT5yc192aXN0dXBs ZXNbbnR1cCsrXSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0aWQpOworCQkJCQkJ CQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSwKKwkJCQkJCQkJCSAgICZob3RfaW5kZXhl ZF9zdGFsZSwgTlVMTCwgTlVMTCkpCisJCQl7CisJCQkJT2Zmc2V0TnVtYmVyIHJlc29sdmVk ID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJYm9vbAkJYWxyZWFk eV9oYXZlID0gZmFsc2U7CisKKwkJCQkvKgorCQkJCSAqIEEgYml0bWFwIGhlYXAgc2NhbiBj YW5ub3QgYXR0cmlidXRlIGEgVElEIHRvIG9uZSBpbmRleCwgc28KKwkJCQkgKiBhbnkgY3Jv c3NlZCBpbi1jaGFpbiBIT1QvU0lVIGhvcCBtZWFucyB0aGUgYXJyaXZpbmcgZW50cnkKKwkJ CQkgKiBtYXkgYmUgc3RhbGU7IHJlY2hlY2svZGVkdXAgY29uc2VydmF0aXZlbHkuCisJCQkJ ICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQlwYWdlX2hhZF9ob3RfaW5k ZXhlZCA9IHRydWU7CisKKwkJCQkvKgorCQkJCSAqIFdpdGggSE9ULWluZGV4ZWQgdXBkYXRl cywgbW9yZSB0aGFuIG9uZSBiaXRtYXAgZW50cnkgb24gdGhlCisJCQkJICogc2FtZSBibG9j ayBjYW4gY2hhaW4tcmVzb2x2ZSB0byB0aGUgc2FtZSBsaXZlIHR1cGxlIChhCisJCQkJICog c3RhbGUgb2xkLWtleSBlbnRyeSBwbHVzIHRoZSBmcmVzaCBuZXcta2V5IGVudHJ5LCBvcgor CQkJCSAqIG11bHRpcGxlIHN0YWxlIGVudHJpZXMgZnJvbSBzdWNjZXNzaXZlIGhvdC1pbmRl eGVkCisJCQkJICogdXBkYXRlcykuICBPbmNlIHdlJ3ZlIHNlZW4gYW55IGhvdC1pbmRleGVk IGhvcCBvbiB0aGlzCisJCQkJICogYmxvY2sgZGVkdXAgaW5saW5lIHNvIHVwcGVyIG5vZGVz IChlLmcuLCBNRVJHRSkgZG9uJ3Qgc2VlCisJCQkJICogdGhlIHNhbWUgcm93IHR3aWNlLiAg UHJlc2VydmUgb3JpZ2luYWwgaW5zZXJ0aW9uIG9yZGVyOgorCQkJCSAqIE1FUkdFJ3MgUkVU VVJOSU5HIG9yZGVyaW5nIGFuZCB0ZXN0IGhhcm5lc3Mgc3RhYmlsaXR5IGJvdGgKKwkJCQkg KiBkZXBlbmQgb24gaXQuICBJbiB0aGUgYWJzZW5jZSBvZiBob3QtaW5kZXhlZCBvbiB0aGUg cGFnZSB3ZQorCQkJCSAqIHNraXAgdGhlIGxpbmVhciBzY2FuIGVudGlyZWx5IC0tIHRoZSBU Qk0ncyBUSURzIGFyZSBhbHJlYWR5CisJCQkJICogZGlzdGluY3QgYnkgY29uc3RydWN0aW9u LgorCQkJCSAqLworCQkJCWlmIChwYWdlX2hhZF9ob3RfaW5kZXhlZCkKKwkJCQl7CisJCQkJ CWZvciAoaW50IGogPSAwOyBqIDwgbnR1cDsgaisrKQorCQkJCQl7CisJCQkJCQlpZiAoaHNj YW4tPnJzX3Zpc3R1cGxlc1tqXSA9PSByZXNvbHZlZCkKKwkJCQkJCXsKKwkJCQkJCQlhbHJl YWR5X2hhdmUgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJ fQorCisJCQkJaWYgKCFhbHJlYWR5X2hhdmUpCisJCQkJCWhzY2FuLT5yc192aXN0dXBsZXNb bnR1cCsrXSA9IHJlc29sdmVkOworCisJCQkJLyoKKwkJCQkgKiBJZiB3ZSByZWFjaGVkIHRo ZSB2aXNpYmxlIHR1cGxlIHRocm91Z2ggYSBIT1QtaW5kZXhlZAorCQkJCSAqIChob3QtaW5k ZXhlZCkgaG9wLCB0aGUgYml0bWFwIGluZGV4IGVudHJ5IHRoYXQgcG9pbnRlZCB1cworCQkJ CSAqIGF0IHRoZSBjaGFpbiByb290IG1heSBkZXNjcmliZSBrZXkgdmFsdWVzIHRoZSB2aXNp YmxlIHR1cGxlCisJCQkJICogbm8gbG9uZ2VyIGhhcy4gIEZvcmNlIEJpdG1hcEhlYXBTY2Fu IHRvIHJ1biBpdHMgcmVjaGVjaworCQkJCSAqIHF1YWwgYWdhaW5zdCB0aGVzZSB0dXBsZXMg ZXZlbiBpZiB0aGUgYml0bWFwIHBhZ2Ugd2FzCisJCQkJICogb3RoZXJ3aXNlIGV4YWN0Lgor CQkJCSAqLworCQkJCWlmIChob3RfaW5kZXhlZF9zdGFsZSkKKwkJCQkJKnJlY2hlY2sgPSB0 cnVlOworCQkJfQogCQl9CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9pbmRleHNjYW4uYwppbmRleCAzM2QxNGYxZGU3ZC4uODJhM2ZiMmIzMjQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMKQEAgLTE1 LDYgKzE1LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNz L2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3RfaW5kZXhlZC5oIgogI2luY2x1ZGUg ImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKIApA QCAtMzUsNiArMzYsMTQgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJl bCwgdWludDMyIGZsYWdzKQogCWhzY2FuLT54c19ibGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7 CiAJaHNjYW4tPnhzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAorCS8qCisJICogU2Ny YXRjaCBzcGFjZSBmb3IgdGhlIHVuaW9uIG9mIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgdGhh dCBhIEhPVC9TSVUKKwkgKiBjaGFpbiB3YWxrIGNyb3NzZXMsIHNpemVkIGZvciB0aGlzIHJl bGF0aW9uJ3MgY29sdW1uIGNvdW50LiAgVGhyZWFkZWQKKwkgKiBiYWNrIG91dCB0aHJvdWdo IHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQgZm9yIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIuCisJ ICovCisJaHNjYW4tPnhzX2Jhc2UueHNfaG90X2luZGV4ZWRfY3Jvc3NlZCA9CisJCXBhbGxv YzAoSG90SW5kZXhlZEJpdG1hcEJ5dGVzKFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVz KHJlbCkpKTsKKwogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CiAKQEAgLTYzLDYgKzcy LDkgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2VuZChJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu KQogCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2FuLT54c192bWJ1ZmZlcikpCiAJCVJlbGVhc2VC dWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAorCWlmIChoc2Nhbi0+eHNfYmFzZS54c19o b3RfaW5kZXhlZF9jcm9zc2VkICE9IE5VTEwpCisJCXBmcmVlKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQpOworCiAJcGZyZWUoaHNjYW4pOwogfQogCkBAIC04Mywx MyArOTUsMjQgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2VuZChJbmRleEZldGNoVGFibGVEYXRh ICpzY2FuKQogICogZ2xvYmFsbHkgZGVhZDsgKmFsbF9kZWFkIGlzIHNldCB0cnVlIGlmIGFs bCBtZW1iZXJzIG9mIHRoZSBIT1QgY2hhaW4KICAqIGFyZSB2YWN1dW1hYmxlLCBmYWxzZSBp ZiBub3QuCiAgKgorICogSWYgaG90X2luZGV4ZWRfcmVjaGVjayBpcyBub3QgTlVMTCwgKmhv dF9pbmRleGVkX3JlY2hlY2sgaXMgc2V0IHRydWUgaWZmIHRoZQorICogd2FsayBjcm9zc2Vk IGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpIGhvcCBhZnRlciB0aGUgZW50 cnkgdHVwbGUKKyAqIG9uIHRoZSB3YXkgdG8gdGhlIHJldHVybmVkIHR1cGxlIC0tIGkuZS4g dGhlIGFycml2aW5nIGluZGV4IGVudHJ5J3Mgc3RvcmVkCisgKiBrZXkgbWF5IG5vIGxvbmdl ciBtYXRjaCB0aGUgbGl2ZSB0dXBsZSwgc28gdGhlIGNhbGxlciBtdXN0IHJlY2hlY2sgaXQg KHZpYQorICogYSBsZWFmLWtleSBjb21wYXJpc29uIG9yIGEgcXVhbCByZWNoZWNrKS4gIFRo ZSBlbnRyeSB0dXBsZSdzIG93biBwcm9kdWNpbmcKKyAqIGhvcCBpcyBleGNsdWRlZCwgc28g YSBmcmVzaCBlbnRyeSBwb2ludGluZyBkaXJlY3RseSBhdCBpdHMgdHVwbGUgaXMgbm90Cisg KiBmbGFnZ2VkLiAgV2hlbiBubyBzdWNoIGhvcCB3YXMgY3Jvc3NlZCwgKmhvdF9pbmRleGVk X3JlY2hlY2sgaXMgbGVmdCBmYWxzZS4KKyAqCiAgKiBVbmxpa2UgaGVhcF9mZXRjaCwgdGhl IGNhbGxlciBtdXN0IGFscmVhZHkgaGF2ZSBwaW4gYW5kIChhdCBsZWFzdCkgc2hhcmUKICAq IGxvY2sgb24gdGhlIGJ1ZmZlcjsgaXQgaXMgc3RpbGwgcGlubmVkL2xvY2tlZCBhdCBleGl0 LgogICovCiBib29sCiBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2ludGVyIHRpZCwg UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCSAgIFNuYXBzaG90IHNu YXBzaG90LCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCQkgICBib29sICphbGxfZGVhZCwg Ym9vbCBmaXJzdF9jYWxsKQorCQkJCQkgICBib29sICphbGxfZGVhZCwgYm9vbCBmaXJzdF9j YWxsLAorCQkJCQkgICBib29sICpob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkgICB1aW50 OCAqY3Jvc3NlZF9iaXRtYXAsCisJCQkJCSAgIGJvb2wgKnByZWZpeF9hbGxfZGVhZCkKIHsK IAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQg cHJldl94bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CkBAIC05OCwxMiArMTIxLDMwIEBA IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlib29sCQlhdF9jaGFpbl9zdGFydDsKIAlib29sCQl2 YWxpZDsKIAlib29sCQlza2lwOworCWJvb2wJCXByZWZpeF9kZWFkOwogCUdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0aW9uR2V0TnVt YmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKTsKKworCS8qIE9ubHkgdHJhY2sgcHJlZml4X2Rl YWQgd2hlbiB0aGUgY2FsbGVyIGFjdHVhbGx5IHdhbnRzIGl0LiAqLworCXByZWZpeF9kZWFk ID0gKHByZWZpeF9hbGxfZGVhZCAhPSBOVUxMKTsKIAogCS8qIElmIHRoaXMgaXMgbm90IHRo ZSBmaXJzdCBjYWxsLCBwcmV2aW91cyBjYWxsIHJldHVybmVkIGEgKGxpdmUhKSB0dXBsZSAq LwogCWlmIChhbGxfZGVhZCkKIAkJKmFsbF9kZWFkID0gZmlyc3RfY2FsbDsKIAorCS8qCisJ ICogT24gdGhlIGZpcnN0IGNhbGwsIGNsZWFyIHRoZSByZWNoZWNrIGZsYWcgYW5kIHRoZSBj cm9zc2VkLWF0dHJzIHVuaW9uLgorCSAqIE9uIHN1YnNlcXVlbnQgY2FsbHMgKHNhbWUgY2hh aW4gY29udGludWluZykga2VlcCB3aGF0ZXZlciBhbiBlYXJsaWVyCisJICogaG9wIGFscmVh ZHkgYWNjdW11bGF0ZWQuCisJICovCisJaWYgKGZpcnN0X2NhbGwpCisJeworCQlpZiAoaG90 X2luZGV4ZWRfcmVjaGVjaykKKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFsc2U7CisJ CWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCW1lbXNldChjcm9zc2VkX2JpdG1hcCwgMCwgSG90 SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJfQorCiAJYmxrbm8gPSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CiAJb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZz ZXROdW1iZXIodGlkKTsKIAlhdF9jaGFpbl9zdGFydCA9IGZpcnN0X2NhbGw7CkBAIC0xMzAs NyArMTcxLDE3IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3VsZCBvbmx5 IHNlZSBhIHJlZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRlbUlkSXNS ZWRpcmVjdGVkKGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBGb2xsb3cg dGhlIHJlZGlyZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGlyZWN0LiAg QSBjb2xsYXBzZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMgYSBydW4g b2YgZm9yd2FyZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdzCisJCQkJ ICogbW9kaWZpZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxpdmUgdHVw bGU7CisJCQkJICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJlciBvbmx5 IHdoZW4gaXRzCisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIHN1cnZp dmluZyBsYXRlciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0aGUgc3R1 YnMgYW5kIGxpdmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93IGNvbnRy aWJ1dGUgdGhlIGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJCSAqIGhv cCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0aGUKKwkJ CQkgKiBvdmVybGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNzIGxheWVy LgorCQkJCSAqLwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKIAkJCQlh dF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEwICsyMDIs MTExIEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJSXRlbVBvaW50ZXJTZXQoJmhlYXBUdXBs ZS0+dF9zZWxmLCBibGtubywgb2ZmbnVtKTsKIAogCQkvKgotCQkgKiBTaG91bGRuJ3Qgc2Vl IGEgSEVBUF9PTkxZIHR1cGxlIGF0IGNoYWluIHN0YXJ0LgorCQkgKiBBIGNvbGxhcHNlLXN1 cnZpdm9yIHN0dWIgaXMgYW4gTFBfTk9STUFMIGl0ZW0gYnV0IG5vdCBhIHJlYWwgdHVwbGU6 CisJCSAqIGl0IGlzIGEgZnJlZXplLXNhZmUgZm9yd2FyZGluZyBub2RlIGNhcnJ5aW5nIHRo ZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdtZW50IGl0 IHJlcHJlc2VudHMuICBUcmVhdCBpdCBsaWtlIGEKKwkJICogY3Jvc3NlZCBIT1QvU0lVIGhv cCAtLSBhcm0gdGhlIHJlY2hlY2sgYW5kIE9SIGl0cyBiaXRtYXAgaW50byB0aGUKKwkJICog Y3Jvc3NlZCB1bmlvbiAodW5sZXNzIHdlIGFycml2ZWQgZGlyZWN0bHkgYXQgaXQsIGluIHdo aWNoIGNhc2UgdGhlCisJCSAqIGFycml2aW5nIGVudHJ5IGFscmVhZHkgcmVmbGVjdHMgdGhp cyBzZWdtZW50J3MgdmFsdWUpIC0tIHRoZW4KKwkJICogZm9sbG93IGl0cyBmb3J3YXJkIGxp bmsuICBBIHN0dWIgaXMgbmV2ZXIgdmlzaWJsZSBhbmQgbmV2ZXIKKwkJICogcmV0dXJuZWQs IGFuZCBpdHMgZm9yd2FyZCBsaW5rIGlzIGEgbG9naWNhbCwgbm90IHhpZC1jb250aW51b3Vz LAorCQkgKiBlZGdlLCBzbyByZXNldCBwcmV2X3htYXggdG8gc2tpcCB0aGUgY2hhaW4taW50 ZWdyaXR5IGNoZWNrIG9uIHRoZQorCQkgKiBuZXh0IG1lbWJlci4KKwkJICovCisJCWlmIChI b3RJbmRleGVkSGVhZGVySXNTdHViKGhlYXBUdXBsZS0+dF9kYXRhKSkKKwkJeworCQkJaWYg KCFhdF9jaGFpbl9zdGFydCkKKwkJCXsKKwkJCQlpZiAoaG90X2luZGV4ZWRfcmVjaGVjaykK KwkJCQkJKmhvdF9pbmRleGVkX3JlY2hlY2sgPSB0cnVlOworCQkJCWlmIChjcm9zc2VkX2Jp dG1hcCkKKwkJCQl7CisJCQkJCWludAkJCWJtbmF0dHMgPQorCQkJCQkJSG90SW5kZXhlZFR1 cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJCS8qCisJCQkJCSAq IEEgaG9wJ3Mgd3JpdGUtdGltZSBuYXR0cyBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2Vl ZAorCQkJCQkgKiB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzLiAgT24gYSBjb3JydXB0 IHBhZ2UgYQorCQkJCQkgKiBzdHViJ3MgdW5ib3VuZGVkIHN0YXNoZWQgbmF0dHMgY291bGQg b3RoZXJ3aXNlIG92ZXJmbG93CisJCQkJCSAqIGNyb3NzZWRfYml0bWFwLCB3aGljaCBpcyBh bGxvY2F0ZWQgZm9yIHJlbG5hdHRzOyBjbGFtcAorCQkJCQkgKiBkZWZlbnNpdmVseS4KKwkJ CQkJICovCisJCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQkJaWYgKGJt bmF0dHMgPiByZWxuYXR0cykKKwkJCQkJCWJtbmF0dHMgPSByZWxuYXR0czsKKworCQkJCQlI b3RJbmRleGVkQml0bWFwVW5pb24oY3Jvc3NlZF9iaXRtYXAsCisJCQkJCQkJCQkJICBIb3RJ bmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJ CQkJCQkJCSAgaGVhcFR1cGxlLT50X2xlbiwKKwkJCQkJCQkJCQkJCQkJCQkJICBibW5hdHRz KSwKKwkJCQkJCQkJCQkgIGJtbmF0dHMpOworCQkJCX0KKwkJCX0KKwkJCW9mZm51bSA9IEhv dEluZGV4ZWRTdHViR2V0Rm9yd2FyZChoZWFwVHVwbGUtPnRfZGF0YSk7CisJCQlhdF9jaGFp bl9zdGFydCA9IGZhbHNlOworCQkJcHJldl94bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFNob3VsZG4ndCBzZWUgYSBIRUFQ X09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQsIHVubGVzcyB0aGF0IHR1cGxlCisJCSAqIGlz IHRoZSB0YXJnZXQgb2YgYSBmcmVzaGx5LWluc2VydGVkIGhvdC1pbmRleGVkIGluZGV4IGVu dHJ5OiB0aGVuCisJCSAqIGFycml2aW5nIGRpcmVjdGx5IGF0IGEgaGVhcC1vbmx5IEhPVC1p bmRleGVkIHR1cGxlIGlzIGxlZ2FsIGFuZCB0aGUKKwkJICogdHVwbGUgaXMgdGhlIGNhbm9u aWNhbCB2aXNpYmxlIHZlcnNpb24sIHNvIHdlIGZhbGwgdGhyb3VnaCBhbmQKKwkJICogYXBw bHkgbm9ybWFsIHZpc2liaWxpdHkgY2hlY2tzIHRvIGl0LiAgT3RoZXJ3aXNlLCB0cmVhdCBp dCBhcyBhCisJCSAqIGJyb2tlbiBjaGFpbi4KIAkJICovCiAJCWlmIChhdF9jaGFpbl9zdGFy dCAmJiBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpCi0JCQlicmVhazsKKwkJewor CQkJaWYgKChoZWFwVHVwbGUtPnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURf VVBEQVRFRCkgPT0gMCkKKwkJCQlicmVhazsKKworCQkJLyoKKwkJCSAqIFdlIHdlcmUgcG9p bnRlZCBkaXJlY3RseSBhdCB0aGlzIGhvdC1pbmRleGVkIHR1cGxlLiAgVGhlIGluZGV4CisJ CQkgKiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91Z2ggd2FzIGluc2VydGVkICpmb3IqIHRoaXMg dXBkYXRlLCBzbyBpdAorCQkJICogcmVmbGVjdHMgdGhpcyB0dXBsZSdzIGN1cnJlbnQgYXR0 cmlidXRlIHZhbHVlczsgaXRzIG93bgorCQkJICogcHJvZHVjaW5nIGhvcCBpcyBub3QgYSBj cm9zc2VkIGhvcCwgc28gaXQgaXMgbm90IGZsYWdnZWQgZm9yCisJCQkgKiByZWNoZWNrIChh IGZyZXNoIGVudHJ5IGlzIG5ldmVyIHN0YWxlIGZvciBpdHMgb3duIGluZGV4KS4KKwkJCSAq LworCQl9CisJCWVsc2UgaWYgKGhvdF9pbmRleGVkX3JlY2hlY2sgIT0gTlVMTCAmJgorCQkJ CSAoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFU RUQpICE9IDApCisJCXsKKwkJCS8qCisJCQkgKiBBIEhPVC9TSVUgaG9wIHJlYWNoZWQgYnkg Zm9sbG93aW5nIHRoZSBjaGFpbiAob3IgYSByZWRpcmVjdCkKKwkJCSAqIGZyb20gYW4gZWFy bGllciBlbnRyeTogdGhpcyBob3AgaXMgY3Jvc3NlZCwgc28gdGhlIGFycml2aW5nCisJCQkg KiBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdlciBtYXRjaCB0aGUgbGl2ZSB0dXBs ZS4gIFNldCB0aGUKKwkJCSAqIHJlY2hlY2sgZmxhZyB0byB0ZWxsIHRoZSBpbmRleC1hY2Nl c3MgbGF5ZXIgdG8gY29uc3VsdCB0aGUKKwkJCSAqIGNyb3NzZWQtYXR0cnMgdW5pb247IHRo YXQgdW5pb24gKGFjY3VtdWxhdGVkIGJlbG93KSBpcyB3aGF0CisJCQkgKiBkZWNpZGVzIHN0 YWxlbmVzcy4KKwkJCSAqLworCQkJKmhvdF9pbmRleGVkX3JlY2hlY2sgPSB0cnVlOworCisJ CQkvKgorCQkJICogQWNjdW11bGF0ZSB0aGlzIGhvcCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1h cCBpbnRvIHRoZSBjcm9zc2VkCisJCQkgKiB1bmlvbi4gIEEgdHVwbGUncyBpbmxpbmUgYml0 bWFwIHJlY29yZHMgdGhlIGluZGV4ZWQgYXR0cmlidXRlcworCQkJICogdGhhdCBjaGFuZ2Vk IGF0IHRoZSBob3AgSU5UTyBpdCwgd2hpY2ggaXMgZXhhY3RseSB0aGUgaG9wIHdlCisJCQkg KiBqdXN0IGNyb3NzZWQgYnkgYWR2YW5jaW5nIHRvIGl0OyBPUmluZyBlYWNoIGNyb3NzZWQg aG9wIHlpZWxkcworCQkJICogdGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQg YWZ0ZXIgdGhlIGVudHJ5J3Mgb3duCisJCQkgKiB0dXBsZS4KKwkJCSAqLworCQkJaWYgKGNy b3NzZWRfYml0bWFwKQorCQkJeworCQkJCWludAkJCWJtbmF0dHMgPQorCQkJCQlIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkvKiBTZWUg dGhlIGNvbW1lbnQgb24gdGhlIHN0dWIgY2FzZSdzIGNyb3NzZWRfYml0bWFwIHVzZS4gKi8K KwkJCQlBc3NlcnQoYm1uYXR0cyA8PSByZWxuYXR0cyk7CisJCQkJaWYgKGJtbmF0dHMgPiBy ZWxuYXR0cykKKwkJCQkJYm1uYXR0cyA9IHJlbG5hdHRzOworCisJCQkJSG90SW5kZXhlZEJp dG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9k aWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJCQkJCQkJICBoZWFw VHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkg IGJtbmF0dHMpOworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogVGhlIHhtaW4gc2hvdWxkIG1h dGNoIHRoZSBwcmV2aW91cyB4bWF4IHZhbHVlLCBlbHNlIGNoYWluIGlzCkBAIC0xODYsNiAr MzM4LDE1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJIEhlYXBUdXBsZUhlYWRl ckdldFhtaW4oaGVhcFR1cGxlLT50X2RhdGEpKTsKIAkJCQlpZiAoYWxsX2RlYWQpCiAJCQkJ CSphbGxfZGVhZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBSZXBvcnQgd2hldGhlciBl dmVyeSBjaGFpbiBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhpcworCQkJCSAqIHZpc2libGUg dHVwbGUgaXMgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLiAgV2l0aCBhIHN0YWxlCisJCQkJ ICogdmVyZGljdCB0aGlzIGxldHMgdGhlIGNhbGxlciBraWxsIHRoZSBhcnJpdmluZyBsZWFm IHNhZmVseS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlZml4X2FsbF9kZWFkKQorCQkJCQkqcHJl Zml4X2FsbF9kZWFkID0gcHJlZml4X2RlYWQ7CisKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJfQpAQCAtMTk0LDE4ICszNTUsMjUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVt UG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBJZiB3ZSBjYW4ndCBzZWUgaXQsIG1heWJlIG5vIG9uZSBlbHNlIGNhbiBlaXRoZXIu ICBBdCBjYWxsZXIKIAkJICogcmVxdWVzdCwgY2hlY2sgd2hldGhlciBhbGwgY2hhaW4gbWVt YmVycyBhcmUgZGVhZCB0byBhbGwKLQkJICogdHJhbnNhY3Rpb25zLgorCQkgKiB0cmFuc2Fj dGlvbnMuICBUaGUgc2FtZSBzdXJlbHktZGVhZCB0ZXN0IGZlZWRzIHByZWZpeF9kZWFkLCB3 aGljaAorCQkgKiAodW5saWtlIGFsbF9kZWFkKSBpcyBub3QgcmVzZXQgd2hlbiBhIHZpc2li bGUgdHVwbGUgaXMgZm91bmQsIHNvIGl0CisJCSAqIHJlY29yZHMgd2hldGhlciB0aGUgbWVt YmVycyBza2lwcGVkIGFoZWFkIG9mIHRoZSByZXR1cm5lZCB0dXBsZSBhcmUKKwkJICogYWxs IGRlYWQgdG8gYWxsIC0tIHRoZSBzYWZlLXRvLWtpbGwtdGhpcy1sZWFmIGNvbmRpdGlvbi4K IAkJICoKIAkJICogTm90ZTogaWYgeW91IGNoYW5nZSB0aGUgY3JpdGVyaW9uIGhlcmUgZm9y IHdoYXQgaXMgImRlYWQiLCBmaXggdGhlCiAJCSAqIHBsYW5uZXIncyBnZXRfYWN0dWFsX3Zh cmlhYmxlX3JhbmdlKCkgZnVuY3Rpb24gdG8gbWF0Y2guCiAJCSAqLwotCQlpZiAoYWxsX2Rl YWQgJiYgKmFsbF9kZWFkKQorCQlpZiAoKGFsbF9kZWFkICYmICphbGxfZGVhZCkgfHwgKHBy ZWZpeF9hbGxfZGVhZCAmJiBwcmVmaXhfZGVhZCkpCiAJCXsKIAkJCWlmICghdmlzdGVzdCkK IAkJCQl2aXN0ZXN0ID0gR2xvYmFsVmlzVGVzdEZvcihyZWxhdGlvbik7CiAKIAkJCWlmICgh SGVhcFR1cGxlSXNTdXJlbHlEZWFkKGhlYXBUdXBsZSwgdmlzdGVzdCkpCi0JCQkJKmFsbF9k ZWFkID0gZmFsc2U7CisJCQl7CisJCQkJaWYgKGFsbF9kZWFkKQorCQkJCQkqYWxsX2RlYWQg PSBmYWxzZTsKKwkJCQlwcmVmaXhfZGVhZCA9IGZhbHNlOworCQkJfQogCQl9CiAKIAkJLyoK QEAgLTI3Myw3ICs0NDEsMTUgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJ bmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJCQlzbmFwc2hvdCwKIAkJCQkJ CQkJCQkJJmJzbG90LT5iYXNlLnR1cGRhdGEsCiAJCQkJCQkJCQkJCWFsbF9kZWFkLAotCQkJ CQkJCQkJCQkhKmhlYXBfY29udGludWUpOworCQkJCQkJCQkJCQkhKmhlYXBfY29udGludWUs CisJCQkJCQkJCQkJCSZzY2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkJ CQlzY2FuLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJCQkmc2Nhbi0+eHNf cHJlZml4X2FsbF9kZWFkKTsKKwlpZiAoIWdvdF9oZWFwX3R1cGxlKQorCXsKKwkJc2Nhbi0+ eHNfaG90X2luZGV4ZWRfcmVjaGVjayA9IGZhbHNlOworCQlzY2FuLT54c19wcmVmaXhfYWxs X2RlYWQgPSBmYWxzZTsKKwl9CiAJYnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqdGlk OwogCUxvY2tCdWZmZXIoaHNjYW4tPnhzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggMTQwODk4OWM1NjguLjY2MjhmOWJm ODVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtMTAzLDYgKzEwMyw5IEBA IFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGludCBua2V5 cywgaW50IG5vcmRlcmJ5cykKIAkJc2Nhbi0+b3JkZXJCeURhdGEgPSBOVUxMOwogCiAJc2Nh bi0+eHNfd2FudF9pdHVwID0gZmFsc2U7IC8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKwlzY2Fu LT54c19pbmRleF9vbmx5ID0gZmFsc2U7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKworCXNj YW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkvKgogCSAqIER1cmluZyBy ZWNvdmVyeSB3ZSBpZ25vcmUga2lsbGVkIHR1cGxlcyBhbmQgZG9uJ3QgYm90aGVyIHRvIGtp bGwgdGhlbQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXggNzk2N2U5Mzk4 NDcuLjcyMzc3NzdlNjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv aW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAg LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNj ZXNzL2FtYXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIK ICNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgpAQCAtNjA2LDYgKzYwNywxNSBAQCBpbmRl eF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uKQogCS8qIFhYWDogd2Ugc2hvdWxkIGFzc2VydCB0aGF0IGEgc25hcHNob3QgaXMgcHVz aGVkIG9yIHJlZ2lzdGVyZWQgKi8KIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoUmVj ZW50WG1pbikpOwogCisJLyoKKwkgKiBSZXNldCB0aGUgSE9ULWluZGV4ZWQgcmVjaGVjayBm bGFnOiBpdCBpcyBzZXQgYnkgdGhlIGhlYXAgQU0gZHVyaW5nCisJICogaW5kZXhfZmV0Y2hf aGVhcCBhbmQgaXMgcGVyLWZldGNoZWQtdHVwbGUsIG5vdCBwZXItaW5kZXgtZW50cnkuIEZv cgorCSAqIEluZGV4T25seVNjYW4sIHdoaWNoIG1heSBza2lwIGluZGV4X2ZldGNoX2hlYXAg d2hlbiB0aGUgVk0gc2F5cyB0aGUKKwkgKiBlbnRyeSBpcyB2aXNpYmxlLXRvLWFsbCwgdGhp cyBlbnN1cmVzIHdlIGRvbid0IGNhcnJ5IGEgc3RhbGUgdmFsdWUgZnJvbQorCSAqIGEgcHJl dmlvdXMgZW50cnkuCisJICovCisJc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxz ZTsKKwogCS8qCiAJICogVGhlIEFNJ3MgYW1nZXR0dXBsZSBwcm9jIGZpbmRzIHRoZSBuZXh0 IGluZGV4IGVudHJ5IG1hdGNoaW5nIHRoZSBzY2FuCiAJICoga2V5cywgYW5kIHB1dHMgdGhl IFRJRCBpbnRvIHNjYW4tPnhzX2hlYXB0aWQuICBJdCBzaG91bGQgYWxzbyBzZXQKQEAgLTY2 NiwxNSArNjc2LDk3IEBAIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlpZiAoZm91bmQpCiAJCXBnc3RhdF9jb3VudF9oZWFw X2ZldGNoKHNjYW4tPmluZGV4UmVsYXRpb24pOwogCisJLyoKKwkgKiBUaGUgdGFibGUgQU0g cmVwb3J0ZWQsIHZpYSB4c19ob3RfaW5kZXhlZF9yZWNoZWNrLCB3aGV0aGVyIHRoZSB3YWxr IHRvCisJICogdGhlIGxpdmUgdHVwbGUgY3Jvc3NlZCBhIEhPVC1pbmRleGVkIGhvcCBhZnRl ciB0aGUgYXJyaXZpbmcgaW5kZXgKKwkgKiBlbnRyeSdzIG93biB0dXBsZS4gIFdoZW4gaXQg ZGlkLCB0aGUgZW50cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIKKwkgKiBhZ3JlZSB3 aXRoIHRoZSBsaXZlIHR1cGxlLCBhbmQgd2UgbXVzdCBkZWNpZGUgd2hldGhlciB0byBkcm9w IGl0LgorCSAqCisJICogVGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAoeHNfaG90X2lu ZGV4ZWRfY3Jvc3NlZCkgaXMgdGhlIHN0YWxlbmVzcworCSAqIGF1dGhvcml0eS4gIEl0IGlz IHRoZSB1bmlvbiBvZiB0aGUgcGVyLWhvcCBtb2RpZmllZC1hdHRyaWJ1dGUgYml0bWFwcwor CSAqIG9mIGV2ZXJ5IGhvcCB0aGUgd2FsayBjcm9zc2VkLCBhbmQgaXQgaXMgY29tcGxldGU6 IGVhY2ggY3Jvc3NlZCBsaXZlCisJICogaG9wLCBjb2xsYXBzZS1zdXJ2aXZvciBzdHViLCBh bmQgcmVkaXJlY3RlZCAoY29sbGFwc2VkKSBwcmVmaXgKKwkgKiBjb250cmlidXRlcyBpdHMg c2VnbWVudCdzIGJpdG1hcCwgYW5kIGNoYWluIGNvbGxhcHNlIG9ubHkgZXZlciByZWNsYWlt cworCSAqIGEgbWVtYmVyIHdob3NlIGF0dHJpYnV0ZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBz dXJ2aXZpbmcgbGF0ZXIgaG9wcyAoc2VlCisJICogcHJ1bmVoZWFwLmMpLiAgVGhlcmVmb3Jl OgorCSAqCisJICogLSBpZiB0aGUgdW5pb24gaXMgZGlzam9pbnQgZnJvbSB0aGUgaGVhcCBj b2x1bW5zIHRoaXMgaW5kZXggcmVmZXJlbmNlcywKKwkgKiBub25lIG9mIHRoZSBpbmRleCdz IGlucHV0cyBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW4sIHNvIHRoZSBlbnRyeSdzIGtleQor CSAqIHN0aWxsIG1hdGNoZXMgdGhlIGxpdmUgdHVwbGU6IGtlZXAgaXQ7IGFuZAorCSAqCisJ ICogLSBpZiB0aGUgdW5pb24gb3ZlcmxhcHMgdGhlbSwgb25lIG9mIHRoaXMgaW5kZXgncyBr ZXkgY29sdW1ucyBjaGFuZ2VkCisJICogYWZ0ZXIgdGhlIGVudHJ5J3Mgb3duIHR1cGxlLCBz byB0aGUgZW50cnkgaXMgc3RhbGU6IGRyb3AgaXQuCisJICoKKwkgKiBEcm9wcGluZyBvbiBv dmVybGFwIGlzIGNvcnJlY3QgZXZlbiB3aGVuIHRoZSBrZXkgd2FzIGN5Y2xlZCBhd2F5IGFu ZAorCSAqIGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIChhbiBBQkEgdXBkYXRlKTogdGhl IHVwZGF0ZSB0aGF0IHNldCB0aGUKKwkgKiB2YWx1ZSBiYWNrIGNyZWF0ZWQgYSBmcmVzaCBl bnRyeSBwb2ludGluZyBhdCBpdHMgb3duIChsaXZlKSB0dXBsZSwKKwkgKiB3aG9zZSB3YWxr IGNyb3NzZXMgbm8gbGF0ZXIga2V5LWNoYW5naW5nIGhvcCwgc28gdGhhdCBlbnRyeSB1bmlx dWVseQorCSAqIHN1cHBsaWVzIHRoZSByb3cgd2hpbGUgdGhpcyBzdGFsZSBhbmNlc3RvciBl bnRyeSBpcyBkcm9wcGVkLiAgTm8KKwkgKiB2YWx1ZS1yZWNoZWNrIGlzIG5lZWRlZCwgc28g dGhpcyB3b3JrcyBmb3IgYW55IGFjY2VzcyBtZXRob2Q7IHRoZQorCSAqIHN0YWxlbmVzcyBk ZWNpc2lvbiBpcyBwdXJlbHkgYXR0cmlidXRlLWJhc2VkLgorCSAqLworCXNjYW4tPnhzX2hv dF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CisJaWYgKGZvdW5kICYmCisJCXNjYW4tPnhzX2hl YXBmZXRjaC0+eHNfaG90X2luZGV4ZWRfcmVjaGVjayAmJgorCQlzY2FuLT54c19oZWFwZmV0 Y2gtPnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwl7CisJCUJpdG1hcHNldCAg KmlkeGF0dHJzID0gUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoc2Nhbi0+aW5kZXhSZWxhdGlv bik7CisJCWludAkJCXggPSAtMTsKKworCQl3aGlsZSAoKHggPSBibXNfbmV4dF9tZW1iZXIo aWR4YXR0cnMsIHgpKSA+PSAwKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0dG51bSA9IHggKyBG aXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQkvKiB0aGUgY3Jvc3Nl ZCBiaXRtYXAgcmVjb3JkcyBvbmx5IHVzZXIgYXR0cmlidXRlcyAqLworCQkJaWYgKGF0dG51 bSA+PSAxICYmCisJCQkJSG90SW5kZXhlZEF0dHJJc01vZGlmaWVkKHNjYW4tPnhzX2hlYXBm ZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCwKKwkJCQkJCQkJCQkgYXR0bnVtKSkKKwkJ CXsKKwkJCQlzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQl9CisJCX0KKwkJYm1zX2ZyZWUoaWR4YXR0cnMpOworCX0KKwogCS8qCiAJICogSWYg d2Ugc2Nhbm5lZCBhIHdob2xlIEhPVCBjaGFpbiBhbmQgZm91bmQgb25seSBkZWFkIHR1cGxl cywgdGVsbCBpbmRleAogCSAqIEFNIHRvIGtpbGwgaXRzIGVudHJ5IGZvciB0aGF0IFRJRCAo dGhpcyB3aWxsIHRha2UgZWZmZWN0IGluIHRoZSBuZXh0CiAJICogYW1nZXR0dXBsZSBjYWxs LCBpbiBpbmRleF9nZXRuZXh0X3RpZCkuICBXZSBkbyBub3QgZG8gdGhpcyB3aGVuIGluCiAJ ICogcmVjb3ZlcnkgYmVjYXVzZSBpdCBtYXkgdmlvbGF0ZSBNVkNDIHRvIGRvIHNvLiAgU2Vl IGNvbW1lbnRzIGluCiAJICogUmVsYXRpb25HZXRJbmRleFNjYW4oKS4KKwkgKgorCSAqIEFk ZGl0aW9uYWxseSBraWxsIGEgc3RhbGUgSE9ULWluZGV4ZWQgbGVhZiAob25lIHdob3NlIGtl eSB0aGUgbGl2ZQorCSAqIHR1cGxlIG5vIGxvbmdlciBob2xkcykgd2hlbiBldmVyeSBjaGFp biBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhlCisJICogcmV0dXJuZWQgdHVwbGUgaXMgZGVh ZCB0byBhbGwgdHJhbnNhY3Rpb25zICh4c19wcmVmaXhfYWxsX2RlYWQpOiBubworCSAqIHNu YXBzaG90IGNhbiByZWFjaCBhIG1hdGNoaW5nIHZlcnNpb24gdGhyb3VnaCB0aGlzIGxlYWYs IHNvIGl0IGlzCisJICogcmVkdW5kYW50IGFuZCByZWNsYWltaW5nIGl0IGJvdW5kcyB0aGUg aW5kZXggYmxvYXQgSE9ULWluZGV4ZWQgdXBkYXRlcworCSAqIGNyZWF0ZS4KKwkgKgorCSAq IFR3byBpbmRlcGVuZGVudCBjb25kaXRpb25zIG1ha2UgdGhpcyBzYWZlOgorCSAqCisJICog IC0gVGhlIHN1cmVseS1kZWFkIHByZWZpeCBnYXRlICh4c19wcmVmaXhfYWxsX2RlYWQpIG1l YW5zIG5vIHNuYXBzaG90LAorCSAqICAgIGluY2x1ZGluZyBvbGRlciBvbmVzIHN0aWxsIHJ1 bm5pbmcsIGNhbiByZWFjaCBhIHZlcnNpb24gdGhyb3VnaCB0aGlzCisJICogICAgbGVhZiB3 aG9zZSBrZXkgbWF0Y2hlczogZXZlcnkgbWVtYmVyIGFoZWFkIG9mIHRoZSBsaXZlIHR1cGxl IGlzIGRlYWQKKwkgKiAgICB0byBhbGwuICBUaGlzIGlzIHdoYXQgbWFrZXMgaXQgTVZDQy1z YWZlLCBleGFjdGx5IGFzIGZvciB0aGUKKwkgKiAgICBhbGxfZGVhZCBjYXNlLgorCSAqCisJ ICogIC0gVGhlIGxlYWYgaXMgZ2VudWluZWx5IHJlZHVuZGFudCwgbm90IHRoZSByb3cncyBv bmx5IGVudHJ5LiAgQSBzdGFsZQorCSAqICAgIHZlcmRpY3QgbWVhbnMgdGhlIGNyb3NzZWQt aG9wIHVuaW9uIG92ZXJsYXBzIHRoaXMgaW5kZXgncyBjb2x1bW5zLAorCSAqICAgIGkuZS4g b25lIG9mIHRoaXMgaW5kZXgncyBhdHRyaWJ1dGVzIGNoYW5nZWQgb24gYSBob3AgYWZ0ZXIg dGhpcworCSAqICAgIGxlYWYncyB0YXJnZXQuICBUaGUgdXBkYXRlIHRoYXQgbWFkZSB0aGF0 IGNoYW5nZSBtYWludGFpbmVkIHRoaXMKKwkgKiAgICBpbmRleCAoaXRzIGF0dHJpYnV0ZSBj aGFuZ2VkKSwgc28gaXQgcGxhbnRlZCBhIGZyZXNoIGVudHJ5IHBvaW50aW5nCisJICogICAg YXQgaXRzIG93biBsaXZlIHR1cGxlOyB0aGF0IGZyZXNoIGVudHJ5IGNyb3NzZXMgbm8gbGF0 ZXIKKwkgKiAgICBrZXktY2hhbmdpbmcgaG9wIGFuZCB1bmlxdWVseSBzdXBwbGllcyB0aGUg cm93LiAgRHJvcHBpbmcgdGhlIHN0YWxlCisJICogICAgYW5jZXN0b3IgdGhlcmVmb3JlIG5l dmVyIHJlbW92ZXMgdGhlIHJvdydzIGxhc3QgcmVhY2hhYmxlIGVudHJ5LgorCSAqICAgIFRo aXMgaG9sZHMgZXZlbiB1bmRlciBBQkEga2V5IGN5Y2xpbmcgKFggLT4gWSAtPiBYKTogdGhl IFgtcmVzdG9yaW5nCisJICogICAgdXBkYXRlIGNoYW5nZWQgdGhpcyBpbmRleCdzIGNvbHVt biAoWSAtPiBYKSBhbmQgc28gcGxhbnRlZCB0aGUgZnJlc2gKKwkgKiAgICBlbnRyeS4KIAkg Ki8KIAlpZiAoIXNjYW4tPnhhY3RTdGFydGVkSW5SZWNvdmVyeSkKLQkJc2Nhbi0+a2lsbF9w cmlvcl90dXBsZSA9IGFsbF9kZWFkOworCQlzY2FuLT5raWxsX3ByaW9yX3R1cGxlID0KKwkJ CWFsbF9kZWFkIHx8CisJCQkoc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgJiYgc2Nhbi0+ eHNfaGVhcGZldGNoLT54c19wcmVmaXhfYWxsX2RlYWQpOwogCiAJcmV0dXJuIGZvdW5kOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggYzhhZjk3ZGQy M2QuLjJhMTA2Mzk4ZDUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0 LmMKQEAgLTE1LDYgKzE1LDggQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNs dWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9uYnR4bG9n LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKQEAgLTIyLDE4ICsyNCwyNCBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5o IgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVw dGFibGUuaCIKICNpbmNsdWRlICJsaWIvcXVuaXF1ZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJl ZGljYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKLQogLyogTWluaW11bSB0cmVlIGhlaWdodCBmb3IgYXBwbGlj YXRpb24gb2YgZmFzdHBhdGggb3B0aW1pemF0aW9uICovCiAjZGVmaW5lIEJUUkVFX0ZBU1RQ QVRIX01JTl9MRVZFTAkyCiAKIAogc3RhdGljIEJUU3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkgQlRJbnNlcnRTdGF0 ZSBpbnNlcnRzdGF0ZSk7CisKKy8qIEludGVybmFsIGhlbHBlcjogSE9ULWluZGV4ZWQgbGVh Zi1rZXkgc3RhbGVuZXNzIGNoZWNrIGZvciBfYnRfY2hlY2tfdW5pcXVlLiAqLworc3RhdGlj IGJvb2wgX2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsZWFmdHVwLAorCQkJCQkJCQkJIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCAqaGVhcFNsb3Qp OworCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJl bCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVh cFJlbCwKIAkJCQkJCQkJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCAq aXNfdW5pcXVlLApAQCAtNDI2LDYgKzQzNCw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRp b24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAog CWJvb2wJCWlucG9zdGluZyA9IGZhbHNlOwogCWJvb2wJCXByZXZhbGxkZWFkID0gdHJ1ZTsK IAlpbnQJCQljdXJwb3N0aSA9IDA7CisJVHVwbGVUYWJsZVNsb3QgKmNoYWluX3dhbGtfc2xv dCA9IE5VTEw7CisJYm9vbAkJaGlfcmVjaGVjayA9IGZhbHNlOwogCiAJLyogQXNzdW1lIHVu aXF1ZSB1bnRpbCB3ZSBmaW5kIGEgZHVwbGljYXRlICovCiAJKmlzX3VuaXF1ZSA9IHRydWU7 CkBAIC01MDksNiArNTE5LDcgQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJU SW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQl7CiAJCQkJ SXRlbVBvaW50ZXJEYXRhIGh0aWQ7CiAJCQkJYm9vbAkJYWxsX2RlYWQgPSBmYWxzZTsKKwkJ CQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQkJaWYgKCFpbnBvc3Rp bmcpCiAJCQkJewpAQCAtNTU5LDEzICs1NzAsODAgQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxh dGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWws CiAJCQkJICogc2F0aXNmeWluZyBTbmFwc2hvdERpcnR5LiBUaGlzIGlzIG5lY2Vzc2FyeSBi ZWNhdXNlIGZvciBBTXMKIAkJCQkgKiB3aXRoIG9wdGltaXphdGlvbnMgbGlrZSBoZWFwJ3Mg SE9ULCB3ZSBoYXZlIGp1c3QgYSBzaW5nbGUKIAkJCQkgKiBpbmRleCBlbnRyeSBmb3IgdGhl IGVudGlyZSBjaGFpbi4KKwkJCQkgKgorCQkJCSAqIFRoZSBmZXRjaCByZXBvcnRzIChoaV9y ZWNoZWNrKSB3aGV0aGVyIHRoZSBjaGFpbiB3YWxrIHRvCisJCQkJICogdGhlIGxpdmUgdHVw bGUgY3Jvc3NlZCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lVKQorCQkJCSAq IGhvcC4gSW4gY2xhc3NpYyBIT1QgdGhlIGNoYWluIHByZXNlcnZlcyB0aGUgaW5kZXgga2V5 LCBzbyBhCisJCQkJICogbGl2ZSB0dXBsZSBhbnl3aGVyZSBpbiB0aGUgY2hhaW4gaXMgYSBk ZWZpbml0ZSBjb25mbGljdDsKKwkJCQkgKiB3aXRoIEhPVC9TSVUgdGhhdCBpbnZhcmlhbnQg bm8gbG9uZ2VyIGhvbGRzIC0tIGFuIG9sZCBpbmRleAorCQkJCSAqIGVudHJ5IGZvciBrZXkg SyBtYXkgY2hhaW4tbGVhZCB0byBhIGhlYXAgdHVwbGUgd2hvc2UgYWN0dWFsCisJCQkJICog aW5kZXgga2V5IGlzIEsnLiAgV2hlbiBhIGhvcCB3YXMgY3Jvc3NlZCB3ZSByZWNoZWNrIHRo ZQorCQkJCSAqIGxlYWYga2V5IGFnYWluc3QgdGhlIGxpdmUgdHVwbGUgYmVsb3c7IGEgc3Rh bGUgZW50cnkgaXMKKwkJCQkgKiBmaWx0ZXJlZCBvdXQsIG5vdCB0cmVhdGVkIGFzIGEgY29u ZmxpY3QuICBjaGFpbl93YWxrX3Nsb3QKKwkJCQkgKiBob2xkcyB0aGUgbGl2ZSB0dXBsZSBm b3IgdGhhdCByZWNoZWNrIGFuZCBpcyBmcmVlZCBhdCBldmVyeQorCQkJCSAqIGV4aXQuCiAJ CQkJICovCi0JCQkJZWxzZSBpZiAodGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVh cFJlbCwgJmh0aWQsCisJCQkJZWxzZSBpZiAoKGNoYWluX3dhbGtfc2xvdCAhPSBOVUxMIHx8 CisJCQkJCQkgIChjaGFpbl93YWxrX3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShoZWFwUmVs LCBOVUxMKSkpICYmCisJCQkJCQkgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVh cFJlbCwgJmh0aWQsCiAJCQkJCQkJCQkJCQkJICAgJlNuYXBzaG90RGlydHksCi0JCQkJCQkJ CQkJCQkJICAgJmFsbF9kZWFkKSkKKwkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQsCisJCQkJ CQkJCQkJCQkJICAgJmhpX3JlY2hlY2ssCisJCQkJCQkJCQkJCQkJICAgY2hhaW5fd2Fsa19z bG90KSkKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uSWQgeHdhaXQ7CiAKKwkJCQkJLyoKKwkJ CQkJICogVGhlIGNoYWluIHdhbGsgcmVwb3J0ZWQgKGhpX3JlY2hlY2spIHRoYXQgaXQgY3Jv c3NlZCBhdAorCQkJCQkgKiBsZWFzdCBvbmUgSE9UL1NJVSBob3Agb24gdGhlIHdheSB0byB0 aGUgbGl2ZSB0dXBsZSwgc28KKwkJCQkJICogdGhlIGNsYXNzaWMgImxpdmUgdHVwbGUgaW4g dGhlIGNoYWluIGltcGxpZXMgdGhlIHNhbWUKKwkJCQkJICogaW5kZXgga2V5IiBpbnZhcmlh bnQgbWF5IG5vdCBob2xkOiBhbiBvbGQgaW5kZXggZW50cnkKKwkJCQkJICogZm9yIGtleSBL IG1heSBjaGFpbi1sZWFkIHRvIGEgdHVwbGUgd2hvc2UgY3VycmVudCBrZXkKKwkJCQkJICog aXMgSycuICBSZWNoZWNrIHRoZSBsZWFmJ3Mgc3RvcmVkIGtleSBhZ2FpbnN0IHRoZSBsaXZl CisJCQkJCSAqIHR1cGxlJ3MgY3VycmVudCBpbmRleCBmb3JtLiAgQSBtaXNtYXRjaCBtZWFu cyB0aGUgbGVhZgorCQkJCQkgKiBpcyBzdGFsZSAobm90IGEgY29uZmxpY3QpOiBza2lwIGl0 OyB0aGUgZnJlc2ggZW50cnkKKwkJCQkJICogaW5zZXJ0ZWQgZm9yIHRoZSBjdXJyZW50IHZh bHVlIGlzIHRoZSBjYW5vbmljYWwgb25lLgorCQkJCQkgKiBCZWNhdXNlIHRoZSBsZWFmIHN0 aWxsIHJlc29sdmVzIHRvIGEgbGl2ZSB0dXBsZSwgY2xlYXIKKwkJCQkJICogcHJldmFsbGRl YWQgc28gdGhlIGNhbGxlciBuZXZlciBtYXJrcyBpdCBMUF9ERUFECisJCQkJCSAqIChraWxs YWJsZSkuCisJCQkJCSAqLworCQkJCQlob3RfaW5kZXhlZF9zdGFsZSA9CisJCQkJCQkoaGlf cmVjaGVjayAmJgorCQkJCQkJICFfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYocmVsLCBjdXJp dHVwLCBjaGFpbl93YWxrX3Nsb3QpKTsKKworCQkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUp CisJCQkJCXsKKwkJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisJCQkJCQlpZiAobmJ1ZiAh PSBJbnZhbGlkQnVmZmVyKQorCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVmKTsKKwkJCQkJ CW5idWYgPSBJbnZhbGlkQnVmZmVyOworCQkJCQkJRXhlY0NsZWFyVHVwbGUoY2hhaW5fd2Fs a19zbG90KTsKKwkJCQkJCWdvdG8gYnRfY2hhaW5fd2Fsa19za2lwOworCQkJCQl9CisKKwkJ CQkJLyoKKwkJCQkJICogVGhlIGxlYWYncyBrZXkgc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0 dXBsZS4gIElmIHRoZQorCQkJCQkgKiBjaGFpbiB3YWxrIGNyb3NzZWQgYSBIT1QtaW5kZXhl ZCBob3AgYW5kIHJlc29sdmVkIHRvCisJCQkJCSAqIHRoZSB2ZXJ5IHR1cGxlIHRoZSBjYWxs ZXIgaXMgaW5zZXJ0aW5nIGFuIGVudHJ5IGZvciwKKwkJCQkJICogdGhpcyBpcyBub3QgYSBk dXBsaWNhdGUgLS0gaXQgaXMgdGhlIHNhbWUgbG9naWNhbCByb3cKKwkJCQkJICogYmVpbmcg cmUtaW5kZXhlZCAoZS5nLiBhIEhPVC1pbmRleGVkIFVQREFURSB0aGF0IGxlZnQKKwkJCQkJ ICogdGhpcyBpbmRleCdzIGtleSB1bmNoYW5nZWQsIG9yIGEga2V5IGN5Y2xlZCBhd2F5IGFu ZAorCQkJCQkgKiBiYWNrKS4gU2tpcCBpdCByYXRoZXIgdGhhbiByYWlzaW5nIGEgc3B1cmlv dXMgdW5pcXVlCisJCQkJCSAqIHZpb2xhdGlvbi4KKwkJCQkJICovCisJCQkJCWlmIChoaV9y ZWNoZWNrICYmCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoJmh0aWQsICZpdHVwLT50X3Rp ZCkgPT0gMCkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJCQkJCWlm IChuYnVmICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYp OworCQkJCQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJUdXBsZShj aGFpbl93YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7CisJCQkJ CX0KKwkJCQkJaWYgKGNoYWluX3dhbGtfc2xvdCAhPSBOVUxMKQorCQkJCQkJRXhlY0NsZWFy VHVwbGUoY2hhaW5fd2Fsa19zbG90KTsKKwogCQkJCQkvKgogCQkJCQkgKiBJdCBpcyBhIGR1 cGxpY2F0ZS4gSWYgd2UgYXJlIG9ubHkgZG9pbmcgYSBwYXJ0aWFsCiAJCQkJCSAqIGNoZWNr LCB0aGVuIGRvbid0IGJvdGhlciBjaGVja2luZyBpZiB0aGUgdHVwbGUgaXMgYmVpbmcKQEAg LTU3OCw2ICs2NTYsOCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJewogCQkJCQkJ aWYgKG5idWYgIT0gSW52YWxpZEJ1ZmZlcikKIAkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1 Zik7CisJCQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQkJCQkJCUV4ZWNEcm9wU2luZ2xl VHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKIAkJCQkJCSppc191bmlxdWUgPSBm YWxzZTsKIAkJCQkJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkJCQkJfQpAQCAt NTkzLDYgKzY3Myw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2Vy dFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQl7CiAJCQkJCQlp ZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVm KTsKKwkJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCQkJCQkJLyogVGVsbCBfYnRfZG9p bnNlcnQgdG8gd2FpdC4uLiAqLwogCQkJCQkJKnNwZWN1bGF0aXZlVG9rZW4gPSBTbmFwc2hv dERpcnR5LnNwZWN1bGF0aXZlVG9rZW47CiAJCQkJCQkvKiBDYWxsZXIgcmVsZWFzZXMgbG9j ayBvbiBidWYgaW1tZWRpYXRlbHkgKi8KQEAgLTYxOSw3ICs3MDEsOCBAQCBfYnRfY2hlY2tf dW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRp b24gaGVhcFJlbCwKIAkJCQkJICovCiAJCQkJCWh0aWQgPSBpdHVwLT50X3RpZDsKIAkJCQkJ aWYgKHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKGhlYXBSZWwsICZodGlkLAotCQkJ CQkJCQkJCQkJCSAgU25hcHNob3RTZWxmLCBOVUxMKSkKKwkJCQkJCQkJCQkJCQkgIFNuYXBz aG90U2VsZiwgTlVMTCwKKwkJCQkJCQkJCQkJCQkgIE5VTEwsIE5VTEwpKQogCQkJCQl7CiAJ CQkJCQkvKiBOb3JtYWwgY2FzZSAtLS0gaXQncyBzdGlsbCBsaXZlICovCiAJCQkJCX0KQEAg LTY1NCw2ICs3MzcsOCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJX2J0X3JlbGJ1 ZihyZWwsIGluc2VydHN0YXRlLT5idWYpOwogCQkJCQlpbnNlcnRzdGF0ZS0+YnVmID0gSW52 YWxpZEJ1ZmZlcjsKIAkJCQkJaW5zZXJ0c3RhdGUtPmJvdW5kc192YWxpZCA9IGZhbHNlOwor CQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQkJCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCiAJCQkJCXsKIAkJCQkJCURhdHVtCQl2YWx1 ZXNbSU5ERVhfTUFYX0tFWVNdOwpAQCAtNzE1LDYgKzgwMCw5IEBAIF9idF9jaGVja191bmlx dWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBo ZWFwUmVsLAogCQkJCSAqLwogCQkJCWlmICghYWxsX2RlYWQgJiYgaW5wb3N0aW5nKQogCQkJ CQlwcmV2YWxsZGVhZCA9IGZhbHNlOworCisJCWJ0X2NoYWluX3dhbGtfc2tpcDoKKwkJCQk7 CiAJCQl9CiAJCX0KIApAQCAtNzgyLDkgKzg3MCw4NCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAlpZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQlfYnRfcmVsYnVmKHJlbCwgbmJ1 Zik7CiAKKwlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CisKIAlyZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiB9CiAKKy8qCisgKglfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoKSAtLSBDb21wYXJl IGEgaGVhcCB0dXBsZSdzIGN1cnJlbnQgYnRyZWUga2V5CisgKglhZ2FpbnN0IHRoZSBrZXkg c3RvcmVkIGluIGEgbGVhZiBJbmRleFR1cGxlLgorICoKKyAqCVRoZSBIT1QtaW5kZXhlZCB1 bmlxdWUtY2hlY2sgcGF0aCB1c2VzIHRoaXMgdG8gZGlzdGluZ3Vpc2ggYSBsaXZlIHR1cGxl CisgKgl3aG9zZSBjdXJyZW50IGtleSBzdGlsbCBtYXRjaGVzIHRoZSBhcnJpdmluZyBsZWFm IChhIGdlbnVpbmUgY29uZmxpY3QpCisgKglmcm9tIGEgc3RhbGUgY2hhaW4gaGl0OiB3aXRo IGEgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGNoYWluCisgKgl0aGUg bGVhZiBlbnRyeSBmb3IgYW4gb2xkIGtleSBzdGlsbCByZXNvbHZlcyB0byB0aGUgbGl2ZSB0 dXBsZSwgd2hvc2UKKyAqCWN1cnJlbnQgaW5kZXggZm9ybSBtYXkgZGlmZmVyLgorICoKKyAq CUVxdWFsaXR5IG11c3QgYWdyZWUgd2l0aCB0aGUgaW5kZXgncyBvd24gbm90aW9uIG9mIGVx dWFsaXR5LCBiZWNhdXNlIHRoZQorICoJY2FsbGVyIHVzZXMgdGhlIHZlcmRpY3QgdG8gZGVj aWRlIHdoZXRoZXIgdG8gcmFpc2UgYSB1bmlxdWUgdmlvbGF0aW9uLgorICoJV2UgY29tcGFy ZSBlYWNoIGtleSBjb2x1bW4gd2l0aCBpdHMgYnRyZWUgb3JkZXJpbmcgcHJvY2VkdXJlIChC VE9SREVSX1BST0MsCisgKgl0aGUgc2FtZSBzdXBwb3J0IGZ1bmN0aW9uIF9idF9ta3NjYW5r ZXkgdXNlcykgdW5kZXIgdGhlIGNvbHVtbidzIGNvbGxhdGlvbgorICoJLS0gbm90IGEgYml0 d2lzZSBpbWFnZSBjb21wYXJpc29uLiAgQml0d2lzZSBlcXVhbGl0eSB3b3VsZCB3cm9uZ2x5 IHRyZWF0CisgKglvcGNsYXNzLWVxdWFsIGJ1dCBpbWFnZS1kaXN0aW5jdCB2YWx1ZXMgKG51 bWVyaWMgMS4wIHZzIDEuMDAsIGZsb2F0IC0wLjAKKyAqCXZzIDAuMCwgdGV4dCB1bmRlciBh IG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uKSBhcyAibm90IGVxdWFsIiBhbmQgc2tpcCBh CisgKglnZW51aW5lIGR1cGxpY2F0ZS4KKyAqCisgKglUaGlzIGlzIGNhbGxlZCBmcm9tIF9i dF9jaGVja191bmlxdWUgd2hpbGUgdGhlIGxlYWYgYnVmZmVyIGlzIGxvY2tlZCwgc28gaXQK KyAqCWRlbGliZXJhdGVseSBhdm9pZHMgZXhlY3V0b3IgbWFjaGluZXJ5OiBpdCBmZXRjaGVz IGVhY2gga2V5IGF0dHJpYnV0ZQorICoJc3RyYWlnaHQgZnJvbSB0aGUgc2xvdC4gIEl0IGlz IG9ubHkgZXZlciByZWFjaGVkIGZvciBhbiBpbmRleCByZWNlaXZpbmcgYQorICoJZnJlc2gg ZW50cnkgZHVyaW5nIGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhbmQgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZQorICoJZGlzcXVhbGlmaWVzIGFueSBVUERBVEUgdGhhdCB0b3VjaGVzIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlLCBzbyB0aGUKKyAqCWluZGV4IGhlcmUgaGFzIG5v IGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5IGlzIGEgcmVhbCBhdHRyaWJ1 dGUKKyAqCW51bWJlcikuICBXZSBhc3NlcnQgdGhhdCByYXRoZXIgdGhhbiBoYW5kbGUgYSBr ZXljb2wgPT0gMCBjYXNlIHRoYXQgY2Fubm90CisgKglvY2N1cjsgaWYgZXhwcmVzc2lvbi1p bmRleCBzZWxlY3RpdmUgbWFpbnRlbmFuY2UgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCisgKglm dXR1cmUsIHRoaXMgaXMgd2hlcmUgYW4gZXhwcmVzc2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlz b24gd291bGQgYmUgYWRkZWQuCisgKgorICoJaGVhcFNsb3QgbXVzdCBhbHJlYWR5IGJlIHBv cHVsYXRlZCBieSB0aGUgY2FsbGVyICh2aWEKKyAqCXRhYmxlX2luZGV4X2ZldGNoX3R1cGxl IC8gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2spLgorICovCitzdGF0aWMgYm9vbAor X2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsZWFm dHVwLAorCQkJCQkJIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCAqaGVhcFNsb3QpCit7CisJVHVw bGVEZXNjCWluZGV4RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwlpbnQJCQlua2V5 ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOworCUZvcm1f cGdfaW5kZXggaW5kZXhTdHJ1Y3QgPSByZWwtPnJkX2luZGV4OworCisJQXNzZXJ0KGxlYWZ0 dXAgIT0gTlVMTCk7CisJQXNzZXJ0KGhlYXBTbG90ICE9IE5VTEwgJiYgIVRUU19FTVBUWSho ZWFwU2xvdCkpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBua2V5OyBpKyspCisJeworCQlB dHRyTnVtYmVyCWtleWNvbCA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCQlE YXR1bQkJaGVhcF9kYXR1bTsKKwkJYm9vbAkJaGVhcF9pc251bGw7CisJCURhdHVtCQlsZWFm X2RhdHVtOworCQlib29sCQlsZWFmX2lzbnVsbDsKKwkJRm1nckluZm8gICAqY21wcHJvYzsK KworCQkvKiBFeHByZXNzaW9uIGtleSBjb2x1bW5zIGNhbm5vdCByZWFjaCBoZXJlIChzZWUg aGVhZGVyKS4gKi8KKwkJQXNzZXJ0KGtleWNvbCAhPSAwKTsKKworCQloZWFwX2RhdHVtID0g c2xvdF9nZXRhdHRyKGhlYXBTbG90LCBrZXljb2wsICZoZWFwX2lzbnVsbCk7CisJCWxlYWZf ZGF0dW0gPSBpbmRleF9nZXRhdHRyKGxlYWZ0dXAsIGkgKyAxLCBpbmRleERlc2MsICZsZWFm X2lzbnVsbCk7CisKKwkJaWYgKGhlYXBfaXNudWxsICE9IGxlYWZfaXNudWxsKQorCQkJcmV0 dXJuIGZhbHNlOworCQlpZiAoaGVhcF9pc251bGwpCisJCQljb250aW51ZTsKKworCQkvKiBv cGNsYXNzIDMtd2F5IGNvbXBhcmUgdW5kZXIgdGhlIGNvbHVtbidzIGNvbGxhdGlvbjsgMCA9 PSBlcXVhbCAqLworCQljbXBwcm9jID0gaW5kZXhfZ2V0cHJvY2luZm8ocmVsLCBpICsgMSwg QlRPUkRFUl9QUk9DKTsKKwkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwo Y21wcHJvYywgcmVsLT5yZF9pbmRjb2xsYXRpb25baV0sCisJCQkJCQkJCQkJCWhlYXBfZGF0 dW0sIGxlYWZfZGF0dW0pKSAhPSAwKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVy biB0cnVlOworfQogCiAvKgogICoJX2J0X2ZpbmRpbnNlcnRsb2MoKSAtLSBGaW5kcyBhbiBp bnNlcnQgbG9jYXRpb24gZm9yIGEgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJl ZS5jCmluZGV4IDNkZjJjNzUyZWFkLi41YjI2OWVhYWE5MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jCkBAIC00MDgsNiArNDA4LDE2IEBAIGJ0cmVzY2FuKEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAogCSAqIHJhY2Ug Y29uZGl0aW9uIGludm9sdmluZyBWQUNVVU0gc2V0dGluZyBwYWdlcyBhbGwtdmlzaWJsZSBp biB0aGUgVk0uCiAJICogSXQncyBhbHNvIHVuc2FmZSBmb3IgcGxhaW4gaW5kZXggc2NhbnMg dGhhdCB1c2UgYSBub24tTVZDQyBzbmFwc2hvdC4KIAkgKgorCSAqIE5vdGUgdGhhdCB3YW50 aW5nIHRoZSBpbmRleCB0dXBsZSAoeHNfd2FudF9pdHVwKSBpcyBub3QgYnkgaXRzZWxmIGEK KwkgKiByZWFzb24gdG8gcmV0YWluIHRoZSBwaW46IGJ0cmVlIGNvcGllcyBlYWNoIHJldHVy bmVkIEluZGV4VHVwbGUgaW50bworCSAqIHNvLT5jdXJyVHVwbGVzIChzY2FuLWxvY2FsIG1l bW9yeSkgYW5kIHBvaW50cyB4c19pdHVwIHRoZXJlLCBzbyB0aGUKKwkgKiB0dXBsZSBzdGF5 cyB2YWxpZCBhZnRlciB0aGUgcGluIGlzIGRyb3BwZWQuICBPbmx5IGdlbnVpbmUgaW5kZXgt b25seQorCSAqIHNjYW5zICh4c19pbmRleF9vbmx5KSwgd2hpY2ggbWF5IHJldHVybiBhIHR1 cGxlIHdpdGhvdXQgZmV0Y2hpbmcgdGhlCisJICogaGVhcCBhbmQgdGhlcmVmb3JlIHJlbHkg b24gdGhlIFZNLCBtdXN0IGtlZXAgdGhlIHBpbi4gIEEgcGxhaW4gaW5kZXgKKwkgKiBzY2Fu IHRoYXQgc2V0cyB4c193YW50X2l0dXAgbWVyZWx5IHRvIGluc3BlY3Qgb3IgcmVjaGVjayB0 aGUgaW5kZXgKKwkgKiB0dXBsZSBzdGlsbCBmZXRjaGVzIGFuZCB2aXNpYmlsaXR5LWNoZWNr cyB0aGUgaGVhcCwgc28gaXQgaGFzIG5vIFZNCisJICogcmFjZSBhbmQgbWF5IGRyb3AgcGlu cyBsaWtlIGFueSBvdGhlciBwbGFpbiBzY2FuLgorCSAqCiAJICogQWxzbyBvcHQgb3V0IG9m IGRyb3BwaW5nIGxlYWYgcGFnZSBwaW5zIGVhZ2VybHkgZHVyaW5nIGJpdG1hcCBzY2Fucy4K IAkgKiBQaW5zIGNhbm5vdCBiZSBoZWxkIGZvciBtb3JlIHRoYW4gYW4gaW5zdGFudCBkdXJp bmcgYml0bWFwIHNjYW5zIGVpdGhlcgogCSAqIHdheSwgc28gd2UgbWlnaHQgYXMgd2VsbCBh dm9pZCB3YXN0aW5nIGN5Y2xlcyBvbiBhY3F1aXJpbmcgcGFnZSBMU05zLgpAQCAtNDE2LDcg KzQyNiw3IEBAIGJ0cmVzY2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5 LCBpbnQgbnNjYW5rZXlzLAogCSAqCiAJICogTm90ZTogc28tPmRyb3BQaW4gc2hvdWxkIG5l dmVyIGNoYW5nZSBhY3Jvc3MgcmVzY2Fucy4KIAkgKi8KLQlzby0+ZHJvcFBpbiA9ICghc2Nh bi0+eHNfd2FudF9pdHVwICYmCisJc28tPmRyb3BQaW4gPSAoIXNjYW4tPnhzX2luZGV4X29u bHkgJiYKIAkJCQkgICBJc01WQ0NMaWtlU25hcHNob3Qoc2Nhbi0+eHNfc25hcHNob3QpICYm CiAJCQkJICAgc2Nhbi0+aGVhcFJlbGF0aW9uICE9IE5VTEwpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwppbmRleCAxMmMyNjc0Y2JkNy4uZjA1Y2FiYzhjNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMjQyLDE5ICsyNDIsMzEgQEAgYm9v bAogdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVsYXRpb24gcmVsLAogCQkJCQkJ CSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJ CQkJICBib29sICphbGxfZGVhZCkKKwkJCQkJCQkgIGJvb2wgKmFsbF9kZWFkLAorCQkJCQkJ CSAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVja19vdXQsCisJCQkJCQkJICBUdXBsZVRhYmxl U2xvdCAqa2VlcF9zbG90KQogewogCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW47CiAJVHVw bGVUYWJsZVNsb3QgKnNsb3Q7CiAJYm9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCWJvb2wJ CWZvdW5kOwogCi0Jc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CisJc2xv dCA9IGtlZXBfc2xvdCA/IGtlZXBfc2xvdCA6IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVM TCk7CiAJc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCwgU09fTk9ORSk7CiAJ Zm91bmQgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShzY2FuLCB0aWQsIHNuYXBzaG90LCBz bG90LCAmY2FsbF9hZ2FpbiwKIAkJCQkJCQkJCWFsbF9kZWFkKTsKKworCS8qCisJICogU3Vy ZmFjZSB0aGUgdGFibGUgQU0ncyBIT1QvU0lVIHJlY2hlY2sgc2lnbmFsIHRvIHRoZSBjYWxs ZXIgKHRoZSBpbmRleAorCSAqIEFNLCB3aGljaCByZWNoZWNrcyB0aGUgYXJyaXZpbmcgbGVh ZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSk7IHRoZQorCSAqIHNjYW4gaXMgZnJlZWQg YmVsb3csIHNvIGNvcHkgaXQgb3V0LgorCSAqLworCWlmIChob3RfaW5kZXhlZF9yZWNoZWNr X291dCAhPSBOVUxMKQorCQkqaG90X2luZGV4ZWRfcmVjaGVja19vdXQgPSBmb3VuZCAmJiBz Y2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrOworCiAJdGFibGVfaW5kZXhfZmV0Y2hfZW5k KHNjYW4pOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJaWYgKGtl ZXBfc2xvdCA9PSBOVUxMKQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp OwogCiAJcmV0dXJuIGZvdW5kOwogfQpAQCAtMzYxLDggKzM3Myw3IEBAIHZvaWQKIHNpbXBs ZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAog CQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCi0JCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJ CQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJCSAgQml0bWFw c2V0ICoqbW9kaWZpZWRfYXR0cnMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWls dXJlRGF0YSB0bWZkOwpAQCAtMzczLDggKzM4NCw3IEBAIHNpbXBsZV90YWJsZV90dXBsZV91 cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkwLCBzbmFw c2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1p dCAqLyAsCiAJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsCi0JCQkJCQkJCW1vZGlmaWVkX2lk eF9hdHRycywKLQkJCQkJCQkJdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQltb2RpZmllZF9h dHRycyk7CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMK aW5kZXggZmQ3ZDJlYzBlM2EuLmVmZDhhMTljMjI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGlu Zy5jCkBAIC0xOCwxMSArMTgsMTQgQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hh Y3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9p bmRleGluZy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAi bm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVsY2FjaGUuaCIKIAogCiAvKgpAQCAtNjksMTEgKzcyLDE3IEBAIENhdGFsb2dD bG9zZUluZGV4ZXMoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUpCiAgKgogICogVGhpcyBz aG91bGQgYmUgY2FsbGVkIGZvciBlYWNoIGluc2VydGVkIG9yIHVwZGF0ZWQgY2F0YWxvZyB0 dXBsZS4KICAqCi0gKiBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgY3V0LWRvd24gdmVyc2lvbiBv ZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMuCisgKiBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgY3V0 LWRvd24gdmVyc2lvbiBvZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMuICBGb3IKKyAqIFVQREFU RSBwYXRocyB0aGUgY2FsbGVyIHN1cHBsaWVzIHVwZGF0ZV9hbGxfaW5kZXhlcyAoZnJvbQor ICogdGFibGVfdHVwbGVfdXBkYXRlIC8gc2ltcGxlX2hlYXBfdXBkYXRlKSBzbyB3ZSBjYW4g dGVsbCB3aGljaCBpbmRleGVzCisgKiBhY3R1YWxseSBuZWVkIGEgbmV3IGVudHJ5OiB1cGRh dGVfYWxsX2luZGV4ZXMgaXMgdHJ1ZSBmb3IgYSBmcmVzaCBpbnNlcnQgb3IKKyAqIGEgbm9u LUhPVCB1cGRhdGUgKGV2ZXJ5IGluZGV4IGdldHMgYW4gZW50cnkpLCBmYWxzZSBmb3IgYSBj bGFzc2ljLUhPVAorICogY2F0YWxvZyB1cGRhdGUgKG5vbi1zdW1tYXJpemluZyBpbmRleGVz IGFyZSBza2lwcGVkLCBzaW5jZSB0aGVpciBleGlzdGluZworICogZW50cmllcyBzdGlsbCBy ZXNvbHZlIHRoZSBjaGFpbikuCiAgKi8KIHN0YXRpYyB2b2lkCiBDYXRhbG9nSW5kZXhJbnNl cnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0J CQkJICAgVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzKQorCQkJCSAgIGJvb2wgdXBk YXRlX2FsbF9pbmRleGVzKQogewogCWludAkJCWk7CiAJaW50CQkJbnVtSW5kZXhlczsKQEAg LTgzLDIwICs5Miw2IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBp bmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAlJbmRleEluZm8gKippbmRleEluZm9B cnJheTsKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlpc251bGxb SU5ERVhfTUFYX0tFWVNdOwotCWJvb2wJCW9ubHlTdW1tYXJpemVkID0gKHVwZGF0ZUluZGV4 ZXMgPT0gVFVfU3VtbWFyaXppbmcpOwotCi0JLyoKLQkgKiBIT1QgdXBkYXRlIGRvZXMgbm90 IHJlcXVpcmUgaW5kZXggaW5zZXJ0cy4gQnV0IHdpdGggYXNzZXJ0cyBlbmFibGVkIHdlCi0J ICogd2FudCB0byBjaGVjayB0aGF0IGl0J2QgYmUgbGVnYWwgdG8gY3VycmVudGx5IGluc2Vy dCBpbnRvIHRoZQotCSAqIHRhYmxlL2luZGV4LgotCSAqLwotI2lmbmRlZiBVU0VfQVNTRVJU X0NIRUNLSU5HCi0JaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJiAhb25s eVN1bW1hcml6ZWQpCi0JCXJldHVybjsKLSNlbmRpZgotCi0JLyogV2hlbiBvbmx5IHVwZGF0 aW5nIHN1bW1hcml6ZWQgaW5kZXhlcywgdGhlIHR1cGxlIGhhcyB0byBiZSBIT1QuICovCi0J QXNzZXJ0KCghb25seVN1bW1hcml6ZWQpIHx8IEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1 cGxlKSk7CiAKIAkvKgogCSAqIEdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzdGF0ZSBzdHJ1 Y3R1cmUuICBGYWxsIG91dCBpZiBub3RoaW5nIHRvIGRvLgpAQCAtMTIwLDYgKzExNSw3IEBA IENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1 cGxlIGhlYXBUdXBsZSwKIAl7CiAJCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAkJUmVsYXRp b24JaW5kZXg7CisJCWJvb2wJCWluZGV4X3VuY2hhbmdlZDsKIAogCQlpbmRleEluZm8gPSBp bmRleEluZm9BcnJheVtpXTsKIAkJaW5kZXggPSByZWxhdGlvbkRlc2NzW2ldOwpAQCAtMTM4 LDIwICsxMzQsMTYgQEAgQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGlu ZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAogCQlBc3NlcnQoaW5kZXgtPnJkX2luZGV4 LT5pbmRpbW1lZGlhdGUpOwogCQlBc3NlcnQoaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0 dHJzICE9IDApOwogCi0JCS8qIHNlZSBlYXJsaWVyIGNoZWNrIGFib3ZlICovCi0jaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpICYmICFvbmx5U3VtbWFyaXplZCkKLQkJewotCQkJQXNzZXJ0KCFSZWluZGV4SXNQcm9j ZXNzaW5nSW5kZXgoUmVsYXRpb25HZXRSZWxpZChpbmRleCkpKTsKLQkJCWNvbnRpbnVlOwot CQl9Ci0jZW5kaWYJCQkJCQkJLyogVVNFX0FTU0VSVF9DSEVDS0lORyAqLwotCiAJCS8qCi0J CSAqIFNraXAgaW5zZXJ0aW9ucyBpbnRvIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdl IG9ubHkgbmVlZCB0bwotCQkgKiB1cGRhdGUgc3VtbWFyaXppbmcgaW5kZXhlcy4KKwkJICog RGVjaWRlIHdoZXRoZXIgdGhpcyBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeS4gIE9uIElOU0VS VCBvciBhCisJCSAqIG5vbi1IT1QgdXBkYXRlICh1cGRhdGVfYWxsX2luZGV4ZXMpIGV2ZXJ5 IGluZGV4IGdldHMgb25lLiAgT24gYQorCQkgKiBjbGFzc2ljLUhPVCBjYXRhbG9nIHVwZGF0 ZSBubyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkLCBzbyB0aGUKKwkJICogbm9uLXN1bW1h cml6aW5nIGluZGV4ZXMgYXJlIHNraXBwZWQgKHN1bW1hcml6aW5nIGluZGV4ZXMgYWx3YXlz IGdldAorCQkgKiBhIGNoYW5jZSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwgc3VtbWFy aWVzIGJlbG93KS4KIAkJICovCi0JCWlmIChvbmx5U3VtbWFyaXplZCAmJiAhaW5kZXhJbmZv LT5paV9TdW1tYXJpemluZykKKwkJaW5kZXhfdW5jaGFuZ2VkID0gIXVwZGF0ZV9hbGxfaW5k ZXhlczsKKworCQlpZiAoaW5kZXhfdW5jaGFuZ2VkICYmICFpbmRleEluZm8tPmlpX1N1bW1h cml6aW5nKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTI0MCw3ICsyMzIsNyBAQCBDYXRh bG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCkKIAogCXNp bXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0 KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRl LCB0dXAsIHRydWUpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOwogfQogCkBA IC0yNjAsNyArMjUyLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVsYXRpb24g aGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVs LCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7 CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHRydWUpOwogfQogCiAvKgpA QCAtMjkxLDcgKzI4Myw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJbmZvKFJl bGF0aW9uIGhlYXBSZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBsZSA9IEV4 ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVlKTsKIAkJ dHVwbGUtPnRfdGFibGVPaWQgPSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJbmRleElu c2VydChpbmRzdGF0ZSwgdHVwbGUsIHRydWUpOwogCiAJCWlmIChzaG91bGRfZnJlZSkKIAkJ CWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywxNSArMzA1LDE1IEBAIHZvaWQKIENh dGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRh dGEgKm90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3Rh dGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOworCWJvb2wJ CXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMo aGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVzKGhlYXBS ZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwgJnVwZGF0 ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1 cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0 dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVw LCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUp OwogfQogCkBAIC0zMzcsMTMgKzMyOSwxMyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVVcGRhdGVX aXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkK IHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJYm9vbAkJ dXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJhaW50cyho ZWFwUmVsLCB0dXApOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1 cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlk LCB0dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRz dGF0ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90 b2FzdGluZy5jCmluZGV4IDRhYTUyYTRiZDI1Li5lMGJjMDFmNjNkMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwpAQCAtMzA3LDggKzMwNyw2IEBAIGNyZWF0ZV90b2FzdF90YWJsZShS ZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5kZXhJ bmZvLT5paV9VbmlxdWUgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5j dCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzID0gdHJ1ZTsKLQlp bmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsKLQlpbmRleEluZm8tPmlp X0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0g ZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCWluZGV4 SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5k ZXggOTc2MWJkYWM5ZDAuLjcwNmJjMjQ0OTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYwpA QCAtMjY4OCwxNCArMjY4OCwxNCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogewogCUxvY2tUdXBsZU1v ZGUgbG9ja21vZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKLQlUVV9VcGRhdGVJbmRleGVz IHVwZGF0ZV9pbmRleGVzOwogCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlU TV9SZXN1bHQJcmVzOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQg aW5kZXhlZCBhdHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCi0JICogKG9uZGlzaykg YW5kIG5ldyAoc3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBj b3JyZWN0Ci0JICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAi bm8gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqIChvbmRpc2spIGFuZCBuZXcgKHNw aWxsZWQpIHR1cGxlcy4gIGhlYXBfdXBkYXRlIG5lZWRzIHRoaXMgdG8gbWFrZSBhCisJICog Y29ycmVjdCBIT1QgZGVjaXNpb247IHdpdGhvdXQgaXQgbW9kaWZpZWRfaWR4X2F0dHJzIHdv dWxkIGJlIE5VTEwgYW5kCisJICogaGVhcF91cGRhdGUgd291bGQgYWx3YXlzIHRyZWF0IHRo ZSB1cGRhdGUgYXMgSE9ULWVsaWdpYmxlLgogCSAqLwogCW1vZGlmaWVkX2lkeF9hdHRycyA9 IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAogCQkJCQkJCQkJ CQkJCW9uZGlza190dXBsZSwKQEAgLTI3MTAsMjkgKzI3MTAsMzMgQEAgYXBwbHlfY29uY3Vy cmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBs ZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2RpZmllZF9p ZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUs CisJCQkJCQkJICZtb2RpZmllZF9pZHhfYXR0cnMpOwogCWlmIChyZXMgIT0gVE1fT2spCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9O X0ZBSUxVUkUpLAogCQkJCWVycm1zZygiY291bGQgbm90IGFwcGx5IGNvbmN1cnJlbnQgJXMg b24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgIlVQREFURSIsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKIAotCWlmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9Ob25lKQor CWlmIChjaGdjeHQtPmNjX3JyaS0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJtc19pc19l bXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRf SVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRh YmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JCWlm ICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRf T05MWV9TVU1NQVJJWklORzsKKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKGNoZ2N4dC0+Y2Nf cnJpLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQlFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoY2hn Y3h0LT5jY19ycmksCiAJCQkJCQkJICBjaGdjeHQtPmNjX2VzdGF0ZSwKLQkJCQkJCQkgIGZs YWdzLAorCQkJCQkJCSAgRUlJVF9JU19VUERBVEUgfAorCQkJCQkJCSAgKGFsbF9pbmRleGVz ID8KKwkJCQkJCQkgICAwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCiAJCQkJCQkJICBzcGls bGVkX3R1cGxlLAogCQkJCQkJCSAgTklMLCBOVUxMKTsKIAl9CiAKLQlwZ3N0YXRfcHJvZ3Jl c3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRFRCwgMSk7 Ci0KIAlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCisJcGdzdGF0X3Byb2dyZXNz X2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQsIDEpOwog fQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRl eCBlYjM4MzgxMjkwMS4uYTIzMTQ0NTkyZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC0xMTMsMTEgKzExMywxMyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm5vZGVz L25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBlcy5o IgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwu aCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIHdhaXRNb2RlIGFyZ3VtZW50 IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCkBAIC0xNDAs MTEgKzE0Miw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBib29sIGlu ZGV4X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25z dHJfcHJvY3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVlcywgY29u c3QgYm9vbCAqZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVtICpuZXdf dmFsdWVzKTsKLXN0YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsIElu ZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u KTsKLXN0YXRpYyBib29sIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAq bm9kZSwKLQkJCQkJCQkJCQkJQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scyk7CiBzdGF0aWMg dm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0 YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBlLCBPaWQg YXR0dHlwaWQpOwogCkBAIC0yNzcsMjQgKzI3NCwxMiBAQCBFeGVjQ2xvc2VJbmRpY2VzKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAgKgkJaW50byBhbGwgdGhlIHJlbGF0aW9u cyBpbmRleGluZyB0aGUgcmVzdWx0IHJlbGF0aW9uCiAgKgkJd2hlbiBhIGhlYXAgdHVwbGUg aXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVzdWx0IHJlbGF0aW9uLgogICoKLSAqCQlXaGVuIEVJ SVRfSVNfVVBEQVRFIGlzIHNldCBhbmQgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlzbid0LAot ICoJCWV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4gVVBEQVRFIHRoYXQgY291bGQgbm90IHVz ZSBhbgotICoJCW9wdGltaXphdGlvbiBsaWtlIGhlYXBhbSdzIEhPVCAoaW4gbW9yZSBnZW5l cmFsIHRlcm1zIGEKLSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxh Y2UgYW5kIHNldAotICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfQWxsKS4gIFJlY2Vpdmlu ZyB0aGlzIGhpbnQgbWFrZXMKLSAqCQl1cyBjb25zaWRlciBpZiB3ZSBzaG91bGQgcGFzcyBk b3duIHRoZSAnaW5kZXhVbmNoYW5nZWQnCi0gKgkJaGludCBpbiB0dXJuLiAgVGhhdCdzIHNv bWV0aGluZyB0aGF0IHdlIGZpZ3VyZSBvdXQgZm9yCi0gKgkJZWFjaCBpbmRleF9pbnNlcnQo KSBjYWxsIGlmZiBFSUlUX0lTX1VQREFURSBpcyBzZXQuCi0gKgkJKFdoZW4gdGhhdCBmbGFn IGlzIG5vdCBzZXQgd2UgYWxyZWFkeSBrbm93IG5vdCB0byBwYXNzIHRoZQotICoJCWhpbnQg dG8gYW55IGluZGV4LikKLSAqCi0gKgkJSWYgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlzIHNl dCwgYW4gZXF1aXZhbGVudCBvcHRpbWl6YXRpb24gdG8KLSAqCQlIT1QgaGFzIGJlZW4gYXBw bGllZCBhbmQgYW55IHVwZGF0ZWQgY29sdW1ucyBhcmUgaW5kZXhlZAotICoJCW9ubHkgYnkg c3VtbWFyaXppbmcgaW5kZXhlcyAob3IgaW4gbW9yZSBnZW5lcmFsIHRlcm1zIGEKLSAqCQlj YWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxhY2UgYW5kIHNldAotICoJCSd1 cGRhdGVfaW5kZXhlcycgdG8gVFVfU3VtbWFyaXppbmcpLiBXZSBjYW4gKGFuZCBtdXN0KQot ICoJCXRoZXJlZm9yZSBvbmx5IHVwZGF0ZSB0aGUgaW5kZXhlcyB0aGF0IGhhdmUKLSAqCQkn YW1zdW1tYXJpemluZycgPSB0cnVlLgorICoJCVdoZW4gRUlJVF9JU19VUERBVEUgaXMgc2V0 LCB0aGUgZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbgorICoJCVVQREFURS4gIFRoZSBwZXIt aW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZyAocG9wdWxhdGVkIGJ5CisgKgkJRXhlY1Nl dEluZGV4VW5jaGFuZ2VkKCkpIGluZGljYXRlcyB3aGV0aGVyIGVhY2ggaW5kZXgncyBrZXkK KyAqCQl2YWx1ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGlzIHVwZGF0ZS4gIFdoZW4gaWlfSW5k ZXhVbmNoYW5nZWQKKyAqCQlpcyB0cnVlLCB3ZSBwYXNzIGluZGV4VW5jaGFuZ2VkPXRydWUg dG8gaW5kZXhfaW5zZXJ0KCkgYXMgYQorICoJCWhpbnQgZm9yIGJvdHRvbS11cCBkZWxldGlv biBvcHRpbWl6YXRpb24uCiAgKgogICoJCVVuaXF1ZSBhbmQgZXhjbHVzaW9uIGNvbnN0cmFp bnRzIGFyZSBlbmZvcmNlZCBhdCB0aGUgc2FtZQogICoJCXRpbWUuICBUaGlzIHJldHVybnMg YSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIGFueSB1bmlxdWUgb3IKQEAgLTM3MCwxMSArMzU1 LDMyIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2tpcCBwcm9jZXNzaW5nIG9mIG5v bi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBkYXRlCi0JCSAqIHN1bW1hcml6 aW5nIGluZGV4ZXMKKwkJICogVVBEQVRFIHNraXAgcnVsZS4gIEV4ZWNTZXRJbmRleFVuY2hh bmdlZCBwb3B1bGF0ZWQKKwkJICogaWlfSW5kZXhOZWVkc1VwZGF0ZSBmb3IgZXZlcnkgaW5k ZXg6IHRydWUgd2hlbiB0aGUgdGFibGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVwZW5kZW50 IG5ldyB2ZXJzaW9uLCBvciB3aGVuIGFueSBhdHRyaWJ1dGUgdGhlIGluZGV4CisJCSAqIHJl ZmVyZW5jZXMgKGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNh dGUgY29sdW1uKQorCQkgKiBvdmVybGFwcyB0aGUgbW9kaWZpZWQtYXR0cnMgYml0bWFwLiAg V2hlbiBpdCBpcyBmYWxzZSBvbiBhCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleCB3ZSBz a2lwIHRoZSBpbnNlcnQgZW50aXJlbHk7IHRoZSBIT1QgY2hhaW4KKwkJICoga2VlcHMgZXhp c3RpbmcgZW50cmllcyBwb2ludGluZyBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1bW1hcml6aW5n CisJCSAqIGluZGV4ZXMgYWx3YXlzIGdldCBhIGNoYW5jZSB0byB1cGRhdGUgdGhlaXIgYmxv Y2stbGV2ZWwgc3VtbWFyaWVzLgogCQkgKi8KLQkJaWYgKChmbGFncyAmIEVJSVRfT05MWV9T VU1NQVJJWklORykgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCWlmICgoZmxh Z3MgJiBFSUlUX0lTX1VQREFURSkgJiYKKwkJCSFpbmRleEluZm8tPmlpX0luZGV4TmVlZHNV cGRhdGUgJiYKKwkJCSFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQl7CisJCQkvKgor CQkJICogVGhpcyBpbmRleCB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0cyBrZXkgYXR0cmlidXRl cyBkaWQgbm90CisJCQkgKiBjaGFuZ2UuICBXaGVuIHRoZSBvdmVyYWxsIHVwZGF0ZSBpcyBh IEhPVC1pbmRleGVkIHVwZGF0ZSAoc29tZQorCQkJICogb3RoZXIgbm9uLXN1bW1hcml6aW5n IGluZGV4IGRpZCBjaGFuZ2UpLCByZWNvcmQgdGhlIHNraXAgb24KKwkJCSAqIHRoaXMgaW5k ZXgncyBwZ3N0YXQgZW50cnkuICBBIGNsYXNzaWMtSE9UIHVwZGF0ZSAobm8gaW5kZXhlZAor CQkJICogYXR0cmlidXRlIGNoYW5nZWQpIGRvZXMgbm90IHJlYWNoIHRoaXMgcGF0aCAtLQor CQkJICogRXhlY0luc2VydEluZGV4VHVwbGVzIGlzIG9ubHkgaW52b2tlZCB3aGVuIGF0IGxl YXN0IG9uZSBpbmRleAorCQkJICogbmVlZHMgYSBmcmVzaCBlbnRyeS4KKwkJCSAqLworCQkJ aWYgKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkKKwkJCQlwZ3N0YXRfY291bnRfaG90 X2luZGV4ZWRfdXBkX3NraXBwZWQoaW5kZXhSZWxhdGlvbik7CiAJCQljb250aW51ZTsKKwkJ fQogCiAJCS8qIENoZWNrIGZvciBwYXJ0aWFsIGluZGV4ICovCiAJCWlmIChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZSAhPSBOSUwpCkBAIC0zOTcsNiArNDAzLDE3IEBAIEV4ZWNJbnNlcnRJ bmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCWNvbnRpbnVl OwogCQl9CiAKKwkJLyoKKwkJICogTm9uLXNraXBwZWQgaW5kZXggdW5kZXIgYSBIT1QtaW5k ZXhlZCB1cGRhdGU6IHRoaXMgaW5kZXggaXMKKwkJICogcmVjZWl2aW5nIGEgZnJlc2ggZW50 cnkgYmVjYXVzZSBvbmUgb2YgaXRzIGtleSBhdHRyaWJ1dGVzIGNoYW5nZWQuCisJCSAqIFN1 bW1hcml6aW5nIGluZGV4ZXMgYWx3YXlzIGluc2VydCByZWdhcmRsZXNzIG9mIHRoZSBIT1Qt aW5kZXhlZAorCQkgKiBkZWNpc2lvbiAoc2FtZSBhcyBjbGFzc2ljIEhPVCksIHNvIHRoZXkg YXJlIG5vdCBjb3VudGVkIGhlcmUuICBDb3VudAorCQkgKiBvbmx5IG5vdyB0aGF0IHRoZSBw YXJ0aWFsLWluZGV4IHByZWRpY2F0ZSAoaWYgYW55KSBoYXMgYWxzbyBwYXNzZWQsCisJCSAq IHNvIGEgcHJlZGljYXRlLWV4Y2x1ZGVkIHBhcnRpYWwgaW5kZXggaXMgbm90IGNvdW50ZWQg YXMgbWF0Y2hlZC4KKwkJICovCisJCWlmICgoZmxhZ3MgJiBFSUlUX0lTX0hPVF9JTkRFWEVE KSAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKKwkJCXBnc3RhdF9jb3VudF9ob3Rf aW5kZXhlZF91cGRfbWF0Y2hlZChpbmRleFJlbGF0aW9uKTsKKwogCQkvKgogCQkgKiBGb3Jt SW5kZXhEYXR1bSBmaWxscyBpbiBpdHMgdmFsdWVzIGFuZCBpc251bGwgcGFyYW1ldGVycyB3 aXRoIHRoZQogCQkgKiBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBjb2x1bW4ocykgb2Yg dGhlIGluZGV4LgpAQCAtNDM2LDE1ICs0NTMsMTMgQEAgRXhlY0luc2VydEluZGV4VHVwbGVz KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQljaGVja1VuaXF1ZSA9IFVOSVFV RV9DSEVDS19QQVJUSUFMOwogCiAJCS8qCi0JCSAqIFRoZXJlJ3MgZGVmaW5pdGVseSBnb2lu ZyB0byBiZSBhbiBpbmRleF9pbnNlcnQoKSBjYWxsIGZvciB0aGlzCi0JCSAqIGluZGV4LiAg SWYgd2UncmUgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgYW4gVVBEQVRFIHN0YXRlbWVudCwK LQkJICogY29uc2lkZXIgaWYgdGhlICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgc2hv dWxkIGJlIHBhc3NlZC4KKwkJICogRm9yIFVQREFURSBvcGVyYXRpb25zLCB1c2UgdGhlIHBl ci1pbmRleCBpaV9JbmRleFVuY2hhbmdlZCBmbGFnCisJCSAqIChwb3B1bGF0ZWQgYnkgRXhl Y1NldEluZGV4VW5jaGFuZ2VkKSB0byBoaW50IHdoZXRoZXIgdGhlIGluZGV4CisJCSAqIHZh bHVlcyBhcmUgdW5jaGFuZ2VkLiAgVGhpcyBoZWxwcyB0aGUgaW5kZXggQU0gb3B0aW1pemUg Zm9yCisJCSAqIGJvdHRvbS11cCBkZWxldGlvbiBvZiBkdXBsaWNhdGUgaW5kZXggZW50cmll cy4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gKChmbGFncyAmIEVJSVRfSVNfVVBEQVRF KSAmJgotCQkJCQkJICBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8s Ci0JCQkJCQkJCQkJCQkJZXN0YXRlLAotCQkJCQkJCQkJCQkJCWluZGV4SW5mbywKLQkJCQkJ CQkJCQkJCQlpbmRleFJlbGF0aW9uKSk7CisJCWluZGV4VW5jaGFuZ2VkID0gKGZsYWdzICYg RUlJVF9JU19VUERBVEUpID8KKwkJCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgOiBm YWxzZTsKIAogCQlzYXRpc2ZpZXNDb25zdHJhaW50ID0KIAkJCWluZGV4X2luc2VydChpbmRl eFJlbGF0aW9uLCAvKiBpbmRleCByZWxhdGlvbiAqLwpAQCAtNzIxLDYgKzczNiw3IEBAIGNo ZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAlpbnQJCQlpOwogCWJvb2wJCWNvbmZsaWN0OwogCWJvb2wJCWZvdW5k X3NlbGY7CisJYm9vbAkJZm91bmRfc2VsZl9zaXVfaGl0OwogCUV4cHJDb250ZXh0ICplY29u dGV4dDsKIAlUdXBsZVRhYmxlU2xvdCAqZXhpc3Rpbmdfc2xvdDsKIAlUdXBsZVRhYmxlU2xv dCAqc2F2ZV9zY2FudHVwbGU7CkBAIC04MjMsNiArODM5LDcgQEAgY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog cmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9zZWxmID0gZmFsc2U7CisJZm91 bmRfc2VsZl9zaXVfaGl0ID0gZmFsc2U7CiAJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihoZWFwLCBpbmRleCwKIAkJCQkJCQkJICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCwKIAkJCQkJCQkJIFNPX05PTkUpOwpAQCAtODM4LDE0ICs4NTUsMjggQEAgcmV0 cnk6CiAJCWNoYXIJICAgKmVycm9yX2V4aXN0aW5nOwogCiAJCS8qCi0JCSAqIElnbm9yZSB0 aGUgZW50cnkgZm9yIHRoZSB0dXBsZSB3ZSdyZSB0cnlpbmcgdG8gY2hlY2suCisJCSAqIEln bm9yZSB0aGUgZW50cnkgZm9yIHRoZSB0dXBsZSB3ZSdyZSB0cnlpbmcgdG8gY2hlY2suICBX aXRoIEhPVC0KKwkJICogaW5kZXhlZCAoaG90LWluZGV4ZWQpIHVwZGF0ZXMsIHNldmVyYWwg aW5kZXggZW50cmllcyBtYXkgY2hhaW4tbGVhZAorCQkgKiB0byB0aGUgc2FtZSBoZWFwIHR1 cGxlIChhIHN0YWxlIGVudHJ5IGZvciB0aGUgb2xkIGtleSBhbmQgYSBmcmVzaAorCQkgKiBl bnRyeSBmb3IgdGhlIG5ldyBrZXkpLiAgVGhleSBhbGwgcmVzb2x2ZSB0byB0aGUgc2FtZSBU SUQgaGVyZSBhbmQKKwkJICogbXVzdCBhbGwgYmUgdHJlYXRlZCBhcyAic2VsZiIsIG5vdCBh cyBhIGR1cGxpY2F0ZSBlcnJvci4gIFdlCisJCSAqIHRvbGVyYXRlIHRoZSBkdXBsaWNhdGUg c2VsZiBhcnJpdmFsIHdoZW5ldmVyICplaXRoZXIqIHRoaXMKKwkJICogaXRlcmF0aW9uIG9y IGFuIGVhcmxpZXIgb25lIHNhdyB4c19ob3RfaW5kZXhlZF9zdGFsZSAtLSB0aGUKKwkJICog Y2Fub25pY2FsIGRpcmVjdCBlbnRyeSBhbmQgdGhlIHN0YWxlIGNoYWluLXdhbGsgZW50cmll cyBjYW4gYXJyaXZlCisJCSAqIGluIGVpdGhlciBvcmRlci4KIAkJICovCiAJCWlmIChJdGVt UG9pbnRlcklzVmFsaWQodHVwbGVpZCkgJiYKIAkJCUl0ZW1Qb2ludGVyRXF1YWxzKHR1cGxl aWQsICZleGlzdGluZ19zbG90LT50dHNfdGlkKSkKIAkJewotCQkJaWYgKGZvdW5kX3NlbGYp CQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLworCQkJaWYgKGluZGV4X3NjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWZvdW5kX3NlbGZfc2l1X2hpdCA9IHRydWU7CisJCQlpZiAo Zm91bmRfc2VsZikKKwkJCXsKKwkJCQlpZiAoZm91bmRfc2VsZl9zaXVfaGl0KQorCQkJCQlj b250aW51ZTsKIAkJCQllbG9nKEVSUk9SLCAiZm91bmQgc2VsZiB0dXBsZSBtdWx0aXBsZSB0 aW1lcyBpbiBpbmRleCBcIiVzXCIiLAogCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo aW5kZXgpKTsKKwkJCX0KIAkJCWZvdW5kX3NlbGYgPSB0cnVlOwogCQkJY29udGludWU7CiAJ CX0KQEAgLTg2OSw2ICs5MDAsMzEgQEAgcmV0cnk6CiAJCQkJCQkJCSAqIGNvbmZsaWN0ICov CiAJCX0KIAorCQkvKgorCQkgKiBIT1QtaW5kZXhlZCBjaGFpbnMgY2FuIHJlYWNoIHRoaXMg bG9vcCB2aWEgYSBzdGFsZSBidHJlZSBsZWFmIGVudHJ5CisJCSAqIHdob3NlIGtleSBpcyBk aWZmZXJlbnQgZnJvbSB0aGUgaGVhcCB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybS4KKwkJ ICogZXhpc3RpbmdfdmFsdWVzIGhvbGRzIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUncyBpbmRl eC1mb3JtCisJCSAqIChGb3JtSW5kZXhEYXR1bSBhYm92ZSkuICBDb21wYXJlIGl0IGFnYWlu c3Qgb3VyIG5ldyB0dXBsZSdzIHZhbHVlcworCQkgKiB1c2luZyB0aGUgc2FtZSBjb25zdHJh aW50IG9wZXJhdG9yczsgaWYgdGhleSBkb24ndCBhZ3JlZSwgdGhlCisJCSAqIGNoYWluLXdh bGtlZCB0dXBsZSBpcyBub3QgYWN0dWFsbHkgaW4gY29uZmxpY3Qgd2l0aCBvdXIgaW5zZXJ0 aW9uCisJCSAqIC0tIGl0IGp1c3Qgc2hhcmVkIGEgVElEIHdpdGggYSBzdGFsZSBsZWFmIGVu dHJ5IHdlIGhhcHBlbmVkIHRvIHNjYW4KKwkJICogdGhyb3VnaC4gIFNraXAgaXQuCisJCSAq CisJCSAqIFRoaXMgbWlycm9ycyBfYnRfY2hlY2tfdW5pcXVlJ3MgSE9ULWluZGV4ZWQgcmVj aGVjayBwYXRoOyBmb3IKKwkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzIHRoZSB1c2VyLXN1 cHBsaWVkIG9wZXJhdG9yIGluIGNvbnN0cl9wcm9jcworCQkgKiByZXBsYWNlcyB0aGUgYnRy ZWUgZXF1YWxpdHkgY29tcGFyYXRvciwgYW5kCisJCSAqIGluZGV4X3JlY2hlY2tfY29uc3Ry YWludCBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgZWl0aGVyLgorCQkgKi8KKwkJaWYgKGlu ZGV4X3NjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQl7CisJCQlpZiAoIWluZGV4X3Jl Y2hlY2tfY29uc3RyYWludChpbmRleCwKKwkJCQkJCQkJCQkgIGNvbnN0cl9wcm9jcywKKwkJ CQkJCQkJCQkgIGV4aXN0aW5nX3ZhbHVlcywKKwkJCQkJCQkJCQkgIGV4aXN0aW5nX2lzbnVs bCwKKwkJCQkJCQkJCQkgIHZhbHVlcykpCisJCQkJY29udGludWU7CQkvKiBzdGFsZSBjaGFp biBoaXQsIG5vdCBhIHJlYWwgY29uZmxpY3QgKi8KKwkJfQorCiAJCS8qCiAJCSAqIEF0IHRo aXMgcG9pbnQgd2UgaGF2ZSBlaXRoZXIgYSBjb25mbGljdCBvciBhIHBvdGVudGlhbCBjb25m bGljdC4KIAkJICoKQEAgLTEwMDksMTQ5ICsxMDY1LDk0IEBAIGluZGV4X3JlY2hlY2tfY29u c3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25zdHJfcHJvY3MsCiB9CiAK IC8qCi0gKiBDaGVjayBpZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoKSBzaG91bGQgcGFzcyBp bmRleFVuY2hhbmdlZCBoaW50LgorICogRXhlY1NldEluZGV4VW5jaGFuZ2VkCisgKgorICog UG9wdWxhdGUgdHdvIHBlci1pbmRleCBmbGFncyBhaGVhZCBvZiBFeGVjSW5zZXJ0SW5kZXhU dXBsZXM6CisgKgorICogICAtIGlpX0luZGV4TmVlZHNVcGRhdGUgKHdpZGUpIGRyaXZlcyB0 aGUgc2tpcCBkZWNpc2lvbi4gIEl0IGlzIHRydWUgd2hlbgorICogICAgIHRoZSB0YWJsZSBB TSBzdG9yZWQgYW4gaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24gKHdob2xlLXJvdyBhdHRyaWJ1 dGUKKyAqICAgICBwcmVzZW50IGluIG1vZGlmaWVkX2lkeF9hdHRycykgb3Igd2hlbiBhbnkg YXR0cmlidXRlIHRoZSBpbmRleAorICogICAgIHJlZmVyZW5jZXMgLS0ga2V5LCBJTkNMVURF LCBleHByZXNzaW9uLCBvciBwYXJ0aWFsLXByZWRpY2F0ZSBjb2x1bW4sCisgKiAgICAgcGVy IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgLS0gY2hhbmdlZC4gIEEgbm9uLXN1bW1hcml6 aW5nIGluZGV4IGZvcgorICogICAgIHdoaWNoIHRoaXMgaXMgZmFsc2UgaXMgc2tpcHBlZDog aXRzIGV4aXN0aW5nIGVudHJ5IGtlZXBzIHJlc29sdmluZyB0aGUKKyAqICAgICBIT1QgY2hh aW4uCiAgKgotICogV2hlbiB0aGUgZXhlY3V0b3IgcGVyZm9ybXMgYW4gVVBEQVRFIHRoYXQg cmVxdWlyZXMgYSBuZXcgcm91bmQgb2YgaW5kZXgKLSAqIHR1cGxlcywgZGV0ZXJtaW5lIGlm IHdlIHNob3VsZCBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgZm9yIG9uZQot ICogc2luZ2xlIGluZGV4LgorICogICAtIGlpX0luZGV4VW5jaGFuZ2VkIChuYXJyb3cpIGlz IHRoZSBpbmRleFVuY2hhbmdlZCBoaW50IHRvIGFtaW5zZXJ0LAorICogICAgIGNvbnN1bWVk IGJ5IG5idHJlZSBkZWR1cGxpY2F0aW9uIC8gYm90dG9tLXVwIGRlbGV0aW9uLiAgUGVyIHRo ZQorICogICAgIGhpc3RvcmljYWwgcnVsZSBpdCBjb3VudHMgb25seSBrZXkgY29sdW1uczsg SU5DTFVERSBhbmQgcHJlZGljYXRlCisgKiAgICAgY29sdW1ucyBhcmUgZGVsaWJlcmF0ZWx5 IGlnbm9yZWQsIGFuZCBhbiBleHByZXNzaW9uIGtleSBpcyB0cmVhdGVkCisgKiAgICAgY29u c2VydmF0aXZlbHkgYXMgcG9zc2libHkgY2hhbmdlZC4KICAqLwotc3RhdGljIGJvb2wKLWlu ZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywg RVN0YXRlICplc3RhdGUsCi0JCQkJCQkgIEluZGV4SW5mbyAqaW5kZXhJbmZvLCBSZWxhdGlv biBpbmRleFJlbGF0aW9uKQordm9pZAorRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3VsdFJl bEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmll ZF9pZHhfYXR0cnMpCiB7Ci0JQml0bWFwc2V0ICAqdXBkYXRlZENvbHM7Ci0JQml0bWFwc2V0 ICAqZXh0cmFVcGRhdGVkQ29sczsKLQlCaXRtYXBzZXQgICphbGxVcGRhdGVkQ29sczsKLQli b29sCQloYXNleHByZXNzaW9uID0gZmFsc2U7Ci0JTGlzdAkgICAqaWR4RXhwcnM7Ci0KLQkv KgotCSAqIENoZWNrIGNhY2hlIGZpcnN0Ci0JICovCi0JaWYgKGluZGV4SW5mby0+aWlfQ2hl Y2tlZFVuY2hhbmdlZCkKLQkJcmV0dXJuIGluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQ7 Ci0JaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gdHJ1ZTsKLQotCS8qCi0JICog Q2hlY2sgZm9yIGluZGV4ZWQgYXR0cmlidXRlIG92ZXJsYXAgd2l0aCB1cGRhdGVkIGNvbHVt bnMuCi0JICoKLQkgKiBPbmx5IGRvIHRoaXMgZm9yIGtleSBjb2x1bW5zLiAgQSBjaGFuZ2Ug dG8gYSBub24ta2V5IGNvbHVtbiB3aXRoaW4gYW4KLQkgKiBJTkNMVURFIGluZGV4IHNob3Vs ZCBub3QgYmUgY291bnRlZCBoZXJlLiAgTm9uLWtleSBjb2x1bW4gdmFsdWVzIGFyZQotCSAq IG9wYXF1ZSBwYXlsb2FkIHN0YXRlIHRvIHRoZSBpbmRleCBBTSwgYSBsaXR0bGUgbGlrZSBh biBleHRyYSB0YWJsZSBUSUQuCi0JICoKLQkgKiBOb3RlIHRoYXQgcm93LWxldmVsIEJFRk9S RSB0cmlnZ2VycyB3b24ndCBhZmZlY3Qgb3VyIGJlaGF2aW9yLCBzaW5jZQotCSAqIHRoZXkg ZG9uJ3QgYWZmZWN0IHRoZSB1cGRhdGVkQ29scyBiaXRtYXBzIGdlbmVyYWxseS4gIEl0IGRv ZXNuJ3Qgc2VlbQotCSAqIHdvcnRoIHRoZSB0cm91YmxlIG9mIGNoZWNraW5nIHdoaWNoIGF0 dHJpYnV0ZXMgd2VyZSBjaGFuZ2VkIGRpcmVjdGx5LgotCSAqLwotCXVwZGF0ZWRDb2xzID0g RXhlY0dldFVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZXh0cmFVcGRh dGVkQ29scyA9IEV4ZWNHZXRFeHRyYVVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0 ZSk7Ci0JZm9yIChpbnQgYXR0ciA9IDA7IGF0dHIgPCBpbmRleEluZm8tPmlpX051bUluZGV4 S2V5QXR0cnM7IGF0dHIrKykKLQl7Ci0JCWludAkJCWtleWNvbCA9IGluZGV4SW5mby0+aWlf SW5kZXhBdHRyTnVtYmVyc1thdHRyXTsKLQotCQlpZiAoa2V5Y29sIDw9IDApCi0JCXsKLQkJ CS8qCi0JCQkgKiBTa2lwIGV4cHJlc3Npb25zIGZvciBub3csIGJ1dCByZW1lbWJlciB0byBk ZWFsIHdpdGggdGhlbSBsYXRlcgotCQkJICogb24KLQkJCSAqLwotCQkJaGFzZXhwcmVzc2lv biA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQorCWludAkJCW51bUluZGljZXMgPSByZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzOworCUluZGV4SW5mbyAqKmluZGV4SW5mb0FycmF5 ID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkluZm87CisJUmVsYXRpb25QdHIg aW5kZXhEZXNjcyA9IHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjczsKKwli b29sCQlhbGxfaW5kZXhlczsKIAotCQlpZiAoYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAotCQkJCQkJICB1cGRhdGVkQ29scykg fHwKLQkJCWJtc19pc19tZW1iZXIoa2V5Y29sIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciwKLQkJCQkJCSAgZXh0cmFVcGRhdGVkQ29scykpCi0JCXsKLQkJCS8qIENo YW5nZWQga2V5IGNvbHVtbiAtLSBkb24ndCBoaW50IGZvciB0aGlzIGluZGV4ICovCi0JCQlp bmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7Ci0JCQlyZXR1cm4gZmFsc2U7 Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIFdoZW4gd2UgZ2V0IHRoaXMgZmFyIGFuZCBpbmRleCBo YXMgbm8gZXhwcmVzc2lvbnMsIHJldHVybiB0cnVlIHNvIHRoYXQKLQkgKiBpbmRleF9pbnNl cnQoKSBjYWxsIHdpbGwgZ28gb24gdG8gcGFzcyAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBo aW50LgotCSAqCi0JICogVGhlIF9hYnNlbmNlXyBvZiBhbiBpbmRleGVkIGtleSBhdHRyaWJ1 dGUgdGhhdCBvdmVybGFwcyB3aXRoIHVwZGF0ZWQKLQkgKiBhdHRyaWJ1dGVzIChpbiBhZGRp dGlvbiB0byB0aGUgdG90YWwgYWJzZW5jZSBvZiBpbmRleGVkIGV4cHJlc3Npb25zKQotCSAq IHNob3dzIHRoYXQgdGhlIGluZGV4IGFzIGEgd2hvbGUgaXMgbG9naWNhbGx5IHVuY2hhbmdl ZCBieSBVUERBVEUuCi0JICovCi0JaWYgKCFoYXNleHByZXNzaW9uKQotCXsKLQkJaW5kZXhJ bmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IHRydWU7Ci0JCXJldHVybiB0cnVlOwotCX0KKwlp ZiAobnVtSW5kaWNlcyA9PSAwKQorCQlyZXR1cm47CiAKIAkvKgotCSAqIE5lZWQgdG8gcGFz cyBvbmx5IG9uZSBibXMgdG8gZXhwcmVzc2lvbl90cmVlX3dhbGtlciBoZWxwZXIgZnVuY3Rp b24uCi0JICogQXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgaW4gY29tbW9uIGNhc2Ugd2hlcmUg dGhlcmUgYXJlIG5vIGV4dHJhIGNvbHMuCisJICogQSB3aG9sZS1yb3cgZW50cnkgaW4gbW9k aWZpZWRfaWR4X2F0dHJzIG1lYW5zIHRoZSB0YWJsZSBBTSBzdG9yZWQgYW4KKwkgKiBpbmRl cGVuZGVudCBuZXcgdmVyc2lvbiAoZS5nLiBhdCBhIG5ldyBUSUQpLCBzbyBldmVyeSBpbmRl eCBuZWVkcyBhCisJICogZnJlc2ggZW50cnkgcmVnYXJkbGVzcyBvZiB3aGljaCBhdHRyaWJ1 dGVzIGNoYW5nZWQuCiAJICovCi0JaWYgKCFleHRyYVVwZGF0ZWRDb2xzKQotCQlhbGxVcGRh dGVkQ29scyA9IHVwZGF0ZWRDb2xzOwotCWVsc2UKLQkJYWxsVXBkYXRlZENvbHMgPSBibXNf dW5pb24odXBkYXRlZENvbHMsIGV4dHJhVXBkYXRlZENvbHMpOworCWFsbF9pbmRleGVzID0g Ym1zX2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4 X2F0dHJzKTsKIAotCS8qCi0JICogV2UgaGF2ZSB0byB3b3JrIHNsaWdodGx5IGhhcmRlciBp biB0aGUgZXZlbnQgb2YgaW5kZXhlZCBleHByZXNzaW9ucywKLQkgKiBidXQgdGhlIHByaW5j aXBsZSBpcyB0aGUgc2FtZSBhcyBiZWZvcmU6IHRyeSB0byBmaW5kIGNvbHVtbnMgKFZhcnMs Ci0JICogYWN0dWFsbHkpIHRoYXQgb3ZlcmxhcCB3aXRoIGtub3duLXVwZGF0ZWQgY29sdW1u cy4KLQkgKgotCSAqIElmIHdlIGZpbmQgYW55IG1hdGNoaW5nIFZhcnMsIGRvbid0IHBhc3Mg aGludCBmb3IgaW5kZXguICBPdGhlcndpc2UKLQkgKiBwYXNzIGhpbnQuCi0JICovCi0JaWR4 RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWxhdGlvbik7Ci0J aGFzZXhwcmVzc2lvbiA9IGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoKE5vZGUg KikgaWR4RXhwcnMsCi0JCQkJCQkJCQkJCQkJYWxsVXBkYXRlZENvbHMpOwotCWxpc3RfZnJl ZShpZHhFeHBycyk7Ci0JaWYgKGV4dHJhVXBkYXRlZENvbHMpCi0JCWJtc19mcmVlKGFsbFVw ZGF0ZWRDb2xzKTsKLQotCWlmIChoYXNleHByZXNzaW9uKQorCWZvciAoaW50IGkgPSAwOyBp IDwgbnVtSW5kaWNlczsgaSsrKQogCXsKLQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9IGZhbHNlOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQorCQlJbmRleEluZm8gICppbmRleElu Zm8gPSBpbmRleEluZm9BcnJheVtpXTsKKwkJUmVsYXRpb24JaW5kZXhEZXNjID0gaW5kZXhE ZXNjc1tpXTsKKwkJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJzOworCQlib29sCQlrZXljaGFu Z2VkOwogCi0JLyoKLQkgKiBEZWxpYmVyYXRlbHkgZG9uJ3QgY29uc2lkZXIgaW5kZXggcHJl ZGljYXRlcy4gIFdlIHNob3VsZCBldmVuIGdpdmUgdGhlCi0JICogaGludCB3aGVuIHJlc3Vs dCByZWwncyAidXBkYXRlZCB0dXBsZSIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5kZXgKLQkg KiB0dXBsZSwgd2hpY2ggaXMgcG9zc2libGUgd2l0aCBhIHBhcnRpYWwgaW5kZXggKHByb3Zp ZGVkIHRoZSB1c3VhbAotCSAqIGNvbmRpdGlvbnMgYXJlIG1ldCkuCi0JICovCi0JaW5kZXhJ bmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IHRydWU7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8q Ci0gKiBJbmRleGVkIGV4cHJlc3Npb24gaGVscGVyIGZvciBpbmRleF91bmNoYW5nZWRfYnlf dXBkYXRlKCkuCi0gKgotICogUmV0dXJucyB0cnVlIHdoZW4gVmFyIHRoYXQgYXBwZWFycyB3 aXRoaW4gYWxsVXBkYXRlZENvbHMgbG9jYXRlZC4KLSAqLwotc3RhdGljIGJvb2wKLWluZGV4 X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAqbm9kZSwgQml0bWFwc2V0ICphbGxV cGRhdGVkQ29scykKLXsKLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7CisJ CWlmIChpbmRleERlc2MgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwogCi0JaWYgKElzQShub2Rl LCBWYXIpKQotCXsKLQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCQkvKgorCQkg KiBTa2lwIGRlY2lzaW9uICh3aWRlKS4gIFRoZSBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeSBp ZiB0aGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVwZW5kZW50IHZlcnNpb24sIG9yIGlmIGFu eSBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcyAtLSBrZXksCisJCSAqIElOQ0xVREUsIGV4cHJl c3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiAtLSBjaGFuZ2VkLgorCQkgKiBS ZWxhdGlvbkdldEluZGV4ZWRBdHRycygpIGNvdmVycyBhbGwgb2YgdGhvc2UuICAoQW4gVVBE QVRFIHRoYXQKKwkJICogdG91Y2hlcyBhbiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSBu ZXZlciByZWFjaGVzIHRoZSBIT1QtaW5kZXhlZAorCQkgKiBwYXRoOiBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBpdCwgcGVuZGluZworCQkgKiBleHByZXNzaW9uLWF3 YXJlIG1haW50ZW5hbmNlLikKKwkJICovCisJCWluZGV4ZWRhdHRycyA9IFJlbGF0aW9uR2V0 SW5kZXhlZEF0dHJzKGluZGV4RGVzYyk7CisJCWluZGV4SW5mby0+aWlfSW5kZXhOZWVkc1Vw ZGF0ZSA9CisJCQlhbGxfaW5kZXhlcyB8fCBibXNfb3ZlcmxhcChpbmRleGVkYXR0cnMsIG1v ZGlmaWVkX2lkeF9hdHRycyk7CisJCWJtc19mcmVlKGluZGV4ZWRhdHRycyk7CiAKLQkJaWYg KGJtc19pc19tZW1iZXIodmFyLT52YXJhdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGFsbFVwZGF0ZWRDb2xzKSkKKwkJLyoKKwkJICogYW1p bnNlcnQgaGludCAobmFycm93KS4gIGlpX0luZGV4VW5jaGFuZ2VkIGZlZWRzIG5idHJlZQor CQkgKiBkZWR1cGxpY2F0aW9uIC8gYm90dG9tLXVwIGRlbGV0aW9uIGhldXJpc3RpY3MgYW5k LCBwZXIgdGhlCisJCSAqIGhpc3RvcmljYWwgcnVsZSwgY291bnRzIG9ubHkga2V5IGNvbHVt bnM6IGEgY2hhbmdlIHRvIGFuIElOQ0xVREUKKwkJICogY29sdW1uIG9yIHRvIGEgcGFydGlh bC1pbmRleCBwcmVkaWNhdGUgY29sdW1uIGRvZXMgbm90IGRpc3F1YWxpZnkKKwkJICogdGhl IGhpbnQuICBBbiBleHByZXNzaW9uIGtleSBjb2x1bW4gaXMgdHJlYXRlZCBjb25zZXJ2YXRp dmVseSBhcworCQkgKiBwb3NzaWJseSBjaGFuZ2VkLgorCQkgKi8KKwkJa2V5Y2hhbmdlZCA9 IGZhbHNlOworCQlmb3IgKGludCBrID0gMDsgayA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhL ZXlBdHRyczsgaysrKQogCQl7Ci0JCQkvKiBWYXIgd2FzIHVwZGF0ZWQgLS0gaW5kaWNhdGVz IHRoYXQgd2Ugc2hvdWxkIG5vdCBoaW50ICovCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQorCQkJ QXR0ck51bWJlcglrZXljb2wgPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNba107 CiAKLQkJLyogU3RpbGwgaGF2ZW4ndCBmb3VuZCBhIHJlYXNvbiB0byBub3QgcGFzcyB0aGUg aGludCAqLwotCQlyZXR1cm4gZmFsc2U7CisJCQlpZiAoa2V5Y29sID09IDApCS8qIGV4cHJl c3Npb24ga2V5OiBhc3N1bWUgaXQgbWF5IGhhdmUgY2hhbmdlZCAqLworCQkJeworCQkJCWtl eWNoYW5nZWQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKGJtc19pc19tZW1i ZXIoa2V5Y29sIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJ CQkgIG1vZGlmaWVkX2lkeF9hdHRycykpCisJCQl7CisJCQkJa2V5Y2hhbmdlZCA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9ICFrZXljaGFuZ2VkOwogCX0KLQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy KG5vZGUsIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIsCi0JCQkJCQkJCSAgYWxs VXBkYXRlZENvbHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGlj YXRpb24uYwppbmRleCA2MjYyZjcxYmQ5My4uN2I1YmJkYmZkN2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0yMTcsNiArMjE3LDE4IEBAIHJldHJ5 OgogCS8qIFRyeSB0byBmaW5kIHRoZSB0dXBsZSAqLwogCXdoaWxlIChpbmRleF9nZXRuZXh0 X3Nsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIG91dHNsb3QpKQogCXsKKwkJLyoK KwkJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgY2FuIGxlYXZlIGEgc3RhbGUgaW5kZXggbGVh ZjogYW4gZW50cnkgd2hvc2UKKwkJICoga2V5IGlzIGEgcHJlLXVwZGF0ZSB2YWx1ZSBidXQg d2hvc2UgVElEIGNoYWluLXJlc29sdmVzIHRvIGEgbGl2ZQorCQkgKiB0dXBsZSBub3cgY2Fy cnlpbmcgYSBkaWZmZXJlbnQga2V5LiAgU3VjaCBhIHR1cGxlIGlzIG5vdCB0aGUKKwkJICog cmVwbGljYS1pZGVudGl0eSBtYXRjaCB3ZSBhcmUgbG9va2luZyBmb3IgKGFuZCB0aGUgUEsv UkkgZmFzdCBwYXRoCisJCSAqIGJlbG93IHNraXBzIHRoZSBlcXVhbGl0eSByZWNoZWNrIHRo YXQgd291bGQgb3RoZXJ3aXNlIGNhdGNoIGl0KSwgc28KKwkJICogZHJvcCBpdCAtLSBleGFj dGx5IGFzIEluZGV4U2Nhbi9JbmRleE9ubHlTY2FuIGRvLiAgVGhlIGZyZXNoIGxlYWYKKwkJ ICogZm9yIHRoZSBjdXJyZW50IGtleSwgaWYgYW55LCBpcyByZXR1cm5lZCBieSBhIGxhdGVy IGl0ZXJhdGlvbi4KKwkJICovCisJCWlmIChzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSkK KwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIEF2b2lkIGV4cGVuc2l2ZSBlcXVhbGl0eSBj aGVjayBpZiB0aGUgaW5kZXggaXMgcHJpbWFyeSBrZXkgb3IKIAkJICogcmVwbGljYSBpZGVu dGl0eSBpbmRleC4KQEAgLTY3OCw2ICs2OTAsMTAgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1 cGxlSW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCS8qIFRyeSB0byBm aW5kIHRoZSB0dXBsZSAqLwogCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIHNjYW5zbG90KSkKIAl7CisJCS8qIFNraXAgc3RhbGUgSE9U LWluZGV4ZWQgbGVhdmVzIChzZWUgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleCkuICov CisJCWlmIChzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCWNvbnRpbnVlOworCiAJ CS8qCiAJCSAqIEF2b2lkIGV4cGVuc2l2ZSBlcXVhbGl0eSBjaGVjayBpZiB0aGUgaW5kZXgg aXMgcHJpbWFyeSBrZXkgb3IKIAkJICogcmVwbGljYSBpZGVudGl0eSBpbmRleC4KQEAgLTkx MSw3ICs5MjcsNyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24J cmVsID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRp ZCA9ICYoc2VhcmNoc2xvdC0+dHRzX3RpZCk7Ci0JQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CiAKIAkv KgogCSAqIFdlIHN1cHBvcnQgb25seSBub24tc3lzdGVtIHRhYmxlcywgd2l0aApAQCAtOTM0 LDcgKzk1MCw2IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCWlmICghc2tpcF90dXBsZSkKIAl7CiAJCUxpc3QJICAgKnJlY2hl Y2tJbmRleGVzID0gTklMOwotCQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOwog CQlMaXN0CSAgICpjb25mbGljdGluZGV4ZXM7CiAJCWJvb2wJCWNvbmZsaWN0ID0gZmFsc2U7 CiAKQEAgLTk1MywyNyArOTY4LDM0IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVj VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkJCQlz ZWFyY2hzbG90LCBzbG90KTsKIAorCQlBc3NlcnQoIWJtc19pc19tZW1iZXIoVGFibGVUdXBs ZVVwZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRycykpOwogCQlzaW1wbGVfdGFi bGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAot CQkJCQkJCQkgIG1vZGlmaWVkX2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsKLQkJYm1z X2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsKLQorCQkJCQkJCQkgICZtb2RpZmllZF9pZHhf YXR0cnMpOwogCiAJCWNvbmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlczsKIAotCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5k aWNlcyA+IDAgJiYgKHVwZGF0ZV9pbmRleGVzICE9IFRVX05vbmUpKQorCQlpZiAocmVzdWx0 UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJCSFibXNfaXNfZW1wdHkobW9kaWZp ZWRfaWR4X2F0dHJzKSkKIAkJeworCQkJYm9vbAkJYWxsX2luZGV4ZXMgPQorCQkJCWJtc19p c19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRy cyk7CiAJCQl1aW50MzIJCWZsYWdzID0gRUlJVF9JU19VUERBVEU7CiAKIAkJCWlmIChjb25m bGljdGluZGV4ZXMgIT0gTklMKQogCQkJCWZsYWdzIHw9IEVJSVRfTk9fRFVQRV9FUlJPUjsK LQkJCWlmICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCQlmbGFncyB8 PSBFSUlUX09OTFlfU1VNTUFSSVpJTkc7CisJCQlpZiAoIWFsbF9pbmRleGVzKQorCQkJCWZs YWdzIHw9IEVJSVRfSVNfSE9UX0lOREVYRUQ7CisKKwkJCUV4ZWNTZXRJbmRleFVuY2hhbmdl ZChyZXN1bHRSZWxJbmZvLCBtb2RpZmllZF9pZHhfYXR0cnMpOworCiAJCQlyZWNoZWNrSW5k ZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJ CQkJICAgZXN0YXRlLCBmbGFncywKIAkJCQkJCQkJCQkJCSAgIHNsb3QsIGNvbmZsaWN0aW5k ZXhlcywKIAkJCQkJCQkJCQkJCSAgICZjb25mbGljdCk7CiAJCX0KIAorCQlibXNfZnJlZSht b2RpZmllZF9pZHhfYXR0cnMpOworCiAJCS8qCiAJCSAqIFJlZmVyIHRvIHRoZSBjb21tZW50 cyBhYm92ZSB0aGUgY2FsbCB0byBDaGVja0FuZFJlcG9ydENvbmZsaWN0KCkgaW4KIAkJICog RXhlY1NpbXBsZVJlbGF0aW9uSW5zZXJ0IHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hlY2sg aXMgZG9uZSBhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMK aW5kZXggZDUyMDEyZThhNjkuLmNkMGNhZWYxMzY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTEwNCw2ICsxMDQsNyBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAogCQkvKiBTZXQgaXQgdXAgZm9yIGlu ZGV4LW9ubHkgc2NhbiAqLwogCQlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAg PSB0cnVlOworCQlub2RlLT5pb3NzX1NjYW5EZXNjLT54c19pbmRleF9vbmx5ID0gdHJ1ZTsK IAkJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkJLyoKQEAgLTE3 Miw2ICsxNzMsMjUgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAJCQlpZiAoIWluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5vZGUtPmlvc3NfVGFibGVT bG90KSkKIAkJCQljb250aW51ZTsJCS8qIG5vIHZpc2libGUgdHVwbGUsIHRyeSBuZXh0IGlu ZGV4IGVudHJ5ICovCiAKKwkJCS8qCisJCQkgKiBIT1QtaW5kZXhlZCBzdGFsZSBlbnRyeTog aWYgdGhlIGNoYWluIHdhbGsgdG8gcmVhY2ggdGhpcyB0dXBsZQorCQkJICogY3Jvc3NlZCBh IGhvdC1pbmRleGVkIGhvcCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXgK KwkJCSAqIGNvdmVycywgdGhlIGxlYWYgd2UgYXJyaXZlZCB0aHJvdWdoIGlzIHN0YWxlLiAg Rm9yIElPUyB3ZSBzZXJ2ZQorCQkJICogdmFsdWVzIG91dCBvZiB4c19pdHVwLCBzbyBhIHN0 YWxlIGxlYWYgd291bGQgc3VyZmFjZSB0aGUgd3JvbmcKKwkJCSAqIHZhbHVlczsgZHJvcCBp dC4gIFRoZSBmcmVzaCBlbnRyeSBmb3IgdGhlIG5ldyB2YWx1ZSByZXR1cm5zIHRoZQorCQkJ ICogcm93IHdpdGggY29ycmVjdCB2YWx1ZXMgdmlhIGl0cyBvd24gcGF0aC4gIFBydW5lIGtl ZXBzIGFueSBwYWdlCisJCQkgKiB0aGF0IGNhbiBjYXJyeSBzdWNoIGEgc3RhbGUgbGVhZiAt LSBvbmUgd2l0aCBhIHJlZGlyZWN0IHRvIGEKKwkJCSAqIGxpdmUgSEVBUF9JTkRFWEVEX1VQ REFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcAorCQkJICogKHNlZSBo ZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCksIHNvIGFuIGluZGV4LW9ubHkgc2NhbiBhbHdh eXMKKwkJCSAqIHJlYWNoZXMgdGhpcyBoZWFwIGZldGNoIHdoZW4gc3RhbGVuZXNzIGNvdWxk IGFwcGx5LgorCQkJICovCisJCQlpZiAoc2NhbmRlc2MtPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJeworCQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+aW9zc19UYWJsZVNsb3QpOworCQkJCWNvbnRpbnVlOworCQkJfQor CiAJCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CiAKIAkJCS8qCkBA IC0yMjksNiArMjQ5LDE2IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpu b2RlKQogCQkJfQogCQl9CiAKKwkJLyoKKwkJICogTm8gSE9ULWluZGV4ZWQgc3RhbGVuZXNz IGNoZWNrIGlzIG5lZWRlZCBvbiB0aGUgVk0tYWxsLXZpc2libGUgcGF0aAorCQkgKiAod2hl cmUgd2Ugc2tpcHBlZCB0aGUgaGVhcCBmZXRjaCkuICBQcnVuZSBrZWVwcyBhbnkgcGFnZSB0 aGF0IGNvdWxkCisJCSAqIGNhcnJ5IGEgc3RhbGUgbGVhZiAtLSBvbmUgd2l0aCBhIHJlZGly ZWN0IHRvIGEgbGl2ZQorCQkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCB0dXBsZSAtLSBvdXQg b2YgdGhlIHZpc2liaWxpdHkgbWFwLCBzbyBhbgorCQkgKiBhbGwtdmlzaWJsZSBlbnRyeSBu ZXZlciBjcm9zc2VkIGEgSE9UL1NJVSBob3AuICAoaW5kZXhfZ2V0bmV4dF90aWQKKwkJICog YWxzbyByZXNldHMgeHNfaG90X2luZGV4ZWRfc3RhbGUgcGVyIGVudHJ5LCBhbmQgb25seSB0 aGUgaGVhcCBmZXRjaAorCQkgKiBpbiBpbmRleF9mZXRjaF9oZWFwIGV2ZXIgc2V0cyBpdCwg c28gaXQgY2Fubm90IGJlIHNldCBoZXJlIGFueXdheS4pCisJCSAqLworCiAJCS8qCiAJCSAq IFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlY2hlY2tpbmcgT1JERVIgQlkgZGlzdGFu Y2VzLiAgKEluCiAJCSAqIHByaW5jaXBsZSwgaWYgdGhlIGluZGV4IGNhbiBzdXBwb3J0IHJl dHJpZXZhbCBvZiB0aGUgb3JpZ2luYWxseQpAQCAtNzc1LDYgKzgwNSw3IEBAIEV4ZWNJbmRl eE9ubHlTY2FuSW5pdGlhbGl6ZURTTShJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUsCiAJCQkJ CQkJCSBTY2FuUmVsSXNSZWFkT25seSgmbm9kZS0+c3MpID8KIAkJCQkJCQkJIFNPX0hJTlRf UkVMX1JFQURfT05MWSA6IFNPX05PTkUpOwogCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dh bnRfaXR1cCA9IHRydWU7CisJbm9kZS0+aW9zc19TY2FuRGVzYy0+eHNfaW5kZXhfb25seSA9 IHRydWU7CiAJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkvKgpA QCAtODI1LDYgKzg1Niw3IEBAIEV4ZWNJbmRleE9ubHlTY2FuSW5pdGlhbGl6ZVdvcmtlcihJ bmRleE9ubHlTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSBTY2FuUmVsSXNSZWFkT25seSgm bm9kZS0+c3MpID8KIAkJCQkJCQkJIFNPX0hJTlRfUkVMX1JFQURfT05MWSA6IFNPX05PTkUp OwogCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dhbnRfaXR1cCA9IHRydWU7CisJbm9kZS0+ aW9zc19TY2FuRGVzYy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAKIAkvKgogCSAqIElmIG5v IHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBhaGVh ZCBhbmQgcGFzcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDM5 ZjY2OTFlZTM1Li5kYWQ5MjVkY2IxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtMTUxLDYgKzE1MSwyMCBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQl9CiAJCX0KIAorCQkvKgorCQkgKiBIT1QtaW5kZXhlZCBzdGFsZSBlbnRy eTogdGhlIGNoYWluIHdlIHdhbGtlZCB0byByZWFjaCB0aGlzIHR1cGxlCisJCSAqIGNyb3Nz ZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFuZ2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGlu ZGV4CisJCSAqIGNvdmVycywgc28gdGhlIGxlYWYgZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdo IGlzIHN0YWxlLiAgRHJvcCBpdDsKKwkJICogdGhlIGZyZXNoIGVudHJ5IGluc2VydGVkIGZv ciB0aGUgbmV3IHZhbHVlIHJldHVybnMgdGhlIHJvdyB0aHJvdWdoCisJCSAqIGl0cyBvd24g cGF0aC4gIFN0YWxlbmVzcyB3YXMgZGVjaWRlZCBieSB0aGUgaGVhcCBBTSB2aWEgcGVyLWhv cAorCQkgKiBtb2RpZmllZC1hdHRycyBiaXRtYXBzIChzZWUgaGVhcF9ob3Rfc2VhcmNoX2J1 ZmZlcikuCisJCSAqLworCQlpZiAoc2NhbmRlc2MtPnhzX2hvdF9pbmRleGVkX3N0YWxlKQor CQl7CisJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOworCQkJY29udGludWU7CisJ CX0KKwogCQlyZXR1cm4gc2xvdDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKaW5kZXggZWI2ZTBlZjJhZDkuLjYzNWE2Nzg4NGQ4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTMwLDcgKzEzMCwxNCBAQCB0 eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZUNvbnRleHQKIHR5cGVkZWYgc3RydWN0IFVwZGF0 ZUNvbnRleHQKIHsKIAlib29sCQljcm9zc1BhcnRVcGRhdGU7CS8qIHdhcyBpdCBhIGNyb3Nz LXBhcnRpdGlvbiB1cGRhdGU/ICovCi0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVz OyAvKiBXaGljaCBpbmRleCB1cGRhdGVzIGFyZSByZXF1aXJlZD8gKi8KKworCS8qCisJICog U2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGUgVVBEQVRFIGNoYW5nZWQgKGluL291dCBm b3IgdGhlIHRhYmxlIEFNJ3MKKwkgKiB1cGRhdGUgY2FsbGJhY2spLiAgUG9wdWxhdGVkIGJ5 IEV4ZWNVcGRhdGVBY3QgYW5kIGNvbnN1bWVkIGJ5CisJICogRXhlY1VwZGF0ZUVwaWxvZ3Vl OyB0aGUgQU0gYWRkcyB0aGUgd2hvbGUtcm93IGF0dHJpYnV0ZQorCSAqIChUYWJsZVR1cGxl VXBkYXRlQWxsSW5kZXhlcykgd2hlbiBldmVyeSBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5 LgorCSAqLworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2F0dHJzOwogCiAJLyoKIAkgKiBMb2Nr IG1vZGUgdG8gYWNxdWlyZSBvbiB0aGUgbGF0ZXN0IHR1cGxlIHZlcnNpb24gYmVmb3JlIHBl cmZvcm1pbmcKQEAgLTIzOCwyNSArMjQ1LDIzIEBAIEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCXJldHVybiBOVUxMOwogCiAJ LyoKLQkgKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4 ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQotCSAqIHRoZSByZWxjYWNoZSwgaXQgcmV0dXJu cyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBzbyB3ZSBjYW4gbW9kaWZ5IGl0LgorCSAqIERl dGVybWluZSB3aGljaCBpbmRleGVkIGF0dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZCB2YWx1 ZSBieSBjb21wYXJpbmcKKwkgKiB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIGF0dHJpYnV0ZS1i eS1hdHRyaWJ1dGUgb3ZlciB0aGUgcmVsYXRpb24ncyBmdWxsCisJICogaW5kZXhlZC1hdHRy aWJ1dGUgc2V0LiAgV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCB0cnkgdG8gbmFycm93IHRoZSB3 b3JrCisJICogdXNpbmcgdGhlIFNRTCBVUERBVEUncyB0YXJnZXQgbGlzdCAoRXhlY0dldEFs bFVwZGF0ZWRDb2xzKTogdGhhdCBsaXN0CisJICogZG9lcyBub3QgY2FwdHVyZSBpbmRleGVk IGNvbHVtbnMgbXV0YXRlZCBvdXRzaWRlIHRoZSBTRVQgY2xhdXNlLCBzdWNoCisJICogYXMg YSBjb2x1bW4gcmV3cml0dGVuIGJ5IGEgQkVGT1JFL0lOU1RFQUQtT0YgdHJpZ2dlciB2aWEK KwkgKiBoZWFwX21vZGlmeV90dXBsZSAoc2VlIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkg aW4gdHNlYXJjaC5zcWwpLCB0aGUKKwkgKiBpbXBsaWNpdCB0ZW1wb3JhbCByYW5nZSBjb2x1 bW4gb2YgYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUsIG9yIHRoZQorCSAqIHByZS1idWlsdCB0 dXBsZXMgYXBwbGllZCBieSBSRVBBQ0sgKENPTkNVUlJFTlRMWSkgYW5kIGxvZ2ljYWwKKwkg KiByZXBsaWNhdGlvbiB0aHJvdWdoIGEgc3ludGhldGljIFJlc3VsdFJlbEluZm8uICBDb21w YXJpbmcgdGhlIGFjdHVhbAorCSAqIHR1cGxlIHZhbHVlcyBpcyBhbHdheXMgY29ycmVjdC4K IAkgKgotCSAqIE5vdGU6IFdlIGludGVudGlvbmFsbHkgc2NhbiBhbGwgaW5kZXhlZCBjb2x1 bW5zIHdoZW4gbG9va2luZyBmb3IKLQkgKiBjaGFuZ2VzIHJhdGhlciB0aGFuIHJlZHVjZSB0 aGF0IHNldCBieSBpbnRlcnNlY3RpbmcgaXQgd2l0aAotCSAqIEV4ZWNHZXRBbGxVcGRhdGVk Q29scygpLiAgRGVzaXB0ZSB0aGUgbmFtZSBpdCBwcm92aWRlcyB0aGUgc2V0IG9mCi0JICog dGFyZ2V0ZWQgYXR0cmlidXRlcyBpbiB0aGUgU1FMIHVzZWQgZm9yIHRoZSBVUERBVEUgYW5k IGFueSB0cmlnZ2VycywKLQkgKiBidXQgdGhhdCBkb2Vzbid0IGluY2x1ZGUgYW55IGF0dHJp YnV0ZXMgdXBkYXRlZCB1c2luZwotCSAqIGhlYXBfbW9kaWZpeV90dXBsZSgpLiBUaGVyZSBp cyBvbmUgdGVzdCBpbiB0c2VhcmNoLnNxbCB0aGF0IGRvZXMganVzdAotCSAqIHRoYXQsIG1v ZGlmaWVzIGFuIGluZGV4ZWQgYXR0cmlidXRlIHRoYXQgaXNuJ3Qgc3BlY2lmaWVkIGluIHRo ZSBTUUwgYW5kCi0JICogc28gaXNuJ3QgcHJlc2VudCBpbiB0aGF0IGJpdG1hcHNldC4KKwkg KiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zIGEgY29weSB3ZSBhcmUgZnJl ZSB0byBtdXRhdGU7CisJICogRXhlY0NvbXBhcmVTbG90QXR0cnMgZGVsZXRlcyB0aGUgYXR0 cmlidXRlcyB0aGF0IGRpZCBub3QgY2hhbmdlIGFuZAorCSAqIHJldHVybnMgdGhlIHN1cnZp dmluZyAibW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIiBzZXQuCiAJICovCiAJYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCk7Ci0KLQkvKgotCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmli dXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKLQkgKiB0byBmaW5k IHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQotCSAqICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgotCSAqLwogCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90QXR0cnMo YXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOwogCiAJcmV0dXJuIGF0dHJzOwpA QCAtMjUxMyw4ICsyNTE4LDggQEAgRXhlY1VwZGF0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJYm9vbAkJcGFydGl0 aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKLQkvKiBUaGUg c2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IHRyaWdnZXIgbmV3IGlu ZGV4IGVudHJpZXMgKi8KLQlCaXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnMgPSBOVUxM OworCS8qIFJlc2V0IGFueSBzdGF0ZSBsZWZ0IG92ZXIgZnJvbSBhIHByZXZpb3VzIGNhbGwg Ki8KKwl1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzID0gTlVMTDsKIAogCXVwZGF0ZUN4dC0+ Y3Jvc3NQYXJ0VXBkYXRlID0gZmFsc2U7CiAKQEAgLTI2MzgsNyArMjY0Myw4IEBAIGxyZXBs YWNlOgogCSAqIHdlIHdpbGwgb3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmll ZCBieSBoZWFwX21vZGlmeV90dXBsZSgpCiAJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBF eGVjR2V0VXBkYXRlZENvbHMoKS4KIAkgKi8KLQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVj VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsK Kwl1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzID0KKwkJRXhlY1VwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCk7CiAKIAkvKgogCSAqIENhbGwg aW50byB0aGUgdGFibGUgQU0gdG8gdXBkYXRlIHRoZSBoZWFwIHR1cGxlLgpAQCAtMjY0OSw2 ICsyNjU1LDggQEAgbHJlcGxhY2U6CiAJICogZm9yIHJlZmVyZW50aWFsIGludGVncml0eSB1 cGRhdGVzIGluIHRyYW5zYWN0aW9uLXNuYXBzaG90IG1vZGUKIAkgKiB0cmFuc2FjdGlvbnMu CiAJICovCisJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRl eGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKSk7CiAJcmVzdWx0ID0g dGFibGVfdHVwbGVfdXBkYXRlKHJlc3VsdFJlbGF0aW9uRGVzYywgdHVwbGVpZCwgc2xvdCwK IAkJCQkJCQkJZXN0YXRlLT5lc19vdXRwdXRfY2lkLAogCQkJCQkJCQkwLApAQCAtMjY1Niw4 ICsyNjY0LDcgQEAgbHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAogCQkJCQkJ CQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCi0JCQkJCQkJCW1vZGlm aWVkX2lkeF9hdHRycywKLQkJCQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyk7CisJ CQkJCQkJCSZ1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CkBAIC0yNjc4LDE0ICsyNjg1LDI2IEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlU YWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAlMaXN0 CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKIAogCS8qIGluc2VydCBpbmRleCBlbnRyaWVz IGZvciB0dXBsZSBpZiBuZWNlc3NhcnkgKi8KLQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVt SW5kaWNlcyA+IDAgJiYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyAhPSBUVV9Ob25lKSkK KwlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJtc19pc19l bXB0eSh1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKSkKIAl7Ci0JCXVpbnQzMgkJZmxhZ3Mg PSBFSUlUX0lTX1VQREFURTsKKwkJYm9vbAkJYWxsX2luZGV4ZXMgPQorCQkJYm1zX2lzX21l bWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywKKwkJCQkJCSAgdXBkYXRlQ3h0LT5t b2RpZmllZF9hdHRycyk7CisKKwkJLyoKKwkJICogUG9wdWxhdGUgcGVyLWluZGV4IGlpX0lu ZGV4VW5jaGFuZ2VkIGJlZm9yZSBpbnNlcnRpbmcuICBXaGVuIHRoZSBBTQorCQkgKiBzdG9y ZWQgYW4gaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24gKHdob2xlLXJvdyBhdHRyaWJ1dGUgcHJl c2VudCkKKwkJICogZXZlcnkgaW5kZXggbmVlZHMgYSBmcmVzaCBlbnRyeTsgZm9yIGEgSE9U IHVwZGF0ZSBvbmx5IHRob3NlIHdob3NlCisJCSAqIGF0dHJpYnV0ZXMgb3ZlcmxhcCB0aGUg bW9kaWZpZWQgc2V0IGRvLgorCQkgKi8KKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKHJlc3Vs dFJlbEluZm8sIHVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMpOwogCi0JCWlmICh1cGRhdGVD eHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpCi0JCQlmbGFncyB8PSBFSUlU X09OTFlfU1VNTUFSSVpJTkc7CiAJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4 VHVwbGVzKHJlc3VsdFJlbEluZm8sIGNvbnRleHQtPmVzdGF0ZSwKLQkJCQkJCQkJCQkJICAg ZmxhZ3MsIHNsb3QsIE5JTCwKKwkJCQkJCQkJCQkJICAgRUlJVF9JU19VUERBVEUgfAorCQkJ CQkJCQkJCQkgICAoYWxsX2luZGV4ZXMgPworCQkJCQkJCQkJCQkJMCA6IEVJSVRfSVNfSE9U X0lOREVYRUQpLAorCQkJCQkJCQkJCQkgICBzbG90LCBOSUwsCiAJCQkJCQkJCQkJCSAgIE5V TEwpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA0MGIwOTk1OGFjMi4uZjA1 MGMwODhkMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NDUsOCArODQ1LDYgQEAg bWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lk LCBMaXN0ICpleHByZXNzaW9ucywKIAluLT5paV9VbmlxdWUgPSB1bmlxdWU7CiAJbi0+aWlf TnVsbHNOb3REaXN0aW5jdCA9IG51bGxzX25vdF9kaXN0aW5jdDsKIAluLT5paV9SZWFkeUZv ckluc2VydHMgPSBpc3JlYWR5OwotCW4tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsK LQluLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCW4tPmlpX0NvbmN1cnJlbnQgPSBj b25jdXJyZW50OwogCW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlf V2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYwppbmRleCAwNGYyZWIyMWQwYi4uZGQx MTQwYjI5ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9y ZWxhdGlvbi5jCkBAIC0zODQsMTEgKzM4NCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF9pbnNl cnQoUmVsYXRpb24gcmVsLCBQZ1N0YXRfQ291bnRlciBuKQogCiAvKgogICogY291bnQgYSB0 dXBsZSB1cGRhdGUKKyAqCisgKiBob3QgICAgICAtLSB0aGUgdXBkYXRlIHdhcyBhIGhlYXAt b25seSB0dXBsZSAoY2xhc3NpYyBIT1Qgb3IgSE9ULWluZGV4ZWQpCisgKiBob3RfaW5kZXhl ZCAtLSB0aGUgdXBkYXRlIHdhcyBhIEhPVC1pbmRleGVkIHVwZGF0ZSwgYSBzdWJjYXNlIG9m CisgKiAgICAgICAgICAgICAgICBob3Q9dHJ1ZTsgaG90X2luZGV4ZWQgaW1wbGllcyBob3QK KyAqIG5ld3BhZ2UgIC0tIHRoZSBuZXcgdHVwbGUgd2VudCB0byBhIGRpZmZlcmVudCBidWZm ZXIgdGhhbiB0aGUgb2xkIG9uZQogICovCiB2b2lkCi1wZ3N0YXRfY291bnRfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQorcGdzdGF0X2NvdW50 X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3QsIGJvb2wgaG90X2luZGV4ZWQs IGJvb2wgbmV3cGFnZSkKIHsKIAlBc3NlcnQoIShob3QgJiYgbmV3cGFnZSkpOworCUFzc2Vy dCghKGhvdF9pbmRleGVkICYmICFob3QpKTsKIAogCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50 X3JlbGF0aW9uKHJlbCkpCiAJewpAQCAtMzk4LDExICs0MDQsMTcgQEAgcGdzdGF0X2NvdW50 X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3QsIGJvb2wgbmV3cGFnZSkKIAkJ cGdzdGF0X2luZm8tPnRyYW5zLT50dXBsZXNfdXBkYXRlZCsrOwogCiAJCS8qCi0JCSAqIHR1 cGxlc19ob3RfdXBkYXRlZCBhbmQgdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCBjb3VudGVycyBh cmUKLQkJICogbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdCBhZHZhbmNlIHRoZW0KKwkJICog dHVwbGVzX2hvdF91cGRhdGVkLCB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCwgYW5kCisJ CSAqIHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQgY291bnRlcnMgYXJlIG5vbnRyYW5zYWN0aW9u YWwsIHNvIGp1c3QKKwkJICogYWR2YW5jZSB0aGVtLiAgdHVwbGVzX2hvdF9pbmRleGVkX3Vw ZGF0ZWQgaXMgY291bnRlZCBpbiAqYWRkaXRpb24qIHRvCisJCSAqIHR1cGxlc19ob3Q6IGV2 ZXJ5IGhvdC1pbmRleGVkIHVwZGF0ZSBpcyBhbHNvIGEgSE9UIHVwZGF0ZS4KIAkJICovCiAJ CWlmIChob3QpCisJCXsKIAkJCXBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF91cGRh dGVkKys7CisJCQlpZiAoaG90X2luZGV4ZWQpCisJCQkJcGdzdGF0X2luZm8tPmNvdW50cy50 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCsrOworCQl9CiAJCWVsc2UgaWYgKG5ld3BhZ2Up CiAJCQlwZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19uZXdwYWdlX3VwZGF0ZWQrKzsKIAl9 CkBAIC04NTQsNyArODY2LDEwIEBAIHBnc3RhdF9yZWxhdGlvbl9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJdGFiZW50cnktPnR1cGxlc191 cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc191cGRhdGVkOwogCXRhYmVudHJ5LT50 dXBsZXNfZGVsZXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfZGVsZXRlZDsKIAl0YWJl bnRyeS0+dHVwbGVzX2hvdF91cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3Rf dXBkYXRlZDsKKwl0YWJlbnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQgKz0gbHN0 YXRzLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQ7CiAJdGFiZW50cnktPnR1 cGxlc19uZXdwYWdlX3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX25ld3BhZ2Vf dXBkYXRlZDsKKwl0YWJlbnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkICs9 IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDsKKwl0YWJl bnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICs9IGxzdGF0cy0+Y291bnRz LnR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKIAogCS8qCiAJICogSWYgdGFibGUg d2FzIHRydW5jYXRlZC9kcm9wcGVkLCBmaXJzdCByZXNldCB0aGUgbGl2ZS9kZWFkIGNvdW50 ZXJzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggMDU1Zjc1NzEwN2Yu LmNhNjA1MjY1NzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTE1 ODYsNiArMTU4Niw3IEBAIFJlbGF0aW9uSW5pdEluZGV4QWNjZXNzSW5mbyhSZWxhdGlvbiBy ZWxhdGlvbikKIAkgKi8KIAlyZWxhdGlvbi0+cmRfaW5kZXhwcnMgPSBOSUw7CiAJcmVsYXRp b24tPnJkX2luZHByZWQgPSBOSUw7CisJcmVsYXRpb24tPnJkX2luZGF0dHIgPSBOVUxMOwog CXJlbGF0aW9uLT5yZF9leGNsb3BzID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbHByb2Nz ID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CkBAIC0yNDg0LDYg KzI0ODUsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwg Ym9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIp OwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJYm1zX2ZyZWUocmVs YXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhw cmluZGV4YXR0cik7CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxh dGlvbi0+cmRfcHViZGVzYyk7CiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQpAQCAtNTI3 NSw2ICs1Mjc3LDEzMCBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJl bGF0aW9uKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSZWxhdGlvbkdldEluZGV4 ZWRBdHRycyAtLSBwYWxsb2MnZCBCaXRtYXBzZXQgb2YgaGVhcCBhdHRycyB0aGlzIGluZGV4 CisgKiByZWZlcmVuY2VzLgorICoKKyAqIEluY2x1ZGVzIGF0dHJpYnV0ZXMgdXNlZCBhcyBz aW1wbGUga2V5IGNvbHVtbnMsIElOQ0xVREUgY29sdW1ucywgaW5zaWRlCisgKiBleHByZXNz aW9uIGNvbHVtbnMsIGFuZCBpbnNpZGUgdGhlIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlLiAg QXR0cmlidXRlCisgKiBudW1iZXJzIHVzZSB0aGUgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciBvZmZzZXQgY29udmVudGlvbiBzbworICogdGhhdCBzeXN0ZW0gYXR0cmli dXRlcyBhcmUgcmVwcmVzZW50YWJsZSBhbG9uZ3NpZGUgdXNlciBhdHRyaWJ1dGVzLgorICoK KyAqIFRoZSBmdW5jdGlvbiBidWlsZHMgdXAgdGhlIGJpdG1hcCBmcm9tOgorICogICAtIHJk X2luZGV4LT5pbmRrZXkgICAgICAgICAgIChrZXlzICsgSU5DTFVERSkKKyAqICAgLSBSZWxh dGlvbkdldEluZGV4RXhwcmVzc2lvbnMgKHBhcnNlZCBleHByZXNzaW9uIHRyZWVzLCBhbHJl YWR5IGNhY2hlZCkKKyAqICAgLSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlICAgKHBhcnNl ZCBwcmVkaWNhdGUgdHJlZSwgYWxyZWFkeSBjYWNoZWQpCisgKiBhbmQgY2FjaGVzIGEgY29w eSBpbiByZF9pbmRleGVkYXR0ciwgd2hpY2ggbGl2ZXMgaW4gcmRfaW5kZXhjeHQuCisgKgor ICogVGhlIHJldHVybmVkIEJpdG1hcHNldCBpcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxlcidz IGN1cnJlbnQgbWVtb3J5CisgKiBjb250ZXh0OyB0aGUgY2FsbGVyIG93bnMgaXQgYW5kIG11 c3QgYm1zX2ZyZWUgd2hlbiBkb25lLiAgV2UgbmV2ZXIgaGFuZAorICogb3V0IGEgYm9ycm93 ZWQgcG9pbnRlciB0byB0aGUgY2FjaGVkIGNvcHkgYmVjYXVzZSByZWxjYWNoZSBpbnZhbGlk YXRpb24KKyAqIGNhbiByZWJ1aWxkIHJkX2luZGV4Y3h0IGluIHBsYWNlIGV2ZW4gd2hpbGUg YSByZWZjb3VudCBpcyBoZWxkLgorICoKKyAqIENhbGxlciBtdXN0IGhvbGQgYW4gb3BlbiBs b2NrIG9uIHRoZSBpbmRleCByZWxhdGlvbi4KKyAqLworQml0bWFwc2V0ICoKK1JlbGF0aW9u R2V0SW5kZXhlZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKQoreworCUJpdG1hcHNldCAgKmF0 dHJzID0gTlVMTDsKKwlGb3JtX3BnX2luZGV4IGluZGV4U3RydWN0OworCUxpc3QJICAgKmlu ZGV4cHJzOworCUxpc3QJICAgKmluZHByZWQ7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisK KwlBc3NlcnQoaW5kZXhSZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0lOREVYIHx8 CisJCSAgIGluZGV4UmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05F RF9JTkRFWCk7CisKKwkvKiBGYXN0IHBhdGg6IHJldHVybiBhIGNvcHkgb2YgdGhlIGNhY2hl ZCBiaXRtYXAuICovCisJaWYgKGluZGV4UmVsLT5yZF9pbmRhdHRyICE9IE5VTEwpCisJCXJl dHVybiBibXNfY29weShpbmRleFJlbC0+cmRfaW5kYXR0cik7CisKKwlpbmRleFN0cnVjdCA9 IGluZGV4UmVsLT5yZF9pbmRleDsKKworCS8qCisJICogRHVyaW5nIHZlcnkgZWFybHkgYm9v dHN0cmFwIHJkX2luZGV4dHVwbGUgbWF5IG5vdCBiZSBwb3B1bGF0ZWQgeWV0LiBJbgorCSAq IHRoYXQgY2FzZSB3ZSBmYWxsIGJhY2sgdG8ganVzdCB0aGUga2V5IGNvbHVtbnMgd2l0aG91 dCBjYWNoaW5nLgorCSAqLworCWlmIChpbmRleFJlbC0+cmRfaW5kZXh0dXBsZSA9PSBOVUxM KQorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmF0dHM7IGkr KykKKwkJeworCQkJQXR0ck51bWJlcglhdHRybnVtID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52 YWx1ZXNbaV07CisKKwkJCWlmIChhdHRybnVtICE9IDApCisJCQkJYXR0cnMgPSBibXNfYWRk X21lbWJlcihhdHRycywKKwkJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJfQorCQlyZXR1cm4gYXR0cnM7CisJfQorCisJLyoK KwkgKiBLZXkgY29sdW1ucyBhbmQgSU5DTFVERSAoY292ZXJpbmcpIGNvbHVtbnMuICBJTkNM VURFIGNvbHVtbnMgbXVzdCBiZQorCSAqIGNvdW50ZWQ6IHRoZWlyIHZhbHVlcyBhcmUgc3Rv cmVkIGluIHRoZSBpbmRleCBsZWFmIGFuZCBzZXJ2ZWQgYnkKKwkgKiBpbmRleC1vbmx5IHNj YW5zLCBzbyBhbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIGFuIElOQ0xVREUgY29sdW1uIG11c3QK KwkgKiBpbnNlcnQgYSBmcmVzaCBpbmRleCBlbnRyeSAob3IgYmUgZGlzcXVhbGlmaWVkIGZy b20gc3RheWluZworCSAqIEhPVC1pbmRleGVkKSBleGFjdGx5IGFzIGZvciBhIGtleSBjb2x1 bW4uICBUaGlzIG1hdGNoZXMgdGhlIGhlYXAtbGV2ZWwKKwkgKiBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcCguLi4sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpLCB3aGljaCBhbHNv CisJICogdW5pb25zIGFsbCBpbmRuYXR0cy4gIEV4cHJlc3Npb24gYW5kIHBhcnRpYWwtcHJl ZGljYXRlIGNvbHVtbnMgYXJlCisJICogYWRkZWQgYmVsb3cuCisJICovCisJZm9yIChpbnQg aSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmF0dHM7IGkrKykKKwl7CisJCUF0dHJOdW1i ZXIJYXR0cm51bSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCisJCS8qIGF0 dG51bSAwIG1lYW5zICJleHByZXNzaW9uIjsgdGhvc2UgYXR0cnMgYXJlIHBpY2tlZCB1cCBi ZWxvdy4gKi8KKwkJaWYgKGF0dHJudW0gIT0gMCkKKwkJCWF0dHJzID0gYm1zX2FkZF9tZW1i ZXIoYXR0cnMsCisJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyKTsKKwl9CisKKwkvKgorCSAqIEV4cHJlc3Npb24gY29sdW1ucyBhbmQg cGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1ucy4gIERlbGliZXJhdGVseQorCSAqIGRv IE5PVCB1c2UgUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKCkvUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZSgpCisJICogaGVyZSwgZm9yIHRoZSBzYW1lIHJlYXNvbiBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcCBhdm9pZHMgdGhlbTogdGhvc2UKKwkgKiBmdW5jdGlvbnMgcnVu IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoKSwgd2hpY2ggbmVlZHMgYSBzbmFwc2hvdCB3ZSBt YXkKKwkgKiBub3QgaGF2ZSwgYW5kIGNhbiBjb25zdC1mb2xkIGF3YXkgYSBWYXIgcmVmZXJl bmNlIChlLmcuIGEgQ0FTRSB3aXRoIGEKKwkgKiBzdGF0aWNhbGx5LWRlY2lkYWJsZSBicmFu Y2gpLCBjYXVzaW5nIHRoaXMgYml0bWFwIHRvIHVuZGVyLXJlcG9ydCBhbgorCSAqIGF0dHJp YnV0ZSB0aGF0IHJkX2luZGV4ZWRhdHRyL3JkX2V4cHJpbmRleGF0dHIgKGJ1aWx0IGZyb20g dGhlIHNhbWUgcmF3CisJICogY2F0YWxvZyB0ZXh0KSBzdGlsbCByZWNvcmQuICBQYXJzZSB0 aGUgcmF3IHN0b3JlZCB0cmVlcyBpbnN0ZWFkLCBzbworCSAqIHRoaXMgZnVuY3Rpb24ncyBy ZXN1bHQgc3RheXMgYSBzdXBlcnNldC1jb25zaXN0ZW50IG1hdGNoIHdpdGggdGhvc2UuCisJ ICovCisJeworCQlEYXR1bQkJZGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKworCQlkYXR1bSA9 IGhlYXBfZ2V0YXR0cihpbmRleFJlbC0+cmRfaW5kZXh0dXBsZSwgQW51bV9wZ19pbmRleF9p bmRleHBycywKKwkJCQkJCQkgR2V0UGdJbmRleERlc2NyaXB0b3IoKSwgJmlzbnVsbCk7CisJ CWlmICghaXNudWxsKQorCQl7CisJCQlpbmRleHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9k ZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9k ZSAqKSBpbmRleHBycywgMSwgJmF0dHJzKTsKKwkJfQorCisJCWRhdHVtID0gaGVhcF9nZXRh dHRyKGluZGV4UmVsLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZHByZWQsCisJ CQkJCQkJIEdldFBnSW5kZXhEZXNjcmlwdG9yKCksICZpc251bGwpOworCQlpZiAoIWlzbnVs bCkKKwkJeworCQkJaW5kcHJlZCA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKSk7CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpbmRwcmVk LCAxLCAmYXR0cnMpOworCQl9CisJfQorCisJLyoKKwkgKiBDYWNoZSBhIGNvcHkgaW5zaWRl IHJkX2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgYXJlIGNoZWFwLiAgVGhlCisJICog Y2FjaGVkIGJpdG1hcCBpcyBmcmVlZCBhbG9uZyB3aXRoIHJkX2luZGV4Y3h0IG9uIHJlbGNh Y2hlIHJlYnVpbGQsIHNvCisJICogaXQncyBzYWZlIHRvIHN0YXNoIGhlcmUuCisJICovCisJ aWYgKGluZGV4UmVsLT5yZF9pbmRleGN4dCAhPSBOVUxMKQorCXsKKwkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsLT5yZF9pbmRleGN4dCk7CisJCWluZGV4UmVs LT5yZF9pbmRhdHRyID0gYm1zX2NvcHkoYXR0cnMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3h0KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8qCiAgKiBSZWxhdGlv bkdldEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0cmlidXRl IG51bWJlcnMKICAqCkBAIC01MzEzLDYgKzU0MzksNyBAQCBCaXRtYXBzZXQgKgogUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1h cEtpbmQgYXR0cktpbmQpCiB7CiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVt bnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpleHByaW5kZXhhdHRyczsg LyogY29sdW1ucyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLwogCUJpdG1h cHNldCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAq LwogCUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGlj YSBpZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyBy ZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KQEAgLTUzMzksNiArNTQ2Niw4IEBAIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBL aW5kIGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhl ZGF0dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJl dHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJ TkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxh dGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1Is ICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzgzLDYgKzU1 MTIsNyBAQCByZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaW5kZXhlZGF0dHJz ID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWV4cHJpbmRleGF0dHJzID0g TlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CiAJCU9pZAkJCWluZGV4T2lk ID0gbGZpcnN0X29pZChsKTsKQEAgLTU0ODcsNiArNTYxNywyOCBAQCByZXN0YXJ0OgogCQkv KiBDb2xsZWN0IGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAq LwogCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOwogCisJCS8q CisJCSAqIElmIHRoaXMgaW5kZXggZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24sIHJlY29yZCBl dmVyeSBoZWFwIGF0dHJpYnV0ZQorCQkgKiBpdCByZWZlcmVuY2VzIChrZXkgY29sdW1ucywg ZXhwcmVzc2lvbiB2YXJzLCBwcmVkaWNhdGUgdmFycykgaW4KKwkJICogZXhwcmluZGV4YXR0 cnMuICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgZGlzcXVhbGlmaWVzIHRoZQorCQkgKiBI T1QtaW5kZXhlZCBwYXRoIGZvciBhbiBVUERBVEUgdGhhdCB0b3VjaGVzIG9uZSBvZiB0aGVz ZSwgYmVjYXVzZQorCQkgKiBleHByZXNzaW9uLWF3YXJlIHNlbGVjdGl2ZSBpbmRleCBtYWlu dGVuYW5jZSBpcyBub3QgaW1wbGVtZW50ZWQKKwkJICogeWV0LgorCQkgKi8KKwkJaWYgKGlu ZGV4RXhwcmVzc2lvbnMgIT0gTlVMTCkKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4 RGVzYy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQl7CisJCQkJaW50CQkJYXR0cm51 bSA9IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCQlpZiAo YXR0cm51bSAhPSAwKQorCQkJCQlleHByaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGV4 cHJpbmRleGF0dHJzLAorCQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhw cmVzc2lvbnMsIDEsICZleHByaW5kZXhhdHRycyk7CisJCQlwdWxsX3ZhcmF0dG5vcyhpbmRl eFByZWRpY2F0ZSwgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJfQorCiAJCWluZGV4X2Nsb3Nl KGluZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CiAKQEAgLTU1MTUsMTQgKzU2Njcs MjcgQEAgcmVzdGFydDoKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUo aW5kZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsKKwkJYm1zX2Zy ZWUoZXhwcmluZGV4YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKIAkvKgotCSAq IFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJp emluZyBpbmRleGVzLiBUaGVuCi0JICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCi0JICogYXR0cmlidXRlcy4K KwkgKiBSZWNvcmQgd2hpY2ggYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1 bW1hcml6aW5nIGluZGV4ZXMsIHNvCisJICogSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RCByZXBvcnRzIGNvbHVtbnMgd2hvc2Ugc29sZSBpbmRleGVzIGFyZQorCSAqIHN1bW1hcml6 aW5nIG9uZXMsIHRoZW4gZm9sZCB0aG9zZSBjb2x1bW5zIGludG8gaW5kZXhlZGF0dHJzIGFz IHdlbGwuCisJICoKKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIG11c3QgaW5jbHVk ZSBzdW1tYXJpemluZy1pbmRleCBjb2x1bW5zIGZvcgorCSAqIHRoZSBIT1QtaW5kZXhlZCB3 cml0ZSBwYXRoOiBpdCBjb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIG92ZXIKKwkg KiB0aGlzIGJpdG1hcCB0byBidWlsZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlcywgYW5kIG9ubHkKKwkgKiBtYWludGFpbnMgaW5kZXhlcyB3aGVuIHRoYXQgc2V0 IGlzIG5vbi1lbXB0eSAob3IgdGhlIHVwZGF0ZSBpcworCSAqIG5vbi1IT1QpLiAgQSBjaGFu Z2UgdG8gYSBjb2x1bW4gaW5kZXhlZCBvbmx5IGJ5IGEgc3VtbWFyaXppbmcgaW5kZXgKKwkg KiBtdXN0IHRoZXJlZm9yZSBhcHBlYXIgaW4gdGhlIGJpdG1hcCBzbyB0aGUgc3VtbWFyaXpp bmcgaW5kZXggZ2V0cyBpdHMKKwkgKiBibG9jayBzdW1tYXJ5IHJlZnJlc2hlZC4gIEhlYXBV cGRhdGVIb3RBbGxvd2FibGUncyBhbGxfc3VtbWFyaXppbmcKKwkgKiBjaGVjayBzdGlsbCBr ZWVwcyBzdWNoIGFuIHVwZGF0ZSBvbiB0aGUgY2xhc3NpYy1IT1QgcGF0aCAoaXQgc3RheXMK KwkgKiBjbGFzc2ljIEhPVCwgc2luY2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCAt LSBzdW1tYXJpemluZy1vbmx5IC0tCisJICogaXMgYSBzdXBlcnNldCBvZiB0aGUgbW9kaWZp ZWQgYXR0cmlidXRlcyksIGFuZCB0aGUgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBpbnNlcnRz IHVuY29uZGl0aW9uYWxseSB2aWEgaXRzIGlpX1N1bW1hcml6aW5nIGZsYWcuCiAJICovCiAJ c3VtbWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywgaW5k ZXhlZGF0dHJzKTsKIAlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhlZGF0 dHJzLCBzdW1tYXJpemVkYXR0cnMpOwpAQCAtNTUzOSw2ICs1NzA0LDggQEAgcmVzdGFydDoK IAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0g TlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CisJcmVsYXRp b24tPnJkX2V4cHJpbmRleGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3Bp ZXMgb2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9u YWxseQpAQCAtNTU1Myw2ICs1NzIwLDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRh dHRyID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVk YXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJp bmRleGF0dHIgPSBibXNfY29weShleHByaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0 dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBA IC01NTY5LDYgKzU3MzcsNzIgQEAgcmVzdGFydDoKIAkJCXJldHVybiBpbmRleGVkYXR0cnM7 CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1t YXJpemVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJ CXJldHVybiBleHByaW5kZXhhdHRyczsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOworCQkJcmV0dXJuIE5VTEw7CisJfQor fQorCisvKgorICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkgLS0gYm9ycm93 aW5nIHZhcmlhbnQgb2YKKyAqCQlSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcAorICoKKyAq IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSByZWxjYWNoZS1vd25lZCBiaXRtYXAgZm9yIHRo ZSBnaXZlbiBhdHRyS2luZAorICogd2l0aG91dCBtYWtpbmcgYSBkZWZlbnNpdmUgY29weS4g IFRoaXMgaXMgYSBob3QtcGF0aCBvcHRpbWl6YXRpb24gZm9yCisgKiByZWFkLW9ubHkgY2Fs bGVycyB0aGF0IHBlcmZvcm0gc2V0IG9wZXJhdGlvbnMgbGlrZSBibXNfb3ZlcmxhcCwKKyAq IGJtc19pc19zdWJzZXQsIGJtc19lcXVhbCwgb3IgYm1zX251bV9tZW1iZXJzIGFuZCBuZXZl ciBtdXRhdGUgdGhlCisgKiByZXR1cm5lZCBiaXRtYXAuICBUaGUgcmVzdWx0IGlzIGNvbmNl cHR1YWxseSBgY29uc3QgQml0bWFwc2V0ICpgOyBjYWxsZXJzCisgKiBtdXN0IG5vdCBwYXNz IGl0IHRvIGFueXRoaW5nIHRoYXQgY291bGQgZnJlZSBvciBtb2RpZnkgdGhlIHVuZGVybHlp bmcKKyAqIG1lbW9yeSAoZS5nLiwgYm1zX2FkZF9tZW1iZXIsIGJtc19pbnRfbWVtYmVycywg Ym1zX2ZyZWUpLgorICoKKyAqIExpZmV0aW1lOiB0aGUgcG9pbnRlciBpcyB2YWxpZCBvbmx5 IHVudGlsIHRoZSBuZXh0IGV2ZW50IHRoYXQgY291bGQKKyAqIHRyaWdnZXIgYSByZWxjYWNo ZSBpbnZhbGlkYXRpb24gb24gYHJlbGF0aW9uYC4gIENhbGxlcnMgbXVzdCBub3QgaW52b2tl CisgKiBhbnkgY29kZSB0aGF0IG9wZW5zIGEgcmVsYXRpb24sIHJ1bnMgY2F0YWxvZyBsb29r dXBzLCBvciBvdGhlcndpc2UKKyAqIGFjY2VwdHMgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGJl dHdlZW4gdGhlIGZldGNoIGFuZCB0aGUgbGFzdCB1c2UuCisgKgorICogRm9yIHRoZSBjb21t b24gY2FzZSB0aGUgcmVsY2FjaGUgZW50cnkncyBhdHRyaWJ1dGUgYml0bWFwcyBhcmUgYWxy ZWFkeQorICogY29tcHV0ZWQgKHJkX2F0dHJzdmFsaWQgaXMgdHJ1ZSkuICBXaGVuIHRoZXkg YXJlbid0LCB3ZSBnbyB0aHJvdWdoCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCB0 byBwb3B1bGF0ZSB0aGUgY2FjaGUgKHdoaWNoIGNvc3RzIG9uZQorICogdGhyb3dhd2F5IGJt c19jb3B5IG9uIGZpcnN0IHVzZSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBjYWNoZWQgcG9pbnRl ciBvbgorICogdGhlIHNlY29uZCBwYXNzLiAgVGhlIGZpcnN0LXVzZSBwYXRoIGlzIHJhcmUg YW5kIG5ldmVyIG9uIHRoZSBiZW5jaCBob3QKKyAqIHBhdGgsIHNvIHRoZSBzaW1wbGljaXR5 IGlzIHByZWZlcnJlZCBvdmVyIG9wZW4tY29kaW5nIHRoZSBwb3B1bGF0ZS1vbmx5CisgKiB2 YXJpYW50LgorICovCitjb25zdCBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0 cktpbmQpCit7CisJaWYgKCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwl7CisJCUJpdG1h cHNldCAgKnBvcHVsYXRlZDsKKworCQkvKiBQb3B1bGF0ZSByZF8qYXR0ciBmaWVsZHM7IGRp c2NhcmQgdGhlIHJldHVybmVkIGNvcHkuICovCisJCXBvcHVsYXRlZCA9IFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBhdHRyS2luZCk7CisJCWJtc19mcmVlKHBvcHVs YXRlZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zCisJCSAqIE5VTEwgd2l0aG91dCBz ZXR0aW5nIHJkX2F0dHJzdmFsaWQuICBNaXJyb3IgdGhhdCBoZXJlLgorCQkgKi8KKwkJaWYg KCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXN3 aXRjaCAoYXR0cktpbmQpCisJeworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0tFWToKKwkJ CXJldHVybiByZWxhdGlvbi0+cmRfa2V5YXR0cjsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1B UF9QUklNQVJZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfcGthdHRyOworCQljYXNl IElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+ cmRfaWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1 cm4gcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQ X1NVTU1BUklaRUQ6CisJCQlyZXR1cm4gcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyOwor CQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gcmVsYXRp b24tPnJkX2V4cHJpbmRleGF0dHI7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5r bm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpAQCAtNjUw OCw2ICs2NzQyLDcgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJ CXJlbC0+cmRfcGFydGNoZWNrY3h0ID0gTlVMTDsKIAkJcmVsLT5yZF9pbmRleHBycyA9IE5J TDsKIAkJcmVsLT5yZF9pbmRwcmVkID0gTklMOworCQlyZWwtPnJkX2luZGF0dHIgPSBOVUxM OwogCQlyZWwtPnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5V TEw7CiAJCXJlbC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4 IDc5MjQwMzMzNTMwLi4xN2M3NmUzN2NkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTI5LDcg KzI5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQYXRoIEluZGV4UGF0aDsKIC8qIExpa2V3 aXNlLCB0aGlzIGZpbGUgc2hvdWxkbid0IGRlcGVuZCBvbiBleGVjbm9kZXMuaC4gKi8KIHR5 cGVkZWYgc3RydWN0IEluZGV4SW5mbyBJbmRleEluZm87CiAKLQogLyoKICAqIFByb3BlcnRp ZXMgZm9yIGFtcHJvcGVydHkgQVBJLiAgVGhpcyBsaXN0IGNvdmVycyBwcm9wZXJ0aWVzIGtu b3duIHRvIHRoZQogICogY29yZSBjb2RlLCBidXQgYW4gaW5kZXggQU0gY2FuIGRlZmluZSBp dHMgb3duIHByb3BlcnRpZXMsIGJ5IG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmlu ZGV4IDJkYmZhZDkyMTEzLi4yMzY3NmFlNzFlOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt Mzg0LDExICszODQsNDcgQEAgZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQsCiAJCQkJCQkJIGJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQpOwogZXh0ZXJuIHZvaWQgaGVhcF9maW5pc2hf c3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq dGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKKworLyoKKyAqIEhlYXBVcGRh dGVJbmRleE1vZGUgLS0KKyAqCVRocmVlLXZhbHVlZCBjbGFzc2lmaWNhdGlvbiByZXR1cm5l ZCBieSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgdGhhdAorICoJdGVsbHMgaGVhcF91cGRh dGUoKSB3aGV0aGVyIGEgSE9UIHVwZGF0ZSBpcyBwZXJtaXR0ZWQgZm9yIHRoaXMgdHVwbGUg YW5kLAorICoJaWYgc28sIHdoZXRoZXIgdGhlIGluZGV4ZXMgbWF5IGJlIG1haW50YWluZWQg c2VsZWN0aXZlbHkuCisgKgorICoJSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAqCQlIT1Qg aXMgbm90IGFsbG93ZWQ7IHRoZSBuZXcgdHVwbGUgbXVzdCBnbyBvbiBpdHMgb3duIFRJRCBh bmQgZXZlcnkKKyAqCQlpbmRleCByZWNlaXZlcyBhIGZyZXNoIGVudHJ5LiAgVGhpcyBpcyB0 aGUgY2xhc3NpYyBwcmUtSE9ULWluZGV4ZWQKKyAqCQliZWhhdmlvciBmb3IgdXBkYXRlcyB0 aGF0IG1vZGlmeSBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZS4KKyAqCisg KglIRUFQX0hFQVBfT05MWV9VUERBVEUKKyAqCQlDbGFzc2ljIEhPVCB1cGRhdGU6IG5vIG5v bi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkIChvbmx5CisgKgkJc3Vt bWFyaXppbmcgb25lcywgaWYgYW55KSwgc28gbm8gaW5kZXggbmVlZHMgYSBuZXcgZW50cnku CisgKgorICoJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFCisgKgkJSE9UIHdpdGggc2Vs ZWN0aXZlIGluZGV4IHVwZGF0ZTogYXQgbGVhc3Qgb25lIG5vbi1zdW1tYXJpemluZyBpbmRl eCdzCisgKgkJYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0aGUgbmV3IHR1cGxlIGNhbiBzdGls bCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqCQl0aGUgc2FtZSBwYWdlOyBvbmx5IHRoZSBp bmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZCByZWNlaXZlIGEgbmV3CisgKgkJZW50 cnkuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGhlYXBfdXBkYXRlKCkgc3RpbGwgZmFsbHMgYmFj ayB0byBhCisgKgkJbm9uLUhPVCB1cGRhdGUgaWYgdGhlIG5ldyB0dXBsZSBkb2VzIG5vdCBm aXQgb24gdGhlIHBhZ2UuCisgKgorICoJQ2FsbGVycyBzaG91bGQgc3BlbGwgdGhlIGV4YWN0 IG1vZGUgdGhleSBjYXJlIGFib3V0LiAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAqCWlz IHRoZSB6ZXJvL2ZhbHNlIHZhbHVlIGFuZCBkb3VibGVzIGFzIGEgZGlzdGluZ3Vpc2hlZCAi bm8gSE9UIiBzZW50aW5lbAorICoJKGUuZy4gdGVzdGluZyBob3RfbW9kZSAhPSBIRUFQX1VQ REFURV9BTExfSU5ERVhFUyksIGJ1dCB0aGUgdmFsdWVzIGFyZSBub3QKKyAqCW1lYW5pbmdm dWwgYXMgYSBudW1lcmljIG9yZGVyaW5nLgorICovCit0eXBlZGVmIGVudW0gSGVhcFVwZGF0 ZUluZGV4TW9kZQoreworCUhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTID0gMCwKKwlIRUFQX0hF QVBfT05MWV9VUERBVEUgPSAxLAorCUhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSA9IDIs Cit9IEhlYXBVcGRhdGVJbmRleE1vZGU7CisKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKIAkJ CQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMs CiAJCQkJCQkJIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCQkJCQkgVE1f RmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCi0JCQkJ CQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBjb25zdCBib29sIGhv dF9hbGxvd2VkKTsKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0 cnMsCisJCQkJCQkJIEhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGUpOwogZXh0ZXJuIFRN X1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0 dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9j a1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVz LApAQCAtNDIzLDcgKzQ1OSw3IEBAIGV4dGVybiBib29sIGhlYXBfdHVwbGVfbmVlZHNfZXZl bnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CiBleHRlcm4gdm9pZCBzaW1w bGVfaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXApOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKLQkJCQkJ CQkgICBIZWFwVHVwbGUgdHVwLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7 CisJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgYm9vbCAqdXBkYXRlX2FsbF9pbmRleGVzKTsK IAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CkBA IC00MzQsNyArNDcwLDEwIEBAIGV4dGVybiB2b2lkIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNl dChJbmRleEZldGNoVGFibGVEYXRhICpzY2FuKTsKIGV4dGVybiB2b2lkIGhlYXBhbV9pbmRl eF9mZXRjaF9lbmQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nhbik7CiBleHRlcm4gYm9vbCBo ZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2ludGVyIHRpZCwgUmVsYXRpb24gcmVsYXRp b24sCiAJCQkJCQkJCSAgIEJ1ZmZlciBidWZmZXIsIFNuYXBzaG90IHNuYXBzaG90LCBIZWFw VHVwbGUgaGVhcFR1cGxlLAotCQkJCQkJCQkgICBib29sICphbGxfZGVhZCwgYm9vbCBmaXJz dF9jYWxsKTsKKwkJCQkJCQkJICAgYm9vbCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCwK KwkJCQkJCQkJICAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVjaywKKwkJCQkJCQkJICAgdWlu dDggKmNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkgICBib29sICpwcmVmaXhfYWxsX2RlYWQp OwogZXh0ZXJuIGJvb2wgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZl dGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJIEl0ZW1Qb2ludGVyIHRpZCwgU25hcHNo b3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgKmhl YXBfY29udGludWUsCkBAIC00NjQsOCArNTAzLDkgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKIAogLyogaW4g aGVhcC9oZWFwYW0uYyAqLwotZXh0ZXJuIGJvb2wgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMs Ci0JCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSk7CisKK2V4dGVybiBIZWFwVXBk YXRlSW5kZXhNb2RlIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24s CisJCQkJCQkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiBl eHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCAyZWEwNmE2N2E2My4uZmU0 NDY5MTc4YWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTM0LDYgKzEzNCw0NSBAQCB0 eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhCiAJICogcGVybWl0dGVkLgogCSAq LwogCXVpbnQzMgkJZmxhZ3M7CisKKwkvKgorCSAqIFNpZGUgY2hhbm5lbCBmb3IgdGFibGUg QU1zIHdob3NlIHVwZGF0ZSBjaGFpbnMgY2FuIHJlYWNoIGEgZGlmZmVyZW50CisJICogc2V0 IG9mIGluZGV4LWtleSB2YWx1ZXMgdGhhbiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkgcmVj b3JkZWQgKGhlYXAncworCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNoYWlucykuICBT ZXQgdHJ1ZSBieSB0aGUgdGFibGUgQU0gd2hlbiB0aGUKKwkgKiB3YWxrIHRvIHRoZSBsaXZl IHR1cGxlIGNyb3NzZWQgYSBIT1QvU0lVIGhvcCBhZnRlciB0aGUgZW50cnkncyBvd24KKwkg KiB0dXBsZSwgbWVhbmluZyB0aGUgYXJyaXZpbmcgZW50cnkncyBzdG9yZWQga2V5IG1heSBu byBsb25nZXIgbWF0Y2ggdGhlCisJICogbGl2ZSB0dXBsZSBhbmQgdGhlIGluZGV4LWFjY2Vz cyBsYXllciBtdXN0IHJlY2hlY2sgaXQuICBMZWZ0IGZhbHNlIHdoZW4KKwkgKiBubyBzdWNo IGhvcCB3YXMgY3Jvc3NlZCAodGhlIGVudHJ5IGlzIGRlZmluaXRlbHkgY3VycmVudCksIGFu ZCBhbHdheXMKKwkgKiBmYWxzZSBmb3IgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMuCisJICov CisJYm9vbAkJeHNfaG90X2luZGV4ZWRfcmVjaGVjazsKKworCS8qCisJICogQ29tcGFuaW9u IHRvIHhzX2hvdF9pbmRleGVkX3JlY2hlY2suICB4c19ob3RfaW5kZXhlZF9jcm9zc2VkIGlz IHRoZQorCSAqIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMg dGhlIHdhbGsgY3Jvc3NlZCBhZnRlciB0aGUKKwkgKiBlbnRyeSdzIG93biB0dXBsZSwgb3Zl ciBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIChiaXQgYXR0bnVtLTEgZm9yIGEKKwkgKiAxLWJh c2VkIGF0dG51bSkuICBUaGUgaW5kZXgtYWNjZXNzIGxheWVyIHRlc3RzIGl0IGFnYWluc3Qg dGhlIGFycml2aW5nCisJICogaW5kZXgncyBrZXkgY29sdW1ucyB0byBqdWRnZSBzdGFsZW5l c3Mgd2l0aG91dCBhIGtleSBjb21wYXJpc29uOiBhbnkKKwkgKiBvdmVybGFwIG1lYW5zIGEg Y3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUgb2YgdGhlIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUK KwkgKiBlbnRyeSBpcyBzdGFsZS4gIFRoZSB1bmlvbiBpcyBjb21wbGV0ZSAoZXZlcnkgY3Jv c3NlZCBsaXZlIGhvcCBhbmQKKwkgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGNvbnRyaWJ1 dGVzIGl0cyBiaXRtYXAsIGFuZCBjb2xsYXBzZSBvbmx5CisJICogcmVjbGFpbXMgbWVtYmVy cyBzdWJzdW1lZCBieSBzdXJ2aXZpbmcgaG9wcyksIHNvIGRpc2pvaW50bmVzcyByZWxpYWJs eQorCSAqIG1lYW5zIGZyZXNoLiAgSXQgaXMgTlVMTCBmb3IgQU1zIHdpdGhvdXQgc3VjaCBj aGFpbnMgYW5kIGlzIHNpemVkIGJ5CisJICogdGhlIHRhYmxlIEFNIGZvciB0aGUgaGVhcCBy ZWxhdGlvbidzIGNvbHVtbiBjb3VudC4KKwkgKi8KKwl1aW50OAkgICAqeHNfaG90X2luZGV4 ZWRfY3Jvc3NlZDsKKworCS8qCisJICogU2V0IGJ5IHRoZSB0YWJsZSBBTSB3aGVuIGl0IHJl dHVybnMgYSB0dXBsZTogdHJ1ZSBpZmYgZXZlcnkgY2hhaW4KKwkgKiBtZW1iZXIgdGhlIHdh bGsgc2tpcHBlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHJldHVybmVkICh2aXNpYmxlKSB0dXBs ZSBpcworCSAqIGRlYWQgdG8gYWxsIHRyYW5zYWN0aW9ucyAoYmVsb3cgdGhlIGdsb2JhbCB4 bWluIGhvcml6b24pLiAgQ29tYmluZWQKKwkgKiB3aXRoIGEgc3RhbGUgdmVyZGljdCAodGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFwcGVkIHRoZQorCSAqIGluZGV4J3Mg a2V5IGNvbHVtbnMpLCB0aGlzIGxldHMgdGhlIGluZGV4LWFjY2VzcyBsYXllcgorCSAqIGtp bGwgdGhlIGFycml2aW5nIGxlYWY6IG5vIHNuYXBzaG90IGNhbiByZWFjaCBhIG1hdGNoaW5n IHZlcnNpb24KKwkgKiB0aHJvdWdoIGl0LCBzbyBpdCBpcyByZWR1bmRhbnQuICBBTXMgd2l0 aG91dCBzdWNoIGNoYWlucyBsZWF2ZSBpdAorCSAqIGZhbHNlLgorCSAqLworCWJvb2wJCXhz X3ByZWZpeF9hbGxfZGVhZDsKIH0gSW5kZXhGZXRjaFRhYmxlRGF0YTsKIAogc3RydWN0IElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKQEAgLTE1NCw2ICsxOTMsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAlzdHJ1Y3QgU2NhbktleURhdGEgKmtleURhdGE7 CS8qIGFycmF5IG9mIGluZGV4IHF1YWxpZmllciBkZXNjcmlwdG9ycyAqLwogCXN0cnVjdCBT Y2FuS2V5RGF0YSAqb3JkZXJCeURhdGE7CS8qIGFycmF5IG9mIG9yZGVyaW5nIG9wIGRlc2Ny aXB0b3JzICovCiAJYm9vbAkJeHNfd2FudF9pdHVwOwkvKiBjYWxsZXIgcmVxdWVzdHMgaW5k ZXggdHVwbGVzICovCisJYm9vbAkJeHNfaW5kZXhfb25seTsJLyogY2FsbGVyIGlzIGFuIGlu ZGV4LW9ubHkgc2NhbiB0aGF0IG1heQorCQkJCQkJCQkgKiByZXR1cm4gdHVwbGVzIHdpdGhv dXQgZmV0Y2hpbmcgdGhlIGhlYXA7CisJCQkJCQkJCSAqIEFNcyBtdXN0IHJldGFpbiBsZWFm LXBhZ2UgcGlucyBmb3Igc3VjaAorCQkJCQkJCQkgKiBzY2FucyAoVk0gYWxsLXZpc2libGUg LyBUSUQtcmVjeWNsZSByYWNlKSwKKwkJCQkJCQkJICogd2hlcmVhcyBhIHBsYWluIHNjYW4g dGhhdCBzZXRzIHhzX3dhbnRfaXR1cAorCQkJCQkJCQkgKiBvbmx5IHRvIGluc3BlY3QgdGhl IGluZGV4IHR1cGxlIHN0aWxsCisJCQkJCQkJCSAqIGZldGNoZXMgdGhlIGhlYXAgYW5kIG1h eSBkcm9wIHBpbnMgKi8KIAlib29sCQl4c190ZW1wX3NuYXA7CS8qIHVucmVnaXN0ZXIgc25h cHNob3QgYXQgc2NhbiBlbmQ/ICovCiAKIAkvKiBzaWduYWxpbmcgdG8gaW5kZXggQU0gYWJv dXQga2lsbGluZyBpbmRleCB0dXBsZXMgKi8KQEAgLTE4OSw2ICsyMzUsMjAgQEAgdHlwZWRl ZiBzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAogCWJvb2wJCXhzX3JlY2hlY2s7CQkvKiBU IG1lYW5zIHNjYW4ga2V5cyBtdXN0IGJlIHJlY2hlY2tlZCAqLwogCisJLyoKKwkgKiBUIG1l YW5zIHRoZSBpbmRleCBlbnRyeSB0aGF0IHJlYWNoZWQgeHNfaGVhcHRpZCBpcyBzdGFsZTog dGhlIEhPVCBjaGFpbgorCSAqIHdhbGtlZCB0byByZWFjaCB0aGUgdHVwbGUgY3Jvc3NlZCBh IEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lVKQorCSAqIGhvcCB0aGF0IGNoYW5n ZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXggY292ZXJzLCBzbyB0aGUgYXJyaXZpbmcKKwkg KiBlbnRyeSdzIHN0b3JlZCBrZXkgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUu ICBUaGUgZXhlY3V0b3IKKwkgKiBkcm9wcyBzdWNoIGEgdHVwbGU7IHRoZSByb3cgaXMgcmUt c3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IGluc2VydGVkCisJICogZm9yIHRoZSBuZXcg dmFsdWUuICBVbmxpa2UgeHNfcmVjaGVjayAoc2V0IGJ5IGxvc3N5IEFNcyBzdWNoIGFzIEdp U1QKKwkgKiBhbmQgR0lOKSwgdGhpcyBpcyBjb21wdXRlZCBieSB0aGUgaW5kZXgtYWNjZXNz IGxheWVyIGJ5IHRlc3RpbmcgdGhlCisJICogaGVhcCBBTSdzIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCAoeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCkgYWdhaW5zdAorCSAqIHRoaXMgaW5k ZXgncyBrZXkgY29sdW1uczogYW55IG92ZXJsYXAgbWVhbnMgYSBjcm9zc2VkIGhvcCBjaGFu Z2VkIG9uZQorCSAqIG9mIHRoZSBpbmRleCdzIGlucHV0cywgc28gdGhlIGVudHJ5IGlzIHN0 YWxlLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVkX3N0YWxlOworCiAJLyoKIAkgKiBX aGVuIGZldGNoaW5nIHdpdGggYW4gb3JkZXJpbmcgb3BlcmF0b3IsIHRoZSB2YWx1ZXMgb2Yg dGhlIE9SREVSIEJZCiAJICogZXhwcmVzc2lvbnMgb2YgdGhlIGxhc3QgcmV0dXJuZWQgdHVw bGUsIGFjY29yZGluZyB0byB0aGUgaW5kZXguICBJZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5k ZXggYTk3NzhiMzUyOGQuLmU3YmQ5ZjNlNmZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAg LTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3NkaXIuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCkBAIC0yOCw2ICsyOSwxOCBAQAogCiAj ZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKIAorLyoKKyAqIFdo b2xlLXJvdyBzZW50aW5lbCBmb3IgdGhlIGluL291dCBtb2RpZmllZC1hdHRyaWJ1dGVzIHNl dCBvZgorICogdGFibGVfdHVwbGVfdXBkYXRlKCkuICBPbiBpbnB1dCB0aGUgY2FsbGVyIHN1 cHBsaWVzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKyAqIHdob3NlIHZhbHVlcyBjaGFuZ2Vk LiAgQSB0YWJsZSBBTSB0aGF0IHN0b3JlZCB0aGUgbmV3IHR1cGxlIGFzIGFuCisgKiBpbmRl cGVuZGVudCB2ZXJzaW9uIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGUgZXhpc3RpbmcgaW5k ZXggZW50cmllcyAoZm9yCisgKiBoZWFwLCBhIG5vbi1IT1QgdXBkYXRlKSBhZGRzIHRoaXMg d2hvbGUtcm93IGF0dHJpYnV0ZSAoYXR0cmlidXRlIG51bWJlciAwLAorICogRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50aW9uKSBvbiBvdXRwdXQsIHNpZ25h bGxpbmcgdGhhdAorICogZXZlcnkgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBEaWZmaW5n IHJlYWwgY29sdW1ucyBuZXZlciB5aWVsZHMgYXR0cmlidXRlCisgKiAwLCBzbyBpdCBpcyB1 bmFtYmlndW91cyBhcyB0aGlzIHNlbnRpbmVsLgorICovCisjZGVmaW5lIFRhYmxlVHVwbGVV cGRhdGVBbGxJbmRleGVzCSgwIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cikKKwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKmRlZmF1bHRfdGFi bGVfYWNjZXNzX21ldGhvZDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHN5bmNocm9uaXpl X3NlcXNjYW5zOwpAQCAtMTI1LDIyICsxMzgsNiBAQCB0eXBlZGVmIGVudW0gVE1fUmVzdWx0 CiAJVE1fV291bGRCbG9jaywKIH0gVE1fUmVzdWx0OwogCi0vKgotICogUmVzdWx0IGNvZGVz IGZvciB0YWJsZV91cGRhdGUoLi4uLCB1cGRhdGVfaW5kZXhlcyouLikuCi0gKiBVc2VkIHRv IGRldGVybWluZSB3aGljaCBpbmRleGVzIHRvIHVwZGF0ZS4KLSAqLwotdHlwZWRlZiBlbnVt IFRVX1VwZGF0ZUluZGV4ZXMKLXsKLQkvKiBObyBpbmRleGVkIGNvbHVtbnMgd2VyZSB1cGRh dGVkIChpbmNsLiBUSUQgYWRkcmVzc2luZyBvZiB0dXBsZSkgKi8KLQlUVV9Ob25lLAotCi0J LyogQSBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBjb2x1bW4gd2FzIHVwZGF0ZWQsIG9yIHRo ZSBUSUQgaGFzIGNoYW5nZWQgKi8KLQlUVV9BbGwsCi0KLQkvKiBPbmx5IHN1bW1hcml6ZWQg Y29sdW1ucyB3ZXJlIHVwZGF0ZWQsIFRJRCBpcyB1bmNoYW5nZWQgKi8KLQlUVV9TdW1tYXJp emluZywKLX0gVFVfVXBkYXRlSW5kZXhlczsKLQogLyoKICAqIFdoZW4gdGFibGVfdHVwbGVf dXBkYXRlLCB0YWJsZV90dXBsZV9kZWxldGUsIG9yIHRhYmxlX3R1cGxlX2xvY2sgZmFpbAog ICogYmVjYXVzZSB0aGUgdGFyZ2V0IHR1cGxlIGlzIGFscmVhZHkgb3V0ZGF0ZWQsIHRoZXkg ZmlsbCBpbiB0aGlzIHN0cnVjdCB0bwpAQCAtNDg4LDYgKzQ4NSwxMyBAQCB0eXBlZGVmIHN0 cnVjdCBUYWJsZUFtUm91dGluZQogCSAqIGluZGV4X2ZldGNoX3R1cGxlIGlmZiBpdCBpcyBn dWFyYW50ZWVkIHRoYXQgbm8gYmFja2VuZCBuZWVkcyB0byBzZWUKIAkgKiB0aGF0IHR1cGxl LiBJbmRleCBBTXMgY2FuIHVzZSB0aGF0IHRvIGF2b2lkIHJldHVybmluZyB0aGF0IHRpZCBp bgogCSAqIGZ1dHVyZSBzZWFyY2hlcy4KKwkgKgorCSAqIElmIGEgdHVwbGUgaXMgcmV0dXJu ZWQgYW5kIHRoZSB0YWJsZSBBTSByZWFjaGVkIGl0IGJ5IHdhbGtpbmcgYSBIT1QKKwkgKiBj aGFpbiB0aGF0IGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkg aG9wIGFmdGVyIHRoZQorCSAqIGFycml2aW5nIGVudHJ5J3Mgb3duIHR1cGxlLCBpdCBzZXRz IHNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2sgKHNlZQorCSAqIHN0cnVjdCBJbmRleEZl dGNoVGFibGVEYXRhKSB0byB0ZWxsIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgdG8gcmVjaGVj aworCSAqIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlLiAg QU1zIHdpdGhvdXQgc3VjaCB1cGRhdGUKKwkgKiBjaGFpbnMgbGVhdmUgaXQgZmFsc2UuCiAJ ICovCiAJYm9vbAkJKCppbmRleF9mZXRjaF90dXBsZSkgKHN0cnVjdCBJbmRleEZldGNoVGFi bGVEYXRhICpzY2FuLAogCQkJCQkJCQkJICBJdGVtUG9pbnRlciB0aWQsCkBAIC01ODYsOCAr NTkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wg d2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1 cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywKLQkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KTsKKwkJCQkJCQkJIEJpdG1hcHNldCAqKm1vZGlmaWVkX2F0dHJzKTsKIAogCS8qIHNlZSB0 YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCiAJ VE1fUmVzdWx0CSgqdHVwbGVfbG9jaykgKFJlbGF0aW9uIHJlbCwKQEAgLTEzMTksMTEgKzEz MjIsMjAgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJs ZURhdGEgKnNjYW4sCiAgKiByZXR1cm5zIHdoZXRoZXIgdGhlcmUgYXJlIHRhYmxlIHR1cGxl IGl0ZW1zIGNvcnJlc3BvbmRpbmcgdG8gYW4gaW5kZXgKICAqIGVudHJ5LiAgVGhpcyBsaWtl bHkgaXMgb25seSB1c2VmdWwgdG8gdmVyaWZ5IGlmIHRoZXJlJ3MgYSBjb25mbGljdCBpbiBh CiAgKiB1bmlxdWUgaW5kZXguCisgKgorICogSWYga2VlcF9zbG90IGlzIG5vbi1OVUxMLCBv biBhIHBvc2l0aXZlIHJlc3VsdCB0aGUgZnVuY3Rpb24gc3RvcmVzIHRoZQorICogZmV0Y2hl ZCB0dXBsZSBpbnRvICprZWVwX3Nsb3QgKHdoaWNoIG11c3QgYmUgYSB2YWxpZCBzbG90IG9m IHRoZQorICogcmVsYXRpb24ncyB0eXBlKSBhbmQgcmV0dXJucyB3aXRoIHRoZSBzbG90IHBv cHVsYXRlZDsgdGhlIGNhbGxlciBpcworICogcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRo ZSBzbG90LiAgV2hlbiBrZWVwX3Nsb3QgaXMgTlVMTCBhIHRlbXBvcmFyeQorICogc2xvdCBp cyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGRyb3BwZWQgYmVmb3JlIHJldHVybiwgbWF0Y2hp bmcgdGhlCisgKiBwcmUtZXhpc3RpbmcgYmVoYXZpb3VyLgogICovCiBleHRlcm4gYm9vbCB0 YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJ ICBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJ CQkJCQkJCQkgIGJvb2wgKmFsbF9kZWFkKTsKKwkJCQkJCQkJCQkgIGJvb2wgKmFsbF9kZWFk LAorCQkJCQkJCQkJCSAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVja19vdXQsCisJCQkJCQkJ CQkJICBUdXBsZVRhYmxlU2xvdCAqa2VlcF9zbG90KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTE1NzQsMTIgKzE1ODYsMjAgQEAgdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0 aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLCBDb21tYW5kSWQgY2lkLAogICoJCVRBQkxFX1VQ REFURV9OT19MT0dJQ0FMIC0tIGZvcmNlLWRpc2FibGVzIHRoZSBlbWl0dGluZyBvZiBsb2dp Y2FsCiAgKgkJZGVjb2RpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSB0dXBsZS4KICAqCisgKiBJ biBwYXJhbWV0ZXJzOgorICoJbW9kaWZpZWRfYXR0cnMgLSBpbi9vdXQ7IG9uIGlucHV0LCB0 aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9zZQorICoJCXZhbHVlcyBjaGFuZ2Vk IChGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pLiAgQQor ICoJCXRhYmxlIEFNIG1heSB1c2UgdGhpcyB0byBjaG9vc2UgYmV0d2VlbiBIT1QgYW5kIG5v bi1IT1Qgc3RvcmFnZSBvZiB0aGUKKyAqCQluZXcgdHVwbGUuICBPbiBvdXRwdXQgdGhlIEFN IGFkZHMgdGhlIHdob2xlLXJvdyBhdHRyaWJ1dGUKKyAqCQkoVGFibGVUdXBsZVVwZGF0ZUFs bEluZGV4ZXMpIGlmZiBpdCBzdG9yZWQgdGhlIG5ldyB0dXBsZSBhcyBhbgorICoJCWluZGVw ZW5kZW50IHZlcnNpb24gcmVxdWlyaW5nIGEgZnJlc2ggZW50cnkgaW4gZXZlcnkgaW5kZXg7 IG90aGVyd2lzZQorICoJCXRoZSBjYWxsZXIgY29uc3VsdHMgZWFjaCBpbmRleCdzIG93biBh dHRyaWJ1dGVzIGFnYWluc3QgdGhpcyBzZXQgdG8KKyAqCQlkZWNpZGUgcGVyIGluZGV4ICh0 aGUgc3RhbmRhcmQgSE9UIC8gc2VsZWN0aXZlLWluZGV4LXVwZGF0ZSBjYXNlcykuCisgKgog ICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKglzbG90IC0gbmV3bHkgY29uc3RydWN0ZWQgdHVw bGUgZGF0YSB0byBzdG9yZQogICoJdG1mZCAtIGZpbGxlZCBpbiBmYWlsdXJlIGNhc2VzIChz ZWUgYmVsb3cpCiAgKglsb2NrbW9kZSAtIGZpbGxlZCB3aXRoIGxvY2sgbW9kZSBhY3F1aXJl ZCBvbiB0dXBsZQotICoJdXBkYXRlX2luZGV4ZXMgLSBpbiBzdWNjZXNzIGNhc2VzIHRoaXMg aXMgc2V0IGlmIG5ldyBpbmRleCBlbnRyaWVzCi0gKgkJYXJlIHJlcXVpcmVkIGZvciB0aGlz IHR1cGxlOyBzZWUgVFVfVXBkYXRlSW5kZXhlcwogICoKICAqIE5vcm1hbCwgc3VjY2Vzc2Z1 bCByZXR1cm4gdmFsdWUgaXMgVE1fT2ssIHdoaWNoIG1lYW5zIHdlIGRpZCBhY3R1YWxseQog ICogdXBkYXRlIGl0LiAgRmFpbHVyZSByZXR1cm4gY29kZXMgYXJlIFRNX1NlbGZNb2RpZmll ZCwgVE1fVXBkYXRlZCwgYW5kCkBAIC0xNjAwLDEyICsxNjIwLDE0IEBAIHRhYmxlX3R1cGxl X3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90 ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAgIGJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAot CQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBCaXRtYXBzZXQgKiptb2RpZmllZF9h dHRycykKIHsKKwlBc3NlcnQobW9kaWZpZWRfYXR0cnMgPT0gTlVMTCB8fAorCQkgICAhYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgKm1vZGlmaWVkX2F0dHJz KSk7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwg c2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBvcHRpb25zLCBzbmFwc2hvdCwgY3Jvc3NjaGVjaywK IAkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUsCi0JCQkJCQkJCQkJIG1vZGlmaWVk X2lkeF9hdHRycywgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSBtb2RpZmllZF9hdHRy cyk7CiB9CiAKIC8qCkBAIC0yMDkwLDggKzIxMTIsNyBAQCBleHRlcm4gdm9pZCBzaW1wbGVf dGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJ CQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJ CSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJ ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKLQkJCQkJCQkJCSAgVFVf VXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJICBCaXRtYXBzZXQg Kiptb2RpZmllZF9hdHRycyk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTY2NjFiYzY2ZDkuLmY3MjExZWNlY2ZmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5o IgogI2luY2x1ZGUgImZtZ3IuaCIKLSNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNp bmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9k ZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzU1LDExICs3NTQsMTMg QEAgZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0dldEFsbFVwZGF0ZWRDb2xzKFJlc3VsdFJlbElu Zm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRlKTsKICAqLwogZXh0ZXJuIHZvaWQgRXhlY09w ZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJvb2wgc3BlY3VsYXRp dmUpOwogZXh0ZXJuIHZvaWQgRXhlY0Nsb3NlSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvKTsKK2V4dGVybiB2b2lkIEV4ZWNTZXRJbmRleFVuY2hhbmdlZChSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9k aWZpZWRfaWR4X2F0dHJzKTsKIAogLyogZmxhZ3MgZm9yIEV4ZWNJbnNlcnRJbmRleFR1cGxl cyAqLwogI2RlZmluZQkJRUlJVF9JU19VUERBVEUJCQkoMTw8MCkKICNkZWZpbmUJCUVJSVRf Tk9fRFVQRV9FUlJPUgkJKDE8PDEpCi0jZGVmaW5lCQlFSUlUX09OTFlfU1VNTUFSSVpJTkcJ KDE8PDIpCisjZGVmaW5lCQlFSUlUX0lTX0hPVF9JTkRFWEVECQkoMTw8MikKIGV4dGVybiBM aXN0ICpFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywgRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCSAgIHVpbnQzMiBmbGFncywgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSAgIExpc3QgKmFyYml0ZXJJbmRleGVzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBlNjRmZDhjN2VhMy4uMmUzNzEyMjA1YTQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0yMTYsMTAgKzIxNiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJ bmRleEluZm8KIAlib29sCQlpaV9OdWxsc05vdERpc3RpbmN0OwogCS8qIGlzIGl0IHZhbGlk IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5zZXJ0czsKLQkvKiBJbmRl eFVuY2hhbmdlZCBzdGF0dXMgZGV0ZXJtaW5lZCB5ZXQ/ICovCi0JYm9vbAkJaWlfQ2hlY2tl ZFVuY2hhbmdlZDsKLQkvKiBhbWluc2VydCBoaW50LCBjYWNoZWQgZm9yIHJldGFpbCBpbnNl cnRzICovCisJLyoKKwkgKiBhbWluc2VydCBoaW50OiBpbmRleCBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURT8gIE5hcnJvdyBydWxlOiBrZXkKKwkgKiBjb2x1bW5zIG9ubHk7IElO Q0xVREUgY29sdW1ucyBhbmQgdGhlIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGFyZSBub3QK KwkgKiBjb25zaWRlcmVkIChleHByZXNzaW9uIGluZGV4ZXMgYXJlIHRyZWF0ZWQgY29uc2Vy dmF0aXZlbHkpLgorCSAqLwogCWJvb2wJCWlpX0luZGV4VW5jaGFuZ2VkOworCS8qCisJICog c2VsZWN0aXZlIFVQREFURTogZG9lcyB0aGlzIGluZGV4IG5lZWQgYSBuZXcgZW50cnk/ICBX aWRlIHJ1bGU6IHRydWUgaWYKKwkgKiBhbnkga2V5LCBJTkNMVURFLCBleHByZXNzaW9uLCBv ciBwcmVkaWNhdGUgY29sdW1uIGl0IHJlZmVyZW5jZXMgY2hhbmdlZAorCSAqIChvciB0aGUg QU0gc3RvcmVkIGFuIGluZGVwZW5kZW50IG5ldyB2ZXJzaW9uKS4KKwkgKi8KKwlib29sCQlp aV9JbmRleE5lZWRzVXBkYXRlOwogCS8qIGFyZSB3ZSBkb2luZyBhIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQ/ICovCiAJYm9vbAkJaWlfQ29uY3VycmVudDsKIAkvKiBkaWQgd2UgZGV0ZWN0 IGFueSBicm9rZW4gSE9UIGNoYWlucz8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bn c3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggNThhNDQ4NTdmMTMuLjI4Yjc5 MzcwZjBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaApAQCAtMTUxLDcgKzE1MSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0 YXRfVGFibGVDb3VudHMKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfdXBkYXRlZDsKIAlQZ1N0 YXRfQ291bnRlciB0dXBsZXNfZGVsZXRlZDsKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90 X3VwZGF0ZWQ7CisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQ7 CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX25ld3BhZ2VfdXBkYXRlZDsKKworCS8qCisJICog UGVyLWluZGV4IEhPVC1pbmRleGVkIHVwZGF0ZSBjb3VudGVycy4gIE1haW50YWluZWQgb24g cGdzdGF0IGVudHJpZXMKKwkgKiBrZXllZCBvbiBhbiBpbmRleCBvaWQsIG5vdCBvbiB0aGUg b3duaW5nIHRhYmxlJ3MgZW50cnkuICBUaGV5IGNvdW50IGhvdworCSAqIG1hbnkgSE9ULWlu ZGV4ZWQgdXBkYXRlcyBza2lwcGVkIHRoaXMgaW5kZXggKGtleSB1bmNoYW5nZWQpIHZzLgor CSAqIGluc2VydGVkIGEgZnJlc2ggZW50cnkgKGtleSBjaGFuZ2VkKS4gIFN1bW1hcml6aW5n IGluZGV4ZXMgZG8gbm90CisJICogY29udHJpYnV0ZSB0byBlaXRoZXIgY291bnRlci4KKwkg Ki8KKwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQ7CisJ UGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOworCiAJYm9v bAkJdHJ1bmNkcm9wcGVkOwogCiAJUGdTdGF0X0NvdW50ZXIgZGVsdGFfbGl2ZV90dXBsZXM7 CkBAIC0yMTgsNyArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlWGFjdFN0 YXR1cwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotI2RlZmluZSBQR1NUQVRfRklMRV9GT1JNQVRfSUQJ MHgwMUE1QkNCQworI2RlZmluZSBQR1NUQVRfRklMRV9GT1JNQVRfSUQJMHgwMUE1QkNCRAog CiB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQXJjaGl2ZXJTdGF0cwogewpAQCAtNDYwLDggKzQ3 MiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVudHJ5CiAJUGdTdGF0X0Nv dW50ZXIgdHVwbGVzX3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7 CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVy IHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19u ZXdwYWdlX3VwZGF0ZWQ7CiAKKwkvKiBQZXItaW5kZXggSE9ULWluZGV4ZWQgdXBkYXRlIGNv dW50ZXJzIChzZWUgUGdTdGF0X1RhYmxlQ291bnRzKS4gKi8KKwlQZ1N0YXRfQ291bnRlciB0 dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQ7CisJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOworCiAJUGdTdGF0X0NvdW50ZXIgbGl2ZV90dXBs ZXM7CiAJUGdTdGF0X0NvdW50ZXIgZGVhZF90dXBsZXM7CiAJUGdTdGF0X0NvdW50ZXIgbW9k X3NpbmNlX2FuYWx5emU7CkBAIC03NTIsNiArNzY5LDE2IEBAIGV4dGVybiB2b2lkIHBnc3Rh dF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJCWlmIChwZ3N0YXRfc2hvdWxkX2Nv dW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAogCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3Vu dHMudHVwbGVzX3JldHVybmVkICs9IChuKTsJCVwKIAl9IHdoaWxlICgwKQorI2RlZmluZSBw Z3N0YXRfY291bnRfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQocmVsKQkJCQkJCVwKKwlkbyB7 CQkJCQkJCQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihy ZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19ob3Rf aW5kZXhlZF91cGRfc2tpcHBlZCsrO1wKKwl9IHdoaWxlICgwKQorI2RlZmluZSBwZ3N0YXRf Y291bnRfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQocmVsKQkJCQkJCVwKKwlkbyB7CQkJCQkJ CQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJ CQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhl ZF91cGRfbWF0Y2hlZCsrO1wKKwl9IHdoaWxlICgwKQogI2RlZmluZSBwZ3N0YXRfY291bnRf YnVmZmVyX3JlYWQocmVsKQkJCQkJCQkJXAogCWRvIHsJCQkJCQkJCQkJCQkJCQlcCiAJCWlm IChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXApAQCAtNzY0LDcg Kzc5MSw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiBy ZWwsCiAJfSB3aGlsZSAoMCkKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfaW5z ZXJ0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbik7Ci1leHRlcm4gdm9pZCBwZ3N0 YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdw YWdlKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWwsIGJvb2wgaG90LCBib29sIGhvdF9pbmRleGVkLCBib29sIG5ld3BhZ2UpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfY291bnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lk IHBnc3RhdF91cGRhdGVfaGVhcF9kZWFkX3R1cGxlcyhSZWxhdGlvbiByZWwsIGludCBkZWx0 YSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oCmluZGV4IDE3ZGJkYmU2NDVkLi4zMDQ3ODNmMGJiYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlC aXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5 IGluZGV4ICovCiAJQml0bWFwc2V0ICAqcmRfaW5kZXhlZGF0dHI7IC8qIGFsbCBjb2xzIHJl ZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6ZWRhdHRy OwkvKiBjb2xzIGluZGV4ZWQgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnJkX2V4cHJpbmRleGF0dHI7CS8qIGNvbHMgcmVmZXJlbmNlZCBieSBleHByZXNzaW9u IGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGlj YXRpb24gZGVzY3JpcHRvciwgb3IgTlVMTCAqLwogCkBAIC0yMTcsNiArMjE4LDE2IEBAIHR5 cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCU9pZAkJICAgKnJkX2luZGNvbGxhdGlvbjsJ LyogT0lEcyBvZiBpbmRleCBjb2xsYXRpb25zICovCiAJYnl0ZWEJICAqKnJkX29wY29wdGlv bnM7CS8qIHBhcnNlZCBvcGNsYXNzLXNwZWNpZmljIG9wdGlvbnMgKi8KIAorCS8qCisJICog Qml0bWFwIG9mIGhlYXAgYXR0cmlidXRlIG51bWJlcnMgcmVmZXJlbmNlZCBieSB0aGlzIGlu ZGV4IChzaW1wbGUga2V5cywKKwkgKiBJTkNMVURFIGNvbHVtbnMsIGV4cHJlc3Npb24gY29s dW1ucywgYW5kIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlCisJICogY29sdW1ucyksIG9mZnNl dCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLiBMYXppbHkgYnVpbHQg YnkKKwkgKiBSZWxhdGlvbkdldEluZGV4ZWRBdHRycygpIGFuZCBjYWNoZWQgaW4gcmRfaW5k ZXhjeHQuIENvbnN1bWVycyBtdXN0CisJICogYm1zX2NvcHkgYmVmb3JlIHJlbHlpbmcgb24g dGhlIHBvaW50ZXIgYmV5b25kIGFueSBwb3RlbnRpYWwKKwkgKiBBY2NlcHRJbnZhbGlkYXRp b25NZXNzYWdlcygpIGNhbGwuCisJICovCisJQml0bWFwc2V0ICAqcmRfaW5kYXR0cjsKKwog CS8qCiAJICogcmRfYW1jYWNoZSBpcyBhdmFpbGFibGUgZm9yIGluZGV4IGFuZCB0YWJsZSBB TXMgdG8gY2FjaGUgcHJpdmF0ZSBkYXRhCiAJICogYWJvdXQgdGhlIHJlbGF0aW9uLiAgVGhp cyBtdXN0IGJlIGp1c3QgYSBjYWNoZSBzaW5jZSBpdCBtYXkgZ2V0IHJlc2V0CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsY2FjaGUuaAppbmRleCA4OTc4ODA5MTU3Ni4uYTM4MWFhM2UwOTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsY2FjaGUuaApAQCAtNjIsNiArNjIsMTkgQEAgZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0 RHVtbXlJbmRleEV4cHJlc3Npb25zKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVybiBMaXN0 ICpSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVy biBieXRlYSAqKlJlbGF0aW9uR2V0SW5kZXhBdHRPcHRpb25zKFJlbGF0aW9uIHJlbGF0aW9u LCBib29sIGNvcHkpOwogCisvKgorICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMgLS0gcmV0 dXJuIGEgZnJlc2hseS1wYWxsb2MnZCBCaXRtYXBzZXQgb2YgZXZlcnkKKyAqIGhlYXAgYXR0 cmlidXRlIHRoaXMgaW5kZXggcmVmZXJlbmNlcywgdmlhIGtleXMsIElOQ0xVREUgY29sdW1u cywKKyAqIGV4cHJlc3Npb25zLCBvciBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZXMuCisgKgor ICogVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gaW5kZXggUmVsYXRpb24gKG5vdCBpdHMgb3du aW5nIGhlYXApLiAgQXR0cmlidXRlCisgKiBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlci4gIFRoZSByZXN1bHQgaXMKKyAqIHBhbGxv YydkIGluIHRoZSBjYWxsZXIncyBjb250ZXh0OyBibXNfZnJlZSB3aGVuIGRvbmUuICBUaGUg cmVsY2FjaGUKKyAqIGNhY2hlcyBpdHMgb3duIGNvcHkgaW4gcmRfaW5kZXhjeHQgc28gc3Vi c2VxdWVudCBjYWxscyBvbmx5IHBheSBmb3IgdGhlCisgKiBmaW5hbCBibXNfY29weS4KKyAq LworZXh0ZXJuIEJpdG1hcHNldCAqUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoUmVsYXRpb24g aW5kZXhSZWwpOworCiAvKgogICogV2hpY2ggc2V0IG9mIGNvbHVtbnMgdG8gcmV0dXJuIGJ5 IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgogICovCkBAIC03MiwxMSArODUsMTUgQEAg dHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9J REVOVElUWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCwKIAlJTkRFWF9BVFRS X0JJVE1BUF9TVU1NQVJJWkVELAorCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04sCiB9 IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgSW5kZXhB dHRyQml0bWFwS2luZCBhdHRyS2luZCk7CiAKK2V4dGVybiBjb25zdCBCaXRtYXBzZXQgKlJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJ CQkJCQkJCQkJCQkgSW5kZXhBdHRyQml0bWFwS2luZCBhdHRyS2luZCk7CisKIGV4dGVybiBC aXRtYXBzZXQgKlJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAoUmVsYXRpb24gcmVsYXRp b24pOwogCiBleHRlcm4gdm9pZCBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aG90X3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRl cy5vdXQKaW5kZXggMjczZmUzMzEwZGEuLjA2OTc5ZWQzMWQwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dApAQCAtMSwxNDcgKzEsMTMyIEBACiAt LQogLS0gSE9UX1VQREFURVMKLS0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tIFRlc3QgY2xhc3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBk YXRlIGRlY2lzaW9ucwogLS0KLS0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmll cyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBh dm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUg bW9kaWZpZWQpLgorLS0gVGhpcyBmaWxlIGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBw bHkgaWRlbnRpY2FsbHkgb24gYSBwcmUtaG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkg VVBEQVRFIGhlcmUgZWl0aGVyIGxlYXZlcyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1 bmNoYW5nZWQgb3IgdG91Y2hlcyBvbmx5IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRy aWJ1dGVzLCBzbyB0aGUKKy0tIEhPVCB2cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBl bmQgb24gd2hldGhlciBTZWxlY3RpdmUgSW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQp IGlzIGVuYWJsZWQuICBob3QtaW5kZXhlZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMg dGhhdCBtb2RpZnkKKy0tIGEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBp cyBjb3ZlcmVkIGluCistLSBob3RfaW5kZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1 c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5j dGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNw ZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlO IHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1l dGhvZHM6CistLSAgIDEuIFN0YXRpc3RpY3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tICAgMi4gcGFnZWluc3BlY3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0t ICAgMy4gRVhQTEFJTiB0byBjb25maXJtIHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBp bmRleAogLS0KIC0tIExvYWQgcmVxdWlyZWQgZXh0ZW5zaW9ucwogQ1JFQVRFIEVYVEVOU0lP TiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OwotLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1 cGRhdGUgY291bnQKKy0tIFN1bSBvZiBjb21taXR0ZWQgYW5kIGluLXByb2dyZXNzIChub24t SE9ULCBIT1QpIHVwZGF0ZSBjb3VudGVycy4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKIFJFVFVSTlMgVEFCTEUgKAogICAgIHVw ZGF0ZXMgQklHSU5ULAogICAgIGhvdCBCSUdJTlQKICkgQVMgJCQKIERFQ0xBUkUKLSAgcmVs X29pZCBvaWQ7CisgICAgcmVsX29pZCBvaWQ7CiBCRUdJTgotICByZWxfb2lkIDo9IHJlbF9u YW1lOjpyZWdjbGFzczo6b2lkOwotCi0gIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRy YW5zYWN0aW9uLWxvY2FsIHN0YXRzCi0gIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVs dCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5Ci0gIC0tIE5v dGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVk IHN0YXRzIGFscmVhZHkKLSAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMg d291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKLSAgLS0gdHJhbnNhY3Rpb24gdGVz dGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5j dGlvbi4KLSAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRl ZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOwotICBob3QgOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCi0gICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCk7Ci0KLSAgUkVUVVJOIE5FWFQ7CisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xh c3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191 cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0 X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09B TEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisg ICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKIEVORDsKICQkIExBTkdVQUdFIHBs cGdzcWw7Ci0tLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhh cyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlk IGlzIHRoZSBUQUlMIG9mIGEgSE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdl dF9jdGlkIHRpZCkKIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19u dW0gaW50OwotICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAg cGFnZV9pdGVtIHJlY29yZDsKIEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1 cGxlIG9uIHRoZSBzYW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQot ICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0g ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1Qg TlVMTAotICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8 fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0 YXJnZXRfY3RpZAotICBMT09QCi0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0g IFJFVFVSTiBmYWxzZTsKKyAgICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludDsKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBs cCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRf cmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdz ID0gMQorICAgICAgICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQg dF9jdGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06 OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAor ICAgIExPT1AKKyAgICAgICAgUkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVU VVJOIGZhbHNlOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLS0tIFByaW50IHRoZSBI T1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxlCistLSBFbWl0IHRoZSBIT1Qg Y2hhaW4gcm9vdGVkIGF0IHN0YXJ0X2N0aWQuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCiBSRVRV Uk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQs IHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUwogJCQKICN2YXJpYWJsZV9jb25m bGljdCB1c2VfY29sdW1uCiBERUNMQVJFCi0gIGJsb2NrX251bSBpbnQ7Ci0gIGxpbmVfcHRy IGludDsKLSAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOwotICBuZXh0X2N0aWQg dGlkOwotICBwb3NpdGlvbiBpbnQgOj0gMDsKLSAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEw MDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKLSAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6 PSBmYWxzZTsKLSAgZmxhZ3NfbmFtZSB0ZXh0OworICAgIGJsb2NrX251bSBpbnQ7CisgICAg bGluZV9wdHIgaW50OworICAgIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3RpZDsKKyAg ICBuZXh0X2N0aWQgdGlkOworICAgIHBvc2l0aW9uIGludCA6PSAwOworICAgIG1heF9pdGVy YXRpb25zIGludCA6PSAxMDA7CisgICAgcGFnZV9pdGVtIHJlY29yZDsKKyAgICBmb3VuZF9w cmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOworICAgIGZsYWdzX25hbWUgdGV4dDsKIEJF R0lOCi0gIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7 Ci0KLSAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0byBv dXIgc3RhcnRfY3RpZCkKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBscCwgbHBf ZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShy ZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAgICAgIEFO RCB0X2N0aWQgPSBzdGFydF9jdGlkCi0gIExPT1AKLSAgICBjdXJyZW50X2N0aWQgOj0gKCco JyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAn KScpOjp0aWQ7Ci0gICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKLSAgICBFWElUOwot ICBFTkQgTE9PUDsKLQotICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQgd2l0 aCB0aGUgZ2l2ZW4gY3RpZAotICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgotICAg IGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwotICBFTkQgSUY7Ci0KLSAgLS0gRm9sbG93 IHRoZSBjaGFpbiBmb3J3YXJkCi0gIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlvbnMg TE9PUAotICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsxXTo6 aW50OworICAgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CiAKICAgICBGT1IgcGFnZV9pdGVtIElOCi0gICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdz LCB0X2N0aWQKLSAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxf bmFtZSwgYmxvY2tfbnVtKSkKLSAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICAgICAg U0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgIEZST00gaGVhcF9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgV0hFUkUg bHBfZmxhZ3MgPSAxCisgICAgICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKICAgICBM T09QCi0gICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8gbmFtZXMKLSAgICAgIGZsYWdzX25hbWUg Oj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKLSAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNl ZCAoMCknCi0gICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEpJwotICAgICAgICBXSEVO IDIgVEhFTiAncmVkaXJlY3QgKDIpJwotICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAoMykn Ci0gICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0 IHx8ICcpJwotICAgICAgRU5EOwotCi0gICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCi0gICAg ICAgIHBvc2l0aW9uLAotICAgICAgICBjdXJyZW50X2N0aWQsCi0gICAgICAgIGZsYWdzX25h bWUsCi0gICAgICAgIHBhZ2VfaXRlbS50X2N0aWQsCi0gICAgICAgIChwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xl YW4KLSAgICAgIDsKLQotICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBh Z2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgotICAgICAgICBSRVRVUk47Ci0g ICAgICBFTkQgSUY7Ci0KLSAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOwot Ci0gICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19u dW0gVEhFTgotICAgICAgICBSRVRVUk47Ci0gICAgICBFTkQgSUY7Ci0KLSAgICAgIGN1cnJl bnRfY3RpZCA6PSBuZXh0X2N0aWQ7Ci0gICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7 CisgICAgICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAn LCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICAgICAgZm91bmRf cHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICAgICAgRVhJVDsKICAgICBFTkQgTE9PUDsKLQot ICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCi0gICAgICBSRVRVUk47CisgICAgSUYgTk9UIGZv dW5kX3ByZWRlY2Vzc29yIFRIRU4KKyAgICAgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0 aWQ7CiAgICAgRU5EIElGOwotICBFTkQgTE9PUDsKKworICAgIFdISUxFIHBvc2l0aW9uIDwg bWF4X2l0ZXJhdGlvbnMgTE9PUAorICAgICAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlk Ojp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICAgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAg ICAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgICAgICBGUk9N IGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisg ICAgICAgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAgICAgIExPT1AKKyAgICAgICAg ICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAgICAgICAgICAg ICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgICAgICAgICBXSEVOIDEg VEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJl Y3QgKDIpJworICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKKyAgICAg ICAgICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgICAgICAgIEVORDsKKyAgICAgICAgICAgIFJFVFVSTiBRVUVSWSBT RUxFQ1QKKyAgICAgICAgICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICBjdXJy ZW50X2N0aWQsCisgICAgICAgICAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgICAgICAg ICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAgICAgICAgIChwYWdlX2l0ZW0udF9jdGlk IElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW47 CisKKyAgICAgICAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0 ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47 CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9p dGVtLnRfY3RpZDsKKyAgICAgICAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVsw XTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgICAgICAgICAgUkVUVVJOOworICAg ICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3Rp ZDsKKyAgICAgICAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgRU5E IExPT1A7CisgICAgICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCisgICAgICAgICAgICBSRVRV Uk47CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKIEVORDsKICQkIExBTkdVQUdF IHBscGdzcWw7Ci0tLSBCYXNpYyBIT1QgdXBkYXRlICh1cGRhdGUgbm9uLWluZGV4ZWQgY29s dW1uKQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0 ZSBvZiBhIG5vbi1pbmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBD UkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBp bmRleGVkX2NvbCBpbnQsCkBAIC0xNTEsMjM5ICsxMzYsMjE4IEBAIENSRUFURSBJTkRFWCBo b3RfdGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CiBJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKIElOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOwogSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7Ci0tLSBHZXQgYmFzZWxpbmUKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAK IC0tLS0tLS0tLSstLS0tLQogICAgICAgIDAgfCAgIDAKICgxIHJvdykKIAotLS0gU2hvdWxk IGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKKy0t IFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCkuCiBVUERBVEUg aG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAx OwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdI RVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3Vw ZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0tLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhv dCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDMgfCAgIDMKICgxIHJvdykKIAotLS0gRHVt cCB0aGUgSE9UIGNoYWluIGJlZm9yZSBWQUNVVU1pbmcKLVdJVEggY3VycmVudF90dXBsZSBB UyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxF Q1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFT IGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlk LAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFM IHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworLS0g Q2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9pbnRl ci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50 X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJp bnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5j dGlkKTsKICBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdz ICB8IHRfY3RpZCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0KICB0ICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgwLDEp IHwgbm9ybWFsICgxKSB8ICgwLDQpCiAgdCAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCAo MCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogKDIgcm93cykKIAotLS0gVmFjdXVtIHRoZSBy ZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKKy0tIFZBQ1VVTSBj b2xsYXBzZXMgdGhlIGNoYWluLgogVkFDVVVNIGhvdF90ZXN0OwotLS0gU2hvdyB0aGF0IHRo ZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZhY3V1bQotV0lUSCBjdXJyZW50X3R1cGxlIEFTICgK LSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNFTEVDVAot ICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFz X2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0aWQsCi0g IGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVSQUwgcHJp bnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CitXSVRIIGN1 cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAx KQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFp bi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwg cHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFz X2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQg CiAtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tCiAgZiAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCw0KSB8IG5vcm1hbCAo MSkgfCAoMCw0KQogKDEgcm93KQogCi0tLSBOb24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4 ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVS RSBpZCA9IDE7CitEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBub3QgYmxvY2sgSE9U CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwKKyAgICB2YWx1ZSBp bnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKHRzKTsK K0NSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5H IGJyaW4oYnJpbl9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAy NC0wMS0wMScsIDEwMCwgMTAwMCk7CistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5n OyB1cGRhdGluZyB0aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVp ciB2YWx1ZXMgY2hhbmdlLgorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAy JywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQot ICAgICAgIDQgfCAgIDMKKyAgICAgICAxIHwgICAxCiAoMSByb3cpCiAKLS0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZpbmRhYmxlKQotU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29s IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7Ci0gICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKLSAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDE1MCkKLSgyIHJvd3MpCi0KLVNFTEVDVCBpZCwgaW5kZXhlZF9jb2wg RlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKLSBpZCB8IGluZGV4ZWRf Y29sIAotLS0tLSstLS0tLS0tLS0tLS0tCi0gIDEgfCAgICAgICAgIDE1MAorLS0gTm9uLWlu ZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCiAoMSByb3cpCiAKLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4 Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlu ZGV4ZWRfY29sID0gMTAwOwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4 IG9uIGhvdF90ZXN0Ci0gICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCi0oMiBy b3dzKQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKLSBpZCAKLS0tLS0KLSgwIHJvd3MpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAg IDIgfCAgIDIKKygxIHJvdykKIAotUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0tLSBBbGwtb3It bm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFM TCBpbmRleCB1cGRhdGVzCiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAzLiBUT0FTVCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhl ZCBjb2x1bW4gcGF0aHMgb25seSkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRF IFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2Eg aW50LAotICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQg dGV4dAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0IHRleHQsCisgICAg c21hbGxfdGV4dCB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5E RVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhv dF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVz dF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxV RVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7Ci0tLSBVcGRhdGUgb25seSBjb2xfYSAt IHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgYW4gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZAot LS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBtdXN0IGJlIHVwZGF0ZWQgKGFsbC1vci1ub25l IHByb3BlcnR5KQotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0g MTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMw MDApLCAnc21hbGwnKTsKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0t LS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAwCisgICAgICAgMSB8ICAgMQorKDEgcm93KQor CistLSBUT0FTVCBjb2x1bW4sIGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgorVVBEQVRF IGhvdF90ZXN0IFNFVCBsYXJnZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykKIAotLS0gTm93IHVw ZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSst LS0tLQotICAgICAgIDIgfCAgIDEKKyAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0tIFBh cnRpYWwgaW5kZXg6IGJvdGggb2xkIGFuZCBuZXcgb3V0c2lkZSBwcmVkaWNhdGUgKGNvbnNl cnZhdGl2ZSA9IG5vbi1IT1QpCiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4IHdoZXJlIHVwZGF0ZSBsZWF2ZXMg aW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JF QVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgc3Rh dHVzIHRleHQsCiAgICAgZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0t LSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCiBDUkVBVEUg SU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdIRVJFIHN0 YXR1cyA9ICdhY3RpdmUnOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0 aXZlJywgJ2RhdGExJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFj dGl2ZScsICdkYXRhMicpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOwotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnYWN0 aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkKLS0tIFNob3VsZCBi ZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IHdob3NlIHN0YXR1cyBtYXRjaGVzIHRo ZSBwYXJ0aWFsIHByZWRpY2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAx IHwgICAxCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2lu YWN0aXZlJyByb3cgKG91dHNpZGUgcHJlZGljYXRlKQotLS0gU2hvdWxkIGJlIEhPVAorLS0g VXBkYXRlIGRhdGEgb24gYSByb3cgb3V0c2lkZSB0aGUgcHJlZGljYXRlOiBIT1QuCiBVUERB VEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAot LS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMiB8ICAgMgorU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAn aW5hY3RpdmUnIHRvICdkZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFBv c3RncmVTUUwgaXMgY29uc2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBw cmVkaWNhdGUgY2hlY2sKLS0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3Ro IHZhbHVlcyBhcmUgb3V0c2lkZSBwcmVkaWNhdGUKLVVQREFURSBob3RfdGVzdCBTRVQgc3Rh dHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0g ICAgICAgMyB8ICAgMgorICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0gVmVyaWZ5IGlu ZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCiBTRUxFQ1QgaWQsIHN0YXR1cyBG Uk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwogIGlkIHwgc3RhdHVzIAog LS0tLSstLS0tLS0tLQogICAxIHwgYWN0aXZlCiAoMSByb3cpCiAKLS0tIE9ubHkgQlJJTiAo c3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9uLVBLIGNvbHVtbnMKIERST1AgVEFCTEUgaG90 X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDUuIE11bHRpLWNvbHVtbiBi dHJlZTogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKLSAgICB0cyB0aW1lc3RhbXAsCi0gICAgdmFsdWUgaW50LAotICAgIGJyaW5fY29sIGlu dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X3Rz X2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7Ci1DUkVBVEUgSU5ERVggaG90X3Rl c3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKLUlO U0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDAp OwotLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAo b25seSBzdW1tYXJpemluZyBpbmRleGVzKQotVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcy MDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0t LS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMQotKDEgcm93KQotCi0tLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28gYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VU IHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAg ICAgMiB8ICAgMgotKDEgcm93KQotCi0tLSBUT0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVt bnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAotRFJPUCBUQUJMRSBob3RfdGVzdDsKLUNSRUFU RSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIGluZGV4 ZWRfY29sIGludCwKLSAgICBsYXJnZV90ZXh0IHRleHQsCi0gICAgc21hbGxfdGV4dCB0ZXh0 CisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAg ZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5ERVggaG90 X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKLS0tIEluc2VydCByb3cgd2l0 aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCi1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcpOwotLS0gVXBkYXRlIG5vbi1p bmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90 X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDEgfCAgIDEKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90 X3Rlc3QoY29sX2EsIGNvbF9iKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgJ2RhdGEnKTsKKy0tIGNvbF9jIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4K K1VQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKy0tIGRhdGEgbm90IGluIGFueSBp bmRleDogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVw ZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4g dW5jaGFuZ2VkCi1VUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQoJ3kn LCAzMDAwKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1 cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMiB8ICAgMgogKDEgcm93 KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgMyB8ICAgMgotKDEgcm93KQotCi0tLSBVbmlxdWUgY29uc3RyYWludCAo dW5pcXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBo b3RfdGVzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gVW5pcXVlIGluZGV4 OiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uICsgdW5pcXVlbmVzcyBlbmZvcmNlbWVu dAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAog ICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCkBA IC0zOTEsMTUgKzM1NSwxOSBAQCBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAs ICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRh MicpOwotLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQ REFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0t LQogICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCiBTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKICBpZCB8IHVuaXF1ZV9jb2wgfCAgZGF0YSAgIAogLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tCkBAIC00MDcsNjAgKzM3NSwxNCBAQCBTRUxFQ1Qg aWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKICAgMiB8 ICAgICAgICAyMDAgfCB1cGRhdGVkCiAoMiByb3dzKQogCi0tLSBUaGlzIHNob3VsZCBmYWls ICh1bmlxdWUgdmlvbGF0aW9uKQorLS0gVW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3Jj ZWQgb24gYW55IHBhdGguCiBVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1ZV9jb2wgPSAxMDAg V0hFUkUgaWQgPSAyOwogRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVu aXF1ZSBjb25zdHJhaW50ICJob3RfdGVzdF91bmlxdWVfY29sX2tleSIKIERFVEFJTDogIEtl eSAodW5pcXVlX2NvbCk9KDEwMCkgYWxyZWFkeSBleGlzdHMuCi0tLSBNdWx0aS1jb2x1bW4g aW5kZXg6IGFueSBjb2x1bW4gY2hhbmdlID0gbm9uLUhPVAogRFJPUCBUQUJMRSBob3RfdGVz dDsKLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAot ICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2MgaW50LAotICAgIGRh dGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotQ1JFQVRFIElOREVYIGhvdF90 ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChjb2xfYSwgY29sX2IpOwotSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnZGF0YScpOwotLS0gVXBkYXRlIGNvbF9h IChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAg ICAgICAxIHwgICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VU IGNvbF9hID0gMTA7Ci0tLSBVcGRhdGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGlu ZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjU7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDAKLSgxIHJvdykKLQot LS0gUmVzZXQKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyMDsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0t LS0tKy0tLS0tCi0gICAgICAgNCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUgY29sX2Mg KG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29s X2MgPSAzNTsKLS0tIFVwZGF0ZSBkYXRhIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9U Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7Ci1TRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDYgfCAgIDIKLSgxIHJvdykKLQotLS0gUGFydGl0aW9uZWQgdGFi bGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJU1RT IGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7Ci1OT1RJQ0U6ICB0YWJsZSAiaG90X3Rl c3RfcGFydGl0aW9uZWQiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA3LiBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3aXRoaW4gYSBw YXJ0aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0X3BhcnRpdGlvbmVkICgKICAgICBpZCBpbnQsCiAgICAgcGFydGl0aW9uX2tleSBpbnQs CkBAIC00NzUsMjMgKzM5NywzMiBAQCBDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDIgUEFS VElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCiBDUkVBVEUgSU5ERVggaG90X3Rlc3Rf cGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wpOwogSU5TRVJU IElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5pdGlh bDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUw LCAyMDAsICdpbml0aWFsMicpOwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAxIChub24taW5k ZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlv bmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7Ci0tLSBVcGRhdGUgaW4g cGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERB VEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlk ID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CiAg dXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDEgfCAgIDEKICgxIHJv dykKIAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKICB1 cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93 KQogCi0tLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlvbnMKIFNFTEVDVCBpZCBG Uk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwogIGlk IAogLS0tLQpAQCAtNTA0LDI0MiArNDM1LDEwMCBAQCBTRUxFQ1QgaWQgRlJPTSBob3RfdGVz dF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDIwMDsKICAgMgogKDEgcm93KQog Ci0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAx NTAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dF9wYXJ0MScpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAy IHwgICAxCi0oMSByb3cpCi0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAotU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 Ci0gaWQgCi0tLS0tCi0gIDEKLSgxIHJvdykKLQotLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gVHJpZ2dlciBtb2RpZmljYXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBI T1QKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0 bHkgZGV0ZWN0IHdoZW4gdHJpZ2dlcnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKLS0t IGhlYXBfbW9kaWZ5X3R1cGxlKCksIGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBp biB0aGUgVVBEQVRFJ3MgU0VUIGNsYXVzZQotQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAotICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICB0cmlnZ2VyZWRfY29sIGludCwK LSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJTkRF WCBob3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsK LS0tIENyZWF0ZSBhIHRyaWdnZXIgdGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgot Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQotUkVU VVJOUyBUUklHR0VSIEFTICQkCi1CRUdJTgotICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVX LnRyaWdnZXJlZF9jb2wgKyAxOwotICAgIFJFVFVSTiBORVc7Ci1FTkQ7Ci0kJCBMQU5HVUFH RSBwbHBnc3FsOwotQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKLSAgICBC RUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKLSAgICBGT1IgRUFDSCBST1cKLSAg ICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7Ci1JTlNFUlQgSU5U TyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwotU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7Ci0gdXBkYXRlcyB8 IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0g VXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQg Y29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQg YW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLS0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVw ZGF0ZSAoaW5kZXhlZCBjb2x1bW4gd2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCi1TRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLSB1cGRhdGVzIHwg aG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBW ZXJpZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1TRUxF Q1QgdHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOwot IHRyaWdnZXJlZF9jb2wgCi0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgMTAxCi0oMSBy b3cpCi0KLURST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOwotRFJPUCBGVU5D VElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gSlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNr aW5nCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0 byBub24taW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFC TEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogbm9uLWluZGV4ZWQgcGF0aCBj aGFuZ2UgaXMgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBo b3RfanNvbmJfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIGRhdGEganNv bmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLS0tIENyZWF0ZSBleHByZXNzaW9uIGlu ZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCiBDUkVBVEUgSU5ERVggaG90X2pzb25iX25h bWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwogSU5TRVJUIElO VE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFn ZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoy NSwiY2l0eSI6IkxBIn0nKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAg MCB8ICAgMAorLS0gVGhlIGpzb25iIGNvbHVtbiBpcyB0aGUgZXhwcmVzc2lvbiBpbmRleCdz IGlucHV0LCBzbyBIT1QtaW5kZXhlZCBpcworLS0gZGlzcXVhbGlmaWVkIChleHByZXNzaW9u IGluZGV4ZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKSBhbmQgdGhlIGpzb25iCistLSBjaGFu Z2UgYmxvY2tzIGNsYXNzaWMgSE9UOiBub24tSE9UIHVwZGF0ZS4KK1VQREFURSBob3RfanNv bmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgx IHJvdykKIAotLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpTT04gcGF0aCAoYWdlKSAtIHNob3Vs ZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rlc3Qg U0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAx OwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogIHVw ZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAxIHwgICAwCiAoMSByb3cp CiAKLS0tIFVwZGF0ZSBpbmRleGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJl IEhPVAotVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEs ICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CistLSBMaWtld2lzZSBub24t SE9UOiBleHByZXNzaW9uIGluZGV4IGRpc3F1YWxpZmllcyBIT1QtaW5kZXhlZC4KK1VQREFU RSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hFUkUgaWQgPSAy OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRh dGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMiB8ICAgMAogKDEgcm93KQog Ci0tLSBWZXJpZnkgaW5kZXggd29ya3MKLVNFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0 IFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsKLSBpZCAKLS0tLS0KLSAgMQorLS0g TGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZpZXMgSE9ULWlu ZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQo ZGF0YSwgJ3tjb3VudHJ5fScsICciVVNBIicpIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAg ICAzIHwgICAwCiAoMSByb3cpCiAKLS0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDQgfCAgIDAKLSgxIHJvdykKLQogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKLS0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKLUNSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAotICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKLSAgICBkb2MgeG1sCi0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 Ci0tLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKLUlOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKLSAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAotICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOwotRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0t Ci0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr Ci0tLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCi1VUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0K LSAgICAgICAwIHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAg MAotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5kZXggd29ya3MKLVNFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07Ci1FUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQotTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1ERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCi1ISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCi1EUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKLS0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDkuIEEgY2hhbmdlIHRvIGEg R0lOLWluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkCistLQorLS0gVGhlIHJlYWQgc2lk ZSBmaWx0ZXJzIGEgc3RhbGUgbGVhZiB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1h cCwgd2hpY2gKKy0tIGlzIGFjY2Vzcy1tZXRob2QgYWdub3N0aWMsIHNvIGEgR0lOLWNvdmVy ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkIGxpa2UgYW55CistLSBvdGhlcjogb25seSB0aGUg R0lOIGluZGV4IGlzIG1haW50YWluZWQsIGFuZCBhIEdJTiBzY2FuICh3aGljaCByZWNoZWNr cyBvbgorLS0gdGhlIGhlYXApIHJldHVybnMgY29ycmVjdCByZXN1bHRzIGFjcm9zcyB0aGUg Y2hhaW4uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfZ2lu X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICB0YWdzIHRleHRbXSwKICAg ICBwcm9wZXJ0aWVzIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0tLSBHSU4g aW5kZXggb24gdGV4dCBhcnJheQogQ1JFQVRFIElOREVYIGhvdF9naW5fdGFnc19pZHggT04g aG90X2dpbl90ZXN0IFVTSU5HIGdpbiAodGFncyk7Ci0tLSBHSU4gaW5kZXggb24gSlNPTkIg KGpzb25iX29wcyAtIGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3By b3BzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIElOU0VS VCBJTlRPIGhvdF9naW5fdGVzdCBWQUxVRVMKICAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFn MiddLCAneyJrZXkxIjoidmFsMSIsImtleTIiOiJ2YWwyIn0nKSwKICAgICAoMiwgQVJSQVlb J3RhZzMnLCAndGFnNCddLCAneyJrZXkzIjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8 IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0g VXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3JkZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIg YW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBIT1QKLS0tIChHSU4gZXh0cmFjdHMgc2FtZSBr ZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikKKy0tIFJlb3JkZXIgdGFnczogYSBHSU4tY292 ZXJlZCBjb2x1bW4gY2hhbmdlcywgc28gdGhpcyBpcyBIT1QtaW5kZXhlZC4KIFVQREFURSBo b3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10gV0hFUkUgaWQg PSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLSB1 cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93 KQotCi0tLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1jb21wYXJl ZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAotLS0gZGVwZW5kaW5nIG9uIEdJTiBvcGVy YXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1ZXMpCi1V UERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZhbDFfbmV3 Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgMiB8ICAgMAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCiAoMSByb3cpCiAKLS0tIEFkZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1Qg KGRpZmZlcmVudCBleHRyYWN0ZWQga2V5cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRh Z3MgPSBBUlJBWVsndGFnMicsICd0YWcxJywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CiBTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAzIHwgICAwCi0oMSByb3cpCi0KLS0tIFZl cmlmeSBHSU4gaW5kZXhlcyB3b3JrCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hF UkUgdGFncyBAPiBBUlJBWVsndGFnNSddOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0K LVNFTEVDVCBpZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7Imtl eTEiOiJ2YWwxX25ldyJ9JzsKLSBpZCAKLS0tLS0KLSAgMQorICAgICAgIDEgfCAgIDEKICgx IHJvdykKIAogRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIENsZWFudXAKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0OwotRFJP UCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKLURST1Ag RlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKLURST1AgRlVO Q1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBGVU5D VElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorRFJPUCBGVU5DVElPTiBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9Q IEZVTkNUSU9OIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBn ZXRfaG90X2NvdW50KHRleHQpOwogRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKaW5kZXggYTg4OTQwMDYxNzcuLjM1Y2U3 ZTFjZGNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0xLDM1 NCArMSwyNTggQEAKIC0tCiAtLSBIT1RfVVBEQVRFUwotLS0gVGVzdCBIZWFwLU9ubHkgVHVw bGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucworLS0gVGVzdCBjbGFzc2ljIEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCiAtLQotLS0gVGhpcyB0ZXN0IHN5c3RlbWF0 aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3By aWF0ZQotLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhl ZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLSBUaGlzIGZpbGUgY292ZXJzIEhPVCBkZWNp c2lvbnMgdGhhdCBhcHBseSBpZGVudGljYWxseSBvbiBhIHByZS1ob3QtaW5kZXhlZAorLS0g c2VydmVyOiBldmVyeSBVUERBVEUgaGVyZSBlaXRoZXIgbGVhdmVzIGFsbCBpbmRleGVkIGF0 dHJpYnV0ZXMKKy0tIHVuY2hhbmdlZCBvciB0b3VjaGVzIG9ubHkgc3VtbWFyaXppbmctaW5k ZXggKEJSSU4pIGF0dHJpYnV0ZXMsIHNvIHRoZQorLS0gSE9UIHZzIG5vbi1IT1QgY2hvaWNl IGRvZXMgbm90IGRlcGVuZCBvbiB3aGV0aGVyIFNlbGVjdGl2ZSBJbmRleAorLS0gVXBkYXRl IChob3QtaW5kZXhlZCkgaXMgZW5hYmxlZC4gIGhvdC1pbmRleGVkLXNwZWNpZmljIGJlaGF2 aW91ciAoVVBEQVRFcyB0aGF0IG1vZGlmeQorLS0gYSBub24tc3VtbWFyaXppbmcgaW5kZXhl ZCBhdHRyaWJ1dGUpIGlzIGNvdmVyZWQgaW4KKy0tIGhvdF9pbmRleGVkX3VwZGF0ZXMuc3Fs LgogLS0KLS0tIFdlIHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6Ci0tLSAxLiBT dGF0aXN0aWNzIGZ1bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQot LS0gMi4gcGFnZWluc3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24K LS0tIDMuIEVYUExBSU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVwZGF0ZXMKKy0t IFZhbGlkYXRpb24gbWV0aG9kczoKKy0tICAgMS4gU3RhdGlzdGljcyAocGdfc3RhdF9nZXRf dHVwbGVzX2hvdF91cGRhdGVkKQorLS0gICAyLiBwYWdlaW5zcGVjdCBmb3IgSE9UIGNoYWlu IHN0cnVjdHVyZQorLS0gICAzLiBFWFBMQUlOIHRvIGNvbmZpcm0gdGhlIHBsYW5uZXIgc3Rp bGwgcGlja3MgdGhlIGluZGV4CiAtLQogCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMK IENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKIAotLS0gRnVu Y3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKKy0tIFN1bSBvZiBjb21taXR0ZWQgYW5k IGluLXByb2dyZXNzIChub24tSE9ULCBIT1QpIHVwZGF0ZSBjb3VudGVycy4KIENSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKIFJFVFVS TlMgVEFCTEUgKAogICAgIHVwZGF0ZXMgQklHSU5ULAogICAgIGhvdCBCSUdJTlQKICkgQVMg JCQKIERFQ0xBUkUKLSAgcmVsX29pZCBvaWQ7CisgICAgcmVsX29pZCBvaWQ7CiBCRUdJTgot ICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOwotCi0gIC0tIFJlYWQgYm90 aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCi0gIC0tIEluIGF1dG9j b21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3Mg Y29ycmVjdGx5Ci0gIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4v Q09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKLSAgLS0gaW5jbHVkZSBmbHVzaGVk IHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKLSAg LS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KLSAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgICAgIENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOwotICBo b3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQp LCAwKSArCi0gICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCk7Ci0KLSAgUkVUVVJOIE5FWFQ7CisgICAgcmVsX29pZCA6 PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBn X3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAg ICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAw KTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVk KHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKIEVO RDsKICQkIExBTkdVQUdFIHBscGdzcWw7CiAKLS0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFy dCBvZiBhIEhPVCBjaGFpbiAoaGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorLS0g VHJ1ZSBpZmYgdGFyZ2V0X2N0aWQgaXMgdGhlIFRBSUwgb2YgYSBIT1QgY2hhaW4gb24gdGhl IHNhbWUgcGFnZS4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4o cmVsX25hbWUgdGV4dCwgdGFyZ2V0X2N0aWQgdGlkKQogUkVUVVJOUyBib29sZWFuIEFTICQk CiBERUNMQVJFCi0gIGJsb2NrX251bSBpbnQ7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7CisgICAg YmxvY2tfbnVtIGludDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOwogQkVHSU4KLSAgYmxvY2tf bnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7Ci0KLSAgLS0gTG9v ayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSB0aGF0IHBvaW50cyB0 byBvdXIgdGFyZ2V0IHR1cGxlCi0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAgICBTRUxFQ1QgbHAs IGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3Bh Z2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUgbHBfZmxhZ3MgPSAxCi0gICAg ICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCi0gICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0 aWQKLSAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRl eHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCi0gIExPT1AKLSAgICBSRVRVUk4gdHJ1 ZTsKLSAgRU5EIExPT1A7Ci0KLSAgUkVUVVJOIGZhbHNlOworICAgIGJsb2NrX251bSA6PSAo dGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworICAgIEZPUiBwYWdlX2l0ZW0g SU4KKyAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgIEZST00g aGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAg ICAgICAgV0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICAgICAgQU5EIHRfY3RpZCBJUyBOT1Qg TlVMTAorICAgICAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAgICAgIEFO RCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6 dGlkICE9IHRhcmdldF9jdGlkCisgICAgTE9PUAorICAgICAgICBSRVRVUk4gdHJ1ZTsKKyAg ICBFTkQgTE9PUDsKKyAgICBSRVRVUk4gZmFsc2U7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBn c3FsOwogCi0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0 dXBsZQorLS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQs IHN0YXJ0X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0 aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikg QVMKICQkCiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9j a19udW0gaW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3Rh cnRfY3RpZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1h eF9pdGVyYXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5k X3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAg ICBibG9ja19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQg dGlkIDo9IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBp bnQgOj0gMDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRl bSByZWNvcmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAg ICBmbGFnc19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChv bGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0g SU4KLSAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUg bHBfZmxhZ3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0g ICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBw YWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29y IDo9IHRydWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVj ZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5k X3ByZWRlY2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAg RU5EIElGOwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3Np dGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9j dGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0 aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAg ICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBs cCA9IGxpbmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAg ICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2Nr X251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0 aWQgPSBzdGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5h bWVzCi0gICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAg ICAgIFdIRU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9y bWFsICgxKScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAg V0hFTiAzIFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBh Z2VfaXRlbS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVU VVJOIFFVRVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9j dGlkLAotICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAot ICAgICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQg PSBjdXJyZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRl bS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRI RU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQg Oj0gcGFnZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9p bnQpWzBdOjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAg RU5EIElGOwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9z aXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8 fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScp Ojp0aWQ7CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVY SVQ7CiAgICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAg UkVUVVJOOworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisK KyAgICBXSElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGlu ZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAg IEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRf Y3RpZAorICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJl bF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgor ICAgICAgICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVt LmxwX2ZsYWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisg ICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAg ICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMg VEhFTiAnZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBw YWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAg ICAgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24s CisgICAgICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdz X25hbWUsCisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAg ICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBj dXJyZW50X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisg ICAgICAgICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4 dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAg ICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3Np dGlvbiArIDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAg VEhFTgorICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExP T1A7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBCYXNpYyBIT1QgdXBkYXRl ICh1cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uKQorCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDEuIEJhc2ljIEhPVDogdXBkYXRlIG9mIGEgbm9uLWluZGV4ZWQgY29sdW1uCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAg aWQgaW50IFBSSU1BUlkgS0VZLAogICAgIGluZGV4ZWRfY29sIGludCwKICAgICBub25faW5k ZXhlZF9jb2wgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCiBDUkVBVEUgSU5E RVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOwogCiBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKIElOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOwogSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7CiAKLS0tIEdldCBiYXNl bGluZQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBTaG91bGQgYmUgSE9UIHVwZGF0 ZXMgKG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorLS0gVGhyZWUgY2xhc3Np YyBIT1QgdXBkYXRlcyAobm9uLWluZGV4ZWQgY29sKS4KIFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CiBVUERBVEUgaG90 X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwog VVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJF IGlkID0gMzsKLQotLS0gVmVyaWZ5IEhPVCB1cGRhdGVzIG9jY3VycmVkCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0KLS0tIER1bXAgdGhlIEhPVCBjaGFp biBiZWZvcmUgVkFDVVVNaW5nCi1XSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1Qg Y3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3Rf Y2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0g IGNoYWluX3Bvc2l0aW9uLAotICBwcmludF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3Ms Ci0gIHRfY3RpZAotRlJPTSBjdXJyZW50X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hh aW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKLQotLS0gVmFjdXVtIHRoZSBy ZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKLVZBQ1VVTSBob3Rf dGVzdDsKLQotLS0gU2hvdyB0aGF0IHRoZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZhY3V1bQot V0lUSCBjdXJyZW50X3R1cGxlIEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDEKLSkKLVNFTEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAg cHJpbnRfaG90X2NoYWluLmN0aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3Vy cmVudF90dXBsZSwKLUxBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJl bnRfdHVwbGUuY3RpZCk7Ci0KLS0tIE5vbi1IT1QgdXBkYXRlICh1cGRhdGUgaW5kZXhlZCBj b2x1bW4pCi1VUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlk ID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLQotLS0g VmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUpCi1TRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5k ZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKLVNFTEVD VCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1 MDsKLQotLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKLUVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxMDA7Ci1TRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKLVJFU0VUIGVuYWJsZV9zZXFzY2FuOwotCi0tLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTog dXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVz Ci1EUk9QIFRBQkxFIGhvdF90ZXN0OwotCi1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAg IGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAot ICAgIGNvbF9jIGludCwKLSAgICBub25faW5kZXhlZCB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7Ci0KLUNSRUFURSBJTkRFWCBob3RfdGVzdF9hX2lkeCBPTiBob3RfdGVzdChj b2xfYSk7Ci1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYl9pZHggT04gaG90X3Rlc3QoY29sX2Ip OwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9jKTsKLQot SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcp OwotCi0tLSBVcGRhdGUgb25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2Ug YW4gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZAotLS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBt dXN0IGJlIHVwZGF0ZWQgKGFsbC1vci1ub25lIHByb3BlcnR5KQotVVBEQVRFIGhvdF90ZXN0 IFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK IAotLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBI T1QKLVVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7Ci1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSBDaGFpbi1vZi0xIG9u IGlkPTEgc3RpbGwgaGFzIGEgcHJlZGVjZXNzb3IgbGluZSBwb2ludGVyLgorV0lUSCBjdXJy ZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMSkK K1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9uLCBwcmludF9ob3RfY2hhaW4u Y3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLCBMQVRFUkFMIHBy aW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwogCi0tLSBQ YXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJlZGljYXRlIChjb25z ZXJ2YXRpdmUgPSBub24tSE9UKQotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRFIFRB QkxFIGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgc3RhdHVzIHRl eHQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLS0tIFBh cnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKLUNSRUFURSBJTkRF WCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2 ZScsICdkYXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3Rp dmUnLCAnZGF0YTInKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0 ZWQnLCAnZGF0YTMnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnYWN0 aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkKLS0tIFNob3VsZCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBV cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHBy ZWRpY2F0ZSkKLS0tIFNob3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworLS0gVkFDVVVNIGNvbGxhcHNlcyB0aGUgY2hhaW4uCitWQUNVVU0g aG90X3Rlc3Q7CiAKLS0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAnaW5hY3RpdmUnIHRvICdkZWxl dGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFBvc3RncmVTUUwgaXMgY29uc2Vy dmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBwcmVkaWNhdGUgY2hlY2sKLS0t IFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3RoIHZhbHVlcyBhcmUgb3V0c2lk ZSBwcmVkaWNhdGUKLVVQREFURSBob3RfdGVzdCBTRVQgc3RhdHVzID0gJ2RlbGV0ZWQnIFdI RVJFIGlkID0gMjsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK K1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVS RSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJpbnRf aG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwg TEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KTsKIAotLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCi1T RUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUn OwotCi0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1 bW5zCiBEUk9QIFRBQkxFIGhvdF90ZXN0OwogCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDIuIFN1bW1hcml6aW5nIGluZGV4ZXMgKEJSSU4pIGRvIG5vdCBibG9jayBIT1QKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdHMgdGltZXN0YW1wLAogICAgIHZhbHVlIGludCwK ICAgICBicmluX2NvbCBpbnQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQogQ1JFQVRF IElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7CiBD UkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBi cmluKGJyaW5fY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAy NC0wMS0wMScsIDEwMCwgMTAwMCk7CiAKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAt IHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKKy0tIEJS SU4gY29sdW1ucyBhcmUgc3VtbWFyaXppbmc7IHVwZGF0aW5nIHRoZW0gc3RheXMgY2xhc3Np YyBIT1QgZXZlbgorLS0gdGhvdWdoIHRoZWlyIHZhbHVlcyBjaGFuZ2UuCiBVUERBVEUgaG90 X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmluX2NvbCA9IDIwMDAgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGFsc28gYmUgSE9UCistLSBOb24taW5kZXhlZCBjb2x1bW46IGFs c28gSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQg Y29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCiBEUk9QIFRBQkxFIGhvdF90ZXN0Owog CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMuIFRPQVNUIHBhcnRpY2lwYXRlcyBp biBIT1QgKG5vbi1pbmRleGVkIGNvbHVtbiBwYXRocyBvbmx5KQorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZ IEtFWSwKICAgICBpbmRleGVkX2NvbCBpbnQsCiAgICAgbGFyZ2VfdGV4dCB0ZXh0LAogICAg IHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCiBDUkVBVEUg SU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKIAotLS0gSW5z ZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKIElOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CiAKLS0t IFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhP VAorLS0gTm9uLWluZGV4ZWQsIG5vbi1UT0FTVCBjb2x1bW46IEhPVC4KIFVQREFURSBob3Rf dGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKIAotLS0gVXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRl eGVkIGNvbHVtbiB1bmNoYW5nZWQKKy0tIFRPQVNUIGNvbHVtbiwgaW5kZXhlZF9jb2wgdW5j aGFuZ2VkOiBIT1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVXBkYXRlIGluZGV4 ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5k ZXhlZF9jb2wgPSAyMDA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7Ci0KLS0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlr ZSByZWd1bGFyIGluZGV4CiBEUk9QIFRBQkxFIGhvdF90ZXN0OwogCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDQuIFBhcnRpYWwgaW5kZXggd2hlcmUgdXBkYXRlIGxlYXZlcyBp bmRleGVkIGF0dHJzIHVuY2hhbmdlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICB1bmlx dWVfY29sIGludCBVTklRVUUsCisgICAgc3RhdHVzIHRleHQsCiAgICAgZGF0YSB0ZXh0CiAp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZl X2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwogCi1J TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2RhdGExJyk7Ci1JTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CiAKLS0tIFVwZGF0ZSBk YXRhIChub24taW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VU IGRhdGEgPSAndXBkYXRlZCc7CistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBzdGF0 dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwogCi0tLSBWZXJpZnkgdW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQK LVNFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlk OworLS0gVXBkYXRlIGRhdGEgb24gYSByb3cgb3V0c2lkZSB0aGUgcHJlZGljYXRlOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVl IHZpb2xhdGlvbikKLVVQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVS RSBpZCA9IDI7CitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1 cyA9ICdhY3RpdmUnOwogCi0tLSBNdWx0aS1jb2x1bW4gaW5kZXg6IGFueSBjb2x1bW4gY2hh bmdlID0gbm9uLUhPVAogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSA1LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5k ZXhlZCBjb2x1bW4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhv dF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgY29sX2EgaW50LApAQCAt MzU2LDM2ICsyNjAsNDUgQEAgQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBjb2xfYyBp bnQsCiAgICAgZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KIENSRUFU RSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsKIAog SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnZGF0YScpOwog Ci0tLSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3Vs ZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CistLSBjb2xf YyBub3QgaW4gYW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0g MzU7CistLSBkYXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBT RVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUmVz ZXQKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKLQotLS0gVXBkYXRlIGNvbF9i IChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworRFJPUCBUQUJMRSBob3RfdGVzdDsKIAotLS0gUmVzZXQKLVVQ REFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyMDsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gVW5p cXVlIGluZGV4OiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uICsgdW5pcXVlbmVzcyBl bmZvcmNlbWVudAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90 X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB1bmlxdWVfY29sIGludCBV TklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CiAKLS0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgx LCAxMDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAs ICdkYXRhMicpOwogCi0tLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJl IEhPVAogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOwogCi0tLSBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRo aW4gcGFydGl0aW9ucwotRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9u ZWQgQ0FTQ0FERTsKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0 IE9SREVSIEJZIGlkOwogCistLSBVbmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZCBv biBhbnkgcGF0aC4KK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVS RSBpZCA9IDI7CisKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd2l0aGluIGEgcGFydGl0 aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdF9w YXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAogICAgIHBhcnRpdGlvbl9rZXkgaW50LApAQCAt NDA0LDIwMiArMzE3LDgyIEBAIENSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBo b3RfdGVzdF9wYXJ0aXRpb25lZChpbmRleGVkX2NvbCk7CiBJTlNFUlQgSU5UTyBob3RfdGVz dF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOwogSU5TRVJU IElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRp YWwyJyk7CiAKLS0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1u KSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0 YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOwotCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9u IDIgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rl c3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKIAor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0 MicpOwogCi0tLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlvbnMKIFNFTEVDVCBp ZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwog U0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wg PSAyMDA7CiAKLS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91 bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBpbmRleGVk X2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0X3BhcnQxJyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAotU0VM RUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAx NTA7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0 aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJz IG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBl dmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1 c2UKLQotQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAotICAgIGlkIGludCBQUklN QVJZIEtFWSwKLSAgICB0cmlnZ2VyZWRfY29sIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKLQotQ1JFQVRFIElOREVYIGhvdF90cmlnZ2VyX2lkeCBP TiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wpOwotCi0tLSBDcmVhdGUgYSB0cmln Z2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAk JAotQkVHSU4KLSAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsg MTsKLSAgICBSRVRVUk4gTkVXOwotRU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLQotQ1JF QVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKLSAgICBCRUZPUkUgVVBEQVRFIE9O IGhvdF90cmlnZ2VyX3Rlc3QKLSAgICBGT1IgRUFDSCBST1cKLSAgICBFWEVDVVRFIEZVTkNU SU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90cmlnZ2Vy X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7Ci0KLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0tLSBVcGRhdGUgb25seSBkYXRh IGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW4KLS0tIFNob3Vs ZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2RpZmllZCBhbiBpbmRleGVkIGNvbHVt bgotVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUg aWQgPSAxOwotCi0tLSBWZXJpZnkgaXQgd2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQg Y29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSB0aGUgdHJpZ2dlcmVk IGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKLVNFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7Ci0KLURST1AgVEFCTEUgaG90X3Ry aWdnZXJfdGVzdCBDQVNDQURFOwotRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2Nv bCgpOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU09OQiBleHByZXNzaW9u IGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKLS0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIEpTT05CIHBh dGhzIGNhbiBiZSBIT1QgdXBkYXRlcworRFJPUCBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBDQVNDQURFOwogCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4 cHJlc3Npb24gaW5kZXg6IG5vbi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAg IGlkIGludCBQUklNQVJZIEtFWSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7Ci0KLS0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMg SlNPTiBwYXRoCiBDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29u Yl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwogCiBJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVz dCBWQUxVRVMKICAgICAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5Z QyJ9JyksCiAgICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScp OwogCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0K LS0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9U IGFmdGVyIGluc3RydW1lbnRhdGlvbgorLS0gVGhlIGpzb25iIGNvbHVtbiBpcyB0aGUgZXhw cmVzc2lvbiBpbmRleCdzIGlucHV0LCBzbyBIT1QtaW5kZXhlZCBpcworLS0gZGlzcXVhbGlm aWVkIChleHByZXNzaW9uIGluZGV4ZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKSBhbmQgdGhl IGpzb25iCistLSBjaGFuZ2UgYmxvY2tzIGNsYXNzaWMgSE9UOiBub24tSE9UIHVwZGF0ZS4K IFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2Fn ZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2pzb25iX3Rlc3QnKTsKLQotLS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRh dGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0g MTsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogCi0tLSBWZXJpZnkgaW5kZXgg d29ya3MKLVNFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFt ZScgPSAnQWxpY2UyJzsKLQotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQg cGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCistLSBMaWtld2lz ZSBub24tSE9UOiBleHByZXNzaW9uIGluZGV4IGRpc3F1YWxpZmllcyBIT1QtaW5kZXhlZC4K IFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hFUkUg aWQgPSAyOwotCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CiAKLS0tIFRlc3QganNv bmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGlu c3RydW1lbnRhdGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBk aXNxdWFsaWZpZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRh dGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3VudHJ5fScsICciVVNBIicpIFdIRVJFIGlk ID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogCiBEUk9QIFRBQkxFIGhv dF9qc29uYl90ZXN0OwogCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBYTUwgZXhw cmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0tLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBY TUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi0KLUNSRUFURSBUQUJMRSBob3RfeG1sX3Rl c3QgKAotICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBkb2MgeG1sCi0pIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7Ci0KLS0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3Bl Y2lmaWMgWFBhdGgKLUNSRUFURSBJTkRFWCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxf dGVzdCAoKHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSkpOwotCi1JTlNFUlQg SU5UTyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNl PC9uYW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+PG5h bWU+Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLQotU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRl eGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29tcGFyaXNvbiBm YWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMgbm9uLWluZGV4 ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNvbgotVVBEQVRF IGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFn ZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF94bWxfdGVzdCcpOwotCi0tLSBVcGRhdGUgaW5kZXhlZCBYUGF0 aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQg ZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNv bj4nIFdIRVJFIGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf eG1sX3Rlc3QnKTsKLQotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBo b3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0g QVJSQVlbJ0FsaWNlMic6OnRleHRdOwotCi1EUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKLQot LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFy ZWRhdHVtcyBmb3IgSlNPTkIKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3Qg dGhhdCBHSU4gaW5kZXhlcyBjYW4gdXNlIGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9U IHdoZW4gZXh0cmFjdGVkIGtleXMgbWF0Y2gKLQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA5LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhl ZAorLS0KKy0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFn bm9zdGljLCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFu eQorLS0gb3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBH SU4gc2NhbiAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJl Y3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVks CiAgICAgdGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotCi0tLSBHSU4gaW5kZXggb24gdGV4dCBhcnJheQogQ1JFQVRFIElO REVYIGhvdF9naW5fdGFnc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAodGFncyk7 Ci0KLS0tIEdJTiBpbmRleCBvbiBKU09OQiAoanNvbmJfb3BzIC0ga2V5cyBhbmQgdmFsdWVz KQogQ1JFQVRFIElOREVYIGhvdF9naW5fcHJvcHNfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lO RyBnaW4gKHByb3BlcnRpZXMpOwogCiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CiAgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CiAKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVy IGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9U Ci0tLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCist LSBSZW9yZGVyIHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMg aXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlb J3RhZzInLCAndGFnMSddIFdIRVJFIGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qg a2V5KSAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0t IGRlcGVuZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJv dGgga2V5cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGll cyA9ICd7ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsK LQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKIAotLS0gQWRkIG5ldyB0YWcgLSBzaG91 bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQotVVBEQVRFIGhvdF9n aW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFnNSddIFdIRVJF IGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3Qn KTsKLQotLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKLVNFTEVDVCBpZCBGUk9NIGhvdF9n aW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107Ci1TRUxFQ1QgaWQgRlJPTSBo b3RfZ2luX3Rlc3QgV0hFUkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7 Ci0KIERST1AgVEFCTEUgaG90X2dpbl90ZXN0OwogCi0tLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIENsZWFudXAKLS0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0OwotRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKLURST1AgRlVO Q1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKLURST1AgRlVOQ1RJ T04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBGVU5DVElP TiBJRiBFWElTVFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorRFJPUCBGVU5DVElPTiBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZV TkNUSU9OIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBnZXRf aG90X2NvdW50KHRleHQpOwogRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGZmYjQxM2FiNjEyLi4wYmMxZDUxNDM0MSAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNzcsNiArMTI3Nyw3IEBAIEhlYXBU dXBsZUZyZWV6ZQogSGVhcFR1cGxlSGVhZGVyCiBIZWFwVHVwbGVIZWFkZXJEYXRhCiBIZWFw VHVwbGVUYWJsZVNsb3QKK0hlYXBVcGRhdGVJbmRleE1vZGUKIEhpc3RDb250cm9sCiBIb3N0 Q2FjaGVFbnRyeQogSG9zdHNGaWxlTG9hZFJlc3VsdApAQCAtMzEzOCw3ICszMTM5LDYgQEAg VFNWZWN0b3JTdGF0CiBUU3RhdGUKIFRTdGF0dXMKIFRTdG9yZVN0YXRlCi1UVV9VcGRhdGVJ bmRleGVzCiBUWE5FbnRyeUZpbGUKIFRZUENBVEVHT1JZCiBUX0FjdGlvbgotLSAKMi41MC4x Cgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBkZjI5ZTlkOGMwYjEzMjE1N2JlODE4NjRhODdkMDdlOWUyY2U3MGE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDUv OV0gQ29sbGFwc2UgZGVhZCBIT1QtaW5kZXhlZCBjaGFpbnMgdG8geGlkLWZyZWUgc3R1YnMg b24KIHBydW5lL3ZhY3V1bQoKQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGluZGV4IGVu dHJpZXMgdGhhdCBwb2ludCBhdCBtaWQtY2hhaW4gaGVhcC1vbmx5CnR1cGxlcywgc28gYSBk ZWFkIGNoYWluIG1lbWJlciBjYW5ub3Qgc2ltcGx5IGJlIHJlbW92ZWQ6IGEgbm90LXlldC1z d2VwdCBpbmRleAplbnRyeSBtYXkgc3RpbGwgYXJyaXZlIGF0IGl0LCBhbmQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9uIGl0IGlzCndoYXQgYSByZWFkZXIgdW5pb25z IHRvIGp1ZGdlIHN0YWxlbmVzcy4KClRlYWNoIHBydW5lIHRvIGNvbGxhcHNlIGEgZGVhZCBj aGFpbiBwcmVmaXggaW50byB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzOgplYWNoIHByZXNl cnZlZCBkZWFkIGtleSB0dXBsZSBpcyByZXdyaXR0ZW4gaW4gcGxhY2UgdG8gYSBzdHViIChm cm96ZW4sCm5hdHRzID09IDAsIEhFQVBfSU5ERVhFRF9VUERBVEVELCBmb3J3YXJkaW5nIHZp YSB0X2N0aWQub2ZmbnVtKSB0aGF0IGtlZXBzIGl0cwpzZWdtZW50J3MgbW9kaWZpZWQtYXR0 cnMgYml0bWFwLCBhbmQgYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgd2hvbGx5CnN1 YnN1bWVkIGJ5IGxhdGVyIGhvcHMgaXMgcmVjbGFpbWVkIGluc3RlYWQuICBSZWFkZXJzIHN0 ZXAgdGhyb3VnaCBzdHVicwp0cmFuc3BhcmVudGx5IGFuZCBzdGlsbCBjcm9zcyBldmVyeSBz dXJ2aXZpbmcgaG9wJ3MgYml0bWFwLiAgVGhlIGNvbGxhcHNlIGJhY2sKdG8gY2xhc3NpYyBI T1QgaXMgZHJpdmVuIGJ5IHBydW5lOiBvbmNlIGEgY2hhaW4gaXMgZnVsbHkgZGVhZCwgYSBs YXRlciBwcnVuZQooaGVhcF9wcnVuZV9jaGFpbiAvIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9s aXZlKSByZWNsYWltcyBpdHMgbWVtYmVycyBhbmQKcmUtcG9pbnRzIHRoZSByb290IHJlZGly ZWN0IHN0cmFpZ2h0IGF0IHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgVkFDVVVNJ3MgaW5kZXgK Y2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGxlYXZlczsgaXRzIHNlY29uZCBwYXNzIChsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMKdGhlIHVzdWFsIExQX0RFQUQgLT4gTFBfVU5VU0VE IGNvbnZlcnNpb24gYW5kIGxlYXZlcyB0aGUgSE9ULWluZGV4ZWQgY29sbGFwc2UKdG8gcHJ1 bmUuCgpUaGUgY29sbGFwc2UgcmV1c2VzIHRoZSBleGlzdGluZyBwcnVuZS9mcmVlemUgV0FM IHZpYSBhbiB4bGhwX3BydW5lX2l0ZW1zCnN1Yi1yZWNvcmQgY2FycnlpbmcgdGhlIChvZmZz ZXQsIGZvcndhcmQpIHN0dWIgcGFpcnM7IG5vIG5ldyByZWNvcmQgdHlwZSBpcwppbnRyb2R1 Y2VkLiAgQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBhIHByZXNlcnZlZCBzdHViIChvciBh IHJlZGlyZWN0IHRoYXQKZm9yd2FyZHMgaW50byBhIGxpdmUgSE9ULWluZGV4ZWQgbWVtYmVy KSBpcyBrZXB0IG5vbi1hbGwtdmlzaWJsZSBzbyBpbmRleC1vbmx5CnNjYW5zIGhlYXAtZmV0 Y2ggdGhyb3VnaCB0aGUgY2hhaW47IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSBy ZWNvZ25pemVzCmJvdGggdGhlIHJlZGlyZWN0LXRvLVNJVSBhbmQgdGhlIHN0dWIgY2FzZSBl eHBsaWNpdGx5LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpD by1hdXRob3JlZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAg MzggKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgIHwgNjY4 ICsrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgIHwgIDkyICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICAgICB8ICAxOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA4MDkgaW5zZXJ0aW9ucygr KSwgNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5hYjRmOGJjMTg4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjA2LDYgKzIw Niw0NCBAQCB1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNh bCwgZS5nLiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcwogc3RpbGwgZGV0ZWN0ZWQuICAoQXBw ZW5kaXggQSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCiAKIAorUHJ1bmUg YW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1 c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4IGVudHJ5IHBvaW50aW5n IGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24gVElELCBjbGFzc2ljIEhP VCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9pbnRlcnMgaGF2ZSBubyBl eHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBydW5pbmcgdGhlcmVmb3Jl IG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIgd2hpbGUgYSBub3QteWV0 LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0IGl0LgorCitoZWFwX3By dW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWluIG1lbWJlcnMgdG8gYSBz aW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhlIGZpcnN0IGxpdmUgdHVw bGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2YgYSBsaXZlIEhPVC1pbmRl eGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkKK3Nv IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0aWxsIGZpbmRzIGEgd2Fs a2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1QgbWF5IGZvcndhcmQgdG8g dGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZlY3ljbGUKK3JldXNlcyB0 aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlzIG5vIG5ldyBvbi1kaXNr IGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQor CitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgaW5kZXggZW50cmll cy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBpcyBkcml2ZW4gYnkgcHJ1 bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBhIGNoYWluIGlzCitmdWxs eSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9j aGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBhbmQgcmUtcG9pbnRzIHRo ZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUuCitSZS1wb2ludGluZyBh IHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlciBzdGlsbCBy ZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRlciB0aGUgZXhjbHVzaXZl IGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJlLXBvaW50CityZWRpcmVj dHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVzdWFsIExQX0RFQUQgLT4g TFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhPVC1pbmRleGVkIGNvbGxh cHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZpdm9yCitzdHViIGlzIGRl bGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhhdCBhbiBpbmRleC1vbmx5 IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRyaWVzIChlbmZvcmNlZCBp biBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIgcmVjb3JkZXJzLCBhbmQK K2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwogQXBwZW5kaWNlcwogLS0t LS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5 ZWQ3MDI0ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJl ZXplX3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZz ZXROdW1iZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIg PSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlk b19wcnVuZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxh bnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJl Y3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAg Jm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCwKKwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3By dW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBu c3R1YnMgPiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICov CiAJCUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxh Z3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5y ZWRpcmVjdGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVz ZWQsIG51bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJ c3R1YnMsIG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBw ID0gMDsgcCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmZGRkZDIzMDM1Yi4uZWUzYjM0MGM1YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJl ZGlyZWN0ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlp bnQJCQluZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQlu ZnJvemVuOwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0 byBiZSBjaGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVy UGFnZV07CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CisKKwkvKgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9y IHN0dWJzOiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMg cmV3cml0dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJz IHRoYXQgcHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4K KwkgKi8KKwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsK KwogCUhlYXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJ LyoKQEAgLTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0 aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2Zm bnVtLAogCQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBf cHJ1bmVfcmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKKwkJCQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0 YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3By ZXNlcnZlc19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAt NDM5LDYgKzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+ bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVu ID0gMDsKIAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5 X2l0ZW1zID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhl IHR1cGxlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNz aW5nLgogCQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlz IGFuIExQX05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVB UF9JTkRFWEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2li bGUKKwkJICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsg YW5kIHRoZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdt ZW50IGl0IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIHdvdWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5n IHdvdWxkIHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMu CisJCSAqIFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2 ZWQ7IHRoZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFy ZW50bHkgdG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ dHVwLnRfZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVt aWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsK QEAgLTY3NywxOCArNzEwLDM4IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAo bGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJ CUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJ CQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOworCQkJLyoKKwkJCSAqIEEg ZGVhZCBoZWFwLW9ubHkgdHVwbGUgdGhhdCBjYXJyaWVzIGEgc3RhbGUgYnRyZWUgbGVhZiBv ZiBpdHMKKwkJCSAqIG93biAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzID4gMCkgaXMg YSBIT1QtaW5kZXhlZCBjaGFpbgorCQkJICogbWVtYmVyIG5vdCByZWFjaGVkIGJ5IGFueSBj aGFpbiB3YWxrIChhbiBhYm9ydGVkCisJCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBz dWItY2hhaW4sIG9yIGEgbWVtYmVyIHdob3NlIGxpdmUgcm9vdAorCQkJICogc3RvcHBlZCB0 aGUgd2FsaykuICBNYXJrIGl0IExQX0RFQUQgaW5zdGVhZCBvZiByZWNsYWltaW5nIGl0CisJ CQkgKiBvdXRyaWdodDogdGhhdCBwaW5zIHRoZSBzbG90IGFnYWluc3QgcmV1c2UgYW5kIGFk ZHMgaXQgdG8gdGhlCisJCQkgKiBkZWFkLWl0ZW1zIGFycmF5IHNvIGFtYnVsa2RlbGV0ZSBz d2VlcHMgdGhlIHN0YWxlIGxlYWYgYW5kIGEKKwkJCSAqIGxhdGVyIHZhY3V1bSByZWNsYWlt cyB0aGUgTFAuCisJCQkgKgorCQkJICogT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBjbGFzc2lj LUhPVCBjYXNlIHVwc3RyZWFtIGhhcyBhbHdheXMKKwkJCSAqIGhhbmRsZWQgaGVyZTogYSBk ZWFkIGhlYXAtb25seSB0dXBsZSB3aXRoIG5vIGxlYWYgb2YgaXRzIG93bgorCQkJICogc2hv dWxkIGhhdmUgYmVlbiByZWFjaGVkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgcHJ1bmluZyBp dHMKKwkJCSAqIEhPVCBjaGFpbi4gIElmIGl0IGlzIG5vdCBIb3RVcGRhdGVkLCBpdCBpcyBh IGxlZ2l0aW1hdGUKKwkJCSAqIHN0YW5kYWxvbmUgZGVhZCBoZWFwLW9ubHkgdHVwbGUgKGUu Zy4gYW4gYWJvcnRlZCB1cGRhdGUpIGFuZAorCQkJICogY2FuIGJlIHJlY2xhaW1lZDsgaWYg aXQgKmlzKiBIb3RVcGRhdGVkLCBzb21ldGhpbmcgaXMgd3JvbmcgLS0KKwkJCSAqIHByZXNl cnZlIGl0IGFuZCBlcnJvciBvdXQgcmF0aGVyIHRoYW4gc2lsZW50bHkgZGVzdHJveSB0aGUK KwkJCSAqIGV2aWRlbmNlLgorCQkJICovCisJCQlIZWFwVHVwbGVIZWFkZXJBZHZhbmNlQ29u ZmxpY3RIb3Jpem9uKGh0dXAsCisJCQkJCQkJCQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlk X3JlbW92ZWQpOworCQkJaWYgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9V UERBVEVEKSAhPSAwICYmCisJCQkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMoaHR1cCkgPiAw KQorCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIG9mZm51 bSwgdHJ1ZSk7CisJCQllbHNlIGlmIChsaWtlbHkoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBk YXRlZChodHVwKSkpCiAJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9m Zm51bSwgdHJ1ZSk7Ci0JCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBUaGlz IHR1cGxlIHNob3VsZCd2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBhcyBwYXJ0IG9m Ci0JCQkJICogYSBIT1QgY2hhaW4sIHNvIHNvbWV0aGluZydzIHdyb25nLiAgVG8gcHJlc2Vy dmUgZXZpZGVuY2UsCi0JCQkJICogd2UgZG9uJ3QgZGFyZSB0byByZW1vdmUgaXQuICBXZSBj YW5ub3QgbGVhdmUgYmVoaW5kIGEgREVBRAorCQkJCSAqIFRoaXMgdHVwbGUgc2hvdWxkJ3Zl IGJlZW4gcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgYQorCQkJCSAqIEhPVCBj aGFpbiwgc28gc29tZXRoaW5nJ3Mgd3JvbmcuICBUbyBwcmVzZXJ2ZSBldmlkZW5jZSwgd2UK KwkJCQkgKiBkb24ndCBkYXJlIHRvIHJlbW92ZSBpdC4gIFdlIGNhbm5vdCBsZWF2ZSBiZWhp bmQgYSBERUFECiAJCQkJICogdHVwbGUgZWl0aGVyLCBiZWNhdXNlIHRoYXQgd2lsbCBjYXVz ZSBWQUNVVU0gdG8gZXJyb3Igb3V0LgogCQkJCSAqIFRocm93aW5nIGFuIGVycm9yIHdpdGgg YSBkaXN0aW5jdCBlcnJvciBtZXNzYWdlIHNlZW1zIGxpa2UKIAkJCQkgKiB0aGUgbGVhc3Qg YmFkIG9wdGlvbi4KQEAgLTExNjMsNyArMTIxNiw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3Rh dGUubnJlZGlyZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3Rh dGUubnVudXNlZCA+IDA7CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5u c3R1YnMgPiAwOwogCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5n LCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEzMTgsOCBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQkJaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAog CQkJCQkJCQkJcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJ CQkJCQkJcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0 ZS5ub3d1bnVzZWQsIHByc3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3Vu dXNlZCwgcHJzdGF0ZS5udW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0 ZS5uc3R1YnMpOwogCQl9CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM2Miw4 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJ CQkJCQkgIHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJ CQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0 YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5u b3d1bnVzZWQsIHByc3RhdGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywg cHJzdGF0ZS5uc3R1YnMpOwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE1MDQsMTAxIEBAIGh0 c3ZfZ2V0X3ZhbGlkX3N0YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQp IHN0YXR1czsKIH0KIAorLyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJ Rm9sbG93IGEgSE9UIGNoYWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5n IG1lbWJlci4KKyAqCisgKiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4g dGhhdCB3YXMgY29sbGFwc2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBh bmQgYW55IGVudHJ5LWJlYXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBf UkVESVJFQ1RzIHRvCisgKiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAg SWYgdGhhdCB0dXBsZSBoYXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5k IGRpZWQsIHRoZSByZWRpcmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50 IGZpcnN0IGxpdmUKKyAqIHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5n IHRvIG9uZSBsaXZlIHR1cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5l ZWQgdGhlIGNoYWluJ3MgY3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAq IFdhbGtzIHRfY3RpZCBvbiB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBp bmcgREVBRCBtZW1iZXJzLCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmly c3Qgbm9uLURFQUQgKHN1cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9m ZnNldE51bWJlciBpZiB0aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3Ig cnVucyBvZmYgdGhlCisgKiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVj dXRlIHN0YXRlLCBzbyBpdCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRl ciBpbiB3aGljaCBzaWJsaW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0 aWMgT2Zmc2V0TnVtYmVyCitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRl ICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3Rh dGUtPnBhZ2U7CisJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1i ZXIocGFnZSk7CisJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJl ciBzdXJ2aXZvciA9IHN0YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1i ZXIgKi8KKwlpbnQJCQlsb29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zm c2V0TnVtYmVyICYmIG9mZm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhl YXBUdXBsZUhlYWRlciBodHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRl bSBjYW5ub3QgYmUgYSBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1J ZElzTm9ybWFsKGxwKSkKKwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0 dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoK KwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRp bmcgbm9kZSwgbm90IGEKKwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29y ZHMgaXQgdW5jaGFuZ2VkIHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNv IGl0cyBodHN2IHNsb3QgaXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAq IGZvcndhcmQgbGluayByYXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRy aXAgdGhlCisJCSAqIHZhbGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVk SGVhZGVySXNTdHViKGh0dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoaHR1cCk7CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4g SW52YWxpZE9mZnNldE51bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0g aHRzdl9nZXRfdmFsaWRfc3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAg PSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0 YXR1cyA9PSBIRUFQVFVQTEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1i ZXIgaXMgcmVjbGFpbWVkL3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJ ICogc3RhcnRzIGF0IGl0cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2 ZSBzdWNjZXNzb3IKKwkJCSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJ ICovCisJCQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJ CUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+ YmxvY2spCisJCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9y ID0gb2ZmbnVtOworCQl9CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxv bmcgdG8gdGhlIHN1cnZpdmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBm b2xsb3dzIHRoZW0gKHdoaWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICog ZGVhZCBwcmVmaXgpLiAgS2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFk dmFuY2UgdGhlCisJCQkgKiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBv ZiB0aGUgbGFzdCBERUFEIG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFk ZXJJc0hvdFVwZGF0ZWQoaHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZodHVwLT50X2N0aWQpICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZv cjsKKwkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0 aWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0 aGUgc3Vydml2aW5nIHRhaWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsK KwkJfQorCisJCWlmICgrK2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZz ZXROdW1iZXI7IC8qIGRlZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKwor CXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lm aWVkIGxpbmUgcG9pbnRlciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBv aW50ZXIuCiAgKgpAQCAtMTUxOCw2ICsxNjY5LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zm c2V0TnVtYmVyIG1heG9mZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZu dW0gPiBtYXhvZmYpCiAJCQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50 bHkgdGhyb3VnaCBhIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJ CSAqIGFuIGVhcmxpZXIgc3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxh Y2VkIGEgZGVhZAorCQkgKiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFk eSByZWNvcmRlZCAoYXMgdW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBp cyBub3QgaXRzZWxmIGEgY2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndh cmQgbGluayByYXRoZXIgdGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJl bG93LgorCQkgKi8KKwkJeworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IG9mZm51bSk7CisKKwkJCWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhl YXBUdXBsZUhlYWRlciBzaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIHNscCk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWlu L3htYXggbGlua2FnZSBjYW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAg VHJ1c3QgdGhlIHN0dWIncyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHBy aW9yLXhtYXggY2hlY2sgZm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAo b3RoZXJ3aXNlIHRoZSBjaGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZwor CQkJCQkgKiBpdHMgdGFpbCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVk U3R1YkdldEZvcndhcmQoc2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYg aXRlbSBpcyBhbHJlYWR5IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2Ft ZSBjaGFpbiAqLwogCQlpZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVh azsKQEAgLTE2MjQsMTMgKzE4MDUsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1i ZXIgbWF4b2ZmLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRp cmVjdGVkKHJvb3RscCkgJiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5k IGEgcmVkaXJlY3QgaXRlbSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ct b24KLQkJICogaXRlbS4gIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVh ZCBzdWNjZXNzb3Igb2YgYSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0 aGUgcmVkaXJlY3QgaXRlbS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkg KiByZWRpcmVjdCBpdGVtIHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBj YWxsZXIKLQkJICogaW5kaWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBh c3QgdGhlIHJlZGlyZWN0OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBw cm9jZXNzZWQgYnkgYSBzaWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVj dHMKKwkJICogb2YgYSBjb2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBz YW1lIGxpdmUgdHVwbGUpIG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxh cHNlZCBmdXJ0aGVyLiAgUmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hh aW4ncyBjdXJyZW50IGZpcnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhh dAorCQkgKiByZXNvbHZlcyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVw bGUuICBJZiBubyBzdXJ2aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFu Z2xpbmcgYW5kIGlzIHJlY2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlm IHRoZSBjYWxsZXIgYWxsb3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQg PSBJdGVtSWRHZXRSZWRpcmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhl YXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9m ZnNldE51bWJlcklzVmFsaWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwg cm9vdG9mZm51bSk7CisJCQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Qo cHJzdGF0ZSwgcm9vdG9mZm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisK IAkJaGVhcF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51 bSwgZmFsc2UpOwogCQlyZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTg1MSwxNDMgQEAgcHJv Y2Vzc19jaGFpbjoKIAllbHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8q Ci0JCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBw b2ludGVyIExQX0RFQUQsIGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxl cyBpbiB0aGUgY2hhaW4uCisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxp dmUgdHVwbGUgcmVtYWlucyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290 IExQX0RFQUQgKG9yIExQX1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJ CSAqIHJlY2xhaW0gZWFjaCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgbWVtYmVyIG1heQorCQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2lu dGluZyBhdCBpdDogbWFyayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5l ZCBhZ2FpbnN0IHJldXNlIGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJ ICogbGV0dGluZyBhbWJ1bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFj dXVtIHJlY2xhaW0gdGhlCisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJl cnMgY2Fycnkgbm8gbGVhZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRv IExQX1VOVVNFRC4KIAkJICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2Vk KHByc3RhdGUsIHJvb3RvZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3Ig KGludCBpID0gMTsgaSA8IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51 c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9w cnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkK KwkJCQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0 ZW1zW2ldLCB0cnVlKTsKKwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQo cHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJ LyoKLQkJICogV2UgZm91bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0 IHRoZSByb290IGxpbmUgcG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVw bGUsIGFuZCBtYXJrIGFzIHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRo YXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hh aW4gaGFzIGEgZGVhZCBwcmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENv bGxhcHNlCisJCSAqIGl0IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhl IHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUg Yml0bWFwLW92ZXJsYXAgcmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1l bWJlcnMgZnJvbSB0aGUgbGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJ ICogbGF0ZXJhdHRycyB0aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMg b2YgdGhlIG1lbWJlcnMKKwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAg QSBkZWFkIGtleSB0dXBsZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5k ZXggZW50cmllcyBiZWNhdXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1 dGUgYXQgaXRzIGhvcCAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkg LS0gaXMKKwkJICogZGlzcG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBl dmVyeSBhdHRyaWJ1dGUgaXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVy IGhvcAorCQkgKiAoaXRzIGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZl cnkgaW5kZXggZW50cnkgcG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28g bm8gbGl2ZSBlbnRyeSByZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFE KSwgd2hpY2ggbGV0cyB0aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1z dGFsZQorCQkgKiBsZWF2ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50 ZXIuICBUaGlzIGxvc2VzIG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRl cnMgLS0gaXRzIGF0dHJpYnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUg c3Vydml2aW5nIGxhdGVyIG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkg KgorCQkgKiAtIE90aGVyd2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hh bmdlZCBhZ2Fpbiwgc28gYSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDog a2VlcCBpdCBhcyBhbiB4aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5l eHQgc3Vydml2b3IsIHByZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFk IHBhdGguCisJCSAqCisJCSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkg b2YgdGhlaXIgb3duIGFuZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vy dml2b3JzIGZvcndhcmQgcGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkg KiB0byB0aGUgZmlyc3Qgc3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUg cGFnZSBzdGF5cworCQkgKiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRv IHRoZSBuZXh0IHN1cnZpdm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRl ciBjcm9zc2luZyB0aGUgY29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZp dmluZyBob3AncyBiaXRtYXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxh dGVyCisJCSAqIGNvbGxhcHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGlu ZyBleGlzdGluZyBzdHVicy4KIAkJICovCi0JCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0 KHByc3RhdGUsIHJvb3RvZmZudW0sIGNoYWluaXRlbXNbbmRlYWRjaGFpbl0sCi0JCQkJCQkJ CSAgIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwotCQlmb3IgKGludCBpID0gMTsgaSA8IG5k ZWFkY2hhaW47IGkrKykKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZChwcnN0YXRlLCBj aGFpbml0ZW1zW2ldLCB0cnVlKTsKKwkJT2Zmc2V0TnVtYmVyIGZpcnN0X2xpdmUgPSBjaGFp bml0ZW1zW25kZWFkY2hhaW5dOworCQlPZmZzZXROdW1iZXIgbmV4dF9zdXJ2aXZvciA9IGZp cnN0X2xpdmU7CisJCU9mZnNldE51bWJlciByb290X3RhcmdldDsKKwkJaW50CQkJcmVsbmF0 dHMgPSBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhwcnN0YXRlLT5yZWxhdGlvbik7 CisJCXVpbnQ4CQlsYXRlcmF0dHJzWyhNYXhIZWFwQXR0cmlidXRlTnVtYmVyICsgNykgLyA4 XTsKKworCQkvKgorCQkgKiBsYXRlcmF0dHJzIGFjY3VtdWxhdGVzIGV2ZXJ5IHN1cnZpdmlu ZyBob3AncyBtb2RpZmllZCBhdHRyaWJ1dGVzLgorCQkgKiBTaXplIGl0IGZvciB0aGUgcmVs YXRpb24ncyBjdXJyZW50IG5hdHRzICh0aGUgbWF4aW11bSk7IGVhY2gKKwkJICogY29udHJp YnV0aW5nIHR1cGxlJ3MgYml0bWFwIGlzIGxvY2F0ZWQgYW5kIE9SLWVkIHVzaW5nIHRoYXQg dHVwbGUncworCQkgKiB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRleGVkVHVwbGVCaXRtYXBO YXR0cyksIHNpbmNlIEFERCBDT0xVTU4gbWF5CisJCSAqIGhhdmUgZ3Jvd24gdGhlIHJlbGF0 aW9uIHNpbmNlIHNvbWUgaG9wcyB3ZXJlIHdyaXR0ZW4uCisJCSAqLworCQltZW1zZXQobGF0 ZXJhdHRycywgMCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAo aW50IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJ bHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxl SGVhZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7 CisKKwkJCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkg IT0gMCkKKwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaHR1cCk7CisKKwkJCQkvKgorCQkJCSAqIEEgaG9wJ3Mgd3JpdGUtdGltZSBuYXR0 cyBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2VlZCB0aGUKKwkJCQkgKiByZWxhdGlvbidz IGN1cnJlbnQgbmF0dHMgKG5hdHRzIG9ubHkgZ3Jvd3MgdmlhIEFERCBDT0xVTU4pLgorCQkJ CSAqIE9uIGEgY29ycnVwdCBwYWdlIGEgc3R1YidzIHVuYm91bmRlZCBzdGFzaGVkIG5hdHRz IChvciBhCisJCQkJICogY29ycnVwdCBsaXZlIHR1cGxlJ3MgbmF0dHMgZmllbGQpIGNvdWxk IG90aGVyd2lzZSBvdmVyZmxvdworCQkJCSAqIGxhdGVyYXR0cnMsIHdoaWNoIGlzIHNpemVk IGZvciByZWxuYXR0czsgY2xhbXAgZGVmZW5zaXZlbHkuCisJCQkJICovCisJCQkJQXNzZXJ0 KGJtbmF0dHMgPD0gcmVsbmF0dHMpOworCQkJCWlmIChibW5hdHRzID4gcmVsbmF0dHMpCisJ CQkJCWJtbmF0dHMgPSByZWxuYXR0czsKKworCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihs YXRlcmF0dHJzLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1 cCwKKwkJCQkJCQkJCQkJCQkJCSAgSXRlbUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJ CQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkgIGJtbmF0dHMpOworCQkJfQorCQl9CisKKwkJ LyogZGVhZCBwcmVmaXg6IHJlY2xhaW0gc3VwZXJzZWRlZCBtZW1iZXJzLCBzdHViIHRoZSBy ZXN0ICovCisJCWZvciAoaW50IGkgPSBuZGVhZGNoYWluIC0gMTsgaSA+PSAxOyBpLS0pCisJ CXsKKwkJCWlmIChoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkKHBhZ2Us IGNoYWluaXRlbXNbaV0pKQorCQkJeworCQkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJCUhlYXBUdXBsZUhlYWRlciBodHVwID0gKEhl YXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCQkJCWludAkJCWJtbmF0 dHMgPSBIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyhodHVwKTsKKwkJCQljb25zdCB1aW50 OCAqYXR0cnM7CisKKwkJCQkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUgbGF0ZXJhdHRycycg Zmlyc3QgdXNlLiAqLworCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQlp ZiAoYm1uYXR0cyA+IHJlbG5hdHRzKQorCQkJCQlibW5hdHRzID0gcmVsbmF0dHM7CisJCQkJ YXR0cnMgPSBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1cCwKKwkJCQkJCQkJCQkJ CQkgSXRlbUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJ CQlpZiAoSG90SW5kZXhlZEJpdG1hcElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5h dHRzKSkKKwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwg Y2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfc3R1YihwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsK KwkJCQkJbmV4dF9zdXJ2aXZvciA9IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdElu ZGV4ZWRCaXRtYXBVbmlvbihsYXRlcmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJ CQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRl bXNbaV0sIHRydWUpOworCQl9CisKKwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOwor CisJCS8qCisJCSAqIHJvb3QgLT4gZmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQg bm8tb3AgcmVkaXJlY3Qgb24KKwkJICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlk SXNSZWRpcmVjdGVkKHJvb3RscCkgJiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkg PT0gcm9vdF90YXJnZXQpCisJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVk aXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVj b3JkX3JlZGlyZWN0KHByc3RhdGUsIHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJ CQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVw bGVzIGluIHRoZSBjaGFpbiBhcmUgbm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZv ciAoaW50IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzIw MzIsMzQgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKIAkgKiBzZXBhcmF0ZWx5IGFzIGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8q CisJICogSWYgdGhlIHJlZGlyZWN0IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRh dGVkIGxpdmUgdHVwbGUsIHRoZQorCSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0 cmVlIGVudHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRv IGEgdHVwbGUgd2l0aCBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRl cmVkIGJ5CisJICogdGhlIHJlYWQgcGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwg d2hpY2ggcmVxdWlyZXMgZmV0Y2hpbmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4g aW5kZXgtb25seSBzY2FuIHRydXN0cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJ ICogdGhhdCBmZXRjaC4gIFNvCisJICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQg YWxsLXZpc2libGUvYWxsLWZyb3plbiB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlz dHM7IGl0IGJlY29tZXMgZWxpZ2libGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dl cHQKKwkgKiB0aGUgc3RhbGUgbGVhdmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0Lgor CSAqLworCWlmIChyZG9mZm51bSA+PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51 bSA8PSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRl bUlkCQl0bHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKwor CQlpZiAoSXRlbUlkSXNOb3JtYWwodGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRo dHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxw KTsKKworCQkJaWYgKCh0aHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRF RCkgIT0gMCkKKwkJCXsKKwkJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsK KwkJCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQor CiAJQXNzZXJ0KHByc3RhdGUtPm5yZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2Up OwogCXByc3RhdGUtPnJlZGlyZWN0ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9m Zm51bTsKIAlwcnN0YXRlLT5yZWRpcmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiAr IDFdID0gcmRvZmZudW07CkBAIC0xNzM1LDYgKzIwNzcsNjUgQEAgaGVhcF9wcnVuZV9yZWNv cmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0 cnVlOwogfQogCisvKgorICogUmVjb3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRl biBpbiBwbGFjZSBhcyBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1z dXJ2aXZvciBzdHViIGZvcndhcmRpbmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3Vy Y2UgbXVzdCBiZSBhIGRlYWQgaGVhcC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3du IGJ0cmVlCisgKiBlbnRyaWVzIChhIGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNs YWltZWQgb3V0cmlnaHQ6IGEgc3RhbGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRo cm91Z2ggaXQuICBSZXdyaXRpbmcgaXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRo ZQorICogZm9yd2FyZCBsaW5rIGFuZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0 cnMgYml0bWFwIChzbyB0aGUgcmVhZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3 aGlsZSBkcm9wcGluZyBpdHMgWElEcywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6 ZS1zYWZlLgorICovCitzdGF0aWMgdm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVu ZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXRO dW1iZXIgZm9yd2FyZCkKK3sKKwlBc3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1d KTsKKwlwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFz IHdpdGggYSByZWRpcmVjdCB0byBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0 aGUgcGFnZSBtdXN0CisJICogbm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96 ZW4gd2hpbGUgYSBzdHViIGV4aXN0czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQg b3RoZXJ3aXNlIHRydXN0IHRoZSBWTSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICog ZmlsdGVycyBhIG5vdy1zdGFsZSBlbnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4g IEEgc3R1YidzCisJICogSEVBUF9YTUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2li bGUgdG8gZXZlcnkgc25hcHNob3QsIHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBt dXN0IG5ldmVyIGNvbnRhaW4uICBFbGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJ ICogcmVjbGFpbXMgdGhlIHN0dWIuCisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxl ID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2Vy dChwcnN0YXRlLT5uc3R1YnMgPCBNYXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+ c3R1YnNbcHJzdGF0ZS0+bnN0dWJzICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNb cHJzdGF0ZS0+bnN0dWJzICogMiArIDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMr KzsKKworCS8qIFRoZSBkZWFkIGtleSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2Fy ZGVkOyBjb3VudCBpdCByZW1vdmVkLiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlw cnN0YXRlLT5oYXN0dXAgPSB0cnVlOworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5n IGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4K KyAqCisgKiBFbmNvdW50ZXJlZCB3aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFk eSBob2xkcyBzdHVicyBmcm9tIGFuIGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIg aXMgcHJlc2VydmVkIChpdHMgYml0bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBh cworICogYSByZWFzb24gdGhlIHBhZ2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxl L2FsbC1mcm96ZW4uCisgKi8KK3N0YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNo YW5nZWRfbHBfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVt KQoreworCUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUt PnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwor CisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2Fs bF9mcm96ZW4gPSBmYWxzZTsKK30KKwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBt YXJrZWQgZGVhZCAqLwogc3RhdGljIHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjIx Nyw1MiBAQCBoZWFwX3BydW5lX3JlY29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyIG9mZm51bSwgYm9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRl ZCsrOwogfQogCisKKy8qCisgKiBoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRl eGVkCisgKgkJVHJ1ZSBpZmYgdGhlIExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxp dmUgSE9ULWluZGV4ZWQgKEhPVC9TSVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQ IG11c3QgYmUgcHJlc2VydmVkIHJhdGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VO VVNFRCwgYmVjYXVzZSBhIG5vdC15ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBv aW50IGF0IGl0LgorICoKKyAqIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBp bmRleCBlbnRyeSBwb2ludGluZyBhdCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBU SUQuICBDbGFzc2ljIEhPVCdzIGludmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBu bworICogZXh0ZXJuYWwgcmVmZXJlbmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Ig c3VjaCB0dXBsZXM6IHVudGlsCisgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBp bmRleCBlbnRyeSwgYSByZWFkZXIgYXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZp bmQgYSB3YWxrYWJsZSBob3AgYXQgdGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMg ZGVhZCBtZW1iZXJzCisgKiB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5 IHRoaXMgcmVhc29uOyBhIGxpdmUgbWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2lt cGx5IG5vdCBiZSByZWNsYWltZWQgb3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAq CisgKiBFeGNsdWRlZCBmcm9tIHByZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFy ZSBub3QgTFBfTk9STUFMIChSRURJUkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBs ZXMgd2l0aG91dCBIRUFQX0lOREVYRURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVt YmVycyBuZXZlcgorICogICAgIGhhZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVk KTsKKyAqICAgLSB0dXBsZXMgd2l0aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBh IHJlYWwgY2hhaW4gbWVtYmVyKTsKKyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMg KEhFQVBfWE1JTl9JTlZBTElEKTogbmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAg IGluZGV4IGVudHJ5LCBzbyByZWNsYWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGlj IGJvb2wKK2hlYXBfcHJ1bmVfaXRlbV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZm51bSk7CisJSGVhcFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1J ZElzTm9ybWFsKGxwKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFz azIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlm IChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7 CisJaWYgKChodHVwLT50X2luZm9tYXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJ CXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29y ZCBhbiB1bnVzZWQgbGluZSBwb2ludGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8K QEAgLTIwNDksOCArMjQ5Niw0NCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBf cmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAq LwogCUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnBy b2Nlc3NlZFtvZmZudW1dID0gdHJ1ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3Q6IGlmIHRoaXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhP VC1zZWxlY3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBz dGFsZSBidHJlZQorCSAqIGVudHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0 IG11c3Qgbm90IGJlIHJlcG9ydGVkCisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4g aW5kZXgtb25seSBzY2FuIHdvdWxkIG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjaGVjaykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBu b3Qgb25seSB3aGVuIHRoZQorCSAqIHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1 c2UgYSByZS1wcnVuZSByZWNvcmRzIGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFz IHVuY2hhbmdlZC4KKwkgKi8KKwl7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBy c3RhdGUtPnBhZ2UsIG9mZm51bSk7CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkp CisJCXsKKwkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxw KTsKKworCQkJaWYgKHJkb2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRv ZmZudW0gPD0gUGFnZUdldE1heE9mZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsK KwkJCQlJdGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZu dW0pOworCisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFw VHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0 YXRlLT5wYWdlLCB0bHApOworCisJCQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVB UF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9h bGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBm YWxzZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVy Zm9ybSB0aGUgYWN0dWFsIHBhZ2UgY2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoKS4KICAqCkBAIC0yMDY1LDE2ICsyNTQ4LDI3IEBAIHZvaWQKIGhlYXBf cGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25s eSwKIAkJCQkJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAog CQkJCQkJT2Zmc2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXRO dW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5v d3VudXNlZCwgaW50IG51bnVzZWQsCisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQg bnN0dWJzKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zm c2V0TnVtYmVyICpvZmZudW07CiAJSGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1Jf QVNTRVJUU19PTkxZOwogCiAJLyogU2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUn cyBzb21ldGhpbmcgdG8gZG8gKi8KLQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFk ID4gMCB8fCBudW51c2VkID4gMCk7CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVh ZCA+IDAgfHwgbnVudXNlZCA+IDAgfHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1 bmNhdGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2lu dGVycyAqLworCS8qCisJICogSWYgJ2xwX3RydW5jYXRlX29ubHknLCB3ZSBjYW4gb25seSBy ZW1vdmUgYWxyZWFkeS1kZWFkIGxpbmUgcG9pbnRlcnMKKwkgKiBhbmQgY2Fubm90IHJlLXBv aW50IHJlZGlyZWN0czogcmVwb2ludGluZyBtb3ZlcyB0aGUgdHVwbGUgYW4gaW5kZXgtb25s eQorCSAqIHNjYW4gb3IgYSBjb25jdXJyZW50IGNoYWluIHdhbGsgZXhwZWN0cyB0byBmaW5k LCB3aGljaCBuZWVkcyBhIGNsZWFudXAKKwkgKiBsb2NrIChzZWUgdGhlIGZpbGUgaGVhZGVy IGNvbW1lbnQpLiAgTm8gcHJvZHVjZXIgaW4gdGhpcyBzZXJpZXMgY2FsbHMKKwkgKiB3aXRo IGxwX3RydW5jYXRlX29ubHkgc2V0IGFuZCBhIG5vbnplcm8gbnJlZGlyZWN0ZWQgLS0gdmFj dXVtJ3Mgc2Vjb25kCisJICogcGFzcyAodGhlIGxwX3RydW5jYXRlX29ubHkgY2FsbGVyKSBu ZXZlciByZS1wb2ludHMgYSByZWRpcmVjdCBpdHNlbGYsCisJICogbGVhdmluZyB0aGF0IHRv IGEgbGF0ZXIgcHJ1bmUgdGhhdCBob2xkcyBhIGNsZWFudXAgbG9jayAtLSBzbyBrZWVwCisJ ICogdXBzdHJlYW0ncyBzdHJpY3RlciBhc3NlcnRpb24gcmF0aGVyIHRoYW4gdGhlIHdlYWtl ciBvbmUgdGhpcyB3b3VsZAorCSAqIG90aGVyd2lzZSBuZWVkIHRvIGp1c3RpZnkuCisJICov CiAJQXNzZXJ0KCFscF90cnVuY2F0ZV9vbmx5IHx8IChucmVkaXJlY3RlZCA9PSAwICYmIG5k ZWFkID09IDApKTsKIAogCS8qIFVwZGF0ZSBhbGwgcmVkaXJlY3RlZCBsaW5lIHBvaW50ZXJz ICovCkBAIC0yMDg2LDYgKzI1ODAsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVm ZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZyb21scCA9 IFBhZ2VHZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVkaXJlY3Qg KHRoZSBMUCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBoYXJtbGVz cyBuby1vcC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0aGF0IHdh cworCQkgKiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSByb290IHN0 aWxsIHJlc29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBzbyB0aGUg YXBwbHkgc3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5kIHJlcGxh eS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJdGVtSWRH ZXRSZWRpcmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjYwNCwxNiBAQCBoZWFw X3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29u bHksCiAJCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1JZElzTm9y bWFsKGZyb21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0 ZW0ocGFnZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25s eShodHVwKSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlzIG5vcm1h bGx5IHRoZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9TSVUgY2hh aW4gY29sbGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25seQorCQkJ ICogbWVtYmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRvIHRoZSBs aXZlIHR1cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNlIGlzIGFs bG93ZWQgd2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhFQVBf SU5ERVhFRF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJ c0hlYXBPbmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9J TkRFWEVEX1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEyOCwxMiAr MjY0MSw1NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29s IGxwX3RydW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvb2Zm KTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNOb3JtYWwo dG9scCkpOwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwg dG9scCk7CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2aW5nIG1l bWJlcjogYSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJ c0hlYXBPbmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0KGZyb21s cCwgdG9vZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2aXZvciBz dHVicyBpbiBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAqIG5hbWVz IGEgZGVhZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUgZm9yd2Fy ZGluZyBzdHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlOX0lOVkFM SUR8SEVBUF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVEX1VQREFU RUQgd2l0aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMgYQorCSAq IHN0dWIgcmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBzbyBpdCBy ZW1haW5zIGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5kIHRfY3Rp ZC5vZmZudW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRlbSdzIHN0 b3JhZ2UgKGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpbiB0 aGUKKwkgKiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhlIGJpdG1h cCBzdXJ2aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4KKwkgKi8K KwlvZmZudW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsgaSsrKQor CXsKKwkJT2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVtYmVyIGZv cndhcmQgPSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IG9mZik7CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9uYXR0czsK KworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBUdXBsZUhl YWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNlcnZlIHRo ZSB0dXBsZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0aGUgbmF0 dHMKKwkJICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0cmFpbGlu ZyBtb2RpZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQsIGFuZCBy ZWFkZXJzIG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJICogcmVs YXRpb24ncyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVNTikuICBU aGUgc3R1YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZCBs aW5rOyB0aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwgc28gc3Rh c2ggdGhlIG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRoZQorCQkg KiBwcmltYXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24gYm90aCBw YWdlcyksIHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8KKwkJYml0 bWFwX25hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0dXAtPnRf aW5mb21hc2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElEOworCQl0 dXAtPnRfaW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVEX1VQREFU RUQ7CisJCUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Qb2ludGVy U2V0T2Zmc2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdEluZGV4ZWRT dHViU2V0Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8qIFVwZGF0 ZSBhbGwgbm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2RlYWQ7CiAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjcwNSwyMyBA QCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5j YXRlX29ubHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUgbmVjZXNz YXJ5IHdpdGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0ZW0sIHRo b3VnaC4gKEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkgKiB0aGF0 IHdvdWxkIGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikKKwkJICoK KwkJICogRXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdob3NlIGNo YWluIHJvb3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGludGVudGlv bmFsbHkgbWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBsZXMgbG9v cCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBoZWFwX3By dW5lX3JlY29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAtb25seSAo aXQgd2FzCisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBIRUFQX0lO REVYRURfVVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMgc3RpbGwg bGl2ZSwgc28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RFQUQgdW50 aWwgYW1idWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0gcmVjbGFp bXMKKwkJICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVtSWRIYXNT dG9yYWdlKGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7CiAJCQlo dHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwotCQkJQXNz ZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2VydCghSGVh cFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+dF9pbmZv bWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFwVHVwbGVI ZWFkZXJHZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTIxNzcs NyArMjc0NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJv b2wgbHBfdHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkKIAkJewot CQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBzZWNvbmQg cGFzcyAqLworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0n cyBzZWNvbmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYmICFJdGVt SWRIYXNTdG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzU1LDggQEAg aGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0 ZV9vbmx5LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVhZC4gIFRo aXMgaXMgb25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRl eGVzLiAgSWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBtYXJrX3Vu dXNlZF9ub3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtlZAotCQkJ ICogTFBfVU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJCQkgKiBM UF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBjaGFpbiBo YXMgYmVlbgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAwKQogCQkJ ewpAQCAtMjI2NCw2ICsyODMyLDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFn ZSkKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2VydChJdGVt SWRIYXNTdG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0YXJnZXRz IHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICovCiAJCUFz c2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5kaWYKQEAg LTI1NjYsNyArMzEzNiw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJv emVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBp bnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFk LAotCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQkg IE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zmc2V0TnVt YmVyICpzdHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVjOwogCVhM b2dSZWNQdHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTUyLDEwIEBAIGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9w cnVuZV9pdGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRlYWRfaXRl bXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVuZV9pdGVt cyBzdHViX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVz UGVyUGFnZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQg PiAwIHx8IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAw IHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwogCWJvb2wJ CWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAJYm9v bAkJaGVhcF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzI0MywxNiBAQCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlzaXplb2Yo T2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkKKwl7CisJ CXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJCXN0dWJf aXRlbXMubnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnN0 dWJfaXRlbXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOwor CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlYTG9nUmVn aXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZzZXROdW1i ZXIpICogbmZyb3plbik7CkBAIC0yNjkyLDggKzMyNzUsMTcgQEAgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJeGxyZWMu ZmxhZ3MgfD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0KG5yZWRp cmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVtcyBpbiAn dW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8qCisJCSAq IFdpdGhvdXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVhZHktZGVh ZCBsaW5lCisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBUaGUgbGF0 dGVyIGhhcHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNsYWltcyBh IGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAqIHRoZSBy b290IHJlZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUgdW5kZXIg YW4KKwkJICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4ncyByZWFj aGFiaWxpdHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0X2xpdmUp LCBzbyBubyBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAqIGJhc2lz IG9uIHdoaWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBwb2ludGVy cyB0bworCQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0gMCk7CiAJ fQogCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwogCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li5kYWI0YjViMWY4MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgi CisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMgYm9vbCBs YXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZv aWQgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVt YmVyIGJsa25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqZGVh ZG9mZnNldHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1idWZmZXIp OworCQkJCQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJ CQkgIGJvb2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2NoZWNrX3dy YXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGxh enlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGlu ZHJlbCwKQEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJ CQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJCSAgTlVM TCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwKTsKIAog CQkJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMjY4Niw2ICsyNjg5LDcgQEAgbGF6eV92YWN1 dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlTaXplCQlmcmVlc3BhY2U7CiAJ CU9mZnNldE51bWJlciBvZmZzZXRzW01heE9mZnNldE51bWJlcl07CiAJCWludAkJCW51bV9v ZmZzZXRzOworCQlib29sCQlnb3RfY2xlYW51cF9sb2NrOwogCiAJCXZhY3V1bV9kZWxheV9w b2ludChmYWxzZSk7CiAKQEAgLTI3MDgsMTAgKzI3MTIsMjAgQEAgbGF6eV92YWN1dW1faGVh cF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKi8KIAkJdmlzaWJpbGl0eW1hcF9waW4o dmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCi0JCS8qIFdlIG5lZWQgYSBub24t Y2xlYW51cCBleGNsdXNpdmUgbG9jayB0byBtYXJrIGRlYWRfaXRlbXMgdW51c2VkICovCi0J CUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkvKgorCQkgKiBT ZXR0aW5nIGRlYWQgaXRlbXMgdW51c2VkIG5lZWRzIG9ubHkgYW4gZXhjbHVzaXZlIGxvY2su ICBXZSBzdGlsbAorCQkgKiBwcmVmZXIgYSBjbGVhbnVwIGxvY2sgaGVyZSwgYXMgdGhlIGZp cnN0IHBhc3MgZG9lcywgYW5kIGZhbGwgYmFjayB0bworCQkgKiBhbiBleGNsdXNpdmUgbG9j ayBpZiBvbmUgaXMgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gIFRoaXMgcGFzcworCQkg KiBvbmx5IHR1cm5zIExQX0RFQUQgaXRlbXMgaW50byBMUF9VTlVTRUQ7IGl0IGRvZXMgTk9U IHJlY2xhaW0gYQorCQkgKiBjb2xsYXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4ncyBzdHVicyBv ciByZS1wb2ludCBpdHMgcmVkaXJlY3RzIC0tCisJCSAqIHRoYXQgY2hhaW4tc3RydWN0dXJl IHJld3JpdGUgKHdoaWNoIG1vdmVzIFRJRHMgY29uY3VycmVudCBzY2FucworCQkgKiBmb2xs b3csIGFuZCBzbyBuZWVkcyBhIGNsZWFudXAgbG9jaykgaXMgbGVmdCB0byBhIGxhdGVyIHBy dW5lLgorCQkgKi8KKwkJZ290X2NsZWFudXBfbG9jayA9IENvbmRpdGlvbmFsTG9ja0J1ZmZl ckZvckNsZWFudXAoYnVmKTsKKwkJaWYgKCFnb3RfY2xlYW51cF9sb2NrKQorCQkJTG9ja0J1 ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCWxhenlfdmFjdXVtX2hlYXBf cGFnZSh2YWNyZWwsIGJsa25vLCBidWYsIG9mZnNldHMsCi0JCQkJCQkJICBudW1fb2Zmc2V0 cywgdm1idWZmZXIpOworCQkJCQkJCSAgbnVtX29mZnNldHMsIHZtYnVmZmVyLCBnb3RfY2xl YW51cF9sb2NrKTsKIAogCQkvKiBOb3cgdGhhdCB3ZSd2ZSB2YWN1dW1lZCB0aGUgcGFnZSwg cmVjb3JkIGl0cyBhdmFpbGFibGUgc3BhY2UgKi8KIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKQEAgLTI3NTcsNyArMjc3MSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcmVsKExWUmVs U3RhdGUgKnZhY3JlbCkKIHN0YXRpYyB2b2lkCiBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLCBpbnQgbnVtX29mZnNldHMsCi0JCQkJ CSAgQnVmZmVyIHZtYnVmZmVyKQorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgYm9vbCBnb3Rf Y2xlYW51cF9sb2NrKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7 CiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CkBAIC0yNzgz LDcgKzI3OTcsOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBhbmQgbWFyayB0aGUg cGFnZSBhbGwtdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgY3JpdGljYWwgc2VjdGlvbiwKIAkg KiBlbmFibGluZyBib3RoIGNoYW5nZXMgdG8gYmUgZW1pdHRlZCBpbiBhIHNpbmdsZSBXQUwg cmVjb3JkLiBTaW5jZSB0aGUKIAkgKiB2aXNpYmlsaXR5IGNoZWNrcyBtYXkgcGVyZm9ybSBJ L08gYW5kIGFsbG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0IGJlCi0JICogZG9uZSBvdXRzaWRl IHRoZSBjcml0aWNhbCBzZWN0aW9uLgorCSAqIGRvbmUgb3V0c2lkZSB0aGUgY3JpdGljYWwg c2VjdGlvbi4gIEEgZGVmZXJyZWQgcmVjbGFpbSBsZWF2ZXMgYQorCSAqIG5vdC15ZXQtcmVt b3ZlZCBtZW1iZXIgb24gdGhlIHBhZ2UsIHNvIHNraXAgdGhlIGNoZWNrIHdoZW4gYW55dGhp bmcgd2FzCisJICogZGVmZXJyZWQuCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAogCQkJCQkJCQkJICAgdmFjcmVsLT52 aXN0ZXN0LCB0cnVlLApAQCAtMjgxNSwxMyArMjgzMSwxMiBAQCBsYXp5X3ZhY3V1bV9oZWFw X3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvZmYpOwogCisJCS8q IEEgcmVjbGFpbWFibGUgaXRlbSBpcyBhIGNsYXNzaWMgTFBfREVBRCBsaW5lIHBvaW50ZXIu ICovCiAJCUFzc2VydChJdGVtSWRJc0RlYWQoaXRlbWlkKSAmJiAhSXRlbUlkSGFzU3RvcmFn ZShpdGVtaWQpKTsKIAkJSXRlbUlkU2V0VW51c2VkKGl0ZW1pZCk7CiAJCXVudXNlZFtudW51 c2VkKytdID0gdG9mZjsKIAl9CiAKLQlBc3NlcnQobnVudXNlZCA+IDApOwotCiAJLyogQXR0 ZW1wdCB0byB0cnVuY2F0ZSBsaW5lIHBvaW50ZXIgYXJyYXkgbm93ICovCiAJUGFnZVRydW5j YXRlTGluZVBvaW50ZXJBcnJheShwYWdlKTsKIApAQCAtMjg1MSwxMiArMjg2NiwxMyBAQCBs YXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBi bGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB2bWZsYWdzICE9IDAgPyB2bWJ1ZmZl ciA6IEludmFsaWRCdWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncywKIAkJCQkJCQkJICBjb25m bGljdF94aWQsCi0JCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJl ZCAqLworCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVxdWlyZWQ6IHNl ZSBiZWxvdyAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkg IE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0 ZWQgKi8KIAkJCQkJCQkJICBOVUxMLCAwLAkvKiBkZWFkICovCi0JCQkJCQkJCSAgdW51c2Vk LCBudW51c2VkKTsKKwkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQsCisJCQkJCQkJCSAgTlVM TCwgMCk7IC8qIHN0dWJzICovCiAJfQogCiAJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMzY0 NywxMCArMzY2Myw0NCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAogCQkqbG9nZ2luZ19vZmZudW0gPSBvZmZudW07CiAJCWl0 ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAotCQkvKiBVbnVzZWQgb3Ig cmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QgKi8KLQkJaWYgKCFJ dGVtSWRJc1VzZWQoaXRlbWlkKSB8fCBJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJ LyogVW51c2VkIGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0LiAqLworCQlpZiAo IUl0ZW1JZElzVXNlZChpdGVtaWQpKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogUGxh aW4gcmVkaXJlY3RzIGFyZSBvZiBubyBpbnRlcmVzdCAodGhlIGNoYWluIG1lbWJlciB0aGV5 IHBvaW50IGF0CisJCSAqIGlzIGluc3BlY3RlZCBzZXBhcmF0ZWx5KSAtLSBleGNlcHQgYSBy ZWRpcmVjdCB0aGF0IGZvcndhcmRzIHRvIGEKKwkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgbGl2ZSB0dXBsZS4gIFN1Y2ggYSByZWRpcmVjdCBtYXkgc3RpbGwgYmUKKwkJICogcmVh Y2hlZCBieSBhIHN0YWxlIGluZGV4IGVudHJ5IHdob3NlIGtleSB0aGUgbGl2ZSB0dXBsZSBu byBsb25nZXIKKwkJICogaG9sZHM7IGlmIHRoZSBwYWdlIHdlcmUgbWFya2VkIGFsbC12aXNp YmxlIGFuIGluZGV4LW9ubHkgc2NhbiB3b3VsZAorCQkgKiB0cnVzdCB0aGUgVk0sIHNraXAg dGhlIGhlYXAgZmV0Y2gsIGFuZCBzdXJmYWNlIHRoYXQgc3RhbGUga2V5LgorCQkgKiBLZWVw IHRoZSBwYWdlIG5vdC1hbGwtdmlzaWJsZSB1bnRpbCB0aGUgc3RhbGUgbGVhdmVzIGFyZSBz d2VwdCBhbmQKKwkJICogdGhlIHJlZGlyZWN0IHJlY2xhaW1lZC4gIFRoaXMgbWlycm9ycyB0 aGUgZ3VhcmQgaW4KKwkJICogaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QsIGFwcGxpZWQg aGVyZSBiZWNhdXNlIFZBQ1VVTSdzIHNlY29uZAorCQkgKiBwYXNzIGNhbiBzZXQgYWxsLXZp c2libGUgYWZ0ZXIgcmVjbGFpbWluZyBvdGhlciBpdGVtcyBvbiB0aGUgcGFnZS4KKwkJICov CisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJeworCQkJT2Zmc2V0TnVt YmVyIHJkb2ZmID0gSXRlbUlkR2V0UmVkaXJlY3QoaXRlbWlkKTsKKworCQkJaWYgKHJkb2Zm ID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIHJkb2ZmIDw9IG1heG9mZikKKwkJCXsKKwkJCQlJ dGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgcmRvZmYpOworCisJCQkJaWYgKEl0 ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAg PSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0bHApOworCisJCQkJCWlm ICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJ CQkJCXsKKwkJCQkJCSphbGxfZnJvemVuID0gYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJ CWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJY29udGludWU7CisJCX0KKwogCQlJ dGVtUG9pbnRlclNldCgmKHR1cGxlLnRfc2VsZiksIGJsb2Nrbm8sIG9mZm51bSk7CiAKIAkJ LyoKQEAgLTM2NzYsNiArMzcyNiwyNCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdl dExlbmd0aChpdGVtaWQpOwogCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxp ZChyZWwpOwogCisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Ig c3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSB0aGF0IGlzCisJCSAqIG5vdCBhIHJlYWwgdHVw bGU6IGl0IGZvcndhcmRzIHRocm91Z2ggdGhlIGNoYWluIGFuZCBjYXJyaWVzIGEKKwkJICog cHJlc2VydmVkIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0aGF0IGEgcmVhZGVyIGFycml2aW5n IHZpYSBhIHN0YWxlCisJCSAqIGxlYWYgbXVzdCBzdGlsbCBjcm9zcy4gIEEgcGFnZSBob2xk aW5nIG9uZSBtdXN0IHN0YXkgbm90LWFsbC12aXNpYmxlCisJCSAqIHNvIGluZGV4LW9ubHkg c2NhbnMgaGVhcC1mZXRjaCB0aHJvdWdoIHRoZSBjaGFpbiwgZXhhY3RseSBsaWtlIHRoZQor CQkgKiByZWRpcmVjdC10by1TSVUgY2FzZSBhYm92ZS4gIEEgc3R1YidzIGhlYWRlciBpcyBm cm96ZW4taW52YWxpZAorCQkgKiAoSEVBUF9YTUlOX0lOVkFMSUQpLCBzbyB0aGUgdmlzaWJp bGl0eSBjaGVjayBiZWxvdyB3b3VsZCBhbHNvIGNsYXNzCisJCSAqIGl0IG5vdC1hbGwtdmlz aWJsZSAtLSBidXQgcmVjb2duaXplIGl0IGV4cGxpY2l0bHkgaGVyZSByYXRoZXIgdGhhbgor CQkgKiByZWx5aW5nIG9uIHRoYXQgc2lkZSBlZmZlY3QsIHNvIHRoZSBndWFyZCBjYW5ub3Qg c2lsZW50bHkgbGFwc2UgaWYKKwkJICogdGhlIHN0dWIgZW5jb2RpbmcgZXZlciBjaGFuZ2Vz LgorCQkgKi8KKwkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIodHVwbGUudF9kYXRhKSkK KwkJeworCQkJKmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJYnJlYWs7 CisJCX0KKwogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUg bWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwogCQlzd2l0Y2gg KEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oJnR1cGxlLCBidWYsICZkZWFkX2Fm dGVyKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggNzVh ZTZmOWQzNzUuLjk3ZjkyNWRmMTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwpAQCAtMTA4LDcgKzEwOCw4IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9w cnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRp cmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpu ZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNl ZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkKQorCQkJCQkJCQkJICAgaW50ICpudW51c2Vk LCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkgICBpbnQgKm5zdHVicywg T2Zmc2V0TnVtYmVyICoqc3R1YnMpCiB7CiAJaWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpF X1BMQU5TKQogCXsKQEAgLTE3OCw2ICsxNzksMjMgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXpl X3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCSpub3d1 bnVzZWQgPSBOVUxMOwogCX0KIAorCWlmIChmbGFncyAmIFhMSFBfSEFTX0hPVF9JTkRFWEVE X1NUVUJTKQorCXsKKwkJeGxocF9wcnVuZV9pdGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1 bmVfaXRlbXMgKikgY3Vyc29yOworCisJCSpuc3R1YnMgPSBzdWJyZWNvcmQtPm50YXJnZXRz OworCQlBc3NlcnQoKm5zdHVicyA+IDApOworCQkqc3R1YnMgPSAmc3VicmVjb3JkLT5kYXRh WzBdOworCisJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsK KwkJY3Vyc29yICs9IHNpemVvZihPZmZzZXROdW1iZXJbMl0pICogKm5zdHViczsKKwl9CisJ ZWxzZQorCXsKKwkJKm5zdHVicyA9IDA7CisJCSpzdHVicyA9IE5VTEw7CisJfQorCiAJKmZy el9vZmZzZXRzID0gKE9mZnNldE51bWJlciAqKSBjdXJzb3I7CiB9CiAKQEAgLTMwNSw2ICsz MjMsOCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJCWludAkJCW5yZWRpcmVjdGVkOwogCQkJaW50CQkJbnVudXNlZDsKIAkJCWlu dAkJCW5kZWFkOworCQkJaW50CQkJbnN0dWJzOworCQkJT2Zmc2V0TnVtYmVyICpzdHViczsK IAkJCWludAkJCW5wbGFuczsKIAkJCXhsaHBfZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zm c2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKQEAgLTMxNSwxMCArMzM1LDExIEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJ CQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAm bnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93 ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJ CQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkLAorCQkJCQkJCQkJCQkJICAgJm5zdHVicywg JnN0dWJzKTsKIAotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5y ZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSIsCi0JCQkJCQkJIG5wbGFu cywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2VkKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiLCBucGxhbnM6ICV1LCBucmVkaXJlY3RlZDogJXUsIG5kZWFkOiAldSwgbnVudXNl ZDogJXUsIG5zdHViczogJXUiLAorCQkJCQkJCSBucGxhbnMsIG5yZWRpcmVjdGVkLCBuZGVh ZCwgbnVudXNlZCwgbnN0dWJzKTsKIAogCQkJaWYgKG5wbGFucyA+IDApCiAJCQl7CkBAIC0z NDcsNiArMzY4LDEzIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCQkJCWFycmF5X2Rlc2MoYnVmLCBub3d1bnVzZWQsIHNpemVvZihP ZmZzZXROdW1iZXIpLCBudW51c2VkLAogCQkJCQkJICAgJm9mZnNldF9lbGVtX2Rlc2MsIE5V TEwpOwogCQkJfQorCisJCQlpZiAobnN0dWJzID4gMCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIiwgc3R1YnM6Iik7CisJCQkJYXJyYXlfZGVzYyhidWYsIHN0 dWJzLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIDIsCisJCQkJCQkgICBuc3R1YnMsICZyZWRp cmVjdF9lbGVtX2Rlc2MsIE5VTEwpOworCQkJfQogCQl9CiAJfQogCWVsc2UgaWYgKGluZm8g PT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMjM2 NzZhZTcxZTkuLjY0YWU5NzMzMTAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00OTAsNyAr NDkwLDggQEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVj dXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9m ZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJT2Zm c2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIg Km5vd3VudXNlZCwgaW50IG51bnVzZWQpOworCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1 bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpzdHVicywgaW50 IG5zdHVicyk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2Us IE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKQEAgLTUwMCw3ICs1MDEs OCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZy b3plbiwgaW50IG5mcm96ZW4sCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3Rl ZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGlu dCBuZGVhZCwKLQkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2Vk KTsKKwkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkLAorCQkJ CQkJCQkJICBPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKTsKIAogLyogaW4gaGVh cC9oZWFwYW0uYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt X3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3 ZDgyMWM4Li44OTk3YTUwNTAwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAg LTI3Myw2ICsyNzMsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqCQl1 aW50MTYJCQkJbnVudXNlZAogICoJCU9mZnNldE51bWJlcgkJbm93dW51c2VkW251bnVzZWRd CiAgKgorICoJeGxocF9wcnVuZV9pdGVtcworICoJCXVpbnQxNgkJCQluc3R1YnMKKyAqCQlP ZmZzZXROdW1iZXIJCXN0dWJzWzIgKiBuc3R1YnNdCisgKgogICoJT2Zmc2V0TnVtYmVyCQkJ ZnJ6X29mZnNldHNbc3VtKFtwbGFuLm50dXBsZXMgZm9yIHBsYW4gaW4gcGxhbnNdKV0KICAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCkBAIC0zNDEsNiArMzQ1LDE4IEBAIHR5cGVk ZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICNkZWZpbmUJCVhMSFBfVk1fQUxMX1ZJU0lCTEUJ CQkoMSA8PCA4KQogI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVOCQkJKDEgPDwgOSkKIAor LyoKKyAqIEluZGljYXRlcyB0aGF0IGFuIHhsaHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZCB3 aXRoIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHVi cyBpcyBwcmVzZW50LiAgRWFjaCBwYWlyIChvZmZzZXQsIGZvcndhcmQpIG5hbWVzIGEKKyAq IGxpbmUgcG9pbnRlciB0byBiZSByZXdyaXR0ZW4gaW4gcGxhY2UgaW50byBhbiB4aWQtZnJl ZSBmb3J3YXJkaW5nIHN0dWIKKyAqIChIRUFQX1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5W QUxJRCwgSEVBUF9PTkxZX1RVUExFfEhFQVBfSU5ERVhFRF9VUERBVEVELAorICogbmF0dHM9 PTApIHdob3NlIHRfY3RpZC5vZmZudW0gaXMgc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4g IFRoZSBzdHViJ3MKKyAqIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpcyBhbHJlYWR5IHByZXNl bnQgaW4gdGhlIGl0ZW0gb24gdGhlIHBhZ2UgKGl0IGlzIHRoZQorICogcHJlLXBydW5lIHR1 cGxlJ3MgaW5saW5lIGJpdG1hcCwgbGVmdCB1bmRpc3R1cmJlZCksIHNvIGl0IGlzIG5vdCBj YXJyaWVkIGluCisgKiB0aGUgV0FMLgorICovCisjZGVmaW5lCQlYTEhQX0hBU19IT1RfSU5E RVhFRF9TVFVCUwkoMSA8PCAxMCkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3Jp YmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwog ICogKGFwcGVhcnMgaW4geGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1y ZWNvcmQpCkBAIC00OTQsNiArNTEwLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2Vy aWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJ CQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJ CSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJ CQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZzZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJ CQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQpOworCQkJ CQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJ CQkJCQkJCQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0TnVtYmVyICoqc3R1YnMpOwogCiAj ZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwotLSAKMi41MC4xCgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA3MzBkMzYwYjY0NTA5OTRiZTkxZGY5NmE2Mjk0Y2ZiN2M5OWI2YThjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDYv OV0gVGVhY2ggYW1jaGVjayB0byByZWNvZ25pemUgSE9ULWluZGV4ZWQgY2hhaW5zIGFuZAog Y29sbGFwc2Ugc3R1YnMKCnZlcmlmeV9oZWFwYW0gbXVzdCBub3QgZmxhZyB0aGUgSE9ULWlu ZGV4ZWQgYXJ0aWZhY3RzIGFzIGNvcnJ1cHRpb246IGEgbGl2ZQpIRUFQX0lOREVYRURfVVBE QVRFRCBoZWFwLW9ubHkgdHVwbGUgd2hvc2UgbWlkLWNoYWluIGxpbmUgcG9pbnRlciBpcyBw cmVzZXJ2ZWQKYmVjYXVzZSBhbiBpbmRleCBlbnRyeSBzdGlsbCBwb2ludHMgYXQgaXQsIGFu IHhpZC1mcmVlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsCmFuZCBtb3JlIHRoYW4gb25lIExQ X1JFRElSRUNUIGZvcndhcmRpbmcgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSBhcmUgYWxsCmxl Z2l0aW1hdGUuICBSZWNvZ25pemUgdGhlbSBhbmQgY29udGludWUgY2hlY2tpbmcgdGhlIHJl c3Qgb2YgdGhlIGNoYWluLgoKQ292ZXIgdGhpcyB3aXRoIGFuIGFtY2hlY2sgcmVncmVzc2lv biB0ZXN0LCBhbmQgYWRkIGEgcGdfdXBncmFkZSB0ZXN0IHRoYXQKY2FycmllcyBhIHJlbGF0 aW9uIHdpdGggSE9ULWluZGV4ZWQgY2hhaW5zLCBhbiBBQkEtY3ljbGVkIGluZGV4ZWQgY29s dW1uLCBhbgpvdXQtb2YtbGluZSBpbmRleGVkIGNvbHVtbiwgYW5kIFZBQ1VVTS1jb2xsYXBz ZWQgc3R1YnMgYWNyb3NzIGFuIHVwZ3JhZGUsCnZlcmlmeWluZyB0aGUgZGF0YSwgdmVyaWZ5 X2hlYXBhbSwgYnRfaW5kZXhfY2hlY2ssIGFuZCB0aGUgY2hhaW4gc2NhbnMgb24gdGhlCm5l dyBjbHVzdGVyLgoKQXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0K IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCAgICB8ICA0MCArKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgICAgfCAgMzcg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyAgICAgICAgICAgIHwg IDg5ICsrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QtSU5ERVhFRCB8ICAxMCArKwogc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhl ZC5wbCAgICB8IDExOCArKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg Mjg1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhlZC5wbAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCBiL2NvbnRyaWIvYW1j aGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dAppbmRleCA5NzllNWU4NGU3Mi4uYjhkZWUy YmI3MWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFw Lm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKQEAg LTIzMSw2ICsyMzEsNDYgQEAgU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCd0ZXN0X2Zv cmVpZ25fdGFibGUnLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogRVJST1I6ICBjYW5u b3QgY2hlY2sgcmVsYXRpb24gInRlc3RfZm9yZWlnbl90YWJsZSIKIERFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24gdGFibGVzLgorLS0gSE9U LWluZGV4ZWQgKEhPVC9TSVUpIG9uLXBhZ2UgYXJ0aWZhY3RzOgorLS0KKy0tIEEgSE9ULWlu ZGV4ZWQgVVBEQVRFIGtlZXBzIHRoZSBuZXcgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSBhcyBh IGhlYXAtb25seQorLS0gdHVwbGUgbWFya2VkIEhFQVBfSU5ERVhFRF9VUERBVEVEIGFuZCBw bGFudHMgaW5kZXggZW50cmllcyBwb2ludGluZyBhdCBpdHMKKy0tIG93biBUSUQuICBQcnVu aW5nIGEgY2hhaW4gb2Ygc3VjaCB1cGRhdGVzIGNvbGxhcHNlcyBkZWFkIG1lbWJlcnMgdG8K Ky0tIExQX1JFRElSRUNUIGZvcndhcmRlcnMgYW5kIHByZXNlcnZlcyB0aGUgTFAgb2YgYSBs aXZlIEhPVC1pbmRleGVkIG1lbWJlcgorLS0gd2hvc2UgaW5kZXggZW50cmllcyBtYXkgbm90 IHlldCBiZSBzd2VwdC4gIHZlcmlmeV9oZWFwYW0gbXVzdCB0cmVhdCBhbGwgb2YKKy0tIHRo ZXNlIGFzIGxlZ2l0aW1hdGUuICBUaGlzIHNjZW5hcmlvIGV4ZXJjaXNlcyB0aGVtIGFuZCBh c3NlcnRzIHRoYXQKKy0tIHZlcmlmeV9oZWFwYW0gcmVwb3J0cyB6ZXJvIGNvcnJ1cHRpb24g YWdhaW5zdCBsZWdpdGltYXRlIEhPVC1pbmRleGVkCistLSBhY3Rpdml0eS4KK0NSRUFURSBU QUJMRSBob3RfaW5kZXhlZF9jaGVjayAoaWQgaW50IFBSSU1BUlkgS0VZLCBjMSBpbnQsIGMy IGludCwgYzMgaW50KQorCVdJVEggKGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVgg aG90X2luZGV4ZWRfY2hlY2tfYzEgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMxKTsKK0NSRUFU RSBJTkRFWCBob3RfaW5kZXhlZF9jaGVja19jMiBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzIp OworSU5TRVJUIElOVE8gaG90X2luZGV4ZWRfY2hlY2sKKwlTRUxFQ1QgZywgZywgZywgZyBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGc7CistLSBTaW5nbGUtc3RlcCBVUERBVEVz OiBlYWNoIHJvdyBnZXRzIG9uZSBIT1QtaW5kZXhlZCB1cGRhdGUuICBFYWNoCistLSBzdWNj ZXNzZnVsIEhPVC1pbmRleGVkIHVwZGF0ZSBrZWVwcyBpdHMgbmV3IHR1cGxlIG9uLXBhZ2Ug YW5kIGluc2VydHMgYW4KKy0tIGVudHJ5IG9ubHkgaW50byB0aGUgaW5kZXggd2hvc2UgYXR0 cmlidXRlIGNoYW5nZWQuCitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMxID0gYzEg KyAxMDAwOworLS0gTXVsdGktc3RlcCBVUERBVEVzOiBkcml2ZSBzZXZlcmFsIHN1Y2Nlc3Np dmUgSE9ULWluZGV4ZWQgdXBkYXRlcyBhZ2FpbnN0CistLSB0aGUgc2FtZSByb3dzIHNvIHBy dW5lIHNlZXMgYSBjaGFpbiBvZiBkZWFkIGludGVybWVkaWF0ZXMgYW5kIGNvbGxhcHNlcwor LS0gdGhlbSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzLiAgQW4gZXhwbGljaXQgVkFDVVVN IHJ1bnMgdGhlIHBydW5lIHBhdGgKKy0tIGFuZCBleGVyY2lzZXMgY2hhaW4gY29sbGFwc2Uu CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9 IDUwOworVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBp ZCA8PSA1MDsKK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hF UkUgaWQgPD0gNTA7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBob3RfaW5kZXhlZF9j aGVjazsKKy0tIHZlcmlmeV9oZWFwYW0gbXVzdCBub3QgcmVwb3J0IGFueSBjb3JydXB0aW9u IGFnYWluc3QgbGVnaXRpbWF0ZSBIT1QtCistLSBpbmRleGVkIGFydGlmYWN0cy4gIFNlbGVj dGluZyB0aGUgY29ycnVwdGluZyBtZXNzYWdlIG1ha2VzIGFueQorLS0gcmVncmVzc2lvbiB1 bm1pc3Rha2FibGUgaW4gdGhlIHJlZ3Jlc3MgZGlmZi4KK1NFTEVDVCBibGtubywgb2ZmbnVt LCBhdHRudW0sIG1zZworCUZST00gdmVyaWZ5X2hlYXBhbSgnaG90X2luZGV4ZWRfY2hlY2sn LAorCQkJCQkgICBzdGFydGJsb2NrIDo9IE5VTEwsCisJCQkJCSAgIGVuZGJsb2NrIDo9IE5V TEwpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJPUCBUQUJMRSBob3RfaW5kZXhlZF9j aGVjazsKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgaGVhcHRlc3Q7CiBEUk9QIFRBQkxFU1BB Q0UgcmVncmVzc190ZXN0X3N0YXRzX3RibHNwYzsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1j aGVjay9zcWwvY2hlY2tfaGVhcC5zcWwgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hl YXAuc3FsCmluZGV4IDE3NDViYWU2MzRlLi5jMGJhMjYzNTE4MCAxMDA2NDQKLS0tIGEvY29u dHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNxbAorKysgYi9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2hlYXAuc3FsCkBAIC0xMzgsNiArMTM4LDQzIEBAIFNFTEVDVCAqIEZST00g dmVyaWZ5X2hlYXBhbSgndGVzdF9mb3JlaWduX3RhYmxlJywKIAkJCQkJCQlzdGFydGJsb2Nr IDo9IE5VTEwsCiAJCQkJCQkJZW5kYmxvY2sgOj0gTlVMTCk7CiAKKy0tIEhPVC1pbmRleGVk IChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRleGVkIFVQ REFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFwLW9u bHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxhbnRzIGlu ZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmluZyBhIGNo YWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCistLSBMUF9S RURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2ZSBIT1Qt aW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5ZXQgYmUg c3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVzZSBhcyBs ZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNzZXJ0cyB0 aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFnYWluc3Qg bGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFCTEUgaG90 X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBpbnQsIGMz IGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhvdF9pbmRl eGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUgSU5ERVgg aG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsKK0lOU0VS VCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczogZWFjaCBy b3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vzc2Z1bCBI T1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFuZCBpbnNl cnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJpYnV0ZSBj aGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsgMTAwMDsK Ky0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZlIEhPVC1p bmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVuZSBzZWVz IGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0tIHRoZW0g dG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBydW5zIHRo ZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgorVVBEQVRF IGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsKK1VQ REFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7 CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9 IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hlY2s7Cist LSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBhZ2FpbnN0 IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3RpbmcgdGhl IGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5taXN0YWth YmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwgYXR0bnVt LCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywKKwkJCQkJ ICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxMKTsKK0RS T1AgVEFCTEUgaG90X2luZGV4ZWRfY2hlY2s7CisKIC0tIGNsZWFudXAKIERST1AgVEFCTEUg aGVhcHRlc3Q7CiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190ZXN0X3N0YXRzX3RibHNwYzsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgYi9jb250cmli L2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCmluZGV4IDIwZmY1OGFhNzgyLi45M2EzYmMzMThh MiAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYworKysgYi9j b250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2RldG9hc3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcHRvYXN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRl eGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vz cy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgpAQCAtNTIyLDkgKzUy MywxMiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKi8KIAkJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQoY3R4Lml0ZW1pZCkpCiAJCQl7Ci0JCQkJT2Zmc2V0TnVt YmVyIHJkb2ZmbnVtID0gSXRlbUlkR2V0UmVkaXJlY3QoY3R4Lml0ZW1pZCk7CisJCQkJT2Zm c2V0TnVtYmVyIHJkb2ZmbnVtOwogCQkJCUl0ZW1JZAkJcmRpdGVtOwogCisJCQkJLyogUmVz b2x2ZSB0aGUgcmVkaXJlY3QncyB0YXJnZXQgb2Zmc2V0LiAqLworCQkJCXJkb2ZmbnVtID0g SXRlbUlkR2V0UmVkaXJlY3QoY3R4Lml0ZW1pZCk7CisKIAkJCQlpZiAocmRvZmZudW0gPCBG aXJzdE9mZnNldE51bWJlcikKIAkJCQl7CiAJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgs CkBAIC02MTUsMTggKzYxOSw0NyBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQljdHgudHVwaGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBh Z2UsIGN0eC5pdGVtaWQpOwogCQkJY3R4Lm5hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0 dHMoY3R4LnR1cGhkcik7CiAKLQkJCS8qIE9rLCByZWFkeSB0byBjaGVjayB0aGlzIG5leHQg dHVwbGUgKi8KLQkJCWNoZWNrX3R1cGxlKCZjdHgsCi0JCQkJCQkmeG1pbl9jb21taXRfc3Rh dHVzX29rW2N0eC5vZmZudW1dLAotCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c1tjdHgub2Zm bnVtXSk7CisJCQkvKgorCQkJICogQSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGlzIGFuCisJCQkgKiBMUF9OT1JNQUwgaXRlbSB0aGF0IGlzIG5v dCBhIHJlYWwgdHVwbGU6IEhFQVBfSU5ERVhFRF9VUERBVEVECisJCQkgKiB3aXRoIG5hdHRz ID09IDAsIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlOX0lOVkFMSUQpLAorCQkJ ICogY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsgYW5kIGEgbW9kaWZpZWQtYXR0cnMgYml0bWFw LiAgVGhlCisJCQkgKiBwZXItdHVwbGUgY2hlY2tzIGFzc3VtZSBhIHJlYWwgdHVwbGUgYW5k IHdvdWxkIG1pc3JlcG9ydCBpdCwgc28KKwkJCSAqIHNraXAgdGhlbTsgdGhlIHVwZGF0ZS1j aGFpbiBwYXNzIGJlbG93IHN0aWxsIHJlY29yZHMgaXRzCisJCQkgKiBmb3J3YXJkIGVkZ2Ug YW5kIHRyZWF0cyBpdCBsaWtlIGEgcmVkaXJlY3QgKGEgZm9yd2FyZGluZyBub2RlKS4KKwkJ CSAqLworCQkJaWYgKCFIb3RJbmRleGVkSGVhZGVySXNTdHViKGN0eC50dXBoZHIpKQorCQkJ CWNoZWNrX3R1cGxlKCZjdHgsCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c19va1tjdHgu b2ZmbnVtXSwKKwkJCQkJCQkmeG1pbl9jb21taXRfc3RhdHVzW2N0eC5vZmZudW1dKTsKIAog CQkJLyoKIAkJCSAqIElmIHRoZSBDVElEIGZpZWxkIG9mIHRoaXMgdHVwbGUgc2VlbXMgdG8g cG9pbnQgdG8gYW5vdGhlciB0dXBsZQogCQkJICogb24gdGhlIHNhbWUgcGFnZSwgcmVjb3Jk IHRoYXQgdHVwbGUgYXMgdGhlIHN1Y2Nlc3NvciBvZiB0aGlzCi0JCQkgKiBvbmUuCisJCQkg KiBvbmUuICBBIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgc3RvcmVzIGl0cyBmb3J3YXJkIGxp bmsgaW4gdGhlCisJCQkgKiB0X2N0aWQgb2Zmc2V0IG9ubHkgKHRoZSBibG9jayBoYWxmIGlz IHJlcHVycG9zZWQgdG8gaG9sZCB0aGUKKwkJCSAqIHN0dWIncyB3cml0ZS10aW1lIG5hdHRz KSwgc28gcmVzb2x2ZSBpdHMgc3VjY2Vzc29yIHZpYSB0aGUgc3R1YgorCQkJICogYWNjZXNz b3I7IHRoZSBmb3J3YXJkIHRhcmdldCBpcyBhbHdheXMgb24gdGhlIHNhbWUgcGFnZS4KIAkJ CSAqLwotCQkJbmV4dGJsa25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0eC50 dXBoZHIpLT50X2N0aWQpOwotCQkJbmV4dG9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKCYoY3R4LnR1cGhkciktPnRfY3RpZCk7CisJCQlpZiAoSG90SW5kZXhlZEhlYWRl cklzU3R1YihjdHgudHVwaGRyKSkKKwkJCXsKKwkJCQluZXh0Ymxrbm8gPSBjdHguYmxrbm87 CisJCQkJbmV4dG9mZm51bSA9IEhvdEluZGV4ZWRTdHViR2V0Rm9yd2FyZChjdHgudHVwaGRy KTsKKwkJCQlpZiAobmV4dG9mZm51bSA9PSBjdHgub2ZmbnVtIHx8CisJCQkJCW5leHRvZmZu dW0gPCBGaXJzdE9mZnNldE51bWJlciB8fCBuZXh0b2ZmbnVtID4gbWF4b2ZmKQorCQkJCXsK KwkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCSAgcHNwcmludGYoIkhP VC1pbmRleGVkIHN0dWIgZm9yd2FyZCBsaW5rIHRvIGl0ZW0gYXQgb2Zmc2V0ICVkIGlzIG91 dCBvZiByYW5nZSBvciBzZWxmLXJlZmVyZW50aWFsICh2YWxpZCByYW5nZSAlZC4uJWQpIiwK KwkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwKKwkJCQkJCQkJCQkJICAgRmlyc3RPZmZzZXRO dW1iZXIsIG1heG9mZikpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJbmV4dGJsa25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0 eC50dXBoZHIpLT50X2N0aWQpOworCQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJfQogCQkJaWYgKG5leHRi bGtubyA9PSBjdHguYmxrbm8gJiYgbmV4dG9mZm51bSAhPSBjdHgub2ZmbnVtICYmCiAJCQkJ bmV4dG9mZm51bSA+PSBGaXJzdE9mZnNldE51bWJlciAmJiBuZXh0b2ZmbnVtIDw9IG1heG9m ZikKIAkJCQlzdWNjZXNzb3JbY3R4Lm9mZm51bV0gPSBuZXh0b2ZmbnVtOwpAQCAtNjc1LDcg KzcwOCw3IEBAIHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgKi8KIAkJ CQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpOwogCi0JCQkJLyogQ2FuIG9ubHkg cmVkaXJlY3QgdG8gYSBIT1QgdHVwbGUuICovCisJCQkJLyogQSByZWRpcmVjdCB0YXJnZXRz IHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLwogCQkJCW5leHRfaHR1cCA9 IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJ CQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkobmV4dF9odHVwKSkKIAkJCQl7CkBA IC02ODcsNiArNzIwLDE5IEBAIHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkvKiBIT1QgY2hhaW5zIHNob3VsZCBub3QgaW50ZXJzZWN0LiAqLwogCQkJCWlmIChwcmVk ZWNlc3NvcltuZXh0b2ZmbnVtXSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogSW4gdGhlIEhPVC9TSVUgbW9kZWwgc2V2ZXJhbCByZWRpcmVjdHMg bGVnaXRpbWF0ZWx5CisJCQkJCSAqIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZTog d2hlbiBhIGNoYWluIGNvbGxhcHNlcywKKwkJCQkJICogdGhlIHJvb3QgYW5kIGVhY2ggZW50 cnktYmVhcmluZyBkZWFkIG1lbWJlciBiZWNvbWUgYQorCQkJCQkgKiByZWRpcmVjdCB0byBm aXJzdF9saXZlIHNvIGV2ZXJ5IHN0YWxlIGJ0cmVlIGVudHJ5IHN0aWxsCisJCQkJCSAqIHJl c29sdmVzIHRoZXJlICh0aGUgcmVhZCBwYXRoIHRoZW4gcmVjaGVja3MgdGhlIGxlYWYKKwkJ CQkJICoga2V5KS4gIE11bHRpcGxlIHByZWRlY2Vzc29ycyBhcmUgdGhlcmVmb3JlIGV4cGVj dGVkCisJCQkJCSAqIHdoZW4gdGhlIHRhcmdldCBpcyBIT1Qtc2VsZWN0aXZlbHktdXBkYXRl ZDsga2VlcCB0aGUKKwkJCQkJICogZmlyc3QgcHJlZGVjZXNzb3IgYW5kIGRvIG5vdCByZXBv cnQgaXQgYXMgY29ycnVwdGlvbi4KKwkJCQkJICovCisJCQkJCWlmICgobmV4dF9odHVwLT50 X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJCQkJY29udGlu dWU7CisKIAkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKIAkJCQkJCQkJCSAgcHNwcmlu dGYoInJlZGlyZWN0IGxpbmUgcG9pbnRlciBwb2ludHMgdG8gb2Zmc2V0ICVkLCBidXQgb2Zm c2V0ICVkIGFsc28gcG9pbnRzIHRoZXJlIiwKIAkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwg cHJlZGVjZXNzb3JbbmV4dG9mZm51bV0pKTsKQEAgLTcwMSw2ICs3NDcsMzAgQEAgdmVyaWZ5 X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCisJCQkv KgorCQkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGZvcndhcmRzIGxpa2UgYSByZWRp cmVjdDogaXQgaXMgbm90IGEKKwkJCSAqIHJlYWwgdHVwbGUsIHNvIGRvbid0IGFwcGx5IHRo ZSB0dXBsZS10by10dXBsZSB1cGRhdGUtY2hhaW4KKwkJCSAqIGNoZWNrcywgYnV0IGRvIHJl Y29yZCB0aGUgcHJlZGVjZXNzb3IgZWRnZSB0byBpdHMgdGFyZ2V0IHNvIHRoZQorCQkJICog bGl2ZSB0dXBsZSBpdCB1bHRpbWF0ZWx5IGZvcndhcmRzIHRvIGlzIG5vdCBtaXN0YWtlbiBm b3IgYQorCQkJICogY2hhaW4gcm9vdC4gIEl0cyB0YXJnZXQgbXVzdCBiZSBoZWFwLW9ubHkg KGFub3RoZXIgc3R1YiBvciB0aGUKKwkJCSAqIGxpdmUgaGVhcC1vbmx5IHR1cGxlKS4KKwkJ CSAqLworCQkJY3Vycl9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4 LnBhZ2UsIGN1cnJfbHApOworCQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3Vycl9o dHVwKSkKKwkJCXsKKwkJCQlpZiAoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpCisJCQkJewor CQkJCQluZXh0X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFn ZSwgbmV4dF9scCk7CisJCQkJCWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShuZXh0 X2h0dXApKQorCQkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCQkgIHBz cHJpbnRmKCJIT1QtaW5kZXhlZCBzdHViIGZvcndhcmRzIHRvIGEgbm9uLWhlYXAtb25seSB0 dXBsZSBhdCBvZmZzZXQgJWQiLAorCQkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSkpOworCQkJ CQllbHNlIGlmIChwcmVkZWNlc3NvcltuZXh0b2ZmbnVtXSA9PSBJbnZhbGlkT2Zmc2V0TnVt YmVyKQorCQkJCQkJcHJlZGVjZXNzb3JbbmV4dG9mZm51bV0gPSBjdHgub2ZmbnVtOworCQkJ CX0KKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHRoZSBuZXh0IGxp bmUgcG9pbnRlciBpcyBhIHJlZGlyZWN0LCBvciBpZiBpdCdzIGEgdHVwbGUgYnV0CiAJCQkg KiB0aGUgWE1BWCBvZiB0aGlzIHR1cGxlIGRvZXNuJ3QgbWF0Y2ggdGhlIFhNSU4gb2YgdGhl IG5leHQKQEAgLTcwOSw3ICs3NzksNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkgKi8KIAkJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQobmV4dF9scCkpCiAJCQkJ Y29udGludWU7Ci0JCQljdXJyX2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bShjdHgucGFnZSwgY3Vycl9scCk7CiAJCQljdXJyX3htYXggPSBIZWFwVHVwbGVIZWFkZXJH ZXRVcGRhdGVYaWQoY3Vycl9odHVwKTsKIAkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFk ZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJCW5leHRfeG1pbiA9IEhl YXBUdXBsZUhlYWRlckdldFhtaW4obmV4dF9odHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCBhYjRmOGJjMTg4MS4uMWY0MWIwZmZm ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5E RVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQK QEAgLTI0NCw2ICsyNDQsMTYgQEAgc3RhbGUgZW50cmllcyAoZW5mb3JjZWQgaW4gaGVhcF9w cnVuZV9yZWNvcmRfcmVkaXJlY3QsIHRoZSBzdHViIHJlY29yZGVycywgYW5kCiBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUpLgogCiAKK2FtY2hlY2sgYW5kIHN0YXRpc3RpY3MK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordmVyaWZ5X2hlYXBhbSB0cmVhdHMgdGhlIEhP VC1pbmRleGVkIGFydGlmYWN0cyBhcyBsZWdpdGltYXRlOiBhIGxpdmUKK0hFQVBfSU5ERVhF RF9VUERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMgcHJlc2Vy dmVkLCBhbmQKK211bHRpcGxlIExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZl IHR1cGxlLgorCitTdGF0aXN0aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBfaG90X2lu ZGV4ZWRfdXBkIGNvdW50cyBIT1QtaW5kZXhlZAorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0t LS0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCmluZGV4IGZmYmY2YWU4ZDc1Li4wYTZmYTBk Y2ZmMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCB0ZXN0 cyArPSB7CiAgICAgICAndC8wMDZfdHJhbnNmZXJfbW9kZXMucGwnLAogICAgICAgJ3QvMDA3 X211bHRpeGFjdF9jb252ZXJzaW9uLnBsJywKICAgICAgICd0LzAwOF9leHRlbnNpb25fY29u dHJvbF9wYXRoLnBsJywKKyAgICAgICd0LzAwOV9ob3RfaW5kZXhlZC5wbCcsCiAgICAgXSwK ICAgICAnZGVwcyc6IFt0ZXN0X2V4dF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0 eSc6IDQwfSwgIyBwZ191cGdyYWRlIHRlc3RzIGFyZSBzbG93CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI3MTEyOWFlMDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3QvMDA5X2hvdF9pbmRleGVkLnBsCkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHly aWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor IyBwZ191cGdyYWRlIG11c3QgcHJlc2VydmUgSE9ULWluZGV4ZWQgb24tZGlzayBzdGF0ZS4g IEEgcmVsYXRpb24gdGhhdCBoYXMKKyMgYWNjdW11bGF0ZWQgSE9ULWluZGV4ZWQgY2hhaW5z IC0tIGluY2x1ZGluZyBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrCisjIChBQkEpLCBh biBvdXQtb2YtbGluZSAoVE9BU1QpIGluZGV4ZWQgY29sdW1uLCBhbmQgY2hhaW5zIGNvbGxh cHNlZCB0bworIyB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzIGJ5IFZBQ1VVTSAtLSBtdXN0 IGNvbWUgdGhyb3VnaCBhbiB1cGdyYWRlIHdpdGggaXRzCisjIGRhdGEgaW50YWN0LCBpdHMg aW5kZXhlcyBzdHJ1Y3R1cmFsbHkgc291bmQsIGFuZCBpdHMgY2hhaW5zIHN0aWxsIHNjYW5u aW5nCisjIGNvcnJlY3RseS4gIHBnX3VwZ3JhZGUgdHJhbnNmZXJzIGhlYXAgYW5kIGluZGV4 IGZpbGVzIHZlcmJhdGltLCBzbyB0aGlzIGlzCisjIHJlYWxseSBhIGNoZWNrIHRoYXQgdGhl IG5ldy1zdGF0ZSBiaXRzIChIRUFQX0lOREVYRURfVVBEQVRFRCwgY29sbGFwc2Ugc3R1YnMp CisjIGFyZSBub3QgcmVqZWN0ZWQgYnkgcGdfdXBncmFkZSdzIGNoZWNrcyBhbmQgc3RheSBj b3JyZWN0IG9uIHRoZSBuZXcgY2x1c3Rlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRtb2Rl ID0gJEVOVntQR19URVNUX1BHX1VQR1JBREVfTU9ERX0gfHwgJy0tY29weSc7CisKK215ICRv bGRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZScpOwor JG9sZG5vZGUtPmluaXQ7Ciskb2xkbm9kZS0+c3RhcnQ7CisKKyMgQnVpbGQgYSByZWxhdGlv biB3aXRoIHNldmVyYWwgc2Vjb25kYXJ5IGluZGV4ZXMgc28gc2luZ2xlLWNvbHVtbiB1cGRh dGVzCisjIHN0YXkgSE9ULWluZGV4ZWQsIHRoZW4gZXhlcmNpc2UgdGhlIGNhc2VzIHRoYXQg cHJvZHVjZSBpbnRlcmVzdGluZyBvbi1kaXNrCisjIHN0YXRlLgorJG9sZG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjazsKKwlDUkVB VEUgVEFCTEUgaGkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50LCBiaWcgdGV4 dCkKKwkgIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisJQUxURVIgVEFCTEUgaGkgQUxURVIg Q09MVU1OIGJpZyBTRVQgU1RPUkFHRSBFWFRFUk5BTDsKKwlDUkVBVEUgSU5ERVggaGlfayBP TiBoaSAoayk7CisJQ1JFQVRFIElOREVYIGhpX3YgT04gaGkgKHYpOworCUNSRUFURSBJTkRF WCBoaV9iaWcgT04gaGkgKGJpZyk7CisJSU5TRVJUIElOVE8gaGkgU0VMRUNUIGcsIGcsIGcg KiAxMCwgcmVwZWF0KGNocig2NCArIGcpLCAyMDAwKQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIGc7Cit9KTsKKworIyBJbnRlcmxlYXZlIHVwZGF0ZXMgb2YgZGlmZmVyZW50 IGluZGV4ZWQgY29sdW1ucyBvbiB0aGUgc2FtZSByb3dzLiAgQSBtZW1iZXIKKyMgdGhhdCBj aGFuZ2VkIGEgY29sdW1uIG5vdCBjaGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wIHN1cnZp dmVzIFZBQ1VVTSBhcyBhCisjIGNvbGxhcHNlIHN0dWI7IHRoZSByZXN0IGFyZSByZWNsYWlt ZWQuICBSb3cgMSBhZGRpdGlvbmFsbHkgY3ljbGVzIGsgYXdheSBhbmQKKyMgYmFjayAoQUJB KSwgYW5kIHJvdyAyIHJld3JpdGVzIGl0cyB0b2FzdGVkIGluZGV4ZWQgY29sdW1uLgorJG9s ZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSBoaSBTRVQgayA9IGsg KyAxMDAgV0hFUkUgaWQgPD0gMTA7ICAgLS0gY2hhbmdlcyBrCisJVVBEQVRFIGhpIFNFVCB2 ID0gdiArIDEgICBXSEVSRSBpZCA8PSAxMDsgICAgLS0gY2hhbmdlcyB2IChzdXJ2aXZlcyBh cyBzdHViKQorCVVQREFURSBoaSBTRVQgayA9IGsgLSAxMDAgV0hFUkUgaWQgPD0gMTA7ICAg IC0tIGsgYmFjayB0byBvcmlnaW5hbCAoQUJBKQorCVVQREFURSBoaSBTRVQgYmlnID0gcmVw ZWF0KCdaJywgMjAwMCkgV0hFUkUgaWQgPSAyOworfSk7CisjIENvbGxhcHNlIGRlYWQgY2hh aW4gbWVtYmVycyB0byBzdHVicy4KKyRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpJyk7CisKKyMgVGhlIHByZS11cGdyYWRl IHN0YXRlIG11c3QgYWxyZWFkeSBiZSBzZWxmLWNvbnNpc3RlbnQuCitpcyggJG9sZG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlm eV9oZWFwYW0oJ2hpJyl9KSwKKwknMCcsICdwcmUtdXBncmFkZSBoZWFwIGlzIGNvbnNpc3Rl bnQnKTsKKworIyBTbmFwc2hvdCB0aGUgZGF0YSB3ZSB3aWxsIGNvbXBhcmUgYWZ0ZXIgdGhl IHVwZ3JhZGUuCitteSAkZXhwZWN0ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7U0VMRUNUIGlkLCBrLCB2LCBsZW5ndGgoYmlnKSBGUk9NIGhpIE9SREVSIEJZIGlk fSk7CisKKyRvbGRub2RlLT5zdG9wOworCisjIE5ldyBjbHVzdGVyLCBzYW1lIHZlcnNpb24u CitteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25v ZGUnKTsKKyRuZXdub2RlLT5pbml0OworCitteSAkb2xkYmluZGlyID0gJG9sZG5vZGUtPmNv bmZpZ19kYXRhKCctLWJpbmRpcicpOworbXkgJG5ld2JpbmRpciA9ICRuZXdub2RlLT5jb25m aWdfZGF0YSgnLS1iaW5kaXInKTsKKworIyBSdW4gcGdfdXBncmFkZSBmcm9tIGEgd3JpdGFi bGUgZGlyZWN0b3J5IChtYXRjaGVzIDAwMl9wZ191cGdyYWRlKS4KK2NoZGlyICR7UG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja307CisKK2NvbW1hbmRfb2soCisJWworCQkn cGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZG5v ZGUtPmRhdGFfZGlyLAorCQknLS1uZXctZGF0YWRpcicgPT4gJG5ld25vZGUtPmRhdGFfZGly LAorCQknLS1vbGQtYmluZGlyJyA9PiAkb2xkYmluZGlyLAorCQknLS1uZXctYmluZGlyJyA9 PiAkbmV3YmluZGlyLAorCQknLS1zb2NrZXRkaXInID0+ICRuZXdub2RlLT5ob3N0LAorCQkn LS1vbGQtcG9ydCcgPT4gJG9sZG5vZGUtPnBvcnQsCisJCSctLW5ldy1wb3J0JyA9PiAkbmV3 bm9kZS0+cG9ydCwKKwkJJG1vZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9yIEhP VC1pbmRleGVkIHJlbGF0aW9uJyk7CisKKyRuZXdub2RlLT5zdGFydDsKKworIyBEYXRhIHN1 cnZpdmVkIGludGFjdC4KK215ICRnb3QgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtTRUxFQ1QgaWQsIGssIHYsIGxlbmd0aChiaWcpIEZST00gaGkgT1JERVIgQlkg aWR9KTsKK2lzKCRnb3QsICRleHBlY3QsICdIT1QtaW5kZXhlZCB0YWJsZSBkYXRhIHByZXNl cnZlZCBhY3Jvc3MgcGdfdXBncmFkZScpOworCisjIEhlYXAgYW5kIGluZGV4ZXMgYXJlIHN0 cnVjdHVyYWxseSBzb3VuZCBvbiB0aGUgbmV3IGNsdXN0ZXIuCitpcyggJG5ld25vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9o ZWFwYW0oJ2hpJyl9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaGVhcCBpcyBjb25zaXN0ZW50 IChjb2xsYXBzZSBzdHVicyByZWNvZ25pc2VkKScpOworaXMoICRuZXdub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VMRUNUIGNvdW50KCopIEZST00gKAorCQkJU0VMRUNU IGJ0X2luZGV4X2NoZWNrKGMub2lkKQorCQkJRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5k ZXggaSBPTiBpLmluZGV4cmVsaWQgPSBjLm9pZAorCQkJV0hFUkUgaS5pbmRyZWxpZCA9ICdo aSc6OnJlZ2NsYXNzKSBzfSksCisJJzQnLCAncG9zdC11cGdyYWRlIGluZGV4ZXMgcGFzcyBi dF9pbmRleF9jaGVjaycpOworCisjIFRoZSBBQkEgY2hhaW4gb24gcm93IDEgc3RpbGwgc2Nh bnMgY29ycmVjdGx5IHRocm91Z2ggYSBmb3JjZWQgaW5kZXggc2NhbjoKKyMgaz0xIHJldHVy bnMgZXhhY3RseSB0aGUgb25lIGxpdmUgcm93LCBhbmQgaXRzIHN1cGVyc2VkZWQgdmFsdWUg aXMgZ29uZS4KK2lzKCAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCVNF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwor CQlTRUxFQ1QgY291bnQoKikgRlJPTSBoaSBXSEVSRSBrID0gMX0pLAorCScxJywgJ3Bvc3Qt dXBncmFkZSBpbmRleCBzY2FuIHJldHVybnMgdGhlIEFCQSByb3cgb25jZScpOworaXMoICRu ZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOyBTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgq KSBGUk9NIGhpIFdIRVJFIGsgPSAxMDF9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaW5kZXgg c2NhbiBkcm9wcyB0aGUgc3VwZXJzZWRlZCB2YWx1ZScpOworCiskbmV3bm9kZS0+c3RvcDsK KworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEKCg== --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0007-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0007-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiNGIyZmNmYTJlYzY4NDgxOGIxMzI1NDlhNDY3NGM2ODE3ODhiM2JjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDcv OV0gQWRkIEhPVC1pbmRleGVkIHN0YXRpc3RpY3MgYW5kIHRoZSBjb21wcmVoZW5zaXZlIHRl c3QKIHN1aXRlCgpFeHBvc2UgdGhlIEhPVC1pbmRleGVkIGFjdGl2aXR5IGNvdW50ZXJzIG1h aW50YWluZWQgYnkgdGhlIHdyaXRlIHBhdGg6CnBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1cF9o b3RfaW5kZXhlZF91cGQsIHRoZSBwZXItaW5kZXgKbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgLyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBjb3VudGVycyBpbgpwZ19z dGF0X2FsbF9pbmRleGVzLCBhbmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSBy ZXBvcnRpbmcgcGVyLXJlbGF0aW9uCkhPVC1pbmRleGVkIGNoYWluIGNvbXBvc2l0aW9uLiAg RG9jdW1lbnQgdGhlbSBpbiBtb25pdG9yaW5nLnNnbWwgYW5kIHRoZQpSRUFETUUuCgpXaXRo IHN0YXRpc3RpY3MsIHBydW5lL2NvbGxhcHNlLCBhbmQgYW1jaGVjayByZWNvZ25pdGlvbiBh bGwgaW4gcGxhY2UsIGFkZCB0aGUKZnVsbCBmZWF0dXJlIHRlc3Qgc3VpdGUsIHdoaWNoIHVz ZXMgdGhvc2UgZmFjaWxpdGllcyB0byB2ZXJpZnkgYmVoYXZpb3I6CgotIGhvdF9pbmRleGVk X3VwZGF0ZXMgKHJlZ3Jlc3Npb24pOiBlbGlnaWJpbGl0eSBhbmQgY2xhc3NpZmljYXRpb247 IHNlbGVjdGl2ZQogIG1haW50ZW5hbmNlIGFjcm9zcyBtdWx0aXBsZS9jb21wb3NpdGUgaW5k ZXhlczsgdGhlIGNyb3NzZWQtYXR0cmlidXRlIHJlYWQKICBwYXRoIGZvciBlcXVhbGl0eSwg cmFuZ2UsIGFuZCBpbmVxdWFsaXR5IHNjYW5zOyBhIGtleSBjeWNsZWQgYXdheSBhbmQgYmFj awogIChBQkEpLCBpbmNsdWRpbmcgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M7IFRP QVNUZWQgaW5kZXhlZCBjb2x1bW5zOwogIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGZsaXBz IChrZXkgYW5kIG5vbi1rZXkgcHJlZGljYXRlIGNvbHVtbnMpOwogIHRyaWdnZXItbW9kaWZp ZWQgaW5kZXhlZCBjb2x1bW5zOyBleGNsdXNpb24tY29uc3RyYWludCB0YWJsZXM7IHBhcnRp dGlvbmVkCiAgdGFibGVzOyBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgKGhhc2gsIEdJTiwg R2lTVCk7IGEgVU5JUVVFIGluZGV4IG9uIGEgdHlwZQogIHdoZXJlIGltYWdlIGVxdWFsaXR5 IGRpZmZlcnMgZnJvbSBvcGVyYXRvciBlcXVhbGl0eTsgQ1JFQVRFIElOREVYIC8gUkVJTkRF WAogIGFuZCBEUk9QIElOREVYIG92ZXIgbGl2ZSBjaGFpbnM7IHBydW5lIHJlY2xhbWF0aW9u LCBzdHViIG1peGVzLCBhbmQKICByZS1jb2xsYXBzZSBhY3Jvc3MgcGFydGlhbCBWQUNVVU1z OyB0aGUgbmV2ZXItYWxsLXZpc2libGUgZ3VhcmQ7IGFuZCBEREwKICBhZnRlciBhIGNoYWlu IGV4aXN0cyAoQUREIENPTFVNTiBjcm9zc2luZyBhIGJpdG1hcC1zaXplIGJvdW5kYXJ5LCBE Uk9QCiAgQ09MVU1OKS4KLSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCAoaXNvbGF0aW9uKTog Y29uY3VycmVudCBVUERBVEUgLyBWQUNVVU0gLyBwcnVuZSBhbmQKICBpbmRleCBzY2Fucywg a2V5IGN5Y2xpbmcsIGFib3J0cywgYW5kIHJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBj b25jdXJyZW50CiAgY29sbGFwc2UuCi0gMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5IChyZWNv dmVyeSk6IFdBTCByZXBsYXkgb2YgdGhlIGNoYWluIGFuZCBpdHMgY29sbGFwc2UKICB1bmRl ciB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCi0gcGdfc3VyZ2VyeSBoYW5kbGluZyBvZiBI T1QtaW5kZXhlZCB0dXBsZXMgYW5kIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzLgoKQXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0KIGNvbnRyaWIvcGdfc3VyZ2Vy eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQgIHwgICA4MyArCiBjb250cmliL3BnX3N1 cmdlcnkvaGVhcF9zdXJnZXJ5LmMgICAgICAgICAgICAgfCAgIDE2ICsKIGNvbnRyaWIvcGdf c3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbCAgICAgICB8ICAgNTMgKwogZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgICA1NyArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgICB8ICAgIDMgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4ZWRfc3RhdHMuYyAgIHwgIDE4OCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAgMSAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MTIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICAyOCArCiAuLi4vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0ICAgICAg fCAgMTM5ICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAg ICAgfCAgICAxICsKIC4uLi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjICAg ICAgICB8ICAxMjMgKysKIHNyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogLi4uL3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsICAgIHwgIDE0OSArKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQgIHwgMTcxOSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAxMiArCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3FsICB8IDExNjcgKysrKysrKysr KysKIDIyIGZpbGVzIGNoYW5nZWQsIDM3NjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRl eGVkX3N0YXRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhl ZF9yZWNvdmVyeS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X2luZGV4ZWRfdXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtl ZmlsZQppbmRleCBhNjY3NzZjNGM0MS4uZGE3NTJhODExNDcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfc3VyZ2VyeS9NYWtlZmlsZQorKysgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKQEAgLTEwLDYgKzEwLDcgQEAgREFUQSA9IHBnX3N1cmdlcnktLTEuMC5zcWwKIFBHRklM RURFU0MgPSAicGdfc3VyZ2VyeSAtIHBlcmZvcm0gc3VyZ2VyeSBvbiBhIGRhbWFnZWQgcmVs YXRpb24iCiAKIFJFR1JFU1MgPSBoZWFwX3N1cmdlcnkKK0VYVFJBX0lOU1RBTEwgPSBjb250 cmliL3BhZ2VpbnNwZWN0CiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25m aWcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdl cnkub3V0IGIvY29udHJpYi9wZ19zdXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQK aW5kZXggZGY3ZDEzYjA5MDguLjFhNWZlZjViMmJiIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dAorKysgYi9jb250cmliL3BnX3N1 cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dApAQCAtMTc1LDYgKzE3NSw4OSBAQCBE RVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KIHNl bGVjdCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSdd Ojp0aWRbXSk7CiBFUlJPUjogIGNhbm5vdCBvcGVyYXRlIG9uIHJlbGF0aW9uICJ2dyIKIERF VEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpZXdzLgorLS0g QSBIT1QvU0lVIGNoYWluIGNvbGxhcHNlIHR1cm5zIHRoZSBjaGFpbiByb290IGFuZCBlYWNo IGRlYWQgZW50cnktYmVhcmluZworLS0gbWVtYmVyIGludG8gYW4gTFBfUkVESVJFQ1QgdG8g dGhlIGxpdmUgdHVwbGUuICBwZ19zdXJnZXJ5IG9wZXJhdGVzIG9uIHJlYWwKKy0tIHR1cGxl cyBhbmQgbXVzdCBsZWF2ZSB0aGUgbGl2ZSByb3cgcmVhY2hhYmxlIGFmdGVyIHN1Y2ggYSBj b2xsYXBzZS4KK2NyZWF0ZSBleHRlbnNpb24gcGFnZWluc3BlY3Q7CitjcmVhdGUgdGFibGUg aHRvbWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRoIChmaWxsZmFj dG9yID0gNTApOworY3JlYXRlIGluZGV4IGh0b21iX2Egb24gaHRvbWIoYSk7CitpbnNlcnQg aW50byBodG9tYiB2YWx1ZXMgKDEsIDEwLCAyMCk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBk YXRlcyBvbiBhbiBpbmRleGVkIGF0dHIsIHRoZW4gcHJ1bmU6IHRoZSBkZWFkIG1pZC1jaGFp bgorLS0gdmVyc2lvbnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1RzIHRvIHRoZSBsaXZlIHR1 cGxlLiAgSU5ERVhfQ0xFQU5VUCBvZmYga2VlcHMKKy0tIHRoZSBzdGFsZSBidHJlZSBsZWF2 ZXMgKGFuZCBoZW5jZSB0aGUgcmVkaXJlY3RzKSBpbiBwbGFjZS4KK3VwZGF0ZSBodG9tYiBz ZXQgYSA9IDExIHdoZXJlIGlkID0gMTsKK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDEyIHdoZXJl IGlkID0gMTsKK3ZhY3V1bSAoaW5kZXhfY2xlYW51cCBvZmYpIGh0b21iOworc2VsZWN0IG5f aG90X2luZGV4ZWQgPiAwIGFzIG1hZGVfaG90X2luZGV4ZWQKKyAgZnJvbSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaHRvbWInKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSB0aGUgbGl2ZSByb3cgaXMgaW50 YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxlY3QgaWQsIGEsIGIg ZnJvbSBodG9tYjsKKyBpZCB8IGEgIHwgYiAgCistLS0tKy0tLS0rLS0tLQorICAxIHwgMTIg fCAyMAorKDEgcm93KQorCitkcm9wIHRhYmxlIGh0b21iOworLS0gQSBjb2xsYXBzZSB0aGF0 IGtlZXBzIGEgKnN0dWIqIChhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIExQX05PUk1BTCBpdGVt IHdpdGgKKy0tIG5hdHRzID09IDApLCBub3QganVzdCByZWRpcmVjdHM6IHVwZGF0ZSB0d28g ZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBzbyB0aGUKKy0tIGZpcnN0IGRlYWQgbWVtYmVy J3MgY2hhbmdlZC1hdHRyIGJpdG1hcCBpcyBub3Qgc3Vic3VtZWQgYnkgbGF0ZXIgaG9wcyBh bmQgaXMKKy0tIHByZXNlcnZlZCBhcyBhIHN0dWIuICBwZ19zdXJnZXJ5IG11c3Qgc2tpcCBz dWNoIGEgc3R1YiAtLSBmb3JjaW5nIGEKKy0tIGZyZWV6ZS9raWxsIHdvdWxkIG92ZXJ3cml0 ZSBpdHMgdF9jdGlkIGZvcndhcmQgbGluayBhbmQgY29ycnVwdCB0aGUgY2hhaW4uCitjcmVh dGUgdGFibGUgaHN0dWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRo IChmaWxsZmFjdG9yID0gNTApOworY3JlYXRlIGluZGV4IGhzdHViX2Egb24gaHN0dWIoYSk7 CitjcmVhdGUgaW5kZXggaHN0dWJfYiBvbiBoc3R1YihiKTsKK2luc2VydCBpbnRvIGhzdHVi IHZhbHVlcyAoMSwgMTAsIDEwMCk7Cit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMSB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhCit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhIGFnYWluIChzdXBlcnNlZGVzKQordXBkYXRlIGhzdHVi IHNldCBiID0gMTAxIHdoZXJlIGlkID0gMTsgIC0tIGNoYW5nZXMgYiAtPiBmaXJzdCBob3An cyB7YX0ga2VwdCBhcyBzdHViCit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBoc3R1YjsK Ky0tIExvY2F0ZSB0aGUgc3R1YjogYW4gTFBfTk9STUFMIGl0ZW0gY2FycnlpbmcgSEVBUF9J TkRFWEVEX1VQREFURUQgKDB4MDgwMCBpbgorLS0gdF9pbmZvbWFzazIpIHdpdGggemVybyBs aXZlIGF0dHJpYnV0ZXMgKHRfaW5mb21hc2syIG5hdHRzIGJpdHMgPT0gMCkuCitzZWxlY3Qg bHAgYXMgc3R1Yl9vZmYKKyAgZnJvbSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdo c3R1YicsIDApKQorICB3aGVyZSBscF9mbGFncyA9IDEgICAgICAgICAgICAgICAgICAgICAg IC0tIExQX05PUk1BTAorICAgIGFuZCAodF9pbmZvbWFzazIgJiAyMDQ4KSA8PiAwICAgICAg ICAgIC0tIEhFQVBfSU5ERVhFRF9VUERBVEVECisgICAgYW5kICh0X2luZm9tYXNrMiAmIDIw NDcpID0gMCAgICAgICAgICAgLS0gbmF0dHMgPT0gMCAoc3R1YiBzZW50aW5lbCkKKyAgXGdz ZXQKKy0tIEZvcmNlIGtpbGwvZnJlZXplIG9uIHRoZSBzdHViJ3MgdGlkOiBib3RoIG11c3Qg YmUgcmVmdXNlZCB3aXRoIGEgTk9USUNFLgorc2VsZWN0IGhlYXBfZm9yY2Vfa2lsbCgnaHN0 dWInOjpyZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1Yl9vZmYnIHx8ICcpJyldOjp0 aWRbXSk7CitOT1RJQ0U6ICBza2lwcGluZyB0aWQgKDAsIDMpIGZvciByZWxhdGlvbiAiaHN0 dWIiIGJlY2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xsYXBzZSBzdHViCisgaGVhcF9m b3JjZV9raWxsIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGhl YXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJlZ2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidz dHViX29mZicgfHwgJyknKV06OnRpZFtdKTsKK05PVElDRTogIHNraXBwaW5nIHRpZCAoMCwg MykgZm9yIHJlbGF0aW9uICJoc3R1YiIgYmVjYXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNv bGxhcHNlIHN0dWIKKyBoZWFwX2ZvcmNlX2ZyZWV6ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworLS0gVGhlIGNoYWluIGlzIHVudG91Y2hlZDogdGhlIGxpdmUgcm93 IGlzIHN0aWxsIHJlYWNoYWJsZSB0aHJvdWdoIGVhY2ggaW5kZXguCitzZXQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitzZXQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitzZWxlY3QgaWQs IGEsIGIgZnJvbSBoc3R1YiB3aGVyZSBhID0gMTI7CisgaWQgfCBhICB8ICBiICAKKy0tLS0r LS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworc2VsZWN0IGlkLCBhLCBi IGZyb20gaHN0dWIgd2hlcmUgYiA9IDEwMTsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0t Ky0tLS0tCisgIDEgfCAxMiB8IDEwMQorKDEgcm93KQorCityZXNldCBlbmFibGVfYml0bWFw c2NhbjsKK3Jlc2V0IGVuYWJsZV9zZXFzY2FuOworZHJvcCB0YWJsZSBoc3R1YjsKK2Ryb3Ag ZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OwogLS0gY2xlYW51cC4KIGRyb3AgdmlldyB2dzsKIGRy b3AgZXh0ZW5zaW9uIHBnX3N1cmdlcnk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdl cnkvaGVhcF9zdXJnZXJ5LmMgYi9jb250cmliL3BnX3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMK aW5kZXggYjhjZTEwOTU3ODIuLjdmYzY1M2NjMzM0IDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBf c3VyZ2VyeS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90 X2luZGV4ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0Lmgi CkBAIC0yMjYsNiArMjI3LDIxIEBAIGhlYXBfZm9yY2VfY29tbW9uKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBIZWFwVHVwbGVGb3JjZU9wdGlvbiBoZWFwX2ZvcmNlX29wdCkKIAkJCQkJ CQkJYmxrbm8sIG9mZm5vLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQkJ CWNvbnRpbnVlOwogCQkJfQorCQkJZWxzZSBpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1Yigo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpKSkKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBh biB4aWQtZnJlZQorCQkJCSAqIGZvcndhcmRpbmcgbm9kZSwgbm90IGEgcmVhbCB0dXBsZTog aXRzIHRfY3RpZCBjYXJyaWVzIHRoZQorCQkJCSAqIGNoYWluIGZvcndhcmQgbGluayBhbmQg dGhlIHdyaXRlLXRpbWUgbmF0dHMsIGFuZCBpdCBoYXMgbm8KKwkJCQkgKiBhdHRyaWJ1dGUg ZGF0YS4gIEZvcmNpbmcgYSBraWxsIG9yIGZyZWV6ZSB3b3VsZCBvdmVyd3JpdGUKKwkJCQkg KiB0X2N0aWQgYW5kIGNsZWFyIGl0cyB4YWN0IGJpdHMsIGJyZWFraW5nIHRoZSBjaGFpbiB3 YWxrIGFuZAorCQkJCSAqIGNvcnJ1cHRpbmcgdGhlIGhlYXAuICBTa2lwIGl0LCBhcyB3ZSBk byBmb3IgcmVkaXJlY3RzLgorCQkJCSAqLworCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJ KGVycm1zZygic2tpcHBpbmcgdGlkICgldSwgJXUpIGZvciByZWxhdGlvbiBcIiVzXCIgYmVj YXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNvbGxhcHNlIHN0dWIiLAorCQkJCQkJCQlibGtu bywgb2Zmbm8sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQkJY29udGlu dWU7CisJCQl9CiAKIAkJCS8qIE1hcmsgaXQgZm9yIHByb2Nlc3NpbmcuICovCiAJCQlBc3Nl cnQob2Zmbm8gPD0gTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsIGIvY29udHJpYi9wZ19zdXJnZXJ5 L3NxbC9oZWFwX3N1cmdlcnkuc3FsCmluZGV4IDY1MjZiMjc1MzVkLi5iZTRmZWQyYWY2NSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsCisr KyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbApAQCAtODMsNiAr ODMsNTkgQEAgY3JlYXRlIHZpZXcgdncgYXMgc2VsZWN0IDE7CiBzZWxlY3QgaGVhcF9mb3Jj ZV9raWxsKCd2dyc6OnJlZ2NsYXNzLCBBUlJBWVsnKDAsIDEpJ106OnRpZFtdKTsKIHNlbGVj dCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSddOjp0 aWRbXSk7CiAKKy0tIEEgSE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4g cm9vdCBhbmQgZWFjaCBkZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQ X1JFRElSRUNUIHRvIHRoZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiBy ZWFsCistLSB0dXBsZXMgYW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBh ZnRlciBzdWNoIGEgY29sbGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0Owor Y3JlYXRlIHRhYmxlIGh0b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkg d2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21i KGEpOworaW5zZXJ0IGludG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhP VC1pbmRleGVkIHVwZGF0ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUg ZGVhZCBtaWQtY2hhaW4KKy0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0 byB0aGUgbGl2ZSB0dXBsZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3Rh bGUgYnRyZWUgbGVhdmVzIChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1 cGRhdGUgaHRvbWIgc2V0IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMiB3aGVyZSBpZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9t YjsKK3NlbGVjdCBuX2hvdF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZy b20gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CistLSB0aGUgbGl2 ZSByb3cgaXMgaW50YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxl Y3QgaWQsIGEsIGIgZnJvbSBodG9tYjsKK2Ryb3AgdGFibGUgaHRvbWI7CisKKy0tIEEgY29s bGFwc2UgdGhhdCBrZWVwcyBhICpzdHViKiAoYW4geGlkLWZyZWUgZm9yd2FyZGluZyBMUF9O T1JNQUwgaXRlbSB3aXRoCistLSBuYXR0cyA9PSAwKSwgbm90IGp1c3QgcmVkaXJlY3RzOiB1 cGRhdGUgdHdvIGRpZmZlcmVudCBpbmRleGVkIGNvbHVtbnMgc28gdGhlCistLSBmaXJzdCBk ZWFkIG1lbWJlcidzIGNoYW5nZWQtYXR0ciBiaXRtYXAgaXMgbm90IHN1YnN1bWVkIGJ5IGxh dGVyIGhvcHMgYW5kIGlzCistLSBwcmVzZXJ2ZWQgYXMgYSBzdHViLiAgcGdfc3VyZ2VyeSBt dXN0IHNraXAgc3VjaCBhIHN0dWIgLS0gZm9yY2luZyBhCistLSBmcmVlemUva2lsbCB3b3Vs ZCBvdmVyd3JpdGUgaXRzIHRfY3RpZCBmb3J3YXJkIGxpbmsgYW5kIGNvcnJ1cHQgdGhlIGNo YWluLgorY3JlYXRlIHRhYmxlIGhzdHViIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBi IGludCkgd2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9hIG9u IGhzdHViKGEpOworY3JlYXRlIGluZGV4IGhzdHViX2Igb24gaHN0dWIoYik7CitpbnNlcnQg aW50byBoc3R1YiB2YWx1ZXMgKDEsIDEwLCAxMDApOwordXBkYXRlIGhzdHViIHNldCBhID0g MTEgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYQordXBkYXRlIGhzdHViIHNldCBhID0g MTIgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK3Vw ZGF0ZSBoc3R1YiBzZXQgYiA9IDEwMSB3aGVyZSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIgLT4g Zmlyc3QgaG9wJ3Mge2F9IGtlcHQgYXMgc3R1YgordmFjdXVtIChpbmRleF9jbGVhbnVwIG9m ZikgaHN0dWI7CistLSBMb2NhdGUgdGhlIHN0dWI6IGFuIExQX05PUk1BTCBpdGVtIGNhcnJ5 aW5nIEhFQVBfSU5ERVhFRF9VUERBVEVEICgweDA4MDAgaW4KKy0tIHRfaW5mb21hc2syKSB3 aXRoIHplcm8gbGl2ZSBhdHRyaWJ1dGVzICh0X2luZm9tYXNrMiBuYXR0cyBiaXRzID09IDAp Lgorc2VsZWN0IGxwIGFzIHN0dWJfb2ZmCisgIGZyb20gaGVhcF9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnaHN0dWInLCAwKSkKKyAgd2hlcmUgbHBfZmxhZ3MgPSAxICAgICAgICAgICAg ICAgICAgICAgICAtLSBMUF9OT1JNQUwKKyAgICBhbmQgKHRfaW5mb21hc2syICYgMjA0OCkg PD4gMCAgICAgICAgICAtLSBIRUFQX0lOREVYRURfVVBEQVRFRAorICAgIGFuZCAodF9pbmZv bWFzazIgJiAyMDQ3KSA9IDAgICAgICAgICAgIC0tIG5hdHRzID09IDAgKHN0dWIgc2VudGlu ZWwpCisgIFxnc2V0CistLSBGb3JjZSBraWxsL2ZyZWV6ZSBvbiB0aGUgc3R1YidzIHRpZDog Ym90aCBtdXN0IGJlIHJlZnVzZWQgd2l0aCBhIE5PVElDRS4KK3NlbGVjdCBoZWFwX2ZvcmNl X2tpbGwoJ2hzdHViJzo6cmVnY2xhc3MsIEFSUkFZWygnKDAsJyB8fCA6J3N0dWJfb2ZmJyB8 fCAnKScpXTo6dGlkW10pOworc2VsZWN0IGhlYXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJl Z2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidzdHViX29mZicgfHwgJyknKV06OnRpZFtdKTsK Ky0tIFRoZSBjaGFpbiBpcyB1bnRvdWNoZWQ6IHRoZSBsaXZlIHJvdyBpcyBzdGlsbCByZWFj aGFibGUgdGhyb3VnaCBlYWNoIGluZGV4Lgorc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor c2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0 dWIgd2hlcmUgYSA9IDEyOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0dWIgd2hlcmUgYiA9 IDEwMTsKK3Jlc2V0IGVuYWJsZV9iaXRtYXBzY2FuOworcmVzZXQgZW5hYmxlX3NlcXNjYW47 Citkcm9wIHRhYmxlIGhzdHViOworZHJvcCBleHRlbnNpb24gcGFnZWluc3BlY3Q7CisKIC0t IGNsZWFudXAuCiBkcm9wIHZpZXcgdnc7CiBkcm9wIGV4dGVuc2lvbiBwZ19zdXJnZXJ5Owpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTJiOWVlMjBkNGEuLmYzNGFhNjQ4YjU5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ0NTcsNiArNDQ1NywxOSBAQCBkZXNjcmlwdGlvbiB8 IFdhaXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVy YWJsZSBzdG9yYWdlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVw X2hvdF9pbmRleGVkX3VwZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiByb3dzIHVwZGF0 ZWQgdXNpbmcgdGhlIEhPVC1pbmRleGVkIHBhdGg6IHRoZSBzdWNjZXNzb3IKKyAgICAgICB2 ZXJzaW9uIHN0YXlzIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFwLW9ubHkgdHVwbGUgZXZl biB0aG91Z2ggaXQKKyAgICAgICBjaGFuZ2VkIG9uZSBvciBtb3JlIGluZGV4ZWQgY29sdW1u cywgYW5kIG9ubHkgdGhlIGFmZmVjdGVkIGluZGV4ZXMKKyAgICAgICByZWNlaXZlIGEgbmV3 IGVudHJ5LiAgRXZlcnkgc3VjaCB1cGRhdGUgaXMgYWxzbyBjb3VudGVkIGluCisgICAgICAg PHN0cnVjdGZpZWxkPm5fdHVwX2hvdF91cGQ8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+bl90dXBfbmV3cGFnZV91cGQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5iaWdpbnQ8L3R5cGU+CkBAIC00OTI3LDYgKzQ5NDAsMjcgQEAgZGVzY3JpcHRp b24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNo IGR1cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5u X3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgYSBuZXcgZW50cnkgaW50byB0 aGlzCisgICAgICAgaW5kZXggKHRoZSB1cGRhdGUgY2hhbmdlZCBvbmUgb2YgdGhpcyBpbmRl eCdzIGF0dHJpYnV0ZXMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5f dHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9m IEhPVC1pbmRleGVkIHVwZGF0ZXMgdGhhdCBza2lwcGVkIHRoaXMgaW5kZXggKHRoZSB1cGRh dGUKKyAgICAgICBjaGFuZ2VkIG5vIGF0dHJpYnV0ZSBvZiB0aGlzIGluZGV4LCBzbyBpdHMg ZXhpc3RpbmcgZW50cnkgY29udGludWVzCisgICAgICAgdG8gcmVzb2x2ZSB0aGUgSE9UIGNo YWluKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgICA8c3RydWN0ZmllbGQ+c3RhdHNfcmVzZXQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CkBA IC01NjA4LDYgKzU2NDIsMjkgQEAgZGVzY3JpcHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5 IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFibGUgc3RvcmFnZQogICAgICA8 L3RoZWFkPgogCiAgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IGlk PSJwZy1yZWxhdGlvbi1ob3QtaW5kZXhlZC1zdGF0cyIgcm9sZT0iZnVuY190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgICAgPHByaW1hcnk+cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHM8L3ByaW1h cnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHM8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cmVsYXRpb248 L3BhcmFtZXRlcj4gPHR5cGU+cmVnY2xhc3M8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZh bHVlPnJlY29yZDwvcmV0dXJudmFsdWU+CisgICAgICAgICggPHBhcmFtZXRlcj5uX2hvdF9p bmRleGVkPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAgIDxwYXJh bWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiwKKyAgICAg ICAgPHBhcmFtZXRlcj5hdmdfY2hhaW5fbGVuPC9wYXJhbWV0ZXI+IDx0eXBlPmRvdWJsZSBw cmVjaXNpb248L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVyPm1heF9jaGFpbl9sZW48L3Bh cmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiApCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBSZXBvcnRzIEhPVC1pbmRleGVkIHN0cnVjdHVyYWwgc3RhdGlz dGljcyBmb3IgYSB0YWJsZSBieSBzY2FubmluZworICAgICAgICBldmVyeSBwYWdlIHVuZGVy IDxsaXRlcmFsPkFjY2Vzc1NoYXJlTG9jazwvbGl0ZXJhbD46CisgICAgICAgIDxwYXJhbWV0 ZXI+bl9ob3RfaW5kZXhlZDwvcGFyYW1ldGVyPiBpcyB0aGUgbnVtYmVyIG9mIGxpdmUKKyAg ICAgICAgSE9ULWluZGV4ZWQgdHVwbGUgdmVyc2lvbnMgcHJlc2VudCwgYW5kCisgICAgICAg IDxwYXJhbWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4sIDxwYXJhbWV0ZXI+YXZnX2NoYWlu X2xlbjwvcGFyYW1ldGVyPgorICAgICAgICBhbmQgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVu PC9wYXJhbWV0ZXI+IGRlc2NyaWJlIHRoZSBIT1QtaW5kZXhlZAorICAgICAgICBjaGFpbnMu ICBJbnRlbmRlZCBmb3IgZGlhZ25vc3RpY3MuCisgICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKwogICAgICAgPHJvdz4KICAgICAgICA8IS0tIFNlZSBhbHNvIHRoZSBl bnRyeSBmb3IgdGhpcyBpbiBmdW5jLnNnbWwgLS0+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1 bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvTWFrZWZpbGUKaW5kZXggMWQyN2NjYjkxNmUuLmRmYWYzMzUwNzM2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQpAQCAtMjAsNiArMjAsNyBAQCBPQkpTID0gXAog CWhlYXBhbV94bG9nLm8gXAogCWhlYXB0b2FzdC5vIFwKIAloaW8ubyBcCisJaG90X2luZGV4 ZWRfc3RhdHMubyBcCiAJcHJ1bmVoZWFwLm8gXAogCXJld3JpdGVoZWFwLm8gXAogCXZhY3V1 bWxhenkubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUu SE9ULUlOREVYRUQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVY RUQKaW5kZXggMWY0MWIwZmZmZTguLjJlNWU1ZjRhMDgxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECkBAIC0yNTIsNiArMjUyLDkgQEAgSEVB UF9JTkRFWEVEX1VQREFURUQgaGVhcC1vbmx5IHR1cGxlIHdob3NlIGxpbmUgcG9pbnRlciBp cyBwcmVzZXJ2ZWQsIGFuZAogbXVsdGlwbGUgTFBfUkVESVJFQ1RzIGZvcndhcmRpbmcgdG8g b25lIGxpdmUgdHVwbGUuCiAKIFN0YXRpc3RpY3M6IHBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1 cF9ob3RfaW5kZXhlZF91cGQgY291bnRzIEhPVC1pbmRleGVkCit1cGRhdGVzOyBwZ19zdGF0 X2FsbF9pbmRleGVzLm5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkIC8gX3NraXBwZWQg Y291bnQKK3Blci1pbmRleCByZWNoZWNrIG91dGNvbWVzOyBhbmQgcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoKSByZXBvcnRzCitwZXItcmVsYXRpb24gSE9ULWluZGV4ZWQgY2hh aW4gY291bnRzLgogCiAKIEFwcGVuZGljZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9ob3RfaW5kZXhlZF9zdGF0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44OTVhMjk2NTRiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMKQEAgLTAsMCArMSwxODggQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkX3N0YXRzLmMKKyAqCSAgU1FM LWNhbGxhYmxlIGRpYWdub3N0aWMgdGhhdCB3YWxrcyBldmVyeSBwYWdlIG9mIGEgaGVhcCBy ZWxhdGlvbiBhbmQKKyAqCSAgcmVwb3J0cyBob3QtaW5kZXhlZC1yZWxhdGVkIHN0cnVjdHVy YWwgc3RhdGlzdGljcy4KKyAqCisgKiBUaGVzZSBudW1iZXJzIGNvbXBsZW1lbnQgdGhlIHJ1 bm5pbmcgcGdzdGF0IGNvdW50ZXJzCisgKiAobl90dXBfaG90X2luZGV4ZWRfdXBkIGluIHBn X3N0YXRfYWxsX3RhYmxlcyk6IHRoZXkgYW5zd2VyICJ3aGF0IGlzIG9uIGRpc2sKKyAqIHJp Z2h0IG5vdz8iIHJhdGhlciB0aGFuICJob3cgb2Z0ZW4gZGlkIGhvdC1pbmRleGVkIGZpcmUg ZHVyaW5nIHRoZSBzdGF0cworICogd2luZG93PyIuCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aG90X2luZGV4ZWRfc3RhdHMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNp bmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImZ1 bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaXRlbXB0ci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisKKy8qCisgKiBwZ19yZWxh dGlvbl9ob3RfaW5kZXhlZF9zdGF0cyhyZWdjbGFzcykgLT4gcmVjb3JkCisgKgorICogV2Fs a3MgZXZlcnkgYmxvY2sgb2YgdGhlIHJlbGF0aW9uJ3MgbWFpbiBmb3JrIGFuZCBjb3VudHM6 CisgKiAgIG5faG90X2luZGV4ZWQgICAtLSBsaXZlIEhPVC1pbmRleGVkIHZlcnNpb25zIChI RUFQX0lOREVYRURfVVBEQVRFRCwgbmF0dHM+MCwKKyAqICAgICAgICAgICAgICAgICAgICAg IGNhcnJ5aW5nIGFuIGlubGluZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXApCisg KiAgIG5fY2hhaW5zICAgICAgICAtLSBMUF9SRURJUkVDVCBpdGVtcywgaS5lLiBIT1QgY2hh aW4gcm9vdHMuICBNYXRjaGVzCisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVtYmVy IG9mIGRpc3RpbmN0IEhPVCBjaGFpbnMgdGhhdCBoYXZlIHN1cnZpdmVkCisgKiAgICAgICAg ICAgICAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgcHJ1bmUuICBSb290LW5vdC1yZWRpcmVj dCBjaGFpbnMKKyAqICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggMSkgYXJlIG5vdCBj b3VudGVkIGhlcmUgYmVjYXVzZSB0aGV5IGFyZQorICogICAgICAgICAgICAgICAgICAgICAg aW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIG5vbi1jaGFpbiB0dXBsZS4KKyAqICAgYXZnX2No YWluX2xlbiAgIC0tIG1lYW4gbGVuZ3RoIGFjcm9zcyBjaGFpbnMgcm9vdGVkIGF0IGFuIExQ X1JFRElSRUNULAorICogICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBieSB3YWxraW5n IGVhY2ggcmVkaXJlY3QgdGFyZ2V0IHRvIHRoZSBlbmQKKyAqICAgICAgICAgICAgICAgICAg ICAgIG9mIGl0cyBIRUFQX0hPVF9VUERBVEVEIGNoYWluLgorICogICBtYXhfY2hhaW5fbGVu ICAgLS0gbG9uZ2VzdCBjaGFpbiBvYnNlcnZlZC4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3Qg aG9sZCBTRUxFQ1QgcHJpdmlsZWdlIG9uIHRoZSByZWxhdGlvbiwgbGlrZSBvdGhlcgorICog cmVsYXRpb24taW5zcGVjdGlvbiBmdW5jdGlvbnM7IGl0IHRha2VzIG9ubHkgQWNjZXNzU2hh cmVMb2NrIGFuZCBzaG9ydC10ZXJtCisgKiBidWZmZXIgc2hhcmUgbG9ja3Mgd2hpbGUgc2Nh bm5pbmcuCisgKi8KK0RhdHVtCitwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyhQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlS ZWxhdGlvbglyZWw7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlCbG9ja051bWJlciBuYmxv Y2tzOworCUJsb2NrTnVtYmVyIGJsazsKKwlpbnQ2NAkJbl9ob3RfaW5kZXhlZCA9IDA7CisJ aW50NjQJCW5fY2hhaW5zID0gMDsKKwlpbnQ2NAkJc3VtX2NoYWluX2xlbiA9IDA7CisJaW50 NjQJCW1heF9jaGFpbl9sZW4gPSAwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVtCQl2 YWx1ZXNbNF07CisJYm9vbAkJbnVsbHNbNF0gPSB7MH07CisJSGVhcFR1cGxlCXJlc3VsdHR1 cDsKKworCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJ aWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJcmVs LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYmCisJCXJlbC0+cmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfVE9BU1RWQUxVRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJc IiVzXCIgaXMgbm90IGEgdGFibGUsIG1hdGVyaWFsaXplZCB2aWV3LCBvciBUT0FTVCB0YWJs ZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCisJLyogQ2Fs bGVyIG11c3QgYmUgYWJsZSB0byByZWFkIHRoZSByZWxhdGlvbi4gKi8KKwlhY2xyZXN1bHQg PSBwZ19jbGFzc19hY2xjaGVjayhyZWxpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOwor CWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJl c3VsdCwKKwkJCQkJICAgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2lu ZCksCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCisJbmJsb2Nr cyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKKworCWZvciAoYmxrID0gMDsg YmxrIDwgbmJsb2NrczsgYmxrKyspCisJeworCQlCdWZmZXIJCWJ1ZjsKKwkJUGFnZQkJcGFn ZTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJT2Zmc2V0TnVtYmVyIG1heG9mZjsKKworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChy ZWwsIE1BSU5fRk9SS05VTSwgYmxrLCBSQk1fTk9STUFMLCBOVUxMKTsKKwkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm KTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpIHx8IFBhZ2VJc0VtcHR5KHBhZ2UpKQorCQl7 CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisJCQljb250aW51ZTsKKwkJfQorCisJ CW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJCWZvciAob2ZmID0g Rmlyc3RPZmZzZXROdW1iZXI7IG9mZiA8PSBtYXhvZmY7IG9mZiA9IE9mZnNldE51bWJlck5l eHQob2ZmKSkKKwkJeworCQkJSXRlbUlkCQlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2Zm KTsKKworCQkJaWYgKCFJdGVtSWRJc1VzZWQobHApKQorCQkJCWNvbnRpbnVlOworCisJCQlp ZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGxwKSkKKwkJCXsKKwkJCQkvKiBXYWxrIHRoZSBjaGFp biBzdGFydGluZyBhdCB0aGUgcmVkaXJlY3QgdGFyZ2V0LiAqLworCQkJCU9mZnNldE51bWJl ciBjdXIgPSBJdGVtSWRHZXRSZWRpcmVjdChscCk7CisJCQkJaW50NjQJCWxlbiA9IDA7CisK KwkJCQkvKgorCQkJCSAqIFdhbGsgdGhlIHNhbWUtcGFnZSBIT1QgY2hhaW4uICBCb3VuZCB0 aGUgbG9vcCBieSB0aGUgcGFnZSdzCisJCQkJICogaXRlbSBjb3VudCBzbyBhIGNvcnJ1cHQg Y3ljbGljIHRfY3RpZCBjYW5ub3Qgc3BpbiBmb3JldmVyCisJCQkJICogdW5kZXIgdGhlIGJ1 ZmZlciBsb2NrLCBhbmQgY2hlY2sgZm9yIGludGVycnVwdHMgZWFjaCBzdGVwLgorCQkJCSAq LworCQkJCXdoaWxlIChjdXIgPj0gRmlyc3RPZmZzZXROdW1iZXIgJiYgY3VyIDw9IG1heG9m ZiAmJiBsZW4gPCBtYXhvZmYpCisJCQkJeworCQkJCQlJdGVtSWQJCWNoYWluX2xwID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBjdXIpOworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGhkcjsKKwor CQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCQkJCWlmICghSXRlbUlkSXNOb3Jt YWwoY2hhaW5fbHApKQorCQkJCQkJYnJlYWs7CisJCQkJCXRoZHIgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBjaGFpbl9scCk7CisJCQkJCWxlbisrOworCQkJCQlp ZiAoISh0aGRyLT50X2luZm9tYXNrMiAmIEhFQVBfSE9UX1VQREFURUQpKQorCQkJCQkJYnJl YWs7CisJCQkJCS8qIEhPVCBjaGFpbnMgc3RheSBvbiBvbmUgcGFnZTsgc3RvcCBpZiB0aGUg bGluayBsZWF2ZXMgaXQuICovCisJCQkJCWlmIChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZ0aGRyLT50X2N0aWQpICE9IGJsaykKKwkJCQkJCWJyZWFrOworCQkJCQljdXIgPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmdGhkci0+dF9jdGlkKTsKKwkJCQl9CisJCQkJaWYg KGxlbiA+IDApCisJCQkJeworCQkJCQluX2NoYWlucysrOworCQkJCQlzdW1fY2hhaW5fbGVu ICs9IGxlbjsKKwkJCQkJaWYgKGxlbiA+IG1heF9jaGFpbl9sZW4pCisJCQkJCQltYXhfY2hh aW5fbGVuID0gbGVuOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKEl0ZW1JZElzTm9ybWFs KGxwKSkKKwkJCXsKKwkJCQlIZWFwVHVwbGVIZWFkZXIgdGhkciA9IChIZWFwVHVwbGVIZWFk ZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCQkJCWlmICghSG90SW5kZXhlZEhlYWRl cklzU3R1Yih0aGRyKSAmJgorCQkJCQkodGhkci0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVY RURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJbl9ob3RfaW5kZXhlZCsrOworCQkJfQorCQl9CisK KwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCX0KKworCXJlbGF0aW9uX2Nsb3NlKHJl bCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxl RGVzYyg0KTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEs ICJuX2hvdF9pbmRleGVkIiwgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRy eSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgIm5fY2hhaW5zIiwgSU5UOE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgImF2Z19j aGFpbl9sZW4iLCBGTE9BVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVw ZGVzYywgKEF0dHJOdW1iZXIpIDQsICJtYXhfY2hhaW5fbGVuIiwgSU5UOE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOworCXR1cGRlc2MgPSBCbGVzc1R1cGxl RGVzYyh0dXBkZXNjKTsKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0obl9ob3RfaW5k ZXhlZCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bShuX2NoYWlucyk7CisJaWYgKG5f Y2hhaW5zID4gMCkKKwkJdmFsdWVzWzJdID0gRmxvYXQ4R2V0RGF0dW0oKChkb3VibGUpIHN1 bV9jaGFpbl9sZW4pIC8gKGRvdWJsZSkgbl9jaGFpbnMpOworCWVsc2UKKwkJdmFsdWVzWzJd ID0gRmxvYXQ4R2V0RGF0dW0oMC4wKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKG1h eF9jaGFpbl9sZW4pOworCisJcmVzdWx0dHVwID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2Ms IHZhbHVlcywgbnVsbHMpOworCVBHX1JFVFVSTl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bShy ZXN1bHR0dXApKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21l c29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQKaW5kZXgg MDBlYzA3ZDdmMzAuLmI1YzJhOGQ1Y2I2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNv bi5idWlsZApAQCAtOCw2ICs4LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAn aGVhcGFtX3hsb2cuYycsCiAgICdoZWFwdG9hc3QuYycsCiAgICdoaW8uYycsCisgICdob3Rf aW5kZXhlZF9zdGF0cy5jJywKICAgJ3BydW5laGVhcC5jJywKICAgJ3Jld3JpdGVoZWFwLmMn LAogICAndmFjdXVtbGF6eS5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAppbmRleCA2YzFjNTU0NWNiNS4uMDJjOGEwNDlhMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwKQEAgLTczMCw2ICs3MzAsNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X2FsbF90YWJsZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRh dGVkKEMub2lkKSBBUyBuX3R1cF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBs ZXNfZGVsZXRlZChDLm9pZCkgQVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX2hvdF91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgICAg ICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoQy5vaWQpIEFT IG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19uZXdwYWdlX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgICAg ICAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoQy5vaWQpIEFTIG5fbGl2ZV90dXAsCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF9kZWFkX3R1cGxlcyhDLm9pZCkgQVMgbl9kZWFkX3R1 cCwKQEAgLTc2OCw2ICs3NjksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3hhY3RfYWxsX3Rh YmxlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChD Lm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfZGVsZXRlZChDLm9pZCkgQVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisg ICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVk KEMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX25ld3Bh Z2VfdXBkCiAgICAgRlJPTSBwZ19jbGFzcyBDIExFRlQgSk9JTgogICAgICAgICAgcGdfaW5k ZXggSSBPTiBDLm9pZCA9IEkuaW5kcmVsaWQKQEAgLTg2OSw2ICs4NzEsOCBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2FsbF9pbmRleGVzIEFTCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9s YXN0c2NhbihJLm9pZCkgQVMgbGFzdF9pZHhfc2NhbiwKICAgICAgICAgICAgIHBnX3N0YXRf Z2V0X3R1cGxlc19yZXR1cm5lZChJLm9pZCkgQVMgaWR4X3R1cF9yZWFkLAogICAgICAgICAg ICAgcGdfc3RhdF9nZXRfdHVwbGVzX2ZldGNoZWQoSS5vaWQpIEFTIGlkeF90dXBfZmV0Y2gs CisgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9z a2lwcGVkKEkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwKKyAgICAg ICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQo SS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgICAgICAgICAg cGdfc3RhdF9nZXRfc3RhdF9yZXNldF90aW1lKEkub2lkKSBBUyBzdGF0c19yZXNldAogICAg IEZST00gcGdfY2xhc3MgQyBKT0lOCiAgICAgICAgICAgICBwZ19pbmRleCBYIE9OIEMub2lk ID0gWC5pbmRyZWxpZCBKT0lOCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmlu ZGV4IDU2NWQwZTcwNzY4Li41NTJmMzU0MGNkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKQEAgLTkzLDYgKzkzLDE1IEBAIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc19mZXRjaGVkKQogLyogcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVk ICovCiBQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0ZWQpCiAK Ky8qIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkICovCitQR19TVEFU X0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCkKKworLyog cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZCAqLworUEdf U1RBVF9HRVRfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVk KQorCisvKiBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVk ICovCitQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQpCisKIC8qIHBnX3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQgKi8K IFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQpCiAK QEAgLTE4ODgsNiArMTg5Nyw5IEBAIFBHX1NUQVRfR0VUX1hBQ1RfUkVMRU5UUllfSU5UNjQo dHVwbGVzX2ZldGNoZWQpCiAvKiBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAqLwogUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0 ZWQpCiAKKy8qIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQg Ki8KK1BHX1NUQVRfR0VUX1hBQ1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVk X3VwZGF0ZWQpCisKIC8qIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRl ZCAqLwogUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfbmV3cGFnZV91 cGRhdGVkKQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzY2I4NDM1OWFkZi4u MTc1ZmE4OGViNTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU5NCw2ICs1 NTk0LDI5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRl ZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdf c3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkJyB9LAoreyBvaWQgPT4gJzk5NTMnLAorICBk ZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHR1cGxlcyB1cGRhdGVkIHZpYSBIT1Qt aW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSknLAorICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICdz JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJn dHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9p bmRleGVkX3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1NicsCisgIGRlc2NyID0+ICdzdGF0 aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IHNraXBwZWQgdGhp cyBpbmRleCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkX3NraXBwZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVs ID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAor ICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBl ZCcgfSwKK3sgb2lkID0+ICc5OTU3JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJl ciBvZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgaW50byB0aGlzIGluZGV4 JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0 ZWRfbWF0Y2hlZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3In LCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkJyB9LAor eyBvaWQgPT4gJzk5NTUnLAorICBkZXNjciA9PiAnSE9ULWluZGV4ZWQgc3RydWN0dXJhbCBz dGF0czogSE9ULWluZGV4ZWQgdmVyc2lvbnMgYW5kIGNoYWluIGxlbmd0aHMnLAorICBwcm9u YW1lID0+ICdwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cycsIHByb3ZvbGF0aWxlID0+ ICd2JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBw cm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3JlZ2Ns YXNzLGludDgsaW50OCxmbG9hdDgsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxv LG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3JlbGF0aW9uLG5faG90X2luZGV4ZWQsbl9j aGFpbnMsYXZnX2NoYWluX2xlbixtYXhfY2hhaW5fbGVufScsCisgIHByb3NyYyA9PiAncGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMnIH0sCiB7IG9pZCA9PiAnNjIxNycsCiAgIGRl c2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdHVwbGVzIHVwZGF0ZWQgb250byBhIG5l dyBwYWdlJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBk YXRlZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKQEAgLTYxNzksNiArNjIwMiwxMSBAQAogICBw cm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCcsIHByb3Zv bGF0aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1NCcsCisgIGRlc2Ny ID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdHVwbGUgdXBkYXRlcyBp biBjdXJyZW50IHRyYW5zYWN0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAg cHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZCcgfSwKIHsgb2lkID0+ICc2MjE4JywKICAgZGVzY3IgPT4gJ3N0YXRp c3RpY3M6IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCBvbnRvIGEgbmV3IHBhZ2UgaW4gY3Vy cmVudCB0cmFuc2FjdGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX25ld3BhZ2VfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5v dXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJp YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMmY2Mjgw MTUxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9o b3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQKQEAgLTAsMCArMSwxMzkgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCA2IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9u b3NlcSBzMV9jeWNsZSBzMl9lcTEwIHMyX2VxMjAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczFfY3ljbGU6IFVQREFURSBoaWEgU0VUIGsgPSAy MCBXSEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7Citz dGVwIHMyX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7CitpZHwg aworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKK3N0ZXAgczJfZXEyMDogU0VMRUNUIGlkLCBr IEZST00gaGlhIFdIRVJFIGsgPSAyMDsKK2lkfGsKKy0tKy0KKygwIHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMyX25vc2VxIHMxX2N5Y2xlIHMyX3JhbmdlCitzdGVwIHMy X25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMxX2N5Y2xlOiBVUERB VEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMTAg V0hFUkUgaWQgPSAxOworc3RlcCBzMl9yYW5nZTogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdI RVJFIGsgPj0gNSBPUkRFUiBCWSBrOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9ub3NlcSBzMV9iZWdpbiBzMV91cGQyMCBz MV9hYm9ydCBzMl9lcTIwIHMyX2VxMTAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91cGQyMDogVVBE QVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfYWJvcnQ6IFJPTExC QUNLOworc3RlcCBzMl9lcTIwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDIw OworaWR8aworLS0rLQorKDAgcm93cykKKworc3RlcCBzMl9lcTEwOiBTRUxFQ1QgaWQsIGsg RlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczJfaW5zMTAg czFfY29tbWl0CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERB VEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMl9pbnMxMDogSU5TRVJU IElOVE8gaGl1IFZBTFVFUyAoMiwgMTAsIHJlcGVhdCgneScsIDQwKSk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2luczEwOiA8Li4uIGNvbXBs ZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9j b21taXQgczJfaW5zMTAKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6 IFVQREFURSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMxX2NvbW1pdDog Q09NTUlUOworc3RlcCBzMl9pbnMxMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMiwgMTAs IHJlcGVhdCgneScsIDQwKSk7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBz MV91dXBkMjAgczFfY29tbWl0IHMyX2luczIwCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0 ZXAgczFfdXVwZDIwOiBVUERBVEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOworc3Rl cCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfaW5zMjA6IElOU0VSVCBJTlRPIGhpdSBW QUxVRVMgKDMsIDIwLCByZXBlYXQoJ3onLCA0MCkpOworRVJST1I6ICBkdXBsaWNhdGUga2V5 IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJoaXVfayIKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMzX2JlZ2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAgczNfZXEx MCBzM19jb21taXQKK3N0ZXAgczNfYmVnaW46IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczNfZXExMDog U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8 MTAKKygxIHJvdykKKworc3RlcCBzMl90bzMwOiBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hF UkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMzAgV0hFUkUgaWQgPSAxOworc3RlcCBz Ml9zY2FuMzA6IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgU0VMRUNUIGlkLCBrIEZST00g aGlhIFdIRVJFIGsgPSAzMDsKK2lkfCBrCistLSstLQorIDF8MzAKKygxIHJvdykKKworc3Rl cCBzM19lcTEwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsK Ky0tKy0tCisgMXwxMAorKDEgcm93KQorCitzdGVwIHMzX2NvbW1pdDogQ09NTUlUOworCitz dGFydGluZyBwZXJtdXRhdGlvbjogYjFfYmVnaW4gYjFfc25hcCBiMl91cGRhdGUgYjJfdmFj dXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorc3RlcCBiMV9iZWdpbjogQkVHSU47Citz dGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOworaWR8 ICB2CistLSstLS0KKyAxfDQwMAorKDEgcm93KQorCitzdGVwIGIyX3VwZGF0ZTogVVBEQVRF IGhpYiBTRVQgdiA9IDUwMCBXSEVSRSBpZCA9IDE7CitzdGVwIGIyX3ZhY3V1bTogVkFDVVVN IChJTkRFWF9DTEVBTlVQIG9mZikgaGliOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQsIHYg RlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0ZXAg YjFfY29tbWl0OiBDT01NSVQ7CitzdGVwIGIzX3NlcTogU0VMRUNUIGlkLCB2IEZST00gaGli IE9SREVSIEJZIGlkOworaWR8ICB2CistLSstLS0KKyAxfDUwMAorIDJ8IDIwCisgM3wgMzAK KyA0fCA0MAorIDV8IDUwCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBi MV9iZWdpbiBiMl91cGRhdGUgYjFfc25hcCBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21taXQg YjNfc2VxCitzdGVwIGIxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgYjJfdXBkYXRlOiBVUERBVEUg aGliIFNFVCB2ID0gNTAwIFdIRVJFIGlkID0gMTsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlk LCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitz dGVwIGIyX3ZhY3V1bTogVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGliOworc3RlcCBi MV9zbmFwOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfHYKKy0t Ky0KKygwIHJvd3MpCisKK3N0ZXAgYjFfY29tbWl0OiBDT01NSVQ7CitzdGVwIGIzX3NlcTog U0VMRUNUIGlkLCB2IEZST00gaGliIE9SREVSIEJZIGlkOworaWR8ICB2CistLSstLS0KKyAx fDUwMAorIDJ8IDIwCisgM3wgMzAKKyA0fCA0MAorIDV8IDUwCisoNSByb3dzKQorCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBiOGViZTkyNTUzYy4uZTlh ZmI0ODE5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAt MTI4LDMgKzEyOCw0IEBAIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwogdGVzdDogbG9jay1u b3dhaXQKIHRlc3Q6IGZvci1wb3J0aW9uLW9mCiB0ZXN0OiBkZGwtZGVwZW5kZW5jeS1sb2Nr aW5nCit0ZXN0OiBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjQ3MDViZjM3ZTAKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2 ZXJzYXJpYWwuc3BlYwpAQCAtMCwwICsxLDEyMyBAQAorIyBBZHZlcnNhcmlhbCBjb3JyZWN0 bmVzcyB0ZXN0cyBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgRWFjaCBw ZXJtdXRhdGlvbiBwaW5zIGEgY2FzZSB0aGF0IHRoZSBtaWQtY2hhaW4tcG9pbnRpbmcgaW52 YXJpYW50IG11c3QKKyMgc2F0aXNmeTogYW4gaW5kZXggZW50cnkgcG9pbnRzIGF0IHRoZSBo ZWFwLW9ubHkgdmVyc2lvbiB3aG9zZSBrZXkgaXQKKyMgbWF0Y2hlZCwgYW5kIGEgY2hhaW4g d2FsayB0aGF0IGNyb3NzZXMgYSBIT1QtaW5kZXhlZCBob3AgZHJvcHMgdGhlIGFycml2aW5n CisjIGVudHJ5IHdoZW4gdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFwcyB0 aGUgaW5kZXgncyBrZXkgY29sdW1ucworIyAobm8ga2V5IGNvbXBhcmlzb24pLiAgVGhlc2Ug YXJlCisjIGV4YWN0bHkgdGhlIGNhc2VzIHRoYXQgaGlzdG9yaWNhbGx5IGJyb2tlIHdyaXRl LWFtcGxpZmljYXRpb24tcmVkdWN0aW9uCisjIGRlc2lnbnMuCisKK3NldHVwCit7CisgICAg Q1JFQVRFIFRBQkxFIGhpYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgcGFkIHRleHQp IFdJVEggKGZpbGxmYWN0b3IgPSA0MCk7CisgICAgQ1JFQVRFIElOREVYIGhpYV9rIE9OIGhp YShrKTsKKyAgICBDUkVBVEUgVEFCTEUgaGl1IChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50 LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDQwKTsKKyAgICBDUkVBVEUgVU5JUVVF IElOREVYIGhpdV9rIE9OIGhpdShrKTsKKyAgICBJTlNFUlQgSU5UTyBoaWEgVkFMVUVTICgx LCAxMCwgcmVwZWF0KCd4JywgNDApKTsKKyAgICBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgx LCAxMCwgcmVwZWF0KCd4JywgNDApKTsKKworICAgIC0tIFRhYmxlIGZvciB0aGUgY29uY3Vy cmVudC1jb2xsYXBzZSByZWFkZXItY29uc2lzdGVuY3kgY2FzZSAoNykuCisgICAgQ1JFQVRF IFRBQkxFIGhpYiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGludCwgcGFkIHRleHQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CisgICAgQ1JFQVRFIElOREVYIGhpYl92X2lkeCBPTiBoaWIo dik7CisgICAgSU5TRVJUIElOVE8gaGliIFNFTEVDVCBnLCBnICogMTAsIHJlcGVhdCgneCcs IDUwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBnOworICAgIFVQREFURSBoaWIgU0VU IHYgPSAxMDAgV0hFUkUgaWQgPSAxOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAyMDAgV0hF UkUgaWQgPSAxOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAzMDAgV0hFUkUgaWQgPSAxOwor ICAgIFVQREFURSBoaWIgU0VUIHYgPSA0MDAgV0hFUkUgaWQgPSAxOworfQorCit0ZWFyZG93 bgoreworICAgIERST1AgVEFCTEUgaGlhOworICAgIERST1AgVEFCTEUgaGl1OworICAgIERS T1AgVEFCTEUgaGliOworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxX2JlZ2luICAgeyBCRUdJ TjsgfQorIyBDeWNsZSB0aGUgaW5kZXhlZCBrZXkgYXdheSBhbmQgYmFjazogMTAgLT4gMjAg LT4gMTAuICBUaGUgb3JpZ2luYWwgMTAgbGVhZgorIyBhbmQgdGhlIGZyZXNobHktaW5zZXJ0 ZWQgMTAgbGVhZiBib3RoIHJlc29sdmUgdG8gdGhlIGxpdmUgdHVwbGU7IHRoZSBjaGFpbgor IyB3YWxrIG11c3QgZHJvcCB0aGUgc3RhbGUgb25lIHNvIGEgbG9va3VwIHJldHVybnMgdGhl IHJvdyBleGFjdGx5IG9uY2UuCitzdGVwIHMxX2N5Y2xlICAgeyBVUERBVEUgaGlhIFNFVCBr ID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAx OyB9CisjIEEgc2luZ2xlIEhPVC1pbmRleGVkIHVwZGF0ZSBvbiBoaWEsIHVzZWQgYnkgdGhl IGFib3J0IGFuZCByZWFkZXIgY2FzZXMuCitzdGVwIHMxX3VwZDIwICAgeyBVUERBVEUgaGlh IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyB9CisjIEEgSE9ULWluZGV4ZWQgdXBkYXRlIG9u IHRoZSBVTklRVUUtaW5kZXhlZCB0YWJsZSwgZnJlZWluZyBrZXkgMTAgZm9yIGs9MjAuCitz dGVwIHMxX3V1cGQyMCAgeyBVUERBVEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyB9 CitzdGVwIHMxX2NvbW1pdCAgeyBDT01NSVQ7IH0KK3N0ZXAgczFfYWJvcnQgICB7IFJPTExC QUNLOyB9CisKK3Nlc3Npb24gczIKKyMgSW5kZXgtb25seSBsb29rdXBzIChmb3JjZWQpIHRo YXQgZXhlcmNpc2UgdGhlIHN0YWxlLWxlYWYgcmVjaGVjay4KK3N0ZXAgczJfbm9zZXEgICB7 IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgfQorc3RlcCBzMl9lcTEwICAgIHsgU0VMRUNU IGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsgfQorc3RlcCBzMl9lcTIwICAgIHsgU0VM RUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAyMDsgfQorc3RlcCBzMl9yYW5nZSAgIHsg U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPj0gNSBPUkRFUiBCWSBrOyB9CisjIENv bmN1cnJlbnQgdW5pcXVlIGluc2VydCBvZiB0aGUga2V5IHMxIGlzIGZyZWVpbmcgKDEwKSBh bmQgb2YgdGhlIGtleSBzMSBpcworIyB0YWtpbmcgKDIwKTsgX2J0X2NoZWNrX3VuaXF1ZSBt dXN0IGZpbHRlciB0aGUgc3RhbGUgMTAgbGVhZiBidXQgc3RpbGwKKyMgY29uZmxpY3Qgb24g dGhlIGxpdmUga2V5Lgorc3RlcCBzMl9pbnMxMCAgIHsgSU5TRVJUIElOVE8gaGl1IFZBTFVF UyAoMiwgMTAsIHJlcGVhdCgneScsIDQwKSk7IH0KK3N0ZXAgczJfaW5zMjAgICB7IElOU0VS VCBJTlRPIGhpdSBWQUxVRVMgKDMsIDIwLCByZXBlYXQoJ3onLCA0MCkpOyB9CisjIE1vdmUg dGhlIGluZGV4ZWQga2V5IHdlbGwgYXdheSBmcm9tIDEwICh0d28gSE9ULWluZGV4ZWQgaG9w cykgYW5kIGZvcmNlIGFuCisjIGluZGV4IHNjYW4gb24gdGhlIG5ldyBrZXkuICBUaGF0IHNj YW4gcmVhY2hlcyB0aGUgbGl2ZSB0dXBsZSB0aHJvdWdoIHRoZQorIyBzdGFsZSAxMCBsZWFm IGFuZCBtYXkgdHJ5IHRvIGtpbGwgaXQgZm9yIGJsb2F0IHJlY2xhaW0uCitzdGVwIHMyX3Rv MzAgICAgeyBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlh IFNFVCBrID0gMzAgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMyX3NjYW4zMCAgeyBTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMzA7 IH0KKworIyBSZWFkZXIgaG9sZGluZyBhbiBvbGRlciBSRVBFQVRBQkxFIFJFQUQgc25hcHNo b3QgdGhhdCBzdGlsbCBzZWVzIGs9MTAuCitzZXNzaW9uIHMzCitzdGVwIHMzX2JlZ2luICAg eyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyBTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7IH0KK3N0ZXAgczNfZXExMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID0gMTA7IH0KK3N0ZXAgczNfY29tbWl0ICB7IENPTU1JVDsgfQorCitzZXNz aW9uIGIxCitzdGVwIGIxX2JlZ2luICAgeyBCRUdJTjsgfQorIyBSZWFkZXIgdGFrZXMgYSBz bmFwc2hvdCBhbmQgcmVhZHMgdGhlIGNoYWluIHZpYSB0aGUgc2Vjb25kYXJ5IGluZGV4Lgor c3RlcCBiMV9zbmFwICAgIHsgU0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7 IH0KK3N0ZXAgYjFfY29tbWl0ICB7IENPTU1JVDsgfQorCitzZXNzaW9uIGIyCisjIEZvcmNl IHBydW5lL2NvbGxhcHNlOiBhbm90aGVyIEhPVC1pbmRleGVkIHVwZGF0ZSBwbHVzIGEgVkFD VVVNIHRoYXQKKyMgY29sbGFwc2VzIHRoZSBkZWFkIGNoYWluIG1lbWJlcnMgdG8gTFBfUkVE SVJFQ1QgZm9yd2FyZGVycy4KK3N0ZXAgYjJfdXBkYXRlICB7IFVQREFURSBoaWIgU0VUIHYg PSA1MDAgV0hFUkUgaWQgPSAxOyB9CitzdGVwIGIyX3ZhY3V1bSAgeyBWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaWI7IH0KKworc2Vzc2lvbiBiMworc3RlcCBiM19zZXEgICAgIHsg U0VMRUNUIGlkLCB2IEZST00gaGliIE9SREVSIEJZIGlkOyB9CisKKyMgMS4gYS0+Yi0+YSBj eWNsZTogZXhhY3RseSBvbmUgcm93IGZvciB0aGUgY3ljbGVkLWJhY2sga2V5LCBub25lIGZv ciB0aGUKKyMgICAgdHJhbnNpZW50IGtleS4KK3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2N5 Y2xlIHMyX2VxMTAgczJfZXEyMAorCisjIDIuIFJhbmdlIHNjYW4gcmV0dXJucyB0aGUgbGl2 ZSByb3cgZXhhY3RseSBvbmNlIGFjcm9zcyB0aGUgc3RhbGUrZnJlc2gKKyMgICAgbGVhdmVz IGxlZnQgYnkgdGhlIGN5Y2xlLgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfY3ljbGUgczJf cmFuZ2UKKworIyAzLiBBYm9ydCBvZiBhIEhPVC1pbmRleGVkIHVwZGF0ZTogdGhlIG5ldyBr ZXkgbXVzdCBub3Qgc3VyZmFjZSBhbmQgdGhlIG9sZAorIyAgICBrZXkgbXVzdCBzdGlsbCBy ZXNvbHZlIHRvIHRoZSAocmVzdG9yZWQpIGxpdmUgdHVwbGUuCitwZXJtdXRhdGlvbiBzMl9u b3NlcSBzMV9iZWdpbiBzMV91cGQyMCBzMV9hYm9ydCBzMl9lcTIwIHMyX2VxMTAKKworIyA0 LiBDb25jdXJyZW50IHVuaXF1ZSBpbnNlcnQgd2hpbGUgYSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgaW4gZmxpZ2h0LiAgQW4KKyMgICAgaW5zZXJ0IG9mIHRoZSBrZXkgczEgaXMgZnJlZWlu ZyAoMTApIG11c3Qgd2FpdCBvbiB0aGUgdW5jb21taXR0ZWQgdXBkYXRlciwKKyMgICAgdGhl biBzdWNjZWVkIG9uY2UgaXQgY29tbWl0cyAodGhlIHN0YWxlIDEwIGxlYWYgaXMgZmlsdGVy ZWQpLgorcGVybXV0YXRpb24gczFfYmVnaW4gczFfdXVwZDIwIHMyX2luczEwIHMxX2NvbW1p dAorCisjIDUuIEFmdGVyIHRoZSB1cGRhdGUgY29tbWl0cywgdGhlIGZyZWVkIGtleSAoMTAp IGluc2VydHMgY2xlYW5seSBhbmQgdGhlCisjICAgIHRha2VuIGtleSAoMjApIGNvbmZsaWN0 cyAtLSB0aGUgbGl2ZSBsZWFmIGlzIGhvbm91cmVkLCB0aGUgc3RhbGUgb25lIGlzIG5vdC4K K3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMTAKK3Bl cm11dGF0aW9uIHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMjAKKworIyA2 LiBTbmFwc2hvdCBzYWZldHkgb2Ygc3RhbGUtbGVhZiByZWNsYWltLiAgQW4gb2xkZXIgUkVQ RUFUQUJMRSBSRUFEIHJlYWRlcgorIyAgICBzdGlsbCBzZWVzIGs9MTA7IGEgY29uY3VycmVu dCBzZXNzaW9uIHRoZW4gbW92ZXMgdGhlIGtleSB0byAzMCBhbmQgcnVucyBhbgorIyAgICBp bmRleCBzY2FuIHRoYXQgcmVhY2hlcyB0aGUgbGl2ZSB0dXBsZSB0aHJvdWdoIHRoZSBzdGFs ZSAxMCBsZWFmIGFuZCBtYXkKKyMgICAgdHJ5IHRvIHJlY2xhaW0gaXQuICBUaGUgcmVjbGFp bSBpcyBnYXRlZCBvbiB0aGUgc2tpcHBlZCB2ZXJzaW9ucyBiZWluZworIyAgICBkZWFkIHRv IGFsbCB0cmFuc2FjdGlvbnMsIHdoaWNoIHMzJ3MgaGVsZCBzbmFwc2hvdCBwcmV2ZW50cywg c28gczMgbXVzdAorIyAgICBzdGlsbCBmaW5kIHRoZSByb3cgYnkgaz0xMCBhZnRlciB0aGUg c2Nhbi4KK3Blcm11dGF0aW9uIHMzX2JlZ2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAg czNfZXExMCBzM19jb21taXQKKworIyA3LiBSZWFkZXIgY29uc2lzdGVuY3kgYWNyb3NzIGEg Y29uY3VycmVudCBwcnVuZS9jb2xsYXBzZS4gIHMxJ3MgaW5kZXggc2NhbiwKKyMgICAgY3Jv c3NpbmcgdGhlIGNvbGxhcHNlZCBjaGFpbiBhZnRlciB0aGUgVkFDVVVNLCBtdXN0IHN0aWxs IHJldHVybiB0aGUgcm93CisjICAgIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFw OyB0aGUgcXVlcnkgbXVzdCBub3QgZXJyb3IgYW5kIHRoZSByb3cgY291bnQKKyMgICAgbXVz dCBiZSBjb25zaXN0ZW50LgorcGVybXV0YXRpb24gYjFfYmVnaW4gYjFfc25hcCBiMl91cGRh dGUgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorcGVybXV0YXRpb24gYjFf YmVnaW4gYjJfdXBkYXRlIGIxX3NuYXAgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIz X3NlcQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUgYi9zcmMvdGVz dC9yZWNvdmVyeS9NYWtlZmlsZQppbmRleCBkNDFhYWFmOGFlMS4uMjczNmNhYTFhMWIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L01ha2VmaWxlCkBAIC05LDcgKzksOCBAQAogIwogIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIAotRVhUUkFfSU5TVEFMTD1jb250cmliL3BnX3ByZXdhcm0gXAorRVhUUkFfSU5TVEFM TD1jb250cmliL2FtY2hlY2sgXAorCWNvbnRyaWIvcGdfcHJld2FybSBcCiAJY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMgXAogCWNvbnRyaWIvdGVzdF9kZWNvZGluZyBcCiAJc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4 IGFkMGQ4NWY0MTg5Li44ZGJjZGEzNTc3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAg LTYzLDYgKzYzLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDUyX2NoZWNrcG9pbnRfc2Vn bWVudF9taXNzaW5nLnBsJywKICAgICAgICd0LzA1M19zdGFuZGJ5X2xvZ2luX2V2ZW50X3Ry aWdnZXIucGwnLAogICAgICAgJ3QvMDU0X3VubG9nZ2VkX3NlcXVlbmNlX3Byb21vdGlvbi5w bCcsCisgICAgICAndC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwnLAogICAgIF0sCiAg IH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhl ZF9yZWNvdmVyeS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNmYw NzdiMzE1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hv dF9pbmRleGVkX3JlY292ZXJ5LnBsCkBAIC0wLDAgKzEsMTQ5IEBACisKKyMgQ29weXJpZ2h0 IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIENy YXNoLXJlY292ZXJ5IGNvdmVyYWdlIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJVSkgY2hhaW5z LgorIworIyBCdWlsZCBhIEhPVC1pbmRleGVkIGNoYWluIGJ5IHJlcGVhdGVkbHkgVVBEQVRF aW5nIGEgc2luZ2xlIHJvdywKKyMgY2hhbmdpbmcgb25lIGluZGV4ZWQgKG5vbi1QSykgY29s dW1uIGVhY2ggdGltZS4gIEZvcmNlIGEgcHJ1bmUgc28gdGhlCisjIGRlYWQgY2hhaW4gbWVt YmVycyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzICh3aXRoIHRoZSBsaXZl CisjIEhPVC1pbmRleGVkIHZlcnNpb24gdmlzaWJsZSB2aWEgcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMgYXMKKyMgbl9ob3RfaW5kZXhlZCA+IDApLiAgQ3Jhc2gtcmVjb3ZlciB0 aGUgcHJpbWFyeSB3aXRoIHN0b3AoJ2ltbWVkaWF0ZScpCisjIHNvIHRoZSBjb2xsYXBzZWQg Y2hhaW4gY29tZXMgYmFjayBmcm9tIFdBTCBvciBmcm9tIHRoZSBGUEkuICBBZnRlcgorIyBy ZXN0YXJ0LCB2ZXJpZnk6CisjCisjICAgMS4gYW4gaW5kZXggbG9va3VwIHdhbGtpbmcgdGhl IGNoYWluIHJldHVybnMgdGhlIGxpdmUgdHVwbGUsCisjICAgMi4gcGdfYW1jaGVjayAodmVy aWZ5X2hlYXBhbSkgcmVwb3J0cyBubyBlcnJvcnMgb24gdGhlIHJlbGF0aW9uLAorIyAgIDMu IFZBQ1VVTSByZWNsYWltcyB0aGUgY29sbGFwc2VkIGNoYWluIChuX2hvdF9pbmRleGVkIGRy b3BzIHRvIDApLgorIwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdDsKKyMgRGlzYWJs ZSBhdXRvdmFjdXVtIHRvIGtlZXAgdGhlIGNoYWluIHNoYXBlIHN0YWJsZSB1cCB0byB0aGUg ZXhwbGljaXQKKyMgcHJ1bmUgd2UgdHJpZ2dlciBiZWxvdy4KKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgcXthdXRvdmFjdXVtID0gb2ZmCit3YWxfY29uc2lzdGVu Y3lfY2hlY2tpbmcgPSAnYWxsJ30pOworJG5vZGUtPnN0YXJ0OworCisjIGFtY2hlY2sgKHZl cmlmeV9oZWFwYW0pIGlzIHNoaXBwZWQgYXMgYSBjb250cmliIGV4dGVuc2lvbjsgd2UgdXNl IGl0CisjIGZyb20gU1FMIGFmdGVyIHRoZSBjcmFzaC1yZXN0YXJ0IGN5Y2xlLgorJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe0NSRUFURSBFWFRFTlNJT04gYW1jaGVja30pOwor CisjIFdpZGUtaXNoIHRhYmxlOiBQSyArIGZvdXIgaW5kZXhlZCBjb2x1bW5zIHBsdXMgYSBu b24taW5kZXhlZCBwYXlsb2FkCisjIHNvIEhPVC1pbmRleGVkIHVwZGF0ZXMgaGF2ZSB3aWR0 aCB0byBhbW9ydGlzZS4gIGZpbGxmYWN0b3IgPSA1MCBrZWVwcworIyBmcmVlIHNwYWNlIG9u LXBhZ2UgZm9yIEhPVC1pbmRleGVkIGNvbnRpbnVhdGlvbnMuCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIGhpX3JlY292ICgKKwkJaWQgICAgICBp bnQgUFJJTUFSWSBLRVksCisJCWMxICAgICAgaW50LAorCQljMiAgICAgIGludCwKKwkJYzMg ICAgICBpbnQsCisJCWM0ICAgICAgaW50LAorCQlwYXlsb2FkIHRleHQKKwkpIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisJQ1JFQVRFIElOREVYIGhpX3JlY292X2MxIE9OIGhpX3JlY292 KGMxKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3ZfYzIgT04gaGlfcmVjb3YoYzIpOworCUNS RUFURSBJTkRFWCBoaV9yZWNvdl9jMyBPTiBoaV9yZWNvdihjMyk7CisJQ1JFQVRFIElOREVY IGhpX3JlY292X2M0IE9OIGhpX3JlY292KGM0KTsKKwlJTlNFUlQgSU5UTyBoaV9yZWNvdiBW QUxVRVMgKDEsIDEwMCwgMjAwLCAzMDAsIDQwMCwgJ3BheWxvYWQnKTsKK30pOworCisjIEJ1 aWxkIGEgSE9ULWluZGV4ZWQgY2hhaW46IGZpdmUgVVBEQVRFcywgZWFjaCB0b3VjaGluZyBv bmUgaW5kZXhlZAorIyBjb2x1bW4uICBFdmVyeSBVUERBVEUga2VlcHMgdGhlIG5ldyB2ZXJz aW9uIG9uLXBhZ2UgYW5kIHBsYW50cyBhIGZyZXNoCisjIGluZGV4IGVudHJ5IGJlY2F1c2Ug YzEgaXMgaW5kZXhlZCBhbmQgY2hhbmdlZC4gIFVzZSBhIFNRTCB0cmFuc2FjdGlvbi0KKyMg cmFuZ2UgbG9vcCBzbyBlYWNoIFVQREFURSBpcyBpdHMgb3duIHhhY3QgKHhtaW4veG1heCBk aXN0aW5jdCkuCitmb3IgbXkgJGkgKDEgLi4gNSkKK3sKKwlteSAkbmV3dmFsID0gMTAwICsg JGk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIGhpX3JlY292 IFNFVCBjMSA9ICRuZXd2YWwgV0hFUkUgaWQgPSAxIik7Cit9CisKK215ICRwcmVfcHJ1bmUg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgbl9ob3RfaW5kZXhl ZCBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNvdicpfSk7Citj bXBfb2soJHByZV9wcnVuZSwgJz4nLCAwLAorCSdIT1QtaW5kZXhlZCBjaGFpbiBoYXMgYXQg bGVhc3Qgb25lIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbiBiZWZvcmUgcHJ1bmUnKTsKKwor IyBGb3JjZSBhIHBydW5lLiAgVGhlIGNoYWluIGhhcyBkZWFkIGhlYXAtb25seSBtZW1iZXJz IGZyb20gdGhlIGVhcmx5CisjIFVQREFURXMgKHRoZWlyIHhtaW5zIGFyZSBub3cgY29tbWl0 dGVkIGFuZCBiZWxvdyB0aGUgc25hcHNob3QgaG9yaXpvbikuCisjIEEgU0VMRUNUIHVuZGVy IGRlZmF1bHQgaXNvbGF0aW9uIHZpc2l0cyB0aGUgcGFnZTsgdW5kZXIKKyMgZGVmYXVsdF9z dGF0aXN0aWNzX3RhcmdldCBldGMuIHRoYXQncyBub3QgZW5vdWdoIG9uIGl0cyBvd24gdG8g dHJpZ2dlcgorIyBwcnVuZS4gIFRoZSByZWxpYWJsZSB3YXkgdG8gZHJpdmUgb3Bwb3J0dW5p c3RpYyBwcnVuZSBpcyBhIHF1ZXJ5IHRoYXQKKyMgZXhlcmNpc2VzIHRoZSBoZWFwX3BhZ2Vf cHJ1bmVfb3B0IHBhdGgsIHdoaWNoIGZpcmVzIGZyb20gYW4gaW5kZXhzY2FuCisjIHRoYXQg ZmluZHMgdGhlIHBhZ2Ugbm9uLWFsbC12aXNpYmxlLiAgVXNlIGEgc2VxdWVudGlhbCBzY2Fu IHBsdXMgYQorIyBzdWJzZXF1ZW50IFVQREFURSB0aGF0IGl0c2VsZiBsb29rcyBmb3IgZnJl ZSBzcGFjZSAoaGVhcF91cGRhdGUgY2FsbHMKKyMgaGVhcF9wYWdlX3BydW5lX29wdCkuCisk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VUIGVuYWJsZV9pbmRleHNjYW4g PSBvZmY7CisJU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb3Y7CisJVVBEQVRFIGhpX3Jl Y292IFNFVCBwYXlsb2FkID0gJ3BydW5lZCcgV0hFUkUgaWQgPSAxOworfSk7CisKKyMgUmVh ZCB0aGUgY2hhaW4gc3RhdGUgYWZ0ZXIgdGhlIHBydW5lOiB0aGUgbGl2ZSBIT1QtaW5kZXhl ZCB2ZXJzaW9uCisjIHJlbWFpbnMgd2hpbGUgZGVhZCBtZW1iZXJzIGNvbGxhcHNlIHRvIExQ X1JFRElSRUNUIGZvcndhcmRlcnMuCitteSAkcG9zdF9wcnVuZSA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292Jyl9KTsKK2NtcF9vaygkcG9zdF9wcnVu ZSwgJz4nLCAwLAorCSdsaXZlIEhPVC1pbmRleGVkIHZlcnNpb24gc3Vydml2ZXMgb3Bwb3J0 dW5pc3RpYyBwcnVuZScpOworCisjIENyYXNoLXJlc3RhcnQuICBzdG9wKCdpbW1lZGlhdGUn KSBpcyB0aGUgc3RhbmRhcmQgImtpbGwgLTkiIHNpbXVsYXRpb24KKyMgdXNlZCBlbHNld2hl cmUgaW4gc3JjL3Rlc3QvcmVjb3ZlcnkvLiAgV2UgaW50ZW50aW9uYWxseSBkbyBOT1QgaXNz dWUgYQorIyBDSEVDS1BPSU5UIGZpcnN0OiB0aGF0IHdvdWxkIGFkdmFuY2UgdGhlIHJlZG8g cG9pbnQgcGFzdCB0aGUgSE9ULWluZGV4ZWQKKyMgVVBEQVRFL3BydW5lIHJlY29yZHMgYW5k IGxlYXZlIG5vdGhpbmcgZm9yIHJlY292ZXJ5IHRvIHJlcGxheS4gIENyYXNoaW5nCisjIHdp dGhvdXQgYSBjaGVja3BvaW50IGZvcmNlcyBzdGFydHVwIHJlZG8gdG8gcmVjb25zdHJ1Y3Qg dGhlIGNvbGxhcHNlZAorIyBjaGFpbiBmcm9tIFdBTCwgYW5kIHdhbF9jb25zaXN0ZW5jeV9j aGVja2luZyA9ICdhbGwnIChzZXQgYWJvdmUpIGNvbXBhcmVzCisjIGVhY2ggcmVwbGF5ZWQg cGFnZSBhZ2FpbnN0IGl0cyBmdWxsLXBhZ2UgaW1hZ2UsIGNhdGNoaW5nIGFueSBkaXZlcmdl bmNlCisjIGJldHdlZW4gdGhlIHdyaXRlIHBhdGggYW5kIHRoZSByZWRvIHBhdGguCiskbm9k ZS0+c3RvcCgnaW1tZWRpYXRlJyk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgMS4gQ2hhaW4gd2Fs ayB2aWEgdGhlIGluZGV4ZWQgY29sdW1uIG9uIHRoZSBsaXZlIHJvdyByZXR1cm5zIHRoZQor IyAgICBjb3JyZWN0IChhbmQgb25seSB0aGUgY29ycmVjdCkgdHVwbGUuICBjMSA9IDEwNSB3 YXMgdGhlIGxhc3QKKyMgICAgVVBEQVRFLCBzbyB0aGUgbGl2ZSB0dXBsZSBoYXMgYzEgPSAx MDUgYW5kIGMyLi5jNCB1bmNoYW5nZWQuCitteSAkbGl2ZSA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisJU0VMRUNUIGlk LCBjMSwgYzIsIGMzLCBjNCwgcGF5bG9hZCBGUk9NIGhpX3JlY292IFdIRVJFIGMxID0gMTA1 OworfSk7CitpcygkbGl2ZSwgIjF8MTA1fDIwMHwzMDB8NDAwfHBydW5lZCIsCisJJ2luZGV4 IGxvb2t1cCBvbiBjaGFpbiByZXR1cm5zIHRoZSBwb3N0LXBydW5lIGxpdmUgdHVwbGUnKTsK KworIyBPbGRlciBjMSB2YWx1ZXMgYXJlIG5vdCByZWFjaGFibGU6IGV2ZXJ5IHN0YWxlIGJ0 cmVlIGVudHJ5IHRoYXQKKyMgY2hhaW4tcmVzb2x2ZXMgYWNyb3NzIGEgSE9UL1NJVSBob3Ag bXVzdCBiZSBkcm9wcGVkIGJ5IHRoZSByZWFkLXNpZGUKKyMgY3Jvc3NlZC1hdHRyaWJ1dGUg Yml0bWFwLgorbXkgJHN0YWxlX2NvdW50ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb3YgV0hFUkUgYzEgPSAxMDB9KTsK K2lzKCRzdGFsZV9jb3VudCwgJzAnLAorCSdzdGFsZSBidHJlZSBlbnRyaWVzIGFyZSBmaWx0 ZXJlZCBieSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwJyk7CisKKyMgMi4gdmVyaWZ5 X2hlYXBhbSByZXBvcnRzIG5vIGVycm9ycyBvbiB0aGUgcmVsYXRpb24gKHNraXBfb3B0aW9u ID0KKyMgICAgJ2FsbC1mcm96ZW4nIGlzIHRoZSBkZWZhdWx0OyB3ZSB3YW50IHRvIHNjYW4g ZXZlcnl0aGluZykuCitteSAkaGVhcGNoZWNrID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxeworCVNFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY292 JywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgOj0gJ25vbmUn LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfdG9hc3QgOj0g ZmFsc2UpOworfSk7CitpcygkaGVhcGNoZWNrLCAnMCcsCisJJ3ZlcmlmeV9oZWFwYW0gcmVw b3J0cyB6ZXJvIGVycm9ycyBhZnRlciBjcmFzaCByZWNvdmVyeScpOworCisjIDMuIFJlY2xh bWF0aW9uOiBhZnRlciB0aGUgbGl2ZSByb3cgaXMgZGVsZXRlZCwgdHdvIFZBQ1VVTSAoRlJF RVpFKQorIyAgICBwYXNzZXMgZHJpdmUgcHJ1bmUgdG8gcmV2aXNpdCB0aGUgcGFnZSBhbmQg cmVjbGFpbSB0aGUgbm93LWZ1bGx5LWRlYWQKKyMgICAgY29sbGFwc2VkIGNoYWluICh0aGUg Zmlyc3QgcmVtb3ZlcyB0aGUgZGVhZCByb3cncyBpbmRleCBlbnRyaWVzIGFuZAorIyAgICBy ZWR1Y2VzIGl0cyBMUDsgdGhlIHNlY29uZCByZWNsYWltcyB0aGUgdW5yZWZlcmVuY2VkIG1l bWJlcnMgYW5kCisjICAgIHJlLXBvaW50cyB0aGUgcmVkaXJlY3QpLiAgQWZ0ZXIgdGhhdCwg bl9ob3RfaW5kZXhlZCBtdXN0IGJlIHplcm8uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7REVMRVRFIEZST00gaGlfcmVjb3YgV0hFUkUgaWQgPSAxfSk7Ciskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NL SVBQSU5HKSBoaV9yZWNvdn0pOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgaGlfcmVjb3Z9KTsKK215 ICRmaW5hbCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hv dF9pbmRleGVkIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292 Jyl9KTsKK2lzKCRmaW5hbCwgJzAnLAorCSd0d28gVkFDVVVNIChGUkVFWkUpIHBhc3NlcyBh ZnRlciBERUxFVEUgcmVjbGFpbSB0aGUgY2hhaW4gcG9zdC1yZWNvdmVyeScpOworCiskbm9k ZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOTAzMGY3ZjY4NTEKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CkBAIC0w LDAgKzEsMTcxOSBAQAorLS0KKy0tIEhPVF9JTkRFWEVEX1VQREFURVMKKy0tIFRlc3QgSE9U LWluZGV4ZWQgdXBkYXRlIChob3QtaW5kZXhlZCksIGFrYSBIT1QtaW5kZXhlZCwgYmVoYXZp b3VyCistLQorLS0gRXZlcnkgVVBEQVRFIGluIHRoaXMgZmlsZSBtb2RpZmllcyBhdCBsZWFz dCBvbmUgbm9uLXN1bW1hcml6aW5nCistLSBpbmRleGVkIGF0dHJpYnV0ZS4gIE9uIGEgcHJl LWhvdC1pbmRleGVkIHNlcnZlciBhbGwgb2YgdGhlc2Ugd291bGQgYmUKKy0tIG5vbi1IT1Q7 IG9uIHRoZSBob3QtaW5kZXhlZCBicmFuY2ggZWFjaCBlbGlnaWJsZSB1cGRhdGUgc3RheXMg b24tcGFnZSBhbmQKKy0tIGluc2VydHMgaW50byBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0 dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZC4KKy0tCistLSBXZSB2ZXJpZnkgZm91ciB0aGlu Z3M6CistLSAgIChBKSBwZ19zdGF0IGNvdW50ZXJzOiBIT1QgYW5kIGhvdC1pbmRleGVkIGNv dW50cyBpbmNyZW1lbnQgYXMgZXhwZWN0ZWQKKy0tICAgKEIpIGluZGV4IGxvb2t1cHMgcmV0 dXJuIHRoZSBuZXcgdmFsdWUgYW5kIG5vdCB0aGUgc3RhbGUgdmFsdWUKKy0tICAgICAgIGZv ciBFUVVBTElUWSBxdWVyaWVzICh0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0IGRyb3Bz IGEKKy0tICAgICAgIGxlYWYgd2hvc2UgY292ZXJlZCBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0 aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlKQorLS0gICAoQykgcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMgcmVwb3J0cyB0aGUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgd2UgZXhwZWN0 CistLSAgIChEKSAqKlJBTkdFL0lORVFVQUxJVFkqKiBxdWVyaWVzIHJldHVybiB0aGUgY29y cmVjdCBudW1iZXIgb2YKKy0tICAgICAgIHR1cGxlcyAtLSB0aGlzIGlzIHRoZSBjbGFzcyBv ZiBidWdzIHdoZXJlIGEgc3RhbGUgYnRyZWUKKy0tICAgICAgIGVudHJ5J3Mga2V5IGlzIHN0 aWxsIHJlYWNoYWJsZSB2aWEgYSBsb29zZXIgc2NhbiBrZXk7IHRoZQorLS0gICAgICAgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhcnJpdmFsIGJlY2F1c2Ug dGhlIGluZGV4J3MKKy0tICAgICAgIGF0dHJpYnV0ZSBjaGFuZ2VkIGJldHdlZW4gdGhhdCBs ZWFmJ3MgdGFyZ2V0IGFuZCB0aGUgbGl2ZSB0dXBsZQorLS0KK0NSRUFURSBFWFRFTlNJT04g SUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMg QklHSU5ULCBob3QgQklHSU5UKSBBUyAkJAorREVDTEFSRSByZWxfb2lkIG9pZDsKK0JFR0lO CisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVz IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSAr CisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVw bGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBS RVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBnZXRfaGlfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFC TEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5ULCBob3RfaWR4IEJJR0lOVCkgQVMgJCQK K0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6 OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90 dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0Uo cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90X2lkeCA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAg ICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEuIEJhc2ljIGhvdC1p bmRleGVkOiBtb2RpZnlpbmcgYW4gaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9UIGFuZCBjb3Vu dHMgYXMgaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2Jhc2ljICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9j b2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYmFzaWNfaWR4IE9OIGhpX2Jhc2ljKGluZGV4ZWRf Y29sKTsKK0lOU0VSVCBJTlRPIGhpX2Jhc2ljIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcp OworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhv dC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBIT1QgY291bnRlciBh bmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFURSBoaV9iYXNpYyBT RVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9iYXNpYycpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0t LS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cp CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgaW5kZXguCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwg aW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlf YmFzaWMKKyAgIFJlY2hlY2sgQ29uZDogKGluZGV4ZWRfY29sID0gMTUwKQorICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIGhpX2Jhc2ljX2lkeAorICAgICAgICAgSW5kZXggQ29uZDog KGluZGV4ZWRfY29sID0gMTUwKQorKDQgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2Nv bCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIHwgaW5kZXhl ZF9jb2wgCistLS0tKy0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTUwCisoMSByb3cp CisKKy0tIFRoZSBvbGQgdmFsdWUgaXMgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgaW5k ZXg6IHRoZSBzdGFsZSBidHJlZQorLS0gZW50cnkgKGluZGV4ZWRfY29sPTEwMCkgd2Fsa3Mg dG8gdGhlIGN1cnJlbnQgdHVwbGUgdmlhIHRoZSBob3QtaW5kZXhlZCBob3AsCistLSBub2Rl SW5kZXhzY2FuIHJlLWV2YWx1YXRlcyBgaW5kZXhlZF9jb2wgPSAxMDBgIGFnYWluc3QgdGhl IGN1cnJlbnQKKy0tIHR1cGxlIChpbmRleGVkX2NvbD0xNTApLCBhbmQgdGhlIHJvdyBpcyBj b3JyZWN0bHkgZHJvcHBlZC4gIFRoaXMgaXMKKy0tIHRoZSBlcXVhbGl0eS1sb29rdXAgY2Fz ZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGhhbmRsZXMuCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTAw OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBv biBoaV9iYXNpYworICAgUmVjaGVjayBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gaGlfYmFzaWNfaWR4CisgICAgICAgICBJbmRleCBD b25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisoNCByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBo aV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3Mp CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gcGdfcmVsYXRpb25faG90X2luZGV4ZWRf c3RhdHMgc2VlcyBvbmUgSE9ULWluZGV4ZWQgdmVyc2lvbiwgemVybyBIT1QgcmVkaXJlY3Rz ICh0aGUKKy0tIGNoYWluIGhhcyBub3QgeWV0IGJlZW4gcHJ1bmVkIHNvIG5vIExQX1JFRElS RUNUIGV4aXN0cykuCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCwgbl9jaGFpbnMsIGF2Z19jaGFp bl9sZW4sIG1heF9jaGFpbl9sZW4KK0ZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3Rh dHMoJ2hpX2Jhc2ljJyk7Cisgbl9ob3RfaW5kZXhlZCB8IG5fY2hhaW5zIHwgYXZnX2NoYWlu X2xlbiB8IG1heF9jaGFpbl9sZW4gCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMSB8ICAgICAgICAw IHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgIDAKKygxIHJvdykKKworRFJPUCBUQUJM RSBoaV9iYXNpYzsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gUkFOR0UvSU5F UVVBTElUWSBjb3JyZWN0bmVzcyBhZnRlciBob3QtaW5kZXhlZCBvbiBhbiBpbmRleGVkIGNv bHVtbgorLS0KKy0tIFRoaXMgaXMgdGhlIHRlc3QgY2xhc3MgdGhhdCBjYXRjaGVzIHRoZSBo b3QtaW5kZXhlZCBmYWxzZS1kdXAgYnVnOiBhIHN0YWxlCistLSBidHJlZSBlbnRyeSB3aG9z ZSBrZXkgdmFsdWUgc3RpbGwgc2F0aXNmaWVzIHRoZSByYW5nZSBwcmVkaWNhdGUsCistLSBy ZWFjaGFibGUgdmlhIHRoZSBob3QtaW5kZXhlZCBjaGFpbiBob3AuCistLQorLS0gVG8gZXhl cmNpc2UgdGhlIGJ1ZyB3ZSBtdXN0IGZvcmNlIGFuIEluZGV4U2NhbiBwbGFuICh0aGUKKy0t IEluZGV4T25seVNjYW4gcGF0aCBwZXJtaXNzaXZlbHkgZHJvcHMgZXZlcnkgaG90LWluZGV4 ZWQtcmVhY2hhYmxlIGluZGV4LW9ubHkKKy0tIGhpdDsgdGhlIEJpdG1hcEhlYXBTY2FuIHBh dGggZGVkdXBzIGJ5IFRJRCkuICBXZSBpbmNsdWRlIGEgcGF5bG9hZAorLS0gY29sdW1uIG5v dCBwcmVzZW50IGluIHRoZSBQSyBzbyB0aGUgcGxhbm5lciBtdXN0IGhlYXAtZmV0Y2guCist LQorLS0gVGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgbWFrZXMgdGhl IEluZGV4U2NhbiByZXR1cm4gdGhlIGNvcnJlY3QKKy0tIGNvdW50IG9mIDE6IHRoZSBzdGFs ZSBlbnRyeSAoJzEnLCc1JykgY2hhaW4td2Fsa3MgdG8gdGhlIGxpdmUgdHVwbGUgYWNyb3Nz CistLSB0aGUgYi1jaGFuZ2luZyBob3AsIGFuZCBiZWNhdXNlIHRoZSBQSyBjb3ZlcnMgYiB0 aGUgb3ZlcmxhcCBpcyBub24tZW1wdHksIHNvCistLSB0aGUgc3RhbGUgbGVhZiBpcyBkcm9w cGVkLiAgVGhlIGZyZXNoIGVudHJ5ICgnMScsJzE1JykgcG9pbnRzIGRpcmVjdGx5IGF0IHRo ZQorLS0gbGl2ZSB0dXBsZSAobm8gaG9wIGFmdGVyIGl0KSBhbmQgaXMga2VwdC4gIFRoZSBP UkRFUiBCWSBsaWtld2lzZSByZXR1cm5zIHRoZQorLS0gc2luZ2xlIGxpdmUgcm93LgorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmFuZ2UgKAorICAgIGEg aW50LAorICAgIGIgaW50LAorICAgIHBheWxvYWQgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAo YSwgYikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0lOU0VSVCBJTlRPIGhpX3Jhbmdl IFZBTFVFUyAoMSwgNSwgJ2hpJyk7CistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNl Y29uZCBQSyBjb2x1bW46IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlu cywgbmV3IGVudHJ5ICgnMScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9p bnRzIGF0CistLSB0aGUgY2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJl Y3RseSBhdCB0aGUgbmV3CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2Ug U0VUIGIgPSAxNSBXSEVSRSBhID0gMSBBTkQgYiA9IDU7CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW46IHBh eWxvYWQgSVMgTk9UIE5VTEwgZm9yY2VzIGhlYXAgZmV0Y2gsIG5vIEluZGV4T25seVNjYW4u CistLSBUaGUgc3RhbGUgKCcxJywnNScpIGxlYWYgaXMgZHJvcHBlZCBieSB0aGUgY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwLCBzbyB0aGlzCistLSByZXR1cm5zIDEuCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIElu ZGV4IFNjYW4gdXNpbmcgaGlfcmFuZ2VfcGtleSBvbiBoaV9yYW5nZQorICAgICAgICAgSW5k ZXggQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAwKSkKKyAgICAgICAgIEZpbHRlcjogKHBh eWxvYWQgSVMgTk9UIE5VTEwpCisoNCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgYSwgYiBG Uk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMIE9SREVS IEJZIGI7CisgYSB8IGIgIAorLS0tKy0tLS0KKyAxIHwgMTUKKygxIHJvdykKKworLS0gSW5k ZXhPbmx5U2NhbjogdGhlIHBhZ2UgaG9sZHMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVt YmVyIHNvIGl0IGlzIG5ldmVyIGFsbC12aXNpYmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBo ZWFwIGZldGNoIGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBz dGFsZSAoJzEnLCc1JykKKy0tIGxlYWYsIHNvIGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIg PCAxMDA7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5n IGhpX3JhbmdlX3BrZXkgb24gaGlfcmFuZ2UKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9 IDEpIEFORCAoYiA8IDEwMCkpCisoMyByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAgMQorKDEgcm93KQorCistLSBCaXRtYXBIZWFwU2NhbjogVElEIGRlZHVwIGNvbGxhcHNl cyB0aGUgc3RhbGUgYW5kIGZyZXNoIGhpdHMuCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9m ZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1JFU0VUIGVuYWJsZV9iaXRt YXBzY2FuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9y YW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBoaV9yYW5nZQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSAx KSBBTkQgKGIgPCAxMDApKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGhp X3JhbmdlX3BrZXkKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAo YiA8IDEwMCkpCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBX SEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEg cm93KQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25s eXNjYW47CistLSBTZXFTY2FuOiByZWFkcyB0aGUgaGVhcCBkaXJlY3RseSwgc2VlcyBleGFj dGx5IG9uZSBsaXZlIHR1cGxlLgorUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRVQgZW5hYmxl X2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2Nh biBvbiBoaV9yYW5nZQorICAgICAgICAgRmlsdGVyOiAoKGIgPCAxMDApIEFORCAoYSA9IDEp KQorKDMgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9 IDEgQU5EIGIgPCAxMDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKwor UkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOwor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CistLSBTYW1lIHNoYXBlIG9uIGEgc2Vjb25kYXJ5 IChub24tUEspIGJ0cmVlOiBhbm90aGVyIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiBiLgorQ1JF QVRFIElOREVYIGhpX3JhbmdlX2JfaWR4IE9OIGhpX3JhbmdlKGIpOworVVBEQVRFIGhpX3Jh bmdlIFNFVCBiID0gMjUgV0hFUkUgYSA9IDEgQU5EIGIgPSAxNTsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2Nh biBwYXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxpZXMuCitTRUxF Q1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFO RCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSBy b3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitEUk9QIFRBQkxFIGhpX3JhbmdlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAz LiBBbGwtb3Itbm9uZSBvbiBhIG11bHRpLWluZGV4ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9u bHkgdG91Y2hlcyBpbmRleGVzCistLSAgICB3aG9zZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX211bHRpICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAg ICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX211bHRpX2FfaWR4IE9OIGhpX211bHRpKGNvbF9h KTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9iX2lkeCBPTiBoaV9tdWx0aShjb2xfYik7CitD UkVBVEUgSU5ERVggaGlfbXVsdGlfY19pZHggT04gaGlfbXVsdGkoY29sX2MpOworSU5TRVJU IElOVE8gaGlfbXVsdGkgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0g Y29sX2Egb25seTogdW5kZXIgaG90LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5kZXhlZCwgYW5k IG9ubHkgaGlfbXVsdGlfYV9pZHgKKy0tIGdldHMgYSBuZXcgZW50cnkuICBoaV9tdWx0aV9i X2lkeCAvIGhpX211bHRpX2NfaWR4IGtlZXAgcG9pbnRpbmcKKy0tIGF0IHRoZSBjaGFpbiBy b290LgorVVBEQVRFIGhpX211bHRpIFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsKKyB1cGRhdGVzIHwgaG90IHwg aG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwg ICAgICAgMQorKDEgcm93KQorCistLSBMb29rdXBzIG9uIGFsbCB0aHJlZSBpbmRleGVzIHJl dHVybiB0aGUgcm93LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZS T00gaGlfbXVsdGkgV0hFUkUgY29sX2EgPSAxNTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93 KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIwOworIGlkIAor LS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNv bF9jID0gMzA7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworLS0gT2xkIGNvbF9hIHZh bHVlIGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5 IHRoZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCkuCitTRUxFQ1Qg aWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworIGlkIAorLS0tLQorKDAgcm93 cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX211bHRpOworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBNdWx0aS1jb2x1bW4gYnRyZWU6IGhvdC1p bmRleGVkIG9uIHBhcnQgb2YgYSBjb21wb3NpdGUga2V5CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jb21wb3NpdGUgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGRhdGEgdGV4dAor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2NvbXBvc2l0ZV9h Yl9pZHggT04gaGlfY29tcG9zaXRlKGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBoaV9j b21wb3NpdGUgVkFMVUVTICgxLCAxMCwgMjAsICdkYXRhJyk7CistLSBjb2xfYSBpcyBwYXJ0 IG9mIHRoZSBjb21wb3NpdGUga2V5OiBob3QtaW5kZXhlZC4KK1VQREFURSBoaV9jb21wb3Np dGUgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBv c2l0ZScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0t LS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFJlc2V0 IGFuZCB0aGVuIHVwZGF0ZSBjb2xfYiAoYWxzbyBwYXJ0IG9mIHRoZSBrZXkpLgorVVBEQVRF IGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxMDsKK1VQREFURSBoaV9jb21wb3NpdGUgU0VU IGNvbF9iID0gMjU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScp OworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0t LQorICAgICAgIDMgfCAgIDMgfCAgICAgICAzCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlf Y29tcG9zaXRlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1LiBQYXJ0aWFsIGlu ZGV4OiBzdGF0dXMgdHJhbnNpdGlvbiBvdXQtb2YtcHJlZGljYXRlCistLQorLS0gJ3N0YXR1 cycgaXMgYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4uICBBIGNoYW5nZSB0byBh IHByZWRpY2F0ZQorLS0gY29sdW1uIGNhbiBmbGlwIGEgcm93IGluIG9yIG91dCBvZiB0aGUg aW5kZXgsIHdoaWNoIHRoZSByZWFkLXNpZGUga2V5CistLSByZWNoZWNrIGNhbm5vdCBkZXRl Y3QsIHNvIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgY29uc2VydmF0aXZlbHkgZGlzcXVhbGlm aWVzCistLSBIT1QtaW5kZXhlZCBmb3IgYW55IHByZWRpY2F0ZS1jb2x1bW4gY2hhbmdlIChl dmVuIHRoaXMgb3V0LW9mLXByZWRpY2F0ZSAtPgorLS0gb3V0LW9mLXByZWRpY2F0ZSBjYXNl KS4gIFRoZSB1cGRhdGUgaXMgdGhlcmVmb3JlIG5vbi1IT1QsIGFuZCB0aGUgcGFydGlhbAor LS0gaW5kZXggY29ycmVjdGx5IHN0YXlzIGVtcHR5IGZvciB0aGVzZSBub24tJ2FjdGl2ZScg cm93cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRp YWwgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBk YXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9w YXJ0aWFsX2FjdGl2ZV9pZHggT04gaGlfcGFydGlhbChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3RpdmUn LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5hY3Rp dmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOworLS0gb3V0IC0+IG91dCB0cmFuc2l0aW9uIG9uIHRoZSBwcmVk aWNhdGUgY29sdW1uOiBIT1QtaW5kZXhlZCBrZWVwcyBpdCBvbi1wYWdlLAorLS0gYW5kIHRo ZSBwYXJ0aWFsIGluZGV4IGdldHMgbm8gZW50cnkgKHRoZSByb3cgc2F0aXNmaWVzIHRoZSBw cmVkaWNhdGUgbmVpdGhlcgorLS0gYmVmb3JlIG5vciBhZnRlciB0aGUgdXBkYXRlKS4KK1VQ REFURSBoaV9wYXJ0aWFsIFNFVCBzdGF0dXMgPSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0aWFsJyk7CisgdXBkYXRlcyB8IGhv dCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAg MSB8ICAgICAgIDEKKygxIHJvdykKKworLS0gVGhlIHBhcnRpYWwgaW5kZXggc3RpbGwgY29y cmVjdGx5IGFuc3dlcnMgImFjdGl2ZSIgcXVlcmllcy4KK1NFTEVDVCBpZCwgc3RhdHVzIEZS T00gaGlfcGFydGlhbCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKKyBpZCB8IHN0YXR1cyAK Ky0tLS0rLS0tLS0tLS0KKyAgMSB8IGFjdGl2ZQorKDEgcm93KQorCitEUk9QIFRBQkxFIGhp X3BhcnRpYWw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDYuIFBhcnRpdGlvbjog aG90LWluZGV4ZWQgaW5zaWRlIG9uZSBwYXJ0aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKAorICAgIGlkIGludCwKKyAgICBwYXJ0aXRp b25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAg IFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9OIEJZIFJBTkdF IChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBoaV9wYXJ0XzEgUEFSVElUSU9OIE9G IGhpX3BhcnQKKyAgICBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9pZHggT04gaGlfcGFydChpbmRl eGVkX2NvbCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2Rh dGEnKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRfMScpOworIHVwZGF0ZXMg fCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEg fCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfcGFydCBXSEVSRSBp bmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0IENBU0NBREU7CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW46IGhv dC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRy aWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJfaWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dl cmVkX2NvbCk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAo KQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29s ID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9idW1wCisg ICAgQkVGT1JFIFVQREFURSBPTiBoaV90cmlnZ2VyCisgICAgRk9SIEVBQ0ggUk9XCisgICAg RVhFQ1VURSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKK0lOU0VSVCBJTlRPIGhpX3Ry aWdnZXIgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CistLSBVUERBVEUncyBTRVQgY2xh dXNlIGRvZXNuJ3QgdG91Y2ggdGhlIGluZGV4ZWQgY29sdW1uLCBidXQgdGhlCistLSB0cmln Z2VyIG1vZGlmaWVzIGl0IHZpYSBoZWFwX21vZGlmeV90dXBsZS4gIGhvdC1pbmRleGVkIG11 c3QgZGV0ZWN0IHRoaXMKKy0tIGFuZCBrZWVwIHRoZSB0dXBsZSBvbi1wYWdlIChIRUFQX0lO REVYRURfVVBEQVRFRCkgcGx1cyBhIG5ldyBidHJlZSBlbnRyeS4KK1VQREFURSBoaV90cmln Z2VyIFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdl dF9oaV9jb3VudCgnaGlfdHJpZ2dlcicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAor LS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCiso MSByb3cpCisKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaGlfdHJpZ2dlciBXSEVSRSBp ZCA9IDE7CisgdHJpZ2dlcmVkX2NvbCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAx MDEKKygxIHJvdykKKworLS0gTmV3IHZhbHVlIHJlYWNoYWJsZS4KK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVk X2NvbCA9IDEwMTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCiso MCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfdHJpZ2dl ciBDQVNDQURFOworRFJPUCBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogSE9ULWlu ZGV4ZWQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gZXhwcmVzc2lvbgorLS0gICAgaW5kZXhl cywgc28gdGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCB1cGRhdGUgKGhvdF9p ZHggPSAwKS4KKy0tICAgIFJlYWRzIHN0YXkgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2pzb25iICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhpX2pzb25iX25hbWVfaWR4IE9OIGhpX2pzb25iICgoZGF0YS0+PiduYW1lJykp OworSU5TRVJUIElOVE8gaGlfanNvbmIgVkFMVUVTICgxLCAneyJuYW1lIjoiQWxpY2UiLCJh Z2UiOjMwfScpOworLS0gQ2hhbmdpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbidzIHZhbHVl IChuYW1lKTogZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QKKy0tIHlldCBzdXBwb3J0ZWQs IHNvIHRoaXMgaXMgYSBub24tSE9UIHVwZGF0ZS4KK1VQREFURSBoaV9qc29uYiBTRVQgZGF0 YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAx OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9qc29uYicpOworIHVwZGF0ZXMgfCBo b3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAg IDAgfCAgICAgICAwCisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF TEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsK KyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlJzsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9qc29uYjsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gR0lOIGluZGV4IHdpdGggY2hhbmdlZCBleHRyYWN0 ZWQga2V5czogaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX2dpbiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRhZ3MgdGV4 dFtdCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfZ2luX3Rh Z3NfaWR4IE9OIGhpX2dpbiBVU0lORyBnaW4gKHRhZ3MpOworSU5TRVJUIElOVE8gaGlfZ2lu IFZBTFVFUyAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddKTsKKy0tIEFkZGluZyBhIHRhZyB5 aWVsZHMgYSBkaWZmZXJlbnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBE QVRFIGhpX2dpbiBTRVQgdGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfZ2luJyk7CisgdXBk YXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAg ICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUn XTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K0RST1AgVEFCTEUgaGlfZ2luOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMC4g UGVyLWluZGV4IEhPVC1pbmRleGVkIGNvdW50ZXJzOiBza2lwcGVkIHZzIG1hdGNoZWQKKy0t CistLSBBIHRhYmxlIHdpdGggdHdvIGluZGVwZW5kZW50IHNlY29uZGFyeSBpbmRleGVzLiAg QW4gVVBEQVRFIHRvdWNoZXMgYQorLS0gY29sdW1uIGNvdmVyZWQgYnkgb25seSBvbmUgb2Yg dGhlbTsgdGhlIEhPVC1pbmRleGVkIHBhdGggbXVzdCBpbnNlcnQKKy0tIGludG8gdGhhdCBv bmUgaW5kZXggYW5kIHNraXAgdGhlIG90aGVyLiAgcGdfc3RhdF9hbGxfaW5kZXhlcyByZXBv cnRzCistLSBtYXRjaGVkPjAgb24gdGhlIHVwZGF0ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBv biB0aGUgdW50b3VjaGVkIGluZGV4LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaG90aWR4X3BlcmluZGV4ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQsCisgICAgYiBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYSBPTiBob3RpZHhfcGVyaW5kZXgoYSk7CitDUkVB VEUgSU5ERVggaG90aWR4X3BlcmluZGV4X2IgT04gaG90aWR4X3BlcmluZGV4KGIpOworSU5T RVJUIElOVE8gaG90aWR4X3BlcmluZGV4IFZBTFVFUyAoMSwgMTAwLCAyMDApOworLS0gTW9k aWZ5IG9ubHkgY29sdW1uIGEuICBIT1QtaW5kZXhlZCBpbnNlcnRzIGludG8gaG90aWR4X3Bl cmluZGV4X2EgYW5kCistLSBza2lwcyBob3RpZHhfcGVyaW5kZXhfYiAocHJpbWFyeSBrZXkg aW5kcmVsaWQgaXMgdGhlIHRhYmxlIGl0c2VsZiBhbmQKKy0tIGFsc28gdW5jaGFuZ2VkLCBz byBpdCBjb3VudHMgYXMgc2tpcHBlZCB0b28pLgorVVBEQVRFIGhvdGlkeF9wZXJpbmRleCBT RVQgYSA9IDEwMSBXSEVSRSBpZCA9IDE7CistLSBGb3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0 YXRzIHRvIHRoZSBzaGFyZWQgZW50cnkuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBu X3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2Fs bF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIg QlkgaW5kZXhyZWxuYW1lOworICAgICBpbmRleHJlbG5hbWUgICAgIHwgbWF0Y2hlZCB8IHNr aXBwZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0KKyBo b3RpZHhfcGVyaW5kZXhfYSAgICB8ICAgICAgIDEgfCAgICAgICAwCisgaG90aWR4X3Blcmlu ZGV4X2IgICAgfCAgICAgICAwIHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9wa2V5IHwg ICAgICAgMCB8ICAgICAgIDEKKygzIHJvd3MpCisKKy0tIEEgc2Vjb25kIFVQREFURSB0b3Vj aGluZyBvbmx5IGIgaW52ZXJ0cyB0aGUgYXNzaWdubWVudC4KK1VQREFURSBob3RpZHhfcGVy aW5kZXggU0VUIGIgPSAyMDEgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisg ICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAg ICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdf c3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4Jwor IE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAgICAgaW5kZXhyZWxuYW1lICAgICB8IG1hdGNo ZWQgfCBza2lwcGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAgfCAgICAgICAxIHwgICAgICAgMQorIGhvdGlk eF9wZXJpbmRleF9iICAgIHwgICAgICAgMSB8ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhf cGtleSB8ICAgICAgIDAgfCAgICAgICAyCisoMyByb3dzKQorCistLSBJbnZhcmlhbnQ6IG1h dGNoZWQgKyBza2lwcGVkID09IG93bmluZyB0YWJsZSdzIG5fdHVwX2hvdF9pbmRleGVkX3Vw ZC4KK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyB0b3RhbCwKKyAg ICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9NIHBnX3N0YXRfYWxsX3Rh YmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSBBUyB0 YWJsZV9ob3RfaWR4X3VwZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSBy ZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7Cisg ICAgIGluZGV4cmVsbmFtZSAgICAgfCB0b3RhbCB8IHRhYmxlX2hvdF9pZHhfdXBkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBob3Rp ZHhfcGVyaW5kZXhfYSAgICB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhf cGVyaW5kZXhfYiAgICB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhfcGVy aW5kZXhfcGtleSB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKygzIHJvd3MpCisKKy0t IEJvb2xlYW4gYXNzZXJ0aW9uIG9mIHRoZSBzYW1lIGludmFyaWFudC4gIFRoaXMgaXMgdGhl IGNhbm9uaWNhbCBmb3JtCistLSByZXZpZXdlcnMgYXNrZWQgZm9yOiBldmVyeSBpbmRleCBl bnRyeSBpcyBlaXRoZXIgbWF0Y2hlZCAodGhlIGluZGV4CistLSBnb3QgYSBmcmVzaCBpbnNl cnQgdGhpcyBVUERBVEUpIG9yIHNraXBwZWQgKEhPVC1pbmRleGVkIGNvcnJlY3RseQorLS0g YXZvaWRlZCBhbiBpbnNlcnQgYmVjYXVzZSB0aGUgaW5kZXgncyBhdHRycyBkaWQgbm90IGNo YW5nZSkuICBJZiB0aGUKKy0tIHR3byBjb3VudGVycyBkcmlmdCBhcGFydCBmcm9tIHRoZSB0 YWJsZS1sZXZlbCBuX3R1cF9ob3RfaW5kZXhlZF91cGQgd2UKKy0tIGhhdmUgZWl0aGVyIGxv c3QgYSBwZXItaW5kZXggaW5jcmVtZW50IG9yIGRvdWJsZS1jb3VudGVkIG9uZS4KK1NFTEVD VCBib29sX2FuZCgobl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3Rf aW5kZXhlZF91cGRfc2tpcHBlZCkgPQorICAgICAgICAgICAgICAgIChTRUxFQ1Qgbl90dXBf aG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCisgICAgICAgICAgICAg ICAgICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcpKQorICAgICAgICAgQVMg cGVyaW5kZXhfaW52YXJpYW50X2hvbGRzCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcwor IFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JzsKKyBwZXJpbmRleF9pbnZhcmlh bnRfaG9sZHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor RFJPUCBUQUJMRSBob3RpZHhfcGVyaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDExLiBMb25nIGhvdC1sb29wIFVQREFURSBzdGF5cyBjb21wYWN0IGFuZCBIT1QtaW5k ZXhlZAorLS0KKy0tIEEgbG9uZyBydW4gb2YgSE9ULWluZGV4ZWQgVVBEQVRFcyB0byBhIHNp bmdsZSByb3cgc3RheXMgY29tcGFjdDogcHJ1bmUKKy0tIGNvbGxhcHNlcyBlYWNoIGRlYWQg dmVyc2lvbiB0byBhIHJlZGlyZWN0IHRvIHRoZSBsaXZlIHR1cGxlIGFuZCByZXVzZXMgaXRz CistLSBzbG90LCBzbyB0aGUgaGVhcCBzdGF5cyBib3VuZGVkIGFuZCB0aGUgY2hhaW4gZG9l cyBub3QgZ3JvdyB1bmJvdW5kZWQuCistLSBFdmVyeSBVUERBVEUgdGhhdCBjaGFuZ2VzIHRo ZSBpbmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVyIGluZGV4LAorLS0gaGVyZSB0 aGUgUEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jaGFpbmNhcCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7 CitDUkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04gaGlfY2hhaW5jYXAoYSk7CitJ TlNFUlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworRE8gJCQKK0RFQ0xBUkUK KyAgICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAg ICBVUERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQg TE9PUDsKK0VORCAkJDsKKy0tIEFmdGVyIDIwMCBVUERBVEVzIHRoZSByb3cncyB2YWx1ZSBp cyAyMDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWluY2FwIFdIRVJFIGlkID0gMTsKKyAgYSAg CistLS0tLQorIDIwMAorKDEgcm93KQorCistLSBFdmVyeSBVUERBVEUgdG9vayB0aGUgSE9U LWluZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlzIHVuY2hhbmdlZCwgc28gaXQgaXMKKy0t IHNraXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWR2YW5jZWQuCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhv dF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdo aV9jaGFpbmNhcCcpOworIGhvdF9pbmRleGVkX2ZpcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworLS0gVGhlIGhlYXAgc3RheWVkIGNvbXBhY3Q6IHBydW5lK2Nv bGxhcHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28gdGhlCistLSBzaW5nbGUg bGl2ZSByb3cgc3RheXMgd2l0aGluIGEgY291cGxlIG9mIHBhZ2VzLiAgcGdfcmVsYXRpb25f c2l6ZSByZWZsZWN0cworLS0gdGhlIHRhYmxlJ3MgYWN0dWFsIGN1cnJlbnQgc2l6ZSByZWdh cmRsZXNzIG9mIHZhY3V1bS9hbmFseXplIHN0YXRzLCB1bmxpa2UKKy0tIHBnX2NsYXNzLnJl bHBhZ2VzICh3aGljaCBpcyBvbmx5IHVwZGF0ZWQgYnkgVkFDVVVNL0FOQUxZWkUgYW5kIHdv dWxkIGJlCistLSB0cml2aWFsbHkgPD0gMSBvbiB0aGlzIG5ldmVyLXZhY3V1bWVkIHRhYmxl IGV2ZW4gaWYgcHJ1bmluZyBoYWQgZmFpbGVkIGFuZAorLS0gdGhlIGhlYXAgaGFkIGJhbGxv b25lZCkuCitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgnaGlfY2hhaW5jYXAnKSA8PSA4MTky ICogMiBBUyBoZWFwX3N0YXllZF9jb21wYWN0OworIGhlYXBfc3RheWVkX2NvbXBhY3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfY2hh aW5jYXA7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEyLiBSZWNsYW1hdGlvbiBv ZiBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBieSBwcnVuZQorLS0KKy0tIEEgZGVh ZCBIT1QtaW5kZXhlZCBjaGFpbiBtZW1iZXIgaXMgcHJlc2VydmVkIGF0IHBydW5lIHRpbWUg KGl0cyBzdGFsZSBsZWFmCistLSBtYXkgc3RpbGwgZXhpc3QpIGFuZCB0aGUgY2hhaW4gY29s bGFwc2VzIHRvIGFuIExQX1JFRElSRUNUIGZvcndhcmRlcjsgdGhlCistLSBpbmRleCBjbGVh bnVwIHBhc3MgdGhlbiBzd2VlcHMgdGhlIHN0YWxlIGxlYWYsIGFuZCBhIGxhdGVyIFZBQ1VV TSByZWNsYWltcworLS0gdGhlIG5vdy11bnJlZmVyZW5jZWQgbWVtYmVyIGFuZCByZS1wb2lu dHMgdGhlIHJlZGlyZWN0IG9uY2UgaXQgZmFsbHMgYmVsb3cKKy0tIHRoZSBnbG9iYWwgeG1p biBob3Jpem9uLiAgV2UgYXNzZXJ0IG9ubHkgdGhhdCB0aGUgY2hhaW4gY29sbGFwc2VzCist LSAobl9jaGFpbnMgPSAwKTogdGhhdCBpcyB0aGUgZGV0ZXJtaW5pc3RpYyBwcm9vZiB0aGUg bWVjaGFuaXNtIHdvcmtlZC4gIFRoZQorLS0gZmluYWwgbWVtYmVyJ3MgcmVjbGFpbSAobl9o b3RfaW5kZXhlZCByZWFjaGluZyAwKSBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgdGhlCistLSBk ZWxldGVkIHR1cGxlIHRvIGZhbGwgYmVsb3cgdGhlIGdsb2JhbCB4bWluIGhvcml6b24sIHdo aWNoIGEgc25hcHNob3QgaGVsZAorLS0gZWxzZXdoZXJlIGluIHRoZSBydW5uaW5nIHJlZ3Jl c3Npb24gY2x1c3RlciBjYW4gZGVsYXkgaW5kZWZpbml0ZWx5IC0tIHNvIHdlCistLSBkbyBu b3QgYXNzZXJ0IGFuIGV4YWN0IG5faG90X2luZGV4ZWQgaGVyZSAoYXV0b3ZhY3V1bV9lbmFi bGVkIGlzIG9mZiBvbmx5IHRvCistLSBrZWVwIG91ciBvd24gVkFDVVVNcyBmcm9tIGJlaW5n IHNraXBwZWQgb24gYSBzdG9sZW4gbG9jaykuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQg PSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfcmVjbGFpbV9hX2lkeCBPTiBoaV9yZWNsYWlt KGEpOworSU5TRVJUIElOVE8gaGlfcmVjbGFpbSBWQUxVRVMgKDEsIDEwMCk7CistLSBHZW5l cmF0ZSBhIGNvbGxhcHNlZCBjaGFpbiB2aWEgYSBIT1QtaW5kZXhlZCB1cGRhdGUuCitVUERB VEUgaGlfcmVjbGFpbSBTRVQgYSA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qgbl9ob3Rf aW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0KKyAg RlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworIGhv dF9pbmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIERlbGV0ZSB0aGUgbGl2ZSB0 dXBsZS4gIFRoZSBmaXJzdCBWQUNVVU0gY29sbGFwc2VzIHRoZSBkZWFkIGNoYWluIGFuZCBz d2VlcHMKKy0tIHRoZSBzdGFsZSBsZWFmOyBhIGxhdGVyIFZBQ1VVTSByZWNsYWltcyB0aGUg bm93LXVucmVmZXJlbmNlZCBtZW1iZXIgb25jZSBpdAorLS0gZmFsbHMgYmVsb3cgdGhlIGds b2JhbCB4bWluIGhvcml6b24uICBBc3NlcnQgb25seSB0aGUgZGV0ZXJtaW5pc3RpYworLS0g Y29sbGFwc2UgKG5fY2hhaW5zID0gMCk7IHRoZSBtZW1iZXItcmVjbGFpbSBjb3VudCBpcyBo b3Jpem9uLWRlcGVuZGVudCBhbmQKKy0tIG5vdCBzb21ldGhpbmcgYSByZWdyZXNzIHRlc3Qg Y2FuIHBpbiBkb3duLgorREVMRVRFIEZST00gaGlfcmVjbGFpbSBXSEVSRSBpZCA9IDE7CitW QUNVVU0gaGlfcmVjbGFpbTsKK1ZBQ1VVTSBoaV9yZWNsYWltOworU0VMRUNUIG5fY2hhaW5z ID0gMCBBUyBjaGFpbl9jb2xsYXBzZWRfYWZ0ZXJfcmVjbGFpbQorICBGUk9NIHBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNsYWltJyk7CisgY2hhaW5fY29sbGFwc2Vk X2FmdGVyX3JlY2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3JlY2xhaW07CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDEzLiBQYWdlIHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVy IGlzIG5ldmVyIG1hcmtlZCBhbGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxpYmVy YXRlbHkgbGVhdmVzIFBEX0FMTF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQgc3Rp bGwKKy0tIGNhcnJpZXMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBpbmRl eC1vbmx5IHNjYW4gbXVzdCBoZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBzbyB0 aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0YWxl IGJ0cmVlCistLSBlbnRyaWVzLgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0aCB3 aXRoIFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0gdGhl biByZWFkIHBkX2ZsYWdzIHZpYSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBwYWdl IG11c3Qgc3RpbGwgY2FycnkKKy0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9pbmRl eGVkID4gMCkgQU5EIG11c3Qgbm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAwMDQp LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0g NTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV92bV9h X2lkeCBPTiBoaV92bShhKTsKK0lOU0VSVCBJTlRPIGhpX3ZtIFZBTFVFUyAoMSwgMSk7Cist LSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBsZWF2ZSBhIG11bHRpLWhvcCBjaGFpbiwgc28g YSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQKKy0tIG1lbWJlciByZW1haW5zIG9uIHRoZSBwYWdl IGFmdGVyIHBydW5lLCB3aGljaCBpcyB3aGF0IHRoaXMgdGVzdCBuZWVkcy4KK1VQREFURSBo aV92bSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3ZtIFNFVCBhID0gMyBX SEVSRSBpZCA9IDE7CistLSBGb3JjZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBW QUNVVU0gd2l0aCBESVNBQkxFX1BBR0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBw YWdlOyBGUkVFWkUgcHVzaGVzIGhpbnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55Cist LSBwYWdlIGJlYXJpbmcgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3Rp bGwgcmVwb3J0IGFsbF92aXNpYmxlID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BB R0VfU0tJUFBJTkcpIGhpX3ZtOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3Rf aW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMo J2hpX3ZtJyk7CisgaG90X2luZGV4ZWRfcHJlc2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworLS0gUERfQUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJl IDAgb24gYSBwYWdlIHdpdGggYSBwcmVzZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAm IDQpID0gMCBBUyBub3RfbWFya2VkX2FsbF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIo Z2V0X3Jhd19wYWdlKCdoaV92bScsIDApKTsKKyBub3RfbWFya2VkX2FsbF92aXNpYmxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhp X3ZtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVw OiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBhIHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJl bmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAgb3IgaW5kZXggZW50cmllczsgaXQgb25seSB1 cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRoZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVz dCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRlCistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5k ZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJlIGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBu b3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRlciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBp ZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVlbnQgVVBEQVRFIG11c3QgY29udGludWUgdG8g ZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3lj bGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMg KDEsIDEwMCk7CistLSBDeWNsZSB0aGUgY29sdW1uIG5hbWUgYW5kIGNvbmZpcm0gYm90aCBp bnRlcm1lZGlhdGUgZm9ybXMgZHJpdmUgSE9ULWluZGV4ZWQuCitBTFRFUiBUQUJMRSBoaV9j eWNsZSBSRU5BTUUgQ09MVU1OIGEgVE8gYjsKK1VQREFURSBoaV9jeWNsZSBTRVQgYiA9IDIw MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVy X2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUnKTsKKyBob3Rf aW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENP TFVNTiBiIFRPIGE7CitVUERBVEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAx OworLS0gTG9va3VwIHZpYSB0aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwg bm90IGFueSBvZiB0aGUKKy0tIHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsK KyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAgMSB8IDMwMAorKDEgcm93KQorCitTRUxFQ1Qg aWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykK KworU0VMRUNUIGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9jeWNs ZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkg Y29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hl biBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhl IGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5 IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMK Ky0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwg aXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVu Y2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jy aW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4g VVNJTkcgYnJpbihiY29sKTsKK0lOU0VSVCBJTlRPIGhpX2JyaW4gVkFMVUVTICgxLCAxMDAp OworLS0gQ2FwdHVyZSB0aGUgSE9ULWluZGV4ZWQgY291bnRlciBiZWZvcmUsIGRyaXZlIGEg QlJJTi1vbmx5IHVwZGF0ZSwKKy0tIGFuZCBhc3NlcnQgdGhhdCBjbGFzc2ljIEhPVCBhZHZh bmNlZCB3aGlsZSBIT1QtaW5kZXhlZCBkaWQgbm90LgorU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9p ZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBo aV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKGhvdCAtIDApID4g MCBBUyBjbGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVm b3JlIEFTIGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgn aGlfYnJpbicpOworIGNsYXNzaWNfaG90X2ZpcmVkIHwgaG90X2luZGV4ZWRfZGlkX25vdF9m aXJlIAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSBUaGUgQlJJTiBpbmRleCBz ZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5zZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9i cmluIFdIRVJFIGlkID0gMTsKKyBiY29sIAorLS0tLS0tCisgIDIwMAorKDEgcm93KQorCitE Uk9QIFRBQkxFIGhpX2JyaW47CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBV TklRVUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9y IGVxdWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVy IHRoZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFn ZXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZy ZXNoIGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxl YWYgZm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3Mg ayBjaGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFn ZS1iYXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQor LS0gb3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUg dW5pcXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZy ZXNoIGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRl ciBpdCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWlu ZSBjb25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNl IHRoZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0 dHJpYnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3Vu dW0gKGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAy bmQgaW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVF UyAoMS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAx MDA7ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9p bmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBBIG51bWVyaWNhbGx5LWVxdWFsIGlu c2VydCBtdXN0IGNvbmZsaWN0ICh0aGUgZnJlc2ggbGVhZiBjYXRjaGVzIGl0KToKK0lOU0VS VCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEpOyAgICAgICAgICAgICAgLS0gZXhwZWN0 IGR1cGxpY2F0ZSBrZXkgZXJyb3IKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9s YXRlcyB1bmlxdWUgY29uc3RyYWludCAiaGlfdW51bV9rX2tleSIKK0RFVEFJTDogIEtleSAo ayk9KDEuMCkgYWxyZWFkeSBleGlzdHMuCistLSBBIGdlbnVpbmVseSBkaWZmZXJlbnQgdmFs dWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMi4wLCAyKTsK K1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRFUiBCWSBqOworICBrICAgfCAgaiAgCist LS0tLS0rLS0tLS0KKyAgMi4wIHwgICAyCisgMS4wMCB8IDEwMAorKDIgcm93cykKKworRFJP UCBUQUJMRSBoaV91bnVtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JF QVRFIElOREVYIGFuZCBSRUlOREVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0t CistLSBBIGZyZXNobHkgYnVpbHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3Vy cmVudCB2YWx1ZXMsIG5ldmVyIGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxk IHNjYW5zIGxpdmUgdHVwbGVzIG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhl ZCBsaXZlIHR1cGxlJ3MgZW50cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmll cyBoYXZlIG5vCistLSBob3AgYWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBrZWVwcyB0aGVtLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfcmVpbmRleCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhp X3JlaW5kZXgoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9 IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBo aV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4g bG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRl eCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKKy0tIEJ1aWxkIGEgTkVXIGluZGV4IGFuZCBSRUlOREVYIHRoZSBleGlzdGluZyBv bmUgb3ZlciB0aGUgbGl2ZSBjaGFpbnMuCitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9iIE9O IGhpX3JlaW5kZXgoYik7CitSRUlOREVYIElOREVYIGhpX3JlaW5kZXhfYTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlaW5kZXggV0hFUkUg YSA9IDIwNDsgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBpZCA0CisgaWQgfCAgYSAgCist LS0tKy0tLS0tCisgIDQgfCAyMDQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00g aGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisg Y291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlf cmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hseSBidWlsdCBp bmRleCAtPiAyCisgaWQgCistLS0tCisgIDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitEUk9QIFRBQkxFIGhpX3JlaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFp bnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMgYXJlIGRyb3BwZWQs IGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0gSE9ULWluZGV4ZWQg bWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBvZiBzdWNoIGEgbm8t aW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUgd2l0aG91dCBlcnJvciwgYW5kIHJl YWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0IGZvcndhcmRlcnMu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9kcm9waWR4IChp ZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92 YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9kcm9waWR4X2EgT04g aGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VMRUNUIGcsIGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9waWR4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhp X2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBs b25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5k ZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9kcm9waWR4 Jyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworLS0gRHJvcCBldmVyeSBpbmRleCwgbGVhdmluZyBwcmVzZXJ2ZWQgSE9ULWluZGV4 ZWQgbWVtYmVycyB3aXRoIG5vIGluZGV4IHRvIHN3ZWVwLgorRFJPUCBJTkRFWCBoaV9kcm9w aWR4X2E7CitBTFRFUiBUQUJMRSBoaV9kcm9waWR4IERST1AgQ09OU1RSQUlOVCBoaV9kcm9w aWR4X3BrZXk7CistLSBNdXN0IG5vdCBjcmFzaCBvbiB0aGUgbm8taW5kZXggcGF0aDsgdHdv IHBhc3NlcyBleGVyY2lzZSB0aGUgc2Vjb25kLXBhc3MKKy0tIHJlY2xhaW0gZ3VhcmQgYXMg d2VsbC4KK1ZBQ1VVTSBoaV9kcm9waWR4OworVkFDVVVNIGhpX2Ryb3BpZHg7CistLSBSZWFk cyByZW1haW4gY29ycmVjdCBhZnRlciB0aGUgaW5kZXhlcyBhcmUgZ29uZS4KK1NFTEVDVCBp ZCwgYSBGUk9NIGhpX2Ryb3BpZHggT1JERVIgQlkgaWQ7CisgaWQgfCAgYSAgCistLS0tKy0t LS0tCisgIDEgfCAyMDEKKyAgMiB8IDIwMgorICAzIHwgMjAzCisgIDQgfCAyMDQKKyAgNSB8 IDIwNQorICA2IHwgMjA2CisoNiByb3dzKQorCitEUk9QIFRBQkxFIGhpX2Ryb3BpZHg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE5LiBSZS1jb2xsYXBzZSBvZiBhIGRhdGEt cmVkaXJlY3QgY2hhaW4gYWNyb3NzIHBhcnRpYWwgVkFDVVVNcworLS0KKy0tIEEgY2hhaW4g dGhhdCBjb2xsYXBzZXMgdG8gYSBIT1QtaW5kZXhlZCBkYXRhIHJlZGlyZWN0LCBpcyB2YWN1 dW1lZCB3aXRoCistLSBJTkRFWF9DTEVBTlVQIG9mZiAoc28gdGhlIHN0YWxlIGxlYXZlcyBh bmQgdGhlIHJlZGlyZWN0IHN1cnZpdmUpLCB0aGVuCistLSByZWNlaXZlcyBmdXJ0aGVyIEhP VC1pbmRleGVkIHVwZGF0ZXMgdGhhdCByZS1jb2xsYXBzZSB0aGUgY2hhaW4gYW5kCistLSBy ZS1wb2ludCB0aGUgcmVkaXJlY3QgYXQgYSBuZXcgbGl2ZSB0dXBsZSwgbXVzdCBub3QgbGVh dmUgdGhlIHJlZGlyZWN0CistLSBkYW5nbGluZy4gIEEgc3Vic2VxdWVudCBmdWxsIFZBQ1VV TSBtdXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJyb3IsIGxlYXZlIHRoZQorLS0gaGVhcCBjb25z aXN0ZW50ICh2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgbm90aGluZyksIGFuZCByZWFkcyBtdXN0 IHN0YXkKKy0tIGNvcnJlY3QuICAoUmVncmVzc2lvbjogYW4gZWFybGllciByZXZpc2lvbiBj cmFzaGVkIHJlY2xhaW1pbmcgYSBtaWQtY2hhaW4KKy0tIG1lbWJlciB3aGlsZSBhIGRhdGEg cmVkaXJlY3Qgc3RpbGwgcG9pbnRlZCBwYXN0IGl0LikKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hlY2s7CitDUkVBVEUg VEFCTEUgaGlfcmVjb2xsYXBzZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCkgV0lUSCAo ZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUg SU5ERVggaGlfcmVjb2xsYXBzZV9hIE9OIGhpX3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5U TyBoaV9yZWNvbGxhcHNlIFZBTFVFUyAoMSwgMSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhP VC1pbmRleGVkIHVwZGF0ZXMsIHRoZW4gcHJ1bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxl CistLSBsZWF2aW5nIHRoZSBzdGFsZSBidHJlZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NM RUFOVVAgb2ZmKS4KK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFD VVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNl OiBtb3JlIEhPVC1pbmRleGVkIHVwZGF0ZXMgZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSBy ZWRpcmVjdAorLS0gdGFyZ2V0OyB0aGUgbmV4dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEg cmVkaXJlY3QgYXQgdGhlIG5ldyBmaXJzdCBsaXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBp dHMgdW5pb24uCitVUERBVEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAx OworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBu b3cgcmVjbGFpbXMgdGhlIGRlYWQgY2hhaW47IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11 c3Qgbm90CistLSBkYW5nbGUuICBUd28gcGFzc2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGly ZWN0IHJlLXBvaW50IHNlY29uZCBwYXNzLgorVkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNV VU0gaGlfcmVjb2xsYXBzZTsKKy0tIEhlYXAgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lz dGVudCAobm8gcm93cyA9PSBubyBjb3JydXB0aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5 X2hlYXBhbSgnaGlfcmVjb2xsYXBzZScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwg bXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBz ZSBXSEVSRSBhID0gNTsgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgMQorIGlkIHwgYSAK Ky0tLS0rLS0tCisgIDEgfCA1CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhp X3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291 bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNvbGxhcHNlIE9SREVSIEJZIGlkOworIGlkIHwg YSAKKy0tLS0rLS0tCisgIDEgfCA1CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfcmVjb2xs YXBzZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9u IG92ZXIgYW4gZW50cnkgdGhhdCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0t CistLSBBIGRhdGEgcmVkaXJlY3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEg Yml0bWFwLCBzbyBpdCByZXBvcnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdl IHRydWUpIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4 X2RlbGV0ZV9jaGVja19odGlkIG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJl YWQgaXRzIGJsb2IgYXMgYQorLS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xs YXBzZSBhIGNoYWluIHJvb3QgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5n IHRoZSBzdGFsZSBsZWFmIHRoYXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiks IHRoZW4gaW5zZXJ0CistLSBtYW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBi dHJlZSBib3R0b20tdXAgZGVsZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVw bGVzIG92ZXIgdGhhdCBzdGFsZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhpX2lkZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9p ZGRlbF9hIE9OIGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgx LCAxKTsKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAg ICAgICAgLS0gSE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdI RVJFIGlkID0gMTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0 YSByZWRpcmVjdCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9m IHRoZSBzdGFsZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0t IGRlbGV0aW9uLCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRo ZSBkYXRhLXJlZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMu ICBNdXN0IG5vdCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlf aWRkZWwgU0VMRUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZB Q1VVTSBoaV9pZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwn KTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAg LS0gY3VycmVudCB2YWx1ZSAtPiBhID0gMworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCAz CisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9pZGRl bDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjEuIEEgY2hhbmdlIHRvIGEgY29s dW1uIGNvdmVyZWQgYnkgYSBub24tYnRyZWUgaW5kZXggQU0gaXMgSE9ULWluZGV4ZWQKKy0t CistLSBBIEhPVC1pbmRleGVkIHVwZGF0ZSBsZWF2ZXMgYSBzdGFsZSBwcmUtdXBkYXRlIGxl YWYgdGhhdCB0aGUgcmVhZCBzaWRlCistLSBmaWx0ZXJzIHZpYSB0aGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwLCB3aGljaCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljLgorLS0gQSBj b2x1bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCAoaGVyZSBhIEdpU1QgaW5kZXgg b24gYSBwb2ludCBjb2x1bW4pCistLSBpcyB0aGVyZWZvcmUgSE9ULWluZGV4ZWQgbGlrZSBh bnkgb3RoZXIsIGFuZCB0aGUgR2lTVCBpbmRleCBzdGlsbCByZXR1cm5zCistLSBjb3JyZWN0 IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4gIEEgY2hhbmdlIHRvIGEgYnRyZWUtb25seSBj b2x1bW4gb24gdGhlCistLSBzYW1lIHRhYmxlIGlzIGxpa2V3aXNlIEhPVC1pbmRleGVkLgor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbm9uYnRyZWUgKGlk IGludCBQUklNQVJZIEtFWSwgdGFnIGludCwgcCBwb2ludCkKKyAgICBXSVRIIChmaWxsZmFj dG9yID0gMTApOworQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3RhZyBPTiBoaV9ub25idHJl ZSAodGFnKTsgICAgICAgICAgLS0gYnRyZWUgaW5kZXgKK0NSRUFURSBJTkRFWCBoaV9ub25i dHJlZV9wIE9OIGhpX25vbmJ0cmVlIFVTSU5HIGdpc3QgKHApOyAgIC0tIEdpU1QsIG5vbi1i dHJlZQorSU5TRVJUIElOVE8gaGlfbm9uYnRyZWUgU0VMRUNUIGcsIGcsIHBvaW50KGcsIGcp CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gQ2hhbmdlIHRoZSBH aVNULWNvdmVyZWQgY29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCku CitVUERBVEUgaGlfbm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSAr IDEwMDApOworU0VMRUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBn ZXRfaGlfY291bnQoJ2hpX25vbmJ0cmVlJyk7CisgZ2lzdF9jb2xfaG90X2luZGV4ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAyMDAKKygxIHJvdykK KworLS0gVGhlIEdpU1QgaW5kZXggbXVzdCByZXR1cm4gY29ycmVjdCByZXN1bHRzOiB0aGUg b2xkIHBvc2l0aW9ucyBhcmUgZ29uZSBhbmQKKy0tIGV2ZXJ5IHJvdyBpcyBmb3VuZCBhdCBp dHMgbmV3IHBvc2l0aW9uIChubyBzdGFsZSBsZWFmIHN1cmZhY2VzIGFuIG9sZCBrZXkpLgor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGF0X29sZF9w b3NpdGlvbnMKKyAgICBGUk9NIGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAgYm94KHBvaW50KDAs IDApLCBwb2ludCgzMDAsIDMwMCkpOworIGF0X29sZF9wb3NpdGlvbnMgCistLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBBUyBhdF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxA IGJveChwb2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworIGF0X25ld19w b3NpdGlvbnMgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMjAwCisoMSBy b3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gQ2hhbmdpbmcgdGhlIGJ0cmVlLW9u bHkgY29sdW1uIChwIHVuY2hhbmdlZCkgc3RheXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaGlf bm9uYnRyZWUgU0VUIHRhZyA9IHRhZyArIDEwMDA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMg YnRyZWVfY29sX2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJl ZScpOworIGJ0cmVlX2NvbF9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMi4gQUJBIG9uIGEgdW5pcXVlIGtleSBhY3Jvc3Mg dHdvIGRpc3RpbmN0IGxpdmUgcm93czogYSBrZXkgY3ljbGVkIGF3YXkKKy0tIGFuZCBiYWNr IG11c3Qgc3RpbGwgY29sbGlkZSB3aXRoIGFub3RoZXIgcm93IHRoYXQgaG9sZHMgaXQuICBU aGUgc3RhbGUKKy0tIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZSBtdXN0IG5vdCBsZXQgYSBn ZW51aW5lIGR1cGxpY2F0ZSBzbGlwIHBhc3QgdGhlCistLSB1bmlxdWVuZXNzIGNoZWNrIC0t IHRoZSByZWFkLXNpZGUgcmVjaGVjayBjb21wYXJlcyB0aGUgbGl2ZSBrZXksIG5vdCBqdXN0 CistLSBhIGNoYW5nZWQtYXR0cmlidXRlIGJpdG1hcC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX2FiYSAoayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaV9hYmFfayBPTiBoaV9hYmEgKGsp OworQ1JFQVRFIElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQgSU5UTyBo aV9hYmEgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CistLSBDeWNsZSByb3cxJ3MgdW5pcXVl IGtleSAxIC0+IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9U LWluZGV4ZWQgYW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFU RSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsg PSAxIFdIRVJFIHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2lu ZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2FiYScpOworIGN5Y2xlZF9ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSByb3cxIGlzIGxp dmUgYXQgayA9IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRvIGsgPSAxIG11c3QgcmFpc2Ug YSB1bmlxdWUKKy0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBzdGFsZSAnMScgbGVhdmVzIGZy b20gdGhlIGN5Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDIwOwor RVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJoaV9hYmFfayIKK0RFVEFJTDogIEtleSAoayk9KDEpIGFscmVhZHkgZXhpc3RzLgorRFJP UCBUQUJMRSBoaV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0 aWFsIGluZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4u ICBGbGlwcGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2 aW5nIHRoZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUg cHJlZGljYXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQs IHNvCistLSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3Rh bGUgcGFydGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBp cyBpbnZvbHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9wYXJ0cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4p CisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJl ZF9rIE9OIGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9w YXJ0cHJlZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CistLSBGbGlwIHRoZSBwcmVkaWNhdGUg Y29sdW1uICdhY3RpdmUnIHRydWUgLT4gZmFsc2U7IHRoZSBpbmRleCBrZXkgayBpcworLS0g dW5jaGFuZ2VkLiAgVGhlIHJvdyBubyBsb25nZXIgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUs IHNvIGl0cyBwYXJ0aWFsLWluZGV4CistLSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQsIG5vdCBs ZWZ0IHBvaW50aW5nIGludG8gdGhlIGNoYWluLgorVVBEQVRFIGhpX3BhcnRwcmVkIFNFVCBh Y3RpdmUgPSBmYWxzZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdCwgaG90X2lkeCBGUk9NIGdl dF9oaV9jb3VudCgnaGlfcGFydHByZWQnKTsKKyBob3QgfCBob3RfaWR4IAorLS0tLS0rLS0t LS0tLS0tCisgICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgcGFydGlhbCBpbmRl eCBtdXN0IG5vdCBzdXJmYWNlIHRoZSByb3cgbm93IHRoYXQgYWN0aXZlID0gZmFsc2UuCist LSBBIHF1ZXJ5IHdob3NlIHF1YWwgZXhhY3RseSBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRp Y2F0ZSB1c2VzIHRoZSBpbmRleAorLS0gd2l0aG91dCByZS1maWx0ZXJpbmcgJ2FjdGl2ZScg b24gdGhlIGhlYXAsIHNvIGEgc3RhbGUgZW50cnkgd291bGQgc3VyZmFjZS4KK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgYWN0aXZl OworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXgg U2NhbiB1c2luZyBoaV9wYXJ0cHJlZF9rIG9uIGhpX3BhcnRwcmVkCisoMSByb3cpCisKK1NF TEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFjdGl2ZTsKKyBp ZCAKKy0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJF IGFjdGl2ZTsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRwcmVkOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAg UmVwZWF0ZWQgdXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0t IG9mIGNvbHVtbiBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1l bWJlcnMgd2hvc2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWlu KSBhbmQga2VlcHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJv b3QgcmVkaXJlY3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2Fs ayBjcm9zc2VzIG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5k ZXggYW5kIGFtY2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFw c2UsIGFuZCBhIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdp dGhvdXQgc2V2ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQs IGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZh bHNlKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2EgT04gaGlfc3R1Ym1peCAoYSk7CitD UkVBVEUgSU5ERVggaGlfc3R1Ym1peF9iIE9OIGhpX3N0dWJtaXggKGIpOworSU5TRVJUIElO VE8gaGlfc3R1Ym1peCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX3N0dWJtaXgg U0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7ICAgLS0gY2hhbmdlcyBhCitVUERBVEUgaGlfc3R1 Ym1peCBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1 cGVyc2VkZXMpCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7 ICAtLSBjaGFuZ2VzIGIKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhLCBi IEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTI7ICAgLS0gY3VycmVudCBhCisgaWQgfCBh ICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKwor U0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBiID0gMTAxOyAgLS0gY3Vy cmVudCBiCisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTIgfCAx MDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTA7 ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dzKQorCitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU ICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVw dGlvbiBhY3Jvc3Mgc3R1YnMKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKKy0tIEEgc2Vjb25k IHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rpbmcgc3R1YnMgKG5vIHByaW9yWG1heCBzZXZl cikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDEzIFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBh ID0gMTM7CisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTMgfCAx MDEKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4 Jyk7CisgYmxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3N0dWJtaXg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI1LiBFeGNsdXNpb24tY29uc3RyYWludCB0 YWJsZXMgYXJlIEhPVC1pbmRleGVkLWVsaWdpYmxlLgorLS0KKy0tIEFuIGV4Y2x1c2lvbiBj b25zdHJhaW50IGlzIGVuZm9yY2VkIGJ5IGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludCwKKy0tIHdoaWNoIHJlY2hlY2tzIGVhY2ggY2FuZGlkYXRlIGFnYWluc3QgdGhl IGxpdmUgdHVwbGUncyBjdXJyZW50IGluZGV4LWZvcm0KKy0tIHdpdGggdGhlIGNvbnN0cmFp bnQncyBvd24gb3BlcmF0b3JzLCBzbyBhIHN0YWxlIGVudHJ5IGxlZnQgYnkgYSBIT1QtaW5k ZXhlZAorLS0gdXBkYXRlIGlzIHNraXBwZWQgd2hpbGUgdGhlIGxpdmUga2V5IGFsd2F5cyBo YXMgaXRzIG93biBlbnRyeS4gIFVwZGF0aW5nIGEKKy0tIG5vbi1jb25zdHJhaW5lZCBpbmRl eGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCAodGhlIEdpU1QgZXhjbHVzaW9uIGluZGV4IGlz CistLSBza2lwcGVkKSwgYW5kIHRoZSBjb25zdHJhaW50IHN0YXlzIGNvcnJlY3QuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9leGNsICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgdGFnIGludCwKKyAgICBkdXJpbmcgaW50NHJhbmdlLAor ICAgIEVYQ0xVREUgVVNJTkcgZ2lzdCAoZHVyaW5nIFdJVEggJiYpCispIFdJVEggKGZpbGxm YWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfZXhjbF90YWcgT04gaGlfZXhjbCh0YWcp OworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDEsIDEwMCwgaW50NHJhbmdlKDEsIDEw KSksICgyLCAyMDAsIGludDRyYW5nZSgyMCwgMzApKTsKKy0tIFVwZGF0ZSBhIG5vbi1jb25z dHJhaW5lZCBpbmRleGVkIGNvbHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGlu ZGV4CistLSBhbmQgUEsgc2tpcHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQg aXMgc3RpbGwgZW5mb3JjZWQuCitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfZXhjbCcpOworIHRhZ191cGRhdGVfaG90X2lu ZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0lOU0VS VCBJTlRPIGhpX2V4Y2wgVkFMVUVTICgzLCAzMDAsIGludDRyYW5nZSg1LCAxNSkpOyAgLS0g b3ZlcmxhcHMgaWQ9MSdzICgxLDEwKQorRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUg dmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgImhpX2V4Y2xfZHVyaW5nX2V4Y2wiCitE RVRBSUw6ICBLZXkgKGR1cmluZyk9KFs1LDE1KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChkdXJpbmcpPShbMSwxMCkpLgorLS0gTW92ZSBpZD0xJ3MgcmFuZ2UgYXdheSAodGhp cyB1cGRhdGVzIHRoZSBHaVNUIGluZGV4LCBsZWF2aW5nIGEgc3RhbGUgZW50cnkKKy0tIGZv ciB0aGUgb2xkICgxLDEwKSByYW5nZSkuICBBIHJhbmdlIG92ZXJsYXBwaW5nIG9ubHkgdGhl IE9MRCByYW5nZSBub3cKKy0tIGluc2VydHMgY2xlYW5seSAodGhlIHN0YWxlIGVudHJ5IGlz IHNraXBwZWQpOyBvbmUgb3ZlcmxhcHBpbmcgdGhlIE5FVyByYW5nZQorLS0gc3RpbGwgY29u ZmxpY3RzLgorVVBEQVRFIGhpX2V4Y2wgU0VUIGR1cmluZyA9IGludDRyYW5nZSgxMDAsIDEx MCkgV0hFUkUgaWQgPSAxOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDQsIDQwMCwg aW50NHJhbmdlKDUsIDE1KSk7ICAgLS0gb25seSBvdmVybGFwcGVkIG9sZCByYW5nZTogT0sK K0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICg1LCA1MDAsIGludDRyYW5nZSgxMDUsIDEx NSkpOy0tIG92ZXJsYXBzIG5ldyAoMTAwLDExMCk6IGNvbmZsaWN0CitFUlJPUjogIGNvbmZs aWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhj bF9kdXJpbmdfZXhjbCIKK0RFVEFJTDogIEtleSAoZHVyaW5nKT0oWzEwNSwxMTUpKSBjb25m bGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGR1cmluZyk9KFsxMDAsMTEwKSkuCitEUk9QIFRB QkxFIGhpX2V4Y2w7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBUT0FTVCBp bnRlcmFjdGlvbi4gIEFuIGluZGV4ZWQgY29sdW1uIHN0b3JlZCBvdXQtb2YtbGluZSBtdXN0 IGJlaGF2ZQorLS0gY29ycmVjdGx5IGFjcm9zcyBIT1QtaW5kZXhlZCB1cGRhdGVzOiBhbiBl bnRyeSBrZXB0IGFjcm9zcyBhbiB1cGRhdGUgb2YgYQorLS0gZGlmZmVyZW50IGNvbHVtbiBz dGlsbCByZXNvbHZlcyB0byB0aGUgKHVuY2hhbmdlZCkgdG9hc3RlZCB2YWx1ZSwgYW5kIGFm dGVyCistLSB0aGUgdG9hc3RlZCBjb2x1bW4gaXRzZWxmIGlzIGNoYW5nZWQgdGhlIHN0YWxl IGVudHJ5IGlzIGRyb3BwZWQgYnkgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAg KG5vIHZhbHVlIGNvbXBhcmlzb24gb3IgZGV0b2FzdGluZyBpcyBuZWVkZWQpLgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdG9hc3QgKGlkIGludCBQUklN QVJZIEtFWSwgYmlnIHRleHQsIHRhZyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitB TFRFUiBUQUJMRSBoaV90b2FzdCBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVS TkFMOyAgLS0gbm8gY29tcHJlc3Npb24KK0NSRUFURSBJTkRFWCBoaV90b2FzdF9iaWcgT04g aGlfdG9hc3QgKGJpZyk7CitDUkVBVEUgSU5ERVggaGlfdG9hc3RfdGFnIE9OIGhpX3RvYXN0 ICh0YWcpOworSU5TRVJUIElOVE8gaGlfdG9hc3QgVkFMVUVTICgxLCByZXBlYXQoJ0EnLCAy MDAwKSwgMTApOworLS0gVGhlIGJpZyB2YWx1ZSBpcyBzdG9yZWQgb3V0LW9mLWxpbmUuCitT RUxFQ1QgcGdfY29sdW1uX3NpemUoYmlnKSA+IDE1MDAgQVMgYmlnX2lzX2V4dGVybmFsIEZS T00gaGlfdG9hc3QgV0hFUkUgaWQgPSAxOworIGJpZ19pc19leHRlcm5hbCAKKy0tLS0tLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGFn IGxlYXZlcyBiaWcgKGFuZCBpdHMgaW5kZXggZW50cnkpIHVuY2hhbmdlZC4KK1VQREFURSBo aV90b2FzdCBTRVQgdGFnID0gMTEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAw IEFTIHRhZ191cGRhdGVfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RvYXN0 Jyk7CisgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCB0YWcsIGxlbmd0aChiaWcpIEZST00g aGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7CisgaWQgfCB0YWcgfCBs ZW5ndGggCistLS0tKy0tLS0tKy0tLS0tLS0tCisgIDEgfCAgMTEgfCAgIDIwMDAKKygxIHJv dykKKworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRoZSB0b2FzdGVkIGluZGV4ZWQgY29s dW1uIGl0c2VsZjogdGhlIG9sZCBlbnRyeSBpcworLS0gbm93IHN0YWxlIGJlY2F1c2UgdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBzaG93cyBiaWcgY2hhbmdlZC4KK1VQREFURSBo aV90b2FzdCBTRVQgYmlnID0gcmVwZWF0KCdCJywgMjAwMCkgV0hFUkUgaWQgPSAxOworU0VM RUNUIGlkIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7ICAg LS0gc3RhbGU6IDAgcm93cworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkLCBs ZW5ndGgoYmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgnQicsIDIwMDAp OyAgLS0gY3VycmVudAorIGlkIHwgbGVuZ3RoIAorLS0tLSstLS0tLS0tLQorICAxIHwgICAy MDAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3RvYXN0Jyk7Cisg Ymxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3RvYXN0OworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyNy4gQUJBIG9uIGFuIGluZGV4ZWQgY29sdW1uLiAgQSBI T1QtaW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQKKy0tIGNvbHVtbiB0byBh IHZhbHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkgaGVsZCBsZWF2ZXMgdHdv IGxlYXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNoYWluLXJlc29sdmluZyB0 byB0aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJlY2hlY2sgY2Fubm90IHRl bGwgdGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cgdHdpY2U7IHRoZQorLS0g Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBsZWFm IChpdHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5nIGhvcHMpIGFuZCBrZWVw cyBvbmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5kZXggc2NhbgorLS0gcmV0 dXJucyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVzdCBub3QgY2hhbmdlIHRo YXQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGlk IGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVgg aGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEs IDEsIDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSBpZCA9IDE7ICAgLS0g SE9ULWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUgaGlfYWJhIFNFVCBrID0g MSBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3ljbGVkIGJhY2sgKEFCQSkK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlfYWJhIFdIRVJFIGsgPSAx OyAgICAgLS0gZXhhY3RseSAxCisgazFfb25jZSAKKy0tLS0tLS0tLQorICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGszX2dvbmUgRlJPTSBoaV9hYmEgV0hFUkUg ayA9IDM7ICAgICAtLSAwIChzdGFsZSBkcm9wcGVkKQorIGszX2dvbmUgCistLS0tLS0tLS0K KyAgICAgICAwCisoMSByb3cpCisKK1JFSU5ERVggSU5ERVggaGlfYWJhX2s7CitTRUxFQ1Qg Y291bnQoKikgQVMgazFfYWZ0ZXJfcmVpbmRleCBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsg IC0tIHN0aWxsIDEKKyBrMV9hZnRlcl9yZWluZGV4IAorLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdo aV9hYmEnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfYWJhOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOC4gUGFydGlhbCBpbmRleCwgcHJlZGlj YXRlIGNvbHVtbiBjaGFuZ2VkIGJ1dCB0aGUgcm93IFNUQVlTIGluIHRoZSBpbmRleAorLS0g KHByZWRpY2F0ZSBzdGlsbCB0cnVlLCBrZXkgdW5jaGFuZ2VkKS4gIFRoZSB1cGRhdGUgaXMg SE9ULWluZGV4ZWQ7IHNlbGVjdGl2ZQorLS0gbWFpbnRlbmFuY2UgcmUtaW5zZXJ0cyBhIGZy ZXNoIGVudHJ5ICh0aGUgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGFuZCBzdGlsbAorLS0g aG9sZHMpLCBzbyB0aGUgcm93IGlzIHN0aWxsIHJldHVybmVkIC0tIHRoZSBiaXRtYXAgZHJv cHMgdGhlIG9sZGVyIGVudHJ5IGFuZAorLS0gdGhlIGZyZXNoIG9uZSByZS1zdXBwbGllcyBp dC4gIEd1YXJkcyBhZ2FpbnN0IGEgImxvc3Qgcm93IiBmcm9tIG92ZXItZWFnZXIKKy0tIGRy b3BwaW5nLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFy dHN0YXkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIG4gaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2sgT04gaGlfcGFydHN0YXkg KGspIFdIRVJFIG4gPiAwOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2lkMiBPTiBoaV9w YXJ0c3RheSAoaWQpOworSU5TRVJUIElOVE8gaGlfcGFydHN0YXkgVkFMVUVTICgxLCA1LCAz KTsKK1VQREFURSBoaV9wYXJ0c3RheSBTRVQgbiA9IDcgV0hFUkUgaWQgPSAxOyAgIC0tIG4g My0+Nywgc3RpbGwgPiAwLCBrIHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBzdGF5 X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0c3RheScpOworIHN0 YXlfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBzdGF5X3Jvd3MgRlJPTSBoaV9wYXJ0c3RheSBX SEVSRSBrID0gNSBBTkQgbiA+IDA7ICAgLS0gd2FudCAxCisgc3RheV9yb3dzIAorLS0tLS0t LS0tLS0KKyAgICAgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHN0YXk7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI5LiBQYXJ0aXRpb25lZCB0YWJsZS4gIEEgd2l0 aGluLXBhcnRpdGlvbiBVUERBVEUgb2Ygb25lIGluZGV4ZWQgY29sdW1uIGlzCistLSBIT1Qt aW5kZXhlZCBvbiB0aGUgbGVhZiBwYXJ0aXRpb24ncyBoZWFwIGV4YWN0bHkgYXMgZm9yIGEg bm9uLXBhcnRpdGlvbmVkCistLSB0YWJsZTsgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIGlz IGEgZGVsZXRlK2luc2VydCBhbmQgbmV2ZXIgSE9ULgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoaWQgaW50LCBhIGludCwgYiBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnQxIFBBUlRJVElPTiBP RiBoaV9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCkKKyAgICBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYSBPTiBoaV9wYXJ0IChhKTsK K0NSRUFURSBJTkRFWCBoaV9wYXJ0X2IgT04gaGlfcGFydCAoYik7CitJTlNFUlQgSU5UTyBo aV9wYXJ0IFZBTFVFUyAoMSwgMTAsIDIwKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBhID0gMTEg V0hFUkUgaWQgPSAxOyAgIC0tIG9uZSBpbmRleGVkIGNvbCwgd2l0aGluIHBhcnRpdGlvbgor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2Nv dW50KCdoaV9wYXJ0MScpOworIHBhcnRfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTEgRlJP TSBoaV9wYXJ0IFdIRVJFIGEgPSAxMTsgICAtLSB3YW50IDEKKyBhMTEgCistLS0tLQorICAg MQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYTEwIEZST00gaGlfcGFydCBXSEVS RSBhID0gMTA7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorIGExMCAKKy0tLS0tCisg ICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQxJyk7Cisg Ymxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3BhcnQ7CistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDMwLiBOb24tYnRyZWUgYWNjZXNzIG1ldGhvZCAoaGFzaCku ICBSZWFkLXNpZGUgc3RhbGVuZXNzIGlzIGFjY2Vzcy1tZXRob2QKKy0tIGFnbm9zdGljICh0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwKSwgc28gYW55IGluZGV4IEFNJ3MgY29sdW1u IGlzCistLSBIT1QtaW5kZXhlZC4gIEhhc2ggaXMgdGhlIHNoYXJwZXN0IGNhc2U6IGl0cyBz Y2FucyByZWNoZWNrIHRoZSBoZWFwIHZhbHVlLAorLS0gd2hpY2ggYWxvbmUgY2Fubm90IGRp c2FtYmlndWF0ZSBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpIC0tIHRoZQor LS0gYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBzbyB0aGUgcm93IGlzIHJldHVy bmVkIGV4YWN0bHkgb25jZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2hhc2ggKGlkIGludCBQUklNQVJZIEtFWSwgdiBpbnQsIHcgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdiBPTiBoaV9oYXNoIFVT SU5HIGhhc2ggKHYpOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdyBPTiBoaV9oYXNoICh3KTsK K0lOU0VSVCBJTlRPIGhpX2hhc2ggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9o YXNoIFNFVCB2ID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSAx MCBXSEVSRSBpZCA9IDE7ICAgLS0gQUJBOiAxMCAtPiA5OSAtPiAxMCwgdyB1bmNoYW5nZWQK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgaGFzaF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfaGFzaCcpOworIGhhc2hfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3Yx MCBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQgMSAobm8gZHVwbGljYXRl KQorIGhhc2hfdjEwIAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVD VCBjb3VudCgqKSBBUyBoYXNoX3Y5OSBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDk5OyAgIC0t IHdhbnQgMCAoc3RhbGUgZHJvcHBlZCkKKyBoYXNoX3Y5OSAKKy0tLS0tLS0tLS0KKyAgICAg ICAgMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9oYXNoOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAzMS4gRERMIGFmdGVyIGEgSE9ULWluZGV4ZWQgY2hhaW4gZXhpc3RzLiAgVGhl IHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKy0tIGJpdG1hcCBvbiB0aGUgcGFnZSBpcyBrZXll ZCBieSBwaHlzaWNhbCBhdHRyaWJ1dGUgbnVtYmVyIGFuZCBzaXplZCBieSB0aGUKKy0tIHJl bGF0aW9uJ3MgbmF0dHMgQVQgV1JJVEUgVElNRS4gIEluZGV4ZXMgYWRkZWQvZHJvcHBlZCBh ZnRlciB0aGUgY2hhaW4KKy0tIGZvcm1zLCBhbmQgQUREL0RST1AgQ09MVU1OLCBtdXN0IG5v dCBjb3JydXB0IHRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIHRlc3QuCistLSBUaGUgc2hhcnAg Y2FzZSBpcyBBREQgQ09MVU1OIGNyb3NzaW5nIGFuIDgtYXR0cmlidXRlIGJvdW5kYXJ5LCB3 aGljaCBncm93cworLS0gY2VpbChuYXR0cy84KTogcmVhZGVycyBtdXN0IGxvY2F0ZSBlYWNo IGhvcCdzIGJpdG1hcCBmcm9tIHRoYXQgaG9wJ3Mgb3duCistLSB3cml0ZS10aW1lIG5hdHRz IChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyAvIHRoZSBzdHViJ3Mgc3Rhc2hlZCBuYXR0cyks IG5vdAorLS0gdGhlIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cy4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gRXhhY3RseSA4IGF0dHJpYnV0ZXMgKGMxLi5jNyArIHBheWxvYWQp IHNvIGFkZGluZyB0aGUgOXRoIGZsaXBzIHRoZSBiaXRtYXAKKy0tIGZyb20gMSBieXRlIHRv IDIuICBjNyBpcyB0aGUgY29sdW1uIHdlIGNodXJuOyBjMiBpcyBhbiB1bmNoYW5nZWQgaW5k ZXhlZAorLS0gY29sdW1uIHdob3NlIGxlYWYgbXVzdCBzdGF5IGN1cnJlbnQuCitDUkVBVEUg VEFCTEUgaGlfZGRsICgKKyAgICBjMSBpbnQgUFJJTUFSWSBLRVksIGMyIGludCwgYzMgaW50 LCBjNCBpbnQsCisgICAgYzUgaW50LCBjNiBpbnQsIGM3IGludCwgcGF5bG9hZCB0ZXh0Cisp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOwor Q1JFQVRFIElOREVYIGhpX2RkbF9jMiBPTiBoaV9kZGwoYzIpOworQ1JFQVRFIElOREVYIGhp X2RkbF9jNyBPTiBoaV9kZGwoYzcpOworSU5TRVJUIElOVE8gaGlfZGRsIFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgNDAsIDUwLCA3MCwgJ3AnKTsKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBj aGFpbiBvbiBjNyBCRUZPUkUgYW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQg YzcgPSA3MSBXSEVSRSBjMSA9IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJF IGMxID0gMTsKKy0tIChhKSBDUkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWluIGV4aXN0czog dGhlIG5ldyBpbmRleCBpcyBidWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0dXBsZSB1bmRl ciBpdHMgb3duIFRJRCwgc28gaXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgorQ1JFQVRFIElO REVYIGhpX2RkbF9jMyBPTiBoaV9kZGwoYzMpOworLS0gKGIpIEFERCBDT0xVTU4gY3Jvc3Np bmcgdGhlIDgtYXR0cmlidXRlIGJvdW5kYXJ5IChuYXR0cyA4IC0+IDkpLiAgRXhpc3RpbmcK Ky0tIGhvcHMga2VlcCB0aGVpciAxLWJ5dGUgYml0bWFwczsgdGhlIHJlbGF0aW9uIG5vdyB3 YW50cyAyLiAgUmVhZHMgdGhyb3VnaCB0aGUKKy0tIG9sZCBjaGFpbiBtdXN0IHN0aWxsIGJl IGNvcnJlY3QuCitBTFRFUiBUQUJMRSBoaV9kZGwgQUREIENPTFVNTiBjOSBpbnQ7CitDUkVB VEUgSU5ERVggaGlfZGRsX2M5IE9OIGhpX2RkbChjOSk7CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CistLSBMaXZlIGM3IGlzIDcyLiAgVGhlIGM3IGluZGV4IG11c3Qg cmV0dXJuIHRoZSBsaXZlIHJvdyBmb3IgNzIgYW5kIGRyb3AgdGhlCistLSBzdGFsZSBsZWF2 ZXMgZm9yIDcwIGFuZCA3MSAob2Zmc2V0cyBtaXNyZWFkIHdvdWxkIGNvcnJ1cHQgdGhpcyku CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzIgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3 MiBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MiAKKy0tLS0tLS0tLS0KKyAg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUg RlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBj N19lcV83MF9zdGFsZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwg V0hFUkUgYzcgPSA3MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MV9zdGFs ZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBj MiBuZXZlciBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW46IGl0cyBsZWFmIG11c3QgTk9UIGJl IGp1ZGdlZCBzdGFsZSBldmVuCistLSB0aG91Z2ggYSBjcm9zc2VkIGhvcCBjaGFuZ2VkIGM3 LiAgQSBtaXNyZWFkIGJpdG1hcCBjb3VsZCBzcHVyaW91c2x5IGZsYWcgaXQuCitTRUxFQ1Qg Y291bnQoKikgQVMgYzJfZXFfMTBfY3VycmVudCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEw IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGMyX2VxXzEwX2N1cnJlbnQgCistLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChjKSBDb250 aW51ZSBjaHVybmluZyBjNyBBRlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBi aXRtYXAgaXMgc2l6ZWQKKy0tIGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3Bz IGFyZSAxIGJ5dGUuICBBIGNoYWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0 IHN0aWxsIHJlc29sdmUgY29ycmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBX SEVSRSBjMSA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwg V0hFUkUgYzcgPSA3MyBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MyAKKy0t LS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdf ZXFfNzJfbm93X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQg SVMgTk9UIE5VTEw7CisgYzdfZXFfNzJfbm93X3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gKGQpIENvbGxhcHNlIHRo ZSBjaGFpbiB0byBzdHVicyB2aWEgVkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHVi IG11c3QKKy0tIHByZXNlcnZlIGl0cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAg c3RheXMgbG9jYXRhYmxlIHBvc3QtQUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3 ID0gNzQgV0hFUkUgYzEgPSAxOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRs OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2Rk bCBXSEVSRSBjNyA9IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2VxXzc0X2Fm dGVyX3ZhY3V1bSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9hZnRlcl92 YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjMl9lcV8xMF9hZnRlcl92YWN1dW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSAoZSkgRFJPUCBDT0xVTU4g a2VlcHMgdGhlIGF0dG51bSBzbG90IChubyByZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBh bGlnbmVkLgorQUxURVIgVEFCTEUgaGlfZGRsIERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNv dW50KCopIEFTIGM3X2FmdGVyX2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQg cGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19hZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0 ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBO VUxMOworIGMyX2FmdGVyX2Ryb3AgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAx CisoMSByb3cpCisKKy0tIChmKSBEUk9QIElOREVYIG9uIHRoZSBjaHVybmVkIGNvbHVtbjog cmVtYWluaW5nIGluZGV4ZXMgc3RpbGwgcmVzb2x2ZS4KK0RST1AgSU5ERVggaGlfZGRsX2M3 OworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3BpZHggRlJPTSBoaV9kZGwgV0hF UkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9hZnRlcl9kcm9waWR4 IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQg ZW5hYmxlX2luZGV4b25seXNjYW47CistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJtcyB0 aGUgbGl2ZSByb3c7IHRoZSBjb3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0aHJv dWdoIHRoZSBwb3N0LURETCBpbmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3b3Vs ZCBicmVhayBpZiBhCistLSBtaXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3RhbGVu ZXNzIHZlcmRpY3QuCitTRUxFQ1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBjMSA9 IDE7CisgYzEgfCBjMiB8IGM3IAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEwIHwgNzQKKygx IHJvdykKKworRFJPUCBUQUJMRSBoaV9kZGw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBn ZXRfaGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7 CistLSBwYWdlaW5zcGVjdCBhbmQgYW1jaGVjayB3ZXJlIGJvdGggY3JlYXRlZCBhYm92ZSB3 aXRoIElGIE5PVCBFWElTVFMgYW5kIG1heQorLS0gaGF2ZSBwcmUtZXhpc3RlZCB0aGlzIHRl c3Q7IGxlYXZlIHRoZW0sIG1hdGNoaW5nIGFtY2hlY2sncyB0cmVhdG1lbnQsCistLSByYXRo ZXIgdGhhbiByaXNrIGRyb3BwaW5nIGFuIGV4dGVuc2lvbiB0aGlzIHRlc3QgZGlkIG5vdCBj cmVhdGUuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDM5OTA1YzJk ZTE0Li5kODI4NTQyMzIyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK QEAgLTE4MTAsNiArMTgxMCw4IEBAIHBnX3N0YXRfYWxsX2luZGV4ZXN8IFNFTEVDVCBjLm9p ZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihpLm9pZCkgQVMgbGFzdF9p ZHhfc2NhbiwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQoaS5vaWQpIEFTIGlk eF90dXBfcmVhZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfZmV0Y2hlZChpLm9pZCkgQVMg aWR4X3R1cF9mZXRjaCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBk YXRlZF9za2lwcGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkKGku b2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBwZ19zdGF0X2dl dF9zdGF0X3Jlc2V0X3RpbWUoaS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAgICBGUk9NICgoKHBn X2NsYXNzIGMKICAgICAgSk9JTiBwZ19pbmRleCB4IE9OICgoYy5vaWQgPSB4LmluZHJlbGlk KSkpCkBAIC0xODI5LDYgKzE4MzEsNyBAQCBwZ19zdGF0X2FsbF90YWJsZXN8IFNFTEVDVCBj Lm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChjLm9pZCkg QVMgbl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKGMub2lkKSBB UyBuX3R1cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKGMub2lk KSBBUyBuX3R1cF9ob3RfdXBkLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgcGdfc3Rh dF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91 cGQsCiAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoYy5vaWQpIEFTIG5fbGl2ZV90dXAs CiAgICAgcGdfc3RhdF9nZXRfZGVhZF90dXBsZXMoYy5vaWQpIEFTIG5fZGVhZF90dXAsCkBA IC0yMzMyLDYgKzIzMzUsOCBAQCBwZ19zdGF0X3N5c19pbmRleGVzfCBTRUxFQ1QgcmVsaWQs CiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAgICAgaWR4X3R1cF9m ZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwKKyAgICBuX3R1cF9o b3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAogICAgRlJPTSBwZ19z dGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFOWSAoQVJSQVlbJ3Bn X2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBPUiAoc2No ZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yMzQ4LDYgKzIzNTMsNyBAQCBw Z19zdGF0X3N5c190YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX3R1cF91cGQsCiAgICAg bl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAgbl90dXBfaG90X2luZGV4ZWRf dXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90dXAsCiAgICAgbl9k ZWFkX3R1cCwKQEAgLTIzODcsNiArMjM5Myw4IEBAIHBnX3N0YXRfdXNlcl9pbmRleGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAg ICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAog ICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA8PiBB TEwgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5h bWVdKSkgQU5EIChzY2hlbWFuYW1lICF+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yNDAz LDYgKzI0MTEsNyBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAg bl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5f dHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICBuX2xp dmVfdHVwLAogICAgIG5fZGVhZF90dXAsCkBAIC0yNDU4LDYgKzI0NjcsNyBAQCBwZ19zdGF0 X3hhY3RfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKGMub2lkKSBBUyBuX3R1cF9kZWwsCiAgICAg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hv dF91cGQsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZChjLm9pZCkgQVMgbl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQK ICAgIEZST00gKChwZ19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19pbmRleCBpIE9OICgo Yy5vaWQgPSBpLmluZHJlbGlkKSkpCkBAIC0yNDc1LDYgKzI0ODUsNyBAQCBwZ19zdGF0X3hh Y3Rfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAgICBuX3R1 cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGQs CiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0X2FsbF90YWJs ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5h bWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15w Z190b2FzdCc6OnRleHQpKTsKQEAgLTI0OTgsNiArMjUwOSw3IEBAIHBnX3N0YXRfeGFjdF91 c2VyX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAgICBuX3R1cF9k ZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAg ICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0X2FsbF90YWJsZXMK ICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1l LCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15w Z190b2FzdCc6OnRleHQpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGJkOTVjYzI0OTc3Li40ZmRlNWI2YjBjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xNDcsNiArMTQ3LDcgQEAgdGVzdDogZmFzdF9kZWZhdWx0CiAjIEhPVCB1 cGRhdGVzIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGhvdF91cGRhdGVzCit0ZXN0OiBo b3RfaW5kZXhlZF91cGRhdGVzCiAKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5k IGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0 dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZmVhYzcxOTFjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDExNjcgQEAK Ky0tCistLSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1pbmRleGVkIHVwZGF0 ZSAoaG90LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91cgorLS0KKy0tIEV2 ZXJ5IFVQREFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qgb25lIG5vbi1zdW1t YXJpemluZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1ob3QtaW5kZXhlZCBz ZXJ2ZXIgYWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBvbiB0aGUgaG90LWlu ZGV4ZWQgYnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9uLXBhZ2UgYW5kCist LSBpbnNlcnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGFjdHVh bGx5IGNoYW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdzOgorLS0gICAoQSkg cGdfc3RhdCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3VudHMgaW5jcmVtZW50 IGFzIGV4cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVybiB0aGUgbmV3IHZh bHVlIGFuZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3IgRVFVQUxJVFkgcXVl cmllcyAodGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBhCistLSAgICAgICBs ZWFmIHdob3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIHdheSB0byB0aGUg bGl2ZSB0dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHJl cG9ydHMgdGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAorLS0gICAoRCkgKipS QU5HRS9JTkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJlY3QgbnVtYmVyIG9m CistLSAgICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2YgYnVncyB3aGVyZSBh IHN0YWxlIGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGlsbCByZWFjaGFibGUg dmlhIGEgbG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRoZSBpbmRleCdzCist LSAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVhZidzIHRhcmdldCBh bmQgdGhlIGxpdmUgdHVwbGUKKy0tCisKK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNU UyBwYWdlaW5zcGVjdDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9j b3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRlcyBCSUdJTlQsIGhv dCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxf b2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVT Q0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAg ICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29p ZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3Vw ZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhU OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gZ2V0X2hpX2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRh dGVzIEJJR0lOVCwgaG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFTICQkCitERUNMQVJF IHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFz czo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3Vw ZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FM RVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAg ICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo cmVsX29pZCksIDApOworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVw bGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxf b2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4gQmFzaWMgaG90LWluZGV4 ZWQ6IG1vZGlmeWluZyBhbiBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QgYW5kIGNvdW50cyBh cyBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfYmFzaWMgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBp bnQsCisgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBoaV9iYXNpY19pZHggT04gaGlfYmFzaWMoaW5kZXhlZF9jb2wp OworCitJTlNFUlQgSU5UTyBoaV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsK KworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhv dC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBIT1QgY291bnRlciBh bmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFURSBoaV9iYXNpYyBT RVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2Jhc2lj Jyk7CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgaW5kZXguCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBp ZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsK K1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2Nv bCA9IDE1MDsKKworLS0gVGhlIG9sZCB2YWx1ZSBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2gg dGhpcyBpbmRleDogdGhlIHN0YWxlIGJ0cmVlCistLSBlbnRyeSAoaW5kZXhlZF9jb2w9MTAw KSB3YWxrcyB0byB0aGUgY3VycmVudCB0dXBsZSB2aWEgdGhlIGhvdC1pbmRleGVkIGhvcCwK Ky0tIG5vZGVJbmRleHNjYW4gcmUtZXZhbHVhdGVzIGBpbmRleGVkX2NvbCA9IDEwMGAgYWdh aW5zdCB0aGUgY3VycmVudAorLS0gdHVwbGUgKGluZGV4ZWRfY29sPTE1MCksIGFuZCB0aGUg cm93IGlzIGNvcnJlY3RseSBkcm9wcGVkLiAgVGhpcyBpcworLS0gdGhlIGVxdWFsaXR5LWxv b2t1cCBjYXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgaGFuZGxlcy4KK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hFUkUgaW5kZXhlZF9j b2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9 IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cyBzZWVzIG9uZSBIT1QtaW5kZXhlZCB2ZXJzaW9uLCB6ZXJvIEhPVCByZWRp cmVjdHMgKHRoZQorLS0gY2hhaW4gaGFzIG5vdCB5ZXQgYmVlbiBwcnVuZWQgc28gbm8gTFBf UkVESVJFQ1QgZXhpc3RzKS4KK1NFTEVDVCBuX2hvdF9pbmRleGVkLCBuX2NoYWlucywgYXZn X2NoYWluX2xlbiwgbWF4X2NoYWluX2xlbgorRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhl ZF9zdGF0cygnaGlfYmFzaWMnKTsKKworRFJPUCBUQUJMRSBoaV9iYXNpYzsKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBSQU5HRS9JTkVRVUFMSVRZIGNvcnJlY3RuZXNz IGFmdGVyIGhvdC1pbmRleGVkIG9uIGFuIGluZGV4ZWQgY29sdW1uCistLQorLS0gVGhpcyBp cyB0aGUgdGVzdCBjbGFzcyB0aGF0IGNhdGNoZXMgdGhlIGhvdC1pbmRleGVkIGZhbHNlLWR1 cCBidWc6IGEgc3RhbGUKKy0tIGJ0cmVlIGVudHJ5IHdob3NlIGtleSB2YWx1ZSBzdGlsbCBz YXRpc2ZpZXMgdGhlIHJhbmdlIHByZWRpY2F0ZSwKKy0tIHJlYWNoYWJsZSB2aWEgdGhlIGhv dC1pbmRleGVkIGNoYWluIGhvcC4KKy0tCistLSBUbyBleGVyY2lzZSB0aGUgYnVnIHdlIG11 c3QgZm9yY2UgYW4gSW5kZXhTY2FuIHBsYW4gKHRoZQorLS0gSW5kZXhPbmx5U2NhbiBwYXRo IHBlcm1pc3NpdmVseSBkcm9wcyBldmVyeSBob3QtaW5kZXhlZC1yZWFjaGFibGUgaW5kZXgt b25seQorLS0gaGl0OyB0aGUgQml0bWFwSGVhcFNjYW4gcGF0aCBkZWR1cHMgYnkgVElEKS4g IFdlIGluY2x1ZGUgYSBwYXlsb2FkCistLSBjb2x1bW4gbm90IHByZXNlbnQgaW4gdGhlIFBL IHNvIHRoZSBwbGFubmVyIG11c3QgaGVhcC1mZXRjaC4KKy0tCistLSBUaGUgcmVhZC1zaWRl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBtYWtlcyB0aGUgSW5kZXhTY2FuIHJldHVybiB0 aGUgY29ycmVjdAorLS0gY291bnQgb2YgMTogdGhlIHN0YWxlIGVudHJ5ICgnMScsJzUnKSBj aGFpbi13YWxrcyB0byB0aGUgbGl2ZSB0dXBsZSBhY3Jvc3MKKy0tIHRoZSBiLWNoYW5naW5n IGhvcCwgYW5kIGJlY2F1c2UgdGhlIFBLIGNvdmVycyBiIHRoZSBvdmVybGFwIGlzIG5vbi1l bXB0eSwgc28KKy0tIHRoZSBzdGFsZSBsZWFmIGlzIGRyb3BwZWQuICBUaGUgZnJlc2ggZW50 cnkgKCcxJywnMTUnKSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlCistLSBsaXZlIHR1cGxlIChu byBob3AgYWZ0ZXIgaXQpIGFuZCBpcyBrZXB0LiAgVGhlIE9SREVSIEJZIGxpa2V3aXNlIHJl dHVybnMgdGhlCistLSBzaW5nbGUgbGl2ZSByb3cuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9yYW5nZSAoCisgICAgYSBpbnQsCisgICAgYiBpbnQsCisg ICAgcGF5bG9hZCB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChhLCBiKQorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworCitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxVRVMgKDEsIDUsICdo aScpOworCistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29uZCBQSyBjb2x1bW46 IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywgbmV3IGVudHJ5ICgn MScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRzIGF0CistLSB0aGUg Y2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3RseSBhdCB0aGUgbmV3 CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAxNSBXSEVS RSBhID0gMSBBTkQgYiA9IDU7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKworLS0gSW5kZXhTY2FuOiBwYXlsb2FkIElTIE5P VCBOVUxMIGZvcmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2FuLgorLS0gVGhlIHN0 YWxlICgnMScsJzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCwgc28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5n ZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NF TEVDVCBhLCBiIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEwgT1JERVIgQlkgYjsKKworLS0gSW5kZXhPbmx5U2NhbjogdGhlIHBhZ2UgaG9sZHMg YSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5ldmVyIGFsbC12aXNp YmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0aGUgY3Jvc3NlZC1h dHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykKKy0tIGxlYWYsIHNv IGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00g aGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJP TSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKworLS0gQml0bWFwSGVhcFNj YW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVzaCBoaXRzLgorU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBv ZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsK K1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsK KworLS0gU2VxU2NhbjogcmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNlZXMgZXhhY3RseSBv bmUgbGl2ZSB0dXBsZS4KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7CitTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitSRVNFVCBl bmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKKworLS0gU2FtZSBzaGFwZSBvbiBhIHNlY29uZGFyeSAobm9u LVBLKSBidHJlZTogYW5vdGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24gYi4KK0NSRUFURSBJ TkRFWCBoaV9yYW5nZV9iX2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFURSBoaV9yYW5nZSBT RVQgYiA9IDI1IFdIRVJFIGEgPSAxIEFORCBiID0gMTU7CisKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2NhbiBw YXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxpZXMuCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFi bGVfYml0bWFwc2NhbjsKKworRFJPUCBUQUJMRSBoaV9yYW5nZTsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBhIG11bHRpLWluZGV4ZWQgdGFi bGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVzCistLSAgICB3aG9zZSBhdHRy aWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAor ICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX211bHRpX2FfaWR4 IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9iX2lkeCBPTiBo aV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfY19pZHggT04gaGlfbXVs dGkoY29sX2MpOworCitJTlNFUlQgSU5UTyBoaV9tdWx0aSBWQUxVRVMgKDEsIDEwLCAyMCwg MzAsICdpbml0aWFsJyk7CisKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4CistLSBnZXRzIGEg bmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lkeCBrZWVwIHBvaW50 aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0aSBTRVQgY29sX2Eg PSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsKKworLS0gTG9va3Vw cyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9hID0gMTU7 CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIwOworU0VMRUNUIGlk IEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2MgPSAzMDsKKworLS0gT2xkIGNvbF9hIHZhbHVl IGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5IHRo ZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCkuCitTRUxFQ1QgaWQg RlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CisKK0RST1AgVEFCTEUgaGlfbXVsdGk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBwYXJ0IG9mIGEgY29t cG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlf Y29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAor ICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhpX2NvbXBvc2l0ZShj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUgVkFMVUVTICgxLCAx MCwgMjAsICdkYXRhJyk7CisKKy0tIGNvbF9hIGlzIHBhcnQgb2YgdGhlIGNvbXBvc2l0ZSBr ZXk6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxNTsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworLS0gUmVzZXQgYW5kIHRoZW4gdXBkYXRl IGNvbF9iIChhbHNvIHBhcnQgb2YgdGhlIGtleSkuCitVUERBVEUgaGlfY29tcG9zaXRlIFNF VCBjb2xfYSA9IDEwOworVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2IgPSAyNTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworRFJPUCBUQUJMRSBoaV9jb21wb3NpdGU7CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBpbmRleDogc3RhdHVz IHRyYW5zaXRpb24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0dXMnIGlzIGEgcGFy dGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8gYSBwcmVkaWNhdGUK Ky0tIGNvbHVtbiBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhlIGluZGV4LCB3aGlj aCB0aGUgcmVhZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0ZWN0LCBzbyBIZWFw VXBkYXRlSG90QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxpZmllcworLS0gSE9U LWluZGV4ZWQgZm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAoZXZlbiB0aGlzIG91 dC1vZi1wcmVkaWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2FzZSkuICBUaGUgdXBk YXRlIGlzIHRoZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwKKy0tIGluZGV4IGNv cnJlY3RseSBzdGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUnIHJvd3MuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0aWFsICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0Cisp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydGlhbF9hY3Rp dmVfaWR4IE9OIGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK KworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEn KTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0 YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdk YXRhMycpOworCistLSBvdXQgLT4gb3V0IHRyYW5zaXRpb24gb24gdGhlIHByZWRpY2F0ZSBj b2x1bW46IEhPVC1pbmRleGVkIGtlZXBzIGl0IG9uLXBhZ2UsCistLSBhbmQgdGhlIHBhcnRp YWwgaW5kZXggZ2V0cyBubyBlbnRyeSAodGhlIHJvdyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0 ZSBuZWl0aGVyCistLSBiZWZvcmUgbm9yIGFmdGVyIHRoZSB1cGRhdGUpLgorVVBEQVRFIGhp X3BhcnRpYWwgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfcGFydGlhbCcpOworCistLSBUaGUgcGFydGlhbCBpbmRleCBzdGlsbCBjb3JyZWN0 bHkgYW5zd2VycyAiYWN0aXZlIiBxdWVyaWVzLgorU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBo aV9wYXJ0aWFsIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitEUk9QIFRBQkxFIGhpX3Bh cnRpYWw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gUGFydGl0aW9uOiBo b3QtaW5kZXhlZCBpbnNpZGUgb25lIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoCisgICAgaWQgaW50LAorICAgIHBhcnRpdGlv bl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQsCisgICAg UFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnRfMSBQQVJUSVRJT04gT0Yg aGlfcGFydAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0X2lkeCBPTiBoaV9wYXJ0KGluZGV4 ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEsIDUwLCAxMDAsICdk YXRhJyk7CisKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBG Uk9NIGdldF9oaV9jb3VudCgnaGlfcGFydF8xJyk7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfcGFydCBDQVNDQURFOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9kaWZpZXMgaW5kZXhl ZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJfaWR4IE9OIGhpX3Ry aWdnZXIodHJpZ2dlcmVkX2NvbCk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhp X3RyaWdnZXJfYnVtcCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JFR0lOCisgICAgTkVX LnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7CisgICAgUkVUVVJOIE5F VzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIGJlZm9y ZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04gaGlfdHJpZ2dlcgorICAgIEZP UiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CisK K0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CisK Ky0tIFVQREFURSdzIFNFVCBjbGF1c2UgZG9lc24ndCB0b3VjaCB0aGUgaW5kZXhlZCBjb2x1 bW4sIGJ1dCB0aGUKKy0tIHRyaWdnZXIgbW9kaWZpZXMgaXQgdmlhIGhlYXBfbW9kaWZ5X3R1 cGxlLiAgaG90LWluZGV4ZWQgbXVzdCBkZXRlY3QgdGhpcworLS0gYW5kIGtlZXAgdGhlIHR1 cGxlIG9uLXBhZ2UgKEhFQVBfSU5ERVhFRF9VUERBVEVEKSBwbHVzIGEgbmV3IGJ0cmVlIGVu dHJ5LgorVVBEQVRFIGhpX3RyaWdnZXIgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJP TSBnZXRfaGlfY291bnQoJ2hpX3RyaWdnZXInKTsKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisKKy0tIE5ldyB2YWx1ZSByZWFjaGFibGUu CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2Vy IFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2Vy IFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKwor RFJPUCBUQUJMRSBoaV90cmlnZ2VyIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGhpX3RyaWdn ZXJfYnVtcCgpOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4 cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIG9uIGV4 cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFsbHMgYmFjayB0byBh IG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFkcyBzdGF5IGNvcnJl Y3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9qc29uYiAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1lX2lkeCBPTiBoaV9q c29uYiAoKGRhdGEtPj4nbmFtZScpKTsKKworSU5TRVJUIElOVE8gaGlfanNvbmIgVkFMVUVT ICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworCistLSBDaGFuZ2luZyB0aGUg aW5kZXhlZCBleHByZXNzaW9uJ3MgdmFsdWUgKG5hbWUpOiBleHByZXNzaW9uIGluZGV4ZXMg YXJlIG5vdAorLS0geWV0IHN1cHBvcnRlZCwgc28gdGhpcyBpcyBhIG5vbi1IT1QgdXBkYXRl LgorVVBEQVRFIGhpX2pzb25iIFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0n LCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfanNvbmInKTsKKwor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfanNvbmIgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworU0VMRUNUIGlkIEZST00gaGlfanNvbmIg V0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZSc7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK KworRFJPUCBUQUJMRSBoaV9qc29uYjsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSA5LiBHSU4gaW5kZXggd2l0aCBjaGFuZ2VkIGV4dHJhY3RlZCBrZXlzOiBob3QtaW5kZXhl ZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZ2luICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10KKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9naW5fdGFnc19pZHggT04gaGlfZ2luIFVT SU5HIGdpbiAodGFncyk7CisKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxVRVMgKDEsIEFSUkFZ Wyd0YWcxJywgJ3RhZzInXSk7CisKKy0tIEFkZGluZyBhIHRhZyB5aWVsZHMgYSBkaWZmZXJl bnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2dpbiBTRVQg dGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJFIGlkID0gMTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9naW4nKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX2dpbjsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRleGVkIGNvdW50ZXJzOiBza2lw cGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGggdHdvIGluZGVwZW5kZW50IHNl Y29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMgYQorLS0gY29sdW1uIGNvdmVy ZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRleGVkIHBhdGggbXVzdCBpbnNl cnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAgdGhlIG90aGVyLiAgcGdfc3Rh dF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAgb24gdGhlIHVwZGF0ZWQgaW5k ZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGluZGV4LgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3BlcmluZGV4ICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBpbnQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYSBPTiBob3RpZHhf cGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3BlcmluZGV4X2IgT04gaG90aWR4 X3BlcmluZGV4KGIpOworCitJTlNFUlQgSU5UTyBob3RpZHhfcGVyaW5kZXggVkFMVUVTICgx LCAxMDAsIDIwMCk7CisKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAgSE9ULWluZGV4ZWQg aW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tpcHMgaG90aWR4X3Bl cmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJsZSBpdHNlbGYgYW5k CistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBwZWQgdG9vKS4KK1VQ REFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQgPSAxOworCistLSBG b3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQgZW50cnkuCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUs CisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAg ICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00g cGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4 JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gQSBzZWNvbmQgVVBEQVRFIHRvdWNo aW5nIG9ubHkgYiBpbnZlcnRzIHRoZSBhc3NpZ25tZW50LgorVVBEQVRFIGhvdGlkeF9wZXJp bmRleCBTRVQgYiA9IDIwMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90 X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhl cworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4 cmVsbmFtZTsKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBlZCA9PSBvd25pbmcg dGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAor ICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4 ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBuX3R1cF9ob3RfaW5k ZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAgIFdIRVJFIHJlbG5h bWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91cGQKKyAgRlJPTSBw Z19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgn CisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBCb29sZWFuIGFzc2VydGlvbiBvZiB0 aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZm9ybQorLS0gcmV2 aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0aGVyIG1hdGNoZWQg KHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBEQVRFKSBvciBza2lw cGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4gaW5zZXJ0IGJlY2F1 c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYgdGhlCistLSB0d28g Y291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwgbl90dXBfaG90X2lu ZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWluZGV4IGluY3JlbWVu dCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQoKG5fdHVwX2hvdF9p bmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQpID0K KyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9NIHBn X3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdo b3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2ludmFyaWFudF9ob2xk cworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlk eF9wZXJpbmRleCc7CisKK0RST1AgVEFCTEUgaG90aWR4X3BlcmluZGV4OworCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1sb29wIFVQREFURSBzdGF5cyBj b21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9uZyBydW4gb2YgSE9ULWluZGV4 ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29tcGFjdDogcHJ1bmUKKy0tIGNv bGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGlyZWN0IHRvIHRoZSBsaXZlIHR1 cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUgaGVhcCBzdGF5cyBib3VuZGVk IGFuZCB0aGUgY2hhaW4gZG9lcyBub3QgZ3JvdyB1bmJvdW5kZWQuCistLSBFdmVyeSBVUERB VEUgdGhhdCBjaGFuZ2VzIHRoZSBpbmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVy IGluZGV4LAorLS0gaGVyZSB0aGUgUEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRl eGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9j aGFpbmNhcCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEgg KGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04g aGlfY2hhaW5jYXAoYSk7CisKK0lOU0VSVCBJTlRPIGhpX2NoYWluY2FwIFZBTFVFUyAoMSwg MCk7CisKK0RPICQkCitERUNMQVJFCisgICAgaSBpbnQ7CitCRUdJTgorICAgIEZPUiBpIElO IDEgLi4gMjAwIExPT1AKKyAgICAgICAgVVBEQVRFIGhpX2NoYWluY2FwIFNFVCBhID0gaSBX SEVSRSBpZCA9IDE7CisgICAgRU5EIExPT1A7CitFTkQgJCQ7CisKKy0tIEFmdGVyIDIwMCBV UERBVEVzIHRoZSByb3cncyB2YWx1ZSBpcyAyMDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWlu Y2FwIFdIRVJFIGlkID0gMTsKKworLS0gRXZlcnkgVVBEQVRFIHRvb2sgdGhlIEhPVC1pbmRl eGVkIHBhdGggKHRoZSBQSyBpbmRleCBpcyB1bmNoYW5nZWQsIHNvIGl0IGlzCistLSBza2lw cGVkKSwgc28gbl90dXBfaG90X2luZGV4ZWRfdXBkIGFkdmFuY2VkLgorU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRl eGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jaGFpbmNhcCcpOworCistLSBU aGUgaGVhcCBzdGF5ZWQgY29tcGFjdDogcHJ1bmUrY29sbGFwc2UgcmVjbGFpbWVkIHRoZSBk ZWFkIHZlcnNpb25zLCBzbyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdyBzdGF5cyB3aXRoaW4g YSBjb3VwbGUgb2YgcGFnZXMuICBwZ19yZWxhdGlvbl9zaXplIHJlZmxlY3RzCistLSB0aGUg dGFibGUncyBhY3R1YWwgY3VycmVudCBzaXplIHJlZ2FyZGxlc3Mgb2YgdmFjdXVtL2FuYWx5 emUgc3RhdHMsIHVubGlrZQorLS0gcGdfY2xhc3MucmVscGFnZXMgKHdoaWNoIGlzIG9ubHkg dXBkYXRlZCBieSBWQUNVVU0vQU5BTFlaRSBhbmQgd291bGQgYmUKKy0tIHRyaXZpYWxseSA8 PSAxIG9uIHRoaXMgbmV2ZXItdmFjdXVtZWQgdGFibGUgZXZlbiBpZiBwcnVuaW5nIGhhZCBm YWlsZWQgYW5kCistLSB0aGUgaGVhcCBoYWQgYmFsbG9vbmVkKS4KK1NFTEVDVCBwZ19yZWxh dGlvbl9zaXplKCdoaV9jaGFpbmNhcCcpIDw9IDgxOTIgKiAyIEFTIGhlYXBfc3RheWVkX2Nv bXBhY3Q7CisKK0RST1AgVEFCTEUgaGlfY2hhaW5jYXA7CisKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gMTIuIFJlY2xhbWF0aW9uIG9mIGEgY29sbGFwc2VkIEhPVC1pbmRleGVk IGNoYWluIGJ5IHBydW5lCistLQorLS0gQSBkZWFkIEhPVC1pbmRleGVkIGNoYWluIG1lbWJl ciBpcyBwcmVzZXJ2ZWQgYXQgcHJ1bmUgdGltZSAoaXRzIHN0YWxlIGxlYWYKKy0tIG1heSBz dGlsbCBleGlzdCkgYW5kIHRoZSBjaGFpbiBjb2xsYXBzZXMgdG8gYW4gTFBfUkVESVJFQ1Qg Zm9yd2FyZGVyOyB0aGUKKy0tIGluZGV4IGNsZWFudXAgcGFzcyB0aGVuIHN3ZWVwcyB0aGUg c3RhbGUgbGVhZiwgYW5kIGEgbGF0ZXIgVkFDVVVNIHJlY2xhaW1zCistLSB0aGUgbm93LXVu cmVmZXJlbmNlZCBtZW1iZXIgYW5kIHJlLXBvaW50cyB0aGUgcmVkaXJlY3Qgb25jZSBpdCBm YWxscyBiZWxvdworLS0gdGhlIGdsb2JhbCB4bWluIGhvcml6b24uICBXZSBhc3NlcnQgb25s eSB0aGF0IHRoZSBjaGFpbiBjb2xsYXBzZXMKKy0tIChuX2NoYWlucyA9IDApOiB0aGF0IGlz IHRoZSBkZXRlcm1pbmlzdGljIHByb29mIHRoZSBtZWNoYW5pc20gd29ya2VkLiAgVGhlCist LSBmaW5hbCBtZW1iZXIncyByZWNsYWltIChuX2hvdF9pbmRleGVkIHJlYWNoaW5nIDApIGFk ZGl0aW9uYWxseSByZXF1aXJlcyB0aGUKKy0tIGRlbGV0ZWQgdHVwbGUgdG8gZmFsbCBiZWxv dyB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgd2hpY2ggYSBzbmFwc2hvdCBoZWxkCistLSBl bHNld2hlcmUgaW4gdGhlIHJ1bm5pbmcgcmVncmVzc2lvbiBjbHVzdGVyIGNhbiBkZWxheSBp bmRlZmluaXRlbHkgLS0gc28gd2UKKy0tIGRvIG5vdCBhc3NlcnQgYW4gZXhhY3Qgbl9ob3Rf aW5kZXhlZCBoZXJlIChhdXRvdmFjdXVtX2VuYWJsZWQgaXMgb2ZmIG9ubHkgdG8KKy0tIGtl ZXAgb3VyIG93biBWQUNVVU1zIGZyb20gYmVpbmcgc2tpcHBlZCBvbiBhIHN0b2xlbiBsb2Nr KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xhaW0g KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBo aV9yZWNsYWltX2FfaWR4IE9OIGhpX3JlY2xhaW0oYSk7CisKK0lOU0VSVCBJTlRPIGhpX3Jl Y2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBzZWQgY2hhaW4g dmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0gU0VUIGEgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5k ZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKworLS0gRGVsZXRlIHRoZSBsaXZlIHR1cGxl LiAgVGhlIGZpcnN0IFZBQ1VVTSBjb2xsYXBzZXMgdGhlIGRlYWQgY2hhaW4gYW5kIHN3ZWVw cworLS0gdGhlIHN0YWxlIGxlYWY7IGEgbGF0ZXIgVkFDVVVNIHJlY2xhaW1zIHRoZSBub3ct dW5yZWZlcmVuY2VkIG1lbWJlciBvbmNlIGl0CistLSBmYWxscyBiZWxvdyB0aGUgZ2xvYmFs IHhtaW4gaG9yaXpvbi4gIEFzc2VydCBvbmx5IHRoZSBkZXRlcm1pbmlzdGljCistLSBjb2xs YXBzZSAobl9jaGFpbnMgPSAwKTsgdGhlIG1lbWJlci1yZWNsYWltIGNvdW50IGlzIGhvcml6 b24tZGVwZW5kZW50IGFuZAorLS0gbm90IHNvbWV0aGluZyBhIHJlZ3Jlc3MgdGVzdCBjYW4g cGluIGRvd24uCitERUxFVEUgRlJPTSBoaV9yZWNsYWltIFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSBoaV9yZWNsYWltOworVkFDVVVNIGhpX3JlY2xhaW07CisKK1NFTEVDVCBuX2NoYWlucyA9 IDAgQVMgY2hhaW5fY29sbGFwc2VkX2FmdGVyX3JlY2xhaW0KKyAgRlJPTSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworCitEUk9QIFRBQkxFIGhpX3Jl Y2xhaW07CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTMuIFBhZ2Ugd2l0aCBh IHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgaXMgbmV2ZXIgbWFya2VkIGFsbC12aXNp YmxlCistLQorLS0gcHJ1bmVoZWFwIGRlbGliZXJhdGVseSBsZWF2ZXMgUERfQUxMX1ZJU0lC TEUgY2xlYXIgb24gYW55IHBhZ2UgdGhhdCBzdGlsbAorLS0gY2FycmllcyBhIHByZXNlcnZl ZCBIT1QtaW5kZXhlZCBtZW1iZXI6IGFuIGluZGV4LW9ubHkgc2NhbiBtdXN0IGhlYXAtZmV0 Y2gKKy0tIHRocm91Z2ggdGhlIGNoYWluIHNvIHRoZSByZWFkLXNpZGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIGNhbiBmaWx0ZXIgc3RhbGUgYnRyZWUKKy0tIGVudHJpZXMuCistLQor LS0gV2UgZm9yY2UgdGhlIGZyZWV6ZSBwYXRoIHdpdGggVkFDVVVNIChGUkVFWkUsIERJU0FC TEVfUEFHRV9TS0lQUElORykgYW5kCistLSB0aGVuIHJlYWQgcGRfZmxhZ3MgdmlhIHBhZ2Vp bnNwZWN0LnBhZ2VfaGVhZGVyLiAgVGhlIHBhZ2UgbXVzdCBzdGlsbCBjYXJyeQorLS0gYSBI T1QtaW5kZXhlZCBtZW1iZXIgKG5faG90X2luZGV4ZWQgPiAwKSBBTkQgbXVzdCBub3QgaGF2 ZSBQRF9BTExfVklTSUJMRQorLS0gKDB4MDAwNCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV92bSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0g ZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3ZtX2FfaWR4IE9OIGhpX3ZtKGEpOworCitJTlNF UlQgSU5UTyBoaV92bSBWQUxVRVMgKDEsIDEpOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMgbGVhdmUgYSBtdWx0aS1ob3AgY2hhaW4sIHNvIGEgcHJlc2VydmVkIEhPVC1pbmRleGVk CistLSBtZW1iZXIgcmVtYWlucyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuZSwgd2hpY2ggaXMg d2hhdCB0aGlzIHRlc3QgbmVlZHMuCitVUERBVEUgaGlfdm0gU0VUIGEgPSAyIFdIRVJFIGlk ID0gMTsKK1VQREFURSBoaV92bSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworCistLSBGb3Jj ZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxFX1BB R0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVzIGhp bnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBwcmVz ZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNpYmxl ID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3ZtOwor CitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnQKKyAg RlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdm0nKTsKKworLS0gUERf QUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGggYSBwcmVz ZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFya2VkX2Fs bF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92bScsIDAp KTsKKworRFJPUCBUQUJMRSBoaV92bTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBhIHN0YXlz IGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAgb3IgaW5k ZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRoZSByZWxj YWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRlCistLSBi aXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJlIGF0dHJp YnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRlciB0d28g cmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVlbnQgVVBE QVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CisKK0lOU0VS VCBJTlRPIGhpX2N5Y2xlIFZBTFVFUyAoMSwgMTAwKTsKKworLS0gQ3ljbGUgdGhlIGNvbHVt biBuYW1lIGFuZCBjb25maXJtIGJvdGggaW50ZXJtZWRpYXRlIGZvcm1zIGRyaXZlIEhPVC1p bmRleGVkLgorQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBhIFRPIGI7CitV UERBVEUgaGlfY3ljbGUgU0VUIGIgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRl eGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUn KTsKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERB VEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0 aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0t IHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKK1NFTEVDVCBpZCBGUk9NIGhp X2N5Y2xlIFdIRVJFIGEgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBh ID0gMjAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfY3ljbGU7 CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkg Y29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hl biBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhl IGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5 IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMK Ky0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwg aXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVu Y2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jy aW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4g VVNJTkcgYnJpbihiY29sKTsKKworSU5TRVJUIElOVE8gaGlfYnJpbiBWQUxVRVMgKDEsIDEw MCk7CisKKy0tIENhcHR1cmUgdGhlIEhPVC1pbmRleGVkIGNvdW50ZXIgYmVmb3JlLCBkcml2 ZSBhIEJSSU4tb25seSB1cGRhdGUsCistLSBhbmQgYXNzZXJ0IHRoYXQgY2xhc3NpYyBIT1Qg YWR2YW5jZWQgd2hpbGUgSE9ULWluZGV4ZWQgZGlkIG5vdC4KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBi Y29sID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKK1NFTEVDVCAoaG90IC0gMCkgPiAwIEFTIGNsYXNzaWNfaG90X2ZpcmVkLAorICAg ICAgIGhvdF9pZHggPSA6aG90X2lkeF9iZWZvcmUgQVMgaG90X2luZGV4ZWRfZGlkX25vdF9m aXJlCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJyk7CisKKy0tIFRoZSBCUklOIGlu ZGV4IHNlZXMgdGhlIG5ldyB2YWx1ZSB2aWEgYW1pbnNlcnQuCitTRUxFQ1QgYmNvbCBGUk9N IGhpX2JyaW4gV0hFUkUgaWQgPSAxOworCitEUk9QIFRBQkxFIGhpX2JyaW47CisKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTYuIFVOSVFVRSBpbmRleCBvbiBhIHR5cGUgd2hl cmUgaW1hZ2UgZXF1YWxpdHkgIT0gb3BlcmF0b3IgZXF1YWxpdHkKKy0tCistLSBudW1lcmlj IDEuMCBhbmQgMS4wMCBhcmUgZXF1YWwgdW5kZXIgdGhlIGJ0cmVlIG9wY2xhc3MgYnV0IGhh dmUKKy0tIGRpZmZlcmVudCBvbi1kaXNrIGltYWdlcy4gIEEgSE9ULWluZGV4ZWQgdXBkYXRl IDEuMCAtPiAxLjAwIGluc2VydHMgYQorLS0gZnJlc2ggbGVhZiBjYXJyeWluZyB0aGUgbGl2 ZSBpbWFnZSBhbmQgbGVhdmVzIGEgc3RhbGUgbGVhZiBmb3IgMS4wCistLSAodGhlIGhvcCdz IG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBtYXJrcyBrIGNoYW5nZWQsIHNpbmNlIG1vZGlmaWVk LWNvbHVtbgorLS0gZGV0ZWN0aW9uIGlzIGltYWdlLWJhc2VkKS4gIEEgbGF0ZXIgSU5TRVJU IG9mIGEgdmFsdWUgZXF1YWwgdW5kZXIgdGhlCistLSBvcGNsYXNzIG11c3Qgc3RpbGwgYmUg ZGV0ZWN0ZWQgYXMgYSBkdXBsaWNhdGU6IHRoZSB1bmlxdWUgY2hlY2sgcmVhY2hlcworLS0g dGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgZnJlc2ggbGVhZiwgd2hpY2ggcG9pbnRzIGRp cmVjdGx5IGF0IGl0IChubyBob3AKKy0tIGFmdGVyIGl0LCBzbyB0aGUgb3ZlcmxhcCBpcyBl bXB0eSBhbmQgdGhlIGxlYWYgaXMgYSBnZW51aW5lIGNvbmZsaWN0KTsgdGhlCistLSBzdGFs ZSAxLjAgbGVhZiBpcyBza2lwcGVkIGJlY2F1c2UgdGhlIGstY2hhbmdpbmcgaG9wIG92ZXJs YXBzIHRoZSB1bmlxdWUKKy0tIGluZGV4J3MgYXR0cmlidXRlLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdW51bSAoayBudW1lcmljIFVOSVFVRSwgaiBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfdW51bV9qIE9O IGhpX3VudW0oaik7ICAgICAgICAgICAgIC0tIDJuZCBpbmRleGVkIGF0dHIsIGtlcHQgZml4 ZWQKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEwMCk7CitVUERBVEUgaGlf dW51bSBTRVQgayA9IDEuMDAgV0hFUkUgaiA9IDEwMDsgICAgICAgIC0tIEhPVC1pbmRleGVk OiAxLjAgLT4gMS4wMAorU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdW51bScp OworLS0gQSBudW1lcmljYWxseS1lcXVhbCBpbnNlcnQgbXVzdCBjb25mbGljdCAodGhlIGZy ZXNoIGxlYWYgY2F0Y2hlcyBpdCk6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4w LCAxKTsgICAgICAgICAgICAgIC0tIGV4cGVjdCBkdXBsaWNhdGUga2V5IGVycm9yCistLSBB IGdlbnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBo aV91bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRF UiBCWSBqOworRFJPUCBUQUJMRSBoaV91bnVtOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE3LiBDUkVBVEUgSU5ERVggYW5kIFJFSU5ERVggb3ZlciBsaXZlIEhPVC1pbmRl eGVkIGNoYWlucworLS0KKy0tIEEgZnJlc2hseSBidWlsdCBvciByZWJ1aWx0IGluZGV4IG11 c3QgcmVmbGVjdCBjdXJyZW50IHZhbHVlcywgbmV2ZXIgYQorLS0gc3RhbGUgY2hhaW4gbWVt YmVyOiB0aGUgYnVpbGQgc2NhbnMgbGl2ZSB0dXBsZXMgb25seSBhbmQgcG9pbnRzIGVhY2gK Ky0tIEhPVC1pbmRleGVkIGxpdmUgdHVwbGUncyBlbnRyeSBhdCBpdHMgb3duIFRJRCwgc28g dGhlIG5ldyBlbnRyaWVzIGhhdmUgbm8KKy0tIGhvcCBhZnRlciB0aGVtIGFuZCB0aGUgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGtlZXBzIHRoZW0uCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWluZGV4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9y ZWluZGV4X2EgT04gaGlfcmVpbmRleChhKTsKK0lOU0VSVCBJTlRPIGhpX3JlaW5kZXggU0VM RUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9y ZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQg b24gYQorVVBEQVRFIGhpX3JlaW5kZXggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAg ICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAg QVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0 YXRzKCdoaV9yZWluZGV4Jyk7CistLSBCdWlsZCBhIE5FVyBpbmRleCBhbmQgUkVJTkRFWCB0 aGUgZXhpc3Rpbmcgb25lIG92ZXIgdGhlIGxpdmUgY2hhaW5zLgorQ1JFQVRFIElOREVYIGhp X3JlaW5kZXhfYiBPTiBoaV9yZWluZGV4KGIpOworUkVJTkRFWCBJTkRFWCBoaV9yZWluZGV4 X2E7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9y ZWluZGV4IFdIRVJFIGEgPSAyMDQ7ICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgNAor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBv YnNvbGV0ZSB2YWx1ZSAtPiAwCitTRUxFQ1QgaWQgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGIg PSAyOyAgICAgICAgICAgIC0tIHZpYSBmcmVzaGx5IGJ1aWx0IGluZGV4IC0+IDIKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9yZWluZGV4OworCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1Qt aW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMg YXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0g SE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBv ZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUgd2l0aG91dCBl cnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0 IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9k cm9waWR4X2EgT04gaGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VM RUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9w aWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24g YQorVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAt LSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMg bWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRz KCdoaV9kcm9waWR4Jyk7CistLSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZl ZCBIT1QtaW5kZXhlZCBtZW1iZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElO REVYIGhpX2Ryb3BpZHhfYTsKK0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJB SU5UIGhpX2Ryb3BpZHhfcGtleTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRl eCBwYXRoOyB0d28gcGFzc2VzIGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFp bSBndWFyZCBhcyB3ZWxsLgorVkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlk eDsKKy0tIFJlYWRzIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25l LgorU0VMRUNUIGlkLCBhIEZST00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKK0RST1AgVEFC TEUgaGlfZHJvcGlkeDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4gUmUt Y29sbGFwc2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZBQ1VV TXMKKy0tCistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQgZGF0 YSByZWRpcmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYgKHNv IHRoZSBzdGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgorLS0g cmVjZWl2ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFwc2Ug dGhlIGNoYWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxpdmUg dHVwbGUsIG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBBIHN1 YnNlcXVlbnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBsZWF2 ZSB0aGUKKy0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5vdGhp bmcpLCBhbmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246IGFu IGVhcmxpZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCistLSBt ZW1iZXIgd2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4pCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNU UyBhbWNoZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklNQVJZ IEtFWSwgYSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVk ID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBPTiBoaV9yZWNvbGxh cHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMgKDEsIDEpOworLS0g Rmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVuIHBydW5lIHRvIGEg ZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlfcmVjb2xsYXBzZSBT RVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAz IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFw c2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRhdGVzIGV4dGVuZCB0 aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhlIG5leHQgcHJ1bmUg cmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmlyc3QgbGl2ZQorLS0g dHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VU IGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNSBX SEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNl OworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNoYWluOyB0aGUgcmUt cG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdvIHBhc3NlcyBhbHNv IGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFzcy4KK1ZBQ1VVTSBo aV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBIZWFwIG11c3QgYmUg c3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29ycnVwdGlvbikuCitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2UnKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlY29sbGFwc2UgV0hF UkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZhbHVlIC0+IGlkIDEKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAtLSBvYnNvbGV0ZSB2YWx1ZSAt PiAwCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlY29s bGFwc2UgT1JERVIgQlkgaWQ7CitEUk9QIFRBQkxFIGhpX3JlY29sbGFwc2U7CisKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9uIG92ZXIgYW4gZW50 cnkgdGhhdCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0tCistLSBBIGRhdGEg cmVkaXJlY3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEgYml0bWFwLCBzbyBp dCByZXBvcnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdlIHRydWUpIGV2ZW4g dGhvdWdoIGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4X2RlbGV0ZV9jaGVj a19odGlkIG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJlYWQgaXRzIGJsb2Ig YXMgYQorLS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xsYXBzZSBhIGNoYWlu IHJvb3QgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5nIHRoZSBzdGFsZSBs ZWFmIHRoYXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiksIHRoZW4gaW5zZXJ0 CistLSBtYW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBidHJlZSBib3R0b20t dXAgZGVsZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzIG92ZXIgdGhh dCBzdGFsZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX2lkZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92 YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9hIE9OIGhp X2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsKK1VQREFU RSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAgLS0gSE9U LWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsg ICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2Zm KSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRpcmVjdCwg a2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBzdGFsZSBr ZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0aW9uLCB3 aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRhLXJlZGly ZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0IG5vdCBj cmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwgU0VMRUNU IGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBoaV9pZGRl bDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlk ID0gMTsgICAgICAgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBhID0gMworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2lkZGVsOworCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDIxLiBBIGNoYW5nZSB0byBhIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9u LWJ0cmVlIGluZGV4IEFNIGlzIEhPVC1pbmRleGVkCistLQorLS0gQSBIT1QtaW5kZXhlZCB1 cGRhdGUgbGVhdmVzIGEgc3RhbGUgcHJlLXVwZGF0ZSBsZWFmIHRoYXQgdGhlIHJlYWQgc2lk ZQorLS0gZmlsdGVycyB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2gg aXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYy4KKy0tIEEgY29sdW1uIGNvdmVyZWQgYnkgYSBu b24tYnRyZWUgaW5kZXggKGhlcmUgYSBHaVNUIGluZGV4IG9uIGEgcG9pbnQgY29sdW1uKQor LS0gaXMgdGhlcmVmb3JlIEhPVC1pbmRleGVkIGxpa2UgYW55IG90aGVyLCBhbmQgdGhlIEdp U1QgaW5kZXggc3RpbGwgcmV0dXJucworLS0gY29ycmVjdCByZXN1bHRzIGFjcm9zcyB0aGUg Y2hhaW4uICBBIGNoYW5nZSB0byBhIGJ0cmVlLW9ubHkgY29sdW1uIG9uIHRoZQorLS0gc2Ft ZSB0YWJsZSBpcyBsaWtld2lzZSBIT1QtaW5kZXhlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX25vbmJ0cmVlIChpZCBpbnQgUFJJTUFSWSBLRVksIHRh ZyBpbnQsIHAgcG9pbnQpCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJ TkRFWCBoaV9ub25idHJlZV90YWcgT04gaGlfbm9uYnRyZWUgKHRhZyk7ICAgICAgICAgIC0t IGJ0cmVlIGluZGV4CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfcCBPTiBoaV9ub25idHJl ZSBVU0lORyBnaXN0IChwKTsgICAtLSBHaVNULCBub24tYnRyZWUKK0lOU0VSVCBJTlRPIGhp X25vbmJ0cmVlIFNFTEVDVCBnLCBnLCBwb2ludChnLCBnKQorICAgIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwMCkgZzsKKworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVyZWQgY29sdW1u IGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUgaGlfbm9uYnRy ZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOworU0VMRUNUIGhv dF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX25v bmJ0cmVlJyk7CisKKy0tIFRoZSBHaVNUIGluZGV4IG11c3QgcmV0dXJuIGNvcnJlY3QgcmVz dWx0czogdGhlIG9sZCBwb3NpdGlvbnMgYXJlIGdvbmUgYW5kCistLSBldmVyeSByb3cgaXMg Zm91bmQgYXQgaXRzIG5ldyBwb3NpdGlvbiAobm8gc3RhbGUgbGVhZiBzdXJmYWNlcyBhbiBv bGQga2V5KS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBB UyBhdF9vbGRfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJv eChwb2ludCgwLCAwKSwgcG9pbnQoMzAwLCAzMDApKTsKK1NFTEVDVCBjb3VudCgqKSBBUyBh dF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJveChw b2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CisKKy0tIENoYW5naW5nIHRoZSBidHJlZS1vbmx5IGNvbHVtbiAocCB1bmNoYW5n ZWQpIHN0YXlzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCB0YWcgPSB0 YWcgKyAxMDAwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGJ0cmVlX2NvbF9pc19ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKK0RST1AgVEFCTEUgaGlf bm9uYnRyZWU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjIuIEFCQSBvbiBh IHVuaXF1ZSBrZXkgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M6IGEga2V5IGN5Y2xl ZCBhd2F5CistLSBhbmQgYmFjayBtdXN0IHN0aWxsIGNvbGxpZGUgd2l0aCBhbm90aGVyIHJv dyB0aGF0IGhvbGRzIGl0LiAgVGhlIHN0YWxlCistLSBsZWF2ZXMgbGVmdCBieSB0aGUgY3lj bGUgbXVzdCBub3QgbGV0IGEgZ2VudWluZSBkdXBsaWNhdGUgc2xpcCBwYXN0IHRoZQorLS0g dW5pcXVlbmVzcyBjaGVjayAtLSB0aGUgcmVhZC1zaWRlIHJlY2hlY2sgY29tcGFyZXMgdGhl IGxpdmUga2V5LCBub3QganVzdAorLS0gYSBjaGFuZ2VkLWF0dHJpYnV0ZSBiaXRtYXAuCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGsgaW50LCB2 IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaGlf YWJhX2sgT04gaGlfYWJhIChrKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEg KHYpOworSU5TRVJUIElOVE8gaGlfYWJhIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworCist LSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNv IGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQgYW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVz IGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsK K1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4 ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2FiYScp OworCistLSByb3cxIGlzIGxpdmUgYXQgayA9IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRv IGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUKKy0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBz dGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9 IDEgV0hFUkUgdiA9IDIwOworRFJPUCBUQUJMRSBoaV9hYmE7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMjMuIFBhcnRpYWwgaW5kZXggd2hvc2UgcHJlZGljYXRlIHJlZmVy ZW5jZXMgYSBub24ta2V5IGNvbHVtbi4gIEZsaXBwaW5nIHRoZQorLS0gcm93IG91dCBvZiB0 aGUgcHJlZGljYXRlIHdoaWxlIGxlYXZpbmcgdGhlIGluZGV4ZWQga2V5IHVuY2hhbmdlZCBp cworLS0gSE9ULWluZGV4ZWQ6IHRoZSBwcmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhl IGluZGV4J3MgYXR0cmlidXRlIHNldCwgc28KKy0tIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBi aXRtYXAgZHJvcHMgdGhlIG5vdy1zdGFsZSBwYXJ0aWFsLWluZGV4IGVudHJ5IG9uIHJlYWQK Ky0tIChubyB2YWx1ZSByZWNoZWNrIGlzIGludm9sdmVkKS4KKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRwcmVkIChpZCBpbnQgUFJJTUFSWSBLRVks IGsgaW50LCBhY3RpdmUgYm9vbGVhbikKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3BhcnRwcmVkX2sgT04gaGlfcGFydHByZWQgKGspIFdIRVJFIGFj dGl2ZTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRwcmVkIFZBTFVFUyAoMSwgMTAwLCB0cnVlKTsK KworLS0gRmxpcCB0aGUgcHJlZGljYXRlIGNvbHVtbiAnYWN0aXZlJyB0cnVlIC0+IGZhbHNl OyB0aGUgaW5kZXgga2V5IGsgaXMKKy0tIHVuY2hhbmdlZC4gIFRoZSByb3cgbm8gbG9uZ2Vy IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBzbyBpdHMgcGFydGlhbC1pbmRleAorLS0gZW50 cnkgbXVzdCBiZSByZW1vdmVkLCBub3QgbGVmdCBwb2ludGluZyBpbnRvIHRoZSBjaGFpbi4K K1VQREFURSBoaV9wYXJ0cHJlZCBTRVQgYWN0aXZlID0gZmFsc2UgV0hFUkUgaWQgPSAxOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdCwgaG90X2lk eCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydHByZWQnKTsKKworLS0gVGhlIHBhcnRpYWwg aW5kZXggbXVzdCBub3Qgc3VyZmFjZSB0aGUgcm93IG5vdyB0aGF0IGFjdGl2ZSA9IGZhbHNl LgorLS0gQSBxdWVyeSB3aG9zZSBxdWFsIGV4YWN0bHkgbWF0Y2hlcyB0aGUgcGFydGlhbCBw cmVkaWNhdGUgdXNlcyB0aGUgaW5kZXgKKy0tIHdpdGhvdXQgcmUtZmlsdGVyaW5nICdhY3Rp dmUnIG9uIHRoZSBoZWFwLCBzbyBhIHN0YWxlIGVudHJ5IHdvdWxkIHN1cmZhY2UuCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFj dGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFj dGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsKK1JFU0VU IGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IGhpX3BhcnRwcmVkOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI0LiBSZWNs YWltICsgc3R1YiBtaXguICBSZXBlYXRlZCB1cGRhdGVzIG9mIGNvbHVtbiBhIGZvbGxvd2Vk IGJ5IGFuIHVwZGF0ZQorLS0gb2YgY29sdW1uIGIgYnVpbGQgYSBjaGFpbiB3aG9zZSBwcnVu ZSByZWNsYWltcyB0aGUgbWVtYmVycyB3aG9zZSBjaGFuZ2Ugd2FzCistLSBzdXBlcnNlZGVk IChhIGNoYW5nZWQgYWdhaW4pIGFuZCBrZWVwcyBzdHVicyBmb3IgdGhvc2UgdGhhdCB3ZXJl IG5vdCwgc28gYQorLS0gcm9vdCByZWRpcmVjdCBlbmRzIHVwIHBvaW50aW5nIGF0IGEgc3R1 YiBhbmQgYSBsYXRlciB3YWxrIGNyb3NzZXMgbWlkLWNoYWluCistLSBzdHVicy4gIFJlYWRz IHRocm91Z2ggZWFjaCBpbmRleCBhbmQgYW1jaGVjayBtdXN0IHN0YXkgY29ycmVjdCBhY3Jv c3MgdGhlCistLSBjb2xsYXBzZSwgYW5kIGEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUg ZXhpc3Rpbmcgc3R1YnMgd2l0aG91dCBzZXZlcmluZworLS0gdGhlIGNoYWluLgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfc3R1Ym1peCAoaWQgaW50IFBS SU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3Zh Y3V1bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYSBPTiBo aV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2IgT04gaGlfc3R1Ym1p eCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitV UERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2Vz IGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOyAgIC0tIGNo YW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBoaV9zdHVibWl4IFNFVCBiID0g MTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFDVVVNIGhpX3N0dWJtaXg7CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMjsgICAtLSBj dXJyZW50IGEKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYiA9IDEw MTsgIC0tIGN1cnJlbnQgYgorU0VMRUNUIGlkIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0g MTA7ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVwdGlvbiBhY3Jvc3Mgc3R1YnMKKy0t IEEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rpbmcgc3R1YnMgKG5vIHByaW9y WG1heCBzZXZlcikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDEzIFdIRVJFIGlkID0g MTsKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1p eCBXSEVSRSBhID0gMTM7CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJt aXgnKTsKK0RST1AgVEFCTEUgaGlfc3R1Ym1peDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyNS4gRXhjbHVzaW9uLWNvbnN0cmFpbnQgdGFibGVzIGFyZSBIT1QtaW5kZXhl ZC1lbGlnaWJsZS4KKy0tCistLSBBbiBleGNsdXNpb24gY29uc3RyYWludCBpcyBlbmZvcmNl ZCBieSBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQsCistLSB3aGljaCBy ZWNoZWNrcyBlYWNoIGNhbmRpZGF0ZSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlJ3MgY3VycmVu dCBpbmRleC1mb3JtCistLSB3aXRoIHRoZSBjb25zdHJhaW50J3Mgb3duIG9wZXJhdG9ycywg c28gYSBzdGFsZSBlbnRyeSBsZWZ0IGJ5IGEgSE9ULWluZGV4ZWQKKy0tIHVwZGF0ZSBpcyBz a2lwcGVkIHdoaWxlIHRoZSBsaXZlIGtleSBhbHdheXMgaGFzIGl0cyBvd24gZW50cnkuICBV cGRhdGluZyBhCistLSBub24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW4gaXMgSE9ULWlu ZGV4ZWQgKHRoZSBHaVNUIGV4Y2x1c2lvbiBpbmRleCBpcworLS0gc2tpcHBlZCksIGFuZCB0 aGUgY29uc3RyYWludCBzdGF5cyBjb3JyZWN0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfZXhjbCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHRhZyBpbnQsCisgICAgZHVyaW5nIGludDRyYW5nZSwKKyAgICBFWENMVURFIFVTSU5HIGdp c3QgKGR1cmluZyBXSVRIICYmKQorKSBXSVRIIChmaWxsZmFjdG9yID0gMTApOworQ1JFQVRF IElOREVYIGhpX2V4Y2xfdGFnIE9OIGhpX2V4Y2wodGFnKTsKK0lOU0VSVCBJTlRPIGhpX2V4 Y2wgVkFMVUVTICgxLCAxMDAsIGludDRyYW5nZSgxLCAxMCkpLCAoMiwgMjAwLCBpbnQ0cmFu Z2UoMjAsIDMwKSk7CisKKy0tIFVwZGF0ZSBhIG5vbi1jb25zdHJhaW5lZCBpbmRleGVkIGNv bHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGluZGV4CistLSBhbmQgUEsgc2tp cHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgc3RpbGwgZW5mb3JjZWQu CitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfZXhjbCcpOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDMsIDMwMCwg aW50NHJhbmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0xJ3MgKDEsMTApCisKKy0tIE1v dmUgaWQ9MSdzIHJhbmdlIGF3YXkgKHRoaXMgdXBkYXRlcyB0aGUgR2lTVCBpbmRleCwgbGVh dmluZyBhIHN0YWxlIGVudHJ5CistLSBmb3IgdGhlIG9sZCAoMSwxMCkgcmFuZ2UpLiAgQSBy YW5nZSBvdmVybGFwcGluZyBvbmx5IHRoZSBPTEQgcmFuZ2Ugbm93CistLSBpbnNlcnRzIGNs ZWFubHkgKHRoZSBzdGFsZSBlbnRyeSBpcyBza2lwcGVkKTsgb25lIG92ZXJsYXBwaW5nIHRo ZSBORVcgcmFuZ2UKKy0tIHN0aWxsIGNvbmZsaWN0cy4KK1VQREFURSBoaV9leGNsIFNFVCBk dXJpbmcgPSBpbnQ0cmFuZ2UoMTAwLCAxMTApIFdIRVJFIGlkID0gMTsKK0lOU0VSVCBJTlRP IGhpX2V4Y2wgVkFMVUVTICg0LCA0MDAsIGludDRyYW5nZSg1LCAxNSkpOyAgIC0tIG9ubHkg b3ZlcmxhcHBlZCBvbGQgcmFuZ2U6IE9LCitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAo NSwgNTAwLCBpbnQ0cmFuZ2UoMTA1LCAxMTUpKTstLSBvdmVybGFwcyBuZXcgKDEwMCwxMTAp OiBjb25mbGljdAorRFJPUCBUQUJMRSBoaV9leGNsOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDI2LiBUT0FTVCBpbnRlcmFjdGlvbi4gIEFuIGluZGV4ZWQgY29sdW1uIHN0 b3JlZCBvdXQtb2YtbGluZSBtdXN0IGJlaGF2ZQorLS0gY29ycmVjdGx5IGFjcm9zcyBIT1Qt aW5kZXhlZCB1cGRhdGVzOiBhbiBlbnRyeSBrZXB0IGFjcm9zcyBhbiB1cGRhdGUgb2YgYQor LS0gZGlmZmVyZW50IGNvbHVtbiBzdGlsbCByZXNvbHZlcyB0byB0aGUgKHVuY2hhbmdlZCkg dG9hc3RlZCB2YWx1ZSwgYW5kIGFmdGVyCistLSB0aGUgdG9hc3RlZCBjb2x1bW4gaXRzZWxm IGlzIGNoYW5nZWQgdGhlIHN0YWxlIGVudHJ5IGlzIGRyb3BwZWQgYnkgdGhlCistLSBjcm9z c2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZhbHVlIGNvbXBhcmlzb24gb3IgZGV0b2FzdGlu ZyBpcyBuZWVkZWQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfdG9hc3QgKGlkIGludCBQUklNQVJZIEtFWSwgYmlnIHRleHQsIHRhZyBpbnQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitBTFRFUiBUQUJMRSBoaV90b2FzdCBBTFRFUiBDT0xVTU4g YmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFMOyAgLS0gbm8gY29tcHJlc3Npb24KK0NSRUFURSBJ TkRFWCBoaV90b2FzdF9iaWcgT04gaGlfdG9hc3QgKGJpZyk7CitDUkVBVEUgSU5ERVggaGlf dG9hc3RfdGFnIE9OIGhpX3RvYXN0ICh0YWcpOworSU5TRVJUIElOVE8gaGlfdG9hc3QgVkFM VUVTICgxLCByZXBlYXQoJ0EnLCAyMDAwKSwgMTApOworLS0gVGhlIGJpZyB2YWx1ZSBpcyBz dG9yZWQgb3V0LW9mLWxpbmUuCitTRUxFQ1QgcGdfY29sdW1uX3NpemUoYmlnKSA+IDE1MDAg QVMgYmlnX2lzX2V4dGVybmFsIEZST00gaGlfdG9hc3QgV0hFUkUgaWQgPSAxOworLS0gSE9U LWluZGV4ZWQgdXBkYXRlIG9mIHRhZyBsZWF2ZXMgYmlnIChhbmQgaXRzIGluZGV4IGVudHJ5 KSB1bmNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIHRhZyA9IDExIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIEZST00g Z2V0X2hpX2NvdW50KCdoaV90b2FzdCcpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCB0YWcsIGxlbmd0aChi aWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7CistLSBI T1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRvYXN0ZWQgaW5kZXhlZCBjb2x1bW4gaXRzZWxm OiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cgc3RhbGUgYmVjYXVzZSB0aGUgY3Jvc3NlZC1h dHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBjaGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNF VCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgaWQgRlJP TSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAwKTsgICAtLSBzdGFsZTog MCByb3dzCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmln ID0gcmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVh cGFtKCdoaV90b2FzdCcpOworRFJPUCBUQUJMRSBoaV90b2FzdDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAyNy4gQUJBIG9uIGFuIGluZGV4ZWQgY29sdW1uLiAgQSBIT1Qt aW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQKKy0tIGNvbHVtbiB0byBhIHZh bHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkgaGVsZCBsZWF2ZXMgdHdvIGxl YXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNoYWluLXJlc29sdmluZyB0byB0 aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJlY2hlY2sgY2Fubm90IHRlbGwg dGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cgdHdpY2U7IHRoZQorLS0gY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBsZWFmIChp dHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5nIGhvcHMpIGFuZCBrZWVwcyBv bmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5kZXggc2NhbgorLS0gcmV0dXJu cyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVzdCBub3QgY2hhbmdlIHRoYXQu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGlkIGlu dCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlf YWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEs IDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSBpZCA9IDE7ICAgLS0gSE9U LWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBX SEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3ljbGVkIGJhY2sgKEFCQSkKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsK K1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlfYWJhIFdIRVJFIGsgPSAxOyAg ICAgLS0gZXhhY3RseSAxCitTRUxFQ1QgY291bnQoKikgQVMgazNfZ29uZSBGUk9NIGhpX2Fi YSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3BwZWQpCitSRUlOREVYIElOREVY IGhpX2FiYV9rOworU0VMRUNUIGNvdW50KCopIEFTIGsxX2FmdGVyX3JlaW5kZXggRlJPTSBo aV9hYmEgV0hFUkUgayA9IDE7ICAtLSBzdGlsbCAxCitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KCdoaV9hYmEnKTsKK0RST1AgVEFCTEUgaGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDI4LiBQYXJ0aWFsIGluZGV4LCBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQg YnV0IHRoZSByb3cgU1RBWVMgaW4gdGhlIGluZGV4CistLSAocHJlZGljYXRlIHN0aWxsIHRy dWUsIGtleSB1bmNoYW5nZWQpLiAgVGhlIHVwZGF0ZSBpcyBIT1QtaW5kZXhlZDsgc2VsZWN0 aXZlCistLSBtYWludGVuYW5jZSByZS1pbnNlcnRzIGEgZnJlc2ggZW50cnkgKHRoZSBwcmVk aWNhdGUgY29sdW1uIGNoYW5nZWQgYW5kIHN0aWxsCistLSBob2xkcyksIHNvIHRoZSByb3cg aXMgc3RpbGwgcmV0dXJuZWQgLS0gdGhlIGJpdG1hcCBkcm9wcyB0aGUgb2xkZXIgZW50cnkg YW5kCistLSB0aGUgZnJlc2ggb25lIHJlLXN1cHBsaWVzIGl0LiAgR3VhcmRzIGFnYWluc3Qg YSAibG9zdCByb3ciIGZyb20gb3Zlci1lYWdlcgorLS0gZHJvcHBpbmcuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0c3RheSAoaWQgaW50IFBSSU1B UlkgS0VZLCBrIGludCwgbiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggaGlfcGFydHN0YXlfayBPTiBoaV9wYXJ0c3RheSAoaykgV0hFUkUgbiA+IDA7CitD UkVBVEUgSU5ERVggaGlfcGFydHN0YXlfaWQyIE9OIGhpX3BhcnRzdGF5IChpZCk7CitJTlNF UlQgSU5UTyBoaV9wYXJ0c3RheSBWQUxVRVMgKDEsIDUsIDMpOworVVBEQVRFIGhpX3BhcnRz dGF5IFNFVCBuID0gNyBXSEVSRSBpZCA9IDE7ICAgLS0gbiAzLT43LCBzdGlsbCA+IDAsIGsg dW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1Qg aG90X2lkeCA+IDAgQVMgc3RheV9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgn aGlfcGFydHN0YXknKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBzdGF5X3Jvd3MgRlJPTSBo aV9wYXJ0c3RheSBXSEVSRSBrID0gNSBBTkQgbiA+IDA7ICAgLS0gd2FudCAxCitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBo aV9wYXJ0c3RheTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOS4gUGFydGl0 aW9uZWQgdGFibGUuICBBIHdpdGhpbi1wYXJ0aXRpb24gVVBEQVRFIG9mIG9uZSBpbmRleGVk IGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQgb24gdGhlIGxlYWYgcGFydGl0aW9uJ3MgaGVh cCBleGFjdGx5IGFzIGZvciBhIG5vbi1wYXJ0aXRpb25lZAorLS0gdGFibGU7IGEgY3Jvc3Mt cGFydGl0aW9uIHVwZGF0ZSBpcyBhIGRlbGV0ZStpbnNlcnQgYW5kIG5ldmVyIEhPVC4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKGlkIGludCwg YSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkKTsKK0NSRUFURSBUQUJMRSBo aV9wYXJ0MSBQQVJUSVRJT04gT0YgaGlfcGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx MDApCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0 X2EgT04gaGlfcGFydCAoYSk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9iIE9OIGhpX3BhcnQg KGIpOworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEsIDEwLCAyMCk7CitVUERBVEUg aGlfcGFydCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBvbmUgaW5kZXhlZCBjb2ws IHdpdGhpbiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK K1NFTEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hp X2NvdW50KCdoaV9wYXJ0MScpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGExMSBGUk9NIGhp X3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQorU0VMRUNUIGNvdW50KCopIEFTIGEx MCBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDEwOyAgIC0tIHdhbnQgMCAoc3RhbGUgZHJvcHBl ZCkKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQxJyk7CitEUk9QIFRBQkxFIGhp X3BhcnQ7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzAuIE5vbi1idHJlZSBh Y2Nlc3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgYWNjZXNzLW1l dGhvZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLCBzbyBh bnkgaW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkLiAgSGFzaCBpcyB0aGUg c2hhcnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhlIGhlYXAgdmFsdWUsCistLSB3 aGljaCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFsdWUgY3ljbGVkIGF3YXkgYW5k IGJhY2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9y IHNvIHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQgaW50IFBSSU1BUlkgS0VZLCB2 IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf aGFzaF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitDUkVBVEUgSU5ERVggaGlfaGFz aF93IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlfaGFzaCBWQUxVRVMgKDEsIDEw LCAxMDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERB VEUgaGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsgICAtLSBBQkE6IDEwIC0+IDk5 IC0+IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhhc2hfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRf aGlfY291bnQoJ2hpX2hhc2gnKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3YxMCBG Uk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQgMSAobm8gZHVwbGljYXRlKQor U0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlfaGFzaCBXSEVSRSB2ID0gOTk7 ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfaGFzaDsKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAzMS4gRERMIGFmdGVyIGEgSE9ULWluZGV4ZWQgY2hh aW4gZXhpc3RzLiAgVGhlIHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKy0tIGJpdG1hcCBvbiB0 aGUgcGFnZSBpcyBrZXllZCBieSBwaHlzaWNhbCBhdHRyaWJ1dGUgbnVtYmVyIGFuZCBzaXpl ZCBieSB0aGUKKy0tIHJlbGF0aW9uJ3MgbmF0dHMgQVQgV1JJVEUgVElNRS4gIEluZGV4ZXMg YWRkZWQvZHJvcHBlZCBhZnRlciB0aGUgY2hhaW4KKy0tIGZvcm1zLCBhbmQgQUREL0RST1Ag Q09MVU1OLCBtdXN0IG5vdCBjb3JydXB0IHRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIHRlc3Qu CistLSBUaGUgc2hhcnAgY2FzZSBpcyBBREQgQ09MVU1OIGNyb3NzaW5nIGFuIDgtYXR0cmli dXRlIGJvdW5kYXJ5LCB3aGljaCBncm93cworLS0gY2VpbChuYXR0cy84KTogcmVhZGVycyBt dXN0IGxvY2F0ZSBlYWNoIGhvcCdzIGJpdG1hcCBmcm9tIHRoYXQgaG9wJ3Mgb3duCistLSB3 cml0ZS10aW1lIG5hdHRzIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyAvIHRoZSBzdHViJ3Mg c3Rhc2hlZCBuYXR0cyksIG5vdAorLS0gdGhlIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cy4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRXhhY3RseSA4IGF0dHJpYnV0ZXMgKGMx Li5jNyArIHBheWxvYWQpIHNvIGFkZGluZyB0aGUgOXRoIGZsaXBzIHRoZSBiaXRtYXAKKy0t IGZyb20gMSBieXRlIHRvIDIuICBjNyBpcyB0aGUgY29sdW1uIHdlIGNodXJuOyBjMiBpcyBh biB1bmNoYW5nZWQgaW5kZXhlZAorLS0gY29sdW1uIHdob3NlIGxlYWYgbXVzdCBzdGF5IGN1 cnJlbnQuCitDUkVBVEUgVEFCTEUgaGlfZGRsICgKKyAgICBjMSBpbnQgUFJJTUFSWSBLRVks IGMyIGludCwgYzMgaW50LCBjNCBpbnQsCisgICAgYzUgaW50LCBjNiBpbnQsIGM3IGludCwg cGF5bG9hZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFi bGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX2RkbF9jMiBPTiBoaV9kZGwoYzIpOwor Q1JFQVRFIElOREVYIGhpX2RkbF9jNyBPTiBoaV9kZGwoYzcpOworSU5TRVJUIElOVE8gaGlf ZGRsIFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgNDAsIDUwLCA3MCwgJ3AnKTsKKworLS0gRm9y bSBhIEhPVC1pbmRleGVkIGNoYWluIG9uIGM3IEJFRk9SRSBhbnkgZnVydGhlciBEREwuCitV UERBVEUgaGlfZGRsIFNFVCBjNyA9IDcxIFdIRVJFIGMxID0gMTsKK1VQREFURSBoaV9kZGwg U0VUIGM3ID0gNzIgV0hFUkUgYzEgPSAxOworCistLSAoYSkgQ1JFQVRFIElOREVYIGFmdGVy IHRoZSBjaGFpbiBleGlzdHM6IHRoZSBuZXcgaW5kZXggaXMgYnVpbHQgYWdhaW5zdCB0aGUK Ky0tIGxpdmUgdHVwbGUgdW5kZXIgaXRzIG93biBUSUQsIHNvIGl0cyBlbnRyeSBpcyBuZXZl ciBzdGFsZS4KK0NSRUFURSBJTkRFWCBoaV9kZGxfYzMgT04gaGlfZGRsKGMzKTsKKworLS0g KGIpIEFERCBDT0xVTU4gY3Jvc3NpbmcgdGhlIDgtYXR0cmlidXRlIGJvdW5kYXJ5IChuYXR0 cyA4IC0+IDkpLiAgRXhpc3RpbmcKKy0tIGhvcHMga2VlcCB0aGVpciAxLWJ5dGUgYml0bWFw czsgdGhlIHJlbGF0aW9uIG5vdyB3YW50cyAyLiAgUmVhZHMgdGhyb3VnaCB0aGUKKy0tIG9s ZCBjaGFpbiBtdXN0IHN0aWxsIGJlIGNvcnJlY3QuCitBTFRFUiBUQUJMRSBoaV9kZGwgQURE IENPTFVNTiBjOSBpbnQ7CitDUkVBVEUgSU5ERVggaGlfZGRsX2M5IE9OIGhpX2RkbChjOSk7 CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKKworLS0gTGl2ZSBjNyBp cyA3Mi4gIFRoZSBjNyBpbmRleCBtdXN0IHJldHVybiB0aGUgbGl2ZSByb3cgZm9yIDcyIGFu ZCBkcm9wIHRoZQorLS0gc3RhbGUgbGVhdmVzIGZvciA3MCBhbmQgNzEgKG9mZnNldHMgbWlz cmVhZCB3b3VsZCBjb3JydXB0IHRoaXMpLgorU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcy IEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitT RUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83MV9zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcxIEFORCBwYXlsb2FkIElTIE5P VCBOVUxMOworCistLSBjMiBuZXZlciBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW46IGl0cyBs ZWFmIG11c3QgTk9UIGJlIGp1ZGdlZCBzdGFsZSBldmVuCistLSB0aG91Z2ggYSBjcm9zc2Vk IGhvcCBjaGFuZ2VkIGM3LiAgQSBtaXNyZWFkIGJpdG1hcCBjb3VsZCBzcHVyaW91c2x5IGZs YWcgaXQuCitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfY3VycmVudCBGUk9NIGhpX2Rk bCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAoYykgQ29u dGludWUgY2h1cm5pbmcgYzcgQUZURVIgdGhlIEFERCBDT0xVTU46IHRoZSBuZXcgaG9wJ3Mg Yml0bWFwIGlzIHNpemVkCistLSBmb3IgbmF0dHMgOSAoMiBieXRlcyk7IHRoZSBvbGQgaG9w cyBhcmUgMSBieXRlLiAgQSBjaGFpbiB3aXRoIG1peGVkLXNpemUKKy0tIGJpdG1hcHMgbXVz dCBzdGlsbCByZXNvbHZlIGNvcnJlY3RseS4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzMg V0hFUkUgYzEgPSAxOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzczIEZST00gaGlfZGRs IFdIRVJFIGM3ID0gNzMgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQo KikgQVMgYzdfZXFfNzJfbm93X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5E IHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChkKSBDb2xsYXBzZSB0aGUgY2hhaW4gdG8g c3R1YnMgdmlhIFZBQ1VVTSwgdGhlbiByZWFkIGFnYWluOiB0aGUgc3R1YiBtdXN0CistLSBw cmVzZXJ2ZSBpdHMgd3JpdGUtdGltZSBuYXR0cyBzbyBpdHMgYml0bWFwIHN0YXlzIGxvY2F0 YWJsZSBwb3N0LUFERCBDT0xVTU4uCitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDc0IFdIRVJF IGMxID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX2RkbDsKK1NFTEVDVCBj b3VudCgqKSBBUyBjN19lcV83NF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9l cV8xMF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9h ZCBJUyBOT1QgTlVMTDsKKworLS0gKGUpIERST1AgQ09MVU1OIGtlZXBzIHRoZSBhdHRudW0g c2xvdCAobm8gcmVudW1iZXIpLCBzbyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KK0FMVEVSIFRB QkxFIGhpX2RkbCBEUk9QIENPTFVNTiBjNDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19hZnRl cl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5V TEw7CitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVS RSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAoZikgRFJPUCBJTkRF WCBvbiB0aGUgY2h1cm5lZCBjb2x1bW46IHJlbWFpbmluZyBpbmRleGVzIHN0aWxsIHJlc29s dmUuCitEUk9QIElOREVYIGhpX2RkbF9jNzsKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9hZnRl cl9kcm9waWR4IEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEw7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKKworLS0gVGhlIHNlcXNjYW4gdHJ1 dGggY29uZmlybXMgdGhlIGxpdmUgcm93OyB0aGUgY291bnQgYXNzZXJ0aW9ucyBhYm92ZSAo cmVhZAorLS0gdGhyb3VnaCB0aGUgcG9zdC1EREwgaW5kZXhlcykgbWF0Y2ggaXQsIHdoaWNo IGlzIHdoYXQgd291bGQgYnJlYWsgaWYgYQorLS0gbWlzLXNpemVkIGJpdG1hcCBjb3JydXB0 ZWQgdGhlIHN0YWxlbmVzcyB2ZXJkaWN0LgorU0VMRUNUIGMxLCBjMiwgYzcgRlJPTSBoaV9k ZGwgV0hFUkUgYzEgPSAxOworCitEUk9QIFRBQkxFIGhpX2RkbDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSBDbGVhbnVwCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RS T1AgRlVOQ1RJT04gZ2V0X2hpX2NvdW50KHRleHQpOworRFJPUCBGVU5DVElPTiBnZXRfaG90 X2NvdW50KHRleHQpOworLS0gcGFnZWluc3BlY3QgYW5kIGFtY2hlY2sgd2VyZSBib3RoIGNy ZWF0ZWQgYWJvdmUgd2l0aCBJRiBOT1QgRVhJU1RTIGFuZCBtYXkKKy0tIGhhdmUgcHJlLWV4 aXN0ZWQgdGhpcyB0ZXN0OyBsZWF2ZSB0aGVtLCBtYXRjaGluZyBhbWNoZWNrJ3MgdHJlYXRt ZW50LAorLS0gcmF0aGVyIHRoYW4gcmlzayBkcm9wcGluZyBhbiBleHRlbnNpb24gdGhpcyB0 ZXN0IGRpZCBub3QgY3JlYXRlLgotLSAKMi41MC4xCgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBkYmZjZmFlNTZjNTBlZjhlMzE4ZTAwMWVjYWY5YTk4ZDA0NGM0ZjI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDgv OV0gR2F0ZSBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9u CiBhcHBseSBwYXRoCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRp dHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQpzdGFsZSBpbmRleCBsZWFm IHRoYXQgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBtdXN0 IHRvbGVyYXRlCi0tIHdoaWNoIHRoZXkgZG8sIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnNjcmli ZXIncyBpbmRleGVkIGF0dHJpYnV0ZXMgZG8gbm90CmV4dGVuZCBwYXN0IHRoZSBjb2x1bW5z IHRob3NlIGxvb2t1cHMga2V5IG9uLiAgQWRkIHRoZSBwZXItc3Vic2NyaXB0aW9uCmhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAoc3ViaG90aW5kZXhlZG9uYXBwbHk6IG9mZiAvIHN1 YnNldF9vbmx5IChkZWZhdWx0KQovIGFsd2F5cykgYW5kIGhhdmUgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSBjb25zdWx0IGl0IHdoZW4gcnVubmluZyBpbiBhbiBhcHBseQp3b3JrZXIsIGNv bXBhcmluZyB0aGUgcmVsYXRpb24ncyBpbmRleGVkLWF0dHJpYnV0ZSBzZXQgYWdhaW5zdCBp dHMgcHJpbWFyeS1rZXkKYXR0cmlidXRlczogIm9mZiIgZGlzcXVhbGlmaWVzIEhPVC1pbmRl eGVkIHdoZW5ldmVyIGFueSBpbmRleGVkIGF0dHJpYnV0ZSBsaWVzCm91dHNpZGUgdGhlIHBy aW1hcnkga2V5LCAic3Vic2V0X29ubHkiIHJlcXVpcmVzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMgdG8gYmUgYQpzdWJzZXQgb2YgdGhlIHByaW1hcnkga2V5LCBhbmQgImFsd2F5cyIgYXBw bGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KCldpcmUgdGhlIG9wdGlvbiB0aHJvdWdoIENS RUFURS9BTFRFUiBTVUJTQ1JJUFRJT04sIHBnX3N1YnNjcmlwdGlvbiwgcGdfZHVtcCwKYW5k IHBzcWwncyBcZFJzKywgYW5kIGRvY3VtZW50IGl0IChjcmVhdGVfc3Vic2NyaXB0aW9uLCBh bHRlcl9zdWJzY3JpcHRpb24sCmNhdGFsb2dzKS4gIENvdmVyIGFwcGx5IHVuZGVyIGVhY2gg bW9kZSAoMDM5KSwgYXBwbHkgdW5kZXIgUkVQTElDQSBJREVOVElUWQpGVUxMIGFuZCBhIG5v bi1QSyBVU0lORyBJTkRFWCB3aG9zZSBrZXkgaXMgY3ljbGVkICgwNDApLCBhbmQgZGVjb2Rp bmcgb2YKSE9ULWluZGV4ZWQgdXBkYXRlIGNoYWlucyAodGVzdF9kZWNvZGluZykuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi90ZXN0X2Rl Y29kaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vdGVzdF9kZWNv ZGluZy9leHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQgICAgfCAgNTkgKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgICAgIHwgIDI5ICsrCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA3ICstCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgNTUgKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICAgfCAgMzQgKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMCAr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg NDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAzMyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgIDE3ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgfCAxNzYgKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCAgICAgICAgICAgICB8ICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsICAgfCA0MTYgKysrKysrKysrKysrKysrKysrCiAuLi4vdC8wNDBf aG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbCAgICAgfCAxMTAgKysrKysKIDIzIGZp bGVzIGNoYW5nZWQsIDk4NyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90X2luZGV4 ZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9o b3RfaW5kZXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5w bAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQppbmRleCAwMTExMTI0Mzk5YS4uODAwMjE2YjJh ZTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXJlcGFjayBzcGlsbCBzbG90 IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlyZXBh Y2sgc3BpbGwgc2xvdCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vf c3RyZWFtIGhvdF9pbmRleGVkCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAg b25kaXNrX3N0YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFw c2hvdF90cmFuc2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwK IAl0d29waGFzZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdl X3NuYXBzaG90IFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9ob3RfaW5kZXhlZC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90 X2luZGV4ZWQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x ZTIxODZmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9l eHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQKQEAgLTAsMCArMSw1OSBAQAorLS0gTG9naWNhbCBk ZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwgbGV2ZWwgKHRoZSBu ZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBtdXN0IGRlY29kZSBl eGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEgY2hhaW4gb2YKKy0t IEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElUWSBGVUxMIHNvIHRo ZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4gYm90aCBiZSBjaGVj a2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9N IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcs ICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEg cm93KQorCitDUkVBVEUgVEFCTEUgaGlfZGVjb2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9k ZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9O IGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJMRSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElU WSBGVUxMOworSU5TRVJUIElOVE8gaGlfZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7Cist LSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9uZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5 cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBh bmQgYmFjayAoQUJBKSBhbmQgdGhlbiBkZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEg PSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUg aWQgPSAxOworREVMRVRFIEZST00gaGlfZGVjb2RlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVUxMLAorICAgICAgICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9k ZWNvZGU6IElOU0VSVDogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06 MTAwCisgQ09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJdOjEwMCBu ZXctdHVwbGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMAor IENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQt a2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAgbmV3LXR1 cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEKKyBDT01N SVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisg QkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lO CisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJTgorIHRh YmxlIHB1YmxpYy5oaV9kZWNvZGU6IERFTEVURTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJd OjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisoMjEgcm93cykKKworU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworRFJPUCBUQUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvbWVzb24uYnVpbGQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVzb24uYnVpbGQK aW5kZXggYWM2NTU4NTNkMjYuLjkxNzY1Y2EwZTcyIDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21l c29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICdzdGF0cycs CiAgICAgICAndHdvcGhhc2UnLAogICAgICAgJ3R3b3BoYXNlX3N0cmVhbScsCisgICAgICAn aG90X2luZGV4ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsKICAgICAgICct LXRlbXAtY29uZmlnJywgZmlsZXMoJ2xvZ2ljYWwuY29uZicpLApkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgYi9jb250cmliL3Rlc3Rf ZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDVkN2QwOTFiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApAQCAtMCwwICsxLDI5IEBACist LSBMb2dpY2FsIGRlY29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRl eGVkIHVwZGF0ZSBpcyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBs ZXZlbCAodGhlIG5ldyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11 c3QgZGVjb2RlIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBj aGFpbiBvZgorLS0gSE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZ IEZVTEwgc28gdGhlIGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBi b3RoIGJlIGNoZWNrZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CisKK1NFTEVD VCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgVEFCTEUgaGlfZGVj b2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOwor Q1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9OIGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJM RSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyBoaV9k ZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0tIGVhY2ggdXBkYXRlIGNoYW5nZXMgb25l IGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlzIEhPVC1pbmRleGVkCitVUERBVEUgaGlf ZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQg YiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFuZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRl bGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJPTSBoaV9k ZWNvZGUgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwKKyAgICAgICAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKK1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworRFJPUCBU QUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEzOTE3Li40Yzlh YmE3MmJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTg3MjcsNiArODcyNywyMiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJob3RpbmRleGVkb25hcHBseTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBHYXRpbmcgbW9kZSBm b3IgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBDb3JyZXNwb25kcyB0byB0aGUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBseTwv bGl0ZXJhbD48L2xpbms+CisgICAgICAgc3Vic2NyaXB0aW9uIG9wdGlvbjoKKyAgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+bzwvbGl0 ZXJhbD4gPSBvZmY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJh PjxsaXRlcmFsPnM8L2xpdGVyYWw+ID0gc3Vic2V0X29ubHkgKGRlZmF1bHQpPC9wYXJhPjwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5hPC9saXRlcmFs PiA9IGFsd2F5czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzZXJ2ZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCBmYWQxZjkwOTU2YS4uN2JhMTkxODA5NDcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjk0LDggKzI5NCwxMSBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC10d28tcGhhc2UiPjxsaXRlcmFsPnR3 b19waGFzZTwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxsaXRl cmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsg bGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50 aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFs PjwvbGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9u LXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2 ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LCBhbmQKLSAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3Rp bmF0aW9uIj48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9s aW5rPi4KKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFy YW1zLXdpdGgtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjxsaXRlcmFsPndhbF9yZWNlaXZlcl90 aW1lb3V0PC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+ PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4sIGFu ZAorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMt d2l0aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBw bHk8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIEZvciA8bGl0ZXJhbD5ob3RfaW5kZXhlZF9v bl9hcHBseTwvbGl0ZXJhbD4sIHRoZSBuZXcgdmFsdWUgdGFrZXMgZWZmZWN0CisgICAgICBh dCB0aGUgYXBwbHkgd29ya2VyJ3MgbmV4dCBjYXRhbG9nIHJlbG9hZC4KICAgICAgIE9ubHkg YSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNl PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDgxZmJmMzQ4N2E0Li4wZDU5Zjg1N2JiMyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTY1MSw2 ICs2NTEsNjEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgIDwvcGFy YT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0 aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmhvdF9p bmRleGVkX29uX2FwcGx5PC9saXRlcmFsPiAoPHR5cGU+dGV4dDwvdHlwZT4pPC90ZXJtPgor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDb250cm9s cyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24ncyBhcHBseSB3b3JrZXIgbWF5IHRha2UgdGhl CisgICAgICAgICAgSE9ULWluZGV4ZWQgdXBkYXRlIHBhdGggd2hlbiBhbiA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+IHJlcGxpY2F0ZWQKKyAgICAgICAgICBmcm9tIHRoZSBwdWJsaXNo ZXIgdG91Y2hlcyBhbiBpbmRleGVkIGF0dHJpYnV0ZS4gIEJlY2F1c2UgdGhlCisgICAgICAg ICAgc3Vic2NyaWJlcidzIGluZGV4IHNldCBtYXkgZGlmZmVyIGZyb20gdGhlIHB1Ymxpc2hl cidzLCBhbgorICAgICAgICAgIHVuY29uc3RyYWluZWQgSE9ULWluZGV4ZWQgZGVjaXNpb24g b24gdGhlIGFwcGx5IHBhdGggY2FuIHByb2R1Y2UgYQorICAgICAgICAgIGhlYXAgY2hhaW4g d2hvc2UgaW5kZXggc3RhdGUgZGlzYWdyZWVzIHdpdGggdGhlIHVwc3RyZWFtIHJvdy4gIFRo ZQorICAgICAgICAgIG9wdGlvbiByZXN0cmljdHMgd2hlbiB0aGUgYXBwbHkgd29ya2VyIGlz IGFsbG93ZWQgdG8gdGFrZSB0aGF0IHBhdGguCisgICAgICAgICA8L3BhcmE+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBBY2NlcHRlZCB2YWx1ZXMgYXJlOgorICAgICAgICAgIDx2 YXJpYWJsZWxpc3Q+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8 dGVybT48bGl0ZXJhbD5vZmY8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBGb3JjZSBub24tSE9U IG9uIGFwcGx5IHdoZW5ldmVyIHRoZSBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZAorICAg ICAgICAgICAgICBhdHRyaWJ1dGUgYmV5b25kIHRoZSBwcmltYXJ5IGtleS4gIFRoaXMgbWF0 Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgICAgICAgICAgICAgIHByZS1leGlzdGluZyBiZWhh dmlvdXIuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5zdWJzZXRfb25seTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICAgIEFsbG93IHRoZSBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhlIHN1 YnNjcmliZXIncworICAgICAgICAgICAgICBpbmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0 IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2gKKyAgICAgICAgICAgICAgaW5jbHVk ZXMgdGhlIG5vLXNlY29uZGFyeS1pbmRleCBjYXNlKS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQg YW5kCisgICAgICAgICAgICAgIGNhcHR1cmVzIHRoZSBjb21tb24gcmVwbGljYXRpb24tcmVh ZHkgc2NoZW1hIHNoYXBlIHdoaWxlIHN0YXlpbmcKKyAgICAgICAgICAgICAgc2FmZSB3aGVu IHRoZSBzdWJzY3JpYmVyIGFkZHMgaW5kZXhlcyB0aGUgcHVibGlzaGVyIGRvZXMgbm90Cisg ICAgICAgICAgICAgIGhhdmUuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5hbHdheXM8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5 IG9uIGFwcGx5LiAgVGhlIG9wZXJhdG9yCisgICAgICAgICAgICAgIHRha2VzIHJlc3BvbnNp YmlsaXR5IGZvciBrZWVwaW5nIHRoZSBzdWJzY3JpYmVyJ3MgaW5kZXhlZC1hdHRyCisgICAg ICAgICAgICAgIHNldCBjb21wYXRpYmxlIHdpdGggdGhlIHB1Ymxpc2hlcidzOyBkaXZlcmdl bnQgc2NoZW1hcyBjYW4KKyAgICAgICAgICAgICAgcHJvZHVjZSBzcHVyaW91cyBkdXBsaWNh dGUta2V5IGNvbmZsaWN0cyBmb3Igc3Vic2VxdWVudAorICAgICAgICAgICAgICBpbnNlcnRz IG9uIHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDwv dmFyaWFibGVsaXN0PgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCAyZTVlNWY0YTA4MS4uNTU2MTQ5 OGQ5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1Qt SU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVY RUQKQEAgLTI1Nyw2ICsyNTcsNDAgQEAgcGVyLWluZGV4IHJlY2hlY2sgb3V0Y29tZXM7IGFu ZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygpIHJlcG9ydHMKIHBlci1yZWxhdGlv biBIT1QtaW5kZXhlZCBjaGFpbiBjb3VudHMuCiAKIAorTG9naWNhbCByZXBsaWNhdGlvbgor LS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxp Y2EtaWRlbnRpdHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQorc3RhbGUg aW5kZXggbGVhZjsgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3Vw cyB0b2xlcmF0ZSB0aGF0Citvbmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUg Y292ZXJlZCBieSB0aGUgcmVwbGljYSBpZGVudGl0eS4gIFRoZQorcGVyLXN1YnNjcmlwdGlv biBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRpb24gKHBnX3N1YnNjcmlwdGlvbi5zdWJob3Rp bmRleGVkb25hcHBseSwKK29mZiAvIHN1YnNldF9vbmx5IC8gYWx3YXlzOyBzdWJzZXRfb25s eSBpcyB0aGUgZGVmYXVsdCkgY29udHJvbHMgdGhpczoKK0hlYXBVcGRhdGVIb3RBbGxvd2Fi bGUgY29uc3VsdHMgR2V0SG90SW5kZXhlZEFwcGx5TW9kZSBvbiB0aGUgYXBwbHkgcGF0aCBh bmQKK2ZhbGxzIGJhY2sgdG8gbm9uLUhPVCB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMg YXJlIG5vdCBleGFjdGx5IHRoZSBwcmltYXJ5CitrZXkgKG9mZikgb3Igbm90IGEgc3Vic2V0 IG9mIGl0IChzdWJzZXRfb25seSkuCisKKworUmVjb3ZlcnkKKy0tLS0tLS0tCisKK0hPVC1p bmRleGVkIHVwZGF0ZXMgYW5kIHRoZSBwcnVuZS9jb2xsYXBzZSB1c2UgdGhlIGV4aXN0aW5n IGhlYXAgVVBEQVRFIGFuZAorcHJ1bmUvZnJlZXplIFdBTCByZWNvcmRzLCBzbyBjcmFzaCBy ZWNvdmVyeSByZXBsYXlzIHRoZW0gd2l0aCBubyBuZXcgcmVjb3JkCit0eXBlcy4gIHNyYy90 ZXN0L3JlY292ZXJ5L3QvMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5LnBsIGJ1aWxkcyBhIGNo YWluLAorY3Jhc2hlcyB3aXRob3V0IGEgY2hlY2twb2ludCAoZm9yY2luZyBXQUwgcmVkbyks IGFuZCB2ZXJpZmllcyB0aGUgY2hhaW4gd2FsaywKK3ZlcmlmeV9oZWFwYW0sIGFuZCB2YWN1 dW0gcmVjbGFtYXRpb24gYWZ0ZXIgcmVzdGFydCwgd2l0aAord2FsX2NvbnNpc3RlbmN5X2No ZWNraW5nID0gJ2FsbCcgY29tcGFyaW5nIGVhY2ggcmVwbGF5ZWQgcGFnZSB0byBpdHMgRlBJ LgorCisKK0FkdmVyc2FyaWFsIHRlc3RzCistLS0tLS0tLS0tLS0tLS0tLQorCitzcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyBleGVyY2lz ZXMgdGhlIGNhc2VzIHRoZQoraW52YXJpYW50IG11c3Qgc2F0aXNmeSB1bmRlciBjb25jdXJy ZW5jeToga2V5IGN5Y2xpbmcgKFgtPlktPlgpLCBhYm9ydGVkCitIT1QtaW5kZXhlZCB1cGRh dGVzLCBjb25jdXJyZW50IHVuaXF1ZSBpbnNlcnRzIGFnYWluc3QgYSBmcmVlZC90YWtlbiBr ZXksCitzbmFwc2hvdC1zYWZlIHJlY2xhaW0gb2Ygc3RhbGUgbGVhdmVzLCBhbmQgcmVhZGVy IGNvbnNpc3RlbmN5IGFjcm9zcyBhCitjb25jdXJyZW50IHBydW5lL2NvbGxhcHNlLgorCisK IEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpp bmRleCAzYmZhYzhjMGIxOC4uM2RmYzYxOWNjNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCkBAIC00NTA0LDYgKzQ1MDQsMzYgQEAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMp CiAJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJl bGF0aW9uLAogCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKIAor CS8qCisJICogVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aCBnYXRlcyBIT1Qt aW5kZXhlZCB1cGRhdGVzIG9uIHRoZQorCSAqIHBlci1zdWJzY3JpcHRpb24gaG90X2luZGV4 ZWRfb25fYXBwbHkgb3B0aW9uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YKKwkgKiBhIHJl cGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIGxlYXZlcyBhIHN0YWxlIGluZGV4IGxlYWY7IHRo ZSBhcHBseQorCSAqIHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBjb3BlIHdp dGggdGhhdCAoc2VlCisJICogUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleCksIGJ1dCBv bmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUKKwkgKiBhIHN1YnNldCBvZiB0 aGUgcmVwbGljYSBpZGVudGl0eS4gICJvZmYiIGRpc3F1YWxpZmllcyB3aGVuZXZlciB0aGUK KwkgKiBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZCBhdHRyaWJ1dGUgYmV5b25kIGl0cyBQ SzsgInN1YnNldF9vbmx5IiAodGhlCisJICogZGVmYXVsdCkgcmVxdWlyZXMgdGhlIGluZGV4 ZWQgYXR0cmlidXRlcyB0byBiZSBhIHN1YnNldCBvZiB0aGUgUEs7CisJICogImFsd2F5cyIg YXBwbGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KKwkgKi8KKwlpZiAoSXNMb2dpY2FsV29y a2VyKCkpCisJeworCQljaGFyCQltb2RlID0gR2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpOwor CQljb25zdCBCaXRtYXBzZXQgICpwa19hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX1BS SU1BUllfS0VZKTsKKworCQlpZiAobW9kZSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09G RikKKwkJeworCQkJaWYgKCFibXNfZXF1YWwoYWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQor CQkJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKwkJfQorCQllbHNlIGlmICht b2RlID09IExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpCisJCXsKKwkJCWlm ICghYm1zX2lzX3N1YnNldChhbGxfaWR4X2F0dHJzLCBwa19hdHRycykpCisJCQkJcmV0dXJu IEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOworCQl9CisJCS8qIExPR0lDQUxSRVBfSE9UX0lO REVYRURfQUxXQVlTOiBubyBhcHBseS1wYXRoIGdhdGluZy4gKi8KKwl9CisKIAkvKgogCSAq IFN5c3RlbSBjYXRhbG9ncyBrZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcg bm8gbm9uLXN1bW1hcml6aW5nCiAJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1 cm5lZCBIRUFQX0hFQVBfT05MWV9VUERBVEUgYWJvdmUpLCBidXQgZG8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDIwNjhlMDNjNTcxLi5iMDY1YTdiZTI0 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xMzMsNiAr MTMzLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBi b29sIGNvbm5pbmZvX25lZWRlZCwKIAlzdWItPm1heHJldGVudGlvbiA9IHN1YmZvcm0tPnN1 Ym1heHJldGVudGlvbjsKIAlzdWItPnJldGVudGlvbmFjdGl2ZSA9IHN1YmZvcm0tPnN1YnJl dGVudGlvbmFjdGl2ZTsKIAlzdWItPmNvbmZsaWN0bG9ncmVsaWQgPSBzdWJmb3JtLT5zdWJj b25mbGljdGxvZ3JlbGlkOworCXN1Yi0+aG90aW5kZXhlZG9uYXBwbHkgPSBzdWJmb3JtLT5z dWJob3RpbmRleGVkb25hcHBseTsKIAogCWlmIChjb25uaW5mb19uZWVkZWQpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDAyYzhhMDQ5YTMyLi45ZjU0 NWZkMjY0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTU0 Miw2ICsxNTQyLDcgQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24s IHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5h cnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJ ICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAg ICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50aW9uLCBzdWJy ZXRlbnRpb25hY3RpdmUsCisgICAgICAgICAgICAgIHN1YmhvdGluZGV4ZWRvbmFwcGx5LAog ICAgICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZs aWN0bG9nZGVzdCwgc3Vic2xvdG5hbWUsCiAgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQs IHN1YndhbHJjdnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9O IHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggNDI5MmU3ZmI4ZjQuLmJmOWRiYTNmNGU0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04Miw2ICs4Miw3IEBA CiAjZGVmaW5lIFNVQk9QVF9MU04JCQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09S SUdJTgkJCQkweDAwMDQwMDAwCiAjZGVmaW5lIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVAkw eDAwMDgwMDAwCisjZGVmaW5lIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWQkweDAwMTAw MDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmlu ZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0x MTMsNiArMTE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCUNvbmZsaWN0TG9nRGVz dCBjb25mbGljdGxvZ2Rlc3Q7CiAJWExvZ1JlY1B0cglsc247CiAJY2hhcgkgICAqd2FsX3Jl Y2VpdmVyX3RpbWVvdXQ7CisJY2hhcgkJaG90aW5kZXhlZG9uYXBwbHk7CiB9IFN1Yk9wdHM7 CiAKIC8qCkBAIC0yMDcsNiArMjA5LDggQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCW9wdHMtPm9yaWdp biA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCiAJCW9wdHMtPmNvbmZsaWN0 bG9nZGVzdCA9IENPTkZMSUNUX0xPR19ERVNUX0xPRzsKKwlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCW9wdHMtPmhvdGluZGV4 ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWTsKIAogCS8q IFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC00NTks NiArNDYzLDMwIEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJb3B0cy0+Y29uZmxpY3Rsb2dkZXN0ID0g R2V0Q29uZmxpY3RMb2dEZXN0KHZhbCk7CiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBT VUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Q7CiAJCX0KKwkJZWxzZSBpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkgJiYKKwkJCQkgc3RyY21w KGRlZmVsLT5kZWZuYW1lLCAiaG90X2luZGV4ZWRfb25fYXBwbHkiKSA9PSAwKQorCQl7CisJ CQljaGFyCSAgICp2YWw7CisKKwkJCWlmIChJc1NldChvcHRzLT5zcGVjaWZpZWRfb3B0cywg U1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVm RWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VC T1BUX0hPVF9JTkRFWEVEX09OX0FQUExZOworCQkJdmFsID0gZGVmR2V0U3RyaW5nKGRlZmVs KTsKKworCQkJaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAib2ZmIikgPT0gMCkKKwkJCQlvcHRz LT5ob3RpbmRleGVkb25hcHBseSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGOworCQkJ ZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJzdWJzZXRfb25seSIpID09IDApCisJCQkJ b3B0cy0+aG90aW5kZXhlZG9uYXBwbHkgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNF VF9PTkxZOworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJhbHdheXMiKSA9PSAw KQorCQkJCW9wdHMtPmhvdGluZGV4ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhF RF9BTFdBWVM7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygidW5y ZWNvZ25pemVkIHZhbHVlIGZvciBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIFwiJXNcIjogXCIl c1wiIiwKKwkJCQkJCQkJImhvdF9pbmRleGVkX29uX2FwcGx5IiwgdmFsKSwKKwkJCQkJCSBl cnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlIFwib2ZmXCIsIFwic3Vic2V0X29ubHlcIiwgYW5k IFwiYWx3YXlzXCIuIikpKTsKKwkJfQogCQllbHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC02OTksNyArNzI3LDggQEAg Q3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQTEVTIHwKIAkJ CQkJICBTVUJPUFRfTUFYX1JFVEVOVElPTl9EVVJBVElPTiB8CiAJCQkJCSAgU1VCT1BUX1dB TF9SRUNFSVZFUl9USU1FT1VUIHwgU1VCT1BUX09SSUdJTiB8Ci0JCQkJCSAgU1VCT1BUX0NP TkZMSUNUX0xPR19ERVNUKTsKKwkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QgfAor CQkJCQkgIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJcGFyc2Vfc3Vic2NyaXB0 aW9uX29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9w dHMpOwogCiAJLyoKQEAgLTg1Myw2ICs4ODIsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlJbnQz MkdldERhdHVtKG9wdHMubWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3VicmV0ZW50aW9uYWN0aXZlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ob3B0cy5y ZXRhaW5kZWFkdHVwbGVzKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90 aW5kZXhlZG9uYXBwbHkgLSAxXSA9CisJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRv bmFwcGx5KTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0g PSBPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKTsKIAlpZiAoIU9pZElzVmFsaWQoc2VydmVy aWQpKQogCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9 CkBAIC0xNjI0LDcgKzE2NTUsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkgIFNVQk9QVF9N QVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlWRVJf VElNRU9VVCB8CiAJCQkJCQkJICBTVUJPUFRfT1JJR0lOIHwKLQkJCQkJCQkgIFNVQk9QVF9D T05GTElDVF9MT0dfREVTVCk7CisJCQkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Qg fAorCQkJCQkJCSAgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKTsKIAkJCWJyZWFrOwog CiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0yMDExLDYgKzIwNDMs MTMgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCX0KIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0 cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQl7 CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJob3RpbmRleGVkb25hcHBs eSAtIDFdID0KKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRvbmFwcGx5KTsK KwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBw bHkgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKIAkJ CQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCmluZGV4IDc3OTkyNjZjNjE0Li40ZTJhMmFjOThlYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00ODQsNiArNDg0LDE0IEBAIFdhbFJl Y2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiBTdWJzY3JpcHRp b24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKIHN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9u VmFsaWQgPSBmYWxzZTsKIAorLyoKKyAqIENhY2hlIG9mIHRoZSBwZXItc3Vic2NyaXB0aW9u IGhvdF9pbmRleGVkX29uX2FwcGx5IG1vZGUuICBUaGUgYXBwbHkgd29ya2VyCisgKiByZWZy ZXNoZXMgdGhpcyBhZnRlciBldmVyeSBzdWNjZXNzZnVsIGxvYWQgb2YgTXlTdWJzY3JpcHRp b247IHJlYWRlcnMKKyAqIG91dHNpZGUgd29ya2VyLmMgZ28gdGhyb3VnaCBHZXRIb3RJbmRl eGVkQXBwbHlNb2RlKCkgc28gdGhleSBkb24ndCBuZWVkCisgKiB2aXNpYmlsaXR5IGludG8g dGhlIFN1YnNjcmlwdGlvbiBzdHJ1Y3Qgb3IgdGhlIGFwcGx5IHdvcmtlcidzIGdsb2JhbHMu CisgKi8KK3N0YXRpYyBjaGFyIGhvdF9pbmRleGVkX2FwcGx5X21vZGUgPSBMT0dJQ0FMUkVQ X0hPVF9JTkRFWEVEX09GRjsKKwogc3RhdGljIExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29y a2Vyc19zdWJpZHMgPSBOSUw7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOwpAQCAtNTE3MSw2ICs1MTc5LDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCU1lbW9yeUNvbnRleHREZWxldGUoTXlTdWJzY3JpcHRpb24tPmN4dCk7CiAJTXlT dWJzY3JpcHRpb24gPSBuZXdzdWI7CiAKKwkvKiBSZWZyZXNoIHRoZSBjYWNoZWQgSE9ULWlu ZGV4ZWQgYXBwbHkgbW9kZSBmcm9tIHRoZSBuZXcgdHVwbGUuICovCisJaG90X2luZGV4ZWRf YXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkb25hcHBseTsKKwogCS8q IENoYW5nZSBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lz aGVzICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzeW5jaHJvbm91c19jb21taXQiLCBNeVN1YnNj cmlwdGlvbi0+c3luY2NvbW1pdCwKIAkJCQkJUEdDX0JBQ0tFTkQsIFBHQ19TX09WRVJSSURF KTsKQEAgLTU4NDQsNiArNTg1NSwxMiBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQp CiAKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gdHJ1ZTsKIAorCS8qCisJICogQ2FjaGUgdGhl IHN1YnNjcmlwdGlvbidzIEhPVC1pbmRleGVkIGFwcGx5IG1vZGUgc28gaXQgaXMgY2hlYXAg dG8KKwkgKiBjb25zdWx0IGZyb20gdGhlIGhlYXAgYWNjZXNzIG1ldGhvZCAodmlhIEdldEhv dEluZGV4ZWRBcHBseU1vZGUoKSkuCisJICovCisJaG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9 IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkb25hcHBseTsKKwogCWlmICghTXlTdWJzY3Jp cHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKQEAgLTYwODMsNiArNjEwMCwy MiBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2Vy ICE9IE5VTEw7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGNhY2hlZCBIT1QtaW5kZXhlZCBh cHBseSBtb2RlIG9mIHRoZSBjdXJyZW50IGxvZ2ljYWwgcmVwbGljYXRpb24KKyAqIHdvcmtl cidzIHN1YnNjcmlwdGlvbi4KKyAqCisgKiBDYWxsZXJzIG91dHNpZGUgd29ya2VyLmMgKG5v dGFibHkgaGVhcGFtLmMncyBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKSB1c2UKKyAqIHRoaXMg YWNjZXNzb3IgdG8gYXZvaWQgcHVsbGluZyBpbiB3b3JrZXJfaW50ZXJuYWwuaCBvciB0aGUg U3Vic2NyaXB0aW9uCisgKiBzdHJ1Y3QuICBOb24tYXBwbHkgcHJvY2Vzc2VzIGdldCBMT0dJ Q0FMUkVQX0hPVF9JTkRFWEVEX09GRiwgd2hpY2ggaXMgdGhlCisgKiBjb25zZXJ2YXRpdmUg dmFsdWU7IGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIGd1YXJkIHdpdGggSXNMb2dpY2FsV29y a2VyKCkKKyAqIGZpcnN0IGZvciBjbGFyaXR5LCBidXQgdGhlIGFjY2Vzc29yIGlzIHNhZmUg ZWl0aGVyIHdheS4KKyAqLworY2hhcgorR2V0SG90SW5kZXhlZEFwcGx5TW9kZSh2b2lkKQor eworCXJldHVybiBob3RfaW5kZXhlZF9hcHBseV9tb2RlOworfQorCiAvKgogICogSXMgY3Vy cmVudCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXI/CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGY2N2RhZjg1OTExLi5mZmNkMDZhOTAzNyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCkBAIC01MTM4LDYgKzUxMzgsNyBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9zdWJmYWlsb3ZlcjsKIAlpbnQJCQlpX3N1YnJl dGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJaV9zdWJtYXhyZXRlbnRpb247CisJaW50CQkJaV9z dWJob3RpbmRleGVkb25hcHBseTsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwogCkBAIC01MjM1 LDYgKzUyMzYsMTQgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIiAnLTEnIEFTIHN1YndhbHJjdnRp bWVvdXQsXG4iKTsKIAorCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIgcy5zdWJob3RpbmRleGVk b25hcHBseSxcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJ CQkgICIgJyVjJyBBUyBzdWJob3RpbmRleGVkb25hcHBseSxcbiIsCisJCQkJCQkgIExPR0lD QUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpOworCiAJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTkwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmcy5z cnZuYW1lIEFTIHN1YnNlcnZlcm5hbWVcbiIpOwogCWVsc2UKQEAgLTUyNzksNiArNTI4OCw3 IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YmZhaWxvdmVyID0g UFFmbnVtYmVyKHJlcywgInN1YmZhaWxvdmVyIik7CiAJaV9zdWJyZXRhaW5kZWFkdHVwbGVz ID0gUFFmbnVtYmVyKHJlcywgInN1YnJldGFpbmRlYWR0dXBsZXMiKTsKIAlpX3N1Ym1heHJl dGVudGlvbiA9IFBRZm51bWJlcihyZXMsICJzdWJtYXhyZXRlbnRpb24iKTsKKwlpX3N1Ymhv dGluZGV4ZWRvbmFwcGx5ID0gUFFmbnVtYmVyKHJlcywgInN1YmhvdGluZGV4ZWRvbmFwcGx5 Iik7CiAJaV9zdWJzZXJ2ZXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNlcnZlcm5hbWUi KTsKIAlpX3N1YmNvbm5pbmZvID0gUFFmbnVtYmVyKHJlcywgInN1YmNvbm5pbmZvIik7CiAJ aV9zdWJzbG90bmFtZSA9IFBRZm51bWJlcihyZXMsICJzdWJzbG90bmFtZSIpOwpAQCAtNTMy Miw2ICs1MzMyLDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJKHN0 cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJyZXRhaW5kZWFkdHVwbGVzKSwgInQiKSA9 PSAwKTsKIAkJc3ViaW5mb1tpXS5zdWJtYXhyZXRlbnRpb24gPQogCQkJYXRvaShQUWdldHZh bHVlKHJlcywgaSwgaV9zdWJtYXhyZXRlbnRpb24pKTsKKwkJc3ViaW5mb1tpXS5zdWJob3Rp bmRleGVkb25hcHBseSA9CisJCQkqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmhvdGluZGV4 ZWRvbmFwcGx5KSk7CiAJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfc3ViY29ubmluZm8p KQogCQkJc3ViaW5mb1tpXS5zdWJjb25uaW5mbyA9IE5VTEw7CiAJCWVsc2UKQEAgLTU1OTks NiArNTYxMSwxMSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1 YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN1YmluZm8tPnN1Ym1heHJldGVudGlv bikKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIG1heF9yZXRlbnRpb25fZHVyYXRp b24gPSAlZCIsIHN1YmluZm8tPnN1Ym1heHJldGVudGlvbik7CiAKKwlpZiAoc3ViaW5mby0+ c3ViaG90aW5kZXhlZG9uYXBwbHkgPT0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYpCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9 IG9mZiIpOworCWVsc2UgaWYgKHN1YmluZm8tPnN1YmhvdGluZGV4ZWRvbmFwcGx5ID09IExP R0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBhbHdheXMiKTsKKwogCWlmIChzdHJj bXAoc3ViaW5mby0+c3Vic3luY2NvbW1pdCwgIm9mZiIpICE9IDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiLCBzeW5jaHJvbm91c19jb21taXQgPSAlcyIsIGZtdElkKHN1Ymlu Zm8tPnN1YnN5bmNjb21taXQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNWE2NzI2ZDhiMTIu LmUzZTc0MDFkZjA4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTcyMiw2ICs3MjIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWJvb2wJCXN1YmZhaWxvdmVyOwogCWJv b2wJCXN1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJc3VibWF4cmV0ZW50aW9uOworCWNo YXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwogCWNoYXIJICAgKnN1YnNlcnZlcm5hbWU7CiAJ Y2hhcgkgICAqc3ViY29ubmluZm87CiAJY2hhcgkgICAqc3Vic2xvdG5hbWU7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IGZlZjg2YjRjY2EzLi5hYjNkYTY0Y2JjYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY4NzAs NyArNjg3MCw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu LCBib29sIHZlcmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlz dGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLAogCQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLQlmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWluaXRQUUV4cEJ1ZmZl cigmYnVmKTsKIApAQCAtNjk0Myw2ICs2OTQzLDE0IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJCQkJCQkJICAiLCBzdWJt YXhyZXRlbnRpb24gQVMgXCIlc1wiXG4iLAogCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNYXgg cmV0ZW50aW9uIGR1cmF0aW9uIikpOwogCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCSAgIiwgKENBU0Ugc3ViaG90aW5kZXhlZG9uYXBwbHlcbiIKKwkJCQkJCQkgICIg ICAgV0hFTiAiIENwcEFzU3RyaW5nMihMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRikgIiBU SEVOICdvZmYnXG4iCisJCQkJCQkJICAiICAgIFdIRU4gIiBDcHBBc1N0cmluZzIoTE9HSUNB TFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWSkgIiBUSEVOICdzdWJzZXRfb25seSdcbiIK KwkJCQkJCQkgICIgICAgV0hFTiAiIENwcEFzU3RyaW5nMihMT0dJQ0FMUkVQX0hPVF9JTkRF WEVEX0FMV0FZUykgIiBUSEVOICdhbHdheXMnXG4iCisJCQkJCQkJICAiICAgRU5EKSBBUyBc IiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIkhPVC1pbmRleGVkIG9uIGFwcGx5 IikpOworCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIiwgc3VicmV0 ZW50aW9uYWN0aXZlIEFTIFwiJXNcIlxuIiwKIAkJCQkJCQkgIGdldHRleHRfbm9vcCgiUmV0 ZW50aW9uIGFjdGl2ZSIpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggNzNl ZDZhMGZhNGIuLjU3NmJhMDNmNmQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApA QCAtNTcsNiArNTcsOSBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLworLyogWFhY IGJ1bXAgY2F0dmVyc2lvbiAtLSB0aGlzIGNvbW1pdCBhZGRzIGEgY2F0YWxvZyBjb2x1bW4K KyAqIChzdWJob3RpbmRleGVkb25hcHBseSkgYW5kIHRvdWNoZXMgcGdfc3Vic2NyaXB0aW9u OyB0aGUgY29tbWl0dGVyCisgKiBzZXRzIHRoZSByZWFsIHZhbHVlIGF0IGNvbW1pdCB0aW1l IHRvIGF2b2lkIG5lZWRsZXNzIHJlYmFzZSBjaHVybi4gKi8KICNkZWZpbmUgQ0FUQUxPR19W RVJTSU9OX05PCTIwMjYwNzAyMgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCmluZGV4IDY1Y2U4ZTE0NWZiLi45YmU1NTZiODg0ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Miw2ICs5MiwxMCBAQCBDQVRB TE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9T SEFSRURfUkVMQVRJT04gQktJX1JPVwogCQkJCQkJCQkJICogZXhjZWVkZWQgbWF4X3JldGVu dGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJCQkJICogZGVmaW5lZCAqLwogCisJY2hhcgkJ c3ViaG90aW5kZXhlZG9uYXBwbHk7CS8qIFBlci1zdWJzY3JpcHRpb24gZ2F0aW5nIG9mIHRo ZSBIT1QtCisJCQkJCQkJCQkJICogaW5kZXhlZCBhcHBseSBwYXRoLiAgU2VlCisJCQkJCQkJ CQkJICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvbnN0YW50cy4gKi8KKwogCU9pZAkJ CXN1YnNlcnZlciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWduX3NlcnZlcik7CS8qIElmIGNv bm5lY3Rpb24gdXNlcwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZlciAqLwogCkBAIC0xNzMs NiArMTc3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCQkgKiBl eGNlZWRlZCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZp bmVkICovCiAJT2lkCQkJY29uZmxpY3Rsb2dyZWxpZDsJLyogY29uZmxpY3QgbG9nIHRhYmxl IE9pZCAqLworCWNoYXIJCWhvdGluZGV4ZWRvbmFwcGx5OyAvKiBQZXItc3Vic2NyaXB0aW9u IGdhdGluZyBvZiB0aGUKKwkJCQkJCQkJCSAqIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBT ZWUKKwkJCQkJCQkJCSAqIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb25zdGFudHMuICov CiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNh dGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNv bW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KQEAgLTIyMCw2ICsyMjcsMjYgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1f UEFSQUxMRUwgJ3AnCiAKKy8qCisgKiBQZXItc3Vic2NyaXB0aW9uIGdhdGluZyBvZiB0aGUg SE9ULWluZGV4ZWQgYXBwbHkgcGF0aC4gIFJlY29yZGVkIGFzIGEKKyAqIHNpbmdsZS1jaGFy YWN0ZXIgY29kZSBpbiBwZ19zdWJzY3JpcHRpb24uc3ViaG90aW5kZXhlZG9uYXBwbHkuCisg KgorICogICAnbycgLS0gT0ZGOiBmb3JjZSBub24tSE9UIG9uIGFwcGx5IHdoZW5ldmVyIHRo ZSBzdWJzY3JpYmVyIGNhcnJpZXMgYW55CisgKgkJICBpbmRleGVkIGF0dHJpYnV0ZSBiZXlv bmQgdGhlIHByaW1hcnkga2V5LiAgTWF0Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgKgkJICBi ZWhhdmlvdXIgYmVmb3JlIHRoaXMgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkLgorICogICAncycg LS0gU1VCU0VUX09OTFkgKGRlZmF1bHQgZm9yIGZyZXNobHkgY3JlYXRlZCBzdWJzY3JpcHRp b25zKTogYWxsb3cgdGhlCisgKgkJICBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhl IHN1YnNjcmliZXIncyBmdWxsIGluZGV4ZWQtYXR0ciBzZXQgaXMKKyAqCQkgIGEgc3Vic2V0 IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2ggY292ZXJzIHRoZSBuby1zZWNvbmRh cnktCisgKgkJICBpbmRleCBjYXNlIGFzIHdlbGwpLiAgU2FmZSBvbiBtYXRjaGluZyBzY2hl bWFzOyBmYWxscyBiYWNrIHRvIG5vbi1IT1QKKyAqCQkgIHdoZW4gdGhlIHN1YnNjcmliZXIg YWRkcyBpbmRleGVzIGJleW9uZCB0aGUgcHJpbWFyeSBrZXkuCisgKiAgICdhJyAtLSBBTFdB WVM6IHVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkgb24gYXBwbHkuICBU aGUKKyAqCQkgIG9wZXJhdG9yIGFjY2VwdHMgcmVzcG9uc2liaWxpdHkgZm9yIGtlZXBpbmcg c3Vic2NyaWJlciBhbmQgcHVibGlzaGVyCisgKgkJICBpbmRleGVkLWF0dHIgc2V0cyBjb21w YXRpYmxlLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGCQkJJ28n CisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkJJ3MnCisjZGVm aW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTCQknYScKKwogI2VuZGlmCQkJCQkJ CS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCiBleHRlcm4gU3Vic2NyaXB0aW9uICpH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ssCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggN2Q3NDhhMjhkYTguLmM5ZGY3 ZDMyZjJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBA IC0yNCw2ICsyNCwxNCBAQCBleHRlcm4gdm9pZCBTZXF1ZW5jZVN5bmNXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKTsKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKIGV4 dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CiAKKy8qCisg KiBBY2Nlc3NvciBmb3IgdGhlIGNhY2hlZCBob3RfaW5kZXhlZF9vbl9hcHBseSBtb2RlIG9m IHRoZSBjdXJyZW50IGFwcGx5CisgKiB3b3JrZXIncyBzdWJzY3JpcHRpb24uICBSZXR1cm5z IGEgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvZGUgKHNlZQorICogY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaCkuICBOb24tYXBwbHkgcHJvY2Vzc2VzIGFsd2F5cyBzZWUKKyAqIExP R0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGLgorICovCitleHRlcm4gY2hhciBHZXRIb3RJbmRl eGVkQXBwbHlNb2RlKHZvaWQpOworCiBleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5 TWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQYXJhbGxlbEFw cGx5TWVzc2FnZXModm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dAppbmRleCBkMjAxYWQ3NjRmMC4uY2MxZDliYmIxNDYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTEzOSwxOCAr MTM5LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBDT05ORUNU SU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVCiBXQVJOSU5HOiAgc3Vic2Ny aXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1 YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrIHJlZ3Jlc3NfdGVz dHN1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8 IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxl cyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJl dGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9y aWdpbiA9IGFueSk7CiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYg ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIg dGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEg ICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTIzNywxMCArMjM3LDEwIEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsKIEVSUk9S OiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVy ICJmb29iYXIiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcKIAogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50 aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRp b24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0 cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTI0OSwxMCArMjQ5 LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSAnbmV3bmFtZScpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHBhc3N3b3JkX3JlcXVpcmVkID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHJ1bl9hc19vd25lciA9IHRydWUpOwogXGRScysKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgZiAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vi c2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFw cGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVz dHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qy IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocGFz c3dvcmRfcmVxdWlyZWQgPSB0cnVlKTsKQEAgLTI2OCwxMCArMjY4LDEwIEBAIEVSUk9SOiAg dW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJjcmVhdGVfc2xvdCIKIC0t IG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcw LzEyMzQ1Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDEyMzQ1IHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAxMjM0 NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIC0tIG9rIC0gd2l0aCBsc24gPSBO T05FCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNLSVAgKGxzbiA9IE5PTkUpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTS0lQIChsc24gPSAnMC8wJyk7CiBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0 aW9uIChMU04pOiAwLzAKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAg IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBG YWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24g ZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVs ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBm ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29u bHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogQkVHSU47CkBAIC0zMTks MTAgKzMxOSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBT RVQgKHdhbF9yZWNlaXZlcl90aW1lb3V0ID0gJzgwcycpOwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUICh3YWxfcmVjZWl2ZXJfdGltZW91dCA9ICdmb29i YXInKTsKIEVSUk9SOiAgaW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICJ3YWxfcmVjZWl2 ZXJfdGltZW91dCI6ICJmb29iYXIiCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZl ciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3Jp cHRpb24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlw dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rl c3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNj cmlwdGlvbgogKDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNp bXBsZQpAQCAtMzUxLDE5ICszNTEsMTkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIK IFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVj dGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24s IGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IHQgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cp CiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBm YWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpA QCAtMzc1LDI3ICszNzUsMjcgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5J Tkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBI SU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0 ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBh bHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBT ZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3Jp cHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAw MDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0 ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0 aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJh bGxlbCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0 cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVw bGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZl ciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1p bmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBz dWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxy ZWFkeSBleGlzdHMKQEAgLTQxMCwxMCArNDEwLDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRI IChyZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNB VElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9S OiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAi cmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50 aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAg ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBS ZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJz ZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwg MC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBt b3JlIHRoYW4gb25jZQpAQCAtNDI4LDEwICs0MjgsMTAgQEAgRVJST1I6ICBwdWJsaWNhdGlv biAidGVzdHB1YjMiIGlzIG5vdCBpbiBzdWJzY3JpcHRpb24gInJlZ3Jlc3NfdGVzdHN1YiIK IC0tIG9rIC0gZGVsZXRlIHB1YmxpY2F0aW9ucwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChy ZWZyZXNoID0gZmFsc2UpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQg b24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExT TiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9v bmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjsKQEAgLTQ2NywxOSArNDY3LDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBX QVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3Rl ZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBh bmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxk UnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERl c2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4 IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQog CiAtLSB3ZSBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4gdHdvX3BoYXNlIGVuYWJsZWQKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSB0cnVl KTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZh aWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBk dXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0 ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CkBAIC00ODksMTAgKzQ4OSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNj cmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNh dGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNs b3RfbmFtZSA9IE5PTkUpOwpAQCAtNTA1LDE4ICs1MDUsMTggQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBp cyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBz dWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVi bGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0 ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVx dWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVh ZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBw bHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAw IHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFk IHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBI T1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtNTI5LDEwICs1Mjks MTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRp b24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRp b24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2Ny aXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2 ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIg fCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9u IHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTU0OSwxMCAr NTQ5LDEwIEBAIE5PVElDRTogIG1heF9yZXRlbnRpb25fZHVyYXRpb24gaXMgaW5lZmZlY3Rp dmUgd2hlbiByZXRhaW5fZGVhZF90dXBsZXMgaXMgZGlzYWJsCiBXQVJOSU5HOiAgc3Vic2Ny aXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1 YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgMTAwMCB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgIDEwMDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gbWF4 X3JldGVudGlvbl9kdXJhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZQpAQCAtNTYxLDEwICs1 NjEsMTAgQEAgRVJST1I6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGNhbm5vdCBiZSBuZWdh dGl2ZQogLS0gb2sKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUICht YXhfcmV0ZW50aW9uX2R1cmF0aW9uID0gMCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFk IHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBI T1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L21lc29uLmJ1aWxkCmluZGV4IGU3MWU5NWM2Mjk3Li5mN2VlNWI4NDQ5YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDgsNiArNDgsOCBAQCB0ZXN0cyArPSB7CiAg ICAgICAndC8wMzZfc2VxdWVuY2VzLnBsJywKICAgICAgICd0LzAzN19leGNlcHQucGwnLAog ICAgICAgJ3QvMDM4X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0LnBsJywKKyAgICAgICd0LzAz OV9ob3RfaW5kZXhlZF9hcHBseS5wbCcsCisgICAgICAndC8wNDBfaG90X2luZGV4ZWRfcmVw bGljYV9pZGVudGl0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAg fSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3RfaW5kZXhl ZF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3RfaW5kZXhlZF9h cHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmUxMDhl NmYwODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlf aG90X2luZGV4ZWRfYXBwbHkucGwKQEAgLTAsMCArMSw0MTYgQEAKKworIyBDb3B5cmlnaHQg KGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgUGVy LXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRpb246IHBhcnNlciwgY2F0 YWxvZyByb3VuZC10cmlwLAorIyBBTFRFUiBiZWhhdmlvdXIsIGFuZCBhcHBseS1wYXRoIGdh dGluZyB1bmRlciBlYWNoIG9mIHRoZSB0aHJlZSBtb2Rlcy4KK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOwordXNl IFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICRwdWJsaXNoZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJHB1Ymxpc2hlci0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiskcHVibGlzaGVyLT5zdGFydDsKKwor bXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNj cmliZXInKTsKKyRzdWJzY3JpYmVyLT5pbml0OworJHN1YnNjcmliZXItPnN0YXJ0OworCitt eSAkcHViX2Nvbm5pbmZvID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3Rn cmVzJzsKKworIyAtLS0gU2NoZW1hIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdGFiX2V4dHJhIGhhcyBhbiBl eHRyYSBidHJlZSBpbmRleCBiZXlvbmQgdGhlIHByaW1hcnkga2V5IG9uIHRoZQorIyBzdWJz Y3JpYmVyIHNpZGU7IHRoYXQgaXMgdGhlIHNjaGVtYSBzaGFwZSB0aGF0IHN1YnNldF9vbmx5 IG11c3QgZGVtb3RlCisjIHRvIG5vbi1IT1Qgb24gYXBwbHkgYnV0IGFsd2F5cyBtdXN0IGxl dCB0aHJvdWdoLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVB VEUgVEFCTEUgdGFiX2V4dHJhIChpZCBpbnQgUFJJTUFSWSBLRVksIHBheWxvYWQgaW50LCB0 YWcgdGV4dCl9KTsKKworIyB0YWJfcGsgaGFzIG9ubHkgdGhlIHByaW1hcnkga2V5OyBpbmRl eGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0IG9mIHRoZSBQSworIyBhdHRycywgc28gc3Vic2V0 X29ubHkgYW5kIGFsd2F5cyBzaG91bGQgYm90aCBhbGxvdyBIT1QtaW5kZXhlZCBvbiBhcHBs eS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxF IHRhYl9wayAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCl9KTsKKworJHB1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgUFVCTElDQVRJT04gcHVi IEZPUiBUQUJMRSB0YWJfZXh0cmEsIHRhYl9wa30pOworCisjIFN1YnNjcmliZXIgbWlycm9y cyBib3RoIHRhYmxlcy4gIHRhYl9leHRyYSBoYXMgdGhlIGV4dHJhIHNlY29uZGFyeSBpbmRl eAorIyBvbmx5IG9uIHRoZSBzdWJzY3JpYmVyLCB3aGljaCBpcyB0aGUgc2NoZW1hLWRpdmVy Z2VuY2UgY2FzZSB0aGUgb3B0aW9uCisjIGdhdGVzLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9leHRyYSAoaWQgaW50IFBSSU1B UlkgS0VZLCBwYXlsb2FkIGludCwgdGFnIHRleHQpfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgSU5ERVggdGFiX2V4dHJhX3BheWxvYWRfaWR4 IE9OIHRhYl9leHRyYShwYXlsb2FkKX0pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9wayAoaWQgaW50IFBSSU1BUlkgS0VZLCBw YXlsb2FkIGludCl9KTsKKworIyAtLS0gUGFyc2VyIC8gY2F0YWxvZyBjaGVja3MgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZhdWx0IG9u IGZyZXNoIHN1YnNjcmlwdGlvbiBpcyAncycgKHN1YnNldF9vbmx5KS4KKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJf ZGVmYXVsdAorCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9O IHB1YgorCSAgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFi bGVkID0gZmFsc2UsCisJICAgICAgICBjcmVhdGVfc2xvdCA9IGZhbHNlKTsKK30pOworaXMo ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qgc3ViaG90 aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRpb24KKwkJICBXSEVSRSBzdWJuYW1l ID0gJ3N1Yl9kZWZhdWx0J30pLAorCSdzJywKKwknZnJlc2ggc3Vic2NyaXB0aW9uIGRlZmF1 bHRzIHRvIHN1YnNldF9vbmx5Jyk7CisKKyMgRXhwbGljaXQgJ2Fsd2F5cycgaXMgc3RvcmVk IGFzICdhJy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JF QVRFIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzX3AKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29u bmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3JlYXRlX3Ns b3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJyk7Cit9KTsKK2lz KCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1Ymhv dGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFt ZSA9ICdzdWJfYWx3YXlzX3AnfSksCisJJ2EnLAorCSdDUkVBVEUgd2l0aCBob3RfaW5kZXhl ZF9vbl9hcHBseSA9IGFsd2F5cyBzdG9yZXMgYScpOworCisjIEFMVEVSIFNVQlNDUklQVElP TiBTRVQgdXBkYXRlcyB0aGUgY29sdW1uLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0IFNFVCAoaG90X2lu ZGV4ZWRfb25fYXBwbHkgPSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdf c3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfZGVmYXVsdCd9KSwKKwkn bycsCisJJ0FMVEVSIFNVQlNDUklQVElPTiBTRVQgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBv ZmYgc3RvcmVzIG8nKTsKKworIyBVbmtub3duIHZhbHVlcyBhcmUgcmVqZWN0ZWQuCitteSAo JHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMn LCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9ib2d1cworCSAgQ09OTkVDVElPTiAn JHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoY29ubmVjdCA9 IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFibGVkID0gZmFsc2UsCisJICAgICAgICBj cmVhdGVfc2xvdCA9IGZhbHNlLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdib2d1cycpOwor fSk7Citpc250KCRyZXQsIDAsICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2YWx1ZSBp cyByZWplY3RlZCcpOworbGlrZSgkc3RkZXJyLAorCSBxci91bnJlY29nbml6ZWQgdmFsdWUg Zm9yIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgImhvdF9pbmRleGVkX29uX2FwcGx5Ii8sCisJ ICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2YWx1ZSByZXBvcnRzIHRoZSBleHBlY3Rl ZCBlcnJvcicpOworCisjIERyb3AgdGhlIHBsYWNlaG9sZGVyIHN1YnNjcmlwdGlvbnMgc28g d2UgY2FuIHJlYnVpbGQgd2l0aCByZWFsIHNsb3RzLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1bHQnKTsKKyRzdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9h bHdheXNfcCcpOworCisjIC0tLSBBcHBseS1wYXRoIGJlaGF2aW91ciAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByZS1wb3B1bGF0ZSBi b3RoIHNpZGVzIGlkZW50aWNhbGx5IHNvIHdlIGNhbiB1c2UgY29weV9kYXRhPWZhbHNlIGFu ZAorIyBhdm9pZCBkdXBsaWNhdGUta2V5IGNvbmZsaWN0cyB3aGVuIHdlIHJlY3JlYXRlIHN1 YnNjcmlwdGlvbnMgYWNyb3NzIHRoZQorIyB0aHJlZSB0ZXN0IGNhc2VzLiAgV2UgdXBkYXRl IG5vbi1vdmVybGFwcGluZyBpZCByYW5nZXMgcGVyIGNhc2Ugc28gdGhlCisjIHBnX3N0YXQg Y291bnRlcnMgc2VnbWVudCBjbGVhbmx5LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNFTEVDVCBnLCAwLCAndCcg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7CiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9waworCSAgU0VMRUNUIGcsIDAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNFTEVDVCBn LCAwLCAndCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsKKwkgIFNF TEVDVCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworCisjIEhlbHBl cjogcmVhZCBjb3VudGVycyBhbmQgcG9sbCB1cCB0byAxMCBzIGZvciBuX3R1cF91cGQgdG8g cmVhY2ggYQorIyBtaW5pbXVtIHRhcmdldCB2YWx1ZSAodGhlIGFwcGx5IHdvcmtlciBmbHVz aGVzIHBnc3RhdCBhc3luY2hyb25vdXNseSkuCitzdWIgcG9sbF9jb3VudGVycworeworCW15 ICgkbm9kZSwgJHRhYmxlLCAkdXBkX3RhcmdldCkgPSBAXzsKKworCW15ICRkZWFkbGluZSA9 IHRpbWUoKSArIDEwOworCW15ICRyb3cgPSAnJzsKKwl3aGlsZSAoMSkKKwl7CisJCSRyb3cg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQlxcXtTRUxFQ1QgY29hbGVzY2Uo bl90dXBfdXBkLCAwKSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLCAw KSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3RfaW5kZXhlZF91cGQsIDApCisJ CQkgICBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICckdGFibGUn fSk7CisJCW15ICgkdXBkKSA9IHNwbGl0IC9cfC8sICRyb3c7CisJCWxhc3QgaWYgKCR1cGQg KyAwKSA+PSAkdXBkX3RhcmdldCB8fCB0aW1lKCkgPj0gJGRlYWRsaW5lOworCQl1c2xlZXAo MTAwXzAwMCk7CisJfQorCW15ICgkdXBkLCAkaG90LCAkaG90X2lkeCkgPSBzcGxpdCAvXHwv LCAkcm93OworCXJldHVybiAoJHVwZCArIDAsICRob3QgKyAwLCAkaG90X2lkeCArIDApOwor fQorCisjIEhlbHBlcjogZmlyZSBVUERBVEVzIHRoYXQgdG91Y2ggdGhlIGluZGV4ZWQgcGF5 bG9hZCBjb2x1bW4gb24gYSBnaXZlbgorIyBpZCByYW5nZSBhbmQgcmV0dXJuIHRoZSBkZWx0 YXMgaW4gKG5fdHVwX3VwZCwgbl90dXBfaG90X3VwZCwKKyMgbl90dXBfaG90X2luZGV4ZWRf dXBkKSBvbiB0aGUgc3Vic2NyaWJlci4KK3N1YiBhcHBseV91cGRhdGVzX2FuZF9yZWFkCit7 CisJbXkgKCR0YWJsZSwgJHN1Yl9uYW1lLCAkaWRfbG8sICRpZF9oaSkgPSBAXzsKKworCW15 ICgkdXBkMCwgJGhvdDAsICRob3RpZHgwKSA9CisJICBwb2xsX2NvdW50ZXJzKCRzdWJzY3Jp YmVyLCAkdGFibGUsIDApOworCisJZm9yIG15ICRpICgkaWRfbG8gLi4gJGlkX2hpKQorCXsK KwkJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQkiVVBEQVRFICR0YWJs ZSBTRVQgcGF5bG9hZCA9IHBheWxvYWQgKyAxIFdIRVJFIGlkID0gJGkiKTsKKwl9CisJJHB1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkc3ViX25hbWUpOworCisJbXkgJG4gPSAkaWRf aGkgLSAkaWRfbG8gKyAxOworCW15ICgkdXBkMSwgJGhvdDEsICRob3RpZHgxKSA9CisJICBw b2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAkdGFibGUsICR1cGQwICsgJG4pOworCW5vdGUo IiR0YWJsZSAkc3ViX25hbWUgJGlkX2xvLi4kaWRfaGk6IGRuX3VwZD0iCisJCSAuICgkdXBk MSAtICR1cGQwKSAuICIgZGhvdD0iIC4gKCRob3QxIC0gJGhvdDApCisJCSAuICIgZGhvdGlk eD0iIC4gKCRob3RpZHgxIC0gJGhvdGlkeDApKTsKKwlyZXR1cm4gKCR1cGQxIC0gJHVwZDAs ICRob3QxIC0gJGhvdDAsICRob3RpZHgxIC0gJGhvdGlkeDApOworfQorCisjIENhc2UgMTog b2ZmLCBzdWJzY3JpYmVyLW9ubHkgc2Vjb25kYXJ5IGluZGV4LiAgSE9ULWluZGV4ZWQgbXVz dCBiZQorIyBzdXBwcmVzc2VkIG9uIHRhYl9leHRyYS4gIFBsYWluIEhPVCB1cGRhdGVzIGFs c28gc3RheSB6ZXJvIGJlY2F1c2UgZXZlcnkKKyMgVVBEQVRFIHRvdWNoZXMgYHBheWxvYWRg IHdoaWNoIGlzIGluZGV4ZWQgb24gdGhlIHN1YnNjcmliZXIuCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX29mZgor CSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAg V0lUSCAoc2xvdF9uYW1lID0gJ3N1Yl9vZmZfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwK KwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ29mZicsIGNvcHlfZGF0YSA9IGZh bHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX29mZicpOwor CitteSAodW5kZWYsIHVuZGVmLCAkb2ZmX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRh dGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX29mZicsIDEsIDIwKTsKK2lzKCRvZmZf ZXh0cmFfaG90aWR4LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gb2ZmOiBubyBI T1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfb2ZmJyk7CisKKyMg Q2FzZSAyOiBzdWJzZXRfb25seS4gIE9uIHRhYl9wayAobm8gc2Vjb25kYXJ5IGluZGV4LCBp bmRleGVkLWF0dHIgc2V0IGlzCisjIGEgc3Vic2V0IG9mIFBLIGF0dHJzKSwgY2xhc3NpYyBI T1QgbXVzdCBmaXJlIGJlY2F1c2UgYHBheWxvYWRgIGlzIG5vdAorIyBpbmRleGVkIHRoZXJl LiAgT24gdGFiX2V4dHJhIChzdWJzY3JpYmVyJ3MgYHBheWxvYWRgIGluZGV4IGlzIE5PVCBj b3ZlcmVkCisjIGJ5IHRoZSBQSyksIHRoZSBhcHBseSB3b3JrZXIgbXVzdCBkZW1vdGUgdG8g bm9uLUhPVCBqdXN0IGxpa2UgJ29mZicuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3N1YnNldAorCSAgQ09OTkVD VElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoc2xv dF9uYW1lID0gJ3N1Yl9zdWJzZXRfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwKKwkgICAg ICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ3N1YnNldF9vbmx5JywgY29weV9kYXRhID0g ZmFsc2UpOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWJfc3Vic2V0 Jyk7CisKK215ICh1bmRlZiwgJHNzX3BrX2hvdCwgJHNzX3BrX2hvdGlkeCkgPQorICBhcHBs eV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfcGsnLCAnc3ViX3N1YnNldCcsIDEsIDIwKTsKK2Nt cF9vaygkc3NfcGtfaG90LCAnPicsIDAsCisJICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0g c3Vic2V0X29ubHk6IGNsYXNzaWMgSE9UIGZpcmVzIG9uIHRhYl9waycpOworCitteSAodW5k ZWYsIHVuZGVmLCAkc3NfZXh0cmFfaG90aWR4KSA9CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3Jl YWQoJ3RhYl9leHRyYScsICdzdWJfc3Vic2V0JywgMjEsIDQwKTsKK2lzKCRzc19leHRyYV9o b3RpZHgsIDAsCisgICAnaG90X2luZGV4ZWRfb25fYXBwbHkgPSBzdWJzZXRfb25seTogbm8g SE9ULWluZGV4ZWQgb24gdGFiX2V4dHJhJyk7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQnKTsKKworIyBDYXNl IDM6IGFsd2F5cy4gIFVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkuICBP biB0YWJfZXh0cmEKKyMgdXBkYXRlcyB0b3VjaGluZyB0aGUgaW5kZXhlZCBwYXlsb2FkIGNv bHVtbiBzaG91bGQgbm93IHJ1biBvbiB0aGUKKyMgSE9ULWluZGV4ZWQgcGF0aDogbl90dXBf aG90X2luZGV4ZWRfdXBkIG11c3QgaW5jcmVhc2UuCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5cworCSAg Q09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lU SCAoc2xvdF9uYW1lID0gJ3N1Yl9hbHdheXNfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwK KwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycsIGNvcHlfZGF0YSA9 IGZhbHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX2Fsd2F5 cycpOworCitteSAodW5kZWYsIHVuZGVmLCAkYWxfZXh0cmFfaG90aWR4KSA9CisgIGFwcGx5 X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfYWx3YXlzJywgNDEsIDgwKTsK K2NtcF9vaygkYWxfZXh0cmFfaG90aWR4LCAnPicsIDAsCisJICAgJ2hvdF9pbmRleGVkX29u X2FwcGx5ID0gYWx3YXlzOiBIT1QtaW5kZXhlZCBmaXJlcyBvbiB0YWJfZXh0cmEnKTsKKwor IyBBTFRFUiBiYWNrIHRvIG9mZiBhbmQgdmVyaWZ5IHRoZSBhcHBseSB3b3JrZXIgcGlja3Mg dXAgdGhlIG5ldyBtb2RlLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMgU0VUIChob3RfaW5kZXhlZF9vbl9h cHBseSA9ICdvZmYnKX0pOworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJcXtTRUxFQ1Qgc3ViaG90aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRp b24KKwkJICBXSEVSRSBzdWJuYW1lID0gJ3N1Yl9hbHdheXMnfSksCisJJ28nLAorCSdBTFRF UiBzdWJfYWx3YXlzIFNFVCBob3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZiBwZXJzaXN0cycp OworCisjIERyaXZlIGFub3RoZXIgYmF0Y2ggb2YgdXBkYXRlcyBhbmQgY29uZmlybSBuX3R1 cF9ob3RfaW5kZXhlZF91cGQgZG9lcyBOT1QKKyMgYWR2YW5jZSBhZnRlciB0aGUgd29ya2Vy IHJlcmVhZHMgdGhlIGNhdGFsb2cuCitteSAodW5kZWYsIHVuZGVmLCAkcG9zdF9hbHRlcl9o b3RpZHgpID0KKyAgYXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9h bHdheXMnLCA4MSwgMTAwKTsKK2lzKCRwb3N0X2FsdGVyX2hvdGlkeCwgMCwKKyAgICdBTFRF UiB0byBvZmYgZnJlZXplcyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWZ0ZXIgd29ya2VyIHJl cmVhZCcpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNV QlNDUklQVElPTiBzdWJfYWx3YXlzJyk7CisKKyMgLS0tIFN1YnNjcmliZXIgSU5TRVJULWFm dGVyLXJlcGxpY2F0ZWQtVVBEQVRFIHBlciBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMK KyMgVmVyaWZ5IHRoYXQgYSBzdWJzY3JpYmVyIElOU0VSVCB1c2luZyB0aGUgT0xEIHZhbHVl IG9mIGEgcmVwbGljYXRlZAorIyBVUERBVEUncyBpbmRleGVkIGNvbHVtbiBzdWNjZWVkcyB3 aXRob3V0IGEgc3B1cmlvdXMgdW5pcXVlLXZpb2xhdGlvbgorIyB1bmRlciBlYWNoIGFwcGx5 IG1vZGUuICBVc2UgYSBkZWRpY2F0ZWQgdGFibGUgKHRhYl91aykgc28gdGhlIHVuaXF1ZQor IyBjb25zdHJhaW50IGNhbiBiZSBkZWZpbmVkIHVwLWZyb250IGFuZCB0aGUgdGVzdCBkb2Vz IG5vdCBjb2xsaWRlIHdpdGgKKyMgcHJlLXBvcHVsYXRlZCByb3dzIGZyb20gdGhlIGFwcGx5 LXBhdGggc2NlbmFyaW9zIGFib3ZlLgorIworIyBQdWJsaXNoZXIgdXBkYXRlcyByb3cgJHVw ZF9pZCBjaGFuZ2luZyBwYXlsb2FkIGZyb20gMCB0byA5OTkuICBUaGUKKyMgc3Vic2NyaWJl ciB0aGVuIGluc2VydHMgYSBmcmVzaCByb3cgd2l0aCBwYXlsb2FkPTAgKHRoZSBwcmUtdXBk YXRlCisjIHZhbHVlKS4gIFVuZGVyIGFsbCB0aHJlZSBtb2RlcyBfYnRfY2hlY2tfdW5pcXVl J3MgcmVjaGVjayBvZiB0aGUKKyMgY29uZmxpY3RpbmcgdHVwbGUncyBsaXZlIGtleSBtdXN0 IHJlY29nbml6ZSB0aGUgc3RhbGUgbGVhZiBlbnRyeSBwb2ludGluZworIyBhdCB0aGUgY2hh aW4gcm9vdCwgc28gdGhlIElOU0VSVCBzdWNjZWVkcy4KKworJHB1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgKKwkgICAgaWQgICAg ICBpbnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAgICB0YWcgICAgIHRl eHQsCisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfdWsgKAorCSAgICBpZCAg ICAgIGludCBQUklNQVJZIEtFWSwKKwkgICAgcGF5bG9hZCBpbnQsCisJICAgIHRhZyAgICAg dGV4dCwKKwkgICAgVU5JUVVFIChwYXlsb2FkLCB0YWcpKX0pOworJHB1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFRBQkxF IHRhYl91a30pOworCitmb3IgbXkgJG1vZGUgKCdvZmYnLCAnc3Vic2V0X29ubHknLCAnYWx3 YXlzJykKK3sKKwlteSAkYmFzZV9pZCA9ICgkbW9kZSBlcSAnb2ZmJykgPyAxCisJICAgICAg ICAgICAgICA6ICgkbW9kZSBlcSAnc3Vic2V0X29ubHknKSA/IDEwMCA6IDIwMDsKKwlteSAk dXBkX2lkICA9ICRiYXNlX2lkICsgMTsKKwlteSAkaW5zX2lkICA9ICRiYXNlX2lkICsgMjsK KworCSMgU2VlZCBhIHJvdyB0aGF0IHdlIHdpbGwgVVBEQVRFIG9uIHRoZSBwdWJsaXNoZXIg KHBheWxvYWQgc3RhcnRzIGF0IDApLAorCSMgYW5kIGRyYWluIHRoZSBhcHBseSBmb3IgaXQg YmVmb3JlIGNoYW5naW5nIHBheWxvYWQuCisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0YWJfdWsgVkFMVUVTICgkdXBkX2lkLCAwLCAnbW9k ZV8kbW9kZScpIik7CisKKwkkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx eworCQlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9kZQorCQkgIENPTk5FQ1RJT04g JyRwdWJfY29ubmluZm8nCisJCSAgUFVCTElDQVRJT04gcHViCisJCSAgV0lUSCAoc2xvdF9u YW1lID0gJ3N1Yl91a18ke21vZGV9X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJCSAg ICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnJG1vZGUnLCBjb3B5X2RhdGEgPSB0cnVl KTsKKwl9KTsKKwkkcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCJzdWJfdWtfJG1vZGUi KTsKKworCSMgUHVibGlzaGVyIFVQREFURTogcGF5bG9hZCAwIC0+IDk5OS4KKwkkcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0YWJfdWsgU0VUIHBheWxv YWQgPSA5OTkgV0hFUkUgaWQgPSAkdXBkX2lkIik7CisJJHB1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgic3ViX3VrXyRtb2RlIik7CisKKwkjIFN1YnNjcmliZXIgSU5TRVJUIHdpdGgg dGhlIE9MRCBwYXlsb2FkIHZhbHVlIGJ1dCBhIHVuaXF1ZSB0YWcuICBUaGUKKwkjIGV4aXN0 aW5nIGNoYWluIGxlYWYgd2l0aCBrZXkgKDAsICdtb2RlXyRtb2RlJykgaXMgbm93IHN0YWxl OiB0aGUKKwkjIGxpdmUgdHVwbGUgYXQgdGhlIGNoYWluIHJvb3QgaGFzIHBheWxvYWQ9OTk5 LiAgX2J0X2NoZWNrX3VuaXF1ZQorCSMgcmVjaGVja3MgdGhlIGNvbmZsaWN0aW5nIHR1cGxl J3MgbGl2ZSBrZXkgYW5kIHJlY29nbml6ZXMgdGhlIHN0YWxlCisJIyBsZWFmLCBhbGxvd2lu ZyB0aGlzIElOU0VSVCB0byBzdWNjZWVkLgorCW15ICgkciwgJG91dCwgJGVycikgPSAkc3Vi c2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGFiX3VrIFZBTFVF UyAoJGluc19pZCwgMCwgJ2ZyZXNoXyRtb2RlJykiKTsKKwlpcygkciwgMCwKKwkgICAiaG90 X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCSAgIC4gInN1YnNjcmliZXIgSU5TRVJU IHdpdGggb2xkIHBheWxvYWQgdmFsdWUgc3VjY2VlZHMiKTsKKwlsaWtlKCRlcnIsIHFyL14k LywKKwkJICJob3RfaW5kZXhlZF9vbl9hcHBseSA9ICRtb2RlOiAiCisJCSAuICJJTlNFUlQg ZGlkIG5vdCByYWlzZSBhbiBlcnJvciIpOworCisJJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3VrXyRtb2RlIik7Cit9CisK KyMgLS0tIGFsd2F5cy1tb2RlIHNhZmV0eSB3aXRoIGluZGV4ZWQgYXR0cnMgYmV5b25kIHRo ZSByZXBsaWNhIGlkZW50aXR5IC0tLS0tCisjCisjIEFtaXQncyBjb3JuZXI6IHVuZGVyIGhv dF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycgdGhlIGFwcGx5IHdvcmtlciBtYXkKKyMg cnVuIGEgSE9ULWluZGV4ZWQgdXBkYXRlIGV2ZW4gd2hlbiB0aGUgdGFibGUgaGFzIGFuIGlu ZGV4ZWQgYXR0cmlidXRlIHRoYXQKKyMgaXMgTk9UIGNvdmVyZWQgYnkgdGhlIHJlcGxpY2Eg aWRlbnRpdHkuICBUaGUgcmVhZC1zaWRlIHN0YWxlbmVzcyBtZWNoYW5pc20KKyMgbXVzdCBz dGlsbCBsZXQgdGhlIGFwcGx5IHdvcmtlcidzIGxhdGVyIHJlcGxpY2EtaWRlbnRpdHkgbG9v a3VwcyBmaW5kIHRoZQorIyByb3csIGFuZCBERUxFVEUvVVBEQVRFIHJlcGxpY2F0aW9uIG11 c3QgY29udmVyZ2UsIGluY2x1ZGluZyB3aGVuIHRoZQorIyByZXBsaWNhLWlkZW50aXR5IGNv bHVtbiBpdHNlbGYgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkuCisjCisjIHRhYl9y aTogcmVwbGljYSBpZGVudGl0eSBpcyBhIFVOSVFVRSBpbmRleCBvbiByaWQgKG5vdCB0aGUg UEspLCBhbmQgdGhlcmUKKyMgaXMgYW4gZXh0cmEgc2Vjb25kYXJ5IGluZGV4IG9uIHBheWxv YWQgdGhhdCBpcyBOT1QgcGFydCBvZiB0aGUgcmVwbGljYQorIyBpZGVudGl0eS4gIFNvIGEg cGF5bG9hZCBjaGFuZ2UgbWFrZXMgdGhlIHBheWxvYWQgbGVhZiBzdGFsZSwgYW5kIGFuIHJp ZAorIyBBQkEgY3ljbGUgbWFrZXMgdGhlIHJpZCAocmVwbGljYS1pZGVudGl0eSkgbGVhZiBz dGFsZSAtLSBib3RoIHdoaWxlCisjICdhbHdheXMnIGtlZXBzIHRoZSB1cGRhdGVzIG9uIHRo ZSBIT1QgY2hhaW4uCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlD UkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBLRVksIHJpZCBpbnQgTk9UIE5V TEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9yaV9yaWRfdWsg T04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3JpIFJFUExJQ0EgSURFTlRJVFkg VVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViX3Jp IEZPUiBUQUJMRSB0YWJfcmk7Cit9KTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXsKKwlDUkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBLRVksIHJp ZCBpbnQgTk9UIE5VTEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRh Yl9yaV9yaWRfdWsgT04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3JpIFJFUExJ Q0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUgSU5ERVgg dGFiX3JpX3BheWxvYWRfaWR4IE9OIHRhYl9yaShwYXlsb2FkKTsKK30pOworCiskcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9yaSBWQUxV RVMgKDEsIDEwLCAwKSwgKDIsIDIwLCAwKX0pOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3JpCisJICBDT05O RUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViX3JpCisJICBXSVRI IChzbG90X25hbWUgPSAnc3ViX3JpX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBjb3B5X2RhdGEgPSB0cnVl KTsKK30pOworIyBXYWl0IGZvciB0aGUgaW5pdGlhbCB0YWJsZSBDT1BZIHRvIGZpbmlzaCwg bm90IGp1c3Qgc3RyZWFtaW5nIGNhdGNoLXVwLCBzbworIyB0aGUgc2VlZGVkIHJvd3MgYXJl IHByZXNlbnQgYmVmb3JlIHdlIHN0YXJ0IHVwZGF0aW5nIHRoZW0uCiskc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1Yl9yaScpOworCisj IEN5Y2xlIHRoZSByZXBsaWNhLWlkZW50aXR5IGNvbHVtbiBhd2F5IGFuZCBiYWNrIChBQkEp LCBhbmQgYWxzbyBjaHVybiB0aGUKKyMgZXh0cmEgcGF5bG9hZCBpbmRleCwgYWxsIHJlcGxp Y2F0ZWQgdW5kZXIgJ2Fsd2F5cycuICBFYWNoIHN0ZXAgaXMgYQorIyBIT1QtaW5kZXhlZCB1 cGRhdGUgb24gdGhlIHN1YnNjcmliZXIgdGhhdCBsZWF2ZXMgYSBzdGFsZSBsZWFmLgorJHB1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJVVBEQVRFIHRhYl9yaSBTRVQg cmlkID0gMTEsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9IDE7CisJVVBEQVRF IHRhYl9yaSBTRVQgcmlkID0gMTAsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9 IDE7ICAtLSByaWQgQUJBCisJVVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9IHBheWxvYWQg KyAxIFdIRVJFIGlkID0gMjsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c3ViX3JpJyk7CisKKyMgQ29uZmlybSB0aGUgYXBwbHkgd29ya2VyIGFjdHVhbGx5IHRvb2sg dGhlIEhPVC1pbmRleGVkIHBhdGggb24gdGFiX3JpICh0aGUKKyMgd2hvbGUgcG9pbnQgb2Yg J2Fsd2F5cycgd2l0aCBpbmRleGVkIGF0dHJzIGJleW9uZCB0aGUgcmVwbGljYSBpZGVudGl0 eSkuCisjIFdpdGhvdXQgdGhpcyB0aGUgY29udmVyZ2VuY2UvdmVyaWZ5X2hlYXBhbSBhc3Nl cnRzIGJlbG93IGNvdWxkIHBhc3MKKyMgdmFjdW91c2x5IGlmIGVsaWdpYmlsaXR5IHNpbGVu dGx5IHJlZ3Jlc3NlZCB0byBwbGFpbiBub24tSE9ULgorbXkgKHVuZGVmLCB1bmRlZiwgJHJp X2hvdGlkeCkgPSBwb2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAndGFiX3JpJywgMyk7Citj bXBfb2soJHJpX2hvdGlkeCwgJz4nLCAwLAorCSAgICdhbHdheXMtbW9kZTogSE9ULWluZGV4 ZWQgcGF0aCBmaXJlZCBvbiB0YWJfcmkgKHJpZC9wYXlsb2FkIGNodXJuKScpOworCisjIEEg c3Vic2VxdWVudCByZXBsaWNhdGVkIFVQREFURSBrZXllZCBieSB0aGUgcmVwbGljYSBpZGVu dGl0eSAocmlkKSBtdXN0CisjIGZpbmQgdGhlIHJvdyBkZXNwaXRlIHRoZSBzdGFsZSByaWQv cGF5bG9hZCBsZWF2ZXMgdGhlIEFCQSBsZWZ0IGJlaGluZC4KKyRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCXF7VVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9IDEwMCBX SEVSRSBpZCA9IDF9KTsKKyMgQW5kIGEgcmVwbGljYXRlZCBERUxFVEUgcmVzb2x2ZWQgdGhy b3VnaCB0aGUgcmVwbGljYS1pZGVudGl0eSBpbmRleCBtdXN0CisjIGFsc28gZmluZCBhbmQg cmVtb3ZlIHRoZSByaWdodCByb3cuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXtERUxFVEUgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSk7CiskcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWJfcmknKTsKKworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgcmlkIHx8ICc6JyB8fCBwYXlsb2FkIEZST00g dGFiX3JpIFdIRVJFIGlkID0gMX0pLAorCScxMDoxMDAnLAorCSdhbHdheXMtbW9kZTogcmVw bGljYXRlZCBVUERBVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgYWZ0ZXIgcmlkIEFCQScpOwor aXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291 bnQoKikgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSksCisJJzAnLAorCSdhbHdheXMtbW9k ZTogcmVwbGljYXRlZCBERUxFVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgd2l0aCBzdGFsZSBs ZWF2ZXMnKTsKKyMgRnVsbCBjb252ZXJnZW5jZSBjcm9zcy1jaGVjay4KK2lzKCAkc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN0cmluZ19hZ2coaWQg fHwgJywnIHx8IHJpZCB8fCAnLCcgfHwgcGF5bG9hZCwgJzsnIE9SREVSIEJZIGlkKQorCQkg IEZST00gdGFiX3JpfSksCisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CXF7U0VMRUNUIHN0cmluZ19hZ2coaWQgfHwgJywnIHx8IHJpZCB8fCAnLCcgfHwgcGF5bG9h ZCwgJzsnIE9SREVSIEJZIGlkKQorCQkgIEZST00gdGFiX3JpfSksCisJJ2Fsd2F5cy1tb2Rl OiB0YWJfcmkgY29udmVyZ2VzIGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyJyk7 CisKKyMgdmVyaWZ5X2hlYXBhbSBmaW5kcyBubyBjb3JydXB0aW9uIGluIHRoZSBIT1QtaW5k ZXhlZCBjaGFpbnMgbGVmdCBiZWhpbmQuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjaycpOworaXMo ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQo KikgRlJPTSB2ZXJpZnlfaGVhcGFtKCd0YWJfcmknKX0pLAorCScwJywKKwknYWx3YXlzLW1v ZGU6IHZlcmlmeV9oZWFwYW0gY2xlYW4gb24gdGFiX3JpIGFmdGVyIHN0YWxlLWxlYWYgY2h1 cm4nKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJT Q1JJUFRJT04gc3ViX3JpJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHku cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9p ZGVudGl0eS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjgw MTc4N2I0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w NDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbApAQCAtMCwwICsxLDExMCBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgTGl2ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIG9mIEhPVC1pbmRleGVkIHVwZGF0 ZXMgdW5kZXIgbm9uLWRlZmF1bHQgcmVwbGljYQorIyBpZGVudGl0aWVzLiAgVGhlIGFwcGx5 IHdvcmtlciBsb2NhdGVzIHRoZSByb3cgdG8gdXBkYXRlIG9yIGRlbGV0ZSB2aWEgdGhlCisj IHJlcGxpY2EgaWRlbnRpdHk6IGEgc2Vxc2NhbiBmb3IgUkVQTElDQSBJREVOVElUWSBGVUxM LCBhbmQgdGhlIG5vbWluYXRlZAorIyBpbmRleCBmb3IgUkVQTElDQSBJREVOVElUWSBVU0lO RyBJTkRFWC4gIE9uIGEgc3Vic2NyaWJlciB3aG9zZSB0YWJsZXMgY2FycnkKKyMgZXh0cmEg aW5kZXhlcyAoc28gYXBwbHkgcGVyZm9ybXMgSE9ULWluZGV4ZWQgdXBkYXRlcyBhbmQgbGVh dmVzIHN0YWxlIGluZGV4CisjIGxlYXZlcyksIHRoYXQgbG9va3VwIG11c3Qgc3RpbGwgZmlu ZCB0aGUgY3VycmVudCByb3cgLS0gaW5jbHVkaW5nIGFmdGVyIHRoZQorIyBpZGVudGl0eSBj b2x1bW4ncyB2YWx1ZSBpcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoQUJBKS4KK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpN b3JlOworCitteSAkcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJHB1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRzdWJzY3JpYmVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskc3Vic2NyaWJl ci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHB1Yl9jb25uaW5mbyA9ICRw dWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CisKKyMgdGFiX2Z1bGw6 IFJFUExJQ0EgSURFTlRJVFkgRlVMTCAoYXBwbHkgdXNlcyBhIHNlcXVlbnRpYWwgc2Nhbiku CisjIHRhYl9pZHg6ICBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIG9uIGEgbm9uLVBL IHVuaXF1ZSBpbmRleCB3aG9zZQorIyAgICAgICAgICAgY29sdW1uIGlzIGl0c2VsZiB1cGRh dGVkLCBzbyB0aGUgYXBwbHktc2lkZSBpbmRleCBsb29rdXAgbXVzdAorIyAgICAgICAgICAg dG9sZXJhdGUgc3RhbGUgbGVhdmVzIGxlZnQgYnkgZWFybGllciBIT1QtaW5kZXhlZCB1cGRh dGVzLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRB QkxFIHRhYl9mdWxsIChhIGludCwgYiBpbnQsIGMgaW50KTsKKwlBTFRFUiBUQUJMRSB0YWJf ZnVsbCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9pZHggKGsg aW50IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpOworCUNSRUFURSBVTklRVUUgSU5ERVggdGFi X2lkeF9rIE9OIHRhYl9pZHggKGspOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YiBGT1IgVEFCTEUgdGFiX2Z1bGwsIHRhYl9pZHg7Cit9KTsKKworIyBUaGUgc3Vic2NyaWJl ciBhZGRzIGV4dHJhIHNlY29uZGFyeSBpbmRleGVzIHNvIHRoYXQgYW4gVVBEQVRFIGNoYW5n aW5nIG9uZQorIyBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QtaW5kZXhlZCBvbiBhcHBseS4K KyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlDUkVBVEUgVEFCTEUg dGFiX2Z1bGwgKGEgaW50LCBiIGludCwgYyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisJQ1JFQVRFIElOREVYIHRhYl9mdWxsX2IgT04gdGFiX2Z1bGwgKGIpOworCUNSRUFURSBJ TkRFWCB0YWJfZnVsbF9jIE9OIHRhYl9mdWxsIChjKTsKKwlBTFRFUiBUQUJMRSB0YWJfZnVs bCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9pZHggKGsgaW50 IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisJQ1JF QVRFIFVOSVFVRSBJTkRFWCB0YWJfaWR4X2sgT04gdGFiX2lkeCAoayk7CisJQ1JFQVRFIElO REVYIHRhYl9pZHhfdiBPTiB0YWJfaWR4ICh2KTsKKwlDUkVBVEUgSU5ERVggdGFiX2lkeF93 IE9OIHRhYl9pZHggKHcpOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQTElDQSBJREVOVElU WSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7Cit9KTsKKworIyBBbGxvdyBIT1QtaW5kZXhlZCB1 cGRhdGVzIG9uIHRoZSBhcHBseSBwYXRoLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YgorCSAgQ09OTkVDVElPTiAn JHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoaG90X2luZGV4 ZWRfb25fYXBwbHkgPSBhbHdheXMpOworfSk7Ciskc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vi c2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCisjIFNlZWQgYm90aCB0YWJs ZXMuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlJTlNFUlQgSU5U TyB0YWJfZnVsbCBWQUxVRVMgKDEsIDEwLCAxMDApLCAoMiwgMjAsIDIwMCk7CisJSU5TRVJU IElOVE8gdGFiX2lkeCBWQUxVRVMgKDEsIDEwLCAxMDAwKSwgKDIsIDIwLCAyMDAwKTsKK30p OworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViJyk7CisKKyMgQSBydW4gb2Yg c2luZ2xlLWNvbHVtbiB1cGRhdGVzOiBlYWNoIHN0YXlzIEhPVC1pbmRleGVkIG9uIHRoZSBz dWJzY3JpYmVyIGFuZAorIyBsZWF2ZXMgc3RhbGUgbGVhdmVzLCB0aGVuIHRoZSBpZGVudGl0 eS9QSyByb3cgaXMgbWF0Y2hlZCBhZ2FpbiBieSB0aGUgbmV4dAorIyBjaGFuZ2UuICBJbmNs dWRlIGFuIEFCQSBjeWNsZSBvbiB0aGUgVVNJTkcgSU5ERVggY29sdW1uIGsgKDEgLT4gMyAt PiAxKS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSB0 YWJfZnVsbCBTRVQgYiA9IGIgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfZnVsbCBT RVQgYyA9IGMgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfZnVsbCBTRVQgYiA9IGIg KyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfaWR4IFNFVCB2ID0gdiArIDEgV0hFUkUg ayA9IDE7CisJVVBEQVRFIHRhYl9pZHggU0VUIGsgPSAzIFdIRVJFIGsgPSAxOworCVVQREFU RSB0YWJfaWR4IFNFVCB3ID0gdyArIDEgV0hFUkUgayA9IDM7CisJVVBEQVRFIHRhYl9pZHgg U0VUIGsgPSAxIFdIRVJFIGsgPSAzOworCURFTEVURSBGUk9NIHRhYl9mdWxsIFdIRVJFIGEg PSAyOworCURFTEVURSBGUk9NIHRhYl9pZHggV0hFUkUgayA9IDI7Cit9KTsKKyRwdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisjIFRoZSBzdWJzY3JpYmVyIG11c3Qg bWF0Y2ggdGhlIHB1Ymxpc2hlciBleGFjdGx5OiB0aGUgUkkgbG9va3VwcyBmb3VuZCB0aGUK KyMgcmlnaHQgcm93cyBhY3Jvc3MgdGhlIEhPVC1pbmRleGVkIGNoYWlucyBhbmQgdGhlIEFC QSBjeWNsZS4KK215ICRwdWJfZnVsbCA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCXF7U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBhfSk7Citt eSAkc3ViX2Z1bGwgPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtT RUxFQ1QgYSwgYiwgYyBGUk9NIHRhYl9mdWxsIE9SREVSIEJZIGF9KTsKK2lzKCRzdWJfZnVs bCwgJHB1Yl9mdWxsLCAnUkVQTElDQSBJREVOVElUWSBGVUxMOiBzdWJzY3JpYmVyIG1hdGNo ZXMgcHVibGlzaGVyJyk7CisKK215ICRwdWJfaWR4ID0gJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JERVIgQlkg a30pOworbXkgJHN1Yl9pZHggPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JERVIgQlkga30pOworaXMoJHN1 Yl9pZHgsICRwdWJfaWR4LAorCSdSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYOiBzdWJz Y3JpYmVyIG1hdGNoZXMgcHVibGlzaGVyIGFjcm9zcyBBQkEnKTsKKworIyBUaGUgc3Vic2Ny aWJlcidzIHRhYmxlcyBtdXN0IGJlIHN0cnVjdHVyYWxseSBjb25zaXN0ZW50IChzdHVicyBy ZWNvZ25pc2VkKS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtDUkVB VEUgRVhURU5TSU9OIGFtY2hlY2t9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgndGFi X2lkeCcpfSksCisJJzAnLAorCSdzdWJzY3JpYmVyIHRhYl9pZHggaGFzIG5vIGhlYXAgY29y cnVwdGlvbiBhZnRlciBIT1QtaW5kZXhlZCBhcHBseScpOworCiskc3Vic2NyaWJlci0+c3Rv cDsKKyRwdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41MC4xCgo= --f813cfcf58bb71b174850efc07610ae5296bf168 Content-Disposition: attachment; filename*0="v56-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v56-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSBmNzQ2YzkxMzk0M2FlZDZmYmFlNzkyOTY5NTRjMjFmZTU1OTI5MWEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU2IDkv OV0gW0RPIE5PVCBNRVJHRV0gQWRkIGEgSE9UL1NJVSBiZW5jaG1hcmsgaGFybmVzcwoKQS9C IGFuZCBzaW5nbGUtdmFyaWFudCBiZW5jaG1hcmsgc2NyaXB0cyBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlczogYnVpbGQgdHdvCnBvc3RncmVzIHZhcmlhbnRzLCBydW4gcGdiZW5jaCB3b3Jr bG9hZHMgZXhlcmNpc2luZyBjbGFzc2ljLUhPVCwgbm9uLUhPVCwgYW5kCkhPVC1pbmRleGVk IHBhdGhzLCBhbmQgYSBzZWxmLWNvbnRhaW5lZCBibG9hdCBwcm9iZSB0aGF0IHJlcG9ydHMg dGhlIHNraXAgY291bnQKKGluZGV4IHdyaXRlcyBhdm9pZGVkIG9uIHVuY2hhbmdlZCBpbmRl eGVzKSBhbmQgY2hhbmdlZC1pbmRleCBib3VuZGluZy4gIE5vdApmb3IgbWVyZ2U7IGtlcHQg Zm9yIGV2YWx1YXRpbmcgdGhlIGZlYXR1cmUuCi0tLQogc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvUkVBRE1FLm1kICAgICAgICAgICAgIHwgIDgyICsrKysKIHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAuLi4vc2l1L3Nj cmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwogLi4uL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsKIC4uLi9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSArCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2ggICAg ICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0 ZS5zcWwgICAgfCAgIDcgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NjAgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5tZAog Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxv YXQuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3Jp cHRzL2J1aWxkLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Jl YWRfaW5kZXhzY2FuLnNxbAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvcnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjlhNjJkMjY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1p bmRleGVkKSBBL0IgYmVuY2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRz LCBpZGVudGljYWwgcGdkYXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lz aW5nIGNsYXNzaWMgSE9ULCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMj IENvbnRlbnRzCisKKy0gYHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdy ZXMgdmFyaWFudHMgKGBtYXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3Jp Z2luL21hc3RlcjsgYHRlcGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJl cworICBhIHdyaXRhYmxlIGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAv c2NyYXRjaC90ZXBpZC1iZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2 ZXIuICBSdW5zIGBzaW1wbGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhl ZF91cGRhdGVgLCBgaG90X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQg YHdpZGVfTmAKKyAgZm9yIE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBs YXRlbmN5LCBXQUwgYnl0ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5k CisgIGluZGV4IHNpemUsIHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBy dW4gdG8gYCRCRU5DSC9yZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmct cnVubmluZyBzaW5nbGUtd29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9U JS9XQUwvYmxvYXQgZXZlcnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAg c2Vjb25kcworICBvZiBjb25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3Jp cHRzL2Jsb2F0LnNoYCAtLSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBk YXRlK3ZhY3V1bSBjeWNsZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBh bmQgYW4gdW5jaGFuZ2VkIGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0 cyAodmlhIHBnc3RhdHR1cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5k ZWQgd2l0aCBwZXJpb2RpYworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0 IGl0LCBwbHVzIHRoZSBza2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRl cyBhdm9pZGluZyB0aGUgdW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3 YXkKKyAgY2x1c3Rlciwgc28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCist IGBzY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxl IFNFVCBiID0gcmFuZCBXSEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVk X21peGVkLnNxbGAgIC0tIDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBV UERBVEUuCistIGBzY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0 cmVlIGluZGV4IHNjYW5zIG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8g c3RhbGUgZW50cmllcyk7IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAg YWRkcyBubyBwZXItc2NhbiBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkZWNpZGVzCisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24g YW5kIHRoZSBzY2FuIHJlcXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRl X3VwZGF0ZS5zcWxgIC0tIGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmts b2FkOworICB0aGUgYFNFVGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRX SURFX1NURVBTYC4KKworIyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50 cyAocnVuIG9uY2UgcGVyIGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCBCRU5DSD0vc2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWls ZC5zaAorCisjIFN0YW5kYXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTgg RFVSQVRJT049MTIwIFwKKyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2 IFwKKyAgLi9zY3JpcHRzL3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYg VEhSRUFEUz04IERVUkFUSU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5z aAorCisjIEJsb2F0IHByb2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRl cGlkIGJ1aWxkKQorQkVOQ0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xF Uz04IFVQREFURVM9MjAgXAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYg dmFycworCitgYGAKK1JFUE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFz IC5naXQpCitCRU5DSCAgICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVp bGQgdHJlZXMsIHJlc3VsdHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2 ZXMgc2l1X3RhYmxlIHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdi ZW5jaCAtYworVEhSRUFEUyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRz IHBlciB3b3JrbG9hZAorV0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1 bW5zIGluIHdpZGVfdGFibGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgY29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAg ICAgICAgICAgICAoZGVmYXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVz IHBvcnQgZm9yIHRoZSBiZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNx bC5jb25mIHNldHRpbmcgKGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24g Zm9yIHRoZSBtYXN0ZXIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisg ICAgICAgICAgICAgd2l0aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9u IGZvciB0aGUgdGVwaWQgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9u bHk6CitCSU5ESVIgICAgICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0 ZXBpZCB2YXJpYW50IHVuZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAo ZGVmYXVsdCA1MDAwKQorQ1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZh dWx0IDgpCitVUERBVEVTICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVs dCAyMCkKK2BgYAorCitUaGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBh bmQgRnJlZUJTRDsgdGhlIENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNz PSAtLXBwaWQgTEVBREVSIC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Bl ci1waWQgYHBzYCAoRnJlZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjM0MTcxYzY4ZjViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApAQCAtMCww ICsxLDg0IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIFNpbmdsZS12YXJpYW50IGJsb2F0 IGJlbmNobWFyayBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgVGhlIEEv QiBydW4uc2ggbWVhc3VyZXMgVFBTL1dBTC9hZ2dyZWdhdGUgc2l6ZTsgaXQgZG9lcyBub3Qg aXNvbGF0ZSB0d28KKyMgYmxvYXQgcHJvcGVydGllcyBvZiB0aGUgSE9ULWluZGV4ZWQgcGF0 aCwgd2hpY2ggdGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzOgorIworIyAgIDEuIFN0YWxlIGlu ZGV4IGVudHJpZXMgb24gdGhlIENIQU5HRUQgaW5kZXggYWNjdW11bGF0ZSBiZXR3ZWVuIHZh Y3V1bXMsCisjICAgICAgYnV0IFZBQ1VVTSByZWNsYWltcyB0aGVtLCBzbyBzaXplIHN0YXlz IGJvdW5kZWQgYWNyb3NzIHVwZGF0ZSt2YWN1dW0KKyMgICAgICBjeWNsZXMuICBTa2lwcGlu ZyB2YWN1dW0gbGV0cyB0aGVtIGdyb3cgdW5ib3VuZGVkICh0aGUgaW5oZXJlbnQKKyMgICAg ICBpbnRlci12YWN1dW0gYmxvYXQ7IHJlYWQtZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBtZWFud2hpbGUpLgorIyAgIDIuIEFuIGluZGV4IG9uIGFuIFVOQ0hB TkdFRCBjb2x1bW4gaXMgc2tpcHBlZCBieSBIT1QtaW5kZXhlZCB1cGRhdGVzICh0aGUKKyMg ICAgICBzZWxlY3RpdmUtdXBkYXRlIGJlbmVmaXQpIC0tIHZpc2libGUgYXMgYSBza2lwIGNv dW50LiAgVXBkYXRlcyB0aGF0IGZhbGwKKyMgICAgICBiYWNrIHRvIG5vbi1IT1QgKGUuZy4g d2hlbiB0aGUgcGFnZSBoYXMgbm8gcm9vbSBmb3IgdGhlIGNoYWluKSBzdGlsbAorIyAgICAg IGluc2VydCBpbnRvIGl0LCBzbyBpdHMgc2l6ZSByZWZsZWN0cyBvbmx5IHRoZSBub24tSE9U IHJlbWFpbmRlci4KKyMKKyMgVXNlcyB0aGUgdGVwaWQgdmFyaWFudCBidWlsdCBieSBidWls ZC5zaCAob3ZlcnJpZGUgQklORElSIGZvciBhbnkgYnVpbGQpIGFuZAorIyBhIHRocm93YXdh eSBjbHVzdGVyIHVuZGVyICRCRU5DSCwgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgQS9CIHBn ZGF0YS4KKyMKKyMgRW52OiBCRU5DSCAoZGVmYXVsdCAvc2NyYXRjaC9zaXUtYmVuY2gpLCBC SU5ESVIgKGRlZmF1bHQgdGVwaWQgdmFyaWFudCBiaW4pLAorIyAgICAgIFBPUlQgKGRlZmF1 bHQgNTc0ODEpLCBST1dTIChkZWZhdWx0IDUwMDApLCBDWUNMRVMgKGRlZmF1bHQgOCksCisj ICAgICAgVVBEQVRFUyAodXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSwgZGVmYXVsdCAyMCku CitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVu Y2h9CitCSU5ESVI9JHtCSU5ESVI6LSRCRU5DSC90ZXBpZC91c3IvbG9jYWwvcGdzcWwvYmlu fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorUk9XUz0ke1JPV1M6LTUwMDB9CitDWUNMRVM9JHtD WUNMRVM6LTh9CitVUERBVEVTPSR7VVBEQVRFUzotMjB9CitEQVRBRElSPSRCRU5DSC9fZGF0 YV9ibG9hdAorCitiYXNlPSQoZGlybmFtZSAiJEJJTkRJUiIpCitpZiBbIC1kICIkYmFzZS9s aWI2NCIgXTsgdGhlbgorICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkYmFzZS9saWI2NCR7 TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0iCitlbHNlCisgIGV4cG9ydCBM RF9MSUJSQVJZX1BBVEg9IiRiYXNlL2xpYiR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJB UllfUEFUSH0iCitmaQorCitQU1FMPSgiJEJJTkRJUi9wc3FsIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgLVggLXEpCitQKCkgeyAiJHtQU1FMW0BdfSIgLUF0ICIkQCI7IH0K KworIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3AgLW0gZmFzdCA+L2Rldi9u dWxsIDI+JjEgfHwgdHJ1ZQorcm0gLXJmICIkREFUQURJUiIKKyIkQklORElSL2luaXRkYiIg LUQgIiREQVRBRElSIiAtVSBwb3N0Z3JlcyAtLW5vLXN5bmMgPi9kZXYvbnVsbAorY2F0ID4+ ICIkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitwb3J0ID0gJFBPUlQKK2F1dG92 YWN1dW0gPSBvZmYKK2ZzeW5jID0gb2ZmCitFT0YKKyIkQklORElSL3BnX2N0bCIgLUQgIiRE QVRBRElSIiAtbyAiLXAgJFBPUlQiIC1sICIkQkVOQ0gvX2Jsb2F0LmxvZyIgLXcgc3RhcnQg Pi9kZXYvbnVsbAordHJhcCAnIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3Ag LW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZScgRVhJVAorIiR7UFNRTFtAXX0iIC1j ICJDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdzdGF0dHVwbGU7IiA+L2Rldi9u dWxsCisKKyMgJDEgPSB0YWJsZSBuYW1lLCAkMiA9IHZhY3V1bV9lYWNoICgxLzApLiAgUmV0 dXJucyBmaW5hbCBpZHhfYSBjb21wb3NpdGlvbi4KK3J1bl9hcm0oKSB7CisgIGxvY2FsIHRi bD0kMSB2YWM9JDIKKyAgIiR7UFNRTFtAXX0iIDw8U1FMID4vZGV2L251bGwKK0RST1AgVEFC TEUgSUYgRVhJU1RTICR0Ymw7CitDUkVBVEUgVEFCTEUgJHRibCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYICR7dGJsfV9hIE9OICR0YmwoYSk7ICAgLS0gY2hhbmdlZCBjb2x1bW4K K0NSRUFURSBJTkRFWCAke3RibH1fYiBPTiAkdGJsKGIpOyAgIC0tIG5ldmVyIGNoYW5nZWQK K0lOU0VSVCBJTlRPICR0YmwgU0VMRUNUIGcsIGcsIGcsIHJlcGVhdCgneCcsIDQwKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAkUk9XUykgZzsKK1ZBQ1VVTSAoRlJFRVpFLCBBTkFMWVpF KSAkdGJsOworU1FMCisgIGxvY2FsIGN5YworICBmb3IgKChjeWMgPSAxOyBjeWMgPD0gQ1lD TEVTOyBjeWMrKykpOyBkbworICAgICIke1BTUUxbQF19IiAtYyAiRE8gXCRcJCBCRUdJTiBG T1IgdSBJTiAxLi4kVVBEQVRFUyBMT09QIFVQREFURSAkdGJsIFNFVCBhID0gYSArIDE7IEVO RCBMT09QOyBFTkQgXCRcJDsiID4vZGV2L251bGwKKyAgICBbICIkdmFjIiA9IDEgXSAmJiAi JHtQU1FMW0BdfSIgLWMgIlZBQ1VVTSAkdGJsOyIgPi9kZXYvbnVsbAorICBkb25lCisgIFAg LWMgIlNFTEVDVCAnJHRibCh2YWN1dW1fZWFjaD0kdmFjKTonCisgICAgICAgIHx8ICcgaWR4 X2Ffa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1fYScpLzEwMjQKKyAgICAgICAg fHwgJyBpZHhfYV9saXZlPScgfHwgKFNFTEVDVCB0dXBsZV9jb3VudCBGUk9NIHBnc3RhdHR1 cGxlKCcke3RibH1fYScpKQorICAgICAgICB8fCAnIGlkeF9hX2ZyZWUlPScgfHwgcm91bmQo KFNFTEVDVCBmcmVlX3BlcmNlbnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0Ymx9X2EnKSk6Om51 bWVyaWMsMSkKKyAgICAgICAgfHwgJyBpZHhfYl9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUo JyR7dGJsfV9iJykvMTAyNAorICAgICAgICB8fCAnIGlkeF9iX3NraXBzPScgfHwgY29hbGVz Y2UoKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcyBX SEVSRSBpbmRleHJlbG5hbWU9JyR7dGJsfV9iJyksIDApOyIKK30KKworZWNobyAiPT09IEhP VC1pbmRleGVkIGJsb2F0OiAkQ1lDTEVTIGN5Y2xlcyB4ICgkVVBEQVRFUyB1cGRhdGVzL3Jv dyB4ICRST1dTIHJvd3MpID09PSIKK3J1bl9hcm0gdF92YWMgMQorcnVuX2FybSB0X25vdmFj IDAKK2VjaG8gImlkeF9hOiBib3VuZGVkIHdpdGggdmFjdXVtX2VhY2g9MSwgdW5ib3VuZGVk IHdpdGggPTAgKHN0YWxlIGVudHJpZXMgYWNjdW11bGF0ZSIKK2VjaG8gInVudGlsIHJlY2xh aW1lZCkuICBpZHhfYl9za2lwcyBjb3VudHMgZW50cmllcyB0aGUgSE9ULWluZGV4ZWQgcGF0 aCBhdm9pZGVkIG9uIgorZWNobyAidGhlIHVuY2hhbmdlZCBpbmRleDsgaWR4X2Jfa2IgaXMg b25seSB0aGUgbm9uLUhPVC1mYWxsYmFjayByZW1haW5kZXIuIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCBiL3NyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAuLmIyZjBlZTUyNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApAQCAtMCwwICsxLDU0IEBACisjIS91 c3IvYmluL2VudiBiYXNoCisjIEJ1aWxkIHR3byBwb3N0Z3JlcyB2YXJpYW50cyBmb3IgdGVw aWQgKEhPVC1pbmRleGVkKSBBL0IgYmVuY2htYXJrcy4KKyMKKyMgRW52IHZhcnMgKGFsbCBv cHRpb25hbCk6CisjICAgUkVQTyAgICAgICAgICAtLSBwYXRoIHRvIHBvc3RncmVzIHNvdXJj ZSByZXBvIChkZWZhdWx0OiAkSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCwgb3IgL3NjcmF0Y2gv c2l1LWJlbmNoL3JlcG8pCisjICAgQkVOQ0ggICAgICAgICAtLSBiZW5jaCByb290IChkZWZh dWx0OiAvc2NyYXRjaC9zaXUtYmVuY2gpCisjICAgTUFTVEVSX1JFViAgICAtLSByZXZpc2lv biBmb3IgdGhlICJtYXN0ZXIiIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFz ZSB3aXRoIG9yaWdpbi9tYXN0ZXIpCisjICAgVEVQSURfUkVWICAgICAtLSByZXZpc2lvbiBm b3IgdGhlICJ0ZXBpZCIgIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorIyAgIEpPQlMgICAg ICAgICAgLS0gcGFyYWxsZWwgY29tcGlsZSBqb2JzIChkZWZhdWx0OiBucHJvYyBvciA4KQor c2V0IC1ldW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNo fQorSk9CUz0ke0pPQlM6LSQoIChjb21tYW5kIC12IG5wcm9jID4vZGV2L251bGwgJiYgbnBy b2MpIHx8IHN5c2N0bCAtbiBody5uY3B1IDI+L2Rldi9udWxsIHx8IGVjaG8gOCApfQoraWYg WyAteiAiJHtSRVBPOi19IiBdOyB0aGVuCisgIGZvciBjYW5kaWRhdGUgaW4gIiRIT01FL3dz L3Bvc3RncmVzL3RlcGlkIiAiJEJFTkNIL3JlcG8iIC9zY3JhdGNoL3BnOyBkbworICAgIGlm IFsgLWQgIiRjYW5kaWRhdGUvLmdpdCIgXTsgdGhlbiBSRVBPPSRjYW5kaWRhdGU7IGJyZWFr OyBmaQorICBkb25lCitmaQorOiAiJHtSRVBPOj9SRVBPIG5vdCBzZXQgYW5kIG5vIGRlZmF1 bHQgZm91bmR9IgorY2QgIiRSRVBPIgorCitURVBJRF9SRVY9JHtURVBJRF9SRVY6LXRlcGlk fQorTUFTVEVSX1JFVj0ke01BU1RFUl9SRVY6LSQoZ2l0IG1lcmdlLWJhc2UgIiRURVBJRF9S RVYiIG9yaWdpbi9tYXN0ZXIgMj4vZGV2L251bGwgfHwgZ2l0IG1lcmdlLWJhc2UgIiRURVBJ RF9SRVYiIG1hc3Rlcil9CisKK2VjaG8gIlJFUE89JFJFUE8gIE1BU1RFUj0kTUFTVEVSX1JF ViAgVEVQSUQ9JFRFUElEX1JFViAgSk9CUz0kSk9CUyAgQkVOQ0g9JEJFTkNIIgorCitkaWUo KSB7IHByaW50ZiAnYnVpbGQ6ICVzXG4nICIkKiIgPiYyOyBleGl0IDE7IH0KK2lmIGdpdCBz dGF0dXMgLS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisg IGRpZSAicmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3Ig Y29tbWl0IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0k MQorICBsb2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hv ICI9PT0gYnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgWyAtZCAiJHBy ZWZpeCIgXSAmJiBmaW5kICIkcHJlZml4IiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGly ICIkcHJlZml4IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVp ZXQgLS1kZXRhY2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisg IFsgLWQgIiRibGQiIF0gJiYgZmluZCAiJGJsZCIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBy bWRpciAiJGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vz ci9sb2NhbC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZh bHNlIFwKKyAgICAtRGV4dHJhX3ZlcnNpb249LXNpdWJlbmNoLSRuYW1lID4vZGV2L251bGwK KyAgbWVzb24gY29tcGlsZSAtQyAiJGJsZCIgLWogIiRKT0JTIgorICBtZXNvbiBpbnN0YWxs IC1DICIkYmxkIiAtLWRlc3RkaXI9LyA+L2Rldi9udWxsCisgICIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbC9iaW4vcG9zdGdyZXMiIC0tdmVyc2lvbgorfQorCitPUklHPSQoZ2l0IHN5bWJv bGljLXJlZiAtLXF1aWV0IC0tc2hvcnQgSEVBRCB8fCBnaXQgcmV2LXBhcnNlIEhFQUQpCit0 cmFwICdnaXQgY2hlY2tvdXQgLS1xdWlldCAiJE9SSUciJyBFWElUCisKK2J1aWxkX3Zhcmlh bnQgbWFzdGVyICIkTUFTVEVSX1JFViIKK2J1aWxkX3ZhcmlhbnQgdGVwaWQgICIkVEVQSURf UkVWIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hv dF9pbmRleGVkX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2FiMzI4OWRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbApAQCAtMCwwICsxLDExIEBA CistLSBNaXhlZCB3b3JrbG9hZDogODAlIHNlbGVjdHMsIDIwJSBpbmRleGVkLWNvbHVtbiB1 cGRhdGVzLgorLS0gRXhlcmNpc2VzIGJvdGggdGhlIGhvdC1pbmRleGVkIHdyaXRlciBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlLWJpdG1hcCByZWFkZXIuCitcc2V0IGFpZCByYW5kb20o MSwgOnNjYWxlICogMTAwMDAwKQorXHNldCBiaWQgcmFuZG9tKDEsIDEwMDAwMDApCitcc2V0 IHdoaWNoIHJhbmRvbSgxLCAxMDApCitCRUdJTjsKK1NFTEVDVCAqIEZST00gc2l1X3RhYmxl IFdIRVJFIGEgPSA6YWlkOworXGlmIDp3aGljaCA+IDgwCisgIFVQREFURSBzaXVfdGFibGUg U0VUIGIgPSA6YmlkIFdIRVJFIGEgPSA6YWlkOworXGVuZGlmCitDT01NSVQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0 ZS5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYxYmNm OTU5YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNiBAQAorLS0gaG90LWlu ZGV4ZWQtZnJpZW5kbHkgd29ya2xvYWQ6IG5hcnJvdyB0YWJsZSB3aXRoIGEgZmV3IG5vbi1Q SyBpbmRleGVzLgorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBp bmRleGVkIGNvbHVtbiBvbiBhIHJhbmRvbSByb3cuCistLSBXaXRoIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQ7IHdpdGhvdXQgaG90LWluZGV4ZWQgaXQgaXMgbm9uLUhPVC4K K1xzZXQgYWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IG5ld19iIHJhbmRv bSgxLCAxMDAwMDAwKQorVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IDpuZXdfYiBXSEVSRSBh ID0gOmFpZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cmVhZF9pbmRleHNjYW4uc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9y ZWFkX2luZGV4c2Nhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NTY4OTc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwKQEAgLTAsMCArMSwxMSBAQAorLS0g cmVhZF9pbmRleHNjYW46IHJlYWQtb25seSBidHJlZSBpbmRleC1zY2FuIHdvcmtsb2FkIGNv bmZpcm1pbmcgdGhlCistLSBIT1QtaW5kZXhlZCByZWFkIHBhdGggYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCBvbiB0YWJsZXMgd2l0aCBubyBzdGFsZQorLS0gZW50cmllcy4KKy0tIFRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRlcyBzdGFsZW5lc3Mgd2l0aG91dCBh IGtleSBjb21wYXJpc29uIGFuZAorLS0gdGhlIHNjYW4gZG9lcyBub3QgcmVxdWVzdCB0aGUg aW5kZXggdHVwbGUsIHNvIG9uIGEgZnJlc2hseSByZXNldCBzaXVfdGFibGUKKy0tIChubyBz dGFsZSBIT1QtaW5kZXhlZCBlbnRyaWVzKSB0aGVyZSBzaG91bGQgYmUgbm8gbWFzdGVyLXZz LXRlcGlkCistLSBkaWZmZXJlbmNlIG9uIHRoaXMgY2VsbC4gIFRoZSBwcmVkaWNhdGUgaXMg YW4gZXF1YWxpdHkgb24gdGhlCistLSBpbmRleGVkIGNvbHVtbiBiIGFuZCB0aGUgdGFyZ2V0 IGxpc3QgaW5jbHVkZXMgdGhlIG5vbi1pbmRleGVkIGNvbHVtbiBlLAorLS0gZm9yY2luZyBh IHBsYWluIChoZWFwLWZldGNoaW5nKSBpbmRleCBzY2FuIHJhdGhlciB0aGFuIGFuIGluZGV4 LW9ubHkgc2Nhbi4KK1xzZXQgaWQgcmFuZG9tKDEsIDpyb3dzKQorU0VMRUNUIGEsIGIsIGMs IGQsIGUgRlJPTSBzaXVfdGFibGUgV0hFUkUgYiA9IDppZDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvcnVuLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw MDAwMDAuLmZhMzMwYWQ0ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ydW4uc2gKQEAgLTAsMCArMSwzNzcgQEAKKyMhL3Vzci9iaW4v ZW52IGJhc2gKKyMgQS9CIHBnYmVuY2ggaGFybmVzcyBmb3IgdGVwaWQ6IG1hc3RlciAodXBz dHJlYW0pIHZzIHRlcGlkIChIT1QtaW5kZXhlZCkuCisjCisjIEVudiB2YXJzOgorIyAgIFND QUxFICAgICAgIC0tIHBnYmVuY2ggLXMgKGFsc28gbXVsdGlwbGllciBmb3Igc2l1X3RhYmxl IHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCisjICAgQ0xJRU5UUyAgICAgLS0gcGdiZW5jaCAt YworIyAgIFRIUkVBRFMgICAgIC0tIHBnYmVuY2ggLWoKKyMgICBEVVJBVElPTiAgICAtLSBw Z2JlbmNoIC1UIChzZWNvbmRzIHBlciB3b3JrbG9hZCkKKyMgICBXSURFX0NPTFMgICAtLSAj IG9mIGluZGV4ZWQgY29sdW1ucyBpbiB0aGUgd2lkZV90YWJsZSAoZGVmYXVsdCAxNikKKyMg ICBXSURFX1NURVBTICAtLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAidXBkYXRlZCBjb2x1 bW5zIiBjb3VudHMgZm9yCisjICAgICAgICAgICAgICAgICB0aGUgd2lkZSB3b3JrbG9hZCAo ZGVmYXVsdCAiMCwxLDQsOCxXSURFX0NPTFMiKQorIyAgIFBPUlQgICAgICAgIC0tIHBvc3Rn cmVzIHBvcnQgKGRlZmF1bHQgNTc0ODApCisjCisjIEZvciBlYWNoIHZhcmlhbnQgaW4ge21h c3RlciwgdGVwaWR9OgorIyAgIGluaXRkYiBmcmVzaCBwZ2RhdGEsIHN0YXJ0IHBvc3RncmVz LCBjcmVhdGUgdGVzdCBvYmplY3RzLAorIyAgIHJ1biB3b3JrbG9hZHMgKHBnYmVuY2ggLU4g c2ltcGxlX3VwZGF0ZSwgaG90X2luZGV4ZWRfdXBkYXRlLCBob3RfaW5kZXhlZF9taXhlZCwK KyMgICByZWFkX2luZGV4c2NhbiwgYW5kIHdpZGVfTiBmb3IgZWFjaCB2YWx1ZSBpbiBXSURF X1NURVBTKSwgY29sbGVjdCBUUFMgKyBIT1QKKyMgICBjb3VudHMgKyBXQUwgZGVsdGEgKyBw ZWFrIENQVS9SU1Mgc2FtcGxlZCB2aWEgcGlkc3RhdC4KKyMgRW1pdHMgQ1NWICsgTWFya2Rv d24gc3VtbWFyeSB1bmRlciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVzdWx0cy8uCitzZXQgLWV1 byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVuY2h9CitTQ0FM RT0ke1NDQUxFOi0yMH0KK0NMSUVOVFM9JHtDTElFTlRTOi0xNn0KK1RIUkVBRFM9JHtUSFJF QURTOi04fQorRFVSQVRJT049JHtEVVJBVElPTjotMTIwfQorV0lERV9DT0xTPSR7V0lERV9D T0xTOi0xNn0KK1dJREVfU1RFUFM9JHtXSURFX1NURVBTOi0wLDEsNCw4LDE2fQorUE9SVD0k e1BPUlQ6LTU3NDgwfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRC RU5DSC9yZXN1bHRzLyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy8kVFMKK21rZGlyIC1w ICIkTE9HRElSIgorZWNobyAidmFyaWFudCx3b3JrbG9hZCx0cHMsbGF0ZW5jeV9hdmdfbXMs Y2xhc3NpY19ob3RfdXBkYXRlcyxob3RfaW5kZXhlZF91cGRhdGVzLG5vbl9ob3RfdXBkYXRl cyx0b3RhbF91cGRhdGVzLHdhbF9ieXRlcyxibG9hdF9wYWdlc19iZWZvcmUsYmxvYXRfcGFn ZXNfYWZ0ZXIsaW5kZXhfc2l6ZV9iZWZvcmUsaW5kZXhfc2l6ZV9hZnRlcixjcHVfcGN0X3Bl YWsscnNzX21pYl9wZWFrLHBlcl9pbmRleF9iZWZvcmUscGVyX2luZGV4X2FmdGVyIiA+ICIk T1VUIgorZWNobyAiPT09IHNpdS1iZW5jaCBBL0IgcnVuICRUUyAtPiAkT1VUIChzY2FsZT0k U0NBTEUgY2xpZW50cz0kQ0xJRU5UUyB0aHJlYWRzPSRUSFJFQURTIGR1cmF0aW9uPSR7RFVS QVRJT059cykiCisKK2Jpbl9vZigpIHsKKyAgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9w Z3NxbC9iaW4iCit9CisKK0xEX29mKCkgeworICBsb2NhbCBiYXNlPSRCRU5DSC8kMS91c3Iv bG9jYWwvcGdzcWwKKyAgIyBMaW51eCBkaXN0cm9zIHRoYXQgc3BsaXQgNjQtYml0IGxpYnMg dXNlIGxpYjY0OyBtb3N0IG90aGVycyB1c2UgbGliLgorICBpZiBbIC1kICIkYmFzZS9saWI2 NCIgXTsgdGhlbgorICAgIGVjaG8gIiRiYXNlL2xpYjY0IgorICBlbHNlCisgICAgZWNobyAi JGJhc2UvbGliIgorICBmaQorfQorCitwc3FsX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlm dAorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9w c3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIgorfQorCitwZ2Jl bmNoX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlmdAorICBMRF9MSUJSQVJZX1BBVEg9IiQo TERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgIiRAIgorfQorCitzdGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMQor ICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBbIC1kICIkZGF0YWRpciIgXSAm JiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBybWRpciAiJGRhdGFk aXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERf b2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9z dGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgbG9jYWwgc2I9JHtTSEFS RURfQlVGRkVSUzotNTEyTUJ9CisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25m IiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkc2IKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dh bF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1l b3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ19kZXN0aW5hdGlvbiA9ICdz dGRlcnInCitsb2dnaW5nX2NvbGxlY3RvciA9IG9mZgorcG9ydCA9ICRQT1JUCitFT0YKKyAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3Rs IiAtRCAiJGRhdGFkaXIiIFwKKyAgICAtbyAiLXAgJFBPUlQiIC1sICIkTE9HRElSL3BnXyR2 LmxvZyIgc3RhcnQgPi9kZXYvbnVsbAorICBzbGVlcCAyCit9CisKK3N0b3BfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3RsIiAtRCAi JGRhdGFkaXIiIHN0b3AgLW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitw b3N0bWFzdGVyX3BpZCgpIHsKKyAgbG9jYWwgdj0kMQorICBoZWFkIC0xICIkQkVOQ0gvX2Rh dGFfJHYvcG9zdG1hc3Rlci5waWQiIDI+L2Rldi9udWxsCit9CisKK3NldHVwX3NjaGVtYXMo KSB7CisgIGxvY2FsIHY9JDEKKyAgc2VlZF9zaXVfdGFibGUgIiR2IgorICBzZWVkX3dpZGVf dGFibGUgIiR2IgorICAjIHBnYmVuY2ggc2NoZW1hIGZvciBidWlsdC1pbiBzaW1wbGVfdXBk YXRlLgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgXAorICAgIC1pIC1z ICIkU0NBTEUiIC1xIHBvc3RncmVzID4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAy PiYxCit9CisKKyMgc2VlZF9zaXVfdGFibGU6IChyZSljcmVhdGUgdGhlIG5hcnJvdyB0YWJs ZSB1c2VkIGJ5IHRoZSBzaXVfKiB3b3JrbG9hZHMuCitzZWVkX3NpdV90YWJsZSgpIHsKKyAg bG9jYWwgdj0kMQorICBsb2NhbCByb3dzPSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9h cyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUg VEFCTEUgc2l1X3RhYmxlKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50 LCBlIHRleHQpOworQ1JFQVRFIElOREVYIHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFU RSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFibGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04g c2l1X3RhYmxlKGQpOworSU5TRVJUIElOVE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBp LCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFT IGk7CitWQUNVVU0gKEZVTEwsIEFOQUxZWkUpIHNpdV90YWJsZTsKK0NIRUNLUE9JTlQ7CitT UUwKK30KKworIyBzZWVkX3dpZGVfdGFibGU6IChyZSljcmVhdGUgdGhlIHdpZGUgdGFibGUg d2l0aCBXSURFX0NPTFMgaW5kZXhlZCBjb2x1bW5zLgorc2VlZF93aWRlX3RhYmxlKCkgewor ICBsb2NhbCB2PSQxCisgIGxvY2FsIGNvbGRlZnM9IiIgaW5zZXJ0Y29scz0iIiBpbnNlcnR2 YWxzPSIiIGlkeGxpc3Q9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJFdJREVfQ09MUyIpOyBk bworICAgIGNvbGRlZnMrPSIsIGMkaSBpbnQiCisgICAgaW5zZXJ0Y29scys9IiwgYyRpIgor ICAgIGluc2VydHZhbHMrPSIsIGkiCisgICAgaWR4bGlzdCs9IkNSRUFURSBJTkRFWCB3aWRl X2MkaSBPTiB3aWRlX3RhYmxlKGMkaSk7ICIKKyAgZG9uZQorICBsb2NhbCB3aWRlX3Jvd3M9 JCgoU0NBTEUgKiAxMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElG IEVYSVNUUyB3aWRlX3RhYmxlOworQ1JFQVRFIFRBQkxFIHdpZGVfdGFibGUoaWQgaW50IFBS SU1BUlkgS0VZICRjb2xkZWZzKTsKKyRpZHhsaXN0CitJTlNFUlQgSU5UTyB3aWRlX3RhYmxl KGlkICRpbnNlcnRjb2xzKSBTRUxFQ1QgaSAkaW5zZXJ0dmFscyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkd2lkZV9yb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSB3aWRl X3RhYmxlOworQ0hFQ0tQT0lOVDsKK1NRTAorfQorCisjIHJlc2V0X3N0YXRlOiByZXN0b3Jl IGEgd29ya2xvYWQncyB0YXJnZXQgdGFibGUgdG8gaXRzIHNlZWRlZCBiYXNlbGluZS4KKyMg VXNlZCBiZXR3ZWVuIHdvcmtsb2FkcyBzbyBwZXItd29ya2xvYWQgYmxvYXQvaWR4X3NpemUg ZGVsdGFzIGFyZSBub3QKKyMgcG9sbHV0ZWQgYnkgY2FycnlvdmVyIGZyb20gZWFybGllciB3 b3JrbG9hZHMgaW4gdGhlIHNhbWUgdmFyaWFudCBydW4uCisjIEZvciBwZ2JlbmNoX2FjY291 bnRzIHdlIHJlLWluaXRpYWxpc2UgdmlhIGBwZ2JlbmNoIC1pYDsgZm9yIG91cgorIyBoYW5k LXJvbGxlZCB0YWJsZXMgd2UgZHJvcCArIHJlY3JlYXRlICsgcmVzZWVkLgorcmVzZXRfc3Rh dGUoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgY2FzZSAiJHRhYmxlIiBpbgorICAg IHBnYmVuY2hfYWNjb3VudHMpCisgICAgICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2 IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9z dGdyZXMgXAorICAgICAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+PiIkTE9HRElS L3BnYmVuY2hfaW5pdF8kdi5sb2ciIDI+JjEKKyAgICAgIHBzcWxfYXMgIiR2IiAtYyAiQ0hF Q0tQT0lOVCIgPi9kZXYvbnVsbAorICAgICAgOzsKKyAgICBzaXVfdGFibGUpCisgICAgICBz ZWVkX3NpdV90YWJsZSAiJHYiCisgICAgICA7OworICAgIHdpZGVfdGFibGUpCisgICAgICBz ZWVkX3dpZGVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICAqKQorICAgICAgZWNobyAicmVz ZXRfc3RhdGU6IHVua25vd24gdGFibGUgJHRhYmxlIiA+JjIKKyAgICAgIHJldHVybiAxCisg ICAgICA7OworICBlc2FjCisgIHBzcWxfYXMgIiR2IiAtYyAiU0VMRUNUIHBnX3N0YXRfcmVz ZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKCckdGFibGUnOjpyZWdjbGFzczo6b2lkKSIgPi9k ZXYvbnVsbAorfQorCitibG9hdF9zdGF0cygpIHsKKyAgbG9jYWwgdj0kMSB0YWJsZT0kMgor ICBwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJyR0YWJsZScpLzgx OTIgfHwgJywnIHx8IHBnX2luZGV4ZXNfc2l6ZSgnJHRhYmxlJykiCit9CisKKyMgc2l1X2Nv dW50OiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyBvYnNlcnZlZCBvbiAkdGFibGUg c2luY2UgaXRzCisjIHBnc3RhdCBjb3VudGVycyB3ZXJlIGxhc3QgcmVzZXQuICBSZXR1cm5z ICIwIiBvbiBtYXN0ZXIgKHdoZXJlIHRoZQorIyBjb3VudGVyIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCkgc28gdGhlIENTViBjb2x1bW4gc3RheXMgbnVtZXJpYy4KK3NpdV9jb3VudCgpIHsK KyAgbG9jYWwgdj0kMSB0YWJsZT0kMgorICBsb2NhbCB2YWwKKyAgdmFsPSQocHNxbF9hcyAi JHYiIC1BdGMgXAorICAgICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBk LCAwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIg Mj4vZGV2L251bGwpCisgIFtbICIkdmFsIiA9fiBeWzAtOV0rJCBdXSB8fCB2YWw9MAorICBl Y2hvICIkdmFsIgorfQorCisjIHBlcl9pbmRleF9zaXplczogZW1pdCAiaWR4MT1ieXRlcztp ZHgyPWJ5dGVzOy4uLiIgZm9yIHRoZSBpbmRleGVzIG9uCisjICR0YWJsZSwgc29ydGVkIGJ5 IGluZGV4cmVsaWQuICBVc2VkIGJ5IHRoZSB3aWRlXyogd29ya2xvYWRzIHNvIHdlIGNhbgor IyBzZWUgcGVyLWNvbHVtbiBpbmRleCBncm93dGggcmF0aGVyIHRoYW4ganVzdCB0aGUgYWdn cmVnYXRlLiAgUmV0dXJucworIyB0aGUgbGl0ZXJhbCAibm9uZSIgd2hlbiAkdGFibGUgaGFz IG5vIGluZGV4ZXMuCitwZXJfaW5kZXhfc2l6ZXMoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9 JDIKKyAgbG9jYWwgb3V0CisgIG91dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qgc3Ry aW5nX2FnZygKKyAgICAgICAgICAgaS5yZWxuYW1lIHx8ICc9JyB8fCBwZ19yZWxhdGlvbl9z aXplKGkub2lkKTo6dGV4dCwKKyAgICAgICAgICAgJzsnIE9SREVSIEJZIGkub2lkKQorICAg ICAgICAgRlJPTSBwZ19jbGFzcyB0CisgICAgICAgICBKT0lOIHBnX2luZGV4IGl4IE9OIGl4 LmluZHJlbGlkID0gdC5vaWQKKyAgICAgICAgIEpPSU4gcGdfY2xhc3MgaSAgT04gaS5vaWQg PSBpeC5pbmRleHJlbGlkCisgICAgICAgICBXSEVSRSB0LnJlbG5hbWUgPSAnJHRhYmxlJyIp CisgIFsgLW4gIiRvdXQiIF0gfHwgb3V0PSJub25lIgorICBlY2hvICIkb3V0IgorfQorCitz YW1wbGVfcGVhaygpIHsKKyAgIyBTYW1wbGUgQ1BVIC8gUlNTIG9mIHRoZSBwb3N0bWFzdGVy IHRyZWUgZm9yICREVVJBVElPTis1IHNlY29uZHMuCisgICMgV3JpdGVzICJwZWFrX2NwdV9w Y3QscGVha19yc3NfbWliIiB0byB0aGUgZ2l2ZW4gb3V0ZmlsZS4gIFBvcnRhYmxlIGFjcm9z cworICAjIExpbnV4IC8gRnJlZUJTRCAoZmFsbHMgYmFjayB0byBwZ3JlcCArIHBlci1waWQg cHMgd2hlcmUgLS1wcGlkIGlzbid0CisgICMgYXZhaWxhYmxlKS4gIFJldHVybnMgJ05BLE5B JyBpZiB0aGUgc2FtcGxlciBjYW4ndCBjb2xsZWN0IHVzZWZ1bCBkYXRhLgorICBsb2NhbCBv dXRmaWxlPSQxIHY9JDIKKyAgbG9jYWwgbGVhZGVyCisgIGxlYWRlcj0kKHBvc3RtYXN0ZXJf cGlkICIkdiIpCisgIFsgLXogIiRsZWFkZXIiIF0gJiYgeyBlY2hvICJOQSxOQSIgPiAiJG91 dGZpbGUiOyByZXR1cm47IH0KKyAgbG9jYWwgZHVyPSQoKCBEVVJBVElPTiArIDUgKSkKKyAg KAorICAgIGxvY2FsIG1heF9jcHU9MAorICAgIGxvY2FsIG1heF9yc3M9MAorICAgIGxvY2Fs IHQwPSQoZGF0ZSArJXMpCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgQ2hpbGRyZW4gb2Yg dGhlIGxlYWRlciArIHRoZSBsZWFkZXIgaXRzZWxmLgorICAgICAgbG9jYWwgcGlkcworICAg ICAgcGlkcz0kKCAocGdyZXAgLVAgIiRsZWFkZXIiIDI+L2Rldi9udWxsOyBlY2hvICIkbGVh ZGVyIikgfCB0ciAnXG4nICcgJykKKyAgICAgIGxvY2FsIHNhbXBsZQorICAgICAgc2FtcGxl PSQocHMgLW8gcGNwdT0scnNzPSAtcCAkcGlkcyAyPi9kZXYvbnVsbCB8IFwKKyAgICAgICAg ICAgICAgIGF3ayAne2NwdSs9JDE7IHJzcys9JDJ9IEVORHtwcmludGYgIiUuMWYgJWRcbiIs IGNwdSswLCByc3MrMH0nKQorICAgICAgbG9jYWwgYyByCisgICAgICByZWFkIC1yIGMgciA8 PDwiJHNhbXBsZSIKKyAgICAgIGlmIFsgLW4gIiR7YzotfSIgXSAmJiBbIC1uICIke3I6LX0i IF07IHRoZW4KKyAgICAgICAgYXdrIC12IG09IiRtYXhfY3B1IiAtdiBjPSIkYyIgJ0JFR0lO e2V4aXQgIShjPm0pfScgJiYgbWF4X2NwdT0kYworICAgICAgICBbICIkciIgLWd0ICIkbWF4 X3JzcyIgXSAyPi9kZXYvbnVsbCAmJiBtYXhfcnNzPSRyCisgICAgICBmaQorICAgICAgbG9j YWwgbm93PSQoZGF0ZSArJXMpCisgICAgICBbICQoKG5vdyAtIHQwKSkgLWdlICIkZHVyIiBd ICYmIGJyZWFrCisgICAgICBzbGVlcCAxCisgICAgZG9uZQorICAgIGxvY2FsIHJzc19taWI9 JCgoIG1heF9yc3MgLyAxMDI0ICkpCisgICAgZWNobyAiJG1heF9jcHUsJHJzc19taWIiID4g IiRvdXRmaWxlIgorICApICYKKyAgZWNobyAkIQorfQorCitydW5fb25lKCkgeworICBsb2Nh bCB2PSQxIHdvcmtsb2FkPSQyIHNjcmlwdD0kMyB0YWJsZT0kezQ6LXNpdV90YWJsZX0gZXh0 cmFfc2V0PSR7NTotfQorCisgIGxvY2FsIHdhbF9zdGFydCB3YWxfZW5kIGhvdF9zdGFydCBo b3RfZW5kIHRvdGFsX3N0YXJ0IHRvdGFsX2VuZCB0cHMgbGF0CisgIGxvY2FsIHNpdV9zdGFy dCBzaXVfZW5kCisgIGxvY2FsIGJsb2F0X2JlZm9yZSBibG9hdF9hZnRlciBpZHhfYmVmb3Jl IGlkeF9hZnRlcgorICBsb2NhbCBwZXJfaWR4X2JlZm9yZSBwZXJfaWR4X2FmdGVyCisgIHJl YWQgLXIgYmxvYXRfYmVmb3JlIGlkeF9iZWZvcmUgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9iZWZvcmU9JChwZXJfaW5kZXhfc2l6 ZXMgIiR2IiAiJHRhYmxlIikKKworICB3YWxfc3RhcnQ9JChwc3FsX2FzICIkdiIgLUF0YyAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X3N0YXJ0PSQocHNx bF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00g cGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKyAgc2l1X3N0 YXJ0PSQoc2l1X2NvdW50ICIkdiIgIiR0YWJsZSIpCisgIHRvdGFsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0 X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIG91dD0i JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LmxvZyIKKyAgbG9jYWwgY3B1X3Jzc19maWxlPSRM T0dESVIvJHt2fV8ke3dvcmtsb2FkfS5jcHUKKyAgbG9jYWwgc2FtcGxlcl9waWQKKyAgc2Ft cGxlcl9waWQ9JChzYW1wbGVfcGVhayAiJGNwdV9yc3NfZmlsZSIgIiR2IikKKworICBzZXQg K2UKKyAgY2FzZSAiJHdvcmtsb2FkIiBpbgorICAgIHNpbXBsZV91cGRhdGUpCisgICAgICBw Z2JlbmNoX2FzICIkdiIgLU4gLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVS QVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7Owor ICAgIHdpZGVfKikKKyAgICAgICMgYnVpbGQgdGhlIFNFVCBjbGF1c2UgZnJvbSBleHRyYV9z ZXQgd2hpY2ggaXMgImMxPTp2LGMyPTp2LC4uLiIKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAt ZiA8KHNlZCAicy86d2lkZV9zZXRfY2xhdXNlLyRleHRyYV9zZXQvIiAiJHNjcmlwdCIpIFwK KyAgICAgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwK KyAgICAgICAgLUQgInNjYWxlPSRTQ0FMRSIgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisg ICAgICA7OworICAgIHJlYWRfaW5kZXhzY2FuKQorICAgICAgIyByZWFkLW9ubHk7IHBhc3Mg dGhlIHJvdyBjb3VudCBzbyB0aGUgc2NyaXB0IGNhbiBwaWNrIHJhbmRvbSBrZXlzCisgICAg ICBwZ2JlbmNoX2FzICIkdiIgLWYgIiRzY3JpcHQiIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJyb3dzPSQoKFNDQUxFICogMTAw MDAwKSkiIC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICAqKQorICAg ICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhS RUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+ JjEKKyAgICAgIDs7CisgIGVzYWMKKyAgc2V0IC1lCisKKyAgd2FpdCAiJHNhbXBsZXJfcGlk IiAyPi9kZXYvbnVsbCB8fCB0cnVlCisgIGxvY2FsIGNwdV9yc3MKKyAgY3B1X3Jzcz0kKGNh dCAiJGNwdV9yc3NfZmlsZSIgMj4vZGV2L251bGwgfHwgZWNobyAiTkEsTkEiKQorCisgIHRw cz0kKGF3ayAnL3RwcyA9IC97cHJpbnQgJDM7IGV4aXR9JyAiJG91dCIpCisgIGxhdD0kKGF3 ayAnL2xhdGVuY3kgYXZlcmFnZSA9IC97cHJpbnQgJDQ7IGV4aXR9JyAiJG91dCIpCisgIHRw cz0ke3RwczotTkF9CisgIGxhdD0ke2xhdDotTkF9CisKKyAgd2FsX2VuZD0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICBob3Rf ZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikK KyAgc2l1X2VuZD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9lbmQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX3VwZCwwKSBGUk9NIHBn X3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisKKyAgbG9jYWwg d2FsX2J5dGVzCisgIHdhbF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdf d2FsX2xzbl9kaWZmKCckd2FsX2VuZCc6OnBnX2xzbiwgJyR3YWxfc3RhcnQnOjpwZ19sc24p OjpiaWdpbnQiKQorCisgICMgQ2FwdHVyZSBhIFdBTCByZWNvcmQtdHlwZSBoaXN0b2dyYW0g Zm9yIHRoaXMgd29ya2xvYWQuICBwZ193YWxkdW1wJ3MKKyAgIyAtLXN0YXRzPXJlY29yZCBv dXRwdXQgaXMgcmljaCAofjYwIGxpbmVzKSBzbyBzdGFzaCBpdCBpbiBMT0dESVIKKyAgIyBy YXRoZXIgdGhhbiB0cnlpbmcgdG8gZm9sZCBpbnRvIHRoZSBDU1YuICBUb2xlcmF0ZSBmYWls dXJlczogaWYgdGhlCisgICMgc2VnbWVudCBjb250YWluaW5nIHdhbF9zdGFydCBoYXMgYmVl biByZWN5Y2xlZCAocmFyZSB3aXRoCisgICMgbWF4X3dhbF9zaXplPTRHQiBidXQgcG9zc2li bGUgdW5kZXIgbG9uZyBjaGFpbmVkIHJ1bnMpLCB3ZSBlbWl0IGEKKyAgIyBub3RlIGFuZCBt b3ZlIG9uIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlIHdob2xlIHJ1bi4KKyAgbG9jYWwgd2Fs X3N0YXRzX2ZpbGU9JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LndhbHN0YXRzCisgIExEX0xJ QlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX3dhbGR1bXAi IFwKKyAgICAtLXN0YXRzPXJlY29yZCAtcCAiJEJFTkNIL19kYXRhXyR2L3BnX3dhbCIgXAor ICAgIC0tc3RhcnQ9IiR3YWxfc3RhcnQiIC0tZW5kPSIkd2FsX2VuZCIgXAorICAgID4gIiR3 YWxfc3RhdHNfZmlsZSIgMj4gIiR7d2FsX3N0YXRzX2ZpbGV9LmVyciIgXAorICAgIHx8IGVj aG8gInBnX3dhbGR1bXAgdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U7IHNlZSAke3dhbF9z dGF0c19maWxlfS5lcnIiID4gIiR3YWxfc3RhdHNfZmlsZSIKKworICByZWFkIC1yIGJsb2F0 X2FmdGVyIGlkeF9hZnRlciA8PDwiJChibG9hdF9zdGF0cyAiJHYiICIkdGFibGUiIHwgdHIg LCAnICcpIgorICBwZXJfaWR4X2FmdGVyPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJs ZSIpCisKKyAgbG9jYWwgaG90PSQoKGhvdF9lbmQgLSBob3Rfc3RhcnQpKQorICBsb2NhbCBz aXU9JCgoc2l1X2VuZCAtIHNpdV9zdGFydCkpCisgIGxvY2FsIHRvdD0kKCh0b3RhbF9lbmQg LSB0b3RhbF9zdGFydCkpCisgIGxvY2FsIGNsYXNzaWNfaG90PSQoKGhvdCAtIHNpdSkpCisg IGxvY2FsIG5vbl9ob3Q9JCgodG90IC0gaG90KSkKKworICBwcmludGYgJyVzLCVzLCVzLCVz LCVkLCVkLCVkLCVkLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiIFwKKyAgICAiJHdhbF9ieXRlcyIgXAorICAgICIkYmxvYXRfYmVmb3JlIiAi JGJsb2F0X2FmdGVyIiBcCisgICAgIiRpZHhfYmVmb3JlIiAiJGlkeF9hZnRlciIgXAorICAg ICIkY3B1X3JzcyIgIiRwZXJfaWR4X2JlZm9yZSIgIiRwZXJfaWR4X2FmdGVyIiA+PiAiJE9V VCIKKyAgcHJpbnRmICcgICUtOHMgJS0xNHMgdHBzPSUxMHMgbGF0PSU2cyBjbGFzc2ljX2hv dD0lN2QgaGk9JTdkIG5vbl9ob3Q9JTdkIHRvdD0lLTdkIHdhbD0lMTJzIGJsb2F0PSVzLT4l cyBpZHg9JXMtPiVzIGNwdV9yc3M9JXNcbicgXAorICAgICIkdiIgIiR3b3JrbG9hZCIgIiR0 cHMiICIkbGF0IiAiJGNsYXNzaWNfaG90IiAiJHNpdSIgIiRub25faG90IiAiJHRvdCIgIiR3 YWxfYnl0ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgIiRpZHhf YmVmb3JlIiAiJGlkeF9hZnRlciIgIiRjcHVfcnNzIgorfQorCitidWlsZF93aWRlX3NldF9j bGF1c2UoKSB7CisgICMgZW1pdCBlLmcuICJjMT06dixjMj06diwuLi4sY049OnYiIGZvciBm aXJzdCBOIGNvbHMuCisgIGxvY2FsIG49JDEKKyAgaWYgWyAiJG4iIC1lcSAwIF07IHRoZW4K KyAgICAjIE5vIGluZGV4ZWQtY29sIHVwZGF0ZTsgdG91Y2ggYSBub24taW5kZXhlZCBjb2x1 bW4gKGlkICUgMSBzbyBpdCdzIGEgbm8tb3ApCisgICAgZWNobyAiaWQ9aWQiCisgICAgcmV0 dXJuCisgIGZpCisgIGxvY2FsIGNsYXVzZXM9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJG4i KTsgZG8KKyAgICBbIC1uICIkY2xhdXNlcyIgXSAmJiBjbGF1c2VzKz0iLCIKKyAgICBjbGF1 c2VzKz0iYyRpPTp2IgorICBkb25lCisgIGVjaG8gIiRjbGF1c2VzIgorfQorCitmb3IgdiBp biBtYXN0ZXIgdGVwaWQ7IGRvCisgIGVjaG8gIi0tLSB2YXJpYW50OiAkdiIKKyAgc3RvcF9w ZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZXR1cF9zY2hlbWFzICIkdiIK KworICBydW5fb25lICIkdiIgc2ltcGxlX3VwZGF0ZSAnJyAgICAgICAgICAgICAgICAgICAg cGdiZW5jaF9hY2NvdW50cworICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5f b25lICIkdiIgaG90X2luZGV4ZWRfdXBkYXRlICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5k ZXhlZF91cGRhdGUuc3FsIiAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3Rh YmxlCisgIHJ1bl9vbmUgIiR2IiBob3RfaW5kZXhlZF9taXhlZCAgICAgIiRCRU5DSC9zY3Jp cHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCIgICBzaXVfdGFibGUKKyAgcmVzZXRfc3RhdGUg IiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIHJlYWRfaW5kZXhzY2FuICAgICAgICAi JEJFTkNIL3NjcmlwdHMvcmVhZF9pbmRleHNjYW4uc3FsIiAgICAgIHNpdV90YWJsZQorCisg IGZvciBuIGluICR7V0lERV9TVEVQUy8vLC8gfTsgZG8KKyAgICByZXNldF9zdGF0ZSAiJHYi IHdpZGVfdGFibGUKKyAgICBydW5fb25lICIkdiIgIndpZGVfJHtufSIgIiRCRU5DSC9zY3Jp cHRzL3dpZGVfdXBkYXRlLnNxbCIgd2lkZV90YWJsZSBcCisgICAgICAgICAgICAiJChidWls ZF93aWRlX3NldF9jbGF1c2UgIiRuIikiCisgIGRvbmUKKworICBzdG9wX3BnICIkdiIKK2Rv bmUKKworZWNobyAiPT09IHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8 IGhlYWQgLTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3NvYWsuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2gKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjZkMTI3ZjFjMDEyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNo CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIHRlcGlkIHNvYWs6 IHJ1biBob3RfaW5kZXhlZF91cGRhdGUgZm9yICREVVJBVElPTiBzZWNvbmRzIG9uIGVhY2gg dmFyaWFudCwgc2FtcGxpbmcKKyMgVFBTIC8gSE9ULXJhdGUgLyBXQUwgdm9sdW1lIC8gdGFi bGUraW5kZXggYmxvYXQgZXZlcnkgJFNBTVBMRSBzZWNvbmRzLgorIyBFbWl0cyBhIENTViB3 aXRoIG9uZSBzYW1wbGUgcm93IHBlciB0aWNrIHBlciB2YXJpYW50Lgorc2V0IC1ldW8gcGlw ZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorU0NBTEU9JHtT Q0FMRTotNTB9CitDTElFTlRTPSR7Q0xJRU5UUzotMTZ9CitUSFJFQURTPSR7VEhSRUFEUzot OH0KK0RVUkFUSU9OPSR7RFVSQVRJT046LTkwMH0gICAgICMgMTUgbWludXRlcworU0FNUExF PSR7U0FNUExFOi02MH0gICAgICAgICAgIyBldmVyeSA2MCBzCitQT1JUPSR7UE9SVDotNTc1 MDN9CitTSEFSRURfQlVGRkVSUz0ke1NIQVJFRF9CVUZGRVJTOi0yR0J9CisKK1RTPSQoZGF0 ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvc29ha18kVFMuY3N2 CitMT0dESVI9JEJFTkNIL2xvZ3Mvc29ha18kVFMKK21rZGlyIC1wICIkTE9HRElSIgorZWNo byAidmFyaWFudCx0X3NlY3MsdHBzX2luc3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFn ZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVzX3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRP VVQiCitlY2hvICI9PT0gc29hayAkVFMgLT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAi JEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBi PSRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8g IiRiL2xpYjY0IiB8fCBlY2hvICIkYi9saWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9 JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAi JHYiKS9wc3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQor cGdiZW5jaF9hcygpIHsgbG9jYWwgdj0kMTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChM RF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JU IiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRh dGFkaXI9JEJFTkNIL19kYXRhXyR2CisgIFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRk YXRhZGlyIiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtk aXIgLXAgIiRkYXRhZGlyIgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIk KGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9H RElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3Fs LmNvbmYiIDw8RU9GCitzaGFyZWRfYnVmZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19t ZW0gPSAzMk1CCittYXhfd2FsX3NpemUgPSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9u CitjaGVja3BvaW50X3RpbWVvdXQgPSAxMG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0 b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVtX25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwCithdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAw LjEKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1w ICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xl ZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFU SD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9f ZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3Nl dHVwKCkgeworICBsb2NhbCB2PSQxIHJvd3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3Fs X2FzICIkdiIgPDxTUUwKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFU RSBUQUJMRSBzaXVfdGFibGUoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBp bnQsIGUgdGV4dCk7CitDUkVBVEUgSU5ERVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JF QVRFIElOREVYIHNpdV9jIE9OIHNpdV90YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBP TiBzaXVfdGFibGUoZCk7CitJTlNFUlQgSU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGks IGksIGksIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykg QVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkgc2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2Fr KCkgeworICBsb2NhbCB2PSQxCisgIGVjaG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9O fXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FNUExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVl CisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9 JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0 IikKKyAgbG9jYWwgaG90MCB0b3QwCisgIGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVz IFdIRVJFIHJlbG5hbWU9J3NpdV90YWJsZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1B dGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2Vy X3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9 JGhvdDAgcHJldl90b3Q9JHRvdDAKKworICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tn cm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdyb3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIk QkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIg LW4gcG9zdGdyZXMgPiIkTE9HRElSL3BnYmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwg cGdiPSQhCisKKyAgbG9jYWwgdD0wCisgIHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIg XTsgZG8KKyAgICBzbGVlcCAiJFNBTVBMRSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAg IGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlk eF9ieXRlcyBuX2RlYWQKKyAgICBub3dfaG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYi IC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91 c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQo cHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIp CisgICAgd2FsX2J5dGVzPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNu X2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNuLCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQor ICAgIGhlYXBfcGFnZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3Np emUoJ3NpdV90YWJsZScpLzgxOTIiKQorICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAt QXRjICJTRUxFQ1QgcGdfaW5kZXhlc19zaXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFk PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKwor ICAgIGxvY2FsIGRfaG90PSQoKG5vd19ob3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90 b3Q9JCgobm93X3RvdCAtIHByZXZfdG90KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0Cisg ICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBdOyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBk PSIkZF90b3QiIC12IHM9IiRTQU1QTEUiICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykK KyAgICAgIGhvdF9wY3Q9JChhd2sgLXYgaD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJ TntwcmludGYgIiUuMWYiLCAxMDAqaC90fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsg aG90X3BjdD0wCisgICAgZmkKKyAgICBwcmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVz XG4nICIkdiIgIiR0IiAiJHRwc19pIiAiJGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhf Ynl0ZXMiICIkd2FsX2J5dGVzIiAiJG5fZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcg ICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEy cyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBcCisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiCisgICAgcHJldl9ob3Q9JG5vd19ob3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBk b25lCisKKyAgd2FpdCAiJHBnYiIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIk diIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitk b25lCisKK2VjaG8gIj09PSBzb2FrIHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIk T1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Njcmlw dHMvd2lkZV91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMmMyZmYxNGFjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lk ZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBzZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdp dGggV0lERV9DT0xTIGludGVnZXIKKy0tIGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJl ZS1pbmRleGVkLiAgVGhlIHdvcmtsb2FkIFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51 bWJlciBvZiB0aG9zZSBpbmRleGVkIGNvbHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoV0lE RV9VUERDT0xTIGVudiB2YXIpIG9uIGEgcmFuZG9tIHJvdy4KK1xzZXQgcmlkIHJhbmRvbSgx LCA6c2NhbGUgKiAxMDAwKQorXHNldCB2IHJhbmRvbSgxLCAxMDAwMDAwMDAwKQorVVBEQVRF IHdpZGVfdGFibGUgU0VUIDp3aWRlX3NldF9jbGF1c2UgV0hFUkUgaWQgPSA6cmlkOwotLSAK Mi41MC4xCgo= --f813cfcf58bb71b174850efc07610ae5296bf168--