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 1wjhK7-000FEY-33 for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jul 2026 17:53:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wjhK3-004LOW-1S for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Jul 2026 17:53:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wjhK2-004LON-0v for pgsql-hackers@lists.postgresql.org; Tue, 14 Jul 2026 17:53:36 +0000 Received: from fhigh-a3-smtp.messagingengine.com ([103.168.172.154]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wjhJx-00000000DcF-3AUr for pgsql-hackers@lists.postgresql.org; Tue, 14 Jul 2026 17:53:34 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.phl.internal (Postfix) with ESMTP id 181B21400137; Tue, 14 Jul 2026 13:53:27 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Tue, 14 Jul 2026 13:53:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1784051607; x=1784138007; bh=GC3tgoALqU b4bYeUmux1oYxsr5DNrGyaOq1H9ejTBGM=; b=R5fjL4KuicM/N28xpdkqXn2ITM 3U+hWaSLg4g0VwfdPR7JWiGURQOqORAn7RvMsXfVaxotgtcS3QA1L6PTxnLlIPVr PCOGGOnPrTBzN5QX8XdI3yuP8+7GRt6pGTlnGSC9TDWmyNaX8zLRUEV7UQPWq0jX +plvo4H9kkSQrPTlYKLbzmGsXXnwrzACFAOJ/MbOwLGYvwLSrdlY1nrGB8uzAhkX ipdmzpjjQO4OKpfm2Q5/Razfs0P4ctn5D5xVh6OHV5nalhTl2Mz/9tn+HuzmW6Xu XTR0ELuqtfDwVPsCLZiNvrIQLUSGzt3PUBzL4fAjayh/m0DzgKWnliEnNNew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1784051607; x=1784138007; bh=GC3tgoALqUb4bYeUmux1oYxsr5DNrGyaOq1 H9ejTBGM=; b=qjMQIH7Hl00k2WF0+aDDou/LsWtdzSvr75mJnzrCRgHEgYTt8D1 HtXb2OTfBmELhhjcaToztZck65pppRj7QKyR0ci1+Jzt6258om5soTl95oeGm5tl A5HCZilegb0WkiSJqMz7kyXQwr3V4w/QIY53pZgMh32IcgfDzwS8rOlB/R7g2IeC ERdFQFnrSz8hFFebSH1ZPMF2gdR7+/uL6f7EiNYJwC3MFo8Aq0Lh8FsjVXfIDIAc FGpBZx8jDN3h1Dt6EBJsFvEVUzEewh5EAV0bD8xvScuHe1KBYQCCJVp1tiVdAYXK dA7l3RECTFMwEhLBDvo0aWlRtK7ACd1lDMQ== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTE8RBSlvtqF188ghu68FGkY78+StBEVJYZYN8dHemnq9+lyS7+1LM6ozeCXlMFdH1 pS/ERN3xwRmUONPOGqh3J/8/sBWVlnOgpRiPD+s5jDpwY0I7wlR+eZI4c0R+Y/a1VYS95Y VXi26t6BaGRsdszw3yQNBpnKtAUR0I/Ln9ppxn5MnK/cSyf2hcSYlcwakMUPeSweo/8Mjj Qk34+rDyLeyFCTA5FO/U2+jx3n1f8Gf8b0kF+0BgQ8xnPnKJFgIsS82f1AhOg2nvB5DM7n QPrkXUyyqKsUOvA0RLJj4xobhyad82cksZUbDr0dQIJFIRlyf+saTV7evAbFFgSM/MZ7Kn L8n1XQd/B5gyhlm0rwZ8r1U67AgIDtnDnYzDuysVn1UPaIi4hoQ1bASoJ7dC5PJ/WjhfgX N2gITuZ59QgwWjoxepkZyzwDFcCYVbNEGMupWTjvYJkrUgR7dpC6ElWugEigizDLt0oI3e SU7UzGjevLNJxDsR7HelMp/gwqIw7B6NHGUSqwqgQtJprugOJMoJBmD2i7OIA1zACBzMUI N97xKs2fMOt8nbcP93Nl1lqaDwmmSCDSuFzr57G+vQ9WPGOpYjHlzcmHvZTD46d9jTS6Lt 6LB+8VN99AoaXlRoRo4x1x4CXd5gTkQPvoeJCMV8I4kQSerFVPGsZqnT3IVQ X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 9676D700069; Tue, 14 Jul 2026 13:53:26 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: A5esK-b6BnZB Date: Tue, 14 Jul 2026 13:53:06 -0400 From: "Greg Burd" To: "PostgreSQL Hackers" Cc: "Tomas Vondra" , "Nathan Bossart" , "Andres Freund" Message-Id: <96dc1db7-58a2-41ba-ae2e-bea86fa2fb3a@app.fastmail.com> In-Reply-To: <9cfdf3f2-b799-485a-8b5a-5159c00ff2df@app.fastmail.com> References: <79629577-3ad8-4b1c-a469-ebc2cb4c5104@app.fastmail.com> <618241c3-a1e5-4a16-be12-17a361822ee0@app.fastmail.com> <5bcaa70b-89c7-44b6-b197-638d10997cae@app.fastmail.com> <76c33898-3baa-4f7b-8b72-57dd390fcffe@app.fastmail.com> <9cfdf3f2-b799-485a-8b5a-5159c00ff2df@app.fastmail.com> Subject: Re: [PATCH] Batched clock sweep to reduce cross-socket atomic contention Content-Type: multipart/mixed; boundary=a57bc87414e283fe5b1ad8beabf032b6dad8c957 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --a57bc87414e283fe5b1ad8beabf032b6dad8c957 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, v6 is attached, rebased on master (d7cd5d6). 0001 Batch the clock sweep to reduce nextVictimBuffer atomic contention 0002 Replace the usage_count clock sweep with a cooling-stage evictor 0003 Remove BufferAccessStrategy; scan resistance is now intrinsic Two kinds of change since v5: three correctness fixes, and one bgwriter tweak (folded into 0002) that deals with a regression I found while chasing down whether removing StrategyRejectBuffer would hurt. Most of this mail is that second thing, with numbers, because it is the part I most want picked apart. The three fixes first, briefly: stats.out was a real bug. Once the rings are gone in 0003, pg_stat_io's "reuses" column is NULL for every row, so the reset test's sum(reuses) came back NULL, the \gset made an empty variable, and the next line died with "syntax error at or near ':'". I dropped the now-meaningless reuses term from the reset-test sums and regenerated the expected output. force_cool now honours the reference bit. When the sweep has found no COOL victim in a full pass and starts demoting HOT buffers, it applies the same single second-chance ref-bit rule the bgwriter uses instead of demoting unconditionally, so a buffer touched mid-pass isn't demoted a tick later. And completePasses now counts an intra-batch wrap: with 0001's batched claim a batch can straddle the NBuffers wrap, and that wasn't being reflected, so the bgwriter's pass accounting could drift by up to a batch. Let's talk regression... The buffer cache ring strategy didn't only bound cache pollution, it also deferred writeback. A backend running a big COPY, bulk UPDATE or VACUUM reused a small ring and, via StrategyRejectBuffer, pushed dirty victims back for the bgwriter and checkpointer to write instead of writing (and WAL-flushing) them inline on its own allocation path. Pull the rings (as in 0003) and, done naively, that deferral goes too. I wrote a small benchmark to see how much that costs. It's on an AWS m6id.metal (Sapphire Rapids, 128 vCPU, 512 GB), with the data and WAL on the instance-local NVMe (mdraid-0), not EBS. Both builds are meson debugoptimized, cassert off, libnuma on; stock is master at d15a6bc2e16, patched is the series on the same base. Server pinned with "numactl --cpunodebind=0 --interleave=all", non-default GUCs, same for both: shared_buffers = 8GB # small enough that a bulk op spills huge_pages = try maintenance_work_mem = 1GB max_wal_size = 64GB min_wal_size = 8GB checkpoint_timeout = 30min checkpoint_completion_target = 0.9 wal_level = replica fsync = on synchronous_commit = on track_io_timing = on The table is ~4GB (20M rows, 180-byte payload, fillfactor 90), half of shared_buffers, so a whole-table dirtying op has to evict dirty victims. Each of the three statements runs on its own fresh cluster, three times, median reported; IO stats are reset right before each timed statement so the write count is per-statement, not cumulative: CREATE TABLE bulk (id int, pad text) WITH (fillfactor=90); INSERT INTO bulk SELECT g, repeat('x',180) FROM generate_series(1,2e7) g; VACUUM (FREEZE) bulk; CHECKPOINT; -- (1) UPDATE, dirties every page UPDATE bulk SET id = id + 1; -- (2) bulk INSERT into an empty table CREATE TABLE ins (id int, pad text); INSERT INTO ins SELECT g, repeat('y',180) FROM generate_series(1,2e7) g; -- (3) VACUUM after dirtying half the pages UPDATE bulk SET pad = repeat('z',180) WHERE id % 2 = 0; CHECKPOINT; VACUUM bulk; One caveat up front: (2) is INSERT...SELECT, not the COPY command. It hits the same relation-extend + WAL-logged-write path BAS_BULKWRITE served, which is what I wanted to stress, but if that distinction matters to anyone's conclusion I'll re-run with COPY FROM. For each statement I record time_s (wall seconds), bwrites (buffers the backend wrote itself -- sum(writes) from pg_stat_io where object='relation' after a forced flush, i.e. the writes the rings used to hand off), and wal_gb (LSN delta, just a check the two builds did the same work). Full series, Option B included: workload metric stock patched impact of patches ------------ --------- ---------- ---------- ------------------ bulk UPDATE time_s 26.0 27.3 5% slower bwrites 90754 158165 74% more wal_gb 5.83 5.90 +1% bulk INSERT time_s 14.2 15.6 10% slower bwrites 0 0 none; extend path wal_gb 5.00 5.11 +2% VACUUM time_s 11.4 9.3 19% faster bwrites 996255 390945 61% fewer wal_gb 6.80 6.77 -1% Per-run time_s so you can see the spread (stock / patched): UPDATE 29.0 25.9 26.0 / 29.4 27.2 27.3 INSERT 15.1 14.2 13.4 / 15.5 15.6 15.7 VACUUM 11.5 11.4 11.4 / 9.2 9.3 9.4 The 5% and 10% are only a couple of run-to-run wobbles apart, but the direction is steady across runs; the VACUUM win and the bwrites jump are well clear of the noise. That +74% bwrites on UPDATE is the crux: the backend is doing the writeback the rings used to defer. Before I added the bgwriter tweak it was worse -- 8% slower, 77% more writes -- and VACUUM was only 8% faster rather than 19%. Two things I tried. First, having the sweep prefer a clean COOL victim and skip dirty ones (bounded, so it can't turn into a full-pool rescan). That made UPDATE *slower still*, 14% over stock, because under bulk dirtying the clean victims simply aren't there and the skipping is wasted work. I threw that out. What stuck instead was letting the bgwriter keep up. Its per-cycle clean-write cap is bgwriter_lru_maxpages, default 100; under bulk dirtying the pool fills with dirty COOL buffers faster than 100/cycle can clean, the bgwriter stalls at the cap, and the backend is left flushing victims itself. So when the bgwriter's own predicted demand for the next cycle already exceeds the cap, I let the cap follow demand: write_limit = bgwriter_lru_maxpages; if (upcoming_alloc_est > write_limit) write_limit = upcoming_alloc_est; It's still bounded -- by demand and by lapping the strategy point -- so it can't run away, and anything whose demand sits below the cap (i.e. everything that isn't bulk-dirtying) is untouched. A small change in BgBufferSync, folded into 0002 in v6. That halves the UPDATE slowdown and flips VACUUM into a clear win, but it doesn't erase the residual, so I ran one more comparison to see where the residual actually lives: patches 0001+0002 (rings still in place, 0003 not applied). Same instance type, same three runs: workload metric stock 0001+0002 impact ------------ --------- ---------- ---------- ------------------ bulk UPDATE time_s 25.8 25.4 1% faster bwrites 90797 122416 35% more bulk INSERT time_s 14.0 15.2 8% slower bwrites 0 ~0 extend path VACUUM time_s 11.5 9.7 15% faster bwrites 986865 500190 49% fewer So with the rings still doing their deferral, the new evictor on its own is a touch faster on UPDATE and already a solid win on VACUUM. The 5% UPDATE slowdown in the full series is therefore the price of removing the rings (0003) specifically -- not the evictor -- and now I can say that against a rings-kept baseline rather than just asserting it. The bgwriter tweak moves those writes off the critical path (why the time recovers to 5%) but doesn't reduce their number; some of that is just the cost of not having a private ring to write-behind from. Bulk INSERT is the more interesting one, because it's 8% slower even with the rings kept -- so it's not about ring removal at all, it's something in 0001+0002 on the extend/write path (the pages are extended, not evicted: bwrites is ~0, and it's WAL-bound at +2%). 0003 adds only the last two points. I haven't fully root-caused it; my guess is lost write coalescing on the extend path that BULKWRITE gave for free. It's small and contained, and since it shows up without 0003 I expect it's fixable without bringing the strategy machinery back. I'd rather understand it than wave at it, so I'll follow up on that specifically. The harness is just three psql scripts and the pg_stat_io / pg_stat_wal deltas above; happy to post them if anyone wants to reproduce. One loose end: 0003 drops the vacuum_buffer_usage_limit GUC, which only ever sized the BAS_VACUUM ring. With no ring to size it does nothing, so I removed it. So the questions I'd most like opinions on: Is a 5%-slower bulk UPDATE (the cost of retiring the rings) and an 8-10% slower bulk INSERT (an extend-path effect independent of 0003) an acceptable price for making scan resistance an algorithm property and dropping the rings? Or would you rather the rings stayed and 0002 rode alongside them -- which the isolation run shows is a real option, since 0001+0002 with the rings kept is neutral-to-better on the eviction-bound workloads? My hope was to offer both a better/simpler algorithm for clock-sweep as well as remove a lot of code. Separately: is admitting demand-loaded pages COOL (probationary, promoted on the second touch) an acceptable basis for scan resistance in core at all? Where is my in-cache testing flattering the sweep, and what would you want measured instead? And is reinterpreting the usage_count field as {HOT/COOL, ref} bits, plus collapsing pg_stat_io's contexts, something you'd accept, or is there a representation you'd want to see first? This idea started with the question of, "I wonder if we really need a 5 count on each buffer in the clock-sweep eviction path or if that is simply overhead and carries no signal at all for eviction or information useful to the bgwriter?" FWIW, I feel that the COOL/HOT clock is simplier and that tests show it is better than the 0..5 clock. I'm not thrilled by *any* regression, especially not one that induces more WAL traffic, so I'm open to thoughts on this. That's all for now. -greg --a57bc87414e283fe5b1ad8beabf032b6dad8c957 Content-Disposition: attachment; filename*0="v6-0001-Batch-the-clock-sweep-to-reduce-nextVictimBuffer-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v6-0001-Batch-the-clock-sweep-to-reduce-nextVictimBuffer-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwZDg0OTJhNmI1OWZkMGFjZmMyZWJjNzVlYmZiZDhlODg0MmVlM2FjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCA2IEp1bCAyMDI2IDE3OjI1OjAwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NiAxLzNd IEJhdGNoIHRoZSBjbG9jayBzd2VlcCB0byByZWR1Y2UgbmV4dFZpY3RpbUJ1ZmZlcgogYXRv bWljIGNvbnRlbnRpb24KClN0cmF0ZWd5R2V0QnVmZmVyKCkgYWR2YW5jZXMgdGhlIHNoYXJl ZCBjbG9jayBoYW5kLCBuZXh0VmljdGltQnVmZmVyLCB3aXRoIGEKcGdfYXRvbWljX2ZldGNo X2FkZF91MzIoLi4uLCAxKSBvbiBldmVyeSB0aWNrLiAgT24gYSBtdWx0aS1zb2NrZXQgc3lz dGVtIHRoZQpjYWNoZSBsaW5lIGhvbGRpbmcgdGhhdCBjb3VudGVyIGhhcyB0byB0cmF2ZWwg b3ZlciB0aGUgaW50ZXJjb25uZWN0IG9uIGVhY2gKb3BlcmF0aW9uLCBwdXNoaW5nIGEgc3dl ZXAgdGljayBmcm9tIH4yMG5zIChzYW1lLXNvY2tldCwgbGluZSB3YXJtIGluIEwxL0wyKQpp bnRvIHRoZSB+MTAwLTIwMG5zIHJhbmdlLiAgVW5kZXIgZXZpY3Rpb24gcHJlc3N1cmUgd2l0 aCBodW5kcmVkcyBvZiBiYWNrZW5kcwppbiBTdHJhdGVneUdldEJ1ZmZlcigpIGNvbmN1cnJl bnRseSwgdGhhdCBzaW5nbGUgY2FjaGUgbGluZSBiZWNvbWVzIHRoZQpkb21pbmFudCBjb3N0 IG9mIHRoZSBzd2VlcCwgdmlzaWJsZSBhcyBlbGV2YXRlZCBidXMtY3ljbGVzIGFuZCBjYWNo ZS1taXNzZXMgaW4KYSBwZXJmIHByb2ZpbGUuCgpIYXZlIGVhY2ggYmFja2VuZCBjbGFpbSBh IHJ1biBvZiBjb25zZWN1dGl2ZSBidWZmZXIgSURzIGZyb20gdGhlIHNoYXJlZCBoYW5kCndp dGggYSBzaW5nbGUgZmV0Y2gtYWRkIGFuZCB0aGVuIGl0ZXJhdGUgdGhyb3VnaCB0aGVtIHBy aXZhdGVseS4gIFRoZSBzd2VlcApzdGlsbCBhZHZhbmNlcyB0aHJvdWdoIHRoZSBwb29sIGlu IG9yZGVyLCBlYWNoIGJ1ZmZlciBpcyBzdGlsbCB2aXNpdGVkIGV4YWN0bHkKb25jZSBwZXIg Y29tcGxldGUgcGFzcywgYW5kIHRoZSBtZWFuaW5nIG9mIHRoZSBjbG9jayBzdGF0ZSBpcyB1 bmNoYW5nZWQ7IG9ubHkKdGhlIHRlbXBvcmFsIG9yZGVyaW5nIG9mIHZpc2l0cyB3aXRoaW4g YSBwYXNzIGNoYW5nZXMsIHdoaWNoIHRoZSBhbGdvcml0aG0KZG9lcyBub3QgZGVwZW5kIG9u LiAgVGhlIGNvbnRlbmRlZCBhdG9taWMgbm93IGZpcmVzIHJvdWdobHkgb25jZSBwZXIgYmF0 Y2gKcmF0aGVyIHRoYW4gb25jZSBwZXIgYnVmZmVyLgoKVGhlIGJhdGNoIGlzIG9uZSBjYWNo ZSBsaW5lJ3Mgd29ydGggb2YgY2xvY2staGFuZCB2YWx1ZXMgLS0KUEdfQ0FDSEVfTElORV9T SVpFIC8gc2l6ZW9mKHVpbnQzMikgLS0gY2FwcGVkIGF0IE5CdWZmZXJzIHNvIGEgY2xhaW0g Y2FuIG5ldmVyCndyYXAgdGhlIHBvb2wgbW9yZSB0aGFuIG9uY2UuICBCYXRjaGluZyBvbmx5 IGhlbHBzIHdoZW4gdGhlIGNvdW50ZXIncyBjYWNoZQpsaW5lIGFjdHVhbGx5IGJvdW5jZXMg YmV0d2VlbiBzb2NrZXRzLCBzbyBpdCBpcyBlbmFibGVkIG9ubHkgb24gbXVsdGktbm9kZQpO VU1BIGhhcmR3YXJlIChwZ19udW1hX2dldF9tYXhfbm9kZSgpID49IDEpOyBvbiBhIHNpbmds ZSBzb2NrZXQsIG9yIHdoZXJlCmxpYm51bWEgaXMgdW5hdmFpbGFibGUsIHRoZSBiYXRjaCBz aXplIHN0YXlzIDEgYW5kIHRoZSBjb2RlIHBhdGggaXMKYnl0ZS1pZGVudGljYWwgdG8gdGhl IHN0b2NrIGNsb2NrIHN3ZWVwLgoKV3JhcGFyb3VuZCBoYW5kbGluZyBpcyBhZGp1c3RlZDog d2l0aCBiYXRjaGluZywgc2V2ZXJhbCBiYWNrZW5kcyBjYW4gZWFjaCBzZWUKYSBmZXRjaC1h ZGQgcmV0dXJuIGEgdmFsdWUgcGFzdCBOQnVmZmVycyB3aXRoaW4gdGhlIHNhbWUgcGFzcy4g IEFueSBzdWNoCmJhY2tlbmQgdGFrZXMgYnVmZmVyX3N0cmF0ZWd5X2xvY2ssIHJlLXJlYWRz IHRoZSBjb3VudGVyLCBhbmQgaWYgaXQgaXMgc3RpbGwKb3V0IG9mIHJhbmdlIHdyYXBzIGl0 IHdpdGggYSBzaW5nbGUgQ0FTIGFuZCBpbmNyZW1lbnRzIGNvbXBsZXRlUGFzc2VzLgpTdHJh dGVneVN5bmNTdGFydCgpIGNvbnRpbnVlcyB0byBzZWUgYSBjb25zaXN0ZW50IChuZXh0Vmlj dGltQnVmZmVyLApjb21wbGV0ZVBhc3NlcykgcGFpci4KClRoaXMgaXMgdGhlIGJhdGNoZWQt Y2xvY2stc3dlZXAgaWRlYSBmcm9tIEppbSBNbG9kZ2Vuc2tpJ3MgcGdzcWwtaGFja2Vycwp0 aHJlYWQsIGFkYXB0ZWQgdG8gZGVyaXZlIHRoZSBiYXRjaCBzaXplIGZyb20gdGhlIHBsYXRm b3JtIGNhY2hlLWxpbmUgc2l6ZS4KCkNvLWF1dGhvcmVkLWJ5OiBKaW0gTWxvZGdlbnNraSA8 bWxvZGpAYW1hem9uLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVl bGlzdC5jIHwgMTUyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTA5IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IGZkYjViYWQ3OTEwLi40NjEwNGIzMzQxZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0yMiw2ICsyMiw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgorI2luY2x1ZGUgInBvcnQv cGdfbnVtYS5oIgogCiAjZGVmaW5lIElOVF9BQ0NFU1NfT05DRSh2YXIpCSgoaW50KSgqKCh2 b2xhdGlsZSBpbnQgKikmKHZhcikpKSkKIApAQCAtMTAwLDY4ICsxMDEsMTEwIEBAIHN0YXRp YyBCdWZmZXJEZXNjICpHZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwKIHN0YXRpYyB2b2lkIEFkZEJ1ZmZlclRvUmluZyhCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwKIAkJCQkJCQlCdWZmZXJEZXNjICpidWYpOwogCisvKgorICogUGVy LWJhY2tlbmQgc3RhdGUgZm9yIHRoZSBiYXRjaGVkIGNsb2NrIHN3ZWVwLiAgRWFjaCBiYWNr ZW5kIGNsYWltcyBhIHJ1bgorICogb2YgY29uc2VjdXRpdmUgY2xvY2staGFuZCB2YWx1ZXMg d2l0aCBhIHNpbmdsZSBhdG9taWMgZmV0Y2gtYWRkIGFuZCB0aGVuCisgKiBpdGVyYXRlcyB0 aHJvdWdoIHRoZW0gcHJpdmF0ZWx5LCBzbyB0aGUgY29udGVuZGVkIG5leHRWaWN0aW1CdWZm ZXIgY2FjaGUKKyAqIGxpbmUgaXMgdG91Y2hlZCByb3VnaGx5IDEvYmF0Y2ggYXMgb2Z0ZW4u ICBNeUJhdGNoUG9zIGlzIHRoZSBuZXh0IGhhbmQKKyAqIHZhbHVlIHRvIGhhbmQgb3V0OyBN eUJhdGNoRW5kIGlzIG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGNsYWltZWQgcnVuLiAgQm90 aAorICogYXJlIGFic29sdXRlIChtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcpIGhhbmQgdmFs dWVzOyB0aGUgYnVmZmVyIGlkIGlzIHRoZQorICogdmFsdWUgbW9kdWxvIE5CdWZmZXJzLgor ICovCitzdGF0aWMgdWludDMyIE15QmF0Y2hQb3MgPSAwOworc3RhdGljIHVpbnQzMiBNeUJh dGNoRW5kID0gMDsKKworLyoKKyAqIE51bWJlciBvZiBjbG9jay1oYW5kIHZhbHVlcyBhIGJh Y2tlbmQgY2xhaW1zIHBlciBhdG9taWMgZmV0Y2gtYWRkLAorICogY29tcHV0ZWQgb25jZSBh dCBzdGFydHVwIChzZWUgU3RyYXRlZ3lDdGxTaG1lbUluaXQpLiAgV2hlbiBiYXRjaGluZyBp cworICogZW5hYmxlZCBpdCBpcyBvbmUgY2FjaGUgbGluZSdzIHdvcnRoIG9mIGhhbmQgYWR2 YW5jZSwgc28gY29uY3VycmVudAorICogYmFja2VuZHMgc3dlZXAgbm9uLW92ZXJsYXBwaW5n LCBjYWNoZS1saW5lLXNpemVkIHJ1bnMgb2YgdGhlIHBvb2w7IHRoZQorICogZ2xvYmFsIHN3 ZWVwIG9yZGVyIGlzIHByZXNlcnZlZCAoZWFjaCBidWZmZXIgaXMgc3RpbGwgdmlzaXRlZCBl eGFjdGx5IG9uY2UKKyAqIHBlciBwYXNzKS4gIEJhdGNoaW5nIGlzIGVuYWJsZWQgb25seSBv biBtdWx0aS1ub2RlIE5VTUEgaGFyZHdhcmU7IG90aGVyd2lzZQorICogdGhpcyBzdGF5cyAx IGFuZCB0aGUgc3dlZXAgaXMgYnl0ZS1pZGVudGljYWwgdG8gdGhlIHN0b2NrIGNsb2NrLgor ICovCitzdGF0aWMgdWludDMyIENsb2NrU3dlZXBCYXRjaFNpemUgPSAxOworCiAvKgogICog Q2xvY2tTd2VlcFRpY2sgLSBIZWxwZXIgcm91dGluZSBmb3IgU3RyYXRlZ3lHZXRCdWZmZXIo KQogICoKLSAqIE1vdmUgdGhlIGNsb2NrIGhhbmQgb25lIGJ1ZmZlciBhaGVhZCBvZiBpdHMg Y3VycmVudCBwb3NpdGlvbiBhbmQgcmV0dXJuIHRoZQotICogaWQgb2YgdGhlIGJ1ZmZlciBu b3cgdW5kZXIgdGhlIGhhbmQuCisgKiBSZXR1cm4gdGhlIG5leHQgYnVmZmVyIHRvIGNvbnNp ZGVyIGZvciBldmljdGlvbi4gIEJhY2tlbmRzIGNsYWltIGJhdGNoZXMgb2YKKyAqIGNvbnNl Y3V0aXZlIGJ1ZmZlciBJRHMgZnJvbSB0aGUgc2hhcmVkIGNsb2NrIGhhbmQsIHRoZW4gaXRl cmF0ZSB0aHJvdWdoCisgKiB0aGVtIGxvY2FsbHkgd2l0aG91dCBmdXJ0aGVyIGF0b21pYyBv cGVyYXRpb25zLiAgVGhpcyBwcmVzZXJ2ZXMgdGhlIGdsb2JhbAorICogc3dlZXAgb3JkZXIg d2hpbGUgcmVkdWNpbmcgY29udGVudGlvbiBvbiB0aGUgc2hhcmVkIGNvdW50ZXIuCiAgKi8K IHN0YXRpYyBpbmxpbmUgdWludDMyCiBDbG9ja1N3ZWVwVGljayh2b2lkKQogewogCXVpbnQz MgkJdmljdGltOwogCi0JLyoKLQkgKiBBdG9taWNhbGx5IG1vdmUgaGFuZCBhaGVhZCBvbmUg YnVmZmVyIC0gaWYgdGhlcmUncyBzZXZlcmFsIHByb2Nlc3NlcwotCSAqIGRvaW5nIHRoaXMs IHRoaXMgY2FuIGxlYWQgdG8gYnVmZmVycyBiZWluZyByZXR1cm5lZCBzbGlnaHRseSBvdXQg b2YKLQkgKiBhcHBhcmVudCBvcmRlci4KLQkgKi8KLQl2aWN0aW0gPQotCQlwZ19hdG9taWNf ZmV0Y2hfYWRkX3UzMigmU3RyYXRlZ3lDb250cm9sLT5uZXh0VmljdGltQnVmZmVyLCAxKTsK LQotCWlmICh2aWN0aW0gPj0gTkJ1ZmZlcnMpCisJaWYgKE15QmF0Y2hQb3MgPj0gTXlCYXRj aEVuZCkKIAl7Ci0JCXVpbnQzMgkJb3JpZ2luYWxWaWN0aW0gPSB2aWN0aW07Ci0KLQkJLyog YWx3YXlzIHdyYXAgd2hhdCB3ZSBsb29rIHVwIGluIEJ1ZmZlckRlc2NyaXB0b3JzICovCi0J CXZpY3RpbSA9IHZpY3RpbSAlIE5CdWZmZXJzOwotCiAJCS8qCi0JCSAqIElmIHdlJ3JlIHRo ZSBvbmUgdGhhdCBqdXN0IGNhdXNlZCBhIHdyYXBhcm91bmQsIGZvcmNlCi0JCSAqIGNvbXBs ZXRlUGFzc2VzIHRvIGJlIGluY3JlbWVudGVkIHdoaWxlIGhvbGRpbmcgdGhlIHNwaW5sb2Nr LiBXZQotCQkgKiBuZWVkIHRoZSBzcGlubG9jayBzbyBTdHJhdGVneVN5bmNTdGFydCgpIGNh biByZXR1cm4gYSBjb25zaXN0ZW50Ci0JCSAqIHZhbHVlIGNvbnNpc3Rpbmcgb2YgbmV4dFZp Y3RpbUJ1ZmZlciBhbmQgY29tcGxldGVQYXNzZXMuCisJCSAqIENsYWltIGEgZnJlc2ggYmF0 Y2ggZnJvbSB0aGUgc2hhcmVkIGNsb2NrIGhhbmQuICBUaGlzIGlzIHRoZSBvbmx5CisJCSAq IGF0b21pYyBvcGVyYXRpb24gcGVyIGJhdGNoLCByZWR1Y2luZyBjb250ZW50aW9uIGJ5IHRo ZSBiYXRjaCBzaXplLgogCQkgKi8KLQkJaWYgKHZpY3RpbSA9PSAwKQotCQl7Ci0JCQl1aW50 MzIJCWV4cGVjdGVkOwotCQkJdWludDMyCQl3cmFwcGVkOwotCQkJYm9vbAkJc3VjY2VzcyA9 IGZhbHNlOworCQl1aW50MzIJCXN0YXJ0OworCQl1aW50MzIJCWJhdGNoX3NpemUgPSBDbG9j a1N3ZWVwQmF0Y2hTaXplOwogCi0JCQlleHBlY3RlZCA9IG9yaWdpbmFsVmljdGltICsgMTsK KwkJc3RhcnQgPSBwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmU3RyYXRlZ3lDb250cm9sLT5u ZXh0VmljdGltQnVmZmVyLAorCQkJCQkJCQkJCWJhdGNoX3NpemUpOwogCi0JCQl3aGlsZSAo IXN1Y2Nlc3MpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBBY3F1aXJlIHRoZSBzcGlubG9jayB3 aGlsZSBpbmNyZWFzaW5nIGNvbXBsZXRlUGFzc2VzLiBUaGF0Ci0JCQkJICogYWxsb3dzIG90 aGVyIHJlYWRlcnMgdG8gcmVhZCBuZXh0VmljdGltQnVmZmVyIGFuZAotCQkJCSAqIGNvbXBs ZXRlUGFzc2VzIGluIGEgY29uc2lzdGVudCBtYW5uZXIgd2hpY2ggaXMgcmVxdWlyZWQgZm9y Ci0JCQkJICogU3RyYXRlZ3lTeW5jU3RhcnQoKS4gIEluIHRoZW9yeSBkZWxheWluZyB0aGUg aW5jcmVtZW50Ci0JCQkJICogY291bGQgbGVhZCB0byBhbiBvdmVyZmxvdyBvZiBuZXh0Vmlj dGltQnVmZmVycywgYnV0IHRoYXQncwotCQkJCSAqIGhpZ2hseSB1bmxpa2VseSBhbmQgd291 bGRuJ3QgYmUgcGFydGljdWxhcmx5IGhhcm1mdWwuCi0JCQkJICovCi0JCQkJU3BpbkxvY2tB Y3F1aXJlKCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKKwkJaWYg KHN0YXJ0ID49ICh1aW50MzIpIE5CdWZmZXJzKQorCQl7CisJCQlzdGFydCA9IHN0YXJ0ICUg TkJ1ZmZlcnM7CiAKLQkJCQl3cmFwcGVkID0gZXhwZWN0ZWQgJSBOQnVmZmVyczsKKwkJCS8q CisJCQkgKiBUaGUgY291bnRlciBoYXMgZ3Jvd24gcGFzdCBOQnVmZmVyczsgdHJ5IHRvIHdy YXAgaXQgYmFjay4gIFdlCisJCQkgKiBtdXN0IGhvbGQgdGhlIHNwaW5sb2NrIHNvIFN0cmF0 ZWd5U3luY1N0YXJ0KCkgY2FuIHJlYWQKKwkJCSAqIG5leHRWaWN0aW1CdWZmZXIgYW5kIGNv bXBsZXRlUGFzc2VzIGNvbnNpc3RlbnRseS4KKwkJCSAqCisJCQkgKiBXaXRoIGJhdGNoaW5n LCBtdWx0aXBsZSBiYWNrZW5kcyBtYXkgZWFjaCBsYW5kIGEgZmV0Y2gtYWRkCisJCQkgKiB0 aGF0IHJldHVybnMgYSB2YWx1ZSBwYXN0IE5CdWZmZXJzIGluIHRoZSBzYW1lIHBhc3MuICBB ZnRlcgorCQkJICogYWNxdWlyaW5nIHRoZSBzcGlubG9jayB3ZSByZS1yZWFkIHRoZSBjb3Vu dGVyOiBpZiBhbm90aGVyCisJCQkgKiBiYWNrZW5kIGFscmVhZHkgd3JhcHBlZCBpdCBiZWxv dyBOQnVmZmVycyB3ZSBhcmUgZG9uZS4KKwkJCSAqLworCQkJU3BpbkxvY2tBY3F1aXJlKCZT dHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKKwkJCXsKKwkJCQl1aW50 MzIJCWN1cnJlbnQ7CisJCQkJdWludDMyCQl3cmFwcGVkOwogCi0JCQkJc3VjY2VzcyA9IHBn X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3UzMigmU3RyYXRlZ3lDb250cm9sLT5uZXh0Vmlj dGltQnVmZmVyLAotCQkJCQkJCQkJCQkJCQkgJmV4cGVjdGVkLCB3cmFwcGVkKTsKLQkJCQlp ZiAoc3VjY2VzcykKLQkJCQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcysrOwot CQkJCVNwaW5Mb2NrUmVsZWFzZSgmU3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lf bG9jayk7CisJCQkJY3VycmVudCA9IHBnX2F0b21pY19yZWFkX3UzMigmU3RyYXRlZ3lDb250 cm9sLT5uZXh0VmljdGltQnVmZmVyKTsKKwkJCQlpZiAoY3VycmVudCA+PSAodWludDMyKSBO QnVmZmVycykKKwkJCQl7CisJCQkJCXdyYXBwZWQgPSBjdXJyZW50ICUgTkJ1ZmZlcnM7CisJ CQkJCWlmIChwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91MzIoJlN0cmF0ZWd5Q29udHJv bC0+bmV4dFZpY3RpbUJ1ZmZlciwKKwkJCQkJCQkJCQkJCQkgICAmY3VycmVudCwgd3JhcHBl ZCkpCisJCQkJCQlTdHJhdGVneUNvbnRyb2wtPmNvbXBsZXRlUGFzc2VzKys7CisJCQkJfQog CQkJfQorCQkJU3BpbkxvY2tSZWxlYXNlKCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJh dGVneV9sb2NrKTsKKwkJfQorCQllbHNlIGlmIChzdGFydCArIGJhdGNoX3NpemUgPiAodWlu dDMyKSBOQnVmZmVycykKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBmZXRjaC1hZGQgcmV0dXJu ZWQgYSB2YWx1ZSBiZWxvdyBOQnVmZmVycywgYnV0IHRoaXMgYmF0Y2gKKwkJCSAqIHNwYW5z IHRoZSB3cmFwIHBvaW50IChzdGFydCAuLiBOQnVmZmVycy0xIHRoZW4gMCAuLiBrIGFyZQor CQkJICogaXRlcmF0ZWQgbG9jYWxseSB2aWEgIiUgTkJ1ZmZlcnMiKS4gIFRoYXQgY3Jvc3Np bmcgaXMgYQorCQkJICogY29tcGxldGUgcGFzcyB0b28sIGJ1dCB0aGUgd3JhcC1hbmQtaW5j cmVtZW50IHBhdGggYWJvdmUgb25seQorCQkJICogZmlyZXMgd2hlbiB0aGUgZmV0Y2gtYWRk IHJldHVybiBpcyBpdHNlbGYgPj0gTkJ1ZmZlcnMsIHNvCisJCQkgKiB3aXRob3V0IHRoaXMg aXQgd291bGQgZ28gdW5jb3VudGVkIGFuZCBjb21wbGV0ZVBhc3NlcyB3b3VsZAorCQkJICog ZHJpZnQgbG93IChpdCBmZWVkcyBiZ3dyaXRlciBwYWNpbmcgLyBTdHJhdGVneVN5bmNTdGFy dCwgbm90CisJCQkgKiBjb3JyZWN0bmVzcykuICBUaGUgYmF0Y2ggaXMgY2FwcGVkIGF0IE5C dWZmZXJzLCBzbyBhIGJhdGNoCisJCQkgKiBzcGFucyB0aGUgd3JhcCBhdCBtb3N0IG9uY2U7 IGNvdW50IGl0IHVuZGVyIHRoZSBzcGlubG9jayBmb3IgYQorCQkJICogY29uc2lzdGVudCAo bmV4dFZpY3RpbUJ1ZmZlciwgY29tcGxldGVQYXNzZXMpIHBhaXIuCisJCQkgKi8KKwkJCVNw aW5Mb2NrQWNxdWlyZSgmU3RyYXRlZ3lDb250cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7 CisJCQlTdHJhdGVneUNvbnRyb2wtPmNvbXBsZXRlUGFzc2VzKys7CisJCQlTcGluTG9ja1Jl bGVhc2UoJlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOwogCQl9CisK KwkJTXlCYXRjaFBvcyA9IHN0YXJ0OworCQlNeUJhdGNoRW5kID0gc3RhcnQgKyBiYXRjaF9z aXplOwogCX0KKworCXZpY3RpbSA9IE15QmF0Y2hQb3MgJSBOQnVmZmVyczsKKwlNeUJhdGNo UG9zKys7CisKIAlyZXR1cm4gdmljdGltOwogfQogCkBAIC00MDgsNiArNDUxLDI5IEBAIFN0 cmF0ZWd5Q3RsU2htZW1Jbml0KHZvaWQgKmFyZykKIAogCS8qIE5vIHBlbmRpbmcgbm90aWZp Y2F0aW9uICovCiAJU3RyYXRlZ3lDb250cm9sLT5iZ3dwcm9jbm8gPSAtMTsKKworCS8qCisJ ICogRGVjaWRlIHdoZXRoZXIgdG8gYmF0Y2ggdGhlIGNsb2NrIHN3ZWVwLgorCSAqCisJICog QmF0Y2hpbmcgY2xhaW1zIGEgcnVuIG9mIGNvbnNlY3V0aXZlIGJ1ZmZlciBJRHMgcGVyIGF0 b21pYyBmZXRjaC1hZGQgc28KKwkgKiBjb25jdXJyZW50IGJhY2tlbmRzIHRvdWNoIHRoZSBz aGFyZWQgbmV4dFZpY3RpbUJ1ZmZlciBjYWNoZSBsaW5lIH4xL2JhdGNoCisJICogYXMgb2Z0 ZW4gLS0gYSB3aW4gb25seSB3aGVuIHRoYXQgbGluZSBhY3R1YWxseSBib3VuY2VzIGFjcm9z cyBzb2NrZXRzLAorCSAqIGkuZS4gb24gbXVsdGktbm9kZSBOVU1BIGhhcmR3YXJlLiAgT24g YSBzaW5nbGUgc29ja2V0IHRoZSBhdG9taWMgaXMKKwkgKiBhbHJlYWR5IG5vZGUtbG9jYWwg YW5kIGJhdGNoaW5nIHdvdWxkIG9ubHkgbWFrZSBiYWNrZW5kcyBza2lwIGFoZWFkIGZvcgor CSAqIG5vIGJlbmVmaXQsIHNvIHdlIGZhbGwgYmFjayB0byBiYXRjaCBzaXplIDEgdGhlcmUg KGJ5dGUtaWRlbnRpY2FsIHRvIHRoZQorCSAqIHN0b2NrIG9uZS1idWZmZXItYXQtYS10aW1l IGNsb2NrIHN3ZWVwKS4KKwkgKgorCSAqIEJhdGNoICg+IDEpIG9ubHkgd2hlbiBsaWJudW1h IHJlcG9ydHMgbW9yZSB0aGFuIG9uZSBub2RlCisJICogKHBnX251bWFfZ2V0X21heF9ub2Rl KCkgPj0gMSk7IHBnX251bWFfaW5pdCgpIHJldHVybnMgLTEgd2hlbiBOVU1BIGlzCisJICog dW5hdmFpbGFibGUuICAoQmVuY2htYXJraW5nIHNob3dlZCB0aGUgd2luIGhvbGRzIHdpdGgg b3Igd2l0aG91dCBodWdlCisJICogcGFnZXMsIHNvIGh1Z2UtcGFnZSBhdmFpbGFiaWxpdHkg aXMgaW50ZW50aW9uYWxseSBub3QgcGFydCBvZiB0aGUgZ2F0ZS4pCisJICovCisJaWYgKHBn X251bWFfaW5pdCgpICE9IC0xICYmCisJCXBnX251bWFfZ2V0X21heF9ub2RlKCkgPj0gMSkK KwkJQ2xvY2tTd2VlcEJhdGNoU2l6ZSA9IE1pbihQR19DQUNIRV9MSU5FX1NJWkUgLyAodWlu dDMyKSBzaXplb2YodWludDMyKSwKKwkJCQkJCQkJICAodWludDMyKSBOQnVmZmVycyk7CisJ ZWxzZQorCQlDbG9ja1N3ZWVwQmF0Y2hTaXplID0gMTsKIH0KIAogCi0tIAoyLjUxLjIKCg== --a57bc87414e283fe5b1ad8beabf032b6dad8c957 Content-Disposition: attachment; filename*0="v6-0002-Replace-the-usage_count-clock-sweep-with-a-coolin.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v6-0002-Replace-the-usage=5Fcount-clock-sweep-with-a-coolin.pa?= =?UTF-8?Q?tch?=" Content-Transfer-Encoding: base64 RnJvbSA4MjZlZGI2NGU5N2UzYmEyZDFlMmQxYWVkZDVlNzZkZWM5OGZmZjJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCA2IEp1bCAyMDI2IDE5OjIyOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NiAyLzNd IFJlcGxhY2UgdGhlIHVzYWdlX2NvdW50IGNsb2NrIHN3ZWVwIHdpdGggYQogY29vbGluZy1z dGFnZSBldmljdG9yCgpSZXBsYWNlIHRoZSAwLi41IHVzYWdlX2NvdW50IGJ1ZmZlci1yZXBs YWNlbWVudCBwb2xpY3kgd2l0aCBhIGNvb2xpbmctc3RhZ2UKY2xvY2sgKHRoZSBMZWFuU3Rv cmUgLyAyUS1BMSBtb2RlbCk6IGEgYnVmZmVyIGlzIHNpbXBseSBIT1QgKHJlY2VudGx5IHVz ZWQpCm9yIENPT0wgKGFuIGV2aWN0aW9uIGNhbmRpZGF0ZSksIHdpdGggInBpbm5lZCIgYmVp bmcgdGhlIGV4aXN0aW5nIHJlZmNvdW50LgpUaGVyZSBpcyBubyBwZXItYnVmZmVyIGFjY2Vz cyBjb3VudGVyLgoKICAtIEEgZGVtYW5kLWxvYWRlZCBwYWdlIGlzIGFkbWl0dGVkIENPT0wg KHByb2JhdGlvbmFyeSksIG5vdCBIT1QuICBBIHNlY29uZAogICAgYWNjZXNzIHZpYSBQaW5C dWZmZXIgcHJvbW90ZXMgaXQgQ09PTCAtPiBIT1QgKHRoZSByZXNjdWUpLiAgU28gYSBwYWdl CiAgICB0b3VjaGVkIG9uY2UgLS0gYSBzZXF1ZW50aWFsIHNjYW4gLS0gZmlsbHMgYW5kIGRy YWlucyB0aGUgQ09PTCBzdGFnZSBhbmQKICAgIGlzIGV2aWN0ZWQgZnJvbSBpdCB3aXRob3V0 IGV2ZXIgZGlzcGxhY2luZyB0aGUgSE9UIHdvcmtpbmcgc2V0LiAgU2NhbgogICAgcmVzaXN0 YW5jZSBpcyBpbnRyaW5zaWMgdG8gdGhlIHJlcGxhY2VtZW50IGFsZ29yaXRobSwgd2hpY2gg aXMgd2hhdCBsZXRzIGEKICAgIGxhdGVyIGNvbW1pdCByZW1vdmUgdGhlIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IHJpbmcgYnVmZmVycyBlbnRpcmVseS4KCiAgLSBUaGUgZm9yZWdyb3VuZCBz d2VlcCBpbiBTdHJhdGVneUdldEJ1ZmZlcigpIHJlY2xhaW1zIGFuIGFscmVhZHktQ09PTCwK ICAgIHVucGlubmVkIGJ1ZmZlciwgcGlubmluZyBpdCB3aXRoIGEgQ0FTIHNvIGEgcmFjaW5n IFBpbkJ1ZmZlciBhbHdheXMgd2lucy4KICAgIFByb21vdGlvbiAoQ09PTCAtPiBIT1QpIGFu ZCBkZW1vdGlvbiAoSE9UIC0+IENPT0wpIGFyZSBzaW5nbGUtYml0CiAgICB0cmFuc2l0aW9u czsgb25seSB0aGUgZXZpY3Rpb24gY2xhaW0gaXMgYSBDQVMuCgogIC0gVGhlIGJhY2tncm91 bmQgd3JpdGVyIG1haW50YWlucyB0aGUgc3VwcGx5IG9mIENPT0wgdmljdGltcy4gIEFzIGl0 cyBMUlUKICAgIHNjYW4gcnVucyBhaGVhZCBvZiB0aGUgY2xvY2sgaGFuZCBpdCBkZW1vdGVz IEhPVCBidWZmZXJzIHRvIENPT0wsIHNvIHRoZQogICAgZm9yZWdyb3VuZCBmaW5kcyBhIHZp Y3RpbSBpbiBhIHNpbmdsZSBwYXNzIHJhdGhlciB0aGFuIGhhdmluZyB0byBjb29sCiAgICBi dWZmZXJzIGl0c2VsZi4gIFRoZSBkZW1vdGlvbiBpcyBkZW1hbmQtZHJpdmVuIC0tIGJvdW5k ZWQgYnkgdGhlIHByZWRpY3RlZAogICAgYWxsb2NhdGlvbiBmb3IgdGhlIG5leHQgY3ljbGUg LS0gc28gaXQgc3RhZ2VzIGp1c3QgZW5vdWdoIENPT0wgYnVmZmVycwogICAgd2l0aG91dCBj b29saW5nIHRoZSB3aG9sZSBwb29sLCBhbmQgaXQgaXMgZG9uZSB1bmRlciB0aGUgYnVmZmVy IGhlYWRlcgogICAgbG9jayB0aGUgc2NhbiBhbHJlYWR5IGhvbGRzLiAgQSBzaW5nbGUgc2Vj b25kLWNoYW5jZSByZWZlcmVuY2UgYml0CiAgICAoc2V0IGJ5IFBpbkJ1ZmZlciwgY2xlYXJl ZCBvbiB0aGUgYmd3cml0ZXIncyBmaXJzdCBwYXNzIG92ZXIgYSBIT1QgYnVmZmVyKQogICAg c3BhcmVzIGEgcmVjZW50bHktYWNjZXNzZWQgYnVmZmVyIG9uZSBjb29saW5nIHBhc3MsIGtl ZXBpbmcgdGhlIGdlbnVpbmVseQogICAgaG90IHNldCBvdXQgb2YgdGhlIENPT0wgc3RhZ2Ug dW5kZXIgc2NhbiBwcmVzc3VyZS4gIEJnQnVmZmVyU3luYyBhbHNvCiAgICB0cmFja3MgdGhl IHJldXNhYmxlLWJ1ZmZlciBkZW5zaXR5IGl0IGRpcmVjdGx5IG9ic2VydmVzIG9uIGEgc2hv cnRlcgogICAgc21vb3RoaW5nIHdpbmRvdywgc28gYSBidXJzdCBvZiBwcm9iYXRpb25hcnkv c2NhbiBDT09MIHBhZ2VzIGlzIGZvbGxvd2VkCiAgICBwcm9tcHRseSByYXRoZXIgdGhhbiBh dmVyYWdlZCBhd2F5LiAgVW5kZXIgYSBidWxrLWRpcnR5aW5nIHdvcmtsb2FkIHRoZQogICAg cGVyLWN5Y2xlIGNsZWFuLXdyaXRlIGNhcCBpcyByYWlzZWQgZnJvbSBiZ3dyaXRlcl9scnVf bWF4cGFnZXMgdG8gcHJlZGljdGVkCiAgICBkZW1hbmQgc28gdGhlIGJnd3JpdGVyIGtlZXBz IHN1cHBseWluZyBjbGVhbiB2aWN0aW1zLCByYXRoZXIgdGhhbiB0aGUKICAgIGZvcmVncm91 bmQgc3dlZXAgaGF2aW5nIHRvIGZsdXNoIGRpcnR5IHZpY3RpbXMgaW5saW5lOyBub3JtYWwg d29ya2xvYWRzLAogICAgd2hlcmUgZGVtYW5kIGlzIGJlbG93IHRoZSBjYXAsIGFyZSB1bmFm ZmVjdGVkLgoKVGhlIDQtYml0IHVzYWdlX2NvdW50IGZpZWxkIGlzIHJlaW50ZXJwcmV0ZWQg aW4gcGxhY2U6IGJpdCAwIGlzIHRoZSBIT1QvQ09PTApzdGF0ZSAoQlVGX0NPT0xTVEFURV9P TkUpLCBiaXQgMSB0aGUgcmVmZXJlbmNlIGJpdCAoQlVGX1JFRkJJVCkuICBUaGUgNjQtYml0 CmJ1ZmZlci1zdGF0ZSBsYXlvdXQgLS0gcmVmY291bnQsIGZsYWcgYW5kIGxvY2sgb2Zmc2V0 cyBhbmQgdGhlaXIgU3RhdGljQXNzZXJ0cwotLSBpcyB1bmNoYW5nZWQ7IG9ubHkgdGhlIG1l YW5pbmcgb2YgdGhlIGZpZWxkIGFuZCB0aGUgaW5zdHJ1Y3Rpb25zIHRoYXQgdG91Y2gKaXQg Y2hhbmdlLiAgQSBTdGF0aWNBc3NlcnQgcmVxdWlyZXMgdGhlIGZpZWxkIHRvIGJlIGF0IGxl YXN0IDIgYml0cyB3aWRlIHNvIGEKZnV0dXJlIHdpZHRoIGNoYW5nZSBjYW5ub3QgcHVzaCB0 aGUgcmVmZXJlbmNlIGJpdCBpbnRvIHRoZSBmbGFnIGJpdHMuCkJNX01BWF9VU0FHRV9DT1VO VCBiZWNvbWVzIEJVRl9DT09MU1RBVEVfSE9UICgxKSwgc28gdGhlIHBpbiBmYXN0IHBhdGgK c2F0dXJhdGVzIGF0IEhPVC4gIExvY2FsICh0ZW1wLXRhYmxlKSBidWZmZXJzIGdldCB0aGUg c2FtZSB0d28tc3RhdGUKdHJlYXRtZW50OyBiZWluZyBzaW5nbGUtYmFja2VuZCB0aGV5IG5l ZWQgbm8gYmFja2dyb3VuZCBjb29sZXIuCgpCZWNhdXNlIHRoZSByZWZlcmVuY2UgYml0IHNo YXJlcyB0aGUgZmllbGQsIHRoZSBmdWxsIDQtYml0IHZhbHVlIGNhbiBiZSAwLi4zOwpyZWFk ZXJzIHRoYXQgbWVhbiAidGhlIGNvb2xpbmcgc3RhdGUiIG11c3QgdXNlIEJVRl9TVEFURV9H RVRfQ09PTFNUQVRFKCksIHdoaWNoCm1hc2tzIHRvIGJpdCAwIGFuZCByZXR1cm5zIG9ubHkg MCAoQ09PTCkgb3IgMSAoSE9UKSwgbmV2ZXIgdGhlIHJhdyBmaWVsZC4KY29udHJpYi9wZ19i dWZmZXJjYWNoZSBpcyB1cGRhdGVkIGFjY29yZGluZ2x5OiBpdHMgdXNhZ2Vjb3VudCBjb2x1 bW4gYW5kIHRoZQpwZ19idWZmZXJjYWNoZV9zdW1tYXJ5IGF2ZXJhZ2UgcmVwb3J0IHRoZSBj b29saW5nIHN0YXRlICgwID0gQ09PTCwgMSA9IEhPVCksCmFuZCBwZ19idWZmZXJjYWNoZV91 c2FnZV9jb3VudHMoKSBidWNrZXRzIG9uIGl0LiAgVXNpbmcgdGhlIHJhdyA0LWJpdCBnZXR0 ZXIKdGhlcmUgd291bGQgaW5kZXggaXRzIEJNX01BWF9VU0FHRV9DT1VOVCsxID0gMi1lbGVt ZW50IGFycmF5cyB3aXRoIHZhbHVlcyB1cAp0byAzIGFuZCBvdmVycnVuIHRoZSBzdGFjazsg bWFza2luZyB0byB0aGUgY29vbGluZyBiaXQga2VlcHMgdGhlIGluZGV4IGluCnJhbmdlLiAg VGhlIHJlZmVyZW5jZSBiaXQgaXMgZGVsaWJlcmF0ZWx5IG5vdCBleHBvc2VkIGFzIHVzYWdl Y291bnQuCgpEZXBlbmRzIG9uIHRoZSBiYXRjaGVkIGNsb2NrIHN3ZWVwIGZyb20gdGhlIHBy ZXZpb3VzIGNvbW1pdC4KLS0tCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlX3BhZ2VzLmMgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jICAgICAgICAgICB8IDEyNCArKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDE0MSArKysrKysrKysrKystLS0tLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8ICAxMyAr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggICAgICAgICAgIHwgIDYz ICsrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCA4NyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hl X3BhZ2VzLmMKaW5kZXggNTEwNDU1OTk4YWEuLmI5NGU2ZjZmZGE4IDEwMDY0NAotLS0gYS9j b250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKKysrIGIvY29u dHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCkBAIC0xNjEsNyAr MTYxLDcgQEAgcGdfYnVmZmVyY2FjaGVfcGFnZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcmVs ZGF0YWJhc2UgPSBidWZIZHItPnRhZy5kYk9pZDsKIAkJZm9ya251bSA9IEJ1ZlRhZ0dldEZv cmtOdW0oJmJ1Zkhkci0+dGFnKTsKIAkJYmxvY2tudW0gPSBidWZIZHItPnRhZy5ibG9ja051 bTsKLQkJdXNhZ2Vjb3VudCA9IEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChidWZfc3RhdGUp OworCQl1c2FnZWNvdW50ID0gQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKTsK IAkJcGlubmluZ19iYWNrZW5kcyA9IEJVRl9TVEFURV9HRVRfUkVGQ09VTlQoYnVmX3N0YXRl KTsKIAogCQlpZiAoYnVmX3N0YXRlICYgQk1fRElSVFkpCkBAIC02MDUsNyArNjA1LDcgQEAg cGdfYnVmZmVyY2FjaGVfc3VtbWFyeShQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoYnVmX3N0 YXRlICYgQk1fVkFMSUQpCiAJCXsKIAkJCWJ1ZmZlcnNfdXNlZCsrOwotCQkJdXNhZ2Vjb3Vu dF90b3RhbCArPSBCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKTsKKwkJCXVz YWdlY291bnRfdG90YWwgKz0gQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKTsK IAogCQkJaWYgKGJ1Zl9zdGF0ZSAmIEJNX0RJUlRZKQogCQkJCWJ1ZmZlcnNfZGlydHkrKzsK QEAgLTY1NSw3ICs2NTUsNyBAQCBwZ19idWZmZXJjYWNoZV91c2FnZV9jb3VudHMoUEdfRlVO Q1RJT05fQVJHUykKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCXVzYWdlX2Nv dW50ID0gQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1Zl9zdGF0ZSk7CisJCXVzYWdlX2Nv dW50ID0gQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKTsKIAkJdXNhZ2VfY291 bnRzW3VzYWdlX2NvdW50XSsrOwogCiAJCWlmIChidWZfc3RhdGUgJiBCTV9ESVJUWSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggMzkwODUyOTg3MmEuLjFmNWEw MDg0OWU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtODMsNiAr ODMsNyBAQAogLyogQml0cyBpbiBTeW5jT25lQnVmZmVyJ3MgcmV0dXJuIHZhbHVlICovCiAj ZGVmaW5lIEJVRl9XUklUVEVOCQkJCTB4MDEKICNkZWZpbmUgQlVGX1JFVVNBQkxFCQkJMHgw MgorI2RlZmluZSBCVUZfQ09PTEVECQkJCTB4MDQKIAogI2RlZmluZSBSRUxTX0JTRUFSQ0hf VEhSRVNIT0xECQkyMAogCkBAIC02MzQsNyArNjM1LDcgQEAgc3RhdGljIHZvaWQgUGluQnVm ZmVyX0xvY2tlZChCdWZmZXJEZXNjICpidWYpOwogc3RhdGljIHZvaWQgVW5waW5CdWZmZXIo QnVmZmVyRGVzYyAqYnVmKTsKIHN0YXRpYyB2b2lkIFVucGluQnVmZmVyTm9Pd25lcihCdWZm ZXJEZXNjICpidWYpOwogc3RhdGljIHZvaWQgQnVmZmVyU3luYyhpbnQgZmxhZ3MpOwotc3Rh dGljIGludAlTeW5jT25lQnVmZmVyKGludCBidWZfaWQsIGJvb2wgc2tpcF9yZWNlbnRseV91 c2VkLAorc3RhdGljIGludAlTeW5jT25lQnVmZmVyKGludCBidWZfaWQsIGJvb2wgc2tpcF9y ZWNlbnRseV91c2VkLCBib29sIGNvb2xfaWZfaG90LAogCQkJCQkJICBXcml0ZWJhY2tDb250 ZXh0ICp3Yl9jb250ZXh0KTsKIHN0YXRpYyB2b2lkIFdhaXRJTyhCdWZmZXJEZXNjICpidWYp Owogc3RhdGljIHZvaWQgQWJvcnRCdWZmZXJJTyhCdWZmZXIgYnVmZmVyKTsKQEAgLTIzMzMs NyArMjMzNCwxMCBAQCBCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxw ZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCSAqIGNoZWNrcG9pbnRzLCBleGNl cHQgZm9yIHRoZWlyICJpbml0IiBmb3Jrcywgd2hpY2ggbmVlZCB0byBiZSB0cmVhdGVkCiAJ ICoganVzdCBsaWtlIHBlcm1hbmVudCByZWxhdGlvbnMuCiAJICovCi0Jc2V0X2JpdHMgfD0g Qk1fVEFHX1ZBTElEIHwgQlVGX1VTQUdFQ09VTlRfT05FOworCXNldF9iaXRzIHw9IEJNX1RB R19WQUxJRDsKKwkvKiBBZG1pdCB0aGUgbmV3bHkgbG9hZGVkIHBhZ2UgQ09PTCAocHJvYmF0 aW9uKTsgYSBzZWNvbmQgYWNjZXNzIHZpYQorCSAqIFBpbkJ1ZmZlciBwcm9tb3RlcyBpdCB0 byBIT1QuICBUaGlzIGlzIHdoYXQgbWFrZXMgYSBvbmUtdG91Y2ggc2NhbgorCSAqIHNlbGYt ZXZpY3RpbmcgLS0gc2VlIHRoZSBjb29saW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5h bHMuaC4gKi8KIAlpZiAocmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFO RU5UIHx8IGZvcmtOdW0gPT0gSU5JVF9GT1JLTlVNKQogCQlzZXRfYml0cyB8PSBCTV9QRVJN QU5FTlQ7CiAKQEAgLTMwMDIsNyArMzAwNiw5IEBAIEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVk KEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAKIAkJCXZpY3RpbV9idWZfaGRyLT50YWcg PSB0YWc7CiAKLQkJCXNldF9iaXRzIHw9IEJNX1RBR19WQUxJRCB8IEJVRl9VU0FHRUNPVU5U X09ORTsKKwkJCXNldF9iaXRzIHw9IEJNX1RBR19WQUxJRDsKKwkJCS8qIEFkbWl0IENPT0wg KHByb2JhdGlvbik7IHNlZSB0aGUgY29tbWVudCBhdCB0aGUgb3RoZXIgYWRtaXNzaW9uCisJ CQkgKiBzaXRlIGFuZCB0aGUgY29vbGluZy1zdGF0ZSBub3RlcyBpbiBidWZfaW50ZXJuYWxz LmguICovCiAJCQlpZiAoYm1yLnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVCB8fCBmb3JrID09IElOSVRfRk9SS05VTSkKIAkJCQlzZXRfYml0cyB8PSBCTV9Q RVJNQU5FTlQ7CiAKQEAgLTMzMzIsMjEgKzMzMzgsMTcgQEAgUGluQnVmZmVyKEJ1ZmZlckRl c2MgKmJ1ZiwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkvKiBpbmNyZWFz ZSByZWZjb3VudCAqLwogCQkJYnVmX3N0YXRlICs9IEJVRl9SRUZDT1VOVF9PTkU7CiAKLQkJ CWlmIChzdHJhdGVneSA9PSBOVUxMKQotCQkJewotCQkJCS8qIERlZmF1bHQgY2FzZTogaW5j cmVhc2UgdXNhZ2Vjb3VudCB1bmxlc3MgYWxyZWFkeSBtYXguICovCi0JCQkJaWYgKEJVRl9T VEFURV9HRVRfVVNBR0VDT1VOVChidWZfc3RhdGUpIDwgQk1fTUFYX1VTQUdFX0NPVU5UKQot CQkJCQlidWZfc3RhdGUgKz0gQlVGX1VTQUdFQ09VTlRfT05FOwotCQkJfQotCQkJZWxzZQot CQkJewotCQkJCS8qCi0JCQkJICogUmluZyBidWZmZXJzIHNob3VsZG4ndCBldmljdCBvdGhl cnMgZnJvbSBwb29sLiAgVGh1cyB3ZQotCQkJCSAqIGRvbid0IG1ha2UgdXNhZ2Vjb3VudCBt b3JlIHRoYW4gMS4KLQkJCQkgKi8KLQkJCQlpZiAoQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5U KGJ1Zl9zdGF0ZSkgPT0gMCkKLQkJCQkJYnVmX3N0YXRlICs9IEJVRl9VU0FHRUNPVU5UX09O RTsKLQkJCX0KKwkJCS8qCisJCQkgKiBBY2Nlc3NpbmcgYSByZXNpZGVudCBidWZmZXIgcHJv bW90ZXMgaXQgdG8gSE9UICh0aGUgMlEgcmVzY3VlKToKKwkJCSAqIGEgcGFnZSBsb2FkZWQg Q09PTCBvbiBwcm9iYXRpb24gYmVjb21lcyBwYXJ0IG9mIHRoZSBob3Qgd29ya2luZworCQkJ ICogc2V0IG9uIGl0cyBzZWNvbmQgdG91Y2guICBCTV9NQVhfVVNBR0VfQ09VTlQgaXMKKwkJ CSAqIEJVRl9DT09MU1RBVEVfSE9UICgxKSwgc28gdGhpcyBzYXR1cmF0ZXMgYXQgSE9UIGFu ZCBuZXZlcgorCQkJICogb3ZlcmZsb3dzIHRoZSBmaWVsZC4gIFdlIGFsc28gc2V0IHRoZSBz ZWNvbmQtY2hhbmNlIHJlZiBiaXQgc28KKwkJCSAqIHRoZSBiZ3dyaXRlcidzIG5leHQgY29v bGluZyBwYXNzIHNwYXJlcyB0aGlzIHJlY2VudGx5LXVzZWQgYnVmZmVyLgorCQkJICovCisJ CQlpZiAoQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKSA8IEJVRl9DT09MU1RB VEVfSE9UKQorCQkJCWJ1Zl9zdGF0ZSArPSBCVUZfQ09PTFNUQVRFX09ORTsKKwkJCWJ1Zl9z dGF0ZSB8PSBCVUZfUkVGQklUOwogCiAJCQlpZiAocGdfYXRvbWljX2NvbXBhcmVfZXhjaGFu Z2VfdTY0KCZidWYtPnN0YXRlLCAmb2xkX2J1Zl9zdGF0ZSwKIAkJCQkJCQkJCQkJICAgYnVm X3N0YXRlKSkKQEAgLTM3ODUsNyArMzc4Nyw3IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQog CQkgKi8KIAkJaWYgKHBnX2F0b21pY19yZWFkX3U2NCgmYnVmSGRyLT5zdGF0ZSkgJiBCTV9D SEVDS1BPSU5UX05FRURFRCkKIAkJewotCQkJaWYgKFN5bmNPbmVCdWZmZXIoYnVmX2lkLCBm YWxzZSwgJndiX2NvbnRleHQpICYgQlVGX1dSSVRURU4pCisJCQlpZiAoU3luY09uZUJ1ZmZl cihidWZfaWQsIGZhbHNlLCBmYWxzZSwgJndiX2NvbnRleHQpICYgQlVGX1dSSVRURU4pCiAJ CQl7CiAJCQkJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfU1lOQ19XUklUVEVOKGJ1Zl9pZCk7 CiAJCQkJUGVuZGluZ0NoZWNrcG9pbnRlclN0YXRzLmJ1ZmZlcnNfd3JpdHRlbisrOwpAQCAt Mzg3Niw2ICszODc4LDE5IEBAIEJnQnVmZmVyU3luYyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9j b250ZXh0KQogCWZsb2F0CQlzbW9vdGhpbmdfc2FtcGxlcyA9IDE2OwogCWZsb2F0CQlzY2Fu X3dob2xlX3Bvb2xfbWlsbGlzZWNvbmRzID0gMTIwMDAwLjA7CiAKKwkvKgorCSAqIFRoZSBj bGVhbmVyIHNjYW4gZGlyZWN0bHkgb2JzZXJ2ZXMgdGhlIHJldXNhYmxlIChDT09MLCB1bnBp bm5lZCkgYnVmZmVyCisJICogZGVuc2l0eSBvdmVyIHRoZSByZWdpb24gaXQgd2Fsa3MsIHdo aWNoIC0tIHdpdGggdGhlIGNvb2xpbmctc3RhZ2UKKwkgKiBldmljdG9yIC0tIGlzIGV4YWN0 bHkgdGhlIHN3ZWVwJ3MgdmljdGltIHByZWRpY2F0ZS4gIFRoYXQgb2JzZXJ2YXRpb24gaXMK KwkgKiBncm91bmQgdHJ1dGggZm9yIHRoZSBidWZmZXJzIGFib3V0IHRvIGJlIHJldXNlZCwg d2hlcmVhcyB0aGUgc3RyYXRlZ3kKKwkgKiBzY2FuJ3MgcG9zaXRpb25hbCBwcm94eSAoc3Ry YXRlZ3lfZGVsdGEvcmVjZW50X2FsbG9jKSBibHVycyBhIHBvb2wgd2hvc2UKKwkgKiBDT09M IHBvcHVsYXRpb24gaXMgc3BhdGlhbGx5IGNsdXN0ZXJlZCAoYSBzY2FuIGJ1cnN0IGxlYXZl cyB3aG9sZSByZWdpb25zCisJICogQ09PTCwgaG90IE9MVFAgcmVnaW9ucyBub3QpLiAgU28g d2UgbGV0IHRoZSBjbGVhbmVyJ3Mgb3duIHNhbXBsZSBhZGFwdCBvbgorCSAqIGEgc2hvcnRl ciB3aW5kb3cgdGhhbiB0aGUgc3RyYXRlZ3kgcHJveHksIHRyYWNraW5nIGEgYnVyc3Qgb2YK KwkgKiBwcm9iYXRpb25hcnkvc2NhbiBDT09MIHBhZ2VzIHdpdGhpbiBhIGN5Y2xlIG9yIHR3 byBpbnN0ZWFkIG9mIGxhZ2dpbmcgaXQuCisJICovCisJZmxvYXQJCWNsZWFuZXJfc21vb3Ro aW5nX3NhbXBsZXMgPSA0OworCiAJLyogVXNlZCB0byBjb21wdXRlIGhvdyBmYXIgd2Ugc2Nh biBhaGVhZCAqLwogCWxvbmcJCXN0cmF0ZWd5X2RlbHRhOwogCWludAkJCWJ1ZnNfdG9fbGFw OwpAQCAtMzg4OSw2ICszOTA0LDcgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFja0NvbnRleHQg KndiX2NvbnRleHQpCiAJaW50CQkJbnVtX3RvX3NjYW47CiAJaW50CQkJbnVtX3dyaXR0ZW47 CiAJaW50CQkJcmV1c2FibGVfYnVmZmVyczsKKwlpbnQJCQl3cml0ZV9saW1pdDsKIAogCS8q IFZhcmlhYmxlcyBmb3IgZmluYWwgc21vb3RoZWRfZGVuc2l0eSB1cGRhdGUgKi8KIAlsb25n CQluZXdfc3RyYXRlZ3lfZGVsdGE7CkBAIC00MDYzLDggKzQwNzksMjIgQEAgQmdCdWZmZXJT eW5jKFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJICogTm93IHdyaXRlIG91dCBk aXJ0eSByZXVzYWJsZSBidWZmZXJzLCB3b3JraW5nIGZvcndhcmQgZnJvbSB0aGUKIAkgKiBu ZXh0X3RvX2NsZWFuIHBvaW50LCB1bnRpbCB3ZSBoYXZlIGxhcHBlZCB0aGUgc3RyYXRlZ3kg c2Nhbiwgb3IgY2xlYW5lZAogCSAqIGVub3VnaCBidWZmZXJzIHRvIG1hdGNoIG91ciBlc3Rp bWF0ZSBvZiB0aGUgbmV4dCBjeWNsZSdzIGFsbG9jYXRpb24KLQkgKiByZXF1aXJlbWVudHMs IG9yIGhpdCB0aGUgYmd3cml0ZXJfbHJ1X21heHBhZ2VzIGxpbWl0LgotCSAqLworCSAqIHJl cXVpcmVtZW50cywgb3IgaGl0IHRoZSB3cml0ZSBsaW1pdC4KKwkgKgorCSAqIFRoZSBwZXIt Y3ljbGUgd3JpdGUgY2FwIGlzIG5vcm1hbGx5IGJnd3JpdGVyX2xydV9tYXhwYWdlcy4gIEJ1 dCB1bmRlciBhCisJICogYnVsay1kaXJ0eWluZyB3b3JrbG9hZCAoQ09QWSwgYnVsayBVUERB VEUsIFZBQ1VVTSkgdGhlIHBvb2wgZmlsbHMgd2l0aAorCSAqIGRpcnR5IENPT0wgYnVmZmVy cyBmYXN0ZXIgdGhhbiB0aGF0IGZpeGVkIGNhcCBjYW4gY2xlYW4sIHNvIHRoZQorCSAqIGZv cmVncm91bmQgY2xvY2sgc3dlZXAgaXMgZm9yY2VkIHRvIGZsdXNoIGRpcnR5IHZpY3RpbXMg aW5saW5lIC0tIHRoZQorCSAqIHZlcnkgY29zdCB0aGUgY29vbGluZy1zdGFnZSBldmljdG9y IGlzIG1lYW50IHRvIGtlZXAgb2ZmIHRoZSBjcml0aWNhbAorCSAqIHBhdGguICBXaGVuIHBy ZWRpY3RlZCBkZW1hbmQgKHVwY29taW5nX2FsbG9jX2VzdCkgZXhjZWVkcyB0aGUgZml4ZWQg Y2FwLAorCSAqIHJhaXNlIHRoZSBsaW1pdCB0byBtZWV0IGRlbWFuZCBzbyB0aGUgYmd3cml0 ZXIgc3RheXMgYWhlYWQgYW5kIHN1cHBsaWVzCisJICogY2xlYW4gdmljdGltcy4gIFRoaXMg c3RheXMgYm91bmRlZCAoYnkgZGVtYW5kIGFuZCBieSBsYXBwaW5nIHRoZQorCSAqIHN0cmF0 ZWd5IHBvaW50KSwgc28gaXQgY2Fubm90IHJ1biBhd2F5LCBhbmQgbm9ybWFsIHdvcmtsb2Fk cyBhcmUKKwkgKiB1bmFmZmVjdGVkIGJlY2F1c2UgdGhlcmUgdXBjb21pbmdfYWxsb2NfZXN0 IDw9IGJnd3JpdGVyX2xydV9tYXhwYWdlcy4KKwkgKi8KKwl3cml0ZV9saW1pdCA9IGJnd3Jp dGVyX2xydV9tYXhwYWdlczsKKwlpZiAodXBjb21pbmdfYWxsb2NfZXN0ID4gd3JpdGVfbGlt aXQpCisJCXdyaXRlX2xpbWl0ID0gdXBjb21pbmdfYWxsb2NfZXN0OwogCiAJbnVtX3RvX3Nj YW4gPSBidWZzX3RvX2xhcDsKIAludW1fd3JpdHRlbiA9IDA7CkBAIC00MDczLDcgKzQxMDMs NyBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAkvKiBF eGVjdXRlIHRoZSBMUlUgc2NhbiAqLwogCXdoaWxlIChudW1fdG9fc2NhbiA+IDAgJiYgcmV1 c2FibGVfYnVmZmVycyA8IHVwY29taW5nX2FsbG9jX2VzdCkKIAl7Ci0JCWludAkJCXN5bmNf c3RhdGUgPSBTeW5jT25lQnVmZmVyKG5leHRfdG9fY2xlYW4sIHRydWUsCisJCWludAkJCXN5 bmNfc3RhdGUgPSBTeW5jT25lQnVmZmVyKG5leHRfdG9fY2xlYW4sIHRydWUsIHRydWUsCiAJ CQkJCQkJCQkJCSAgIHdiX2NvbnRleHQpOwogCiAJCWlmICgrK25leHRfdG9fY2xlYW4gPj0g TkJ1ZmZlcnMpCkBAIC00MDg2LDcgKzQxMTYsNyBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNr Q29udGV4dCAqd2JfY29udGV4dCkKIAkJaWYgKHN5bmNfc3RhdGUgJiBCVUZfV1JJVFRFTikK IAkJewogCQkJcmV1c2FibGVfYnVmZmVycysrOwotCQkJaWYgKCsrbnVtX3dyaXR0ZW4gPj0g Ymd3cml0ZXJfbHJ1X21heHBhZ2VzKQorCQkJaWYgKCsrbnVtX3dyaXR0ZW4gPj0gd3JpdGVf bGltaXQpCiAJCQl7CiAJCQkJUGVuZGluZ0JnV3JpdGVyU3RhdHMubWF4d3JpdHRlbl9jbGVh bisrOwogCQkJCWJyZWFrOwpAQCAtNDEyMSw3ICs0MTUxLDcgQEAgQmdCdWZmZXJTeW5jKFdy aXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJewogCQlzY2Fuc19wZXJfYWxsb2MgPSAo ZmxvYXQpIG5ld19zdHJhdGVneV9kZWx0YSAvIChmbG9hdCkgbmV3X3JlY2VudF9hbGxvYzsK IAkJc21vb3RoZWRfZGVuc2l0eSArPSAoc2NhbnNfcGVyX2FsbG9jIC0gc21vb3RoZWRfZGVu c2l0eSkgLwotCQkJc21vb3RoaW5nX3NhbXBsZXM7CisJCQljbGVhbmVyX3Ntb290aGluZ19z YW1wbGVzOwogCiAjaWZkZWYgQkdXX0RFQlVHCiAJCWVsb2coREVCVUcyLCAiYmd3cml0ZXI6 IGNsZWFuZXIgZGVuc2l0eSBhbGxvYz0ldSBzY2FuPSVsZCBkZW5zaXR5PSUuMmYgbmV3IHNt b290aGVkPSUuMmYiLApAQCAtNDE0MCwxNiArNDE3MCwyNiBAQCBCZ0J1ZmZlclN5bmMoV3Jp dGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKICAqIElmIHNraXBfcmVjZW50bHlfdXNlZCBp cyB0cnVlLCB3ZSBkb24ndCB3cml0ZSBjdXJyZW50bHktcGlubmVkIGJ1ZmZlcnMsIG5vcgog ICogYnVmZmVycyBtYXJrZWQgcmVjZW50bHkgdXNlZCwgYXMgdGhlc2UgYXJlIG5vdCByZXBs YWNlbWVudCBjYW5kaWRhdGVzLgogICoKKyAqIElmIGNvb2xfaWZfaG90IGlzIHRydWUgKHRo ZSBiZ3dyaXRlcidzIExSVSBzY2FuKSwgYW4gdW5waW5uZWQgSE9UIGJ1ZmZlciBpcworICog ZGVtb3RlZCBIT1QgLT4gQ09PTCBhcyB3ZSBwYXNzIGl0LCBwcmUtc3RhZ2luZyBldmljdGlv biBjYW5kaWRhdGVzIHNvIHRoZQorICogZm9yZWdyb3VuZCBjbG9jayBzd2VlcCBmaW5kcyBh IENPT0wgdmljdGltIGluIGEgc2luZ2xlIHBhc3MgaW5zdGVhZCBvZgorICogaGF2aW5nIHRv IGNvb2wgYnVmZmVycyBpdHNlbGYgKGZvcmNlX2Nvb2wpLiAgVGhlIGRlbW90aW9uIGlzIGRv bmUgdW5kZXIgdGhlCisgKiBidWZmZXIgaGVhZGVyIGxvY2sgd2UgYWxyZWFkeSBob2xkLCBz byBpdCBuZWVkcyBubyBDQVMgYW5kIGNhbm5vdCByYWNlIGEKKyAqIGNvbmN1cnJlbnQgZGVt b3Rpb24uICBBIGNvbmN1cnJlbnQgUGluQnVmZmVyIHByb21vdGVzIGl0IGJhY2sgdG8gSE9U LCB3aGljaAorICogaXMgdGhlIGludGVuZGVkIDJRIGJlaGF2aW9yIChhIHJlLWFjY2Vzc2Vk IGJ1ZmZlciBpcyByZXNjdWVkKS4KKyAqCiAgKiBSZXR1cm5zIGEgYml0bWFzayBjb250YWlu aW5nIHRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzOgogICoJQlVGX1dSSVRURU46IHdlIHdyb3Rl IHRoZSBidWZmZXIuCiAgKglCVUZfUkVVU0FCTEU6IGJ1ZmZlciBpcyBhdmFpbGFibGUgZm9y IHJlcGxhY2VtZW50LCBpZSwgaXQgaGFzCi0gKgkJcGluIGNvdW50IDAgYW5kIHVzYWdlIGNv dW50IDAuCisgKgkJcGluIGNvdW50IDAgYW5kIGlzIENPT0wgKGFuIGV2aWN0aW9uIGNhbmRp ZGF0ZSkuCisgKglCVUZfQ09PTEVEOiB3ZSBkZW1vdGVkIHRoaXMgYnVmZmVyIEhPVCAtPiBD T09MIHRoaXMgY2FsbC4KICAqCiAgKiAoQlVGX1dSSVRURU4gY291bGQgYmUgc2V0IGluIGVy cm9yIGlmIEZsdXNoQnVmZmVyIGZpbmRzIHRoZSBidWZmZXIgY2xlYW4KICAqIGFmdGVyIGxv Y2tpbmcgaXQsIGJ1dCB3ZSBkb24ndCBjYXJlIGFsbCB0aGF0IG11Y2guKQogICovCiBzdGF0 aWMgaW50Ci1TeW5jT25lQnVmZmVyKGludCBidWZfaWQsIGJvb2wgc2tpcF9yZWNlbnRseV91 c2VkLCBXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0KQorU3luY09uZUJ1ZmZlcihpbnQg YnVmX2lkLCBib29sIHNraXBfcmVjZW50bHlfdXNlZCwgYm9vbCBjb29sX2lmX2hvdCwKKwkJ CSAgV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIHsKIAlCdWZmZXJEZXNjICpidWZI ZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1Zl9pZCk7CiAJaW50CQkJcmVzdWx0ID0gMDsK QEAgLTQxNzEsOCArNDIxMSwzOCBAQCBTeW5jT25lQnVmZmVyKGludCBidWZfaWQsIGJvb2wg c2tpcF9yZWNlbnRseV91c2VkLCBXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0KQogCSAq LwogCWJ1Zl9zdGF0ZSA9IExvY2tCdWZIZHIoYnVmSGRyKTsKIAorCS8qCisJICogUHJlLWNv b2wgd2l0aCBhIHNlY29uZCBjaGFuY2U6IGlmIGFza2VkLCBhY3Qgb24gYW4gdW5waW5uZWQg SE9UIGJ1ZmZlci4KKwkgKiBJZiBpdHMgcmVmIGJpdCBpcyBzZXQgKGFjY2Vzc2VkIHNpbmNl IG91ciBsYXN0IHBhc3MpLCBjbGVhciB0aGUgcmVmIGJpdAorCSAqIGFuZCBsZWF2ZSBpdCBI T1QgLS0gYSByZWNlbnRseS11c2VkIGJ1ZmZlciBlYXJucyBvbmUgcmVwcmlldmUsIGtlZXBp bmcKKwkgKiB0aGUgaG90IHdvcmtpbmcgc2V0IG91dCBvZiB0aGUgQ09PTCBzdGFnZSB1bmRl ciBzY2FuIHByZXNzdXJlLiAgT25seSBhCisJICogSE9UIGJ1ZmZlciB3aG9zZSByZWYgYml0 IGlzIGFscmVhZHkgY2xlYXIgaXMgZGVtb3RlZCBIT1QgLT4gQ09PTCwKKwkgKiBwcmUtc3Rh Z2luZyBpdCBhcyBhbiBldmljdGlvbiBjYW5kaWRhdGUgZm9yIHRoZSBmb3JlZ3JvdW5kIHN3 ZWVwLiAgV2UKKwkgKiBob2xkIHRoZSBoZWFkZXIgbG9jaywgc28gZWFjaCB0cmFuc2l0aW9u IGlzIGEgcGxhaW4gbWFza2VkIHN0b3JlIGFwcGxpZWQKKwkgKiBhdG9taWNhbGx5IGJ5IFVu bG9ja0J1ZkhkckV4dDsgd2UgcmUtbG9jayB0byBjb250aW51ZSB0aGUgZGlydHktd3JpdGUK KwkgKiBpbnNwZWN0aW9uIGJlbG93LgorCSAqLworCWlmIChjb29sX2lmX2hvdCAmJgorCQlC VUZfU1RBVEVfR0VUX1JFRkNPVU5UKGJ1Zl9zdGF0ZSkgPT0gMCAmJgorCQlCVUZfU1RBVEVf R0VUX0NPT0xTVEFURShidWZfc3RhdGUpICE9IEJVRl9DT09MU1RBVEVfQ09PTCkKKwl7CisJ CWlmIChCVUZfU1RBVEVfR0VUX1JFRkJJVChidWZfc3RhdGUpKQorCQl7CisJCQkvKiBzZWNv bmQgY2hhbmNlOiBjb25zdW1lIHRoZSByZWYgYml0LCBzdGF5IEhPVCAqLworCQkJVW5sb2Nr QnVmSGRyRXh0KGJ1ZkhkciwgYnVmX3N0YXRlLCAwLCBCVUZfUkVGQklULCAwKTsKKwkJCWJ1 Zl9zdGF0ZSA9IExvY2tCdWZIZHIoYnVmSGRyKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q IG5vdCByZS1hY2Nlc3NlZCBzaW5jZSBsYXN0IHBhc3M6IGRlbW90ZSB0byBDT09MICovCisJ CQlVbmxvY2tCdWZIZHJFeHQoYnVmSGRyLCBidWZfc3RhdGUsIDAsIEJVRl9VU0FHRUNPVU5U X01BU0ssIDApOworCQkJYnVmX3N0YXRlID0gTG9ja0J1ZkhkcihidWZIZHIpOworCQkJcmVz dWx0IHw9IEJVRl9DT09MRUQ7CisJCX0KKwl9CisKIAlpZiAoQlVGX1NUQVRFX0dFVF9SRUZD T1VOVChidWZfc3RhdGUpID09IDAgJiYKLQkJQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1 Zl9zdGF0ZSkgPT0gMCkKKwkJQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKSA9 PSBCVUZfQ09PTFNUQVRFX0NPT0wpCiAJewogCQlyZXN1bHQgfD0gQlVGX1JFVVNBQkxFOwog CX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IDQ2MTA0YjMz NDFkLi5lOGNmMTNmMzM2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlz dC5jCkBAIC00OSw2ICs0OSwxNiBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQzMgkJY29tcGxl dGVQYXNzZXM7IC8qIENvbXBsZXRlIGN5Y2xlcyBvZiB0aGUgY2xvY2stc3dlZXAgKi8KIAlw Z19hdG9taWNfdWludDMyIG51bUJ1ZmZlckFsbG9jczsJLyogQnVmZmVycyBhbGxvY2F0ZWQg c2luY2UgbGFzdCByZXNldCAqLwogCisJLyoKKwkgKiBOdW1iZXIgb2YgY2xvY2staGFuZCB2 YWx1ZXMgYSBiYWNrZW5kIGNsYWltcyBwZXIgYXRvbWljIGZldGNoLWFkZC4KKwkgKiBDb21w dXRlZCBvbmNlIGF0IHN0YXJ0dXAgKHNlZSBTdHJhdGVneUN0bFNobWVtSW5pdCkuICBLZXB0 IGluIHNoYXJlZAorCSAqIG1lbW9yeSByYXRoZXIgdGhhbiBhIGJhY2tlbmQtbG9jYWwgc3Rh dGljIHNvIHRoYXQgRVhFQ19CQUNLRU5EIGNoaWxkcmVuCisJICogKHdoaWNoIGRvIG5vdCBp bmhlcml0IHRoZSBwb3N0bWFzdGVyJ3Mgc3RhdGljcykgc2VlIHRoZSBzYW1lIHZhbHVlOyBh CisJICogYmFja2VuZC1sb2NhbCBjb3B5IHdvdWxkIHNpbGVudGx5IHJlc2V0IHRvIDEgdGhl cmUsIGRpc2FibGluZyBiYXRjaGluZworCSAqIG9uIFdpbmRvd3MuCisJICovCisJdWludDMy CQliYXRjaFNpemU7CisKIAkvKgogCSAqIEJnd29ya2VyIHByb2Nlc3MgdG8gYmUgbm90aWZp ZWQgdXBvbiBhY3Rpdml0eSBvciAtMSBpZiBub25lLiBTZWUKIAkgKiBTdHJhdGVneU5vdGlm eUJnV3JpdGVyLgpAQCAtMTEzLDE3ICsxMjMsNiBAQCBzdGF0aWMgdm9pZCBBZGRCdWZmZXJU b1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiBzdGF0aWMgdWludDMyIE15 QmF0Y2hQb3MgPSAwOwogc3RhdGljIHVpbnQzMiBNeUJhdGNoRW5kID0gMDsKIAotLyoKLSAq IE51bWJlciBvZiBjbG9jay1oYW5kIHZhbHVlcyBhIGJhY2tlbmQgY2xhaW1zIHBlciBhdG9t aWMgZmV0Y2gtYWRkLAotICogY29tcHV0ZWQgb25jZSBhdCBzdGFydHVwIChzZWUgU3RyYXRl Z3lDdGxTaG1lbUluaXQpLiAgV2hlbiBiYXRjaGluZyBpcwotICogZW5hYmxlZCBpdCBpcyBv bmUgY2FjaGUgbGluZSdzIHdvcnRoIG9mIGhhbmQgYWR2YW5jZSwgc28gY29uY3VycmVudAot ICogYmFja2VuZHMgc3dlZXAgbm9uLW92ZXJsYXBwaW5nLCBjYWNoZS1saW5lLXNpemVkIHJ1 bnMgb2YgdGhlIHBvb2w7IHRoZQotICogZ2xvYmFsIHN3ZWVwIG9yZGVyIGlzIHByZXNlcnZl ZCAoZWFjaCBidWZmZXIgaXMgc3RpbGwgdmlzaXRlZCBleGFjdGx5IG9uY2UKLSAqIHBlciBw YXNzKS4gIEJhdGNoaW5nIGlzIGVuYWJsZWQgb25seSBvbiBtdWx0aS1ub2RlIE5VTUEgaGFy ZHdhcmU7IG90aGVyd2lzZQotICogdGhpcyBzdGF5cyAxIGFuZCB0aGUgc3dlZXAgaXMgYnl0 ZS1pZGVudGljYWwgdG8gdGhlIHN0b2NrIGNsb2NrLgotICovCi1zdGF0aWMgdWludDMyIENs b2NrU3dlZXBCYXRjaFNpemUgPSAxOwotCiAvKgogICogQ2xvY2tTd2VlcFRpY2sgLSBIZWxw ZXIgcm91dGluZSBmb3IgU3RyYXRlZ3lHZXRCdWZmZXIoKQogICoKQEAgLTE0NCw3ICsxNDMs NyBAQCBDbG9ja1N3ZWVwVGljayh2b2lkKQogCQkgKiBhdG9taWMgb3BlcmF0aW9uIHBlciBi YXRjaCwgcmVkdWNpbmcgY29udGVudGlvbiBieSB0aGUgYmF0Y2ggc2l6ZS4KIAkJICovCiAJ CXVpbnQzMgkJc3RhcnQ7Ci0JCXVpbnQzMgkJYmF0Y2hfc2l6ZSA9IENsb2NrU3dlZXBCYXRj aFNpemU7CisJCXVpbnQzMgkJYmF0Y2hfc2l6ZSA9IFN0cmF0ZWd5Q29udHJvbC0+YmF0Y2hT aXplOwogCiAJCXN0YXJ0ID0gcGdfYXRvbWljX2ZldGNoX2FkZF91MzIoJlN0cmF0ZWd5Q29u dHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwKIAkJCQkJCQkJCQliYXRjaF9zaXplKTsKQEAgLTIy OSw2ICsyMjgsNyBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCUJ1ZmZlckRlc2Mg KmJ1ZjsKIAlpbnQJCQliZ3dwcm9jbm87CiAJaW50CQkJdHJ5Y291bnRlcjsKKwlib29sCQlm b3JjZV9jb29sOwogCiAJKmZyb21fcmluZyA9IGZhbHNlOwogCkBAIC0yNzksMTIgKzI3OSwz MiBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwg dWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCSAqLwogCXBnX2F0b21pY19mZXRj aF9hZGRfdTMyKCZTdHJhdGVneUNvbnRyb2wtPm51bUJ1ZmZlckFsbG9jcywgMSk7CiAKLQkv KiBVc2UgdGhlICJjbG9jayBzd2VlcCIgYWxnb3JpdGhtIHRvIGZpbmQgYSBmcmVlIGJ1ZmZl ciAqLworCS8qCisJICogVXNlIHRoZSBjb29saW5nLXN0YWdlIGNsb2NrIHN3ZWVwIHRvIGZp bmQgYSB2aWN0aW0uCisJICoKKwkgKiBBIGJ1ZmZlciBpcyBIT1QgKHJlY2VudGx5IHVzZWQp IG9yIENPT0wgKGFuIGV2aWN0aW9uIGNhbmRpZGF0ZSkuICBXZQorCSAqIHByZWZlciB0byBy ZWNsYWltIGFuIGFscmVhZHktQ09PTCBidWZmZXIgYW5kIGRlbW90ZSBhIEhPVCBidWZmZXIg dG8KKwkgKiBDT09MIG9ubHkgb25jZSBhIGZ1bGwgc3dlZXAgaGFzIGZvdW5kIG5vIENPT0wg dmljdGltIChmb3JjZV9jb29sKSAtLSBzbworCSAqIGFuIGFidW5kYW50IHN1cHBseSBvZiBD T09ML3Byb2JhdGlvbmFyeSBwYWdlcyAoZS5nLiBhIHNjYW4pIGlzIGRyYWluZWQKKwkgKiBi ZWZvcmUgdGhlIGhvdCB3b3JraW5nIHNldCBpcyBjb29sZWQuICBOZXdseSBsb2FkZWQgcGFn ZXMgYXJlIGFkbWl0dGVkCisJICogQ09PTCAoc2VlIEJ1ZmZlckFsbG9jKSwgc28gc2NhbiBy ZXNpc3RhbmNlIGZhbGxzIG91dCBvZiB0aGUgYWxnb3JpdGhtLgorCSAqCisJICogdHJ5Y291 bnRlciBib3VuZHMgdGhlIHNlYXJjaC4gIEFueSB0aWNrIHRoYXQgZG9lcyBub3QgcHJvZHVj ZSBhIHZpY3RpbQorCSAqIGFuZCBkb2VzIG5vdCBtYWtlIHByb2dyZXNzIC0tIGEgcGlubmVk IGJ1ZmZlciwgb3IgYSBIT1QgYnVmZmVyIHNraXBwZWQKKwkgKiBvbiBhIHByZWZlci1DT09M IHBhc3MgLS0gZGVjcmVtZW50cyBpdC4gIENvb2xpbmcgYSBIT1QgYnVmZmVyICh1bmRlcgor CSAqIGZvcmNlX2Nvb2wpIGlzIHByb2dyZXNzIGFuZCByZXNldHMgaXQuICBXaGVuIGEgZnVs bCBwYXNzIChOQnVmZmVycykKKwkgKiBtYWtlcyBubyBwcm9ncmVzcyB3ZSBlc2NhbGF0ZSB0 byBmb3JjZV9jb29sIHNvIHRoZSBuZXh0IHBhc3MgY29vbHMgSE9UCisJICogYnVmZmVycyBp bnRvIHZpY3RpbXM7IGlmIGEgZm9yY2VfY29vbCBwYXNzIEFMU08gbWFrZXMgbm8gcHJvZ3Jl c3MgZXZlcnkKKwkgKiBidWZmZXIgaXMgcGlubmVkIGFuZCB3ZSBmYWlsLCBtYXRjaGluZyB0 aGUgc3RvY2sgIm5vIHVucGlubmVkIGJ1ZmZlcnMKKwkgKiBhdmFpbGFibGUiIGNvbnRyYWN0 LgorCSAqLwogCXRyeWNvdW50ZXIgPSBOQnVmZmVyczsKKwlmb3JjZV9jb29sID0gZmFsc2U7 CiAJZm9yICg7OykKIAl7CiAJCXVpbnQ2NAkJb2xkX2J1Zl9zdGF0ZTsKIAkJdWludDY0CQls b2NhbF9idWZfc3RhdGU7CisJCWJvb2wJCW5vX3Byb2dyZXNzID0gZmFsc2U7CiAKIAkJYnVm ID0gR2V0QnVmZmVyRGVzY3JpcHRvcihDbG9ja1N3ZWVwVGljaygpKTsKIApAQCAtMjk3LDI1 ICszMTcsMTAgQEAgU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlLCBib29sICpmcm9tX3IKIAkJewogCQkJbG9jYWxf YnVmX3N0YXRlID0gb2xkX2J1Zl9zdGF0ZTsKIAotCQkJLyoKLQkJCSAqIElmIHRoZSBidWZm ZXIgaXMgcGlubmVkIG9yIGhhcyBhIG5vbnplcm8gdXNhZ2VfY291bnQsIHdlIGNhbm5vdAot CQkJICogdXNlIGl0OyBkZWNyZW1lbnQgdGhlIHVzYWdlX2NvdW50ICh1bmxlc3MgcGlubmVk KSBhbmQga2VlcAotCQkJICogc2Nhbm5pbmcuCi0JCQkgKi8KLQorCQkJLyogSWYgdGhlIGJ1 ZmZlciBpcyBwaW5uZWQgd2UgY2Fubm90IHVzZSBpdDsga2VlcCBzY2FubmluZy4gKi8KIAkJ CWlmIChCVUZfU1RBVEVfR0VUX1JFRkNPVU5UKGxvY2FsX2J1Zl9zdGF0ZSkgIT0gMCkKIAkJ CXsKLQkJCQlpZiAoLS10cnljb3VudGVyID09IDApCi0JCQkJewotCQkJCQkvKgotCQkJCQkg KiBXZSd2ZSBzY2FubmVkIGFsbCB0aGUgYnVmZmVycyB3aXRob3V0IG1ha2luZyBhbnkgc3Rh dGUKLQkJCQkJICogY2hhbmdlcywgc28gYWxsIHRoZSBidWZmZXJzIGFyZSBwaW5uZWQgKG9y IHdlcmUgd2hlbiB3ZQotCQkJCQkgKiBsb29rZWQgYXQgdGhlbSkuIFdlIGNvdWxkIGhvcGUg dGhhdCBzb21lb25lIHdpbGwgZnJlZQotCQkJCQkgKiBvbmUgZXZlbnR1YWxseSwgYnV0IGl0 J3MgcHJvYmFibHkgYmV0dGVyIHRvIGZhaWwgdGhhbgotCQkJCQkgKiB0byByaXNrIGdldHRp bmcgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcC4KLQkJCQkJICovCi0JCQkJCWVsb2coRVJS T1IsICJubyB1bnBpbm5lZCBidWZmZXJzIGF2YWlsYWJsZSIpOwotCQkJCX0KKwkJCQlub19w cm9ncmVzcyA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAgLTMyNiwyMCArMzMxLDU2 IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1 aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCQkJY29udGludWU7CiAJCQl9CiAK LQkJCWlmIChCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQobG9jYWxfYnVmX3N0YXRlKSAhPSAw KQorCQkJaWYgKEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGxvY2FsX2J1Zl9zdGF0ZSkgIT0g QlVGX0NPT0xTVEFURV9DT09MKQogCQkJewotCQkJCWxvY2FsX2J1Zl9zdGF0ZSAtPSBCVUZf VVNBR0VDT1VOVF9PTkU7CisJCQkJLyoKKwkJCQkgKiBIT1QgYnVmZmVyLiAgUHJlZmVyIGEg Q09PTCB2aWN0aW06IG9uIGEgbm9ybWFsIHBhc3MganVzdAorCQkJCSAqIGFkdmFuY2UgdGhl IGhhbmQgKG5vIHByb2dyZXNzKS4gIFVuZGVyIGZvcmNlX2Nvb2wgYXBwbHkgdGhlCisJCQkJ ICogc2FtZSBzZWNvbmQtY2hhbmNlIHJ1bGUgdGhlIGJnd3JpdGVyJ3MgcHJlLWNvb2xpbmcg dXNlczogYQorCQkJCSAqIEhPVCBidWZmZXIgd2hvc2UgcmVmIGJpdCBpcyBzZXQgKHJlY2Vu dGx5IGFjY2Vzc2VkKSBoYXMgdGhlCisJCQkJICogcmVmIGJpdCBjbGVhcmVkIGFuZCBpcyBs ZWZ0IEhPVCB0aGlzIHBhc3M7IG9ubHkgYSBIT1QgYnVmZmVyCisJCQkJICogd2hvc2UgcmVm IGJpdCBpcyBhbHJlYWR5IGNsZWFyIGlzIGRlbW90ZWQgSE9UIC0+IENPT0wuICBUaGlzCisJ CQkJICoga2VlcHMgYSBqdXN0LXRvdWNoZWQgYnVmZmVyIGZyb20gYmVpbmcgY29vbGVkIHRo ZSBpbnN0YW50IHRoZQorCQkJCSAqIGJnd3JpdGVyIGZhbGxzIGJlaGluZCBhbmQgdGhlIGZv cmVncm91bmQgaGFzIHRvIGNvb2wgZm9yCisJCQkJICogaXRzZWxmLiAgRWl0aGVyIHRyYW5z aXRpb24gaXMgcHJvZ3Jlc3MgdG93YXJkIGEgdmljdGltLgorCQkJCSAqLworCQkJCWlmICgh Zm9yY2VfY29vbCkKKwkJCQl7CisJCQkJCW5vX3Byb2dyZXNzID0gdHJ1ZTsKKwkJCQkJYnJl YWs7CQkJLyogYWR2YW5jZSB0aGUgaGFuZCwgbG9vayBmb3IgQ09PTCAqLworCQkJCX0KKwor CQkJCWlmIChCVUZfU1RBVEVfR0VUX1JFRkJJVChsb2NhbF9idWZfc3RhdGUpKQorCQkJCQls b2NhbF9idWZfc3RhdGUgJj0gfkJVRl9SRUZCSVQ7CQkJLyogc2Vjb25kIGNoYW5jZTogY2xl YXIgcmVmLCBzdGF5IEhPVCAqLworCQkJCWVsc2UKKwkJCQkJbG9jYWxfYnVmX3N0YXRlICY9 IH5CVUZfVVNBR0VDT1VOVF9NQVNLOwkvKiBIT1QgLT4gQ09PTCwgY2xlYXIgcmVmIGJpdCAq LwogCiAJCQkJaWYgKHBnX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3U2NCgmYnVmLT5zdGF0 ZSwgJm9sZF9idWZfc3RhdGUsCiAJCQkJCQkJCQkJCQkgICBsb2NhbF9idWZfc3RhdGUpKQog CQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTWFraW5nIGEgY29vbGluZy1zdGF0ZSB0cmFuc2l0 aW9uIGlzIHByb2dyZXNzIHRvd2FyZCBhCisJCQkJCSAqIHZpY3RpbSwgc28gcmVzZXQgdGhl IGNvdW50ZXIuICBTdGF5IGluIGZvcmNlX2Nvb2w6IHdlIG1hZGUKKwkJCQkJICogYSB0cmFu c2l0aW9uIGJ1dCBoYXZlIG5vdCB5ZXQgcHJvZHVjZWQgYSByZWNsYWltYWJsZSBDT09MCisJ CQkJCSAqIHZpY3RpbSAoYSByZWYtY2xlYXIgbGVhdmVzIHRoZSBidWZmZXIgSE9UOyBhIGRl bW90ZSBsZWF2ZXMKKwkJCQkJICogaXQgQ09PTCBmb3IgYSBsYXRlciB0aWNrIHRvIGNsYWlt KSwgYW5kIGRyb3BwaW5nIG91dCBoZXJlCisJCQkJCSAqIHdvdWxkIHdhc3RlIGEgZnVsbCBu by1wcm9ncmVzcyBwYXNzIHJlLWVzY2FsYXRpbmcuICBBbgorCQkJCQkgKiBhbGwtSE9ULCBh bGwtcmVjZW50bHktcmVmZXJlbmNlZCBwb29sIHRodXMgdGFrZXMgdXAgdG8gfjMKKwkJCQkJ ICogZnVsbCBwYXNzZXMgdG8geWllbGQgYSB2aWN0aW0gKGRpc2NvdmVyIG5vIENPT0wsIGNs ZWFyIHJlZgorCQkJCQkgKiBiaXRzLCBjb29sICsgcmVjbGFpbSkgLS0gc3RpbGwgd2l0aGlu IHRoZSBzdG9jayBjbG9jaydzCisJCQkJCSAqIHdvcnN0IGNhc2UgKHVwIHRvIEJNX01BWF9V U0FHRV9DT1VOVCsxIHBhc3NlcyksIGFuZCBpbgorCQkJCQkgKiBwcmFjdGljZSB0aGUgYmd3 cml0ZXIgcHJlLWNvb2xpbmcga2VlcHMgYSBDT09MIHZpY3RpbQorCQkJCQkgKiBhdmFpbGFi bGUgc28gZm9yY2VfY29vbCByYXJlbHkgZmlyZXMgYXQgYWxsLiAgZm9yY2VfY29vbAorCQkJ CQkgKiBlbmRzIG5hdHVyYWxseSBvbmNlIGEgQ09PTCB2aWN0aW0gaXMgZm91bmQgYW5kIHJl dHVybmVkCisJCQkJCSAqIGJlbG93LgorCQkJCQkgKi8KIAkJCQkJdHJ5Y291bnRlciA9IE5C dWZmZXJzOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJ LyogcGluIHRoZSBidWZmZXIgaWYgdGhlIENBUyBzdWNjZWVkcyAqLworCQkJCS8qIENPT0wg YW5kIHVucGlubmVkOiBjbGFpbSBpdC4gIFBpbiBpZiB0aGUgQ0FTIHN1Y2NlZWRzLiAqLwog CQkJCWxvY2FsX2J1Zl9zdGF0ZSArPSBCVUZfUkVGQ09VTlRfT05FOwogCiAJCQkJaWYgKHBn X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3U2NCgmYnVmLT5zdGF0ZSwgJm9sZF9idWZfc3Rh dGUsCkBAIC0zNTYsNiArMzk3LDIxIEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJ CQkJfQogCQkJfQogCQl9CisKKwkJLyoKKwkJICogQSB0aWNrIHRoYXQgbWFkZSBubyBwcm9n cmVzcyB0b3dhcmQgYSB2aWN0aW0gY291bnRzIGRvd24gdHJ5Y291bnRlci4KKwkJICogQSBm dWxsIHVucHJvZHVjdGl2ZSBwYXNzIGVzY2FsYXRlcyB0byBmb3JjZV9jb29sIChjb29sIEhP VCBidWZmZXJzCisJCSAqIGludG8gdmljdGltcyk7IGEgc2Vjb25kIHVucHJvZHVjdGl2ZSBm dWxsIHBhc3MgbWVhbnMgZXZlcnl0aGluZyBpcworCQkgKiBwaW5uZWQsIHNvIGZhaWwgcmF0 aGVyIHRoYW4gc3BpbiBmb3JldmVyLiAgKEEgZmFpbGVkIENBUyBhYm92ZSBpcworCQkgKiBu ZWl0aGVyIHByb2dyZXNzIG5vciBhIGZ1bGwgbWlzczogd2Ugc2ltcGx5IHJldHJ5IHRoZSBz YW1lIGJ1ZmZlci4pCisJCSAqLworCQlpZiAobm9fcHJvZ3Jlc3MgJiYgLS10cnljb3VudGVy ID09IDApCisJCXsKKwkJCWlmIChmb3JjZV9jb29sKQorCQkJCWVsb2coRVJST1IsICJubyB1 bnBpbm5lZCBidWZmZXJzIGF2YWlsYWJsZSIpOworCQkJZm9yY2VfY29vbCA9IHRydWU7CisJ CQl0cnljb3VudGVyID0gTkJ1ZmZlcnM7CisJCX0KIAl9CiB9CiAKQEAgLTQ3MCwxMCArNTI2 LDEwIEBAIFN0cmF0ZWd5Q3RsU2htZW1Jbml0KHZvaWQgKmFyZykKIAkgKi8KIAlpZiAocGdf bnVtYV9pbml0KCkgIT0gLTEgJiYKIAkJcGdfbnVtYV9nZXRfbWF4X25vZGUoKSA+PSAxKQot CQlDbG9ja1N3ZWVwQmF0Y2hTaXplID0gTWluKFBHX0NBQ0hFX0xJTkVfU0laRSAvICh1aW50 MzIpIHNpemVvZih1aW50MzIpLAotCQkJCQkJCQkgICh1aW50MzIpIE5CdWZmZXJzKTsKKwkJ U3RyYXRlZ3lDb250cm9sLT5iYXRjaFNpemUgPSBNaW4oUEdfQ0FDSEVfTElORV9TSVpFIC8g KHVpbnQzMikgc2l6ZW9mKHVpbnQzMiksCisJCQkJCQkJCQkJICh1aW50MzIpIE5CdWZmZXJz KTsKIAllbHNlCi0JCUNsb2NrU3dlZXBCYXRjaFNpemUgPSAxOworCQlTdHJhdGVneUNvbnRy b2wtPmJhdGNoU2l6ZSA9IDE7CiB9CiAKIApAQCAtNzIxLDE0ICs3NzcsMTMgQEAgR2V0QnVm ZmVyRnJvbVJpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVm X3N0YXRlKQogCQkvKgogCQkgKiBJZiB0aGUgYnVmZmVyIGlzIHBpbm5lZCB3ZSBjYW5ub3Qg dXNlIGl0IHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzLgogCQkgKgotCQkgKiBJZiB1c2FnZV9j b3VudCBpcyAwIG9yIDEgdGhlbiB0aGUgYnVmZmVyIGlzIGZhaXIgZ2FtZSAod2UgZXhwZWN0 IDEsCi0JCSAqIHNpbmNlIG91ciBvd24gcHJldmlvdXMgdXNhZ2Ugb2YgdGhlIHJpbmcgZWxl bWVudCB3b3VsZCBoYXZlIGxlZnQgaXQKLQkJICogdGhlcmUsIGJ1dCBpdCBtaWdodCd2ZSBi ZWVuIGRlY3JlbWVudGVkIGJ5IGNsb2NrLXN3ZWVwIHNpbmNlIHRoZW4pLgotCQkgKiBBIGhp Z2hlciB1c2FnZV9jb3VudCBpbmRpY2F0ZXMgc29tZW9uZSBlbHNlIGhhcyB0b3VjaGVkIHRo ZSBidWZmZXIsCi0JCSAqIHNvIHdlIHNob3VsZG4ndCByZS11c2UgaXQuCisJCSAqIFdpdGgg dGhlIGNvb2xpbmctc3RhdGUgcmVwbGFjZW1lbnQgdGhlIGZpZWxkIGhvbGRzIG9ubHkgQ09P TCBvciBIT1QsCisJCSAqIHNvIHRoZSBzdG9jayAidXNhZ2VfY291bnQgPiAxIG1lYW5zIGFu b3RoZXIgYmFja2VuZCB0b3VjaGVkIGl0IgorCQkgKiBoZXVyaXN0aWMgbm8gbG9uZ2VyIGFw cGxpZXM6IGEgcmluZyBlbGVtZW50IGlzIHJldXNhYmxlIHdoZW5ldmVyIGl0CisJCSAqIGlz IHVucGlubmVkLiAgKFRoZSB3aG9sZSByaW5nIG1lY2hhbmlzbSBpcyByZW1vdmVkIGluIGEg bGF0ZXIgcGF0Y2g7CisJCSAqIHNjYW4gcmVzaXN0YW5jZSBpcyBub3cgaW50cmluc2ljIHRv IHRoZSBzd2VlcC4pCiAJCSAqLwotCQlpZiAoQlVGX1NUQVRFX0dFVF9SRUZDT1VOVChsb2Nh bF9idWZfc3RhdGUpICE9IDAKLQkJCXx8IEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChsb2Nh bF9idWZfc3RhdGUpID4gMSkKKwkJaWYgKEJVRl9TVEFURV9HRVRfUkVGQ09VTlQobG9jYWxf YnVmX3N0YXRlKSAhPSAwKQogCQkJYnJlYWs7CiAKIAkJLyogU2VlIGVxdWl2YWxlbnQgY29k ZSBpbiBQaW5CdWZmZXIoKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvbG9jYWxidWYuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVm LmMKaW5kZXggNDg3MGM4ZTEzZDAuLjIxYzA4MDkxYzQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2xvY2FsYnVmLmMKQEAgLTE2Nyw3ICsxNjcsNyBAQCBMb2NhbEJ1ZmZlckFs bG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVy IGJsb2NrTnVtLAogCiAJCWJ1Zl9zdGF0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmYnVmSGRy LT5zdGF0ZSk7CiAJCWJ1Zl9zdGF0ZSAmPSB+KEJVRl9GTEFHX01BU0sgfCBCVUZfVVNBR0VD T1VOVF9NQVNLKTsKLQkJYnVmX3N0YXRlIHw9IEJNX1RBR19WQUxJRCB8IEJVRl9VU0FHRUNP VU5UX09ORTsKKwkJYnVmX3N0YXRlIHw9IEJNX1RBR19WQUxJRDsJLyogYWRtaXQgQ09PTCAo cHJvYmF0aW9uKSAqLwogCQlwZ19hdG9taWNfdW5sb2NrZWRfd3JpdGVfdTY0KCZidWZIZHIt PnN0YXRlLCBidWZfc3RhdGUpOwogCiAJCSpmb3VuZFB0ciA9IGZhbHNlOwpAQCAtMjQ4LDkg KzI0OCwxMCBAQCBHZXRMb2NhbFZpY3RpbUJ1ZmZlcih2b2lkKQogCQl7CiAJCQl1aW50NjQJ CWJ1Zl9zdGF0ZSA9IHBnX2F0b21pY19yZWFkX3U2NCgmYnVmSGRyLT5zdGF0ZSk7CiAKLQkJ CWlmIChCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKSA+IDApCisJCQlpZiAo QlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoYnVmX3N0YXRlKSAhPSBCVUZfQ09PTFNUQVRFX0NP T0wpCiAJCQl7Ci0JCQkJYnVmX3N0YXRlIC09IEJVRl9VU0FHRUNPVU5UX09ORTsKKwkJCQkv KiBIT1Q6IGdpdmUgaXQgYSBzZWNvbmQgY2hhbmNlLCBjb29sIGl0IGFuZCBrZWVwIHNjYW5u aW5nLiAqLworCQkJCWJ1Zl9zdGF0ZSAtPSBCVUZfQ09PTFNUQVRFX09ORTsKIAkJCQlwZ19h dG9taWNfdW5sb2NrZWRfd3JpdGVfdTY0KCZidWZIZHItPnN0YXRlLCBidWZfc3RhdGUpOwog CQkJCXRyeWNvdW50ZXIgPSBOTG9jQnVmZmVyOwogCQkJfQpAQCAtNDU0LDcgKzQ1NSw3IEBA IEV4dGVuZEJ1ZmZlcmVkUmVsTG9jYWwoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAog CQkJdmljdGltX2J1Zl9oZHItPnRhZyA9IHRhZzsKIAotCQkJYnVmX3N0YXRlIHw9IEJNX1RB R19WQUxJRCB8IEJVRl9VU0FHRUNPVU5UX09ORTsKKwkJCWJ1Zl9zdGF0ZSB8PSBCTV9UQUdf VkFMSUQ7CS8qIGFkbWl0IENPT0wgKHByb2JhdGlvbikgKi8KIAogCQkJcGdfYXRvbWljX3Vu bG9ja2VkX3dyaXRlX3U2NCgmdmljdGltX2J1Zl9oZHItPnN0YXRlLCBidWZfc3RhdGUpOwog CkBAIC04MzksOSArODQwLDkgQEAgUGluTG9jYWxCdWZmZXIoQnVmZmVyRGVzYyAqYnVmX2hk ciwgYm9vbCBhZGp1c3RfdXNhZ2Vjb3VudCkKIAkJTkxvY2FsUGlubmVkQnVmZmVycysrOwog CQlidWZfc3RhdGUgKz0gQlVGX1JFRkNPVU5UX09ORTsKIAkJaWYgKGFkanVzdF91c2FnZWNv dW50ICYmCi0JCQlCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKSA8IEJNX01B WF9VU0FHRV9DT1VOVCkKKwkJCUJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSkg PCBCVUZfQ09PTFNUQVRFX0hPVCkKIAkJewotCQkJYnVmX3N0YXRlICs9IEJVRl9VU0FHRUNP VU5UX09ORTsKKwkJCWJ1Zl9zdGF0ZSArPSBCVUZfQ09PTFNUQVRFX09ORTsKIAkJfQogCQlw Z19hdG9taWNfdW5sb2NrZWRfd3JpdGVfdTY0KCZidWZfaGRyLT5zdGF0ZSwgYnVmX3N0YXRl KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAppbmRleCBlNGZmNTYxOWI3 OS4uMTMxZGYxMjZjZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2lu dGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCkBA IC02Nyw2ICs2Nyw1MCBAQCBTdGF0aWNBc3NlcnREZWNsKEJVRl9SRUZDT1VOVF9CSVRTICsg QlVGX1VTQUdFQ09VTlRfQklUUyArIEJVRl9GTEFHX0JJVFMgKyBCVUZfTAogI2RlZmluZSBC VUZfVVNBR0VDT1VOVF9PTkUgXAogCShVSU5UNjRDT05TVCgxKSA8PCBCVUZfUkVGQ09VTlRf QklUUykKIAorLyoKKyAqIENvb2xpbmcgc3RhdGUgKExlYW5TdG9yZSAvIDJRLUExIGNvb2xp bmctc3RhZ2UgY2xvY2sgc3dlZXApLgorICoKKyAqIFRoZSBmaWVsZCBoaXN0b3JpY2FsbHkg dXNlZCBmb3IgdGhlIDAuLjUgdXNhZ2VfY291bnQgbm93IGhvbGRzIGEgc2luZ2xlCisgKiBj b29saW5nLXN0YXRlIGJpdDogSE9UIChyZWNlbnRseSBhY2Nlc3NlZCwgbm90IGFuIGV2aWN0 aW9uIGNhbmRpZGF0ZSkgb3IKKyAqIENPT0wgKGFuIGV2aWN0aW9uIGNhbmRpZGF0ZSkuICBX ZSByZXVzZSBCVUZfVVNBR0VDT1VOVF9PTkUgYXMgdGhlIHVuaXQgc28KKyAqIHRoZSBidWZm ZXItc3RhdGUgYml0IGdlb2dyYXBoeSAtLSByZWZjb3VudCwgZmxhZywgYW5kIGxvY2sgb2Zm c2V0cywgYW5kIHRoZQorICogNjQtYml0IFN0YXRpY0Fzc2VydHMgLS0gaXMgdW5jaGFuZ2Vk OyBvbmx5IHRoZSBtZWFuaW5nIG9mIHRoZSBmaWVsZCBhbmQgdGhlCisgKiBpbnN0cnVjdGlv bnMgdGhhdCB0b3VjaCBpdCBjaGFuZ2UuCisgKgorICogQSBkZW1hbmQtbG9hZGVkIHBhZ2Ug aXMgYWRtaXR0ZWQgQ09PTCAocHJvYmF0aW9uKTsgYSBzZWNvbmQgYWNjZXNzIHByb21vdGVz CisgKiBpdCB0byBIT1QgKHRoZSByZXNjdWUpLiAgVGhlIHN3ZWVwIHByZWZlcnMgQ09PTCB2 aWN0aW1zIGFuZCBkZW1vdGVzIEhPVCB0bworICogQ09PTCBvbmx5IHdoZW4gYSBmdWxsIHBh c3MgZmluZHMgbm8gQ09PTCB2aWN0aW0uICBTbyBhIG9uZS10b3VjaCBzY2FuIGZpbGxzCisg KiBhbmQgZHJhaW5zIHRoZSBDT09MIHN0YWdlIHdpdGhvdXQgZGlzcGxhY2luZyB0aGUgSE9U IHdvcmtpbmcgc2V0IC0tIHNjYW4KKyAqIHJlc2lzdGFuY2UgaW50cmluc2ljIHRvIHRoZSBy ZXBsYWNlbWVudCBhbGdvcml0aG0uCisgKi8KKyNkZWZpbmUgQlVGX0NPT0xTVEFURV9DT09M CTAKKyNkZWZpbmUgQlVGX0NPT0xTVEFURV9IT1QJMQorI2RlZmluZSBCVUZfQ09PTFNUQVRF X09ORQlCVUZfVVNBR0VDT1VOVF9PTkUKKworLyoKKyAqIFNlY29uZC1jaGFuY2UgcmVmZXJl bmNlIGJpdCwgYml0IDEgb2YgdGhlIChmb3JtZXIgdXNhZ2Vjb3VudCkgZmllbGQsIG9uZQor ICogcG9zaXRpb24gYWJvdmUgdGhlIGNvb2xpbmctc3RhdGUgYml0LiAgUGluQnVmZmVyIHNl dHMgaXQgb24gZXZlcnkgYWNjZXNzLgorICogVGhlIGJnd3JpdGVyJ3MgcHJlLWNvb2xpbmcg Z2l2ZXMgYSBIT1QgYnVmZmVyIGEgc2Vjb25kIGNoYW5jZTogdGhlIGZpcnN0CisgKiB0aW1l IGl0IHBhc3NlcyBhIEhPVCBidWZmZXIgd2hvc2UgcmVmIGJpdCBpcyBzZXQsIGl0IGNsZWFy cyB0aGUgcmVmIGJpdCBhbmQKKyAqIGxlYXZlcyB0aGUgYnVmZmVyIEhPVDsgb25seSBhIEhP VCBidWZmZXIgd2hvc2UgcmVmIGJpdCBpcyBhbHJlYWR5IGNsZWFyIChub3QKKyAqIHJlLWFj Y2Vzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBiZ3dyaXRlciBwYXNzKSBpcyBkZW1vdGVkIHRv IENPT0wuICBUaGlzCisgKiBrZWVwcyBnZW51aW5lbHktaG90IHBhZ2VzIG91dCBvZiB0aGUg Q09PTCBzdGFnZSAocHJvdGVjdGluZyB0aGUgd29ya2luZyBzZXQKKyAqIGZyb20gYmVpbmcg Y29vbGVkIHVuZGVyIHNjYW4gcHJlc3N1cmUpIHdoaWxlIGxlYXZpbmcgdGhlIGZvcmVncm91 bmQgc3dlZXAgYQorICogc2luZ2xlLXBhc3Mgc2VhcmNoIG92ZXIgdGhlIHByZS1zdGFnZWQg Q09PTCBidWZmZXJzLiAgQSBzZXBhcmF0ZSBiaXQgKG5vdCBhCisgKiBjb3VudCkgc28gaXQg c3RheXMgYSBwbGFpbiBtYXNrZWQgc3RvcmUgdW5kZXIgdGhlIGhlYWRlciBsb2NrLgorICov CisjZGVmaW5lIEJVRl9SRUZCSVQJCQkoVUlOVDY0Q09OU1QoMikgPDwgQlVGX1JFRkNPVU5U X0JJVFMpCisjZGVmaW5lIEJVRl9TVEFURV9HRVRfUkVGQklUKHN0YXRlKQkoKChzdGF0ZSkg JiBCVUZfUkVGQklUKSAhPSAwKQorCisvKgorICogVGhlIGNvb2xpbmcgc3RhdGUgb2NjdXBp ZXMgYml0IDAgYW5kIHRoZSByZWZlcmVuY2UgYml0IG9jY3VwaWVzIGJpdCAxIG9mCisgKiB0 aGUgKGZvcm1lciB1c2FnZWNvdW50KSBmaWVsZCwgc28gdGhlIGZpZWxkIG11c3QgYmUgYXQg bGVhc3QgMiBiaXRzIHdpZGUuCisgKiBBc3NlcnQgaXQgaGVyZSBzbyBhIGZ1dHVyZSBjaGFu Z2UgdG8gQlVGX1VTQUdFQ09VTlRfQklUUyBjYW5ub3Qgc2lsZW50bHkKKyAqIHB1c2ggQlVG X1JFRkJJVCB1cCBpbnRvIHRoZSBmbGFnIGJpdHMuCisgKi8KK1N0YXRpY0Fzc2VydERlY2wo QlVGX1VTQUdFQ09VTlRfQklUUyA+PSAyLAorCQkJCSAiY29vbGluZyBzdGF0ZSArIHJlZmVy ZW5jZSBiaXQgbmVlZCBhdCBsZWFzdCAyIGJpdHMgaW4gdGhlIHVzYWdlY291bnQgZmllbGQi KTsKKwogLyogZmxhZ3MgcmVsYXRlZCBkZWZpbml0aW9ucyAqLwogI2RlZmluZSBCVUZfRkxB R19TSElGVCBcCiAJKEJVRl9SRUZDT1VOVF9CSVRTICsgQlVGX1VTQUdFQ09VTlRfQklUUykK QEAgLTkyLDYgKzEzNiwxMSBAQCBTdGF0aWNBc3NlcnREZWNsKEJVRl9SRUZDT1VOVF9CSVRT ICsgQlVGX1VTQUdFQ09VTlRfQklUUyArIEJVRl9GTEFHX0JJVFMgKyBCVUZfTAogI2RlZmlu ZSBCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoc3RhdGUpIFwKIAkoKHVpbnQzMikoKChzdGF0 ZSkgJiBCVUZfVVNBR0VDT1VOVF9NQVNLKSA+PiBCVUZfVVNBR0VDT1VOVF9TSElGVCkpCiAK Ky8qIENvb2xpbmcgc3RhdGUgKEhPVC9DT09MKSBmcm9tIGJ1ZmZlciBzdGF0ZSAtLSBiaXQg MCBvZiB0aGUgZmllbGQgb25seSwgc28KKyAqIHRoZSBzZWNvbmQtY2hhbmNlIHJlZiBiaXQg KGJpdCAxKSBkb2VzIG5vdCBwZXJ0dXJiIHRoZSBIT1QvQ09PTCB0ZXN0LiAqLworI2RlZmlu ZSBCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShzdGF0ZSkgXAorCSgodWludDMyKSAoKChzdGF0 ZSkgPj4gQlVGX1VTQUdFQ09VTlRfU0hJRlQpICYgMSkpCisKIC8qCiAgKiBGbGFncyBmb3Ig YnVmZmVyIGRlc2NyaXB0b3JzCiAgKgpAQCAtMTM0LDE3ICsxODMsMTUgQEAgU3RhdGljQXNz ZXJ0RGVjbChNQVhfQkFDS0VORFNfQklUUyA8PSAoQlVGX0xPQ0tfQklUUyAtIDIpLAogCiAK IC8qCi0gKiBUaGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlIG9mIHVzYWdlX2NvdW50IHJlcHJl c2VudHMgYSB0cmFkZW9mZiBiZXR3ZWVuCi0gKiBhY2N1cmFjeSBhbmQgc3BlZWQgb2YgdGhl IGNsb2NrLXN3ZWVwIGJ1ZmZlciBtYW5hZ2VtZW50IGFsZ29yaXRobS4gIEEKLSAqIGxhcmdl IHZhbHVlIChjb21wYXJhYmxlIHRvIE5CdWZmZXJzKSB3b3VsZCBhcHByb3hpbWF0ZSBMUlUg c2VtYW50aWNzLgotICogQnV0IGl0IGNhbiB0YWtlIGFzIG1hbnkgYXMgQk1fTUFYX1VTQUdF X0NPVU5UKzEgY29tcGxldGUgY3ljbGVzIG9mIHRoZQotICogY2xvY2stc3dlZXAgaGFuZCB0 byBmaW5kIGEgZnJlZSBidWZmZXIsIHNvIGluIHByYWN0aWNlIHdlIGRvbid0IHdhbnQgdGhl Ci0gKiB2YWx1ZSB0byBiZSB2ZXJ5IGxhcmdlLgorICogVGhlIGNvb2xpbmcgc3RhdGUgaXMg YSBzaW5nbGUgYml0IChIT1QvQ09PTCk7IHRoZSBtYXhpbXVtIHZhbHVlIHN0b3JlZCBpbgor ICogdGhlIGZpZWxkIGlzIHRoZXJlZm9yZSBCVUZfQ09PTFNUQVRFX0hPVC4gIFJldGFpbmVk IHVuZGVyIHRoZSBoaXN0b3JpY2FsCisgKiBuYW1lIEJNX01BWF9VU0FHRV9DT1VOVCBzbyB0 aGUgcGluIGZhc3QgcGF0aCAoInByb21vdGUgdW5sZXNzIGFscmVhZHkgYXQKKyAqIG1heCIp IHJlYWRzIG5hdHVyYWxseS4KICAqLwotI2RlZmluZSBCTV9NQVhfVVNBR0VfQ09VTlQJNQor I2RlZmluZSBCTV9NQVhfVVNBR0VfQ09VTlQJQlVGX0NPT0xTVEFURV9IT1QKIAogU3RhdGlj QXNzZXJ0RGVjbChCTV9NQVhfVVNBR0VfQ09VTlQgPCAoVUlOVDY0Q09OU1QoMSkgPDwgQlVG X1VTQUdFQ09VTlRfQklUUyksCi0JCQkJICJCTV9NQVhfVVNBR0VfQ09VTlQgZG9lc24ndCBm aXQgaW4gQlVGX1VTQUdFQ09VTlRfQklUUyBiaXRzIik7CisJCQkJICJjb29saW5nIHN0YXRl IGRvZXNuJ3QgZml0IGluIEJVRl9VU0FHRUNPVU5UX0JJVFMgYml0cyIpOwogCiAvKgogICog QnVmZmVyIHRhZyBpZGVudGlmaWVzIHdoaWNoIGRpc2sgYmxvY2sgdGhlIGJ1ZmZlciBjb250 YWlucy4KLS0gCjIuNTEuMgoK --a57bc87414e283fe5b1ad8beabf032b6dad8c957 Content-Disposition: attachment; filename*0="v6-0003-Remove-BufferAccessStrategy-scan-resistance-is-no.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v6-0003-Remove-BufferAccessStrategy-scan-resistance-is-no.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAxZjllN2VkYTk0MzhjMTY4YTUxYTkyOGY3ZDE2OWZhZTlmODRlOTZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCA3IEp1bCAyMDI2IDA4OjQ1OjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2NiAzLzNd IFJlbW92ZSBCdWZmZXJBY2Nlc3NTdHJhdGVneTsgc2NhbiByZXNpc3RhbmNlIGlzIG5vdwog aW50cmluc2ljCgpUaGUgY29vbGluZy1zdGFnZSBldmljdG9yIGFkbWl0cyBkZW1hbmQtbG9h ZGVkIHBhZ2VzIENPT0wgYW5kIHByb21vdGVzIHRoZW0gdG8KSE9UIG9ubHkgb24gYSBzZWNv bmQgYWNjZXNzLCBzbyBhIG9uZS10b3VjaCBzZXF1ZW50aWFsIHNjYW4gZmlsbHMgYW5kIGRy YWlucwp0aGUgQ09PTCBzdGFnZSB3aXRob3V0IGRpc3BsYWNpbmcgdGhlIGhvdCB3b3JraW5n IHNldC4gIFNjYW4gcmVzaXN0YW5jZSBpcwp0aGVyZWZvcmUgYSBwcm9wZXJ0eSBvZiB0aGUg cmVwbGFjZW1lbnQgYWxnb3JpdGhtIGl0c2VsZiwgYW5kIHRoZQpCdWZmZXJBY2Nlc3NTdHJh dGVneSByaW5nIGJ1ZmZlcnMgdGhhdCBwcmV2aW91c2x5IHByb3ZpZGVkIGl0IGFyZSBkZWFk IHdlaWdodC4KUmVtb3ZlIHRoZW0gZW5kIHRvIGVuZC4KCkRlbGV0ZWQ6CiAgLSB0aGUgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgdHlwZSBhbmQgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlw ZSBlbnVtCiAgICAoQkFTX05PUk1BTC9CVUxLUkVBRC9CVUxLV1JJVEUvVkFDVVVNKTsKICAt IHRoZSByaW5nIG1hY2hpbmVyeSBpbiBmcmVlbGlzdC5jIChHZXRBY2Nlc3NTdHJhdGVneVtX aXRoU2l6ZV0sCiAgICBHZXRBY2Nlc3NTdHJhdGVneUJ1ZmZlckNvdW50LCBHZXRBY2Nlc3NT dHJhdGVneVBpbkxpbWl0LAogICAgRnJlZUFjY2Vzc1N0cmF0ZWd5LCBHZXRCdWZmZXJGcm9t UmluZywgQWRkQnVmZmVyVG9SaW5nLAogICAgU3RyYXRlZ3lSZWplY3RCdWZmZXIsIElPQ29u dGV4dEZvclN0cmF0ZWd5KTsKICAtIHRoZSBzdHJhdGVneSBwYXJhbWV0ZXIgZnJvbSBSZWFk QnVmZmVyRXh0ZW5kZWQsIFJlYWRCdWZmZXJXaXRob3V0UmVsY2FjaGUsCiAgICB0aGUgRXh0 ZW5kQnVmZmVyZWRSZWwqIGZhbWlseSwgU3RyYXRlZ3lHZXRCdWZmZXIsIHJlYWRfc3RyZWFt X2JlZ2luXyosCiAgICBhbmQgZXZlcnkgc2Nhbi92YWN1dW0vYW5hbHl6ZS9pbmRleC1BTSBj YWxsZXI7CiAgLSB0aGUgc3RyYXRlZ3kgZmllbGRzIG9uIEhlYXBTY2FuRGVzY0RhdGEsIElu ZGV4U2NhbkRlc2NEYXRhLAogICAgQnVsa0luc2VydFN0YXRlRGF0YSwgUmVhZEJ1ZmZlcnNP cGVyYXRpb24sIGFuZCBSZWFkU3RyZWFtOwogIC0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRl Z3kgKGlkZW50aWNhbCB0byBfaGFzaF9nZXRidWYgd2l0aG91dCBhIHN0cmF0ZWd5KS4KCnBn X3N0YXRfaW8ncyBwZXItc3RyYXRlZ3kgSU8gY29udGV4dHMgY29sbGFwc2U6IElPQ09OVEVY VF9CVUxLUkVBRCwKSU9DT05URVhUX0JVTEtXUklURSBhbmQgSU9DT05URVhUX1ZBQ1VVTSBh cmUgcmVtb3ZlZCwgbGVhdmluZyBJT0NPTlRFWFRfSU5JVAphbmQgSU9DT05URVhUX05PUk1B TC4gIElPT1BfUkVVU0Ugb25seSBldmVyIG9jY3VycmVkIHdoaWxlIHJlY3ljbGluZyBhIHJp bmcKYnVmZmVyLCBzbyBpdCBpcyBubyBsb25nZXIgdHJhY2tlZDsgR2V0VmljdGltQnVmZmVy IGNvdW50cyBJT09QX0VWSUNUIG9ubHkuCgpUaGUgdmFjdXVtX2J1ZmZlcl91c2FnZV9saW1p dCBHVUMgYW5kIHRoZSBWQUNVVU0vQU5BTFlaRSAoQlVGRkVSX1VTQUdFX0xJTUlUCi4uLikg b3B0aW9uIGFyZSByZW1vdmVkLCBhbG9uZyB3aXRoIHRoZSBWYWN1dW1CdWZmZXJVc2FnZUxp bWl0IGdsb2JhbCwgdGhlCnJpbmctc2l6ZSBwbHVtYmluZyB0aHJvdWdoIFZhY3V1bVBhcmFt cyBhbmQgcGFyYWxsZWwgdmFjdXVtLCBhbmQgdmFjdXVtZGIncwotLWJ1ZmZlci11c2FnZS1s aW1pdCBjbGllbnQgb3B0aW9uLiAgcmVhZF9zdHJlYW0ncyBwZXItYmFja2VuZCBwaW4gYnVk Z2V0IGlzCm5vdyBlbmZvcmNlZCBzb2xlbHkgYnkgR2V0UGluTGltaXQoKS9HZXRMb2NhbFBp bkxpbWl0KCksIHdoaWNoIGFscmVhZHkgYXBwbGllZAphbmQgaXMgdW5jaGFuZ2VkIGZvciB0 aGUgKGZvcm1lcmx5IHVuaXZlcnNhbCkgbm8tc3RyYXRlZ3kgY2FzZS4KCkRvY3VtZW50YXRp b24gYW5kIHRoZSBzdGF0cy9hbWNoZWNrIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHVwZGF0ZWQg dG8gZHJvcCB0aGUKcmVtb3ZlZCBjb250ZXh0cyBhbmQgb3B0aW9ucy4KLS0tCiBjb250cmli L2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgICAgICAgfCAgMTYgKy0KIGNvbnRy aWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwgICAgICAgICAgICB8ICAxNiArLQogY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9naW4uYyAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBj b250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jICAgICAgICAgICAgICAgfCAgIDMgLQog Y29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAgICAgIHwgIDExICst CiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg LQogY29udHJpYi9ibG9vbS9ibHV0aWxzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBjb250cmliL2Jsb29tL2JsdmFjdXVtLmMgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgLQogY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMgICAgICAgICAgICAgICAgIHwg ICAyICstCiBjb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYyAgICAgICAgICAgICAg fCAgIDEgLQogY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyAgICAgICAgICAgICAg IHwgICAxIC0KIGNvbnRyaWIvcGdfdmlzaWJpbGl0eS9wZ192aXNpYmlsaXR5LmMgICAgICAg ICB8ICAgNyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyAgICAgICAg ICAgIHwgICAzIC0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYyAgICAgICAg ICAgICB8ICAgOSArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jICAgICAg ICAgICAgIHwgIDM3ICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAg ICAgICAgICAgfCAgMzAgLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAg ICAgICAgICAgICB8ICAzOCArLQogZG9jL3NyYy9zZ21sL3JlZi9hbmFseXplLnNnbWwgICAg ICAgICAgICAgICAgIHwgIDIxIC0KIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAg ICAgICAgICAgICAgICB8ICAyNSAtCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f cmV2bWFwLmMgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5p bnNlcnQuYyAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dp bnV0aWwuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2ludmFjdXVtLmMgICAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdC5jICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWN1dW0uYyAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNob3ZmbC5jICAgICAgICAgICAgfCAgNTUgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jICAgICAgICAgICAgfCAgNDAgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA0ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oaW8uYyAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAyMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICAgICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgICAgICAgfCAgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgICAgICAgICAgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd1dGlscy5jICAgICAgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNlcnQuYyAgICAg ICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAg ICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAg ICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMgICAg ICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAg ICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAg ICAgICAgICAgICAgICAgfCAxMTggKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMgICAgICAgICB8ICAyMSArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2RhdGFjaGVja3N1bV9zdGF0ZS5jICAgfCAgMzMgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv YWlvL3JlYWRfc3RyZWFtLmMgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvUkVBRE1FICAgICAgICAgICAgIHwgIDQ0IC0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAxODUgKysrLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgICAgICAgICB8IDQzNCArLS0tLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZnJlZXNwYWNlL2ZyZWVzcGFjZS5jICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL21kLmMgICAgICAgICAgICAg ICAgIHwgIDExICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYyAg ICAgICAgfCAgNDUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAg ICAgICAgICB8ICAgMSAtCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJz LmRhdCAgICAgfCAgMTAgLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlIHwgICAzIC0KIHNyYy9iaW4vc2NyaXB0cy92YWN1dW1kYi5jICAgICAgICAg ICAgICAgICAgICB8ICAxMyAtCiBzcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMgICAgICAg ICAgICAgICAgICAgfCAgMjEgLQogc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5oICAgICAg ICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAg ICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaC5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hpby5oICAg ICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFj dXVtLmggICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4u aCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgLQogc3JjL2luY2x1ZGUvcGdzdGF0Lmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdl L2J1Zi5oICAgICAgICAgICAgICAgICAgICAgfCAgIDcgLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9idWZfaW50ZXJuYWxzLmggICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9zdG9y YWdlL2J1Zm1nci5oICAgICAgICAgICAgICAgICAgfCAgMzIgKy0KIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvcmVhZF9zdHJlYW0uaCAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUv dXRpbHMvZ3VjX2hvb2tzLmggICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYyAgICAgICAgICB8ICAgNyArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQgICAgICAgICAgIHwgMTEwICstLS0tCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ZhY3V1bS5vdXQgICAgICAgICAgfCAgMTkgLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3RhdHMuc3FsICAgICAgICAgICAgICAgIHwgIDU2ICstLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbCAgICAgICAgICAgICAgIHwgIDE1IC0K IHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMiAt CiA4MiBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMTU1NCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5v dXQgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5 ZTVlODRlNzIuLjU2OWIwMjAyZjFjIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhw ZWN0ZWQvY2hlY2tfaGVhcC5vdXQKKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2No ZWNrX2hlYXAub3V0CkBAIC02NywxMSArNjcsMTEgQEAgSU5TRVJUIElOVE8gaGVhcHRlc3Qg KGEsIGIpCiAJKFNFTEVDVCBncywgcmVwZWF0KCd4JywgZ3MpCiAJCUZST00gZ2VuZXJhdGVf c2VyaWVzKDEsNTApIGdzKTsKIC0tIHBnX3N0YXRfaW8gdGVzdDoKLS0tIHZlcmlmeV9oZWFw YW0gYWx3YXlzIHVzZXMgYSBCQVNfQlVMS1JFQUQgQnVmZmVyQWNjZXNzU3RyYXRlZ3ksIHdo ZXJlYXMgYQotLS0gc2VxdWVudGlhbCBzY2FuIGRvZXMgc28gb25seSBpZiB0aGUgdGFibGUg aXMgbGFyZ2UgZW5vdWdoIHdoZW4gY29tcGFyZWQgdG8KLS0tIHNoYXJlZCBidWZmZXJzIChz ZWUgaW5pdHNjYW4oKSkuIENSRUFURSBEQVRBQkFTRSAuLi4gYWxzbyB1bmNvbmRpdGlvbmFs bHkKLS0tIHVzZXMgYSBCQVNfQlVMS1JFQUQgc3RyYXRlZ3ksIGJ1dCB3ZSBoYXZlIGNob3Nl biB0byB1c2UgYSB0YWJsZXNwYWNlIGFuZAotLS0gdmVyaWZ5X2hlYXBhbSB0byBwcm92aWRl IGNvdmVyYWdlIGluc3RlYWQgb2YgYWRkaW5nIGFub3RoZXIgZXhwZW5zaXZlCistLSB2ZXJp ZnlfaGVhcGFtIHJlYWRzIHRoZSBoZWFwIHRocm91Z2ggdGhlIGJ1ZmZlciBtYW5hZ2VyOyB3 aXRoIHRoZQorLS0gY29vbGluZy1zdGFnZSBjbG9jayBzd2VlcCB0aGVyZSBhcmUgbm8gcGVy LXN0cmF0ZWd5IElPIGNvbnRleHRzLCBzbyB0aGUKKy0tIHJlYWRzIGFyZSBjb3VudGVkIGlu IHRoZSAnbm9ybWFsJyBjb250ZXh0LiAgQ1JFQVRFIERBVEFCQVNFIC4uLiBsaWtld2lzZQor LS0gcmVhZHMgdGhyb3VnaCB0aGUgbm9ybWFsIGNvbnRleHQsIGJ1dCB3ZSBoYXZlIGNob3Nl biB0byB1c2UgYSB0YWJsZXNwYWNlCistLSBhbmQgdmVyaWZ5X2hlYXBhbSB0byBwcm92aWRl IGNvdmVyYWdlIGluc3RlYWQgb2YgYWRkaW5nIGFub3RoZXIgZXhwZW5zaXZlCiAtLSBvcGVy YXRpb24gdG8gdGhlIG1haW4gcmVncmVzc2lvbiB0ZXN0IHN1aXRlLgogLS0KIC0tIENyZWF0 ZSBhbiBhbHRlcm5hdGl2ZSB0YWJsZXNwYWNlIGFuZCBtb3ZlIHRoZSBoZWFwdGVzdCB0YWJs ZSB0byBpdCwgY2F1c2luZwpAQCAtODMsNyArODMsNyBAQCBJTlNFUlQgSU5UTyBoZWFwdGVz dCAoYSwgYikKIFNFVCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNlcyA9IHRydWU7CiBDUkVB VEUgVEFCTEVTUEFDRSByZWdyZXNzX3Rlc3Rfc3RhdHNfdGJsc3BjIExPQ0FUSU9OICcnOwog U0VMRUNUIHN1bShyZWFkcykgQVMgc3RhdHNfYnVsa3JlYWRzX2JlZm9yZQotICBGUk9NIHBn X3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICdidWxrcmVhZCcgXGdzZXQKKyAgRlJPTSBwZ19z dGF0X2lvIFdIRVJFIGNvbnRleHQgPSAnbm9ybWFsJyBBTkQgb2JqZWN0ID0gJ3JlbGF0aW9u JyBcZ3NldAogQkVHSU47CiBBTFRFUiBUQUJMRSBoZWFwdGVzdCBTRVQgVEFCTEVTUEFDRSBy ZWdyZXNzX3Rlc3Rfc3RhdHNfdGJsc3BjOwogLS0gQ2hlY2sgdGhhdCB2YWxpZCBvcHRpb25z IGFyZSBub3QgcmVqZWN0ZWQgbm9yIGNvcnJ1cHRpb24gcmVwb3J0ZWQKQEAgLTExMSw3ICsx MTEsNyBAQCBTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0ocmVsYXRpb24gOj0gJ2hlYXB0 ZXN0Jywgc3RhcnRibG9jayA6PSAwLCBlbmRibG9jayA6PQogQ09NTUlUOwogLS0gdmVyaWZ5 X2hlYXBhbSBzaG91bGQgaGF2ZSByZWFkIGluIHRoZSBwYWdlIHdyaXR0ZW4gb3V0IGJ5CiAt LSAgIEFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRSAuLi4KLS0tIGNhdXNpbmcgYW4g YWRkaXRpb25hbCBidWxrcmVhZCwgd2hpY2ggc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiBwZ19z dGF0X2lvLgorLS0gY2F1c2luZyBhZGRpdGlvbmFsIHJlYWRzLCB3aGljaCBzaG91bGQgYmUg cmVmbGVjdGVkIGluIHBnX3N0YXRfaW8uCiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CiAgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTExOSw3ICsxMTksNyBAQCBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CiAoMSByb3cpCiAKIFNFTEVDVCBzdW0ocmVhZHMpIEFTIHN0YXRzX2J1bGty ZWFkc19hZnRlcgotICBGUk9NIHBnX3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICdidWxrcmVh ZCcgXGdzZXQKKyAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAnbm9ybWFsJyBB TkQgb2JqZWN0ID0gJ3JlbGF0aW9uJyBcZ3NldAogU0VMRUNUIDpzdGF0c19idWxrcmVhZHNf YWZ0ZXIgPiA6c3RhdHNfYnVsa3JlYWRzX2JlZm9yZTsKICA/Y29sdW1uPyAKIC0tLS0tLS0t LS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwgYi9j b250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsCmluZGV4IDE3NDViYWU2MzRlLi42 MWY3MTBkYmVkYSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFw LnNxbAorKysgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsCkBAIC0yNywx MSArMjcsMTEgQEAgSU5TRVJUIElOVE8gaGVhcHRlc3QgKGEsIGIpCiAJCUZST00gZ2VuZXJh dGVfc2VyaWVzKDEsNTApIGdzKTsKIAogLS0gcGdfc3RhdF9pbyB0ZXN0OgotLS0gdmVyaWZ5 X2hlYXBhbSBhbHdheXMgdXNlcyBhIEJBU19CVUxLUkVBRCBCdWZmZXJBY2Nlc3NTdHJhdGVn eSwgd2hlcmVhcyBhCi0tLSBzZXF1ZW50aWFsIHNjYW4gZG9lcyBzbyBvbmx5IGlmIHRoZSB0 YWJsZSBpcyBsYXJnZSBlbm91Z2ggd2hlbiBjb21wYXJlZCB0bwotLS0gc2hhcmVkIGJ1ZmZl cnMgKHNlZSBpbml0c2NhbigpKS4gQ1JFQVRFIERBVEFCQVNFIC4uLiBhbHNvIHVuY29uZGl0 aW9uYWxseQotLS0gdXNlcyBhIEJBU19CVUxLUkVBRCBzdHJhdGVneSwgYnV0IHdlIGhhdmUg Y2hvc2VuIHRvIHVzZSBhIHRhYmxlc3BhY2UgYW5kCi0tLSB2ZXJpZnlfaGVhcGFtIHRvIHBy b3ZpZGUgY292ZXJhZ2UgaW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKKy0t IHZlcmlmeV9oZWFwYW0gcmVhZHMgdGhlIGhlYXAgdGhyb3VnaCB0aGUgYnVmZmVyIG1hbmFn ZXI7IHdpdGggdGhlCistLSBjb29saW5nLXN0YWdlIGNsb2NrIHN3ZWVwIHRoZXJlIGFyZSBu byBwZXItc3RyYXRlZ3kgSU8gY29udGV4dHMsIHNvIHRoZQorLS0gcmVhZHMgYXJlIGNvdW50 ZWQgaW4gdGhlICdub3JtYWwnIGNvbnRleHQuICBDUkVBVEUgREFUQUJBU0UgLi4uIGxpa2V3 aXNlCistLSByZWFkcyB0aHJvdWdoIHRoZSBub3JtYWwgY29udGV4dCwgYnV0IHdlIGhhdmUg Y2hvc2VuIHRvIHVzZSBhIHRhYmxlc3BhY2UKKy0tIGFuZCB2ZXJpZnlfaGVhcGFtIHRvIHBy b3ZpZGUgY292ZXJhZ2UgaW5zdGVhZCBvZiBhZGRpbmcgYW5vdGhlciBleHBlbnNpdmUKIC0t IG9wZXJhdGlvbiB0byB0aGUgbWFpbiByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCiAtLQogLS0g Q3JlYXRlIGFuIGFsdGVybmF0aXZlIHRhYmxlc3BhY2UgYW5kIG1vdmUgdGhlIGhlYXB0ZXN0 IHRhYmxlIHRvIGl0LCBjYXVzaW5nCkBAIC00Myw3ICs0Myw3IEBAIElOU0VSVCBJTlRPIGhl YXB0ZXN0IChhLCBiKQogU0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsK IENSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGMgTE9DQVRJT04g Jyc7CiBTRUxFQ1Qgc3VtKHJlYWRzKSBBUyBzdGF0c19idWxrcmVhZHNfYmVmb3JlCi0gIEZS T00gcGdfc3RhdF9pbyBXSEVSRSBjb250ZXh0ID0gJ2J1bGtyZWFkJyBcZ3NldAorICBGUk9N IHBnX3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICdub3JtYWwnIEFORCBvYmplY3QgPSAncmVs YXRpb24nIFxnc2V0CiBCRUdJTjsKIEFMVEVSIFRBQkxFIGhlYXB0ZXN0IFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CiAtLSBDaGVjayB0aGF0IHZhbGlkIG9w dGlvbnMgYXJlIG5vdCByZWplY3RlZCBub3IgY29ycnVwdGlvbiByZXBvcnRlZApAQCAtNTYs MTAgKzU2LDEwIEBAIENPTU1JVDsKIAogLS0gdmVyaWZ5X2hlYXBhbSBzaG91bGQgaGF2ZSBy ZWFkIGluIHRoZSBwYWdlIHdyaXR0ZW4gb3V0IGJ5CiAtLSAgIEFMVEVSIFRBQkxFIC4uLiBT RVQgVEFCTEVTUEFDRSAuLi4KLS0tIGNhdXNpbmcgYW4gYWRkaXRpb25hbCBidWxrcmVhZCwg d2hpY2ggc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiBwZ19zdGF0X2lvLgorLS0gY2F1c2luZyBh ZGRpdGlvbmFsIHJlYWRzLCB3aGljaCBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHBnX3N0YXRf aW8uCiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1Qgc3VtKHJl YWRzKSBBUyBzdGF0c19idWxrcmVhZHNfYWZ0ZXIKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJF IGNvbnRleHQgPSAnYnVsa3JlYWQnIFxnc2V0CisgIEZST00gcGdfc3RhdF9pbyBXSEVSRSBj b250ZXh0ID0gJ25vcm1hbCcgQU5EIG9iamVjdCA9ICdyZWxhdGlvbicgXGdzZXQKIFNFTEVD VCA6c3RhdHNfYnVsa3JlYWRzX2FmdGVyID4gOnN0YXRzX2J1bGtyZWFkc19iZWZvcmU7CiAK IENSRUFURSBST0xFIHJlZ3Jlc3NfaGVhcHRlc3Rfcm9sZTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvYW1jaGVjay92ZXJpZnlfZ2luLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5j CmluZGV4IGZhMDY2ODllZDViLi5lZjJlNjQ0NzVjNiAxMDA2NDQKLS0tIGEvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9naW4uYworKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X2dpbi5j CkBAIC02Myw4ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGdpbl9jaGVja19wYXJlbnRfa2V5c19j b25zaXN0ZW5jeShSZWxhdGlvbiByZWwsCiBzdGF0aWMgdm9pZCBjaGVja19pbmRleF9wYWdl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZmZlciwgQmxvY2tOdW1iZXIgYmxvY2tObyk7CiBz dGF0aWMgSW5kZXhUdXBsZSBnaW5fcmVmaW5kX3BhcmVudChSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCQlCbG9ja051bWJlciBwYXJlbnRibGtubywKLQkJCQkJCQkJCUJsb2NrTnVtYmVyIGNo aWxkYmxrbm8sCi0JCQkJCQkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7CisJ CQkJCQkJCQlCbG9ja051bWJlciBjaGlsZGJsa25vKTsKIHN0YXRpYyBJdGVtSWQgUGFnZUdl dEl0ZW1JZENhcmVmdWwoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibG9jaywgUGFnZSBw YWdlLAogCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgb2Zmc2V0KTsKIApAQCAtMTMzLDcgKzEz Miw2IEBAIGdpblJlYWRUdXBsZVdpdGhvdXRTdGF0ZShJbmRleFR1cGxlIGl0dXAsIGludCAq bml0ZW1zKQogc3RhdGljIHZvaWQKIGdpbl9jaGVja19wb3N0aW5nX3RyZWVfcGFyZW50X2tl eXNfY29uc2lzdGVuY3koUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBwb3N0aW5nX3RyZWVf cm9vdCkKIHsKLQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSA9IEdldEFjY2Vzc1N0 cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAJR2luUG9zdGluZ1RyZWVTY2FuSXRlbSAqc3RhY2s7 CiAJTWVtb3J5Q29udGV4dCBtY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAg LTE3MSw4ICsxNjksNyBAQCBnaW5fY2hlY2tfcG9zdGluZ190cmVlX3BhcmVudF9rZXlzX2Nv bnNpc3RlbmN5KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgcG9zdGluZwogCiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJl bCwgTUFJTl9GT1JLTlVNLCBzdGFjay0+Ymxrbm8sCi0JCQkJCQkJCQlSQk1fTk9STUFMLCBz dHJhdGVneSk7CisJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9S S05VTSwgc3RhY2stPmJsa25vLCBSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZlcihidWZmZXIs IEdJTl9TSEFSRSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKQEAgLTM5 MSw3ICszODgsNiBAQCBnaW5fY2hlY2tfcGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVsYXRp b24gcmVsLAogCQkJCQkJCQkgIHZvaWQgKmNhbGxiYWNrX3N0YXRlLAogCQkJCQkJCQkgIGJv b2wgcmVhZG9ubHkpCiB7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kgPSBHZXRB Y2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwogCUdpblNjYW5JdGVtICpzdGFjazsKIAlN ZW1vcnlDb250ZXh0IG1jdHg7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwpAQCAtNDMw LDggKzQyNiw3IEBAIGdpbl9jaGVja19wYXJlbnRfa2V5c19jb25zaXN0ZW5jeShSZWxhdGlv biByZWwsCiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQlidWZmZXIgPSBSZWFk QnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIHN0YWNrLT5ibGtubywKLQkJCQkJ CQkJCVJCTV9OT1JNQUwsIHN0cmF0ZWd5KTsKKwkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVu ZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBzdGFjay0+Ymxrbm8sIFJCTV9OT1JNQUwpOwogCQlM b2NrQnVmZmVyKGJ1ZmZlciwgR0lOX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKTsKIAkJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKQEAg LTU2Nyw3ICs1NjIsNyBAQCBnaW5fY2hlY2tfcGFyZW50X2tleXNfY29uc2lzdGVuY3koUmVs YXRpb24gcmVsLAogCQkJCQkgKi8KIAkJCQkJcGZyZWUoc3RhY2stPnBhcmVudHR1cCk7CiAJ CQkJCXN0YWNrLT5wYXJlbnR0dXAgPSBnaW5fcmVmaW5kX3BhcmVudChyZWwsIHN0YWNrLT5w YXJlbnRibGssCi0JCQkJCQkJCQkJCQkJCSBzdGFjay0+Ymxrbm8sIHN0cmF0ZWd5KTsKKwkJ CQkJCQkJCQkJCQkJIHN0YWNrLT5ibGtubyk7CiAKIAkJCQkJLyogV2UgZm91bmQgaXQgLSBt YWtlIGEgZmluYWwgY2hlY2sgYmVmb3JlIGZhaWxpbmcgKi8KIAkJCQkJaWYgKCFzdGFjay0+ cGFyZW50dHVwKQpAQCAtNzE5LDcgKzcxNCw3IEBAIGNoZWNrX2luZGV4X3BhZ2UoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmZmVyLCBCbG9ja051bWJlciBibG9ja05vKQogICovCiBzdGF0 aWMgSW5kZXhUdXBsZQogZ2luX3JlZmluZF9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBwYXJlbnRibGtubywKLQkJCQkgIEJsb2NrTnVtYmVyIGNoaWxkYmxrbm8sIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQorCQkJCSAgQmxvY2tOdW1iZXIgY2hpbGRibGtu bykKIHsKIAlCdWZmZXIJCXBhcmVudGJ1ZjsKIAlQYWdlCQlwYXJlbnRwYWdlOwpAQCAtNzI3 LDggKzcyMiw3IEBAIGdpbl9yZWZpbmRfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgcGFyZW50Ymxrbm8sCiAJCQkJcGFyZW50X21heG9mZjsKIAlJbmRleFR1cGxlCXJlc3Vs dCA9IE5VTEw7CiAKLQlwYXJlbnRidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlO X0ZPUktOVU0sIHBhcmVudGJsa25vLCBSQk1fTk9STUFMLAotCQkJCQkJCQkgICBzdHJhdGVn eSk7CisJcGFyZW50YnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVN LCBwYXJlbnRibGtubywgUkJNX05PUk1BTCk7CiAKIAlMb2NrQnVmZmVyKHBhcmVudGJ1Ziwg R0lOX1NIQVJFKTsKIAlwYXJlbnRwYWdlID0gQnVmZmVyR2V0UGFnZShwYXJlbnRidWYpOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyBiL2NvbnRyaWIv YW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKaW5kZXggMjBmZjU4YWE3ODIuLmU0MzM2ZWI1ZmMy IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCisrKyBiL2Nv bnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKQEAgLTEyNiw3ICsxMjYsNiBAQCB0eXBl ZGVmIHN0cnVjdCBIZWFwQ2hlY2tDb250ZXh0CiAJICogcmVjZW50IGJsb2NrIGluIHRoZSBi dWZmZXIgeWllbGRlZCBieSB0aGUgcmVhZCBzdHJlYW0gQVBJLgogCSAqLwogCUJsb2NrTnVt YmVyIGJsa25vOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKIAlCdWZmZXIJ CWJ1ZmZlcjsKIAlQYWdlCQlwYWdlOwogCkBAIC0zNzQsNyArMzczLDYgQEAgdmVyaWZ5X2hl YXBhbShQR19GVU5DVElPTl9BUkdTKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCX0KIAotCWN0 eC5ic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwogCWN0eC5i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCWN0eC5wYWdlID0gTlVMTDsKIApAQCAtNDcyLDcg KzQ3MCw2IEBAIHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAl9CiAKIAlzdHJl YW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihzdHJlYW1fZmxhZ3MsCi0JCQkJCQkJ CQkJY3R4LmJzdHJhdGVneSwKIAkJCQkJCQkJCQljdHgucmVsLAogCQkJCQkJCQkJCU1BSU5f Rk9SS05VTSwKIAkJCQkJCQkJCQlzdHJlYW1fY2IsCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUu YwppbmRleCAzZWYyZDY2ZjgyNi4uMThjZDg5MjhmZGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYwpAQCAtODgsOCArODgsNiBAQCB0eXBlZGVmIHN0cnVjdCBCdHJlZUNoZWNrU3Rh dGUKIAlib29sCQljaGVja3VuaXF1ZTsKIAkvKiBQZXItcGFnZSBjb250ZXh0ICovCiAJTWVt b3J5Q29udGV4dCB0YXJnZXRjb250ZXh0OwotCS8qIEJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kg Ki8KLQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBjaGVja3N0cmF0ZWd5OwogCiAJLyoKIAkgKiBJ bmZvIGZvciB1bmlxdWVuZXNzIGNoZWNraW5nLiBGaWxsIHRoaXMgZmllbGQgYW5kIHRoZSBv bmUgYmVsb3cgb25jZQpAQCAtNDkwLDcgKzQ4OCw2IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVs KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJ c3RhdGUtPnRhcmdldGNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1l bW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCQkgImFtY2hlY2sgY29udGV4dCIsCiAJCQkJCQkJ CQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7Ci0Jc3RhdGUtPmNoZWNrc3RyYXRlZ3kg PSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwogCiAJLyogR2V0IHRydWUgcm9v dCBibG9jayBmcm9tIG1ldGEtcGFnZSAqLwogCW1ldGFwYWdlID0gcGFsbG9jX2J0cmVlX3Bh Z2Uoc3RhdGUsIEJUUkVFX01FVEFQQUdFKTsKQEAgLTExMTUsNyArMTExMiw3IEBAIGJ0X3Jl Y2hlY2tfc2libGluZ19saW5rcyhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLAogCiAJCS8qIENv dXBsZSBsb2NrcyBpbiB0aGUgdXN1YWwgb3JkZXIgZm9yIG5idHJlZTogIExlZnQgdG8gcmln aHQgKi8KIAkJbGJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChzdGF0ZS0+cmVsLCBNQUlOX0ZP UktOVU0sIGxlZnRjdXJyZW50LAotCQkJCQkJCQkgIFJCTV9OT1JNQUwsIHN0YXRlLT5jaGVj a3N0cmF0ZWd5KTsKKwkJCQkJCQkJICBSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZlcihsYnVm LCBCVF9SRUFEKTsKIAkJX2J0X2NoZWNrcGFnZShzdGF0ZS0+cmVsLCBsYnVmKTsKIAkJcGFn ZSA9IEJ1ZmZlckdldFBhZ2UobGJ1Zik7CkBAIC0xMTM4LDggKzExMzUsNyBAQCBidF9yZWNo ZWNrX3NpYmxpbmdfbGlua3MoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKIAkJaWYgKG5ld3Rh cmdldGJsb2NrICE9IGxlZnRjdXJyZW50KQogCQl7CiAJCQluZXd0YXJnZXRidWYgPSBSZWFk QnVmZmVyRXh0ZW5kZWQoc3RhdGUtPnJlbCwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJCQkg IG5ld3RhcmdldGJsb2NrLCBSQk1fTk9STUFMLAotCQkJCQkJCQkJCQkgIHN0YXRlLT5jaGVj a3N0cmF0ZWd5KTsKKwkJCQkJCQkJCQkJICBuZXd0YXJnZXRibG9jaywgUkJNX05PUk1BTCk7 CiAJCQlMb2NrQnVmZmVyKG5ld3RhcmdldGJ1ZiwgQlRfUkVBRCk7CiAJCQlfYnRfY2hlY2tw YWdlKHN0YXRlLT5yZWwsIG5ld3RhcmdldGJ1Zik7CiAJCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShuZXd0YXJnZXRidWYpOwpAQCAtMzMwMCw4ICszMjk2LDcgQEAgcGFsbG9jX2J0cmVlX3Bh Z2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2tudW0pCiAJICog V2UgY29weSB0aGUgcGFnZSBpbnRvIGxvY2FsIHN0b3JhZ2UgdG8gYXZvaWQgaG9sZGluZyBw aW4gb24gdGhlIGJ1ZmZlcgogCSAqIGxvbmdlciB0aGFuIHdlIG11c3QuCiAJICovCi0JYnVm ZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHN0YXRlLT5yZWwsIE1BSU5fRk9SS05VTSwgYmxv Y2tudW0sIFJCTV9OT1JNQUwsCi0JCQkJCQkJCXN0YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwli dWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc3RhdGUtPnJlbCwgTUFJTl9GT1JLTlVNLCBi bG9ja251bSwgUkJNX05PUk1BTCk7CiAJTG9ja0J1ZmZlcihidWZmZXIsIEJUX1JFQUQpOwog CiAJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMgYi9jb250cmliL2Js b29tL2Jsc2Nhbi5jCmluZGV4IDFhMGU0MjAyMWVjLi5lZDYyZDVjMDRlNiAxMDA2NDQKLS0t IGEvY29udHJpYi9ibG9vbS9ibHNjYW4uYworKysgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5j CkBAIC04MCw3ICs4MCw2IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElE Qml0bWFwICp0Ym0pCiAJQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbnBhZ2VzOwogCWludAkJ CWk7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYmFzOwogCUJsb29tU2Nhbk9wYXF1ZSBzbyA9 IChCbG9vbVNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsKIAlCbG9ja1JhbmdlUmVhZFN0cmVh bVByaXZhdGUgcDsKIAlSZWFkU3RyZWFtICpzdHJlYW07CkBAIC0xMTMsMTEgKzExMiw2IEBA IGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJCX0K IAl9CiAKLQkvKgotCSAqIFdlJ3JlIGdvaW5nIHRvIHJlYWQgdGhlIHdob2xlIGluZGV4LiBU aGlzIGlzIHdoeSB3ZSB1c2UgYXBwcm9wcmlhdGUKLQkgKiBidWZmZXIgYWNjZXNzIHN0cmF0 ZWd5LgotCSAqLwotCWJhcyA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAJ bnBhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhzY2FuLT5pbmRleFJlbGF0aW9u KTsKIAlwZ3N0YXRfY291bnRfaW5kZXhfc2NhbihzY2FuLT5pbmRleFJlbGF0aW9uKTsKIAlp ZiAoc2Nhbi0+aW5zdHJ1bWVudCkKQEAgLTEzMyw3ICsxMjcsNiBAQCBibGdldGJpdG1hcChJ bmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1hcCAqdGJtKQogCSAqLwogCXN0cmVhbSA9IHJl YWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJ CVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQliYXMsCiAJCQkJCQkJCQkJ c2Nhbi0+aW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJ CQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IsCkBAIC0xODQsNyArMTc3LDYgQEAgYmxn ZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAogCUFzc2Vy dChyZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZm ZXIpOwogCXJlYWRfc3RyZWFtX2VuZChzdHJlYW0pOwotCUZyZWVBY2Nlc3NTdHJhdGVneShi YXMpOwogCiAJcmV0dXJuIG50aWRzOwogfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9ibG9vbS9i bHV0aWxzLmMgYi9jb250cmliL2Jsb29tL2JsdXRpbHMuYwppbmRleCA1MTExY2RjNmRkNi4u NmMxZWMxNWM1OWMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCisrKyBi L2NvbnRyaWIvYmxvb20vYmx1dGlscy5jCkBAIC0zOTIsNyArMzkyLDcgQEAgQmxvb21OZXdC dWZmZXIoUmVsYXRpb24gaW5kZXgpCiAJfQogCiAJLyogTXVzdCBleHRlbmQgdGhlIGZpbGUg Ki8KLQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9G T1JLTlVNLCBOVUxMLAorCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5k ZXgpLCBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CiAKIAlyZXR1 cm4gYnVmZmVyOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIEJsb29tSW5pdE1ldGFwYWdlKFJlbGF0 aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pCiAJICogYmxvY2sgbnVtYmVyIDAgKEJM T09NX01FVEFQQUdFX0JMS05PKS4gIE5vIG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCiAJ ICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5vdCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5 ZXQuCiAJICovCi0JbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgZm9y a251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQoaW5kZXgsIGZvcmtudW0sIFBfTkVXLCBSQk1fTk9STUFMKTsKIAlMb2Nr QnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJQXNzZXJ0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFCdWZmZXIpID09IEJMT09NX01FVEFQQUdFX0JMS05P KTsKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9ibG9vbS9ibHZhY3V1bS5jIGIvY29udHJpYi9i bG9vbS9ibHZhY3V1bS5jCmluZGV4IDZiZWIxYzIwZWJiLi4wOGQ3NzA1ZTM2NSAxMDA2NDQK LS0tIGEvY29udHJpYi9ibG9vbS9ibHZhY3V1bS5jCisrKyBiL2NvbnRyaWIvYmxvb20vYmx2 YWN1dW0uYwpAQCAtNjYsNyArNjYsNiBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCXN0cmVhbSA9IHJlYWRf c3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJCQkJ CQkJCQlSRUFEX1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFU Q0hJTkcsCi0JCQkJCQkJCQkJaW5mby0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJaW5kZXgsCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3Ry ZWFtX2NiLApAQCAtMjE5LDcgKzIxOCw2IEBAIGJsdmFjdXVtY2xlYW51cChJbmRleFZhY3V1 bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJc3RyZWFtID0g cmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRFTkFOQ0UgfAog CQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VT RV9CQVRDSElORywKLQkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKIAkJCQkJCQkJCQlpbmRl eCwKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVh ZF9zdHJlYW1fY2IsCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2Uu YyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvcmF3cGFnZS5jCmluZGV4IGQxMzY1OTNlZGIyLi5i YmU4ZWRmOTE2MSAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMK KysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMKQEAgLTE4OCw3ICsxODgsNyBA QCBnZXRfcmF3X3BhZ2VfaW50ZXJuYWwodGV4dCAqcmVsbmFtZSwgRm9ya051bWJlciBmb3Jr bnVtLCBCbG9ja051bWJlciBibGtubykKIAogCS8qIFRha2UgYSB2ZXJiYXRpbSBjb3B5IG9m IHRoZSBwYWdlICovCiAKLQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBmb3JrbnVt LCBibGtubywgUkJNX05PUk1BTCwgTlVMTCk7CisJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVk KHJlbCwgZm9ya251bSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCUxvY2tCdWZmZXIoYnVmLCBC VUZGRVJfTE9DS19TSEFSRSk7CiAKIAltZW1jcHkocmF3X3BhZ2VfZGF0YSwgQnVmZmVyR2V0 UGFnZShidWYpLCBCTENLU1opOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wcmV3YXJtL2F1 dG9wcmV3YXJtLmMgYi9jb250cmliL3BnX3ByZXdhcm0vYXV0b3ByZXdhcm0uYwppbmRleCBk ZWI0YzI2NzFiNS4uMzNhZDg4ZWE4YjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcHJld2Fy bS9hdXRvcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9hdXRvcHJld2FybS5j CkBAIC02MzAsNyArNjMwLDYgQEAgYXV0b3ByZXdhcm1fZGF0YWJhc2VfbWFpbihEYXR1bSBt YWluX2FyZykKIAkJCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURf U1RSRUFNX01BSU5URU5BTkNFIHwKIAkJCQkJCQkJCQkJCVJFQURfU1RSRUFNX0RFRkFVTFQg fAogCQkJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCQkJ TlVMTCwKIAkJCQkJCQkJCQkJCXJlbCwKIAkJCQkJCQkJCQkJCXAuZm9ya251bSwKIAkJCQkJ CQkJCQkJCWFwd19yZWFkX3N0cmVhbV9uZXh0X2Jsb2NrLApkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9wZ19wcmV3 YXJtLmMKaW5kZXggYzI3MTYwODY2OTMuLjcxNmE2NzU0YTdlIDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3ByZXdhcm0vcGdfcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9w Z19wcmV3YXJtLmMKQEAgLTI1MSw3ICsyNTEsNiBAQCBwZ19wcmV3YXJtKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RS RUFNX01BSU5URU5BTkNFIHwKIAkJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJ CQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKLQkJCQkJCQkJCQkJTlVMTCwKIAkJ CQkJCQkJCQkJcmVsLAogCQkJCQkJCQkJCQlmb3JrTnVtYmVyLAogCQkJCQkJCQkJCQlibG9j a19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdmlzaWJp bGl0eS9wZ192aXNpYmlsaXR5LmMgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvcGdfdmlzaWJp bGl0eS5jCmluZGV4IGRmYWIwYjY0Y2Y1Li5jY2I4MjlhMDllYiAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ192aXNpYmlsaXR5L3BnX3Zpc2liaWxpdHkuYworKysgYi9jb250cmliL3BnX3Zp c2liaWxpdHkvcGdfdmlzaWJpbGl0eS5jCkBAIC00ODgsNyArNDg4LDYgQEAgY29sbGVjdF92 aXNpYmlsaXR5X2RhdGEoT2lkIHJlbGlkLCBib29sIGluY2x1ZGVfcGQpCiAJdmJpdHMJICAg KmluZm87CiAJQmxvY2tOdW1iZXIgYmxrbm87CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gR2V0QWNjZXNz U3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKIAlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUg cDsKIAlSZWFkU3RyZWFtICpzdHJlYW0gPSBOVUxMOwogCkBAIC01MTQsNyArNTEzLDYgQEAg Y29sbGVjdF92aXNpYmlsaXR5X2RhdGEoT2lkIHJlbGlkLCBib29sIGluY2x1ZGVfcGQpCiAJ CSAqLwogCQlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVB TV9GVUxMIHwKIAkJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJ CQkJCQlic3RyYXRlZ3ksCiAJCQkJCQkJCQkJCXJlbCwKIAkJCQkJCQkJCQkJTUFJTl9GT1JL TlVNLAogCQkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKQEAgLTUzOCw4 ICs1MzYsNyBAQCBjb2xsZWN0X3Zpc2liaWxpdHlfZGF0YShPaWQgcmVsaWQsIGJvb2wgaW5j bHVkZV9wZCkKIAogCQkvKgogCQkgKiBQYWdlLWxldmVsIGRhdGEgcmVxdWlyZXMgcmVhZGlu ZyBldmVyeSBibG9jaywgc28gb25seSBnZXQgaXQgaWYgdGhlCi0JCSAqIGNhbGxlciBuZWVk cyBpdC4gIFVzZSBhIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3ksIHRvbywgdG8gcHJldmVudAot CQkgKiBjYWNoZS10cmFzaGluZy4KKwkJICogY2FsbGVyIG5lZWRzIGl0LgogCQkgKi8KIAkJ aWYgKGluY2x1ZGVfcGQpCiAJCXsKQEAgLTcwMCw3ICs2OTcsNiBAQCBjb2xsZWN0X2NvcnJ1 cHRfaXRlbXMoT2lkIHJlbGlkLCBib29sIGFsbF92aXNpYmxlLCBib29sIGFsbF9mcm96ZW4p CiAJUmVsYXRpb24JcmVsOwogCWNvcnJ1cHRfaXRlbXMgKml0ZW1zOwogCUJ1ZmZlcgkJdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVn eSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAJVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJc3RydWN0IGNvbGxlY3RfY29y cnVwdF9pdGVtc19yZWFkX3N0cmVhbV9wcml2YXRlIHA7CiAJUmVhZFN0cmVhbSAqc3RyZWFt OwpAQCAtNzM0LDcgKzczMCw2IEBAIGNvbGxlY3RfY29ycnVwdF9pdGVtcyhPaWQgcmVsaWQs IGJvb2wgYWxsX3Zpc2libGUsIGJvb2wgYWxsX2Zyb3plbikKIAlwLmFsbF9mcm96ZW4gPSBh bGxfZnJvemVuOwogCXAuYWxsX3Zpc2libGUgPSBhbGxfdmlzaWJsZTsKIAlzdHJlYW0gPSBy ZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9GVUxMLAotCQkJCQkJCQkJ CWJzdHJhdGVneSwKIAkJCQkJCQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAog CQkJCQkJCQkJCWNvbGxlY3RfY29ycnVwdF9pdGVtc19yZWFkX3N0cmVhbV9uZXh0X2Jsb2Nr LApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyBiL2Nv bnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMKaW5kZXggMjFlMGI1MGZiNGIuLjhl MTdkNDg5OTFlIDEwMDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJv eC5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMKQEAgLTExNiwx MyArMTE2LDExIEBAIHN0YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVs LCBvdXRwdXRfdHlwZSAqc3RhdCkKIHsKIAlCbG9ja051bWJlciBuYmxvY2tzOwotCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKIAlUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW47 CiAJU3RhdEFwcHJveFJlYWRTdHJlYW1Qcml2YXRlIHA7CiAJUmVhZFN0cmVhbSAqc3RyZWFt OwogCiAJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQo cmVsKTsKLQlic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwog CiAJbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKIApAQCAtMTQx LDcgKzEzOSw2IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBl ICpzdGF0KQogCSAqIGNhdXRpb24uCiAJICovCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCwKLQkJCQkJCQkJCQlic3RyYXRlZ3ksCiAJ CQkJCQkJCQkJcmVsLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlzdGF0 YXBwcm94X2hlYXBfcmVhZF9zdHJlYW1fbmV4dCwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdz dGF0dHVwbGUvcGdzdGF0aW5kZXguYyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5k ZXguYwppbmRleCA4OTUxYWQwYWFjNC4uYTA5MjJiMzg2YTAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdzdGF0dHVwbGUvcGdzdGF0aW5kZXguYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdGluZGV4LmMKQEAgLTIxNyw3ICsyMTcsNiBAQCBwZ3N0YXRpbmRleF9pbXBsKFJl bGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJQmxvY2tOdW1iZXIgbmJs b2NrczsKIAlCbG9ja051bWJlciBibGtubzsKIAlCVEluZGV4U3RhdCBpbmRleFN0YXQ7Ci0J QnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFT X0JVTEtSRUFEKTsKIAlCbG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKIAlSZWFkU3Ry ZWFtICpzdHJlYW07CiAJQmxvY2tOdW1iZXIgc3RhcnRibGs7CkBAIC0yNTQsNyArMjUzLDcg QEAgcGdzdGF0aW5kZXhfaW1wbChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNp bmZvKQogCSAqIFJlYWQgbWV0YXBhZ2UKIAkgKi8KIAl7Ci0JCUJ1ZmZlcgkJYnVmZmVyID0g UmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCAwLCBSQk1fTk9STUFMLCBi c3RyYXRlZ3kpOworCQlCdWZmZXIJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWws IE1BSU5fRk9SS05VTSwgMCwgUkJNX05PUk1BTCk7CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGJ1ZmZlcik7CiAJCUJUTWV0YVBhZ2VEYXRhICptZXRhZCA9IEJUUGFnZUdldE1l dGEocGFnZSk7CiAKQEAgLTI5MSw3ICsyOTAsNiBAQCBwZ3N0YXRpbmRleF9pbXBsKFJlbGF0 aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJICovCiAJc3RyZWFtID0gcmVh ZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJ UkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCWJzdHJhdGVneSwKIAkJCQkJ CQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3Jh bmdlX3JlYWRfc3RyZWFtX2NiLApAQCAtNjEyLDcgKzYxMCw2IEBAIHBnc3RhdGhhc2hpbmRl eChQR19GVU5DVElPTl9BUkdTKQogCUJsb2NrTnVtYmVyIGJsa25vOwogCVJlbGF0aW9uCXJl bDsKIAlIYXNoSW5kZXhTdGF0IHN0YXRzOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJh dGVneTsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJVHVwbGVEZXNjCXR1cGxlRGVzYzsKIAlEYXR1 bQkJdmFsdWVzWzhdOwpAQCAtNjY1LDkgKzY2Miw2IEBAIHBnc3RhdGhhc2hpbmRleChQR19G VU5DVElPTl9BUkdTKQogCS8qIEdldCB0aGUgY3VycmVudCByZWxhdGlvbiBsZW5ndGggKi8K IAluYmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwogCi0JLyogcHJl cGFyZSBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHRoaXMgaW5kZXggKi8KLQlic3RyYXRlZ3kgPSBH ZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwotCiAJLyogU2NhbiBhbGwgYmxvY2tz IGV4Y2VwdCB0aGUgbWV0YXBhZ2UgKDB0aCBwYWdlKSB1c2luZyBzdHJlYW1pbmcgcmVhZHMg Ki8KIAlzdGFydGJsayA9IEhBU0hfTUVUQVBBR0UgKyAxOwogCkBAIC02ODAsNyArNjc0LDYg QEAgcGdzdGF0aGFzaGluZGV4KFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJc3RyZWFtID0g cmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJ CQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCWJzdHJhdGVneSwKIAkJ CQkJCQkJCQlyZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2Nr X3JhbmdlX3JlYWRfc3RyZWFtX2NiLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBs ZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmlu ZGV4IDZhN2Y4Y2I0YTdjLi45MGY3OTM4ZTk1MyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0 dHVwbGUuYwpAQCAtNjQsMjIgKzY0LDE4IEBAIHR5cGVkZWYgc3RydWN0IHBnc3RhdHR1cGxl X3R5cGUKIAl1aW50NjQJCWZyZWVfc3BhY2U7CQkvKiBmcmVlL3JldXNhYmxlIHNwYWNlIGlu IGJ5dGVzICovCiB9IHBnc3RhdHR1cGxlX3R5cGU7CiAKLXR5cGVkZWYgdm9pZCAoKnBnc3Rh dF9wYWdlKSAocGdzdGF0dHVwbGVfdHlwZSAqLCBSZWxhdGlvbiwgQmxvY2tOdW1iZXIsCi0J CQkJCQkJIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5KTsKK3R5cGVkZWYgdm9pZCAoKnBnc3RhdF9w YWdlKSAocGdzdGF0dHVwbGVfdHlwZSAqLCBSZWxhdGlvbiwgQmxvY2tOdW1iZXIpOwogCiBz dGF0aWMgRGF0dW0gYnVpbGRfcGdzdGF0dHVwbGVfdHlwZShwZ3N0YXR0dXBsZV90eXBlICpz dGF0LAogCQkJCQkJCQkJRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOwogc3RhdGljIERhdHVt IHBnc3RhdF9yZWxhdGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv KTsKIHN0YXRpYyBEYXR1bSBwZ3N0YXRfaGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9idHJlZV9wYWdlKHBnc3RhdHR1 cGxlX3R5cGUgKnN0YXQsCi0JCQkJCQkJICBSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vLAotCQkJCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKKwkJCQkJ CQkgIFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8pOwogc3RhdGljIHZvaWQgcGdz dGF0X2hhc2hfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LAotCQkJCQkJCSBSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCQkJCSBCdWZmZXJBY2Nlc3NTdHJhdGVn eSBic3RyYXRlZ3kpOworCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25v KTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9naXN0X3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3Rh dCwKLQkJCQkJCQkgUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkJCQkg QnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKKwkJCQkJCQkgUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubyk7CiBzdGF0aWMgRGF0dW0gcGdzdGF0X2luZGV4KFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgc3RhcnQsCiAJCQkJCQkgIHBnc3RhdF9wYWdlIHBhZ2Vm biwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOwogc3RhdGljIHZvaWQgcGdzdGF0X2luZGV4 X3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUGFnZSBwYWdlLApAQCAtMzc2LDcgKzM3 Miw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8pCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCQlidWZmZXIgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsb2NrLAotCQkJCQkJCQkJCVJCTV9O T1JNQUwsIGhzY2FuLT5yc19zdHJhdGVneSk7CisJCQkJCQkJCQkJUkJNX05PUk1BTCk7CiAJ CQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQkJc3RhdC5mcmVl X3NwYWNlICs9IFBhZ2VHZXRFeGFjdEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikp OwogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwpAQCAtMzg5LDcgKzM4NSw3IEBA IHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVu ZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibG9jaywKLQkJCQkJCQkJCVJCTV9OT1JNQUwsIGhz Y2FuLT5yc19zdHJhdGVneSk7CisJCQkJCQkJCQlSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZl cihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJc3RhdC5mcmVlX3NwYWNlICs9IFBh Z2VHZXRFeGFjdEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwogCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CkBAIC00MDgsMTMgKzQwNCwxMiBAQCBwZ3N0YXRfaGVh cChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogICogcGdzdGF0X2J0 cmVlX3BhZ2UgLS0gY2hlY2sgdHVwbGVzIGluIGEgYnRyZWUgcGFnZQogICovCiBzdGF0aWMg dm9pZAotcGdzdGF0X2J0cmVlX3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGJzdHJhdGVneSkKK3Bnc3RhdF9idHJlZV9wYWdlKHBnc3RhdHR1cGxlX3R5cGUgKnN0YXQs IFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8pCiB7CiAJQnVmZmVyCQlidWY7CiAJ UGFnZQkJcGFnZTsKIAotCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9S S05VTSwgYmxrbm8sIFJCTV9OT1JNQUwsIGJzdHJhdGVneSk7CisJYnVmID0gUmVhZEJ1ZmZl ckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCk7CiAJTG9j a0J1ZmZlcihidWYsIEJUX1JFQUQpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAK QEAgLTQ1MiwxMyArNDQ3LDEyIEBAIHBnc3RhdF9idHJlZV9wYWdlKHBnc3RhdHR1cGxlX3R5 cGUgKnN0YXQsIFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAgKiBwZ3N0YXRf aGFzaF9wYWdlIC0tIGNoZWNrIHR1cGxlcyBpbiBhIGhhc2ggcGFnZQogICovCiBzdGF0aWMg dm9pZAotcGdzdGF0X2hhc2hfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LCBSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBi c3RyYXRlZ3kpCitwZ3N0YXRfaGFzaF9wYWdlKHBnc3RhdHR1cGxlX3R5cGUgKnN0YXQsIFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8pCiB7CiAJQnVmZmVyCQlidWY7CiAJUGFn ZQkJcGFnZTsKIAotCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05V TSwgYmxrbm8sIFJCTV9OT1JNQUwsIGJzdHJhdGVneSk7CisJYnVmID0gUmVhZEJ1ZmZlckV4 dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCk7CiAJTG9ja0J1 ZmZlcihidWYsIEhBU0hfUkVBRCk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIApA QCAtNTAwLDEzICs0OTQsMTIgQEAgcGdzdGF0X2hhc2hfcGFnZShwZ3N0YXR0dXBsZV90eXBl ICpzdGF0LCBSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAogICogcGdzdGF0X2dp c3RfcGFnZSAtLSBjaGVjayB0dXBsZXMgaW4gYSBnaXN0IHBhZ2UKICAqLwogc3RhdGljIHZv aWQKLXBnc3RhdF9naXN0X3BhZ2UocGdzdGF0dHVwbGVfdHlwZSAqc3RhdCwgUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBibGtubywKLQkJCQkgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0 cmF0ZWd5KQorcGdzdGF0X2dpc3RfcGFnZShwZ3N0YXR0dXBsZV90eXBlICpzdGF0LCBSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJ CXBhZ2U7CiAKLQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0s IGJsa25vLCBSQk1fTk9STUFMLCBic3RyYXRlZ3kpOworCWJ1ZiA9IFJlYWRCdWZmZXJFeHRl bmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCUxvY2tCdWZm ZXIoYnVmLCBHSVNUX1NIQVJFKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCWlm IChQYWdlSXNOZXcocGFnZSkpCkBAIC01MzksMTIgKzUzMiw4IEBAIHBnc3RhdF9pbmRleChS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIHN0YXJ0LCBwZ3N0YXRfcGFnZSBwYWdlZm4sCiB7 CiAJQmxvY2tOdW1iZXIgbmJsb2NrczsKIAlCbG9ja051bWJlciBibGtubzsKLQlCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJcGdzdGF0dHVwbGVfdHlwZSBzdGF0ID0gezB9 OwogCi0JLyogcHJlcGFyZSBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHRoaXMgaW5kZXggKi8KLQli c3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwotCiAJYmxrbm8g PSBzdGFydDsKIAlmb3IgKDs7KQogCXsKQEAgLTU2NSw3ICs1NTQsNyBAQCBwZ3N0YXRfaW5k ZXgoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBzdGFydCwgcGdzdGF0X3BhZ2UgcGFnZWZu LAogCQl7CiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCQlwYWdlZm4oJnN0YXQs IHJlbCwgYmxrbm8sIGJzdHJhdGVneSk7CisJCQlwYWdlZm4oJnN0YXQsIHJlbCwgYmxrbm8p OwogCQl9CiAJfQogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMDg0OGMxOGQzMjkuLjdjYjg4MzkyNDVj IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCkBAIC0yMTA3LDM2ICsyMTA3LDYgQEAgaW5jbHVkZV9kaXIgJ2Nv bmYuZCcKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCi0gICAg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy12YWN1dW0tYnVmZmVyLXVzYWdlLWxpbWl0IiB4cmVm bGFiZWw9InZhY3V1bV9idWZmZXJfdXNhZ2VfbGltaXQiPgotICAgICAgPHRlcm0+Ci0gICAg ICAgPHZhcm5hbWU+dmFjdXVtX2J1ZmZlcl91c2FnZV9saW1pdDwvdmFybmFtZT4gKDx0eXBl PmludGVnZXI8L3R5cGU+KQotICAgICAgIDxpbmRleHRlcm0+Ci0gICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPnZhY3V1bV9idWZmZXJfdXNhZ2VfbGltaXQ8L3Zhcm5hbWU+IGNvbmZpZ3Vy YXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgotICAgICAgIDwvaW5kZXh0ZXJtPgotICAgICAg PC90ZXJtPgotICAgICAgPGxpc3RpdGVtPgotICAgICAgIDxwYXJhPgotICAgICAgICBTcGVj aWZpZXMgdGhlIHNpemUgb2YgdGhlCi0gICAgICAgIDxnbG9zc3Rlcm0gbGlua2VuZD0iZ2xv c3NhcnktYnVmZmVyLWFjY2Vzcy1zdHJhdGVneSI+QnVmZmVyIEFjY2VzcyBTdHJhdGVneTwv Z2xvc3N0ZXJtPgotICAgICAgICB1c2VkIGJ5IHRoZSA8Y29tbWFuZD5WQUNVVU08L2NvbW1h bmQ+IGFuZCA8Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5kPgotICAgICAgICBjb21tYW5kcy4g IEEgc2V0dGluZyBvZiA8bGl0ZXJhbD4wPC9saXRlcmFsPiB3aWxsIGFsbG93IHRoZSBvcGVy YXRpb24KLSAgICAgICAgdG8gdXNlIGFueSBudW1iZXIgb2YgPHZhcm5hbWU+c2hhcmVkX2J1 ZmZlcnM8L3Zhcm5hbWU+LiAgT3RoZXJ3aXNlCi0gICAgICAgIHZhbGlkIHNpemVzIHJhbmdl IGZyb20gPGxpdGVyYWw+MTI4IGtCPC9saXRlcmFsPiB0bwotICAgICAgICA8bGl0ZXJhbD4x NiBHQjwvbGl0ZXJhbD4uICBJZiB0aGUgc3BlY2lmaWVkIHNpemUgd291bGQgZXhjZWVkIDEv OCB0aGUKLSAgICAgICAgc2l6ZSBvZiA8dmFybmFtZT5zaGFyZWRfYnVmZmVyczwvdmFybmFt ZT4sIHRoZSBzaXplIGlzIHNpbGVudGx5IGNhcHBlZAotICAgICAgICB0byB0aGF0IHZhbHVl LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+Mk1CPC9saXRlcmFsPi4gIElmCi0g ICAgICAgIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRh a2VuIGFzIGtpbG9ieXRlcy4gIFRoaXMKLSAgICAgICAgcGFyYW1ldGVyIGNhbiBiZSBzZXQg YXQgYW55IHRpbWUuICBJdCBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IKLSAgICAgICAgPHhyZWYg bGlua2VuZD0ic3FsLXZhY3V1bSIvPiBhbmQgPHhyZWYgbGlua2VuZD0ic3FsLWFuYWx5emUi Lz4KLSAgICAgICAgd2hlbiBwYXNzaW5nIHRoZSA8b3B0aW9uPkJVRkZFUl9VU0FHRV9MSU1J VDwvb3B0aW9uPiBvcHRpb24uICBIaWdoZXIKLSAgICAgICAgc2V0dGluZ3MgY2FuIGFsbG93 IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gYW5kCi0gICAgICAgIDxjb21tYW5kPkFOQUxZ WkU8L2NvbW1hbmQ+IHRvIHJ1biBtb3JlIHF1aWNrbHksIGJ1dCBoYXZpbmcgdG9vIGxhcmdl IGEKLSAgICAgICAgc2V0dGluZyBtYXkgY2F1c2UgdG9vIG1hbnkgb3RoZXIgdXNlZnVsIHBh Z2VzIHRvIGJlIGV2aWN0ZWQgZnJvbQotICAgICAgICBzaGFyZWQgYnVmZmVycy4KLSAgICAg ICA8L3BhcmE+Ci0gICAgICA8L2xpc3RpdGVtPgotICAgICA8L3Zhcmxpc3RlbnRyeT4KLQog ICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbG9naWNhbC1kZWNvZGluZy13b3JrLW1lbSIg eHJlZmxhYmVsPSJsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIj4KICAgICAgIDx0ZXJtPjx2 YXJuYW1lPmxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW08L3Zhcm5hbWU+ICg8dHlwZT5pbnRl Z2VyPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRl eCBkMWEyMGQwMDFlOS4uMThkMTc1NDA0MzAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAt Mjk5MywyOCArMjk5Myw2IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBp bml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgICAg ICA8bGl0ZXJhbD5pbml0PC9saXRlcmFsPi4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KLSAgICAgICAgPGxpc3RpdGVtPgotICAgICAgICAgPHBhcmE+Ci0gICAg ICAgICAgPGxpdGVyYWw+dmFjdXVtPC9saXRlcmFsPjogSS9PIG9wZXJhdGlvbnMgcGVyZm9y bWVkIG91dHNpZGUgb2Ygc2hhcmVkCi0gICAgICAgICAgYnVmZmVycyB3aGlsZSB2YWN1dW1p bmcgYW5kIGFuYWx5emluZyBwZXJtYW5lbnQgcmVsYXRpb25zLiBUZW1wb3JhcnkKLSAgICAg ICAgICB0YWJsZSB2YWN1dW1zIHVzZSB0aGUgc2FtZSBsb2NhbCBidWZmZXIgcG9vbCBhcyBv dGhlciB0ZW1wb3JhcnkgdGFibGUKLSAgICAgICAgICBJL08gb3BlcmF0aW9ucyBhbmQgYXJl IHRyYWNrZWQgaW4gPHZhcm5hbWU+Y29udGV4dDwvdmFybmFtZT4KLSAgICAgICAgICA8bGl0 ZXJhbD5ub3JtYWw8L2xpdGVyYWw+LgotICAgICAgICAgPC9wYXJhPgotICAgICAgICA8L2xp c3RpdGVtPgotICAgICAgICA8bGlzdGl0ZW0+Ci0gICAgICAgICA8cGFyYT4KLSAgICAgICAg ICA8bGl0ZXJhbD5idWxrcmVhZDwvbGl0ZXJhbD46IENlcnRhaW4gbGFyZ2UgcmVhZCBJL08g b3BlcmF0aW9ucwotICAgICAgICAgIGRvbmUgb3V0c2lkZSBvZiBzaGFyZWQgYnVmZmVycywg Zm9yIGV4YW1wbGUsIGEgc2VxdWVudGlhbCBzY2FuIG9mIGEKLSAgICAgICAgICBsYXJnZSB0 YWJsZS4KLSAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRlbT4KLSAgICAgICAg PGxpc3RpdGVtPgotICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgPGxpdGVyYWw+YnVsa3dy aXRlPC9saXRlcmFsPjogQ2VydGFpbiBsYXJnZSB3cml0ZSBJL08gb3BlcmF0aW9ucwotICAg ICAgICAgIGRvbmUgb3V0c2lkZSBvZiBzaGFyZWQgYnVmZmVycywgc3VjaCBhcyA8Y29tbWFu ZD5DT1BZPC9jb21tYW5kPi4KLSAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93 PgpAQCAtMzE4MCwxMyArMzE1OCw4IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBu ZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAg ICAgICAgYnVmZmVyIGluIG9yZGVyIHRvIG1ha2UgaXQgYXZhaWxhYmxlIGZvciBhbm90aGVy IHVzZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIEluIDx2YXJu YW1lPmNvbnRleHQ8L3Zhcm5hbWU+IDxsaXRlcmFsPm5vcm1hbDwvbGl0ZXJhbD4sIHRoaXMg Y291bnRzCi0gICAgICAgIHRoZSBudW1iZXIgb2YgdGltZXMgYSBibG9jayB3YXMgZXZpY3Rl ZCBmcm9tIGEgYnVmZmVyIGFuZCByZXBsYWNlZCB3aXRoCi0gICAgICAgIGFub3RoZXIgYmxv Y2suIEluIDx2YXJuYW1lPmNvbnRleHQ8L3Zhcm5hbWU+cwotICAgICAgICA8bGl0ZXJhbD5i dWxrd3JpdGU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5idWxrcmVhZDwvbGl0ZXJhbD4sIGFuZAot ICAgICAgICA8bGl0ZXJhbD52YWN1dW08L2xpdGVyYWw+LCB0aGlzIGNvdW50cyB0aGUgbnVt YmVyIG9mIHRpbWVzIGEgYmxvY2sgd2FzCi0gICAgICAgIGV2aWN0ZWQgZnJvbSBzaGFyZWQg YnVmZmVycyBpbiBvcmRlciB0byBhZGQgdGhlIHNoYXJlZCBidWZmZXIgdG8gYQotICAgICAg ICBzZXBhcmF0ZSwgc2l6ZS1saW1pdGVkIHJpbmcgYnVmZmVyIGZvciB1c2UgaW4gYSBidWxr IEkvTyBvcGVyYXRpb24uCisgICAgICAgIFRoaXMgY291bnRzIHRoZSBudW1iZXIgb2YgdGlt ZXMgYSBibG9jayB3YXMgZXZpY3RlZCBmcm9tIGEgYnVmZmVyIGFuZAorICAgICAgICByZXBs YWNlZCB3aXRoIGFub3RoZXIgYmxvY2suCiAgICAgICAgIDwvcGFyYT4KICAgICAgIDwvZW50 cnk+CiAgICAgIDwvcm93PgpAQCAtMzE5NywxMCArMzE3MCw5IEBAIGRlc2NyaXB0aW9uIHwg V2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJh YmxlIHN0b3JhZ2UKICAgICAgICAgPHN0cnVjdGZpZWxkPnJldXNlczwvc3RydWN0ZmllbGQ+ IDx0eXBlPmJpZ2ludDwvdHlwZT4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0g ICAgICAgIFRoZSBudW1iZXIgb2YgdGltZXMgYW4gZXhpc3RpbmcgYnVmZmVyIGluIGEgc2l6 ZS1saW1pdGVkIHJpbmcgYnVmZmVyCi0gICAgICAgIG91dHNpZGUgb2Ygc2hhcmVkIGJ1ZmZl cnMgd2FzIHJldXNlZCBhcyBwYXJ0IG9mIGFuIEkvTyBvcGVyYXRpb24gaW4gdGhlCi0gICAg ICAgIDxsaXRlcmFsPmJ1bGtyZWFkPC9saXRlcmFsPiwgPGxpdGVyYWw+YnVsa3dyaXRlPC9s aXRlcmFsPiwgb3IKLSAgICAgICAgPGxpdGVyYWw+dmFjdXVtPC9saXRlcmFsPiA8dmFybmFt ZT5jb250ZXh0PC92YXJuYW1lPnMuCisgICAgICAgIEFsd2F5cyB6ZXJvLiAgVGhpcyBjb2x1 bW4gcHJldmlvdXNseSBjb3VudGVkIHJldXNlcyBvZiBidWZmZXJzIGluIGEKKyAgICAgICAg c2l6ZS1saW1pdGVkIHJpbmcgYnVmZmVyIChidWZmZXIgYWNjZXNzIHN0cmF0ZWd5KTsgcmlu ZyBidWZmZXJzIGhhdmUKKyAgICAgICAgYmVlbiByZW1vdmVkLCBzbyBubyByZXVzZXMgYXJl IHRyYWNrZWQuCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FuYWx5emUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvYW5hbHl6ZS5zZ21sCmluZGV4IGVjODFmMDBmZWNmLi43ZjUxNTkxMTFkOCAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbmFseXplLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbmFseXplLnNnbWwKQEAgLTI3LDcgKzI3LDYgQEAgQU5BTFlaRSBbICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSBdIFsgPHIKIAogICAgIFZFUkJPU0UgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBTS0lQX0xPQ0tFRCBbIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQot ICAgIEJVRkZFUl9VU0FHRV9MSU1JVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ c2l6ZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNl PgogCkBAIC04OCwyNiArODcsNiBAQCBBTkFMWVpFIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAotICAgPHZhcmxpc3RlbnRyeT4K LSAgICA8dGVybT48bGl0ZXJhbD5CVUZGRVJfVVNBR0VfTElNSVQ8L2xpdGVyYWw+PC90ZXJt PgotICAgIDxsaXN0aXRlbT4KLSAgICAgPHBhcmE+Ci0gICAgICBTcGVjaWZpZXMgdGhlCi0g ICAgICA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imdsb3NzYXJ5LWJ1ZmZlci1hY2Nlc3Mtc3RyYXRl Z3kiPkJ1ZmZlciBBY2Nlc3MgU3RyYXRlZ3k8L2dsb3NzdGVybT4KLSAgICAgIHJpbmcgYnVm ZmVyIHNpemUgZm9yIDxjb21tYW5kPkFOQUxZWkU8L2NvbW1hbmQ+LiAgVGhpcyBzaXplIGlz IHVzZWQgdG8KLSAgICAgIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHNoYXJlZCBidWZmZXJz IHdoaWNoIHdpbGwgYmUgcmV1c2VkIGFzIHBhcnQgb2YKLSAgICAgIHRoaXMgc3RyYXRlZ3ku ICA8bGl0ZXJhbD4wPC9saXRlcmFsPiBkaXNhYmxlcyB1c2Ugb2YgYQotICAgICAgPGxpdGVy YWw+QnVmZmVyIEFjY2VzcyBTdHJhdGVneTwvbGl0ZXJhbD4uICAgV2hlbiB0aGlzIG9wdGlv biBpcyBub3QKLSAgICAgIHNwZWNpZmllZCwgPGNvbW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4g dXNlcyB0aGUgdmFsdWUgZnJvbQotICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXZhY3V1bS1i dWZmZXItdXNhZ2UtbGltaXQiLz4uICBIaWdoZXIgc2V0dGluZ3MgY2FuCi0gICAgICBhbGxv dyA8Y29tbWFuZD5BTkFMWVpFPC9jb21tYW5kPiB0byBydW4gbW9yZSBxdWlja2x5LCBidXQg aGF2aW5nIHRvbwotICAgICAgbGFyZ2UgYSBzZXR0aW5nIG1heSBjYXVzZSB0b28gbWFueSBv dGhlciB1c2VmdWwgcGFnZXMgdG8gYmUgZXZpY3RlZCBmcm9tCi0gICAgICBzaGFyZWQgYnVm ZmVycy4gIFRoZSBtaW5pbXVtIHZhbHVlIGlzIDxsaXRlcmFsPjEyOCBrQjwvbGl0ZXJhbD4g YW5kIHRoZQotICAgICAgbWF4aW11bSB2YWx1ZSBpcyA8bGl0ZXJhbD4xNiBHQjwvbGl0ZXJh bD4uCi0gICAgIDwvcGFyYT4KLSAgICA8L2xpc3RpdGVtPgotICAgPC92YXJsaXN0ZW50cnk+ Ci0KICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi92YWN1dW0uc2dtbAppbmRleCAzOGVlOTczZWEwNS4uZDQ0YTQ5ZjhlZmUgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi92YWN1dW0uc2dtbApAQCAtMzcsNyArMzcsNiBAQCBWQUNVVU0gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d ICkgXSBbIDxyZQogICAgIFBBUkFMTEVMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4KICAgICBTS0lQX0RBVEFCQVNFX1NUQVRTIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAg ICAgT05MWV9EQVRBQkFTRV9TVEFUUyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQotICAgIEJVRkZFUl9VU0FHRV9MSU1JVCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2l6ZTwvcmVwbGFjZWFibGU+CiAgICAgRlVM TCBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJs ZT4gXQogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KQEAgLTMwOSwzMCAr MzA4LDYgQEAgVkFDVVVNIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cmUKICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgPHRlcm0+PGxp dGVyYWw+QlVGRkVSX1VTQUdFX0xJTUlUPC9saXRlcmFsPjwvdGVybT4KLSAgICA8bGlzdGl0 ZW0+Ci0gICAgIDxwYXJhPgotICAgICAgU3BlY2lmaWVzIHRoZQotICAgICAgPGdsb3NzdGVy bSBsaW5rZW5kPSJnbG9zc2FyeS1idWZmZXItYWNjZXNzLXN0cmF0ZWd5Ij5CdWZmZXIgQWNj ZXNzIFN0cmF0ZWd5PC9nbG9zc3Rlcm0+Ci0gICAgICByaW5nIGJ1ZmZlciBzaXplIGZvciA8 Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+LiAgVGhpcyBzaXplIGlzIHVzZWQgdG8KLSAgICAg IGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHNoYXJlZCBidWZmZXJzIHdoaWNoIHdpbGwgYmUg cmV1c2VkIGFzIHBhcnQgb2YKLSAgICAgIHRoaXMgc3RyYXRlZ3kuICA8bGl0ZXJhbD4wPC9s aXRlcmFsPiBkaXNhYmxlcyB1c2Ugb2YgYQotICAgICAgPGxpdGVyYWw+QnVmZmVyIEFjY2Vz cyBTdHJhdGVneTwvbGl0ZXJhbD4uICBJZiA8b3B0aW9uPkFOQUxZWkU8L29wdGlvbj4KLSAg ICAgIGlzIGFsc28gc3BlY2lmaWVkLCB0aGUgPG9wdGlvbj5CVUZGRVJfVVNBR0VfTElNSVQ8 L29wdGlvbj4gdmFsdWUgaXMgdXNlZAotICAgICAgZm9yIGJvdGggdGhlIHZhY3V1bSBhbmQg YW5hbHl6ZSBzdGFnZXMuICBUaGlzIG9wdGlvbiBjYW4ndCBiZSB1c2VkIHdpdGgKLSAgICAg IHRoZSA8b3B0aW9uPkZVTEw8L29wdGlvbj4gb3B0aW9uIGV4Y2VwdCBpZiA8b3B0aW9uPkFO QUxZWkU8L29wdGlvbj4gaXMKLSAgICAgIGFsc28gc3BlY2lmaWVkLiAgV2hlbiB0aGlzIG9w dGlvbiBpcyBub3Qgc3BlY2lmaWVkLAotICAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5k PiB1c2VzIHRoZSB2YWx1ZSBmcm9tCi0gICAgICA8eHJlZiBsaW5rZW5kPSJndWMtdmFjdXVt LWJ1ZmZlci11c2FnZS1saW1pdCIvPi4gIEhpZ2hlciBzZXR0aW5ncyBjYW4KLSAgICAgIGFs bG93IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcnVuIG1vcmUgcXVpY2tseSwgYnV0 IGhhdmluZyB0b28KLSAgICAgIGxhcmdlIGEgc2V0dGluZyBtYXkgY2F1c2UgdG9vIG1hbnkg b3RoZXIgdXNlZnVsIHBhZ2VzIHRvIGJlIGV2aWN0ZWQgZnJvbQotICAgICAgc2hhcmVkIGJ1 ZmZlcnMuICBUaGUgbWluaW11bSB2YWx1ZSBpcyA8bGl0ZXJhbD4xMjgga0I8L2xpdGVyYWw+ IGFuZCB0aGUKLSAgICAgIG1heGltdW0gdmFsdWUgaXMgPGxpdGVyYWw+MTYgR0I8L2xpdGVy YWw+LgotICAgICA8L3BhcmE+Ci0gICAgPC9saXN0aXRlbT4KLSAgIDwvdmFybGlzdGVudHJ5 PgotCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkZVTEw8L2xpdGVy YWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRl eCBiZGIzMDc1MmUwOS4uNWQ2NTM5ZjU0ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMK QEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtX2FuZF9pbnNlcnRfdHVwbGUo QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIGZvcm1fYW5kX3NwaWxsX3R1 cGxlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCB1bmlvbl90dXBsZXMo QnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsCiAJCQkJCQkgQnJpblR1cGxlICpi KTsKLXN0YXRpYyB2b2lkIGJyaW5fdmFjdXVtX3NjYW4oUmVsYXRpb24gaWR4cmVsLCBCdWZm ZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7CitzdGF0aWMgdm9pZCBicmluX3ZhY3V1bV9z Y2FuKFJlbGF0aW9uIGlkeHJlbCk7CiBzdGF0aWMgYm9vbCBhZGRfdmFsdWVzX3RvX3Jhbmdl KFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2MgKmJkZXNjLAogCQkJCQkJCQlCcmluTWVtVHVw bGUgKmR0dXAsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJvb2wgKm51bGxzKTsKIHN0 YXRpYyBib29sIGNoZWNrX251bGxfa2V5cyhCcmluVmFsdWVzICpidmFsLCBTY2FuS2V5ICpu dWxsa2V5cywgaW50IG5udWxsa2V5cyk7CkBAIC0xMTI5LDcgKzExMjksNyBAQCBicmluYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCSAqIHdob2xlIHJlbGF0aW9uIHdpbGwgYmUgcm9sbGVkIGJhY2suCiAJICovCiAKLQlt ZXRhID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwg TlVMTCwKKwltZXRhID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5f Rk9SS05VTSwKIAkJCQkJCQkgRUJfTE9DS19GSVJTVCB8IEVCX1NLSVBfRVhURU5TSU9OX0xP Q0spOwogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihtZXRhKSA9PSBCUklOX01FVEFQ QUdFX0JMS05PKTsKIApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgYnJpbmJ1aWxkZW1wdHkoUmVs YXRpb24gaW5kZXgpCiAJQnVmZmVyCQltZXRhYnVmOwogCiAJLyogQW4gZW1wdHkgQlJJTiBp bmRleCBoYXMgYSBtZXRhcGFnZSBvbmx5LiAqLwotCW1ldGFidWYgPSBFeHRlbmRCdWZmZXJl ZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLCBOVUxMLAorCW1ldGFidWYgPSBF eHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLAogCQkJCQkJ CQlFQl9MT0NLX0ZJUlNUIHwgRUJfU0tJUF9FWFRFTlNJT05fTE9DSyk7CiAKIAkvKiBJbml0 aWFsaXplIGFuZCB4bG9nIG1ldGFidWZmZXIuICovCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCBi cmludmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqc3RhdHMpCiAJaGVhcFJlbCA9IHRhYmxlX29wZW4oSW5kZXhHZXRSZWxhdGlv bihSZWxhdGlvbkdldFJlbGlkKGluZm8tPmluZGV4KSwgZmFsc2UpLAogCQkJCQkJIEFjY2Vz c1NoYXJlTG9jayk7CiAKLQlicmluX3ZhY3V1bV9zY2FuKGluZm8tPmluZGV4LCBpbmZvLT5z dHJhdGVneSk7CisJYnJpbl92YWN1dW1fc2NhbihpbmZvLT5pbmRleCk7CiAKIAlicmluc3Vt bWFyaXplKGluZm8tPmluZGV4LCBoZWFwUmVsLCBCUklOX0FMTF9CTE9DS1JBTkdFUywgZmFs c2UsCiAJCQkJICAmc3RhdHMtPm51bV9pbmRleF90dXBsZXMsICZzdGF0cy0+bnVtX2luZGV4 X3R1cGxlcyk7CkBAIC0yMTcxLDcgKzIxNzEsNyBAQCB1bmlvbl90dXBsZXMoQnJpbkRlc2Mg KmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBsZSAqYikKICAqIGFuZCBzdWNoLgog ICovCiBzdGF0aWMgdm9pZAotYnJpbl92YWN1dW1fc2NhbihSZWxhdGlvbiBpZHhyZWwsIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQorYnJpbl92YWN1dW1fc2NhbihSZWxhdGlv biBpZHhyZWwpCiB7CiAJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CiAJUmVhZFN0 cmVhbSAqc3RyZWFtOwpAQCAtMjE4Nyw3ICsyMTg3LDYgQEAgYnJpbl92YWN1dW1fc2NhbihS ZWxhdGlvbiBpZHhyZWwsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQogCXN0cmVh bSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNF IHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVB TV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJc3RyYXRlZ3ksCiAJCQkJCQkJCQkJaWR4cmVs LAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFk X3N0cmVhbV9jYiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f cmV2bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3Jldm1hcC5jCmluZGV4 IDIzMzM1NWNiMmQ1Li4wMWM0MTA0YWM4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl9yZXZtYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX3Jldm1hcC5jCkBAIC01NTksNyArNTU5LDcgQEAgcmV2bWFwX3BoeXNpY2FsX2V4dGVu ZChCcmluUmV2bWFwICpyZXZtYXApCiAJfQogCWVsc2UKIAl7Ci0JCWJ1ZiA9IEV4dGVuZEJ1 ZmZlcmVkUmVsKEJNUl9SRUwoaXJlbCksIE1BSU5fRk9SS05VTSwgTlVMTCwKKwkJYnVmID0g RXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpcmVsKSwgTUFJTl9GT1JLTlVNLAogCQkJCQkJ CQlFQl9MT0NLX0ZJUlNUKTsKIAkJaWYgKEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgIT0g bWFwQmxrKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBjYjll ZDNiNTYzYy4uMzJhZDY1Y2M5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YwpAQCAtODE1LDkgKzgxNSw5IEBAIGdpbmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCiAJ CQkJTWV0YUJ1ZmZlcjsKIAogCS8qIEFuIGVtcHR5IEdJTiBpbmRleCBoYXMgdHdvIHBhZ2Vz LiAqLwotCU1ldGFCdWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwg SU5JVF9GT1JLTlVNLCBOVUxMLAorCU1ldGFCdWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChC TVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLAogCQkJCQkJCQkgICBFQl9MT0NLX0ZJUlNU IHwgRUJfU0tJUF9FWFRFTlNJT05fTE9DSyk7Ci0JUm9vdEJ1ZmZlciA9IEV4dGVuZEJ1ZmZl cmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBJTklUX0ZPUktOVU0sIE5VTEwsCisJUm9vdEJ1ZmZl ciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBJTklUX0ZPUktOVU0sCiAJ CQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QgfCBFQl9TS0lQX0VYVEVOU0lPTl9MT0NLKTsKIAog CS8qIEluaXRpYWxpemUgYW5kIHhsb2cgbWV0YWJ1ZmZlciBhbmQgcm9vdCBidWZmZXIuICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnV0aWwuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naW4vZ2ludXRpbC5jCmluZGV4IGU3Y2JhODFkNDc3Li4yZDczOTRh ZWRkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW51dGlsLmMKQEAgLTMzNiw3ICszMzYsNyBA QCBHaW5OZXdCdWZmZXIoUmVsYXRpb24gaW5kZXgpCiAJfQogCiAJLyogTXVzdCBleHRlbmQg dGhlIGZpbGUgKi8KLQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4 KSwgTUFJTl9GT1JLTlVNLCBOVUxMLAorCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJN Ul9SRUwoaW5kZXgpLCBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7 CiAKIAlyZXR1cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp bi9naW52YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMKaW5k ZXggODQwNTQzZWI2NjQuLjg2NTM4ZGUzOWQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbnZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu dmFjdXVtLmMKQEAgLTMyLDcgKzMyLDYgQEAgc3RydWN0IEdpblZhY3V1bVN0YXRlCiAJSW5k ZXhCdWxrRGVsZXRlQ2FsbGJhY2sgY2FsbGJhY2s7CiAJdm9pZAkgICAqY2FsbGJhY2tfc3Rh dGU7CiAJR2luU3RhdGUJZ2luc3RhdGU7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRl Z3k7CiAJTWVtb3J5Q29udGV4dCB0bXBDeHQ7CiB9OwogCkBAIC0yODksNyArMjg4LDcgQEAg Z2luU2NhblBvc3RpbmdUcmVlVG9EZWxldGUoR2luVmFjdXVtU3RhdGUgKmd2cywgRGF0YVBh Z2VEZWxldGVTdGFjayAqbXlTdGFja0l0ZW0KIAkJCWNoaWxkQnVmZmVyID0gUmVhZEJ1ZmZl ckV4dGVuZGVkKGd2cy0+aW5kZXgsCiAJCQkJCQkJCQkJCSBNQUlOX0ZPUktOVU0sCiAJCQkJ CQkJCQkJCSBQb3N0aW5nSXRlbUdldEJsb2NrTnVtYmVyKHBpdGVtKSwKLQkJCQkJCQkJCQkJ IFJCTV9OT1JNQUwsIGd2cy0+c3RyYXRlZ3kpOworCQkJCQkJCQkJCQkgUkJNX05PUk1BTCk7 CiAJCQlMb2NrQnVmZmVyKGNoaWxkQnVmZmVyLCBHSU5fRVhDTFVTSVZFKTsKIAogCQkJLyog QWxsb2NhdGUgYSBjaGlsZCBzdGFjayBlbnRyeSBvbiBmaXJzdCB1c2U7IHJldXNlIHRoZXJl YWZ0ZXIgKi8KQEAgLTM4OSw3ICszODgsNyBAQCBnaW5WYWN1dW1Qb3N0aW5nVHJlZUxlYXZl cyhHaW5WYWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051bWJlciBibGtubykKIAkJUG9zdGluZ0l0 ZW0gKnBpdGVtOwogCiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChndnMtPmluZGV4 LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgZ3ZzLT5zdHJh dGVneSk7CisJCQkJCQkJCQlSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEdJ Tl9TSEFSRSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKQEAgLTQzMCw3 ICs0MjksNyBAQCBnaW5WYWN1dW1Qb3N0aW5nVHJlZUxlYXZlcyhHaW5WYWN1dW1TdGF0ZSAq Z3ZzLCBCbG9ja051bWJlciBibGtubykKIAkJCWJyZWFrOwogCiAJCWJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChndnMtPmluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJ CQkJUkJNX05PUk1BTCwgZ3ZzLT5zdHJhdGVneSk7CisJCQkJCQkJCQlSQk1fTk9STUFMKTsK IAkJTG9ja0J1ZmZlcihidWZmZXIsIEdJTl9FWENMVVNJVkUpOwogCQlwYWdlID0gQnVmZmVy R2V0UGFnZShidWZmZXIpOwogCX0KQEAgLTQ1NCw3ICs0NTMsNyBAQCBnaW5WYWN1dW1Qb3N0 aW5nVHJlZShHaW5WYWN1dW1TdGF0ZSAqZ3ZzLCBCbG9ja051bWJlciByb290Qmxrbm8pCiAJ CWJvb2wJCWRlbGV0ZWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCiAJCWJ1ZmZlciA9 IFJlYWRCdWZmZXJFeHRlbmRlZChndnMtPmluZGV4LCBNQUlOX0ZPUktOVU0sIHJvb3RCbGtu bywKLQkJCQkJCQkJCVJCTV9OT1JNQUwsIGd2cy0+c3RyYXRlZ3kpOworCQkJCQkJCQkJUkJN X05PUk1BTCk7CiAKIAkJLyoKIAkJICogTG9jayBwb3N0aW5nIHRyZWUgcm9vdCBmb3IgY2xl YW51cCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vCkBAIC02MTUsNyArNjE0LDYgQEAgZ2luYnVs a2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMsCiAJZ3ZzLmluZGV4ID0gaW5kZXg7CiAJZ3ZzLmNhbGxiYWNrID0gY2FsbGJhY2s7 CiAJZ3ZzLmNhbGxiYWNrX3N0YXRlID0gY2FsbGJhY2tfc3RhdGU7Ci0JZ3ZzLnN0cmF0ZWd5 ID0gaW5mby0+c3RyYXRlZ3k7CiAJaW5pdEdpblN0YXRlKCZndnMuZ2luc3RhdGUsIGluZGV4 KTsKIAogCS8qIGZpcnN0IHRpbWUgdGhyb3VnaD8gKi8KQEAgLTYzNiw3ICs2MzQsNyBAQCBn aW5idWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICpzdGF0cywKIAlndnMucmVzdWx0ID0gc3RhdHM7CiAKIAlidWZmZXIgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCVJCTV9O T1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKwkJCQkJCQkJUkJNX05PUk1BTCk7CiAKIAkvKiBm aW5kIGxlYWYgcGFnZSAqLwogCWZvciAoOzspCkBAIC02NjksNyArNjY3LDcgQEAgZ2luYnVs a2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMsCiAKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlidWZmZXIgPSBS ZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJ CQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCQkJCQkJCQlSQk1fTk9STUFMKTsK IAl9CiAKIAkvKiByaWdodCBub3cgd2UgZm91bmQgbGVmdG1vc3QgcGFnZSBpbiBlbnRyeSdz IEJUcmVlICovCkBAIC03MTIsNyArNzEwLDcgQEAgZ2luYnVsa2RlbGV0ZShJbmRleFZhY3V1 bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJCQlicmVhazsK IAogCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwg Ymxrbm8sCi0JCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCQkJCQkJ CQlSQk1fTk9STUFMKTsKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEdJTl9FWENMVVNJVkUpOwog CX0KIApAQCAtNzk0LDcgKzc5Miw2IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1J bmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0cmVhbSA9IHJl YWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJ CQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0Vf QkFUQ0hJTkcsCi0JCQkJCQkJCQkJaW5mby0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJaW5kZXgs CiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRf c3RyZWFtX2NiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IDg1NjVlMjI1YmU3Li5h ZTQ5NDc0MmE0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwpAQCAtMTQyLDcgKzE0Miw3 IEBAIGdpc3RidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQogCUJ1ZmZlcgkJYnVmZmVyOwog CiAJLyogSW5pdGlhbGl6ZSB0aGUgcm9vdCBwYWdlICovCi0JYnVmZmVyID0gRXh0ZW5kQnVm ZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIElOSVRfRk9SS05VTSwgTlVMTCwKKwlidWZmZXIg PSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLAogCQkJ CQkJCSAgIEVCX1NLSVBfRVhURU5TSU9OX0xPQ0sgfCBFQl9MT0NLX0ZJUlNUKTsKIAogCS8q IEluaXRpYWxpemUgYW5kIHhsb2cgYnVmZmVyICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHV0aWwuYwppbmRleCAwZjU4ZjYxODc5Zi4uMTcwMTc0ZjYyZmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtODc3LDcgKzg3Nyw3IEBAIGdpc3ROZXdCdWZmZXIo UmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJlbCkKIAl9CiAKIAkvKiBNdXN0IGV4dGVuZCB0 aGUgZmlsZSAqLwotCWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwociksIE1B SU5fRk9SS05VTSwgTlVMTCwKKwlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVM KHIpLCBNQUlOX0ZPUktOVU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CiAKIAlyZXR1 cm4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCmluZGV4IDY4 NmEwNDE4MDU0Li5jMzY2ZWQzNWVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2 YWN1dW0uYwpAQCAtMjE4LDcgKzIxOCw2IEBAIGdpc3R2YWN1dW1zY2FuKEluZGV4VmFjdXVt SW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlzdHJlYW0gPSBy ZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CiAJ CQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNF X0JBVENISU5HLAotCQkJCQkJCQkJCWluZm8tPnN0cmF0ZWd5LAogCQkJCQkJCQkJCXJlbCwK IAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9z dHJlYW1fY2IsCkBAIC00OTEsOCArNDkwLDcgQEAgcmVzdGFydDoKIAkJLyogY2hlY2sgZm9y IHZhY3V1bSBkZWxheSB3aGlsZSBub3QgaG9sZGluZyBhbnkgYnVmZmVyIGxvY2sgKi8KIAkJ dmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0 ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fTk9STUFMLAotCQkJCQkJCQkJ aW5mby0+c3RyYXRlZ3kpOworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBN QUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fTk9STUFMKTsKIAkJZ290byByZXN0YXJ0OwogCX0K IH0KQEAgLTUyNCw4ICs1MjIsNyBAQCBnaXN0dmFjdXVtX2RlbGV0ZV9lbXB0eV9wYWdlcyhJ bmRleFZhY3V1bUluZm8gKmluZm8sIEdpc3RWYWNTdGF0ZSAqdnN0YXRlKQogCQlpbnQJCQlu dG9kZWxldGU7CiAJCWludAkJCWRlbGV0ZWQ7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4 dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCAoQmxvY2tOdW1iZXIpIGJsa25vLAotCQkJCQkJ CQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQlidWZmZXIgPSBSZWFkQnVmZmVy RXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIChCbG9ja051bWJlcikgYmxrbm8sIFJCTV9O T1JNQUwpOwogCiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSVNUX1NIQVJFKTsKIAkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKQEAgLTU5MCw4ICs1ODcsNyBAQCBnaXN0dmFjdXVt X2RlbGV0ZV9lbXB0eV9wYWdlcyhJbmRleFZhY3V1bUluZm8gKmluZm8sIEdpc3RWYWNTdGF0 ZSAqdnN0YXRlKQogCQkJaWYgKFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmly c3RPZmZzZXROdW1iZXIpCiAJCQkJYnJlYWs7CiAKLQkJCWxlYWZidWYgPSBSZWFkQnVmZmVy RXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGxlYWZzX3RvX2RlbGV0ZVtpXSwKLQkJCQkJ CQkJCQkgUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQkJbGVhZmJ1ZiA9IFJlYWRC dWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgbGVhZnNfdG9fZGVsZXRlW2ldLCBS Qk1fTk9STUFMKTsKIAkJCUxvY2tCdWZmZXIobGVhZmJ1ZiwgR0lTVF9FWENMVVNJVkUpOwog CQkJZ2lzdGNoZWNrcGFnZShyZWwsIGxlYWZidWYpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo LmMKaW5kZXggOGQ4Y2QzMGRjMzguLjFiYmI3MjI0YmZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaC5jCkBAIC01NDIsNyArNTQyLDYgQEAgaGFzaGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1J bmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqLwogCXN0cmVh bSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNF IHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJaW5m by0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJcmVsLAogCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwK IAkJCQkJCQkJCQloYXNoX2J1bGtkZWxldGVfcmVhZF9zdHJlYW1fY2IsCkBAIC02MTYsNyAr NjE1LDcgQEAgYnVja2V0X2xvb3A6CiAKIAkJYnVja2V0X2J1ZiA9IGJ1ZjsKIAotCQloYXNo YnVja2V0Y2xlYW51cChyZWwsIGN1cl9idWNrZXQsIGJ1Y2tldF9idWYsIGJsa25vLCBpbmZv LT5zdHJhdGVneSwKKwkJaGFzaGJ1Y2tldGNsZWFudXAocmVsLCBjdXJfYnVja2V0LCBidWNr ZXRfYnVmLCBibGtubywKIAkJCQkJCSAgY2FjaGVkbWV0YXAtPmhhc2htX21heGJ1Y2tldCwK IAkJCQkJCSAgY2FjaGVkbWV0YXAtPmhhc2htX2hpZ2htYXNrLAogCQkJCQkJICBjYWNoZWRt ZXRhcC0+aGFzaG1fbG93bWFzaywgJnR1cGxlc19yZW1vdmVkLApAQCAtNzY1LDcgKzc2NCw3 IEBAIGhhc2h2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICpzdGF0cykKICAqLwogdm9pZAogaGFzaGJ1Y2tldGNsZWFudXAoUmVs YXRpb24gcmVsLCBCdWNrZXQgY3VyX2J1Y2tldCwgQnVmZmVyIGJ1Y2tldF9idWYsCi0JCQkJ ICBCbG9ja051bWJlciBidWNrZXRfYmxrbm8sIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJh dGVneSwKKwkJCQkgIEJsb2NrTnVtYmVyIGJ1Y2tldF9ibGtubywKIAkJCQkgIHVpbnQzMiBt YXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2ssCiAJCQkJICBkb3Vi bGUgKnR1cGxlc19yZW1vdmVkLCBkb3VibGUgKm51bV9pbmRleF90dXBsZXMsCiAJCQkJICBi b29sIHNwbGl0X2NsZWFudXAsCkBAIC05MzUsOSArOTM0LDggQEAgaGFzaGJ1Y2tldGNsZWFu dXAoUmVsYXRpb24gcmVsLCBCdWNrZXQgY3VyX2J1Y2tldCwgQnVmZmVyIGJ1Y2tldF9idWYs CiAJCWlmICghQmxvY2tOdW1iZXJJc1ZhbGlkKGJsa25vKSkKIAkJCWJyZWFrOwogCi0JCW5l eHRfYnVmID0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRlZ3kocmVsLCBibGtubywgSEFTSF9X UklURSwKLQkJCQkJCQkJCQkJICBMSF9PVkVSRkxPV19QQUdFLAotCQkJCQkJCQkJCQkgIGJz dHJhdGVneSk7CisJCW5leHRfYnVmID0gX2hhc2hfZ2V0YnVmKHJlbCwgYmxrbm8sIEhBU0hf V1JJVEUsCisJCQkJCQkJCUxIX09WRVJGTE9XX1BBR0UpOwogCiAJCS8qCiAJCSAqIHJlbGVh c2UgdGhlIGxvY2sgb24gcHJldmlvdXMgcGFnZSBhZnRlciBhY3F1aXJpbmcgdGhlIGxvY2sg b24gbmV4dApAQCAtMTAwNCw4ICsxMDAyLDcgQEAgaGFzaGJ1Y2tldGNsZWFudXAoUmVsYXRp b24gcmVsLCBCdWNrZXQgY3VyX2J1Y2tldCwgQnVmZmVyIGJ1Y2tldF9idWYsCiAJICogb3Jk ZXJpbmcgb2YgdHVwbGVzIGZvciBhIHNjYW4gdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgaXQu CiAJICovCiAJaWYgKGJ1Y2tldF9kaXJ0eSAmJiBJc0J1ZmZlckNsZWFudXBPSyhidWNrZXRf YnVmKSkKLQkJX2hhc2hfc3F1ZWV6ZWJ1Y2tldChyZWwsIGN1cl9idWNrZXQsIGJ1Y2tldF9i bGtubywgYnVja2V0X2J1ZiwKLQkJCQkJCQlic3RyYXRlZ3kpOworCQlfaGFzaF9zcXVlZXpl YnVja2V0KHJlbCwgY3VyX2J1Y2tldCwgYnVja2V0X2Jsa25vLCBidWNrZXRfYnVmKTsKIAll bHNlCiAJCUxvY2tCdWZmZXIoYnVja2V0X2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hvdmZsLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCmluZGV4IGRiYzU3ZWY5NThjLi41YjM1 ZmVkMzNmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaG92Zmwu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNob3ZmbC5jCkBAIC00OTEsOCAr NDkxLDcgQEAgX2hhc2hfZmlyc3RmcmVlYml0KHVpbnQzMiBtYXApCiBCbG9ja051bWJlcgog X2hhc2hfZnJlZW92ZmxwYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tldGJ1ZiwgQnVm ZmVyIG92ZmxidWYsCiAJCQkJICAgQnVmZmVyIHdidWYsIEluZGV4VHVwbGUgKml0dXBzLCBP ZmZzZXROdW1iZXIgKml0dXBfb2Zmc2V0cywKLQkJCQkgICBTaXplICp0dXBzX3NpemUsIHVp bnQxNiBuaXR1cHMsCi0JCQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KQor CQkJCSAgIFNpemUgKnR1cHNfc2l6ZSwgdWludDE2IG5pdHVwcykKIHsKIAlIYXNoTWV0YVBh Z2UgbWV0YXA7CiAJQnVmZmVyCQltZXRhYnVmOwpAQCAtNTM5LDIwICs1MzgsMTYgQEAgX2hh c2hfZnJlZW92ZmxwYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Y2tldGJ1ZiwgQnVmZmVy IG92ZmxidWYsCiAJCWlmIChwcmV2Ymxrbm8gPT0gd3JpdGVibGtubykKIAkJCXByZXZidWYg PSB3YnVmOwogCQllbHNlCi0JCQlwcmV2YnVmID0gX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRl Z3kocmVsLAotCQkJCQkJCQkJCQkJIHByZXZibGtubywKLQkJCQkJCQkJCQkJCSBIQVNIX1dS SVRFLAotCQkJCQkJCQkJCQkJIExIX0JVQ0tFVF9QQUdFIHwgTEhfT1ZFUkZMT1dfUEFHRSwK LQkJCQkJCQkJCQkJCSBic3RyYXRlZ3kpOworCQkJcHJldmJ1ZiA9IF9oYXNoX2dldGJ1Zihy ZWwsCisJCQkJCQkJCSAgIHByZXZibGtubywKKwkJCQkJCQkJICAgSEFTSF9XUklURSwKKwkJ CQkJCQkJICAgTEhfQlVDS0VUX1BBR0UgfCBMSF9PVkVSRkxPV19QQUdFKTsKIAl9CiAJaWYg KEJsb2NrTnVtYmVySXNWYWxpZChuZXh0Ymxrbm8pKQotCQluZXh0YnVmID0gX2hhc2hfZ2V0 YnVmX3dpdGhfc3RyYXRlZ3kocmVsLAotCQkJCQkJCQkJCQkgbmV4dGJsa25vLAotCQkJCQkJ CQkJCQkgSEFTSF9XUklURSwKLQkJCQkJCQkJCQkJIExIX09WRVJGTE9XX1BBR0UsCi0JCQkJ CQkJCQkJCSBic3RyYXRlZ3kpOwotCi0JLyogTm90ZTogYnN0cmF0ZWd5IGlzIGludGVudGlv bmFsbHkgbm90IHVzZWQgZm9yIG1ldGFwYWdlIGFuZCBiaXRtYXAgKi8KKwkJbmV4dGJ1ZiA9 IF9oYXNoX2dldGJ1ZihyZWwsCisJCQkJCQkJICAgbmV4dGJsa25vLAorCQkJCQkJCSAgIEhB U0hfV1JJVEUsCisJCQkJCQkJICAgTEhfT1ZFUkZMT1dfUEFHRSk7CiAKIAkvKiBSZWFkIHRo ZSBtZXRhcGFnZSBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHdoaWNoIGJpdG1hcCBwYWdlIHRvIHVz ZSAqLwogCW1ldGFidWYgPSBfaGFzaF9nZXRidWYocmVsLCBIQVNIX01FVEFQQUdFLCBIQVNI X1JFQUQsIExIX01FVEFfUEFHRSk7CkBAIC04NDMsOCArODM4LDcgQEAgdm9pZAogX2hhc2hf c3F1ZWV6ZWJ1Y2tldChSZWxhdGlvbiByZWwsCiAJCQkJCUJ1Y2tldCBidWNrZXQsCiAJCQkJ CUJsb2NrTnVtYmVyIGJ1Y2tldF9ibGtubywKLQkJCQkJQnVmZmVyIGJ1Y2tldF9idWYsCi0J CQkJCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKKwkJCQkJQnVmZmVyIGJ1Y2tl dF9idWYpCiB7CiAJQmxvY2tOdW1iZXIgd2Jsa25vOwogCUJsb2NrTnVtYmVyIHJibGtubzsK QEAgLTg4NiwxMSArODgwLDEwIEBAIF9oYXNoX3NxdWVlemVidWNrZXQoUmVsYXRpb24gcmVs LAogCQlyYmxrbm8gPSByb3BhcXVlLT5oYXNob19uZXh0Ymxrbm87CiAJCWlmIChyYnVmICE9 IEludmFsaWRCdWZmZXIpCiAJCQlfaGFzaF9yZWxidWYocmVsLCByYnVmKTsKLQkJcmJ1ZiA9 IF9oYXNoX2dldGJ1Zl93aXRoX3N0cmF0ZWd5KHJlbCwKLQkJCQkJCQkJCQkgIHJibGtubywK LQkJCQkJCQkJCQkgIEhBU0hfV1JJVEUsCi0JCQkJCQkJCQkJICBMSF9PVkVSRkxPV19QQUdF LAotCQkJCQkJCQkJCSAgYnN0cmF0ZWd5KTsKKwkJcmJ1ZiA9IF9oYXNoX2dldGJ1ZihyZWws CisJCQkJCQkJcmJsa25vLAorCQkJCQkJCUhBU0hfV1JJVEUsCisJCQkJCQkJTEhfT1ZFUkZM T1dfUEFHRSk7CiAJCXJwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAkJcm9wYXF1ZSA9 IEhhc2hQYWdlR2V0T3BhcXVlKHJwYWdlKTsKIAkJQXNzZXJ0KHJvcGFxdWUtPmhhc2hvX2J1 Y2tldCA9PSBidWNrZXQpOwpAQCAtOTUyLDExICs5NDUsMTAgQEAgcmVhZHBhZ2U6CiAKIAkJ CQkvKiBkb24ndCBuZWVkIHRvIG1vdmUgdG8gbmV4dCBwYWdlIGlmIHdlIHJlYWNoZWQgdGhl IHJlYWQgcGFnZSAqLwogCQkJCWlmICh3Ymxrbm8gIT0gcmJsa25vKQotCQkJCQluZXh0X3di dWYgPSBfaGFzaF9nZXRidWZfd2l0aF9zdHJhdGVneShyZWwsCi0JCQkJCQkJCQkJCQkJCSAg IHdibGtubywKLQkJCQkJCQkJCQkJCQkJICAgSEFTSF9XUklURSwKLQkJCQkJCQkJCQkJCQkJ ICAgTEhfT1ZFUkZMT1dfUEFHRSwKLQkJCQkJCQkJCQkJCQkJICAgYnN0cmF0ZWd5KTsKKwkJ CQkJbmV4dF93YnVmID0gX2hhc2hfZ2V0YnVmKHJlbCwKKwkJCQkJCQkJCQkJIHdibGtubywK KwkJCQkJCQkJCQkJIEhBU0hfV1JJVEUsCisJCQkJCQkJCQkJCSBMSF9PVkVSRkxPV19QQUdF KTsKIAogCQkJCWlmIChuaXR1cHMgPiAwKQogCQkJCXsKQEAgLTEwOTgsNyArMTA5MCw3IEBA IHJlYWRwYWdlOgogCiAJCS8qIGZyZWUgdGhpcyBvdmVyZmxvdyBwYWdlIChyZWxlYXNlcyBy YnVmKSAqLwogCQlfaGFzaF9mcmVlb3ZmbHBhZ2UocmVsLCBidWNrZXRfYnVmLCByYnVmLCB3 YnVmLCBpdHVwcywgaXR1cF9vZmZzZXRzLAotCQkJCQkJICAgdHVwc19zaXplLCBuaXR1cHMs IGJzdHJhdGVneSk7CisJCQkJCQkgICB0dXBzX3NpemUsIG5pdHVwcyk7CiAKIAkJLyogYmUg dGlkeSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgbml0dXBzOyBpKyspCkBAIC0xMTE1LDExICsx MTA3LDEwIEBAIHJlYWRwYWdlOgogCQkJcmV0dXJuOwogCQl9CiAKLQkJcmJ1ZiA9IF9oYXNo X2dldGJ1Zl93aXRoX3N0cmF0ZWd5KHJlbCwKLQkJCQkJCQkJCQkgIHJibGtubywKLQkJCQkJ CQkJCQkgIEhBU0hfV1JJVEUsCi0JCQkJCQkJCQkJICBMSF9PVkVSRkxPV19QQUdFLAotCQkJ CQkJCQkJCSAgYnN0cmF0ZWd5KTsKKwkJcmJ1ZiA9IF9oYXNoX2dldGJ1ZihyZWwsCisJCQkJ CQkJcmJsa25vLAorCQkJCQkJCUhBU0hfV1JJVEUsCisJCQkJCQkJTEhfT1ZFUkZMT1dfUEFH RSk7CiAJCXJwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAkJcm9wYXF1ZSA9IEhhc2hQ YWdlR2V0T3BhcXVlKHJwYWdlKTsKIAkJQXNzZXJ0KHJvcGFxdWUtPmhhc2hvX2J1Y2tldCA9 PSBidWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBh Z2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKaW5kZXggODA5OWIw ZDAyMWYuLmJkZjFhMjU1ZjFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNocGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMK QEAgLTEzOSw4ICsxMzksNyBAQCBfaGFzaF9nZXRpbml0YnVmKFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgYmxrbm8pCiAJaWYgKGJsa25vID09IFBfTkVXKQogCQllbG9nKEVSUk9SLCAi aGFzaCBBTSBkb2VzIG5vdCB1c2UgUF9ORVciKTsKIAotCWJ1ZiA9IFJlYWRCdWZmZXJFeHRl bmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9aRVJPX0FORF9MT0NLLAotCQkJ CQkJCSBOVUxMKTsKKwlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktO VU0sIGJsa25vLCBSQk1fWkVST19BTkRfTE9DSyk7CiAKIAkvKiByZWYgY291bnQgYW5kIGxv Y2sgdHlwZSBhcmUgY29ycmVjdCAqLwogCkBAIC0yMDksNyArMjA4LDcgQEAgX2hhc2hfZ2V0 bmV3YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZvcmtOdW1iZXIgZm9y a051bSkKIAkvKiBzbWdyIGluc2lzdHMgd2UgZXhwbGljaXRseSBleHRlbmQgdGhlIHJlbGF0 aW9uICovCiAJaWYgKGJsa25vID09IG5ibG9ja3MpCiAJewotCQlidWYgPSBFeHRlbmRCdWZm ZXJlZFJlbChCTVJfUkVMKHJlbCksIGZvcmtOdW0sIE5VTEwsCisJCWJ1ZiA9IEV4dGVuZEJ1 ZmZlcmVkUmVsKEJNUl9SRUwocmVsKSwgZm9ya051bSwKIAkJCQkJCQkJRUJfTE9DS19GSVJT VCB8IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0spOwogCQlpZiAoQnVmZmVyR2V0QmxvY2tOdW1i ZXIoYnVmKSAhPSBibGtubykKIAkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGhhc2ggcmVs YXRpb24gc2l6ZTogJXUsIHNob3VsZCBiZSAldSIsCkBAIC0yMTcsOCArMjE2LDcgQEAgX2hh c2hfZ2V0bmV3YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZvcmtOdW1i ZXIgZm9ya051bSkKIAl9CiAJZWxzZQogCXsKLQkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVk KHJlbCwgZm9ya051bSwgYmxrbm8sIFJCTV9aRVJPX0FORF9MT0NLLAotCQkJCQkJCQkgTlVM TCk7CisJCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIGZvcmtOdW0sIGJsa25vLCBS Qk1fWkVST19BTkRfTE9DSyk7CiAJfQogCiAJLyogcmVmIGNvdW50IGFuZCBsb2NrIHR5cGUg YXJlIGNvcnJlY3QgKi8KQEAgLTIyOSwzNCArMjI3LDYgQEAgX2hhc2hfZ2V0bmV3YnVmKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZvcmtOdW1iZXIgZm9ya051bSkKIAly ZXR1cm4gYnVmOwogfQogCi0vKgotICoJX2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRlZ3koKSAt LSBHZXQgYSBidWZmZXIgd2l0aCBub25kZWZhdWx0IHN0cmF0ZWd5LgotICoKLSAqCQlUaGlz IGlzIGlkZW50aWNhbCB0byBfaGFzaF9nZXRidWYoKSBidXQgYWxzbyBhbGxvd3MgYSBidWZm ZXIgYWNjZXNzCi0gKgkJc3RyYXRlZ3kgdG8gYmUgc3BlY2lmaWVkLiAgV2UgdXNlIHRoaXMg Zm9yIFZBQ1VVTSBvcGVyYXRpb25zLgotICovCi1CdWZmZXIKLV9oYXNoX2dldGJ1Zl93aXRo X3N0cmF0ZWd5KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCi0JCQkJCQkgICBp bnQgYWNjZXNzLCBpbnQgZmxhZ3MsCi0JCQkJCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBi c3RyYXRlZ3kpCi17Ci0JQnVmZmVyCQlidWY7Ci0KLQlpZiAoYmxrbm8gPT0gUF9ORVcpCi0J CWVsb2coRVJST1IsICJoYXNoIEFNIGRvZXMgbm90IHVzZSBQX05FVyIpOwotCi0JYnVmID0g UmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1B TCwgYnN0cmF0ZWd5KTsKLQotCWlmIChhY2Nlc3MgIT0gSEFTSF9OT0xPQ0spCi0JCUxvY2tC dWZmZXIoYnVmLCBhY2Nlc3MpOwotCi0JLyogcmVmIGNvdW50IGFuZCBsb2NrIHR5cGUgYXJl IGNvcnJlY3QgKi8KLQotCV9oYXNoX2NoZWNrcGFnZShyZWwsIGJ1ZiwgZmxhZ3MpOwotCi0J cmV0dXJuIGJ1ZjsKLX0KLQogLyoKICAqCV9oYXNoX3JlbGJ1ZigpIC0tIHJlbGVhc2UgYSBs b2NrZWQgYnVmZmVyLgogICoKQEAgLTc1OCw3ICs3MjgsNyBAQCByZXN0YXJ0X2V4cGFuZDoK IAkJLyogUmVsZWFzZSB0aGUgbWV0YXBhZ2UgbG9jay4gKi8KIAkJTG9ja0J1ZmZlcihtZXRh YnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCi0JCWhhc2hidWNrZXRjbGVhbnVwKHJlbCwg b2xkX2J1Y2tldCwgYnVmX29ibGtubywgc3RhcnRfb2Jsa25vLCBOVUxMLAorCQloYXNoYnVj a2V0Y2xlYW51cChyZWwsIG9sZF9idWNrZXQsIGJ1Zl9vYmxrbm8sIHN0YXJ0X29ibGtubywK IAkJCQkJCSAgbWF4YnVja2V0LCBoaWdobWFzaywgbG93bWFzaywgTlVMTCwgTlVMTCwgdHJ1 ZSwKIAkJCQkJCSAgTlVMTCwgTlVMTCk7CiAKQEAgLTEzMzMsNyArMTMwMyw3IEBAIF9oYXNo X3NwbGl0YnVja2V0KFJlbGF0aW9uIHJlbCwKIAl7CiAJCUxvY2tCdWZmZXIoYnVja2V0X25i dWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAJCWhhc2hidWNrZXRjbGVhbnVwKHJlbCwgb2J1 Y2tldCwgYnVja2V0X29idWYsCi0JCQkJCQkgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Y2tl dF9vYnVmKSwgTlVMTCwKKwkJCQkJCSAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVja2V0X29i dWYpLAogCQkJCQkJICBtYXhidWNrZXQsIGhpZ2htYXNrLCBsb3dtYXNrLCBOVUxMLCBOVUxM LCB0cnVlLAogCQkJCQkJICBOVUxMLCBOVUxMKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCmluZGV4IDljZGMyMjE2NzViLi40OGU3YzQyMWJmNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKQEAgLTM1OSw3ICszNTksNiBAQCBzdGF0aWMgdm9pZAogaW5pdHNj YW4oSGVhcFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkga2V5LCBib29sIGtlZXBfc3RhcnRibG9j aykKIHsKIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYyBicHNjYW4gPSBOVUxMOwotCWJv b2wJCWFsbG93X3N0cmF0OwogCWJvb2wJCWFsbG93X3N5bmM7CiAKIAkvKgpAQCAtMzk2LDI0 ICszOTUsMTAgQEAgaW5pdHNjYW4oSGVhcFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkga2V5LCBi b29sIGtlZXBfc3RhcnRibG9jaykKIAlpZiAoIVJlbGF0aW9uVXNlc0xvY2FsQnVmZmVycyhz Y2FuLT5yc19iYXNlLnJzX3JkKSAmJgogCQlzY2FuLT5yc19uYmxvY2tzID4gTkJ1ZmZlcnMg LyA0KQogCXsKLQkJYWxsb3dfc3RyYXQgPSAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNP X0FMTE9XX1NUUkFUKSAhPSAwOwogCQlhbGxvd19zeW5jID0gKHNjYW4tPnJzX2Jhc2UucnNf ZmxhZ3MgJiBTT19BTExPV19TWU5DKSAhPSAwOwogCX0KIAllbHNlCi0JCWFsbG93X3N0cmF0 ID0gYWxsb3dfc3luYyA9IGZhbHNlOwotCi0JaWYgKGFsbG93X3N0cmF0KQotCXsKLQkJLyog RHVyaW5nIGEgcmVzY2FuLCBrZWVwIHRoZSBwcmV2aW91cyBzdHJhdGVneSBvYmplY3QuICov Ci0JCWlmIChzY2FuLT5yc19zdHJhdGVneSA9PSBOVUxMKQotCQkJc2Nhbi0+cnNfc3RyYXRl Z3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOwotCX0KLQllbHNlCi0Jewot CQlpZiAoc2Nhbi0+cnNfc3RyYXRlZ3kgIT0gTlVMTCkKLQkJCUZyZWVBY2Nlc3NTdHJhdGVn eShzY2FuLT5yc19zdHJhdGVneSk7Ci0JCXNjYW4tPnJzX3N0cmF0ZWd5ID0gTlVMTDsKLQl9 CisJCWFsbG93X3N5bmMgPSBmYWxzZTsKIAogCWlmIChzY2FuLT5yc19iYXNlLnJzX3BhcmFs bGVsICE9IE5VTEwpCiAJewpAQCAtMTIwMiw3ICsxMTg3LDYgQEAgaGVhcF9iZWdpbnNjYW4o UmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCXNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgPSBmbGFnczsKIAlzY2FuLT5yc19iYXNlLnJzX3BhcmFsbGVsID0gcGFyYWxs ZWxfc2NhbjsKIAlzY2FuLT5yc19iYXNlLnJzX2luc3RydW1lbnQgPSBOVUxMOwotCXNjYW4t PnJzX3N0cmF0ZWd5ID0gTlVMTDsJLyogc2V0IGluIGluaXRzY2FuICovCiAJc2Nhbi0+cnNf Y2J1ZiA9IEludmFsaWRCdWZmZXI7CiAKIAkvKgpAQCAtMTI3Myw4ICsxMjU3LDcgQEAgaGVh cF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCiAJ LyoKIAkgKiBTZXQgdXAgYSByZWFkIHN0cmVhbSBmb3Igc2VxdWVudGlhbCBzY2FucyBhbmQg VElEIHJhbmdlIHNjYW5zLiBUaGlzCi0JICogc2hvdWxkIGJlIGRvbmUgYWZ0ZXIgaW5pdHNj YW4oKSBiZWNhdXNlIGluaXRzY2FuKCkgYWxsb2NhdGVzIHRoZQotCSAqIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IG9iamVjdCBwYXNzZWQgdG8gdGhlIHJlYWQgc3RyZWFtIEFQSS4KKwkgKiBz aG91bGQgYmUgZG9uZSBhZnRlciBpbml0c2NhbigpLgogCSAqLwogCWlmIChzY2FuLT5yc19i YXNlLnJzX2ZsYWdzICYgU09fVFlQRV9TRVFTQ0FOIHx8CiAJCXNjYW4tPnJzX2Jhc2UucnNf ZmxhZ3MgJiBTT19UWVBFX1RJRFJBTkdFU0NBTikKQEAgLTEyOTUsNyArMTI3OCw2IEBAIGhl YXBfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJ ICovCiAJCXNjYW4tPnJzX3JlYWRfc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRp b24oUkVBRF9TVFJFQU1fU0VRVUVOVElBTCB8CiAJCQkJCQkJCQkJCQkJCSAgUkVBRF9TVFJF QU1fVVNFX0JBVENISU5HLAotCQkJCQkJCQkJCQkJCQkgIHNjYW4tPnJzX3N0cmF0ZWd5LAog CQkJCQkJCQkJCQkJCQkgIHNjYW4tPnJzX2Jhc2UucnNfcmQsCiAJCQkJCQkJCQkJCQkJCSAg TUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCQkJCQkgIGNiLApAQCAtMTMwNiw3ICsxMjg4LDYg QEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90 LAogCXsKIAkJc2Nhbi0+cnNfcmVhZF9zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxh dGlvbihSRUFEX1NUUkVBTV9ERUZBVUxUIHwKIAkJCQkJCQkJCQkJCQkJICBSRUFEX1NUUkVB TV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJCQkJCSAgc2Nhbi0+cnNfc3RyYXRlZ3ksCiAJ CQkJCQkJCQkJCQkJCSAgc2Nhbi0+cnNfYmFzZS5yc19yZCwKIAkJCQkJCQkJCQkJCQkJICBN QUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJCQkJCSAgYml0bWFwaGVhcF9zdHJlYW1fcmVhZF9u ZXh0LApAQCAtMTQwMiw5ICsxMzgzLDYgQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mg c3NjYW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQogCQlSZWxl YXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKIAotCS8qCi0JICogTXVzdCBmcmVlIHRo ZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3ku Ci0JICovCiAJaWYgKHNjYW4tPnJzX3JlYWRfc3RyZWFtKQogCQlyZWFkX3N0cmVhbV9lbmQo c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwogCkBAIC0xNDE2LDkgKzEzOTQsNiBAQCBoZWFwX2Vu ZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoc2Nhbi0+cnNfYmFzZS5yc19rZXkp CiAJCXBmcmVlKHNjYW4tPnJzX2Jhc2UucnNfa2V5KTsKIAotCWlmIChzY2FuLT5yc19zdHJh dGVneSAhPSBOVUxMKQotCQlGcmVlQWNjZXNzU3RyYXRlZ3koc2Nhbi0+cnNfc3RyYXRlZ3kp OwotCiAJaWYgKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJl ZShzY2FuLT5yc19wYXJhbGxlbHdvcmtlcmRhdGEpOwogCkBAIC0xOTM5LDcgKzE5MTQsNiBA QCBHZXRCdWxrSW5zZXJ0U3RhdGUodm9pZCkKIAlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsK IAogCWJpc3RhdGUgPSAoQnVsa0luc2VydFN0YXRlKSBwYWxsb2Nfb2JqZWN0KEJ1bGtJbnNl cnRTdGF0ZURhdGEpOwotCWJpc3RhdGUtPnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3ko QkFTX0JVTEtXUklURSk7CiAJYmlzdGF0ZS0+Y3VycmVudF9idWYgPSBJbnZhbGlkQnVmZmVy OwogCWJpc3RhdGUtPm5leHRfZnJlZSA9IEludmFsaWRCbG9ja051bWJlcjsKIAliaXN0YXRl LT5sYXN0X2ZyZWUgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0xOTU1LDcgKzE5MjksNiBA QCBGcmVlQnVsa0luc2VydFN0YXRlKEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKQogewogCWlm IChiaXN0YXRlLT5jdXJyZW50X2J1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQlSZWxlYXNlQnVm ZmVyKGJpc3RhdGUtPmN1cnJlbnRfYnVmKTsKLQlGcmVlQWNjZXNzU3RyYXRlZ3koYmlzdGF0 ZS0+c3RyYXRlZ3kpOwogCXBmcmVlKGJpc3RhdGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBiZjg3NDMwY2YwMS4uZDE0NjU4ZDcy MTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAt MjIxMyw5ICsyMjEzLDkgQEAgaGVhcGFtX3NjYW5fc2FtcGxlX25leHRfYmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLCBTYW1wbGVTY2FuU3RhdGUgKnNjYW5zdGF0ZSkKIAkgKi8KIAlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCi0JLyogUmVhZCBwYWdlIHVzaW5nIHNlbGVjdGVkIHN0 cmF0ZWd5ICovCisJLyogUmVhZCBwYWdlICovCiAJaHNjYW4tPnJzX2NidWYgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQoaHNjYW4tPnJzX2Jhc2UucnNfcmQsIE1BSU5fRk9SS05VTSwKLQkJCQkJ CQkJCQlibG9ja25vLCBSQk1fTk9STUFMLCBoc2Nhbi0+cnNfc3RyYXRlZ3kpOworCQkJCQkJ CQkJCWJsb2Nrbm8sIFJCTV9OT1JNQUwpOwogCiAJLyogaW4gcGFnZW1vZGUsIHBydW5lIHRo ZSBwYWdlIGFuZCBkZXRlcm1pbmUgdmlzaWJsZSB0dXBsZSBvZmZzZXRzICovCiAJaWYgKGhz Y2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fQUxMT1dfUEFHRU1PREUpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oaW8uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hpby5jCmluZGV4IGU5NmUwZjc3ZDkyLi45YmY3YWJjMjQ3ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGlvLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGlvLmMKQEAgLTgwLDcgKzgwLDggQEAgUmVsYXRpb25QdXRIZWFwVHVwbGUoUmVs YXRpb24gcmVsYXRpb24sCiB9CiAKIC8qCi0gKiBSZWFkIGluIGEgYnVmZmVyIGluIG1vZGUs IHVzaW5nIGJ1bGstaW5zZXJ0IHN0cmF0ZWd5IGlmIGJpc3RhdGUgaXNuJ3QgTlVMTC4KKyAq IFJlYWQgaW4gYSBidWZmZXIgaW4gbW9kZSwgdXNpbmcgdGhlIGJpc3RhdGUncyBwaW5uZWQg dGFyZ2V0IHBhZ2UgaWYKKyAqIGF2YWlsYWJsZS4KICAqLwogc3RhdGljIEJ1ZmZlcgogUmVh ZEJ1ZmZlckJJKFJlbGF0aW9uIHJlbGF0aW9uLCBCbG9ja051bWJlciB0YXJnZXRCbG9jaywK QEAgLTkxLDcgKzkyLDcgQEAgUmVhZEJ1ZmZlckJJKFJlbGF0aW9uIHJlbGF0aW9uLCBCbG9j a051bWJlciB0YXJnZXRCbG9jaywKIAkvKiBJZiBub3QgYnVsay1pbnNlcnQsIGV4YWN0bHkg bGlrZSBSZWFkQnVmZmVyICovCiAJaWYgKCFiaXN0YXRlKQogCQlyZXR1cm4gUmVhZEJ1ZmZl ckV4dGVuZGVkKHJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sIHRhcmdldEJsb2NrLAotCQkJCQkJ CQkgIG1vZGUsIE5VTEwpOworCQkJCQkJCQkgIG1vZGUpOwogCiAJLyogSWYgd2UgaGF2ZSB0 aGUgZGVzaXJlZCBibG9jayBhbHJlYWR5IHBpbm5lZCwgcmUtcGluIGFuZCByZXR1cm4gaXQg Ki8KIAlpZiAoYmlzdGF0ZS0+Y3VycmVudF9idWYgIT0gSW52YWxpZEJ1ZmZlcikKQEAgLTEx Myw5ICsxMTQsOSBAQCBSZWFkQnVmZmVyQkkoUmVsYXRpb24gcmVsYXRpb24sIEJsb2NrTnVt YmVyIHRhcmdldEJsb2NrLAogCQliaXN0YXRlLT5jdXJyZW50X2J1ZiA9IEludmFsaWRCdWZm ZXI7CiAJfQogCi0JLyogUGVyZm9ybSBhIHJlYWQgdXNpbmcgdGhlIGJ1ZmZlciBzdHJhdGVn eSAqLworCS8qIFBlcmZvcm0gdGhlIHJlYWQgKi8KIAlidWZmZXIgPSBSZWFkQnVmZmVyRXh0 ZW5kZWQocmVsYXRpb24sIE1BSU5fRk9SS05VTSwgdGFyZ2V0QmxvY2ssCi0JCQkJCQkJCW1v ZGUsIGJpc3RhdGUtPnN0cmF0ZWd5KTsKKwkJCQkJCQkJbW9kZSk7CiAKIAkvKiBTYXZlIHRo ZSBzZWxlY3RlZCBibG9jayBhcyB0YXJnZXQgZm9yIGZ1dHVyZSBpbnNlcnRzICovCiAJSW5j ckJ1ZmZlclJlZkNvdW50KGJ1ZmZlcik7CkBAIC0zMzcsNyArMzM4LDYgQEAgUmVsYXRpb25B ZGRCbG9ja3MoUmVsYXRpb24gcmVsYXRpb24sIEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlLAog CSAqIHdheSBsYXJnZXIuCiAJICovCiAJZmlyc3RfYmxvY2sgPSBFeHRlbmRCdWZmZXJlZFJl bEJ5KEJNUl9SRUwocmVsYXRpb24pLCBNQUlOX0ZPUktOVU0sCi0JCQkJCQkJCQkgIGJpc3Rh dGUgPyBiaXN0YXRlLT5zdHJhdGVneSA6IE5VTEwsCiAJCQkJCQkJCQkgIEVCX0xPQ0tfRklS U1QsCiAJCQkJCQkJCQkgIGV4dGVuZF9ieV9wYWdlcywKIAkJCQkJCQkJCSAgdmljdGltX2J1 ZmZlcnMsCkBAIC00ODQsOCArNDg0LDcgQEAgUmVsYXRpb25BZGRCbG9ja3MoUmVsYXRpb24g cmVsYXRpb24sIEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlLAogICoKICAqCVRoZSBjYWxsZXIg Y2FuIGFsc28gcHJvdmlkZSBhIEJ1bGtJbnNlcnRTdGF0ZSBvYmplY3QgdG8gb3B0aW1pemUg bWFueQogICoJaW5zZXJ0aW9ucyBpbnRvIHRoZSBzYW1lIHJlbGF0aW9uLiAgVGhpcyBrZWVw cyBhIHBpbiBvbiB0aGUgY3VycmVudAotICoJaW5zZXJ0aW9uIHRhcmdldCBwYWdlICh0byBz YXZlIHBpbi91bnBpbiBjeWNsZXMpIGFuZCBhbHNvIHBhc3NlcyBhCi0gKglCVUxLV1JJVEUg YnVmZmVyIHNlbGVjdGlvbiBzdHJhdGVneSBvYmplY3QgdG8gdGhlIGJ1ZmZlciBtYW5hZ2Vy LgorICoJaW5zZXJ0aW9uIHRhcmdldCBwYWdlICh0byBzYXZlIHBpbi91bnBpbiBjeWNsZXMp LgogICoJUGFzc2luZyBOVUxMIGZvciBiaXN0YXRlIHNlbGVjdHMgdGhlIGRlZmF1bHQgYmVo YXZpb3IuCiAgKgogICoJV2UgZG9uJ3QgZmlsbCBleGlzdGluZyBwYWdlcyBmdXJ0aGVyIHRo YW4gdGhlIGZpbGxmYWN0b3IsIGV4Y2VwdCBmb3IgbGFyZ2UKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCAzOTM5NWFlZDBkNS4uOGJjOGU0NzBhZjMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI1Nyw3ICsyNTcsNiBAQCB0 eXBlZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJaW50CQkJbmluZGV4ZXM7CiAKIAkvKiBCdWZm ZXIgYWNjZXNzIHN0cmF0ZWd5IGFuZCBwYXJhbGxlbCB2YWN1dW0gc3RhdGUgKi8KLQlCdWZm ZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZz OwogCiAJLyogQWdncmVzc2l2ZSBWQUNVVU0/IChtdXN0IHNldCByZWxmcm96ZW54aWQgPj0g RnJlZXplTGltaXQpICovCkBAIC02MjEsOCArNjIwLDcgQEAgaGVhcF92YWN1dW1fZWFnZXJf c2Nhbl9zZXR1cChMVlJlbFN0YXRlICp2YWNyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFy YW1zKQogICoJCWFuZCBsb2NrZWQgdGhlIHJlbGF0aW9uLgogICovCiB2b2lkCi1oZWFwX3Zh Y3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJ CQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCitoZWFwX3ZhY3V1bV9yZWwoUmVs YXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKIHsKIAlMVlJlbFN0YXRl ICp2YWNyZWw7CiAJYm9vbAkJdmVyYm9zZSwKQEAgLTY5OSw3ICs2OTcsNiBAQCBoZWFwX3Zh Y3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl2 YWNyZWwtPnJlbCA9IHJlbDsKIAl2YWNfb3Blbl9pbmRleGVzKHZhY3JlbC0+cmVsLCBSb3dF eGNsdXNpdmVMb2NrLCAmdmFjcmVsLT5uaW5kZXhlcywKIAkJCQkJICZ2YWNyZWwtPmluZHJl bHMpOwotCXZhY3JlbC0+YnN0cmF0ZWd5ID0gYnN0cmF0ZWd5OwogCWlmIChpbnN0cnVtZW50 ICYmIHZhY3JlbC0+bmluZGV4ZXMgPiAwKQogCXsKIAkJLyogQ29weSBpbmRleCBuYW1lcyB1 c2VkIGJ5IGluc3RydW1lbnRhdGlvbiAobm90IGVycm9yIHJlcG9ydGluZykgKi8KQEAgLTEz MTEsNyArMTMwOCw2IEBAIGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkg KiBleHBsaWNpdCB3b3JrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jay4KIAkgKi8KIAlz dHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVO QU5DRSwKLQkJCQkJCQkJCQl2YWNyZWwtPmJzdHJhdGVneSwKIAkJCQkJCQkJCQl2YWNyZWwt PnJlbCwKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrLApAQCAtMjY3MCw3ICsyNjY2LDYgQEAgbGF6eV92YWN1dW1faGVhcF9y ZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCSAqLwogCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2Jl Z2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJCQkJCQkJCQlSRUFE X1NUUkVBTV9VU0VfQkFUQ0hJTkcsCi0JCQkJCQkJCQkJdmFjcmVsLT5ic3RyYXRlZ3ksCiAJ CQkJCQkJCQkJdmFjcmVsLT5yZWwsCiAJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJ CQkJCXZhY3V1bV9yZWFwX2xwX3JlYWRfc3RyZWFtX25leHQsCkBAIC0yOTA0LDEzICsyODk5 LDYgQEAgbGF6eV9jaGVja193cmFwYXJvdW5kX2ZhaWxzYWZlKExWUmVsU3RhdGUgKnZhY3Jl bCkKIAogCQlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IHRydWU7CiAKLQkJLyoKLQkJICogQWJh bmRvbiB1c2Ugb2YgYSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IHRvIGFsbG93IHVzZSBvZiBh bGwgb2YKLQkJICogc2hhcmVkIGJ1ZmZlcnMuICBXZSBhc3N1bWUgdGhlIGNhbGxlciB3aG8g YWxsb2NhdGVkIHRoZSBtZW1vcnkgZm9yCi0JCSAqIHRoZSBCdWZmZXJBY2Nlc3NTdHJhdGVn eSB3aWxsIGZyZWUgaXQuCi0JCSAqLwotCQl2YWNyZWwtPmJzdHJhdGVneSA9IE5VTEw7Ci0K IAkJLyogRGlzYWJsZSBpbmRleCB2YWN1dW1pbmcsIGluZGV4IGNsZWFudXAsIGFuZCBoZWFw IHJlbCB0cnVuY2F0aW9uICovCiAJCXZhY3JlbC0+ZG9faW5kZXhfdmFjdXVtaW5nID0gZmFs c2U7CiAJCXZhY3JlbC0+ZG9faW5kZXhfY2xlYW51cCA9IGZhbHNlOwpAQCAtMzAyMyw3ICsz MDExLDYgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gdHJ1 ZTsKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBf dHVwbGVzID0gcmVsdHVwbGVzOwotCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0 ZWd5OwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpA QCAtMzA3NCw3ICszMDYxLDYgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBp bmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2Vf bGV2ZWwgPSBERUJVRzI7CiAKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVz OwotCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OwogCiAJLyoKIAkgKiBV cGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpAQCAtMzM1NCw4ICszMzQwLDcg QEAgY291bnRfbm9uZGVsZXRhYmxlX3BhZ2VzKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAq bG9ja193YWl0ZXJfZGV0ZWN0ZWQpCiAJCQlwcmVmZXRjaGVkVW50aWwgPSBwcmVmZXRjaFN0 YXJ0OwogCQl9CiAKLQkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHZhY3JlbC0+cmVsLCBN QUlOX0ZPUktOVU0sIGJsa25vLCBSQk1fTk9STUFMLAotCQkJCQkJCQkgdmFjcmVsLT5ic3Ry YXRlZ3kpOworCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQodmFjcmVsLT5yZWwsIE1BSU5f Rk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCiAJCS8qIEluIHRoaXMgcGhhc2Ugd2Ug b25seSBuZWVkIHNoYXJlZCBhY2Nlc3MgdG8gdGhlIGJ1ZmZlciAqLwogCQlMb2NrQnVmZmVy KGJ1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwpAQCAtMzQ0Niw4ICszNDMxLDcgQEAgZGVhZF9p dGVtc19hbGxvYyhMVlJlbFN0YXRlICp2YWNyZWwsIGludCBud29ya2VycykKIAkJCXZhY3Jl bC0+cHZzID0gcGFyYWxsZWxfdmFjdXVtX2luaXQodmFjcmVsLT5yZWwsIHZhY3JlbC0+aW5k cmVscywKIAkJCQkJCQkJCQkJICAgdmFjcmVsLT5uaW5kZXhlcywgbndvcmtlcnMsCiAJCQkJ CQkJCQkJCSAgIHZhY193b3JrX21lbSwKLQkJCQkJCQkJCQkJICAgdmFjcmVsLT52ZXJib3Nl ID8gSU5GTyA6IERFQlVHMiwKLQkJCQkJCQkJCQkJICAgdmFjcmVsLT5ic3RyYXRlZ3kpOwor CQkJCQkJCQkJCQkgICB2YWNyZWwtPnZlcmJvc2UgPyBJTkZPIDogREVCVUcyKTsKIAogCQkv KgogCQkgKiBJZiBwYXJhbGxlbCBtb2RlIHN0YXJ0ZWQsIGRlYWRfaXRlbXMgYW5kIGRlYWRf aXRlbXNfaW5mbyBzcGFjZXMgYXJlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmls aXR5bWFwLmMKaW5kZXggNGZkNDcwNzAyYWEuLmIyNjEyYjFmNzEwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC01NzUsNyArNTc1LDcgQEAgdm1f cmVhZGJ1ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBib29sIGV4dGVuZCkK IAl9CiAJZWxzZQogCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBWSVNJQklMSVRZ TUFQX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkgUkJNX1pFUk9fT05fRVJST1IsIE5VTEwp OworCQkJCQkJCQkgUkJNX1pFUk9fT05fRVJST1IpOwogCiAJLyoKIAkgKiBJbml0aWFsaXpp bmcgdGhlIHBhZ2Ugd2hlbiBuZWVkZWQgaXMgdHJpY2tpZXIgdGhhbiBpdCBsb29rcywgYmVj YXVzZSBvZgpAQCAtNjExLDcgKzYxMSw3IEBAIHZtX2V4dGVuZChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIHZtX25ibG9ja3MpCiB7CiAJQnVmZmVyCQlidWY7CiAKLQlidWYgPSBFeHRl bmRCdWZmZXJlZFJlbFRvKEJNUl9SRUwocmVsKSwgVklTSUJJTElUWU1BUF9GT1JLTlVNLCBO VUxMLAorCWJ1ZiA9IEV4dGVuZEJ1ZmZlcmVkUmVsVG8oQk1SX1JFTChyZWwpLCBWSVNJQklM SVRZTUFQX0ZPUktOVU0sCiAJCQkJCQkJICBFQl9DUkVBVEVfRk9SS19JRl9ORUVERUQgfAog CQkJCQkJCSAgRUJfQ0xFQVJfU0laRV9DQUNIRSwKIAkJCQkJCQkgIHZtX25ibG9ja3MsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4IDEwOTAxN2Q2YjUyLi43YjVm YzE2ZDc1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdl LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTk2MCw3 ICs5NjAsNyBAQCBfYnRfYWxsb2NidWYoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVs KQogCSAqIG90aGVyd2lzZSB3b3VsZCBtYWtlLCBhcyB3ZSBjYW4ndCB1c2UgX2J0X2xvY2ti dWYoKSB3aXRob3V0IGludHJvZHVjaW5nCiAJICogYSByYWNlLgogCSAqLwotCWJ1ZiA9IEV4 dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwocmVsKSwgTUFJTl9GT1JLTlVNLCBOVUxMLCBFQl9M T0NLX0ZJUlNUKTsKKwlidWYgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKHJlbCksIE1B SU5fRk9SS05VTSwgRUJfTE9DS19GSVJTVCk7CiAJaWYgKCFSZWxhdGlvblVzZXNMb2NhbEJ1 ZmZlcnMocmVsKSkKIAkJVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5FRChCdWZmZXJHZXRQYWdl KGJ1ZiksIEJMQ0tTWik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4 IDNkZjJjNzUyZWFkLi4zNzlhMmQzN2RlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHJlZS5jCkBAIC0xMzI0LDcgKzEzMjQsNiBAQCBidHZhY3V1bXNjYW4oSW5kZXhWYWN1dW1J bmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCXN0cmVhbSA9IHJl YWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKIAkJ CQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxMIHwKIAkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0Vf QkFUQ0hJTkcsCi0JCQkJCQkJCQkJaW5mby0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJcmVsLAog CQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKIAkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0 cmVhbV9jYiwKQEAgLTE3MzAsOCArMTcyOSw3IEBAIGJhY2t0cmFjazoKIAkJICogcmVjeWNs ZSBhbGwtemVybyBwYWdlcywgbm90IGZhaWwuICBBbHNvLCB3ZSB3YW50IHRvIHVzZSBhCiAJ CSAqIG5vbmRlZmF1bHQgYnVmZmVyIGFjY2VzcyBzdHJhdGVneS4KIAkJICovCi0JCWJ1ZiA9 IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JN QUwsCi0JCQkJCQkJCSBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZiA9IFJlYWRCdWZmZXJFeHRl bmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sIFJCTV9OT1JNQUwpOwogCQlnb3RvIGJh Y2t0cmFjazsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndXRpbHMuYwppbmRl eCBmMmVlMzMzZjYwZC4uNzg1ZTM4NWFhYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9zcGdpc3Qvc3BndXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0 L3NwZ3V0aWxzLmMKQEAgLTQzMiw3ICs0MzIsNyBAQCBTcEdpc3ROZXdCdWZmZXIoUmVsYXRp b24gaW5kZXgpCiAJCVJlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAl9CiAKLQlidWZmZXIgPSBF eHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVNLCBOVUxMLAor CWJ1ZmZlciA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZPUktO VU0sCiAJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CiAKIAlyZXR1cm4gYnVmZmVyOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggYzQ2MWY4ZGMwMmQuLjlm NjQ0ZWRhZjgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAg LTcwNCw4ICs3MDQsNyBAQCBzcGdwcm9jZXNzcGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAogCQkvKiBleGFtaW5lIHRoZSByZWZlcmVuY2VkIHBhZ2UgKi8KIAkJYmxrbm8g PSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZwaXRlbS0+dGlkKTsKLQkJYnVmZmVyID0g UmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJ CQkJUkJNX05PUk1BTCwgYmRzLT5pbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX05PUk1BTCk7 CiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwogCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC04MzAsNyArODI5LDYgQEAgc3BndmFj dXVtc2NhbihzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAlzdHJlYW0gPSByZWFkX3N0cmVh bV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CiAJCQkJCQkJCQkJ UkVBRF9TVFJFQU1fRlVMTCB8CiAJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5H LAotCQkJCQkJCQkJCWJkcy0+aW5mby0+c3RyYXRlZ3ksCiAJCQkJCQkJCQkJaW5kZXgsCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3Ry ZWFtX2NiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2lu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCmluZGV4 IGYyZTEwYjgyYjdkLi4wYzE2YjdmZWYwZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dpbnNlcnQuYwpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgbG9nX25ld3BhZ2VfcmFu Z2UoUmVsYXRpb24gcmVsLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCXdoaWxlIChuYnVmcyA8 IFhMUl9NQVhfQkxPQ0tfSUQgJiYgYmxrbm8gPCBlbmRibGspCiAJCXsKIAkJCUJ1ZmZlcgkJ YnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgZm9ya251bSwgYmxrbm8sCi0JCQkJCQkJ CQkJCQkgUkJNX05PUk1BTCwgTlVMTCk7CisJCQkJCQkJCQkJCQkgUkJNX05PUk1BTCk7CiAK IAkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCmluZGV4IGQ4YzE3OWM1ZGNjLi5lNWJl NDlmOGI1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAg LTUxOSw3ICs1MTksNyBAQCBYTG9nUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbEZpbGVMb2NhdG9y IHJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtudW0sCiAJewogCQkvKiBwYWdlIGV4aXN0cyBp biBmaWxlICovCiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJXaXRob3V0UmVsY2FjaGUocmxvY2F0 b3IsIGZvcmtudW0sIGJsa25vLAotCQkJCQkJCQkJCSAgIG1vZGUsIE5VTEwsIHRydWUpOwor CQkJCQkJCQkJCSAgIG1vZGUsIHRydWUpOwogCX0KIAllbHNlCiAJewpAQCAtNTM2LDcgKzUz Niw2IEBAIFhMb2dSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3Is IEZvcmtOdW1iZXIgZm9ya251bSwKIAkJQXNzZXJ0KEluUmVjb3ZlcnkpOwogCQlidWZmZXIg PSBFeHRlbmRCdWZmZXJlZFJlbFRvKEJNUl9TTUdSKHNtZ3IsIFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVCksCiAJCQkJCQkJCQkgZm9ya251bSwKLQkJCQkJCQkJCSBOVUxMLAogCQkJCQkJ CQkJIEVCX1BFUkZPUk1JTkdfUkVDT1ZFUlkgfAogCQkJCQkJCQkJIEVCX1NLSVBfRVhURU5T SU9OX0xPQ0ssCiAJCQkJCQkJCQkgYmxrbm8gKyAxLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4 IDgxYmJhNGJlYWM3Li5iMGE3YjhhMzNjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQz MSw3ICszNDMxLDYgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQs IFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSB0cnVlOwog CWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwotCWl2aW5mby5zdHJhdGVn eSA9IE5VTEw7CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0 aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jCmluZGV4IGY2NmU4MGI3NTdjLi45YjExN2E1MzEyNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwpAQCAtNzIsNyArNzIsNiBAQCBpbnQJCQlkZWZhdWx0X3N0YXRpc3RpY3Nf dGFyZ2V0ID0gMTAwOwogCiAvKiBBIGZldyB2YXJpYWJsZXMgdGhhdCBkb24ndCBzZWVtIHdv cnRoIHBhc3NpbmcgYXJvdW5kIGFzIHBhcmFtZXRlcnMgKi8KIHN0YXRpYyBNZW1vcnlDb250 ZXh0IGFubF9jb250ZXh0ID0gTlVMTDsKLXN0YXRpYyBCdWZmZXJBY2Nlc3NTdHJhdGVneSB2 YWNfc3RyYXRlZ3k7CiAKIAogc3RhdGljIHZvaWQgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24g b25lcmVsLApAQCAtMTA4LDggKzEwNyw3IEBAIHN0YXRpYyBEYXR1bSBpbmRfZmV0Y2hfZnVu YyhWYWNBdHRyU3RhdHNQIHN0YXRzLCBpbnQgcm93bnVtLCBib29sICppc051bGwpOwogICov CiB2b2lkCiBhbmFseXplX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwKLQkJ CWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBMaXN0ICp2YV9jb2xzLCBib29sIGluX291 dGVyX3hhY3QsCi0JCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCisJCQljb25z dCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgTGlzdCAqdmFfY29scywgYm9vbCBpbl9vdXRlcl94 YWN0KQogewogCVJlbGF0aW9uCW9uZXJlbDsKIAlpbnQJCQllbGV2ZWw7CkBAIC0xMjQsNyAr MTIyLDYgQEAgYW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sCiAJ CWVsZXZlbCA9IERFQlVHMjsKIAogCS8qIFNldCB1cCBzdGF0aWMgdmFyaWFibGVzICovCi0J dmFjX3N0cmF0ZWd5ID0gYnN0cmF0ZWd5OwogCiAJLyoKIAkgKiBDaGVjayBmb3IgdXNlci1y ZXF1ZXN0ZWQgYWJvcnQuCkBAIC03MzAsNyArNzI3LDYgQEAgZG9fYW5hbHl6ZV9yZWwoUmVs YXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCWl2aW5mby5l c3RpbWF0ZWRfY291bnQgPSB0cnVlOwogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2 ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1 cGxlczsKLQkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKIAogCQkJc3RhdHMg PSBpbmRleF92YWN1dW1fY2xlYW51cCgmaXZpbmZvLCBOVUxMKTsKIApAQCAtMTMwMiw3ICsx Mjk4LDYgQEAgYWNxdWlyZV9zYW1wbGVfcm93cyhSZWxhdGlvbiBvbmVyZWwsIGludCBlbGV2 ZWwsCiAJICovCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9T VFJFQU1fTUFJTlRFTkFOQ0UgfAogCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElO RywKLQkJCQkJCQkJCQl2YWNfc3RyYXRlZ3ksCiAJCQkJCQkJCQkJc2Nhbi0+cnNfcmQsCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWJsb2NrX3NhbXBsaW5nX3JlYWRf c3RyZWFtX25leHQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1h bmRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKaW5kZXggZjA4MTlk MTVhYjcuLjZmNjVkNDhiNmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9k YmNvbW1hbmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21tYW5kcy5jCkBA IC0yNjIsNyArMjYyLDYgQEAgU2NhblNvdXJjZURhdGFiYXNlUGdDbGFzcyhPaWQgdGJpZCwg T2lkIGRiaWQsIGNoYXIgKnNyY3BhdGgpCiAJTG9ja1JlbElkCXJlbGlkOwogCVNuYXBzaG90 CXNuYXBzaG90OwogCVNNZ3JSZWxhdGlvbiBzbWdyOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGJzdHJhdGVneTsKIAogCS8qIEdldCBwZ19jbGFzcyByZWxmaWxlbnVtYmVyLiAqLwogCXJl bGZpbGVudW1iZXIgPSBSZWxhdGlvbk1hcE9pZFRvRmlsZW51bWJlckZvckRhdGFiYXNlKHNy Y3BhdGgsCkBAIC0yODIsOSArMjgxLDYgQEAgU2NhblNvdXJjZURhdGFiYXNlUGdDbGFzcyhP aWQgdGJpZCwgT2lkIGRiaWQsIGNoYXIgKnNyY3BhdGgpCiAJbmJsb2NrcyA9IHNtZ3JuYmxv Y2tzKHNtZ3IsIE1BSU5fRk9SS05VTSk7CiAJc21ncmNsb3NlKHNtZ3IpOwogCi0JLyogVXNl IGEgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBzaW5jZSB0aGlzIGlzIGEgYnVsayByZWFkIG9w ZXJhdGlvbi4gKi8KLQlic3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JF QUQpOwotCiAJLyoKIAkgKiBBcyBleHBsYWluZWQgaW4gdGhlIGZ1bmN0aW9uIGhlYWRlciBj b21tZW50cywgd2UgbmVlZCBhIHNuYXBzaG90IHRoYXQKIAkgKiB3aWxsIHNlZSBhbGwgY29t bWl0dGVkIHRyYW5zYWN0aW9ucyBhcyBjb21taXR0ZWQsIGFuZCBvdXIgdHJhbnNhY3Rpb24K QEAgLTI5OSw3ICsyOTUsNyBAQCBTY2FuU291cmNlRGF0YWJhc2VQZ0NsYXNzKE9pZCB0Ymlk LCBPaWQgZGJpZCwgY2hhciAqc3JjcGF0aCkKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAogCQlidWYgPSBSZWFkQnVmZmVyV2l0aG91dFJlbGNhY2hlKHJsb2NhdG9yLCBNQUlOX0ZP UktOVU0sIGJsa25vLAotCQkJCQkJCQkJCVJCTV9OT1JNQUwsIGJzdHJhdGVneSwgdHJ1ZSk7 CisJCQkJCQkJCQkJUkJNX05PUk1BTCwgdHJ1ZSk7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJV RkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcmVwYWNrLmMKaW5kZXggMDI4ODNmZTM0YTQuLmQ4YzE1YThiMWJjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9yZXBhY2suYwpAQCAtMjQ0Nyw3ICsyNDQ3LDcgQEAgcHJvY2Vzc19zaW5nbGVf cmVsYXRpb24oUmVwYWNrU3RtdCAqc3RtdCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgaXNU b3BMZXZlbCwKIAkJCWlmIChwYXJhbXMtPm9wdGlvbnMgJiBDTFVPUFRfVkVSQk9TRSkKIAkJ CQl2YWNfcGFyYW1zLm9wdGlvbnMgfD0gVkFDT1BUX1ZFUkJPU0U7CiAJCQlhbmFseXplX3Jl bCh0YWJsZU9pZCwgTlVMTCwgJnZhY19wYXJhbXMsCi0JCQkJCQlzdG10LT5yZWxhdGlvbi0+ dmFfY29scywgdHJ1ZSwgTlVMTCk7CisJCQkJCQlzdG10LT5yZWxhdGlvbi0+dmFfY29scywg dHJ1ZSk7CiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJQ29tbWFuZENvdW50ZXJJbmNy ZW1lbnQoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVu Y2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNTUxNjY3NjUw YmEuLmFjMWFiOTQ4MjExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTM1OCw3 ICszNTgsNyBAQCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBU dXBsZSB0dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKQogCiAJLyogSW5pdGlhbGl6ZSBmaXJz dCBwYWdlIG9mIHJlbGF0aW9uIHdpdGggc3BlY2lhbCBtYWdpYyBudW1iZXIgKi8KIAotCWJ1 ZiA9IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwocmVsKSwgZm9ya051bSwgTlVMTCwKKwli dWYgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKHJlbCksIGZvcmtOdW0sCiAJCQkJCQkJ RUJfTE9DS19GSVJTVCB8IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0spOwogCUFzc2VydChCdWZm ZXJHZXRCbG9ja051bWJlcihidWYpID09IDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmlu ZGV4IDM4NTM5YTZmZDNkLi42NmFjZDI3YmQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMK QEAgLTEyNywzMiArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHZhY190cnVuY2F0ZV9jbG9nKFRy YW5zYWN0aW9uSWQgZnJvemVuWElELAogCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXN0U2Fu ZUZyb3plblhpZCwKIAkJCQkJCQkgIE11bHRpWGFjdElkIGxhc3RTYW5lTWluTXVsdGkpOwog c3RhdGljIGJvb2wgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwg VmFjdXVtUGFyYW1zIHBhcmFtcywKLQkJCQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0 cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwpOworCQkJCQkgICBib29sIGlzVG9wTGV2ZWwpOwog c3RhdGljIGRvdWJsZSBjb21wdXRlX3BhcmFsbGVsX2RlbGF5KHZvaWQpOwogc3RhdGljIFZh Y09wdFZhbHVlIGdldF92YWNvcHR2YWxfZnJvbV9ib29sZWFuKERlZkVsZW0gKmRlZik7CiBz dGF0aWMgYm9vbCB2YWNfdGlkX3JlYXBlZChJdGVtUG9pbnRlciBpdGVtcHRyLCB2b2lkICpz dGF0ZSk7CiAKLS8qCi0gKiBHVUMgY2hlY2sgZnVuY3Rpb24gdG8gZW5zdXJlIEdVQyB2YWx1 ZSBzcGVjaWZpZWQgaXMgd2l0aGluIHRoZSBhbGxvd2FibGUKLSAqIHJhbmdlLgotICovCi1i b29sCi1jaGVja192YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0KGludCAqbmV3dmFsLCB2b2lk ICoqZXh0cmEsCi0JCQkJCQkJCUd1Y1NvdXJjZSBzb3VyY2UpCi17Ci0JLyogVmFsdWUgdXBw ZXIgYW5kIGxvd2VyIGhhcmQgbGltaXRzIGFyZSBpbmNsdXNpdmUgKi8KLQlpZiAoKm5ld3Zh bCA9PSAwIHx8ICgqbmV3dmFsID49IE1JTl9CQVNfVkFDX1JJTkdfU0laRV9LQiAmJgotCQkJ CQkJICpuZXd2YWwgPD0gTUFYX0JBU19WQUNfUklOR19TSVpFX0tCKSkKLQkJcmV0dXJuIHRy dWU7Ci0KLQkvKiBWYWx1ZSBkb2VzIG5vdCBmYWxsIHdpdGhpbiBhbnkgYWxsb3dhYmxlIHJh bmdlICovCi0JR1VDX2NoZWNrX2VycmRldGFpbCgiXCIlc1wiIG11c3QgYmUgMCBvciBiZXR3 ZWVuICVkIGtCIGFuZCAlZCBrQi4iLAotCQkJCQkJInZhY3V1bV9idWZmZXJfdXNhZ2VfbGlt aXQiLAotCQkJCQkJTUlOX0JBU19WQUNfUklOR19TSVpFX0tCLCBNQVhfQkFTX1ZBQ19SSU5H X1NJWkVfS0IpOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiAvKgogICogUHJpbWFyeSBlbnRy eSBwb2ludCBmb3IgbWFudWFsIFZBQ1VVTSBhbmQgQU5BTFlaRSBjb21tYW5kcwogICoKQEAg LTE2Myw3ICsxNDIsNiBAQCB2b2lkCiBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwg VmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQogewogCVZhY3V1bVBhcmFt cyBwYXJhbXM7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0gTlVMTDsKIAli b29sCQl2ZXJib3NlID0gZmFsc2U7CiAJYm9vbAkJc2tpcF9sb2NrZWQgPSBmYWxzZTsKIAli b29sCQlhbmFseXplID0gZmFsc2U7CkBAIC0xNzIsNyArMTUwLDYgQEAgRXhlY1ZhY3V1bShQ YXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZl bCkKIAlib29sCQlkaXNhYmxlX3BhZ2Vfc2tpcHBpbmcgPSBmYWxzZTsKIAlib29sCQlwcm9j ZXNzX21haW4gPSB0cnVlOwogCWJvb2wJCXByb2Nlc3NfdG9hc3QgPSB0cnVlOwotCWludAkJ CXJpbmdfc2l6ZTsKIAlib29sCQlza2lwX2RhdGFiYXNlX3N0YXRzID0gZmFsc2U7CiAJYm9v bAkJb25seV9kYXRhYmFzZV9zdGF0cyA9IGZhbHNlOwogCU1lbW9yeUNvbnRleHQgdmFjX2Nv bnRleHQ7CkBAIC0xODgsMTIgKzE2NSw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJLyogV2lsbCBi ZSBzZXQgbGF0ZXIgaWYgd2UgcmVjdXJzZSB0byBhIFRPQVNUIHRhYmxlLiAqLwogCXBhcmFt cy50b2FzdF9wYXJlbnQgPSBJbnZhbGlkT2lkOwogCi0JLyoKLQkgKiBTZXQgdGhpcyB0byBh biBpbnZhbGlkIHZhbHVlIHNvIGl0IGlzIGNsZWFyIHdoZXRoZXIgb3Igbm90IGEKLQkgKiBC VUZGRVJfVVNBR0VfTElNSVQgd2FzIHNwZWNpZmllZCB3aGVuIG1ha2luZyB0aGUgYWNjZXNz IHN0cmF0ZWd5LgotCSAqLwotCXJpbmdfc2l6ZSA9IC0xOwotCiAJLyogUGFyc2Ugb3B0aW9u cyBsaXN0ICovCiAJZm9yZWFjaChsYywgdmFjc3RtdC0+b3B0aW9ucykKIAl7CkBAIC0yMDQs MzIgKzE3NSw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10 ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQl2ZXJib3NlID0gZGVmR2V0Qm9vbGVh bihvcHQpOwogCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAic2tpcF9sb2NrZWQi KSA9PSAwKQogCQkJc2tpcF9sb2NrZWQgPSBkZWZHZXRCb29sZWFuKG9wdCk7Ci0JCWVsc2Ug aWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJidWZmZXJfdXNhZ2VfbGltaXQiKSA9PSAwKQot CQl7Ci0JCQljb25zdCBjaGFyICpoaW50bXNnOwotCQkJaW50CQkJcmVzdWx0OwotCQkJY2hh cgkgICAqdmFjX2J1ZmZlcl9zaXplOwotCi0JCQl2YWNfYnVmZmVyX3NpemUgPSBkZWZHZXRT dHJpbmcob3B0KTsKLQotCQkJLyoKLQkJCSAqIENoZWNrIHRoYXQgdGhlIHNwZWNpZmllZCB2 YWx1ZSBpcyB2YWxpZCBhbmQgdGhlIHNpemUgZmFsbHMKLQkJCSAqIHdpdGhpbiB0aGUgaGFy ZCB1cHBlciBhbmQgbG93ZXIgbGltaXRzIGlmIGl0IGlzIG5vdCAwLgotCQkJICovCi0JCQlp ZiAoIXBhcnNlX2ludCh2YWNfYnVmZmVyX3NpemUsICZyZXN1bHQsIEdVQ19VTklUX0tCLCAm aGludG1zZykgfHwKLQkJCQkocmVzdWx0ICE9IDAgJiYKLQkJCQkgKHJlc3VsdCA8IE1JTl9C QVNfVkFDX1JJTkdfU0laRV9LQiB8fCByZXN1bHQgPiBNQVhfQkFTX1ZBQ19SSU5HX1NJWkVf S0IpKSkKLQkJCXsKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJCQkgZXJybXNnKCIlcyBvcHRpb24g bXVzdCBiZSAwIG9yIGJldHdlZW4gJWQga0IgYW5kICVkIGtCIiwKLQkJCQkJCQkJIkJVRkZF Ul9VU0FHRV9MSU1JVCIsCi0JCQkJCQkJCU1JTl9CQVNfVkFDX1JJTkdfU0laRV9LQiwgTUFY X0JBU19WQUNfUklOR19TSVpFX0tCKSwKLQkJCQkJCSBoaW50bXNnID8gZXJyaGludF9pbnRl cm5hbCgiJXMiLCBfKGhpbnRtc2cpKSA6IDApKTsKLQkJCX0KLQotCQkJcmluZ19zaXplID0g cmVzdWx0OwotCQl9CiAJCWVsc2UgaWYgKCF2YWNzdG10LT5pc192YWN1dW1jbWQpCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBA IC0zMjUsMTcgKzI3MCw2IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1 dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIlZBQ1VVTSBGVUxMIGNh bm5vdCBiZSBwZXJmb3JtZWQgaW4gcGFyYWxsZWwiKSkpOwogCi0JLyoKLQkgKiBCVUZGRVJf VVNBR0VfTElNSVQgZG9lcyBub3RoaW5nIGZvciBWQUNVVU0gKEZVTEwpIHNvIGp1c3QgcmFp c2UgYW4KLQkgKiBFUlJPUiBmb3IgdGhhdCBjYXNlLiAgVkFDVVVNIChGVUxMLCBBTkFMWVpF KSBkb2VzIG1ha2UgdXNlIG9mIGl0LCBzbwotCSAqIHdlJ2xsIHBlcm1pdCB0aGF0LgotCSAq LwotCWlmIChyaW5nX3NpemUgIT0gLTEgJiYgKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX0ZV TEwpICYmCi0JCSEocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfQU5BTFlaRSkpCi0JCWVyZXBv cnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAotCQkJCSBlcnJtc2coIkJVRkZFUl9VU0FHRV9MSU1JVCBjYW5ub3QgYmUgc3BlY2lmaWVk IGZvciBWQUNVVU0gRlVMTCIpKSk7Ci0KIAkvKgogCSAqIE1ha2Ugc3VyZSBWQUNPUFRfQU5B TFlaRSBpcyBzcGVjaWZpZWQgaWYgYW55IGNvbHVtbiBsaXN0cyBhcmUgcHJlc2VudC4KIAkg Ki8KQEAgLTQzMSwzOCArMzY1LDggQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUs IFZhY3V1bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCQkJCQkJCQkiVmFj dXVtIiwKIAkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAotCS8qCi0JICog TWFrZSBhIGJ1ZmZlciBzdHJhdGVneSBvYmplY3QgaW4gdGhlIGNyb3NzLXRyYW5zYWN0aW9u IG1lbW9yeSBjb250ZXh0LgotCSAqIFdlIG5lZWRuJ3QgYm90aGVyIG1ha2luZyB0aGlzIGZv ciBWQUNVVU0gKEZVTEwpIG9yIFZBQ1VVTQotCSAqIChPTkxZX0RBVEFCQVNFX1NUQVRTKSBh cyB0aGV5J2xsIG5vdCBtYWtlIHVzZSBvZiBpdC4gIFZBQ1VVTSAoRlVMTCwKLQkgKiBBTkFM WVpFKSBpcyBwb3NzaWJsZSwgc28gd2UnZCBiZXR0ZXIgZW5zdXJlIHRoYXQgd2UgbWFrZSBh IHN0cmF0ZWd5Ci0JICogd2hlbiB3ZSBzZWUgQU5BTFlaRS4KLQkgKi8KLQlpZiAoKHBhcmFt cy5vcHRpb25zICYgKFZBQ09QVF9PTkxZX0RBVEFCQVNFX1NUQVRTIHwKLQkJCQkJCSAgIFZB Q09QVF9GVUxMKSkgPT0gMCB8fAotCQkocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfQU5BTFla RSkgIT0gMCkKLQl7Ci0KLQkJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyh2YWNfY29udGV4dCk7Ci0KLQkJQXNzZXJ0KHJpbmdfc2l6ZSA+PSAt MSk7Ci0KLQkJLyoKLQkJICogSWYgQlVGRkVSX1VTQUdFX0xJTUlUIHdhcyBzcGVjaWZpZWQg YnkgdGhlIFZBQ1VVTSBvciBBTkFMWVpFCi0JCSAqIGNvbW1hbmQsIGl0IG92ZXJyaWRlcyB0 aGUgdmFsdWUgb2YgVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdC4gIEVpdGhlcgotCQkgKiB2YWx1 ZSBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBHZXRBY2Nlc3NTdHJhdGVneVdpdGhTaXplKCkg d2lsbAotCQkgKiByZXR1cm4gTlVMTCwgZWZmZWN0aXZlbHkgYWxsb3dpbmcgZnVsbCB1c2Ug b2Ygc2hhcmVkIGJ1ZmZlcnMuCi0JCSAqLwotCQlpZiAocmluZ19zaXplID09IC0xKQotCQkJ cmluZ19zaXplID0gVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdDsKLQotCQlic3RyYXRlZ3kgPSBH ZXRBY2Nlc3NTdHJhdGVneVdpdGhTaXplKEJBU19WQUNVVU0sIHJpbmdfc2l6ZSk7Ci0KLQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jb250ZXh0KTsKLQl9Ci0KIAkvKiBOb3cgZ28g dGhyb3VnaCB0aGUgY29tbW9uIHJvdXRpbmUgKi8KLQl2YWN1dW0odmFjc3RtdC0+cmVscywg JnBhcmFtcywgYnN0cmF0ZWd5LCB2YWNfY29udGV4dCwgaXNUb3BMZXZlbCk7CisJdmFjdXVt KHZhY3N0bXQtPnJlbHMsICZwYXJhbXMsIHZhY19jb250ZXh0LCBpc1RvcExldmVsKTsKIAog CS8qIEZpbmFsbHksIGNsZWFuIHVwIHRoZSB2YWN1dW0gbWVtb3J5IGNvbnRleHQgKi8KIAlN ZW1vcnlDb250ZXh0RGVsZXRlKHZhY19jb250ZXh0KTsKQEAgLTQ3OSwxOSArMzgzLDEzIEBA IEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBi b29sIGlzVG9wTGV2ZWwpCiAgKiBwYXJhbXMgY29udGFpbnMgYSBzZXQgb2YgcGFyYW1ldGVy cyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUKICAqIGJlaGF2aW9yLgogICoK LSAqIGJzdHJhdGVneSBtYXkgYmUgcGFzc2VkIGluIGFzIE5VTEwgd2hlbiB0aGUgY2FsbGVy IGRvZXMgbm90IHdhbnQgdG8KLSAqIHJlc3RyaWN0IHRoZSBudW1iZXIgb2Ygc2hhcmVkX2J1 ZmZlcnMgdGhhdCBWQUNVVU0gLyBBTkFMWVpFIGNhbiB1c2UsCi0gKiBvdGhlcndpc2UsIHRo ZSBjYWxsZXIgbXVzdCBidWlsZCBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHdpdGggdGhlIG51 bWJlciBvZgotICogc2hhcmVkX2J1ZmZlcnMgdGhhdCBWQUNVVU0gLyBBTkFMWVpFIHNob3Vs ZCB0cnkgdG8gbGltaXQgdGhlbXNlbHZlcyB0bwotICogdXNpbmcuCi0gKgogICogaXNUb3BM ZXZlbCBzaG91bGQgYmUgcGFzc2VkIGRvd24gZnJvbSBQcm9jZXNzVXRpbGl0eS4KICAqCiAg KiBJdCBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdGhhdCBhbGwgcGFyYW1ldGVy cyBhcmUgYWxsb2NhdGVkIGluIGEKICAqIG1lbW9yeSBjb250ZXh0IHRoYXQgd2lsbCBub3Qg ZGlzYXBwZWFyIGF0IHRyYW5zYWN0aW9uIGNvbW1pdC4KICAqLwogdm9pZAotdmFjdXVtKExp c3QgKnJlbGF0aW9ucywgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1ZmZlckFjY2Vz c1N0cmF0ZWd5IGJzdHJhdGVneSwKK3ZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIGNvbnN0IFZh Y3V1bVBhcmFtcyAqcGFyYW1zLAogCSAgIE1lbW9yeUNvbnRleHQgdmFjX2NvbnRleHQsIGJv b2wgaXNUb3BMZXZlbCkKIHsKIAlzdGF0aWMgYm9vbCBpbl92YWN1dW0gPSBmYWxzZTsKQEAg LTYzMCw3ICs1MjgsNyBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBjb25zdCBWYWN1dW1Q YXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZQogCiAJCQlpZiAo cGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX1ZBQ1VVTSkKIAkJCXsKLQkJCQlpZiAoIXZhY3V1 bV9yZWwodnJlbC0+b2lkLCB2cmVsLT5yZWxhdGlvbiwgKnBhcmFtcywgYnN0cmF0ZWd5LAor CQkJCWlmICghdmFjdXVtX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCAqcGFyYW1z LAogCQkJCQkJCQlpc1RvcExldmVsKSkKIAkJCQkJY29udGludWU7CiAJCQl9CkBAIC02NDks NyArNTQ3LDcgQEAgdmFjdXVtKExpc3QgKnJlbGF0aW9ucywgY29uc3QgVmFjdXVtUGFyYW1z ICpwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGUKIAkJCQl9CiAKIAkJCQlh bmFseXplX3JlbCh2cmVsLT5vaWQsIHZyZWwtPnJlbGF0aW9uLCBwYXJhbXMsCi0JCQkJCQkJ dnJlbC0+dmFfY29scywgaW5fb3V0ZXJfeGFjdCwgYnN0cmF0ZWd5KTsKKwkJCQkJCQl2cmVs LT52YV9jb2xzLCBpbl9vdXRlcl94YWN0KTsKIAogCQkJCWlmICh1c2Vfb3duX3hhY3RzKQog CQkJCXsKQEAgLTIwMTAsNyArMTkwOCw3IEBAIHZhY190cnVuY2F0ZV9jbG9nKFRyYW5zYWN0 aW9uSWQgZnJvemVuWElELAogICovCiBzdGF0aWMgYm9vbAogdmFjdXVtX3JlbChPaWQgcmVs aWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zIHBhcmFtcywKLQkJICAgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwpCisJCSAgIGJv b2wgaXNUb3BMZXZlbCkKIHsKIAlMT0NLTU9ERQlsbW9kZTsKIAlSZWxhdGlvbglyZWw7CkBA IC0yMzA3LDcgKzIyMDUsNyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJl bGF0aW9uLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJcmVsID0gTlVMTDsKIAkJfQogCQll bHNlCi0JCQl0YWJsZV9yZWxhdGlvbl92YWN1dW0ocmVsLCAmcGFyYW1zLCBic3RyYXRlZ3kp OworCQkJdGFibGVfcmVsYXRpb25fdmFjdXVtKHJlbCwgJnBhcmFtcyk7CiAJfQogCiAJLyog Um9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMg Ki8KQEAgLTIzNDQsNyArMjI0Miw3IEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZh ciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCXRvYXN0X3ZhY3V1bV9wYXJh bXMub3B0aW9ucyB8PSBWQUNPUFRfUFJPQ0VTU19NQUlOOwogCQl0b2FzdF92YWN1dW1fcGFy YW1zLnRvYXN0X3BhcmVudCA9IHJlbGlkOwogCi0JCXZhY3V1bV9yZWwodG9hc3RfcmVsaWQs IE5VTEwsIHRvYXN0X3ZhY3V1bV9wYXJhbXMsIGJzdHJhdGVneSwKKwkJdmFjdXVtX3JlbCh0 b2FzdF9yZWxpZCwgTlVMTCwgdG9hc3RfdmFjdXVtX3BhcmFtcywKIAkJCQkgICBpc1RvcExl dmVsKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4 IDQxY2VmY2ZkZTU0Li44YjRiODM1ZGI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jCkBAIC0xMjUsMTIgKzEyNSw2IEBAIHR5cGVkZWYgc3RydWN0IFBWU2hh cmVkCiAJICovCiAJaW50CQkJbWFpbnRlbmFuY2Vfd29ya19tZW1fd29ya2VyOwogCi0JLyoK LQkgKiBUaGUgbnVtYmVyIG9mIGJ1ZmZlcnMgZWFjaCB3b3JrZXIncyBCdWZmZXIgQWNjZXNz IFN0cmF0ZWd5IHJpbmcgc2hvdWxkCi0JICogY29udGFpbi4KLQkgKi8KLQlpbnQJCQlyaW5n X25idWZmZXJzOwotCiAJLyoKIAkgKiBTaGFyZWQgdmFjdXVtIGNvc3QgYmFsYW5jZS4gIER1 cmluZyBwYXJhbGxlbCB2YWN1dW0sCiAJICogVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgcG9p bnRzIHRvIHRoaXMgdmFsdWUgYW5kIGl0IGFjY3VtdWxhdGVzIHRoZQpAQCAtMjU3LDkgKzI1 MSw2IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1bVN0YXRlCiAJaW50CQkJbmluZGV4ZXNfcGFy YWxsZWxfY2xlYW51cDsKIAlpbnQJCQluaW5kZXhlc19wYXJhbGxlbF9jb25kY2xlYW51cDsK IAotCS8qIEJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgdXNlZCBieSBsZWFkZXIgcHJvY2VzcyAq LwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKLQogCS8qCiAJICogRXJyb3Ig cmVwb3J0aW5nIHN0YXRlLiAgVGhlIGVycm9yIGNhbGxiYWNrIGlzIHNldCBvbmx5IGZvciB3 b3JrZXJzCiAJICogcHJvY2Vzc2VzIGR1cmluZyBwYXJhbGxlbCBpbmRleCB2YWN1dW0uCkBA IC0zMDQsNyArMjk1LDcgQEAgc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2RzbV9kZXRh Y2goZHNtX3NlZ21lbnQgKnNlZywgRGF0dW0gYXJnKTsKIFBhcmFsbGVsVmFjdXVtU3RhdGUg KgogcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVs cywgaW50IG5pbmRleGVzLAogCQkJCQkgaW50IG5yZXF1ZXN0ZWRfd29ya2VycywgaW50IHZh Y193b3JrX21lbSwKLQkJCQkJIGludCBlbGV2ZWwsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJz dHJhdGVneSkKKwkJCQkJIGludCBlbGV2ZWwpCiB7CiAJUGFyYWxsZWxWYWN1dW1TdGF0ZSAq cHZzOwogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKQEAgLTM0NSw3ICszMzYsNiBAQCBwYXJh bGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQg bmluZGV4ZXMsCiAJcHZzLT5pbmRyZWxzID0gaW5kcmVsczsKIAlwdnMtPm5pbmRleGVzID0g bmluZGV4ZXM7CiAJcHZzLT53aWxsX3BhcmFsbGVsX3ZhY3V1bSA9IHdpbGxfcGFyYWxsZWxf dmFjdXVtOwotCXB2cy0+YnN0cmF0ZWd5ID0gYnN0cmF0ZWd5OwogCXB2cy0+aGVhcHJlbCA9 IHJlbDsKIAogCUVudGVyUGFyYWxsZWxNb2RlKCk7CkBAIC00NDcsOSArNDM3LDYgQEAgcGFy YWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLAogCXNoYXJlZC0+ZGVhZF9pdGVtc19oYW5kbGUgPSBUaWRTdG9yZUdldEhh bmRsZShkZWFkX2l0ZW1zKTsKIAlzaGFyZWQtPmRlYWRfaXRlbXNfZHNhX2hhbmRsZSA9IGRz YV9nZXRfaGFuZGxlKFRpZFN0b3JlR2V0RFNBKGRlYWRfaXRlbXMpKTsKIAotCS8qIFVzZSB0 aGUgc2FtZSBidWZmZXIgc2l6ZSBmb3IgYWxsIHdvcmtlcnMgKi8KLQlzaGFyZWQtPnJpbmdf bmJ1ZmZlcnMgPSBHZXRBY2Nlc3NTdHJhdGVneUJ1ZmZlckNvdW50KGJzdHJhdGVneSk7Ci0K IAlwZ19hdG9taWNfaW5pdF91MzIoJihzaGFyZWQtPmNvc3RfYmFsYW5jZSksIDApOwogCXBn X2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+YWN0aXZlX253b3JrZXJzKSwgMCk7CiAJcGdf YXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5pZHgpLCAwKTsKQEAgLTEwOTEsNyArMTA3OCw2 IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRl ZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1 cGxlczsKLQlpdmluZm8uc3RyYXRlZ3kgPSBwdnMtPmJzdHJhdGVneTsKIAogCS8qIFVwZGF0 ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUgPSBwc3Ry ZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpAQCAtMTI5NCwxMCArMTI4 MCw2IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAlwdnMuaW5kbmFtZSA9IE5VTEw7CiAJcHZzLnN0YXR1cyA9IFBBUkFMTEVMX0lO RFZBQ19TVEFUVVNfSU5JVElBTDsKIAotCS8qIEVhY2ggcGFyYWxsZWwgVkFDVVVNIHdvcmtl ciBnZXRzIGl0cyBvd24gYWNjZXNzIHN0cmF0ZWd5LiAqLwotCXB2cy5ic3RyYXRlZ3kgPSBH ZXRBY2Nlc3NTdHJhdGVneVdpdGhTaXplKEJBU19WQUNVVU0sCi0JCQkJCQkJCQkJCSAgc2hh cmVkLT5yaW5nX25idWZmZXJzICogKEJMQ0tTWiAvIDEwMjQpKTsKLQogCS8qIFNldHVwIGVy cm9yIHRyYWNlYmFjayBzdXBwb3J0IGZvciBlcmVwb3J0KCkgKi8KIAllcnJjYWxsYmFjay5j YWxsYmFjayA9IHBhcmFsbGVsX3ZhY3V1bV9lcnJvcl9jYWxsYmFjazsKIAllcnJjYWxsYmFj ay5hcmcgPSAmcHZzOwpAQCAtMTMyOCw3ICsxMzEwLDYgQEAgcGFyYWxsZWxfdmFjdXVtX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJdmFjX2Nsb3NlX2luZGV4 ZXMobmluZGV4ZXMsIGluZHJlbHMsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCXRhYmxlX2Nsb3Nl KHJlbCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKLQlGcmVlQWNjZXNzU3RyYXRlZ3ko cHZzLmJzdHJhdGVneSk7CiAKIAlpZiAoc2hhcmVkLT5pc19hdXRvdmFjdXVtKQogCQlwdl9z aGFyZWRfY29zdF9wYXJhbXMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYwppbmRleCA0NWFiZjQ4NzY4YS4uZTAyMWU3OTg4MDUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0zODYsOCArMzg2LDcgQEAgc3RhdGljIHZvaWQgcmVs YXRpb25fbmVlZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsIEF1dG9WYWNPcHRzICpyZWxvcHRz LAogCQkJCQkJCQkJICBib29sICpkb3ZhY3V1bSwgYm9vbCAqZG9hbmFseXplLCBib29sICp3 cmFwYXJvdW5kLAogCQkJCQkJCQkJICBBdXRvVmFjdXVtU2NvcmVzICpzY29yZXMpOwogCi1z dGF0aWMgdm9pZCBhdXRvdmFjdXVtX2RvX3ZhY19hbmFseXplKGF1dG92YWNfdGFibGUgKnRh YiwKLQkJCQkJCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK3N0YXRp YyB2b2lkIGF1dG92YWN1dW1fZG9fdmFjX2FuYWx5emUoYXV0b3ZhY190YWJsZSAqdGFiKTsK IHN0YXRpYyBBdXRvVmFjT3B0cyAqZXh0cmFjdF9hdXRvdmFjX29wdHMoSGVhcFR1cGxlIHR1 cCwKIAkJCQkJCQkJCQkgVHVwbGVEZXNjIHBnX2NsYXNzX2Rlc2MpOwogc3RhdGljIHZvaWQg cGVyZm9ybV93b3JrX2l0ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRlbSk7CkBAIC0x OTM2LDcgKzE5MzUsNiBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJSEFTSENUTAkJY3RsOwog CUhUQUIJICAgKnRhYmxlX3RvYXN0X21hcDsKIAlMaXN0Q2VsbCAgICp2b2xhdGlsZSBjZWxs OwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneTsKIAlTY2FuS2V5RGF0YSBrZXk7 CiAJVHVwbGVEZXNjCXBnX2NsYXNzX2Rlc2M7CiAJaW50CQkJZWZmZWN0aXZlX211bHRpeGFj dF9mcmVlemVfbWF4X2FnZTsKQEAgLTIzMjIsMjMgKzIzMjAsNiBAQCBkb19hdXRvdmFjdXVt KHZvaWQpCiAJCWF1dG92YWN1dW1fYW5hbHl6ZV9zY29yZV93ZWlnaHQgIT0gMC4wKQogCQls aXN0X3NvcnQodGFibGVzX3RvX3Byb2Nlc3MsIFRhYmxlVG9Qcm9jZXNzQ29tcGFyYXRvcik7 CiAKLQkvKgotCSAqIE9wdGlvbmFsbHksIGNyZWF0ZSBhIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRl Z3kgb2JqZWN0IGZvciBWQUNVVU0gdG8gdXNlLgotCSAqIFdlIHVzZSB0aGUgc2FtZSBCdWZm ZXJBY2Nlc3NTdHJhdGVneSBvYmplY3QgZm9yIGFsbCB0YWJsZXMgVkFDVVVNZWQgYnkKLQkg KiB0aGlzIHdvcmtlciB0byBwcmV2ZW50IGF1dG92YWN1dW0gZnJvbSBibG93aW5nIG91dCBz aGFyZWQgYnVmZmVycy4KLQkgKgotCSAqIFZhY3V1bUJ1ZmZlclVzYWdlTGltaXQgYmVpbmcg c2V0IHRvIDAgcmVzdWx0cyBpbgotCSAqIEdldEFjY2Vzc1N0cmF0ZWd5V2l0aFNpemUgcmV0 dXJuaW5nIE5VTEwsIGVmZmVjdGl2ZWx5IG1lYW5pbmcgd2UgY2FuCi0JICogdXNlIHVwIHRv IGFsbCBvZiBzaGFyZWQgYnVmZmVycy4KLQkgKgotCSAqIElmIHdlIGxhdGVyIGVudGVyIGZh aWxzYWZlIG1vZGUgb24gYW55IG9mIHRoZSB0YWJsZXMgYmVpbmcgdmFjdXVtZWQsIHdlCi0J ICogd2lsbCBjZWFzZSB1c2Ugb2YgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IG9ubHkgZm9y IHRoYXQgdGFibGUuCi0JICoKLQkgKiBYWFggc2hvdWxkIHdlIGNvbnNpZGVyIGFkZGluZyBj b2RlIHRvIGFkanVzdCB0aGUgc2l6ZSBvZiB0aGlzIGlmCi0JICogVmFjdXVtQnVmZmVyVXNh Z2VMaW1pdCBjaGFuZ2VzPwotCSAqLwotCWJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 V2l0aFNpemUoQkFTX1ZBQ1VVTSwgVmFjdXVtQnVmZmVyVXNhZ2VMaW1pdCk7Ci0KIAkvKgog CSAqIGNyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRvIGFjdCBhcyBmYWtlIFBvcnRhbENvbnRl eHQsIHNvIHRoYXQgdGhlCiAJICogY29udGV4dHMgY3JlYXRlZCBpbiB0aGUgdmFjdXVtIGNv ZGUgYXJlIGNsZWFuZWQgdXAgZm9yIGVhY2ggdGFibGUuCkBAIC0yNTE2LDcgKzI0OTcsNyBA QCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oUG9ydGFs Q29udGV4dCk7CiAKIAkJCS8qIGhhdmUgYXQgaXQgKi8KLQkJCWF1dG92YWN1dW1fZG9fdmFj X2FuYWx5emUodGFiLCBic3RyYXRlZ3kpOworCQkJYXV0b3ZhY3V1bV9kb192YWNfYW5hbHl6 ZSh0YWIpOwogCiAJCQkvKgogCQkJICogQ2xlYXIgYSBwb3NzaWJsZSBxdWVyeS1jYW5jZWwg c2lnbmFsLCB0byBhdm9pZCBhIGxhdGUgcmVhY3Rpb24KQEAgLTI2MzYsOCArMjYxNyw2IEBA IGRlbGV0ZWQ6CiAjaWZkZWYgVVNFX1ZBTEdSSU5ECiAJaGFzaF9kZXN0cm95KHRhYmxlX3Rv YXN0X21hcCk7CiAJRnJlZVR1cGxlRGVzYyhwZ19jbGFzc19kZXNjKTsKLQlpZiAoYnN0cmF0 ZWd5KQotCQlwZnJlZShic3RyYXRlZ3kpOwogI2VuZGlmCiAKIAkvKiBSdW4gdGhlIHJlc3Qg aW4geGFjdCBjb250ZXh0LCBtYWlubHkgdG8gYXZvaWQgVmFsZ3JpbmQgbGVhayB3YXJuaW5n cyAqLwpAQCAtMzM0OCw3ICszMzI3LDcgQEAgcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShP aWQgcmVsaWQsCiAgKiBkaXNhcHBlYXIgYXQgdHJhbnNhY3Rpb24gY29tbWl0LgogICovCiBz dGF0aWMgdm9pZAotYXV0b3ZhY3V1bV9kb192YWNfYW5hbHl6ZShhdXRvdmFjX3RhYmxlICp0 YWIsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSkKK2F1dG92YWN1dW1fZG9fdmFj X2FuYWx5emUoYXV0b3ZhY190YWJsZSAqdGFiKQogewogCVJhbmdlVmFyICAgKnJhbmdldmFy OwogCVZhY3V1bVJlbGF0aW9uICpyZWw7CkBAIC0zMzcxLDcgKzMzNTAsNyBAQCBhdXRvdmFj dXVtX2RvX3ZhY19hbmFseXplKGF1dG92YWNfdGFibGUgKnRhYiwgQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgYnN0cmF0ZWd5KQogCXJlbF9saXN0ID0gbGlzdF9tYWtlMShyZWwpOwogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRfY29udGV4dCk7CiAKLQl2YWN1dW0ocmVsX2xpc3QsICZ0 YWItPmF0X3BhcmFtcywgYnN0cmF0ZWd5LCB2YWNfY29udGV4dCwgdHJ1ZSk7CisJdmFjdXVt KHJlbF9saXN0LCAmdGFiLT5hdF9wYXJhbXMsIHZhY19jb250ZXh0LCB0cnVlKTsKIAogCU1l bW9yeUNvbnRleHREZWxldGUodmFjX2NvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKaW5kZXggNzNkYzUzOTgzNmIuLmI2NjEy ZjFlNTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1 bV9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0 YXRlLmMKQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgTGlzdCAqQnVpbGRSZWxhdGlvbkxp c3QoYm9vbCB0ZW1wX3JlbGF0aW9ucywgYm9vbCBpbmNsdWRlX3NoYXJlZCk7CiBzdGF0aWMg dm9pZCBGcmVlRGF0YWJhc2VMaXN0KExpc3QgKmRibGlzdCk7CiBzdGF0aWMgRGF0YUNoZWNr c3Vtc1dvcmtlclJlc3VsdCBQcm9jZXNzRGF0YWJhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckRh dGFiYXNlICpkYik7CiBzdGF0aWMgYm9vbCBQcm9jZXNzQWxsRGF0YWJhc2VzKHZvaWQpOwot c3RhdGljIGJvb2wgUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhSZWxhdGlvbiByZWxuLCBG b3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKK3N0 YXRpYyBib29sIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVsYXRpb24gcmVsbiwgRm9y a051bWJlciBmb3JrTnVtKTsKIHN0YXRpYyB2b2lkIFJlc2V0RGF0YUNoZWNrc3Vtc1Byb2dy ZXNzQ291bnRlcnModm9pZCk7CiBzdGF0aWMgdm9pZCBsYXVuY2hlcl9jYW5jZWxfaGFuZGxl cihTSUdOQUxfQVJHUyk7CiBzdGF0aWMgdm9pZCBXYWl0Rm9yQWxsVHJhbnNhY3Rpb25zVG9G aW5pc2godm9pZCk7CkBAIC02ODcsNyArNjg3LDcgQEAgU3RhcnREYXRhQ2hlY2tzdW1zV29y a2VyTGF1bmNoZXIoRGF0YUNoZWNrc3Vtc1dvcmtlck9wZXJhdGlvbiBvcCwKICAqIGVycm9y IGlzIHJhaXNlZCBpbiB0aGUgbG93ZXIgbGV2ZWxzLgogICovCiBzdGF0aWMgYm9vbAotUHJv Y2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtO dW0sIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQorUHJvY2Vzc1NpbmdsZVJlbGF0 aW9uRm9yayhSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0pCiB7CiAJQmxvY2tO dW1iZXIgbnVtYmxvY2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2Nrc0luRm9yayhyZWxu LCBmb3JrTnVtKTsKIAljaGFyCQlhY3Rpdml0eVtOQU1FREFUQUxFTiAqIDIgKyAxMjhdOwpA QCAtNzIyLDcgKzcyMiw3IEBAIFByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsoUmVsYXRpb24g cmVsbiwgRm9ya051bWJlciBmb3JrTnVtLCBCdWZmZXJBY2Nlc3NTdHJhdGVnCiAJICovCiAJ Zm9yIChCbG9ja051bWJlciBibGtudW0gPSAwOyBibGtudW0gPCBudW1ibG9ja3M7IGJsa251 bSsrKQogCXsKLQkJQnVmZmVyCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsbiwgZm9y a051bSwgYmxrbnVtLCBSQk1fTk9STUFMLCBzdHJhdGVneSk7CisJCUJ1ZmZlcgkJYnVmID0g UmVhZEJ1ZmZlckV4dGVuZGVkKHJlbG4sIGZvcmtOdW0sIGJsa251bSwgUkJNX05PUk1BTCk7 CiAKIAkJLyogTmVlZCB0byBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgdG8gbWFyayB0aGUgYnVm ZmVyIGFzIGRpcnR5ICovCiAJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJ VkUpOwpAQCAtODA4LDcgKzgwOCw3IEBAIFJlc2V0RGF0YUNoZWNrc3Vtc1Byb2dyZXNzQ291 bnRlcnModm9pZCkKICAqIGVycm9yIGlzIHJhaXNlZCBpbiB0aGUgbG93ZXIgbGV2ZWxzLgog ICovCiBzdGF0aWMgYm9vbAotUHJvY2Vzc1NpbmdsZVJlbGF0aW9uQnlPaWQoT2lkIHJlbGF0 aW9uSWQsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQorUHJvY2Vzc1NpbmdsZVJl bGF0aW9uQnlPaWQoT2lkIHJlbGF0aW9uSWQpCiB7CiAJUmVsYXRpb24JcmVsOwogCWJvb2wJ CWFib3J0ZWQgPSBmYWxzZTsKQEAgLTgzNSw3ICs4MzUsNyBAQCBQcm9jZXNzU2luZ2xlUmVs YXRpb25CeU9pZChPaWQgcmVsYXRpb25JZCwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRl Z3kpCiAJewogCQlpZiAoc21ncmV4aXN0cyhyZWwtPnJkX3NtZ3IsIGZudW0pKQogCQl7Ci0J CQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsocmVsLCBmbnVtLCBzdHJhdGVneSkp CisJCQlpZiAoIVByb2Nlc3NTaW5nbGVSZWxhdGlvbkZvcmsocmVsLCBmbnVtKSkKIAkJCXsK IAkJCQlhYm9ydGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAgLTE1ODIsNyArMTU4Miw2IEBA IERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERhdHVtIGFyZykKIAlPaWQJCQlkYm9pZDsKIAlM aXN0CSAgICpSZWxhdGlvbkxpc3QgPSBOSUw7CiAJTGlzdAkgICAqSW5pdGlhbFRlbXBUYWJs ZUxpc3QgPSBOSUw7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3k7CiAJYm9vbAkJ YWJvcnRlZCA9IGZhbHNlOwogCWludDY0CQlyZWxzX2RvbmU7CiAJYm9vbAkJcHJvY2Vzc19z aGFyZWQ7CkBAIC0xNjUwLDExICsxNjQ5LDYgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4o RGF0dW0gYXJnKQogCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CiAJVmFjdXVtQ29zdEJhbGFuY2Ug PSAwOwogCi0JLyoKLQkgKiBDcmVhdGUgYW5kIHNldCB0aGUgdmFjdXVtIHN0cmF0ZWd5IGFz IG91ciBidWZmZXIgc3RyYXRlZ3kuCi0JICovCi0Jc3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJh dGVneShCQVNfVkFDVVVNKTsKLQogCVJlbGF0aW9uTGlzdCA9IEJ1aWxkUmVsYXRpb25MaXN0 KGZhbHNlLCBwcm9jZXNzX3NoYXJlZCk7CiAKIAkvKiBVcGRhdGUgdGhlIHRvdGFsIG51bWJl ciBvZiByZWxhdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIGluIHRoaXMgREIuICovCkBAIC0xNjc2 LDkgKzE2NzAsNyBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1bSBhcmcpCiAJcmVs c19kb25lID0gMDsKIAlmb3JlYWNoX29pZChyZWxvaWQsIFJlbGF0aW9uTGlzdCkKIAl7Ci0J CWJvb2wJCWNvc3RzX3VwZGF0ZWQgPSBmYWxzZTsKLQotCQlpZiAoIVByb2Nlc3NTaW5nbGVS ZWxhdGlvbkJ5T2lkKHJlbG9pZCwgc3RyYXRlZ3kpKQorCQlpZiAoIVByb2Nlc3NTaW5nbGVS ZWxhdGlvbkJ5T2lkKHJlbG9pZCkpCiAJCXsKIAkJCWFib3J0ZWQgPSB0cnVlOwogCQkJYnJl YWs7CkBAIC0xNjk0LDggKzE2ODYsNyBAQCBEYXRhQ2hlY2tzdW1zV29ya2VyTWFpbihEYXR1 bSBhcmcpCiAKIAkJLyoKIAkJICogQ2hlY2sgaWYgdGhlIGNvc3Qgc2V0dGluZ3MgY2hhbmdl ZCBkdXJpbmcgcnVudGltZSBhbmQgaWYgc28sIHVwZGF0ZQotCQkgKiB0byByZWZsZWN0IHRo ZSBuZXcgdmFsdWVzIGFuZCBzaWduYWwgdGhhdCB0aGUgYWNjZXNzIHN0cmF0ZWd5IG5lZWRz Ci0JCSAqIHRvIGJlIHJlZnJlc2hlZC4KKwkJICogdG8gcmVmbGVjdCB0aGUgbmV3IHZhbHVl cy4KIAkJICovCiAJCUxXTG9ja0FjcXVpcmUoRGF0YUNoZWNrc3Vtc1dvcmtlckxvY2ssIExX X0VYQ0xVU0lWRSk7CiAJCWlmIChEYXRhQ2hlY2tzdW1TdGF0ZS0+d29ya2VyX2ludm9jYXRp b24gIT0gd29ya2VyX2ludm9jYXRpb24pCkBAIC0xNzA2LDcgKzE2OTcsNiBAQCBEYXRhQ2hl Y2tzdW1zV29ya2VyTWFpbihEYXR1bSBhcmcpCiAJCWlmICgoRGF0YUNoZWNrc3VtU3RhdGUt PmxhdW5jaF9jb3N0X2RlbGF5ICE9IERhdGFDaGVja3N1bVN0YXRlLT5jb3N0X2RlbGF5KQog CQkJfHwgKERhdGFDaGVja3N1bVN0YXRlLT5sYXVuY2hfY29zdF9saW1pdCAhPSBEYXRhQ2hl Y2tzdW1TdGF0ZS0+Y29zdF9saW1pdCkpCiAJCXsKLQkJCWNvc3RzX3VwZGF0ZWQgPSB0cnVl OwogCQkJVmFjdXVtQ29zdERlbGF5ID0gRGF0YUNoZWNrc3VtU3RhdGUtPmxhdW5jaF9jb3N0 X2RlbGF5OwogCQkJVmFjdXVtQ29zdExpbWl0ID0gRGF0YUNoZWNrc3VtU3RhdGUtPmxhdW5j aF9jb3N0X2xpbWl0OwogCQkJVmFjdXVtVXBkYXRlQ29zdHMoKTsKQEAgLTE3MTQsMTkgKzE3 MDQsMTAgQEAgRGF0YUNoZWNrc3Vtc1dvcmtlck1haW4oRGF0dW0gYXJnKQogCQkJRGF0YUNo ZWNrc3VtU3RhdGUtPmNvc3RfZGVsYXkgPSBEYXRhQ2hlY2tzdW1TdGF0ZS0+bGF1bmNoX2Nv c3RfZGVsYXk7CiAJCQlEYXRhQ2hlY2tzdW1TdGF0ZS0+Y29zdF9saW1pdCA9IERhdGFDaGVj a3N1bVN0YXRlLT5sYXVuY2hfY29zdF9saW1pdDsKIAkJfQotCQllbHNlCi0JCQljb3N0c191 cGRhdGVkID0gZmFsc2U7CiAJCUxXTG9ja1JlbGVhc2UoRGF0YUNoZWNrc3Vtc1dvcmtlckxv Y2spOwotCi0JCWlmIChjb3N0c191cGRhdGVkKQotCQl7Ci0JCQlGcmVlQWNjZXNzU3RyYXRl Z3koc3RyYXRlZ3kpOwotCQkJc3RyYXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfVkFD VVVNKTsKLQkJfQogCX0KIAogCWxpc3RfZnJlZShSZWxhdGlvbkxpc3QpOwotCUZyZWVBY2Nl c3NTdHJhdGVneShzdHJhdGVneSk7CiAKIAlpZiAoYWJvcnRlZCB8fCBhYm9ydF9yZXF1ZXN0 ZWQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9zdHJl YW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMKaW5kZXggYTMx ODUzOWU1NmMuLjA4ZDM0NGYwNjNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2Fpby9yZWFkX3N0cmVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRf c3RyZWFtLmMKQEAgLTc1Nyw3ICs3NTcsNiBAQCByZWFkX3N0cmVhbV9sb29rX2FoZWFkKFJl YWRTdHJlYW0gKnN0cmVhbSkKICAqLwogc3RhdGljIFJlYWRTdHJlYW0gKgogcmVhZF9zdHJl YW1fYmVnaW5faW1wbChpbnQgZmxhZ3MsCi0JCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHN0cmF0ZWd5LAogCQkJCQkgICBSZWxhdGlvbiByZWwsCiAJCQkJCSAgIFNNZ3JSZWxhdGlv biBzbWdyLAogCQkJCQkgICBjaGFyIHBlcnNpc3RlbmNlLApAQCAtNzcxLDcgKzc3MCw2IEBA IHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoaW50IGZsYWdzLAogCWludDE2CQlxdWV1ZV9zaXpl OwogCWludDE2CQlxdWV1ZV9vdmVyZmxvdzsKIAlpbnQJCQltYXhfaW9zOwotCWludAkJCXN0 cmF0ZWd5X3Bpbl9saW1pdDsKIAl1aW50MzIJCW1heF9waW5uZWRfYnVmZmVyczsKIAl1aW50 MzIJCW1heF9wb3NzaWJsZV9idWZmZXJfbGltaXQ7CiAJT2lkCQkJdGFibGVzcGFjZV9pZDsK QEAgLTgzNSwxMCArODMzLDYgQEAgcmVhZF9zdHJlYW1fYmVnaW5faW1wbChpbnQgZmxhZ3Ms CiAJbWF4X3Bpbm5lZF9idWZmZXJzID0gTWluKG1heF9waW5uZWRfYnVmZmVycywKIAkJCQkJ CQkgUEdfSU5UMTZfTUFYIC0gcXVldWVfb3ZlcmZsb3cgLSAxKTsKIAotCS8qIEdpdmUgdGhl IHN0cmF0ZWd5IGEgY2hhbmNlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgYnVmZmVycyB3ZSBw aW4uICovCi0Jc3RyYXRlZ3lfcGluX2xpbWl0ID0gR2V0QWNjZXNzU3RyYXRlZ3lQaW5MaW1p dChzdHJhdGVneSk7Ci0JbWF4X3Bpbm5lZF9idWZmZXJzID0gTWluKHN0cmF0ZWd5X3Bpbl9s aW1pdCwgbWF4X3Bpbm5lZF9idWZmZXJzKTsKLQogCS8qCiAJICogQWxzbyBsaW1pdCBvdXIg cXVldWUgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIHBpbnMgd2UgY291bGQgZXZlciBiZQog CSAqIGFsbG93ZWQgdG8gYWNxdWlyZSBhY2NvcmRpbmcgdG8gdGhlIGJ1ZmZlciBtYW5hZ2Vy LiAgV2UgbWF5IG5vdCByZWFsbHkKQEAgLTk2Miw3ICs5NTYsNiBAQCByZWFkX3N0cmVhbV9i ZWdpbl9pbXBsKGludCBmbGFncywKIAkJc3RyZWFtLT5pb3NbaV0ub3Auc21nciA9IHNtZ3I7 CiAJCXN0cmVhbS0+aW9zW2ldLm9wLnBlcnNpc3RlbmNlID0gcGVyc2lzdGVuY2U7CiAJCXN0 cmVhbS0+aW9zW2ldLm9wLmZvcmtudW0gPSBmb3JrbnVtOwotCQlzdHJlYW0tPmlvc1tpXS5v cC5zdHJhdGVneSA9IHN0cmF0ZWd5OwogCX0KIAogCXJldHVybiBzdHJlYW07CkBAIC05NzQs NyArOTY3LDYgQEAgcmVhZF9zdHJlYW1fYmVnaW5faW1wbChpbnQgZmxhZ3MsCiAgKi8KIFJl YWRTdHJlYW0gKgogcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oaW50IGZsYWdzLAotCQkJ CQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQkgICBSZWxhdGlv biByZWwsCiAJCQkJCQkgICBGb3JrTnVtYmVyIGZvcmtudW0sCiAJCQkJCQkgICBSZWFkU3Ry ZWFtQmxvY2tOdW1iZXJDQiBjYWxsYmFjaywKQEAgLTk4Miw3ICs5NzQsNiBAQCByZWFkX3N0 cmVhbV9iZWdpbl9yZWxhdGlvbihpbnQgZmxhZ3MsCiAJCQkJCQkgICBzaXplX3QgcGVyX2J1 ZmZlcl9kYXRhX3NpemUpCiB7CiAJcmV0dXJuIHJlYWRfc3RyZWFtX2JlZ2luX2ltcGwoZmxh Z3MsCi0JCQkJCQkJCSAgc3RyYXRlZ3ksCiAJCQkJCQkJCSAgcmVsLAogCQkJCQkJCQkgIFJl bGF0aW9uR2V0U21ncihyZWwpLAogCQkJCQkJCQkgIHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0 ZW5jZSwKQEAgLTk5OCw3ICs5ODksNiBAQCByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihp bnQgZmxhZ3MsCiAgKi8KIFJlYWRTdHJlYW0gKgogcmVhZF9zdHJlYW1fYmVnaW5fc21ncl9y ZWxhdGlvbihpbnQgZmxhZ3MsCi0JCQkJCQkJCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5LAogCQkJCQkJCQlTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJCQkJY2hhciBzbWdyX3Bl cnNpc3RlbmNlLAogCQkJCQkJCQlGb3JrTnVtYmVyIGZvcmtudW0sCkBAIC0xMDA3LDcgKzk5 Nyw2IEBAIHJlYWRfc3RyZWFtX2JlZ2luX3NtZ3JfcmVsYXRpb24oaW50IGZsYWdzLAogCQkJ CQkJCQlzaXplX3QgcGVyX2J1ZmZlcl9kYXRhX3NpemUpCiB7CiAJcmV0dXJuIHJlYWRfc3Ry ZWFtX2JlZ2luX2ltcGwoZmxhZ3MsCi0JCQkJCQkJCSAgc3RyYXRlZ3ksCiAJCQkJCQkJCSAg TlVMTCwKIAkJCQkJCQkJICBzbWdyLAogCQkJCQkJCQkgIHNtZ3JfcGVyc2lzdGVuY2UsCkBA IC0xMzcwLDEzICsxMzU5LDExIEBAIHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKFJlYWRTdHJl YW0gKnN0cmVhbSwgdm9pZCAqKnBlcl9idWZmZXJfZGF0YSkKICAqIFRyYW5zaXRpb25hbCBz dXBwb3J0IGZvciBjb2RlIHRoYXQgd291bGQgbGlrZSB0byBwZXJmb3JtIG9yIHNraXAgcmVh ZHMKICAqIGl0c2VsZiwgd2l0aG91dCB1c2luZyB0aGUgc3RyZWFtLiAgUmV0dXJucywgYW5k IGNvbnN1bWVzLCB0aGUgbmV4dCBibG9jawogICogbnVtYmVyIHRoYXQgd291bGQgYmUgcmVh ZCBieSB0aGUgc3RyZWFtJ3MgbG9vay1haGVhZCBhbGdvcml0aG0sIG9yCi0gKiBJbnZhbGlk QmxvY2tOdW1iZXIgaWYgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIHJlYWNoZWQuICBBbHNv IHJlcG9ydHMgdGhlCi0gKiBzdHJhdGVneSB0aGF0IHdvdWxkIGJlIHVzZWQgdG8gcmVhZCBp dC4KKyAqIEludmFsaWRCbG9ja051bWJlciBpZiB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMg cmVhY2hlZC4KICAqLwogQmxvY2tOdW1iZXIKLXJlYWRfc3RyZWFtX25leHRfYmxvY2soUmVh ZFN0cmVhbSAqc3RyZWFtLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSAqc3RyYXRlZ3kpCityZWFk X3N0cmVhbV9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSkKIHsKLQkqc3RyYXRlZ3kg PSBzdHJlYW0tPmlvc1swXS5vcC5zdHJhdGVneTsKIAlyZXR1cm4gcmVhZF9zdHJlYW1fZ2V0 X2Jsb2NrKHN0cmVhbSwgTlVMTCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL1JFQURNRSBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL1JFQURN RQppbmRleCBiMzMyZTAwMmJhMS4uNThkZjZiZDAxMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9SRUFETUUKQEAgLTIwMyw1MCArMjAzLDYgQEAgaGF2ZSB0byBnaXZlIHVwIGFuZCB0 cnkgYW5vdGhlciBidWZmZXIuICBUaGlzIGhvd2V2ZXIgaXMgbm90IGEgY29uY2Vybgogb2Yg dGhlIGJhc2ljIHNlbGVjdC1hLXZpY3RpbS1idWZmZXIgYWxnb3JpdGhtLikKIAogCi1CdWZm ZXIgUmluZyBSZXBsYWNlbWVudCBTdHJhdGVneQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0KLVdoZW4gcnVubmluZyBhIHF1ZXJ5IHRoYXQgbmVlZHMgdG8gYWNjZXNz IGEgbGFyZ2UgbnVtYmVyIG9mIHBhZ2VzIGp1c3Qgb25jZSwKLXN1Y2ggYXMgVkFDVVVNIG9y IGEgbGFyZ2Ugc2VxdWVudGlhbCBzY2FuLCBhIGRpZmZlcmVudCBzdHJhdGVneSBpcyB1c2Vk LgotQSBwYWdlIHRoYXQgaGFzIGJlZW4gdG91Y2hlZCBvbmx5IGJ5IHN1Y2ggYSBzY2FuIGlz IHVubGlrZWx5IHRvIGJlIG5lZWRlZAotYWdhaW4gc29vbiwgc28gaW5zdGVhZCBvZiBydW5u aW5nIHRoZSBub3JtYWwgY2xvY2stc3dlZXAgYWxnb3JpdGhtIGFuZAotYmxvd2luZyBvdXQg dGhlIGVudGlyZSBidWZmZXIgY2FjaGUsIGEgc21hbGwgcmluZyBvZiBidWZmZXJzIGlzIGFs bG9jYXRlZAotdXNpbmcgdGhlIG5vcm1hbCBjbG9jay1zd2VlcCBhbGdvcml0aG0gYW5kIHRo b3NlIGJ1ZmZlcnMgYXJlIHJldXNlZCBmb3IgdGhlCi13aG9sZSBzY2FuLiAgVGhpcyBhbHNv IGltcGxpZXMgdGhhdCBtdWNoIG9mIHRoZSB3cml0ZSB0cmFmZmljIGNhdXNlZCBieSBzdWNo Ci1hIHN0YXRlbWVudCB3aWxsIGJlIGRvbmUgYnkgdGhlIGJhY2tlbmQgaXRzZWxmIGFuZCBu b3QgcHVzaGVkIG9mZiBvbnRvIG90aGVyCi1wcm9jZXNzZXMuCi0KLUZvciBzZXF1ZW50aWFs IHNjYW5zLCBhIDI1NktCIHJpbmcgaXMgdXNlZC4gVGhhdCdzIHNtYWxsIGVub3VnaCB0byBm aXQgaW4gTDIKLWNhY2hlLCB3aGljaCBtYWtlcyB0cmFuc2ZlcnJpbmcgcGFnZXMgZnJvbSBP UyBjYWNoZSB0byBzaGFyZWQgYnVmZmVyIGNhY2hlCi1lZmZpY2llbnQuICBFdmVuIGxlc3Mg d291bGQgb2Z0ZW4gYmUgZW5vdWdoLCBidXQgdGhlIHJpbmcgbXVzdCBiZSBiaWcgZW5vdWdo Ci10byBhY2NvbW1vZGF0ZSBhbGwgcGFnZXMgaW4gdGhlIHNjYW4gdGhhdCBhcmUgcGlubmVk IGNvbmN1cnJlbnRseS4gIDI1NktCCi1zaG91bGQgYWxzbyBiZSBlbm91Z2ggdG8gbGVhdmUg YSBzbWFsbCBjYWNoZSB0cmFpbCBmb3Igb3RoZXIgYmFja2VuZHMgdG8KLWpvaW4gaW4gYSBz eW5jaHJvbml6ZWQgc2VxIHNjYW4uICBJZiBhIHJpbmcgYnVmZmVyIGlzIGRpcnRpZWQgYW5k IGl0cyBMU04KLXVwZGF0ZWQsIHdlIHdvdWxkIG5vcm1hbGx5IGhhdmUgdG8gd3JpdGUgYW5k IGZsdXNoIFdBTCBiZWZvcmUgd2UgY291bGQKLXJlLXVzZSB0aGUgYnVmZmVyOyBpbiB0aGlz IGNhc2Ugd2UgaW5zdGVhZCBkaXNjYXJkIHRoZSBidWZmZXIgZnJvbSB0aGUgcmluZwotYW5k IChsYXRlcikgY2hvb3NlIGEgcmVwbGFjZW1lbnQgdXNpbmcgdGhlIG5vcm1hbCBjbG9jay1z d2VlcCBhbGdvcml0aG0uCi1IZW5jZSB0aGlzIHN0cmF0ZWd5IHdvcmtzIGJlc3QgZm9yIHNj YW5zIHRoYXQgYXJlIHJlYWQtb25seSAob3IgYXQgd29yc3QKLXVwZGF0ZSBoaW50IGJpdHMp LiAgSW4gYSBzY2FuIHRoYXQgbW9kaWZpZXMgZXZlcnkgcGFnZSBpbiB0aGUgc2NhbiwgbGlr ZSBhCi1idWxrIFVQREFURSBvciBERUxFVEUsIHRoZSBidWZmZXJzIGluIHRoZSByaW5nIHdp bGwgYWx3YXlzIGJlIGRpcnRpZWQgYW5kCi10aGUgcmluZyBzdHJhdGVneSBlZmZlY3RpdmVs eSBkZWdyYWRlcyB0byB0aGUgbm9ybWFsIHN0cmF0ZWd5LgotCi1WQUNVVU0gdXNlcyBhIHJp bmcgbGlrZSBzZXF1ZW50aWFsIHNjYW5zLCBob3dldmVyLCB0aGUgc2l6ZSBvZiB0aGlzIHJp bmcgaXMKLWNvbnRyb2xsZWQgYnkgdGhlIHZhY3V1bV9idWZmZXJfdXNhZ2VfbGltaXQgR1VD LiAgRGlydHkgcGFnZXMgYXJlIG5vdCByZW1vdmVkCi1mcm9tIHRoZSByaW5nLiAgSW5zdGVh ZCwgdGhlIFdBTCBpcyBmbHVzaGVkIGlmIG5lZWRlZCB0byBhbGxvdyByZXVzZSBvZiB0aGUK LWJ1ZmZlcnMuICBCZWZvcmUgaW50cm9kdWNpbmcgdGhlIGJ1ZmZlciByaW5nIHN0cmF0ZWd5 IGluIDguMywgVkFDVVVNJ3MgYnVmZmVycwotd2VyZSBzZW50IHRvIHRoZSBmcmVlbGlzdCwg d2hpY2ggd2FzIGVmZmVjdGl2ZWx5IGEgYnVmZmVyIHJpbmcgb2YgMSBidWZmZXIsCi1yZXN1 bHRpbmcgaW4gZXhjZXNzaXZlIFdBTCBmbHVzaGluZy4KLQotQnVsayB3cml0ZXMgd29yayBz aW1pbGFybHkgdG8gVkFDVVVNLiAgQ3VycmVudGx5IHRoaXMgYXBwbGllcyBvbmx5IHRvCi1D T1BZIElOIGFuZCBDUkVBVEUgVEFCTEUgQVMgU0VMRUNULiAgKE1pZ2h0IGl0IGJlIGludGVy ZXN0aW5nIHRvIG1ha2UKLXNlcXNjYW4gVVBEQVRFIGFuZCBERUxFVEUgdXNlIHRoZSBidWxr d3JpdGUgc3RyYXRlZ3k/KSAgRm9yIGJ1bGsgd3JpdGVzCi13ZSB1c2UgYSByaW5nIHNpemUg b2YgMTZNQiAoYnV0IG5vdCBtb3JlIHRoYW4gMS84dGggb2Ygc2hhcmVkX2J1ZmZlcnMpLgot U21hbGxlciBzaXplcyBoYXZlIGJlZW4gc2hvd24gdG8gcmVzdWx0IGluIHRoZSBDT1BZIGJs b2NraW5nIHRvbyBvZnRlbgotZm9yIFdBTCBmbHVzaGVzLiAgV2hpbGUgaXQncyBva2F5IGZv ciBhIGJhY2tncm91bmQgdmFjdXVtIHRvIGJlIHNsb3dlZCBieQotZG9pbmcgaXRzIG93biBX QUwgZmx1c2hpbmcsIHdlJ2QgcHJlZmVyIHRoYXQgQ09QWSBub3QgYmUgc3ViamVjdCB0byB0 aGF0LAotc28gd2UgbGV0IGl0IHVzZSB1cCBhIGJpdCBtb3JlIG9mIHRoZSBidWZmZXIgYXJl bmEuCi0KLQogQmFja2dyb3VuZCBXcml0ZXIncyBQcm9jZXNzaW5nCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpp bmRleCAxZjVhMDA4NDllNi4uY2MyZmFiOTU5ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jCkBAIC02MTIsMTAgKzYxMiw5IEBAIEZvcmdldFByaXZhdGVSZWZDb3Vu dEVudHJ5KFByaXZhdGVSZWZDb3VudEVudHJ5ICpyZWYpCiBzdGF0aWMgQnVmZmVyIFJlYWRC dWZmZXJfY29tbW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJU01nclJlbGF0aW9uIHNtZ3Is IGNoYXIgc21ncl9wZXJzaXN0ZW5jZSwKIAkJCQkJCQkJRm9ya051bWJlciBmb3JrTnVtLCBC bG9ja051bWJlciBibG9ja051bSwKLQkJCQkJCQkJUmVhZEJ1ZmZlck1vZGUgbW9kZSwgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOworCQkJCQkJCQlSZWFkQnVmZmVyTW9kZSBt b2RlKTsKIHN0YXRpYyBCbG9ja051bWJlciBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihCdWZm ZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJCQkJCSAgIEZvcmtOdW1iZXIgZm9yaywK LQkJCQkJCQkJCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJCQkJ CQkgICB1aW50MzIgZmxhZ3MsCiAJCQkJCQkJCQkJICAgdWludDMyIGV4dGVuZF9ieSwKIAkJ CQkJCQkJCQkgICBCbG9ja051bWJlciBleHRlbmRfdXB0bywKQEAgLTYyMywxMyArNjIyLDEy IEBAIHN0YXRpYyBCbG9ja051bWJlciBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihCdWZmZXJN YW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJCQkJCSAgIHVpbnQzMiAqZXh0ZW5kZWRfYnkp Owogc3RhdGljIEJsb2NrTnVtYmVyIEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1h bmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJCQkJCQkJICAgRm9ya051bWJlciBmb3JrLAotCQkJ CQkJCQkJCSAgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkJCSAg IHVpbnQzMiBmbGFncywKIAkJCQkJCQkJCQkgICB1aW50MzIgZXh0ZW5kX2J5LAogCQkJCQkJ CQkJCSAgIEJsb2NrTnVtYmVyIGV4dGVuZF91cHRvLAogCQkJCQkJCQkJCSAgIEJ1ZmZlciAq YnVmZmVycywKIAkJCQkJCQkJCQkgICB1aW50MzIgKmV4dGVuZGVkX2J5KTsKLXN0YXRpYyBi b29sIFBpbkJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5LAorc3RhdGljIGJvb2wgUGluQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwKIAkJCQkJ ICBib29sIHNraXBfaWZfbm90X3ZhbGlkKTsKIHN0YXRpYyB2b2lkIFBpbkJ1ZmZlcl9Mb2Nr ZWQoQnVmZmVyRGVzYyAqYnVmKTsKIHN0YXRpYyB2b2lkIFVucGluQnVmZmVyKEJ1ZmZlckRl c2MgKmJ1Zik7CkBAIC02NDUsNyArNjQzLDYgQEAgc3RhdGljIGlubGluZSBCdWZmZXJEZXNj ICpCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJCQkJCSAgY2hhciByZWxw ZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAogCQkJCQkJCQkJ ICBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkJCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRl Z3kgc3RyYXRlZ3ksCiAJCQkJCQkJCQkgIGJvb2wgKmZvdW5kUHRyLCBJT0NvbnRleHQgaW9f Y29udGV4dCk7CiBzdGF0aWMgYm9vbCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3Bl cmF0aW9uICpvcGVyYXRpb24sIGludCAqbmJsb2Nrc19wcm9ncmVzcyk7CiBzdGF0aWMgdm9p ZCBDaGVja1JlYWRCdWZmZXJzT3BlcmF0aW9uKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVy YXRpb24sIGJvb2wgaXNfY29tcGxldGUpOwpAQCAtNjU0LDcgKzY1MSw3IEBAIHN0YXRpYyBw Z19hbHdheXNfaW5saW5lIHZvaWQgVHJhY2tCdWZmZXJIaXQoSU9PYmplY3QgaW9fb2JqZWN0 LAogCQkJCQkJCQkJCQlJT0NvbnRleHQgaW9fY29udGV4dCwKIAkJCQkJCQkJCQkJUmVsYXRp b24gcmVsLCBjaGFyIHBlcnNpc3RlbmNlLCBTTWdyUmVsYXRpb24gc21nciwKIAkJCQkJCQkJ CQkJRm9ya051bWJlciBmb3JrbnVtLCBCbG9ja051bWJlciBibG9ja251bSk7Ci1zdGF0aWMg QnVmZmVyIEdldFZpY3RpbUJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwg SU9Db250ZXh0IGlvX2NvbnRleHQpOworc3RhdGljIEJ1ZmZlciBHZXRWaWN0aW1CdWZmZXIo SU9Db250ZXh0IGlvX2NvbnRleHQpOwogc3RhdGljIHZvaWQgRmx1c2hVbmxvY2tlZEJ1ZmZl cihCdWZmZXJEZXNjICpidWYsIFNNZ3JSZWxhdGlvbiByZWxuLAogCQkJCQkJCQlJT09iamVj dCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0KTsKIHN0YXRpYyB2b2lkIEZsdXNo QnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJlbG4sCkBAIC04NTgsNyAr ODU1LDcgQEAgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9y a051bWJlciBmb3JrTnVtLCBCbG9ja051bWJlciBibG9ja04KIAkJICogcGluLgogCQkgKi8K IAkJaWYgKEJ1ZmZlclRhZ3NFcXVhbCgmdGFnLCAmYnVmSGRyLT50YWcpICYmCi0JCQlQaW5C dWZmZXIoYnVmSGRyLCBOVUxMLCB0cnVlKSkKKwkJCVBpbkJ1ZmZlcihidWZIZHIsIHRydWUp KQogCQl7CiAJCQlpZiAoQnVmZmVyVGFnc0VxdWFsKCZ0YWcsICZidWZIZHItPnRhZykpCiAJ CQl7CkBAIC04NzQsMTIgKzg3MSwxMiBAQCBSZWFkUmVjZW50QnVmZmVyKFJlbEZpbGVMb2Nh dG9yIHJsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJsb2NrTnVtYmVyIGJsb2NrTgog CiAvKgogICogUmVhZEJ1ZmZlciAtLSBhIHNob3J0aGFuZCBmb3IgUmVhZEJ1ZmZlckV4dGVu ZGVkLCBmb3IgcmVhZGluZyBmcm9tIG1haW4KLSAqCQlmb3JrIHdpdGggUkJNX05PUk1BTCBt b2RlIGFuZCBkZWZhdWx0IHN0cmF0ZWd5LgorICoJCWZvcmsgd2l0aCBSQk1fTk9STUFMIG1v ZGUuCiAgKi8KIEJ1ZmZlcgogUmVhZEJ1ZmZlcihSZWxhdGlvbiByZWxuLCBCbG9ja051bWJl ciBibG9ja051bSkKIHsKLQlyZXR1cm4gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbG4sIE1BSU5f Rk9SS05VTSwgYmxvY2tOdW0sIFJCTV9OT1JNQUwsIE5VTEwpOworCXJldHVybiBSZWFkQnVm ZmVyRXh0ZW5kZWQocmVsbiwgTUFJTl9GT1JLTlVNLCBibG9ja051bSwgUkJNX05PUk1BTCk7 CiB9CiAKIC8qCkBAIC05MTksMTMgKzkxNiwxMCBAQCBSZWFkQnVmZmVyKFJlbGF0aW9uIHJl bG4sIEJsb2NrTnVtYmVyIGJsb2NrTnVtKQogICogYSBjbGVhbnVwLXN0cmVuZ3RoIGxvY2sg b24gdGhlIHBhZ2UuCiAgKgogICogUkJNX05PUk1BTF9OT19MT0cgbW9kZSBpcyB0cmVhdGVk IHRoZSBzYW1lIGFzIFJCTV9OT1JNQUwgaGVyZS4KLSAqCi0gKiBJZiBzdHJhdGVneSBpcyBu b3QgTlVMTCwgYSBub25kZWZhdWx0IGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgaXMgdXNlZC4K LSAqIFNlZSBidWZmZXIvUkVBRE1FIGZvciBkZXRhaWxzLgogICovCiBpbmxpbmUgQnVmZmVy CiBSZWFkQnVmZmVyRXh0ZW5kZWQoUmVsYXRpb24gcmVsbiwgRm9ya051bWJlciBmb3JrTnVt LCBCbG9ja051bWJlciBibG9ja051bSwKLQkJCQkgICBSZWFkQnVmZmVyTW9kZSBtb2RlLCBC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSkKKwkJCQkgICBSZWFkQnVmZmVyTW9kZSBt b2RlKQogewogCUJ1ZmZlcgkJYnVmOwogCkBAIC05MzUsNyArOTI5LDcgQEAgUmVhZEJ1ZmZl ckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1i ZXIgYmxvY2tOdW0sCiAJICogUmVhZEJ1ZmZlcl9jb21tb24oKS4KIAkgKi8KIAlidWYgPSBS ZWFkQnVmZmVyX2NvbW1vbihyZWxuLCBSZWxhdGlvbkdldFNtZ3IocmVsbiksIDAsCi0JCQkJ CQkJZm9ya051bSwgYmxvY2tOdW0sIG1vZGUsIHN0cmF0ZWd5KTsKKwkJCQkJCQlmb3JrTnVt LCBibG9ja051bSwgbW9kZSk7CiAKIAlyZXR1cm4gYnVmOwogfQpAQCAtOTU0LDE0ICs5NDgs MTQgQEAgUmVhZEJ1ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9y a051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0sCiBCdWZmZXIKIFJlYWRCdWZmZXJXaXRob3V0 UmVsY2FjaGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwK IAkJCQkJCSAgQmxvY2tOdW1iZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2RlIG1vZGUsCi0J CQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBib29sIHBlcm1hbmVudCkK KwkJCQkJCSAgYm9vbCBwZXJtYW5lbnQpCiB7CiAJU01nclJlbGF0aW9uIHNtZ3IgPSBzbWdy b3BlbihybG9jYXRvciwgSU5WQUxJRF9QUk9DX05VTUJFUik7CiAKIAlyZXR1cm4gUmVhZEJ1 ZmZlcl9jb21tb24oTlVMTCwgc21nciwKIAkJCQkJCQkgcGVybWFuZW50ID8gUkVMUEVSU0lT VEVOQ0VfUEVSTUFORU5UIDogUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQsCiAJCQkJCQkJIGZv cmtOdW0sIGJsb2NrTnVtLAotCQkJCQkJCSBtb2RlLCBzdHJhdGVneSk7CisJCQkJCQkJIG1v ZGUpOwogfQogCiAvKgpAQCAtOTcwLDEzICs5NjQsMTIgQEAgUmVhZEJ1ZmZlcldpdGhvdXRS ZWxjYWNoZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgRm9ya051bWJlciBmb3JrTnVtLAog QnVmZmVyCiBFeHRlbmRCdWZmZXJlZFJlbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAog CQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAotCQkJCSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg c3RyYXRlZ3ksCiAJCQkJICB1aW50MzIgZmxhZ3MpCiB7CiAJQnVmZmVyCQlidWY7CiAJdWlu dDMyCQlleHRlbmRfYnkgPSAxOwogCi0JRXh0ZW5kQnVmZmVyZWRSZWxCeShibXIsIGZvcmtO dW0sIHN0cmF0ZWd5LCBmbGFncywgZXh0ZW5kX2J5LAorCUV4dGVuZEJ1ZmZlcmVkUmVsQnko Ym1yLCBmb3JrTnVtLCBmbGFncywgZXh0ZW5kX2J5LAogCQkJCQkJJmJ1ZiwgJmV4dGVuZF9i eSk7CiAKIAlyZXR1cm4gYnVmOwpAQCAtMTAwMiw3ICs5OTUsNiBAQCBFeHRlbmRCdWZmZXJl ZFJlbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogQmxvY2tOdW1iZXIKIEV4dGVuZEJ1 ZmZlcmVkUmVsQnkoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAkJCQkJRm9ya051bWJl ciBmb3JrLAotCQkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJdWlu dDMyIGZsYWdzLAogCQkJCQl1aW50MzIgZXh0ZW5kX2J5LAogCQkJCQlCdWZmZXIgKmJ1ZmZl cnMsCkBAIC0xMDE1LDcgKzEwMDcsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbEJ5KEJ1ZmZlck1h bmFnZXJSZWxhdGlvbiBibXIsCiAJaWYgKGJtci5yZWxwZXJzaXN0ZW5jZSA9PSAnXDAnKQog CQlibXIucmVscGVyc2lzdGVuY2UgPSBibXIucmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl OwogCi0JcmV0dXJuIEV4dGVuZEJ1ZmZlcmVkUmVsQ29tbW9uKGJtciwgZm9yaywgc3RyYXRl Z3ksIGZsYWdzLAorCXJldHVybiBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihibXIsIGZvcmss IGZsYWdzLAogCQkJCQkJCQkgICBleHRlbmRfYnksIEludmFsaWRCbG9ja051bWJlciwKIAkJ CQkJCQkJICAgYnVmZmVycywgZXh0ZW5kZWRfYnkpOwogfQpAQCAtMTAzMSw3ICsxMDIzLDYg QEAgRXh0ZW5kQnVmZmVyZWRSZWxCeShCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogQnVm ZmVyCiBFeHRlbmRCdWZmZXJlZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJ CQkJCUZvcmtOdW1iZXIgZm9yaywKLQkJCQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRl Z3ksCiAJCQkJCXVpbnQzMiBmbGFncywKIAkJCQkJQmxvY2tOdW1iZXIgZXh0ZW5kX3RvLAog CQkJCQlSZWFkQnVmZmVyTW9kZSBtb2RlKQpAQCAtMTA5Nyw3ICsxMDg4LDcgQEAgRXh0ZW5k QnVmZmVyZWRSZWxUbyhCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQlpZiAoKHVpbnQ2 NCkgY3VycmVudF9zaXplICsgbnVtX3BhZ2VzID4gZXh0ZW5kX3RvKQogCQkJbnVtX3BhZ2Vz ID0gZXh0ZW5kX3RvIC0gY3VycmVudF9zaXplOwogCi0JCWZpcnN0X2Jsb2NrID0gRXh0ZW5k QnVmZmVyZWRSZWxDb21tb24oYm1yLCBmb3JrLCBzdHJhdGVneSwgZmxhZ3MsCisJCWZpcnN0 X2Jsb2NrID0gRXh0ZW5kQnVmZmVyZWRSZWxDb21tb24oYm1yLCBmb3JrLCBmbGFncywKIAkJ CQkJCQkJCQkJICBudW1fcGFnZXMsIGV4dGVuZF90bywKIAkJCQkJCQkJCQkJICBidWZmZXJz LCAmZXh0ZW5kZWRfYnkpOwogCkBAIC0xMTIzLDcgKzExMTQsNyBAQCBFeHRlbmRCdWZmZXJl ZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJewogCQlBc3NlcnQoZXh0ZW5k ZWRfYnkgPT0gMCk7CiAJCWJ1ZmZlciA9IFJlYWRCdWZmZXJfY29tbW9uKGJtci5yZWwsIEJN Ul9HRVRfU01HUihibXIpLCBibXIucmVscGVyc2lzdGVuY2UsCi0JCQkJCQkJCSAgIGZvcmss IGV4dGVuZF90byAtIDEsIG1vZGUsIHN0cmF0ZWd5KTsKKwkJCQkJCQkJICAgZm9yaywgZXh0 ZW5kX3RvIC0gMSwgbW9kZSk7CiAJfQogCiAJcmV0dXJuIGJ1ZmZlcjsKQEAgLTEyMjYsNyAr MTIxNyw2IEBAIFBpbkJ1ZmZlckZvckJsb2NrKFJlbGF0aW9uIHJlbCwKIAkJCQkgIGNoYXIg cGVyc2lzdGVuY2UsCiAJCQkJICBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJCQkJICBCbG9ja051 bWJlciBibG9ja051bSwKLQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAog CQkJCSAgSU9PYmplY3QgaW9fb2JqZWN0LAogCQkJCSAgSU9Db250ZXh0IGlvX2NvbnRleHQs CiAJCQkJICBib29sICpmb3VuZFB0cikKQEAgLTEyNTAsNyArMTI0MCw3IEBAIFBpbkJ1ZmZl ckZvckJsb2NrKFJlbGF0aW9uIHJlbCwKIAkJYnVmSGRyID0gTG9jYWxCdWZmZXJBbGxvYyhz bWdyLCBmb3JrTnVtLCBibG9ja051bSwgZm91bmRQdHIpOwogCWVsc2UKIAkJYnVmSGRyID0g QnVmZmVyQWxsb2Moc21nciwgcGVyc2lzdGVuY2UsIGZvcmtOdW0sIGJsb2NrTnVtLAotCQkJ CQkJCSBzdHJhdGVneSwgZm91bmRQdHIsIGlvX2NvbnRleHQpOworCQkJCQkJCSBmb3VuZFB0 ciwgaW9fY29udGV4dCk7CiAKIAlpZiAoKmZvdW5kUHRyKQogCQlUcmFja0J1ZmZlckhpdChp b19vYmplY3QsIGlvX2NvbnRleHQsIHJlbCwgcGVyc2lzdGVuY2UsIHNtZ3IsIGZvcmtOdW0s IGJsb2NrTnVtKTsKQEAgLTEyNzYsOCArMTI2Niw3IEBAIFBpbkJ1ZmZlckZvckJsb2NrKFJl bGF0aW9uIHJlbCwKIHN0YXRpYyBwZ19hbHdheXNfaW5saW5lIEJ1ZmZlcgogUmVhZEJ1ZmZl cl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hhciBzbWdyX3Bl cnNpc3RlbmNlLAogCQkJCSAgRm9ya051bWJlciBmb3JrTnVtLAotCQkJCSAgQmxvY2tOdW1i ZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2RlIG1vZGUsCi0JCQkJICBCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneSkKKwkJCQkgIEJsb2NrTnVtYmVyIGJsb2NrTnVtLCBSZWFkQnVm ZmVyTW9kZSBtb2RlKQogewogCVJlYWRCdWZmZXJzT3BlcmF0aW9uIG9wZXJhdGlvbjsKIAlC dWZmZXIJCWJ1ZmZlcjsKQEAgLTEzMTMsNyArMTMwMiw3IEBAIFJlYWRCdWZmZXJfY29tbW9u KFJlbGF0aW9uIHJlbCwgU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgc21ncl9wZXJzaXN0ZW5j ZSwKIAkJaWYgKG1vZGUgPT0gUkJNX1pFUk9fQU5EX0xPQ0sgfHwgbW9kZSA9PSBSQk1fWkVS T19BTkRfQ0xFQU5VUF9MT0NLKQogCQkJZmxhZ3MgfD0gRUJfTE9DS19GSVJTVDsKIAotCQly ZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBmb3JrTnVtLCBzdHJhdGVn eSwgZmxhZ3MpOworCQlyZXR1cm4gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChyZWwpLCBm b3JrTnVtLCBmbGFncyk7CiAJfQogCiAJaWYgKHJlbCkKQEAgLTEzMzUsMTIgKzEzMjQsMTIg QEAgUmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwg Y2hhciBzbWdyX3BlcnNpc3RlbmNlLAogCQl9CiAJCWVsc2UKIAkJewotCQkJaW9fY29udGV4 dCA9IElPQ29udGV4dEZvclN0cmF0ZWd5KHN0cmF0ZWd5KTsKKwkJCWlvX2NvbnRleHQgPSBJ T0NPTlRFWFRfTk9STUFMOwogCQkJaW9fb2JqZWN0ID0gSU9PQkpFQ1RfUkVMQVRJT047CiAJ CX0KIAogCQlidWZmZXIgPSBQaW5CdWZmZXJGb3JCbG9jayhyZWwsIHNtZ3IsIHBlcnNpc3Rl bmNlLAotCQkJCQkJCQkgICBmb3JrTnVtLCBibG9ja051bSwgc3RyYXRlZ3ksCisJCQkJCQkJ CSAgIGZvcmtOdW0sIGJsb2NrTnVtLAogCQkJCQkJCQkgICBpb19vYmplY3QsIGlvX2NvbnRl eHQsICZmb3VuZCk7CiAJCVplcm9BbmRMb2NrQnVmZmVyKGJ1ZmZlciwgbW9kZSwgZm91bmQp OwogCQlyZXR1cm4gYnVmZmVyOwpAQCAtMTM1OCw3ICsxMzQ3LDYgQEAgUmVhZEJ1ZmZlcl9j b21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hhciBzbWdyX3BlcnNp c3RlbmNlLAogCW9wZXJhdGlvbi5yZWwgPSByZWw7CiAJb3BlcmF0aW9uLnBlcnNpc3RlbmNl ID0gcGVyc2lzdGVuY2U7CiAJb3BlcmF0aW9uLmZvcmtudW0gPSBmb3JrTnVtOwotCW9wZXJh dGlvbi5zdHJhdGVneSA9IHN0cmF0ZWd5OwogCWlmIChTdGFydFJlYWRCdWZmZXIoJm9wZXJh dGlvbiwKIAkJCQkJCSZidWZmZXIsCiAJCQkJCQlibG9ja051bSwKQEAgLTEzOTksNyArMTM4 Nyw3IEBAIFN0YXJ0UmVhZEJ1ZmZlcnNJbXBsKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVy YXRpb24sCiAJfQogCWVsc2UKIAl7Ci0JCWlvX2NvbnRleHQgPSBJT0NvbnRleHRGb3JTdHJh dGVneShvcGVyYXRpb24tPnN0cmF0ZWd5KTsKKwkJaW9fY29udGV4dCA9IElPQ09OVEVYVF9O T1JNQUw7CiAJCWlvX29iamVjdCA9IElPT0JKRUNUX1JFTEFUSU9OOwogCX0KIApAQCAtMTQ1 MCw3ICsxNDM4LDYgQEAgU3RhcnRSZWFkQnVmZmVyc0ltcGwoUmVhZEJ1ZmZlcnNPcGVyYXRp b24gKm9wZXJhdGlvbiwKIAkJCQkJCQkJCQkgICBvcGVyYXRpb24tPnBlcnNpc3RlbmNlLAog CQkJCQkJCQkJCSAgIG9wZXJhdGlvbi0+Zm9ya251bSwKIAkJCQkJCQkJCQkgICBibG9ja051 bSArIGksCi0JCQkJCQkJCQkJICAgb3BlcmF0aW9uLT5zdHJhdGVneSwKIAkJCQkJCQkJCQkg ICBpb19vYmplY3QsIGlvX2NvbnRleHQsCiAJCQkJCQkJCQkJICAgJmZvdW5kKTsKIAkJfQpA QCAtMTc3MSw3ICsxNzU4LDcgQEAgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0 aW9uICpvcGVyYXRpb24pCiAJfQogCWVsc2UKIAl7Ci0JCWlvX2NvbnRleHQgPSBJT0NvbnRl eHRGb3JTdHJhdGVneShvcGVyYXRpb24tPnN0cmF0ZWd5KTsKKwkJaW9fY29udGV4dCA9IElP Q09OVEVYVF9OT1JNQUw7CiAJCWlvX29iamVjdCA9IElPT0JKRUNUX1JFTEFUSU9OOwogCX0K IApAQCAtMTk2MSw3ICsxOTQ4LDcgQEAgQXN5bmNSZWFkQnVmZmVycyhSZWFkQnVmZmVyc09w ZXJhdGlvbiAqb3BlcmF0aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJfQogCWVsc2UK IAl7Ci0JCWlvX2NvbnRleHQgPSBJT0NvbnRleHRGb3JTdHJhdGVneShvcGVyYXRpb24tPnN0 cmF0ZWd5KTsKKwkJaW9fY29udGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJCWlvX29iamVj dCA9IElPT0JKRUNUX1JFTEFUSU9OOwogCX0KIApAQCAtMjE4MCwyNCArMjE2NywxOCBAQCBB c3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRpb24sIGludCAq bmJsb2Nrc19wcm9ncmVzcykKICAqCQlidWZmZXIuICBJZiBubyBidWZmZXIgZXhpc3RzIGFs cmVhZHksIHNlbGVjdHMgYSByZXBsYWNlbWVudCB2aWN0aW0gYW5kCiAgKgkJZXZpY3RzIHRo ZSBvbGQgcGFnZSwgYnV0IGRvZXMgTk9UIHJlYWQgaW4gbmV3IHBhZ2UuCiAgKgotICogInN0 cmF0ZWd5IiBjYW4gYmUgYSBidWZmZXIgcmVwbGFjZW1lbnQgc3RyYXRlZ3kgb2JqZWN0LCBv ciBOVUxMIGZvcgotICogdGhlIGRlZmF1bHQgc3RyYXRlZ3kuICBUaGUgc2VsZWN0ZWQgYnVm ZmVyJ3MgdXNhZ2VfY291bnQgaXMgYWR2YW5jZWQgd2hlbgotICogdXNpbmcgdGhlIGRlZmF1 bHQgc3RyYXRlZ3ksIGJ1dCBvdGhlcndpc2UgcG9zc2libHkgbm90IChzZWUgUGluQnVmZmVy KS4KLSAqCiAgKiBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIHBpbm5lZCBhbmQgaXMgYWxyZWFk eSBtYXJrZWQgYXMgaG9sZGluZyB0aGUKICAqIGRlc2lyZWQgcGFnZS4gIElmIGl0IGFscmVh ZHkgZGlkIGhhdmUgdGhlIGRlc2lyZWQgcGFnZSwgKmZvdW5kUHRyIGlzCiAgKiBzZXQgdHJ1 ZS4gIE90aGVyd2lzZSwgKmZvdW5kUHRyIGlzIHNldCBmYWxzZS4KICAqCi0gKiBpb19jb250 ZXh0IGlzIHBhc3NlZCBhcyBhbiBvdXRwdXQgcGFyYW1ldGVyIHRvIGF2b2lkIGNhbGxpbmcK LSAqIElPQ29udGV4dEZvclN0cmF0ZWd5KCkgd2hlbiB0aGVyZSBpcyBhIHNoYXJlZCBidWZm ZXJzIGhpdCBhbmQgbm8gSU8KLSAqIHN0YXRpc3RpY3MgbmVlZCBiZSBjYXB0dXJlZC4KKyAq IGlvX2NvbnRleHQgaXMgcGFzc2VkIGFzIGFuIG91dHB1dCBwYXJhbWV0ZXIgdG8gYXZvaWQg Y2FwdHVyaW5nIElPCisgKiBzdGF0aXN0aWNzIHdoZW4gdGhlcmUgaXMgYSBzaGFyZWQgYnVm ZmVycyBoaXQgYW5kIG5vIElPIG9jY3Vycy4KICAqCiAgKiBObyBsb2NrcyBhcmUgaGVsZCBl aXRoZXIgYXQgZW50cnkgb3IgZXhpdC4KICAqLwogc3RhdGljIHBnX2Fsd2F5c19pbmxpbmUg QnVmZmVyRGVzYyAqCiBCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgY2hhciByZWxw ZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCQkJQmxvY2tOdW1iZXIgYmxvY2tO dW0sCi0JCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCWJvb2wgKmZvdW5k UHRyLCBJT0NvbnRleHQgaW9fY29udGV4dCkKIHsKIAlCdWZmZXJUYWcJbmV3VGFnOwkJCS8q IGlkZW50aXR5IG9mIHJlcXVlc3RlZCBibG9jayAqLwpAQCAtMjIzNSw3ICsyMjE2LDcgQEAg QnVmZmVyQWxsb2MoU01nclJlbGF0aW9uIHNtZ3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsIEZv cmtOdW1iZXIgZm9ya051bSwKIAkJICovCiAJCWJ1ZiA9IEdldEJ1ZmZlckRlc2NyaXB0b3Io ZXhpc3RpbmdfYnVmX2lkKTsKIAotCQl2YWxpZCA9IFBpbkJ1ZmZlcihidWYsIHN0cmF0ZWd5 LCBmYWxzZSk7CisJCXZhbGlkID0gUGluQnVmZmVyKGJ1ZiwgZmFsc2UpOwogCiAJCS8qIENh biByZWxlYXNlIHRoZSBtYXBwaW5nIGxvY2sgYXMgc29vbiBhcyB3ZSd2ZSBwaW5uZWQgaXQg Ki8KIAkJTFdMb2NrUmVsZWFzZShuZXdQYXJ0aXRpb25Mb2NrKTsKQEAgLTIyNjYsNyArMjI0 Nyw3IEBAIEJ1ZmZlckFsbG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3Rl bmNlLCBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJICogZG9uJ3QgaG9sZCBhbnkgY29uZmxpY3Rp bmcgbG9ja3MuIElmIHNvIHdlJ2xsIGhhdmUgdG8gdW5kbyBvdXIgd29yawogCSAqIGxhdGVy LgogCSAqLwotCXZpY3RpbV9idWZmZXIgPSBHZXRWaWN0aW1CdWZmZXIoc3RyYXRlZ3ksIGlv X2NvbnRleHQpOworCXZpY3RpbV9idWZmZXIgPSBHZXRWaWN0aW1CdWZmZXIoaW9fY29udGV4 dCk7CiAJdmljdGltX2J1Zl9oZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKHZpY3RpbV9idWZm ZXIgLSAxKTsKIAogCS8qCkBAIC0yMjk3LDcgKzIyNzgsNyBAQCBCdWZmZXJBbGxvYyhTTWdy UmVsYXRpb24gc21nciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVt LAogCiAJCWV4aXN0aW5nX2J1Zl9oZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGV4aXN0aW5n X2J1Zl9pZCk7CiAKLQkJdmFsaWQgPSBQaW5CdWZmZXIoZXhpc3RpbmdfYnVmX2hkciwgc3Ry YXRlZ3ksIGZhbHNlKTsKKwkJdmFsaWQgPSBQaW5CdWZmZXIoZXhpc3RpbmdfYnVmX2hkciwg ZmFsc2UpOwogCiAJCS8qIENhbiByZWxlYXNlIHRoZSBtYXBwaW5nIGxvY2sgYXMgc29vbiBh cyB3ZSd2ZSBwaW5uZWQgaXQgKi8KIAkJTFdMb2NrUmVsZWFzZShuZXdQYXJ0aXRpb25Mb2Nr KTsKQEAgLTIzMzUsOSArMjMxNiwxMiBAQCBCdWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21n ciwgY2hhciByZWxwZXJzaXN0ZW5jZSwgRm9ya051bWJlciBmb3JrTnVtLAogCSAqIGp1c3Qg bGlrZSBwZXJtYW5lbnQgcmVsYXRpb25zLgogCSAqLwogCXNldF9iaXRzIHw9IEJNX1RBR19W QUxJRDsKLQkvKiBBZG1pdCB0aGUgbmV3bHkgbG9hZGVkIHBhZ2UgQ09PTCAocHJvYmF0aW9u KTsgYSBzZWNvbmQgYWNjZXNzIHZpYQorCisJLyoKKwkgKiBBZG1pdCB0aGUgbmV3bHkgbG9h ZGVkIHBhZ2UgQ09PTCAocHJvYmF0aW9uKTsgYSBzZWNvbmQgYWNjZXNzIHZpYQogCSAqIFBp bkJ1ZmZlciBwcm9tb3RlcyBpdCB0byBIT1QuICBUaGlzIGlzIHdoYXQgbWFrZXMgYSBvbmUt dG91Y2ggc2NhbgotCSAqIHNlbGYtZXZpY3RpbmcgLS0gc2VlIHRoZSBjb29saW5nLXN0YXRl IG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8KKwkgKiBzZWxmLWV2aWN0aW5nIC0tIHNl ZSB0aGUgY29vbGluZy1zdGF0ZSBub3RlcyBpbiBidWZfaW50ZXJuYWxzLmguCisJICovCiAJ aWYgKHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCB8fCBmb3Jr TnVtID09IElOSVRfRk9SS05VTSkKIAkJc2V0X2JpdHMgfD0gQk1fUEVSTUFORU5UOwogCkBA IC0yNTQ5LDEyICsyNTMzLDExIEBAIEludmFsaWRhdGVWaWN0aW1CdWZmZXIoQnVmZmVyRGVz YyAqYnVmX2hkcikKIH0KIAogc3RhdGljIEJ1ZmZlcgotR2V0VmljdGltQnVmZmVyKEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCBJT0NvbnRleHQgaW9fY29udGV4dCkKK0dldFZp Y3RpbUJ1ZmZlcihJT0NvbnRleHQgaW9fY29udGV4dCkKIHsKIAlCdWZmZXJEZXNjICpidWZf aGRyOwogCUJ1ZmZlcgkJYnVmOwogCXVpbnQ2NAkJYnVmX3N0YXRlOwotCWJvb2wJCWZyb21f cmluZzsKIAogCS8qCiAJICogRW5zdXJlLCBiZWZvcmUgd2UgcGluIGEgdmljdGltIGJ1ZmZl ciwgdGhhdCB0aGVyZSdzIGEgZnJlZSByZWZjb3VudApAQCAtMjU3MCw3ICsyNTUzLDcgQEAg YWdhaW46CiAJICogU2VsZWN0IGEgdmljdGltIGJ1ZmZlci4gIFRoZSBidWZmZXIgaXMgcmV0 dXJuZWQgcGlubmVkIGFuZCBvd25lZCBieQogCSAqIHRoaXMgYmFja2VuZC4KIAkgKi8KLQli dWZfaGRyID0gU3RyYXRlZ3lHZXRCdWZmZXIoc3RyYXRlZ3ksICZidWZfc3RhdGUsICZmcm9t X3JpbmcpOworCWJ1Zl9oZHIgPSBTdHJhdGVneUdldEJ1ZmZlcigmYnVmX3N0YXRlKTsKIAli dWYgPSBCdWZmZXJEZXNjcmlwdG9yR2V0QnVmZmVyKGJ1Zl9oZHIpOwogCiAJLyoKQEAgLTI2 MTQsMjYgKzI1OTcsNiBAQCBhZ2FpbjoKIAkJCWdvdG8gYWdhaW47CiAJCX0KIAotCQkvKgot CQkgKiBJZiB1c2luZyBhIG5vbmRlZmF1bHQgc3RyYXRlZ3ksIGFuZCB0aGlzIHZpY3RpbSBj YW1lIGZyb20gdGhlCi0JCSAqIHN0cmF0ZWd5IHJpbmcsIGxldCB0aGUgc3RyYXRlZ3kgZGVj aWRlIHdoZXRoZXIgdG8gcmVqZWN0IGl0IHdoZW4KLQkJICogcmV1c2luZyBpdCB3b3VsZCBy ZXF1aXJlIGEgV0FMIGZsdXNoLiAgVGhpcyBvbmx5IGFwcGxpZXMgdG8KLQkJICogcGVybWFu ZW50IGJ1ZmZlcnM7IHVubG9nZ2VkIGJ1ZmZlcnMgY2FuIGhhdmUgZmFrZSBMU05zLCBzbwot CQkgKiBYTG9nTmVlZHNGbHVzaCgpIGlzIG5vdCBtZWFuaW5nZnVsIGZvciB0aGVtLgotCQkg KgotCQkgKiBXZSBuZWVkIHRvIGhvbGQgdGhlIGNvbnRlbnQgbG9jayBpbiBhdCBsZWFzdCBz aGFyZS1leGNsdXNpdmUgbW9kZQotCQkgKiB0byBzYWZlbHkgaW5zcGVjdCB0aGUgcGFnZSBM U04sIHNvIHRoaXMgY291bGRuJ3QgaGF2ZSBiZWVuIGRvbmUKLQkJICogaW5zaWRlIFN0cmF0 ZWd5R2V0QnVmZmVyKCkuCi0JCSAqLwotCQlpZiAoc3RyYXRlZ3kgJiYgZnJvbV9yaW5nICYm Ci0JCQlidWZfc3RhdGUgJiBCTV9QRVJNQU5FTlQgJiYKLQkJCVhMb2dOZWVkc0ZsdXNoKEJ1 ZmZlckdldExTTihidWZfaGRyKSkgJiYKLQkJCVN0cmF0ZWd5UmVqZWN0QnVmZmVyKHN0cmF0 ZWd5LCBidWZfaGRyLCBmcm9tX3JpbmcpKQotCQl7Ci0JCQlVbmxvY2tSZWxlYXNlQnVmZmVy KGJ1Zik7Ci0JCQlnb3RvIGFnYWluOwotCQl9Ci0KIAkJLyogT0ssIGRvIHRoZSBJL08gKi8K IAkJRmx1c2hCdWZmZXIoYnVmX2hkciwgTlVMTCwgSU9PQkpFQ1RfUkVMQVRJT04sIGlvX2Nv bnRleHQpOwogCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKQEAgLTI2 NDYsMjMgKzI2MDksMTUgQEAgYWdhaW46CiAJaWYgKGJ1Zl9zdGF0ZSAmIEJNX1ZBTElEKQog CXsKIAkJLyoKLQkJICogV2hlbiBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGlzIGluIHVzZSwg YmxvY2tzIGV2aWN0ZWQgZnJvbSBzaGFyZWQKLQkJICogYnVmZmVycyBhcmUgY291bnRlZCBh cyBJT09QX0VWSUNUIGluIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQKLQkJICogKGUuZy4g SU9DT05URVhUX0JVTEtXUklURSkuIFNoYXJlZCBidWZmZXJzIGFyZSBldmljdGVkIGJ5IGEK LQkJICogc3RyYXRlZ3kgaW4gdHdvIGNhc2VzOiAxKSB3aGlsZSBpbml0aWFsbHkgY2xhaW1p bmcgYnVmZmVycyBmb3IgdGhlCi0JCSAqIHN0cmF0ZWd5IHJpbmcgMikgdG8gcmVwbGFjZSBh biBleGlzdGluZyBzdHJhdGVneSByaW5nIGJ1ZmZlcgotCQkgKiBiZWNhdXNlIGl0IGlzIHBp bm5lZCBvciBpbiB1c2UgYW5kIGNhbm5vdCBiZSByZXVzZWQuCisJCSAqIEJsb2NrcyBldmlj dGVkIGZyb20gc2hhcmVkIGJ1ZmZlcnMgYXJlIGNvdW50ZWQgYXMgSU9PUF9FVklDVC4KIAkJ ICoKLQkJICogQmxvY2tzIGV2aWN0ZWQgZnJvbSBidWZmZXJzIGFscmVhZHkgaW4gdGhlIHN0 cmF0ZWd5IHJpbmcgYXJlCi0JCSAqIGNvdW50ZWQgYXMgSU9PUF9SRVVTRSBpbiB0aGUgY29y cmVzcG9uZGluZyBzdHJhdGVneSBjb250ZXh0LgotCQkgKgotCQkgKiBBdCB0aGlzIHBvaW50 LCB3ZSBjYW4gYWNjdXJhdGVseSBjb3VudCBldmljdGlvbnMgYW5kIHJldXNlcywKLQkJICog YmVjYXVzZSB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBjbGFpbWVkIHRoZSB2YWxpZCBidWZmZXIu IFByZXZpb3VzbHksCi0JCSAqIHdlIG1heSBoYXZlIGJlZW4gZm9yY2VkIHRvIHJlbGVhc2Ug dGhlIGJ1ZmZlciBkdWUgdG8gY29uY3VycmVudAotCQkgKiBwaW5uZXJzIG9yIGVycm9yaW5n IG91dC4KKwkJICogQXQgdGhpcyBwb2ludCwgd2UgY2FuIGFjY3VyYXRlbHkgY291bnQgZXZp Y3Rpb25zLCBiZWNhdXNlIHdlIGhhdmUKKwkJICogc3VjY2Vzc2Z1bGx5IGNsYWltZWQgdGhl IHZhbGlkIGJ1ZmZlci4gUHJldmlvdXNseSwgd2UgbWF5IGhhdmUgYmVlbgorCQkgKiBmb3Jj ZWQgdG8gcmVsZWFzZSB0aGUgYnVmZmVyIGR1ZSB0byBjb25jdXJyZW50IHBpbm5lcnMgb3Ig ZXJyb3JpbmcKKwkJICogb3V0LgogCQkgKi8KIAkJcGdzdGF0X2NvdW50X2lvX29wKElPT0JK RUNUX1JFTEFUSU9OLCBpb19jb250ZXh0LAotCQkJCQkJICAgZnJvbV9yaW5nID8gSU9PUF9S RVVTRSA6IElPT1BfRVZJQ1QsIDEsIDApOworCQkJCQkJICAgSU9PUF9FVklDVCwgMSwgMCk7 CiAJfQogCiAJLyoKQEAgLTI3NTQsNyArMjcwOSw2IEBAIExpbWl0QWRkaXRpb25hbFBpbnMo dWludDMyICphZGRpdGlvbmFsX3BpbnMpCiBzdGF0aWMgQmxvY2tOdW1iZXIKIEV4dGVuZEJ1 ZmZlcmVkUmVsQ29tbW9uKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJCQlGb3Jr TnVtYmVyIGZvcmssCi0JCQkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJ CQkJCXVpbnQzMiBmbGFncywKIAkJCQkJCXVpbnQzMiBleHRlbmRfYnksCiAJCQkJCQlCbG9j a051bWJlciBleHRlbmRfdXB0bywKQEAgLTI3ODksNyArMjc0Myw3IEBAIEV4dGVuZEJ1ZmZl cmVkUmVsQ29tbW9uKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJCQkJCQkJCSBi dWZmZXJzLCAmZXh0ZW5kX2J5KTsKIAl9CiAJZWxzZQotCQlmaXJzdF9ibG9jayA9IEV4dGVu ZEJ1ZmZlcmVkUmVsU2hhcmVkKGJtciwgZm9yaywgc3RyYXRlZ3ksIGZsYWdzLAorCQlmaXJz dF9ibG9jayA9IEV4dGVuZEJ1ZmZlcmVkUmVsU2hhcmVkKGJtciwgZm9yaywgZmxhZ3MsCiAJ CQkJCQkJCQkJCSAgZXh0ZW5kX2J5LCBleHRlbmRfdXB0bywKIAkJCQkJCQkJCQkJICBidWZm ZXJzLCAmZXh0ZW5kX2J5KTsKIAkqZXh0ZW5kZWRfYnkgPSBleHRlbmRfYnk7CkBAIC0yODEy LDcgKzI3NjYsNiBAQCBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihCdWZmZXJNYW5hZ2VyUmVs YXRpb24gYm1yLAogc3RhdGljIEJsb2NrTnVtYmVyCiBFeHRlbmRCdWZmZXJlZFJlbFNoYXJl ZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJRm9ya051bWJlciBmb3JrLAot CQkJCQkJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJCQl1aW50MzIgZmxh Z3MsCiAJCQkJCQl1aW50MzIgZXh0ZW5kX2J5LAogCQkJCQkJQmxvY2tOdW1iZXIgZXh0ZW5k X3VwdG8sCkBAIC0yODIwLDcgKzI3NzMsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbFNoYXJlZChC dWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJCQkJdWludDMyICpleHRlbmRlZF9ieSkK IHsKIAlCbG9ja051bWJlciBmaXJzdF9ibG9jazsKLQlJT0NvbnRleHQJaW9fY29udGV4dCA9 IElPQ29udGV4dEZvclN0cmF0ZWd5KHN0cmF0ZWd5KTsKKwlJT0NvbnRleHQJaW9fY29udGV4 dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJaW5zdHJfdGltZQlpb19zdGFydDsKIAogCUxpbWl0 QWRkaXRpb25hbFBpbnMoJmV4dGVuZF9ieSk7CkBAIC0yODM5LDcgKzI3OTIsNyBAQCBFeHRl bmRCdWZmZXJlZFJlbFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCXsKIAkJ QmxvY2sJCWJ1Zl9ibG9jazsKIAotCQlidWZmZXJzW2ldID0gR2V0VmljdGltQnVmZmVyKHN0 cmF0ZWd5LCBpb19jb250ZXh0KTsKKwkJYnVmZmVyc1tpXSA9IEdldFZpY3RpbUJ1ZmZlcihp b19jb250ZXh0KTsKIAkJYnVmX2Jsb2NrID0gQnVmSGRyR2V0QmxvY2soR2V0QnVmZmVyRGVz Y3JpcHRvcihidWZmZXJzW2ldIC0gMSkpOwogCiAJCS8qIG5ldyBidWZmZXJzIGFyZSB6ZXJv LWZpbGxlZCAqLwpAQCAtMjk1Nyw3ICsyOTEwLDcgQEAgRXh0ZW5kQnVmZmVyZWRSZWxTaGFy ZWQoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAkJCSAqIFBpbiB0aGUgZXhpc3Rpbmcg YnVmZmVyIGJlZm9yZSByZWxlYXNpbmcgdGhlIHBhcnRpdGlvbiBsb2NrLAogCQkJICogcHJl dmVudGluZyBpdCBmcm9tIGJlaW5nIGV2aWN0ZWQuCiAJCQkgKi8KLQkJCXZhbGlkID0gUGlu QnVmZmVyKGV4aXN0aW5nX2hkciwgc3RyYXRlZ3ksIGZhbHNlKTsKKwkJCXZhbGlkID0gUGlu QnVmZmVyKGV4aXN0aW5nX2hkciwgZmFsc2UpOwogCiAJCQlMV0xvY2tSZWxlYXNlKHBhcnRp dGlvbl9sb2NrKTsKIAkJCVVucGluQnVmZmVyKHZpY3RpbV9idWZfaGRyKTsKQEAgLTMwMDcs OCArMjk2MCwxMSBAQCBFeHRlbmRCdWZmZXJlZFJlbFNoYXJlZChCdWZmZXJNYW5hZ2VyUmVs YXRpb24gYm1yLAogCQkJdmljdGltX2J1Zl9oZHItPnRhZyA9IHRhZzsKIAogCQkJc2V0X2Jp dHMgfD0gQk1fVEFHX1ZBTElEOwotCQkJLyogQWRtaXQgQ09PTCAocHJvYmF0aW9uKTsgc2Vl IHRoZSBjb21tZW50IGF0IHRoZSBvdGhlciBhZG1pc3Npb24KLQkJCSAqIHNpdGUgYW5kIHRo ZSBjb29saW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8KKworCQkJLyoK KwkJCSAqIEFkbWl0IENPT0wgKHByb2JhdGlvbik7IHNlZSB0aGUgY29tbWVudCBhdCB0aGUg b3RoZXIgYWRtaXNzaW9uCisJCQkgKiBzaXRlIGFuZCB0aGUgY29vbGluZy1zdGF0ZSBub3Rl cyBpbiBidWZfaW50ZXJuYWxzLmguCisJCQkgKi8KIAkJCWlmIChibXIucmVscGVyc2lzdGVu Y2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIHx8IGZvcmsgPT0gSU5JVF9GT1JLTlVN KQogCQkJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsKIApAQCAtMzI3NSwxMyArMzIzMSw4 IEBAIFJlbGVhc2VBbmRSZWFkQnVmZmVyKEJ1ZmZlciBidWZmZXIsCiAvKgogICogUGluQnVm ZmVyIC0tIG1ha2UgYnVmZmVyIHVuYXZhaWxhYmxlIGZvciByZXBsYWNlbWVudC4KICAqCi0g KiBGb3IgdGhlIGRlZmF1bHQgYWNjZXNzIHN0cmF0ZWd5LCB0aGUgYnVmZmVyJ3MgdXNhZ2Vf Y291bnQgaXMgaW5jcmVtZW50ZWQKLSAqIHdoZW4gd2UgZmlyc3QgcGluIGl0OyBmb3Igb3Ro ZXIgc3RyYXRlZ2llcyB3ZSBqdXN0IG1ha2Ugc3VyZSB0aGUgdXNhZ2VfY291bnQKLSAqIGlz bid0IHplcm8uICAoVGhlIGlkZWEgb2YgdGhlIGxhdHRlciBpcyB0aGF0IHdlIGRvbid0IHdh bnQgc3luY2hyb25pemVkCi0gKiBoZWFwIHNjYW5zIHRvIGluZmxhdGUgdGhlIGNvdW50LCBi dXQgd2UgbmVlZCBpdCB0byBub3QgYmUgemVybyB0byBkaXNjb3VyYWdlCi0gKiBvdGhlciBi YWNrZW5kcyBmcm9tIHN0ZWFsaW5nIGJ1ZmZlcnMgZnJvbSBvdXIgcmluZy4gIEFzIGxvbmcg YXMgd2UgY3ljbGUKLSAqIHRocm91Z2ggdGhlIHJpbmcgZmFzdGVyIHRoYW4gdGhlIGdsb2Jh bCBjbG9jay1zd2VlcCBjeWNsZXMsIGJ1ZmZlcnMgaW4KLSAqIG91ciByaW5nIHdvbid0IGJl IGNob3NlbiBhcyB2aWN0aW1zIGZvciByZXBsYWNlbWVudCBieSBvdGhlciBiYWNrZW5kcy4p CisgKiBUaGUgYnVmZmVyJ3MgY29vbGluZyBzdGF0ZSBpcyBwcm9tb3RlZCB0byBIT1QgKHRo ZSAyUSByZXNjdWUpIHdoZW4gd2UgcGluCisgKiBpdDsgc2VlIHRoZSBjb29saW5nLXN0YXRl IG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4KICAqCiAgKiBUaGlzIHNob3VsZCBiZSBhcHBs aWVkIG9ubHkgdG8gc2hhcmVkIGJ1ZmZlcnMsIG5ldmVyIGxvY2FsIG9uZXMuCiAgKgpAQCAt MzI5OCw3ICszMjQ5LDcgQEAgUmVsZWFzZUFuZFJlYWRCdWZmZXIoQnVmZmVyIGJ1ZmZlciwK ICAqIChyZWNlbnRseSkgaW52YWxpZCBhbmQgaGFzIG5vdCBiZWVuIHBpbm5lZC4KICAqLwog c3RhdGljIGJvb2wKLVBpbkJ1ZmZlcihCdWZmZXJEZXNjICpidWYsIEJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IHN0cmF0ZWd5LAorUGluQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwKIAkJICBib29s IHNraXBfaWZfbm90X3ZhbGlkKQogewogCUJ1ZmZlcgkJYiA9IEJ1ZmZlckRlc2NyaXB0b3JH ZXRCdWZmZXIoYnVmKTsKQEAgLTMzOTYsNyArMzM0Nyw3IEBAIFBpbkJ1ZmZlcihCdWZmZXJE ZXNjICpidWYsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogICogUmVzb3VyY2VP d25lckVubGFyZ2UoQ3VycmVudFJlc291cmNlT3duZXIpOwogICoKICAqIEN1cnJlbnRseSwg bm8gY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIHdhbnQgdG8gbW9kaWZ5IHRoZSBidWZmZXIn cwotICogdXNhZ2VfY291bnQgYXQgYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWQgZm9yIGEgc3Ry YXRlZ3kgcGFyYW1ldGVyLgorICogY29vbGluZyBzdGF0ZSBhdCBhbGwuCiAgKiBBbHNvIHdl IGRvbid0IGJvdGhlciB3aXRoIGEgQk1fVkFMSUQgdGVzdCAodGhlIGNhbGxlciBjb3VsZCBj aGVjayB0aGF0IGZvcgogICogaXRzZWxmKS4KICAqCkBAIC00Njc0LDIyICs0NjI1LDggQEAg Rmx1c2hCdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRpb24gcmVsbiwgSU9PYmpl Y3QgaW9fb2JqZWN0LAogCQkJICBmYWxzZSk7CiAKIAkvKgotCSAqIFdoZW4gYSBzdHJhdGVn eSBpcyBpbiB1c2UsIG9ubHkgZmx1c2hlcyBvZiBkaXJ0eSBidWZmZXJzIGFscmVhZHkgaW4g dGhlCi0JICogc3RyYXRlZ3kgcmluZyBhcmUgY291bnRlZCBhcyBzdHJhdGVneSB3cml0ZXMg KElPQ09OVEVYVAotCSAqIFtCVUxLUkVBRHxCVUxLV1JJVEV8VkFDVVVNXSBJT09QX1dSSVRF KSBmb3IgdGhlIHB1cnBvc2Ugb2YgSU8KLQkgKiBzdGF0aXN0aWNzIHRyYWNraW5nLgotCSAq Ci0JICogSWYgYSBzaGFyZWQgYnVmZmVyIGluaXRpYWxseSBhZGRlZCB0byB0aGUgcmluZyBt dXN0IGJlIGZsdXNoZWQgYmVmb3JlCi0JICogYmVpbmcgdXNlZCwgdGhpcyBpcyBjb3VudGVk IGFzIGFuIElPQ09OVEVYVF9OT1JNQUwgSU9PUF9XUklURS4KLQkgKgotCSAqIElmIGEgc2hh cmVkIGJ1ZmZlciB3aGljaCB3YXMgYWRkZWQgdG8gdGhlIHJpbmcgbGF0ZXIgYmVjYXVzZSB0 aGUKLQkgKiBjdXJyZW50IHN0cmF0ZWd5IGJ1ZmZlciBpcyBwaW5uZWQgb3IgaW4gdXNlIG9y IGJlY2F1c2UgYWxsIHN0cmF0ZWd5Ci0JICogYnVmZmVycyB3ZXJlIGRpcnR5IGFuZCByZWpl Y3RlZCAoZm9yIEJBU19CVUxLUkVBRCBvcGVyYXRpb25zIG9ubHkpCi0JICogcmVxdWlyZXMg Zmx1c2hpbmcsIHRoaXMgaXMgY291bnRlZCBhcyBhbiBJT0NPTlRFWFRfTk9STUFMIElPT1Bf V1JJVEUKLQkgKiAoZnJvbV9yaW5nIHdpbGwgYmUgZmFsc2UpLgotCSAqCi0JICogV2hlbiBh IHN0cmF0ZWd5IGlzIG5vdCBpbiB1c2UsIHRoZSB3cml0ZSBjYW4gb25seSBiZSBhICJyZWd1 bGFyIiB3cml0ZQotCSAqIG9mIGEgZGlydHkgc2hhcmVkIGJ1ZmZlciAoSU9DT05URVhUX05P Uk1BTCBJT09QX1dSSVRFKS4KKwkgKiBBbGwgd3JpdGVzIG9mIGEgZGlydHkgc2hhcmVkIGJ1 ZmZlciBhcmUgY291bnRlZCBhcyBhbiBJT0NPTlRFWFRfTk9STUFMCisJICogSU9PUF9XUklU RSBmb3IgdGhlIHB1cnBvc2Ugb2YgSU8gc3RhdGlzdGljcyB0cmFja2luZy4KIAkgKi8KIAlw Z3N0YXRfY291bnRfaW9fb3BfdGltZShpb19vYmplY3QsIGlvX2NvbnRleHQsCiAJCQkJCQkJ SU9PUF9XUklURSwgaW9fc3RhcnQsIDEsIEJMQ0tTWik7CkBAIC01NDUwLDggKzUzODcsNiBA QCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9j YXRvciwKIAlCbG9ja051bWJlciBuYmxvY2tzOwogCUJsb2NrTnVtYmVyIGJsa25vOwogCVBH SU9BbGlnbmVkQmxvY2sgYnVmOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneV9z cmM7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5X2RzdDsKIAlCbG9ja1Jhbmdl UmVhZFN0cmVhbVByaXZhdGUgcDsKIAlSZWFkU3RyZWFtICpzcmNfc3RyZWFtOwogCVNNZ3JS ZWxhdGlvbiBzcmNfc21ncjsKQEAgLTU0NzksMTAgKzU0MTQsNiBAQCBSZWxhdGlvbkNvcHlT dG9yYWdlVXNpbmdCdWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwKIAlzbWdyZXh0 ZW5kKHNtZ3JvcGVuKGRzdGxvY2F0b3IsIElOVkFMSURfUFJPQ19OVU1CRVIpLCBmb3JrTnVt LCBuYmxvY2tzIC0gMSwKIAkJCSAgIGJ1Zi5kYXRhLCB0cnVlKTsKIAotCS8qIFRoaXMgaXMg YSBidWxrIG9wZXJhdGlvbiwgc28gdXNlIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ2llcy4gKi8K LQlic3RyYXRlZ3lfc3JjID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKLQli c3RyYXRlZ3lfZHN0ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtXUklURSk7Ci0KIAkv KiBJbml0aWFsaXplIHN0cmVhbWluZyByZWFkICovCiAJcC5jdXJyZW50X2Jsb2NrbnVtID0g MDsKIAlwLmxhc3RfZXhjbHVzaXZlID0gbmJsb2NrczsKQEAgLTU0OTQsNyArNTQyNSw2IEBA IFJlbGF0aW9uQ29weVN0b3JhZ2VVc2luZ0J1ZmZlcihSZWxGaWxlTG9jYXRvciBzcmNsb2Nh dG9yLAogCSAqLwogCXNyY19zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9zbWdyX3JlbGF0 aW9uKFJFQURfU1RSRUFNX0ZVTEwgfAogCQkJCQkJCQkJCQkJIFJFQURfU1RSRUFNX1VTRV9C QVRDSElORywKLQkJCQkJCQkJCQkJCSBic3RyYXRlZ3lfc3JjLAogCQkJCQkJCQkJCQkJIHNy Y19zbWdyLAogCQkJCQkJCQkJCQkJIHBlcm1hbmVudCA/IFJFTFBFUlNJU1RFTkNFX1BFUk1B TkVOVCA6IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VELAogCQkJCQkJCQkJCQkJIGZvcmtOdW0s CkBAIC01NTE0LDcgKzU0NDQsNyBAQCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIo UmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwKIAogCQlkc3RCdWYgPSBSZWFkQnVmZmVyV2l0 aG91dFJlbGNhY2hlKGRzdGxvY2F0b3IsIGZvcmtOdW0sCiAJCQkJCQkJCQkJICAgQnVmZmVy R2V0QmxvY2tOdW1iZXIoc3JjQnVmKSwKLQkJCQkJCQkJCQkgICBSQk1fWkVST19BTkRfTE9D SywgYnN0cmF0ZWd5X2RzdCwKKwkJCQkJCQkJCQkgICBSQk1fWkVST19BTkRfTE9DSywKIAkJ CQkJCQkJCQkgICBwZXJtYW5lbnQpOwogCQlkc3RQYWdlID0gQnVmZmVyR2V0UGFnZShkc3RC dWYpOwogCkBAIC01NTM1LDkgKzU0NjUsNiBAQCBSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdC dWZmZXIoUmVsRmlsZUxvY2F0b3Igc3JjbG9jYXRvciwKIAl9CiAJQXNzZXJ0KHJlYWRfc3Ry ZWFtX25leHRfYnVmZmVyKHNyY19zdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOwog CXJlYWRfc3RyZWFtX2VuZChzcmNfc3RyZWFtKTsKLQotCUZyZWVBY2Nlc3NTdHJhdGVneShi c3RyYXRlZ3lfc3JjKTsKLQlGcmVlQWNjZXNzU3RyYXRlZ3koYnN0cmF0ZWd5X2RzdCk7CiB9 CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvZnJlZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVs aXN0LmMKaW5kZXggZThjZjEzZjMzNjIuLmVlNjJiMzM2NjgwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTc3LDQwICs3Nyw2IEBAIGNvbnN0IFNobWVt Q2FsbGJhY2tzIFN0cmF0ZWd5Q3RsU2htZW1DYWxsYmFja3MgPSB7CiAJLmluaXRfZm4gPSBT dHJhdGVneUN0bFNobWVtSW5pdCwKIH07CiAKLS8qCi0gKiBQcml2YXRlIChub24tc2hhcmVk KSBzdGF0ZSBmb3IgbWFuYWdpbmcgYSByaW5nIG9mIHNoYXJlZCBidWZmZXJzIHRvIHJlLXVz ZS4KLSAqIFRoaXMgaXMgY3VycmVudGx5IHRoZSBvbmx5IGtpbmQgb2YgQnVmZmVyQWNjZXNz U3RyYXRlZ3kgb2JqZWN0LCBidXQgc29tZWRheQotICogd2UgbWlnaHQgaGF2ZSBtb3JlIGtp bmRzLgotICovCi10eXBlZGVmIHN0cnVjdCBCdWZmZXJBY2Nlc3NTdHJhdGVneURhdGEKLXsK LQkvKiBPdmVyYWxsIHN0cmF0ZWd5IHR5cGUgKi8KLQlCdWZmZXJBY2Nlc3NTdHJhdGVneVR5 cGUgYnR5cGU7Ci0JLyogTnVtYmVyIG9mIGVsZW1lbnRzIGluIGJ1ZmZlcnNbXSBhcnJheSAq LwotCWludAkJCW5idWZmZXJzOwotCi0JLyoKLQkgKiBJbmRleCBvZiB0aGUgImN1cnJlbnQi IHNsb3QgaW4gdGhlIHJpbmcsIGllLCB0aGUgb25lIG1vc3QgcmVjZW50bHkKLQkgKiByZXR1 cm5lZCBieSBHZXRCdWZmZXJGcm9tUmluZy4KLQkgKi8KLQlpbnQJCQljdXJyZW50OwotCi0J LyoKLQkgKiBBcnJheSBvZiBidWZmZXIgbnVtYmVycy4gIEludmFsaWRCdWZmZXIgKHRoYXQg aXMsIHplcm8pIGluZGljYXRlcyB3ZQotCSAqIGhhdmUgbm90IHlldCBzZWxlY3RlZCBhIGJ1 ZmZlciBmb3IgdGhpcyByaW5nIHNsb3QuICBGb3IgYWxsb2NhdGlvbgotCSAqIHNpbXBsaWNp dHkgdGhpcyBpcyBwYWxsb2MnZCB0b2dldGhlciB3aXRoIHRoZSBmaXhlZCBmaWVsZHMgb2Yg dGhlCi0JICogc3RydWN0LgotCSAqLwotCUJ1ZmZlcgkJYnVmZmVyc1tGTEVYSUJMRV9BUlJB WV9NRU1CRVJdOwotfQkJCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5RGF0YTsKLQotCi0vKiBQcm90 b3R5cGVzIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMgKi8KLXN0YXRpYyBCdWZmZXJEZXNjICpH ZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKLQkJCQkJ CQkJCSB1aW50NjQgKmJ1Zl9zdGF0ZSk7Ci1zdGF0aWMgdm9pZCBBZGRCdWZmZXJUb1Jpbmco QnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCi0JCQkJCQkJQnVmZmVyRGVzYyAqYnVm KTsKLQogLyoKICAqIFBlci1iYWNrZW5kIHN0YXRlIGZvciB0aGUgYmF0Y2hlZCBjbG9jayBz d2VlcC4gIEVhY2ggYmFja2VuZCBjbGFpbXMgYSBydW4KICAqIG9mIGNvbnNlY3V0aXZlIGNs b2NrLWhhbmQgdmFsdWVzIHdpdGggYSBzaW5nbGUgYXRvbWljIGZldGNoLWFkZCBhbmQgdGhl bgpAQCAtMTU3LDggKzEyMyw4IEBAIENsb2NrU3dlZXBUaWNrKHZvaWQpCiAJCQkgKiBtdXN0 IGhvbGQgdGhlIHNwaW5sb2NrIHNvIFN0cmF0ZWd5U3luY1N0YXJ0KCkgY2FuIHJlYWQKIAkJ CSAqIG5leHRWaWN0aW1CdWZmZXIgYW5kIGNvbXBsZXRlUGFzc2VzIGNvbnNpc3RlbnRseS4K IAkJCSAqCi0JCQkgKiBXaXRoIGJhdGNoaW5nLCBtdWx0aXBsZSBiYWNrZW5kcyBtYXkgZWFj aCBsYW5kIGEgZmV0Y2gtYWRkCi0JCQkgKiB0aGF0IHJldHVybnMgYSB2YWx1ZSBwYXN0IE5C dWZmZXJzIGluIHRoZSBzYW1lIHBhc3MuICBBZnRlcgorCQkJICogV2l0aCBiYXRjaGluZywg bXVsdGlwbGUgYmFja2VuZHMgbWF5IGVhY2ggbGFuZCBhIGZldGNoLWFkZCB0aGF0CisJCQkg KiByZXR1cm5zIGEgdmFsdWUgcGFzdCBOQnVmZmVycyBpbiB0aGUgc2FtZSBwYXNzLiAgQWZ0 ZXIKIAkJCSAqIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgd2UgcmUtcmVhZCB0aGUgY291bnRl cjogaWYgYW5vdGhlcgogCQkJICogYmFja2VuZCBhbHJlYWR5IHdyYXBwZWQgaXQgYmVsb3cg TkJ1ZmZlcnMgd2UgYXJlIGRvbmUuCiAJCQkgKi8KQEAgLTIxNCw4ICsxODAsNiBAQCBDbG9j a1N3ZWVwVGljayh2b2lkKQogICoJR2V0VmljdGltQnVmZmVyKCkuIFRoZSBvbmx5IGhhcmQg cmVxdWlyZW1lbnQgR2V0VmljdGltQnVmZmVyKCkgaGFzIGlzIHRoYXQKICAqCXRoZSBzZWxl Y3RlZCBidWZmZXIgbXVzdCBub3QgY3VycmVudGx5IGJlIHBpbm5lZCBieSBhbnlvbmUuCiAg KgotICoJc3RyYXRlZ3kgaXMgYSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBvYmplY3QsIG9yIE5V TEwgZm9yIGRlZmF1bHQgc3RyYXRlZ3kuCi0gKgogICoJSXQgaXMgdGhlIGNhbGxlcnMgcmVz cG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBidWZmZXIgb3duZXJzaGlwIGNhbiBiZQogICoJ dHJhY2tlZCB2aWEgVHJhY2tOZXdCdWZmZXJQaW4oKS4KICAqCkBAIC0yMjMsMjkgKzE4Nywx MyBAQCBDbG9ja1N3ZWVwVGljayh2b2lkKQogICoJYmVmb3JlIHJldHVybmluZy4KICAqLwog QnVmZmVyRGVzYyAqCi1TdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcmluZykKK1N0cmF0ZWd5 R2V0QnVmZmVyKHVpbnQ2NCAqYnVmX3N0YXRlKQogewogCUJ1ZmZlckRlc2MgKmJ1ZjsKIAlp bnQJCQliZ3dwcm9jbm87CiAJaW50CQkJdHJ5Y291bnRlcjsKIAlib29sCQlmb3JjZV9jb29s OwogCi0JKmZyb21fcmluZyA9IGZhbHNlOwotCi0JLyoKLQkgKiBJZiBnaXZlbiBhIHN0cmF0 ZWd5IG9iamVjdCwgc2VlIHdoZXRoZXIgaXQgY2FuIHNlbGVjdCBhIGJ1ZmZlci4gV2UKLQkg KiBhc3N1bWUgc3RyYXRlZ3kgb2JqZWN0cyBkb24ndCBuZWVkIGJ1ZmZlcl9zdHJhdGVneV9s b2NrLgotCSAqLwotCWlmIChzdHJhdGVneSAhPSBOVUxMKQotCXsKLQkJYnVmID0gR2V0QnVm ZmVyRnJvbVJpbmcoc3RyYXRlZ3ksIGJ1Zl9zdGF0ZSk7Ci0JCWlmIChidWYgIT0gTlVMTCkK LQkJewotCQkJKmZyb21fcmluZyA9IHRydWU7Ci0JCQlyZXR1cm4gYnVmOwotCQl9Ci0JfQot CiAJLyoKIAkgKiBJZiBhc2tlZCwgd2UgbmVlZCB0byB3YWtlbiB0aGUgYmd3cml0ZXIuIFNp bmNlIHdlIGRvbid0IHdhbnQgdG8gcmVseSBvbgogCSAqIGEgc3BpbmxvY2sgZm9yIHRoaXMg d2UgZm9yY2UgYSByZWFkIGZyb20gc2hhcmVkIG1lbW9yeSBvbmNlLCBhbmQgdGhlbgpAQCAt Mjc0LDggKzIyMiw3IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAKIAkvKgogCSAq IFdlIGNvdW50IGJ1ZmZlciBhbGxvY2F0aW9uIHJlcXVlc3RzIHNvIHRoYXQgdGhlIGJnd3Jp dGVyIGNhbiBlc3RpbWF0ZQotCSAqIHRoZSByYXRlIG9mIGJ1ZmZlciBjb25zdW1wdGlvbi4g IE5vdGUgdGhhdCBidWZmZXJzIHJlY3ljbGVkIGJ5IGEKLQkgKiBzdHJhdGVneSBvYmplY3Qg YXJlIGludGVudGlvbmFsbHkgbm90IGNvdW50ZWQgaGVyZS4KKwkgKiB0aGUgcmF0ZSBvZiBi dWZmZXIgY29uc3VtcHRpb24uCiAJICovCiAJcGdfYXRvbWljX2ZldGNoX2FkZF91MzIoJlN0 cmF0ZWd5Q29udHJvbC0+bnVtQnVmZmVyQWxsb2NzLCAxKTsKIApAQCAtMzQ3LDcgKzI5NCw3 IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1 aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCQkJaWYgKCFmb3JjZV9jb29sKQog CQkJCXsKIAkJCQkJbm9fcHJvZ3Jlc3MgPSB0cnVlOwotCQkJCQlicmVhazsJCQkvKiBhZHZh bmNlIHRoZSBoYW5kLCBsb29rIGZvciBDT09MICovCisJCQkJCWJyZWFrOwkJLyogYWR2YW5j ZSB0aGUgaGFuZCwgbG9vayBmb3IgQ09PTCAqLwogCQkJCX0KIAogCQkJCWlmIChCVUZfU1RB VEVfR0VUX1JFRkJJVChsb2NhbF9idWZfc3RhdGUpKQpAQCAtMzg3LDggKzMzNCw2IEBAIFN0 cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQg KmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCQkJCQkJCQkJCQkgICBsb2NhbF9idWZfc3Rh dGUpKQogCQkJCXsKIAkJCQkJLyogRm91bmQgYSB1c2FibGUgYnVmZmVyICovCi0JCQkJCWlm IChzdHJhdGVneSAhPSBOVUxMKQotCQkJCQkJQWRkQnVmZmVyVG9SaW5nKHN0cmF0ZWd5LCBi dWYpOwogCQkJCQkqYnVmX3N0YXRlID0gbG9jYWxfYnVmX3N0YXRlOwogCiAJCQkJCVRyYWNr TmV3QnVmZmVyUGluKEJ1ZmZlckRlc2NyaXB0b3JHZXRCdWZmZXIoYnVmKSk7CkBAIC0zOTks MTEgKzM0NCwxMiBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCQl9CiAKIAkJLyoK LQkJICogQSB0aWNrIHRoYXQgbWFkZSBubyBwcm9ncmVzcyB0b3dhcmQgYSB2aWN0aW0gY291 bnRzIGRvd24gdHJ5Y291bnRlci4KLQkJICogQSBmdWxsIHVucHJvZHVjdGl2ZSBwYXNzIGVz Y2FsYXRlcyB0byBmb3JjZV9jb29sIChjb29sIEhPVCBidWZmZXJzCi0JCSAqIGludG8gdmlj dGltcyk7IGEgc2Vjb25kIHVucHJvZHVjdGl2ZSBmdWxsIHBhc3MgbWVhbnMgZXZlcnl0aGlu ZyBpcwotCQkgKiBwaW5uZWQsIHNvIGZhaWwgcmF0aGVyIHRoYW4gc3BpbiBmb3JldmVyLiAg KEEgZmFpbGVkIENBUyBhYm92ZSBpcwotCQkgKiBuZWl0aGVyIHByb2dyZXNzIG5vciBhIGZ1 bGwgbWlzczogd2Ugc2ltcGx5IHJldHJ5IHRoZSBzYW1lIGJ1ZmZlci4pCisJCSAqIEEgdGlj ayB0aGF0IG1hZGUgbm8gcHJvZ3Jlc3MgdG93YXJkIGEgdmljdGltIGNvdW50cyBkb3duCisJ CSAqIHRyeWNvdW50ZXIuIEEgZnVsbCB1bnByb2R1Y3RpdmUgcGFzcyBlc2NhbGF0ZXMgdG8g Zm9yY2VfY29vbCAoY29vbAorCQkgKiBIT1QgYnVmZmVycyBpbnRvIHZpY3RpbXMpOyBhIHNl Y29uZCB1bnByb2R1Y3RpdmUgZnVsbCBwYXNzIG1lYW5zCisJCSAqIGV2ZXJ5dGhpbmcgaXMg cGlubmVkLCBzbyBmYWlsIHJhdGhlciB0aGFuIHNwaW4gZm9yZXZlci4gIChBIGZhaWxlZAor CQkgKiBDQVMgYWJvdmUgaXMgbmVpdGhlciBwcm9ncmVzcyBub3IgYSBmdWxsIG1pc3M6IHdl IHNpbXBseSByZXRyeSB0aGUKKwkJICogc2FtZSBidWZmZXIuKQogCQkgKi8KIAkJaWYgKG5v X3Byb2dyZXNzICYmIC0tdHJ5Y291bnRlciA9PSAwKQogCQl7CkBAIC01MzEsMzYxICs0Nzcs MyBAQCBTdHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpCiAJZWxzZQogCQlTdHJhdGVn eUNvbnRyb2wtPmJhdGNoU2l6ZSA9IDE7CiB9Ci0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoJCQkJ QmFja2VuZC1wcml2YXRlIGJ1ZmZlciByaW5nIG1hbmFnZW1lbnQKLSAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSAqLwotCi0KLS8qCi0gKiBHZXRBY2Nlc3NTdHJhdGVneSAtLSBjcmVhdGUgYSBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBvYmplY3QKLSAqCi0gKiBUaGUgb2JqZWN0IGlzIGFsbG9jYXRlZCBp biB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KLSAqLwotQnVmZmVyQWNjZXNzU3RyYXRl Z3kKLUdldEFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZSBidHlwZSkK LXsKLQlpbnQJCQlyaW5nX3NpemVfa2I7Ci0KLQkvKgotCSAqIFNlbGVjdCByaW5nIHNpemUg dG8gdXNlLiAgU2VlIGJ1ZmZlci9SRUFETUUgZm9yIHJhdGlvbmFsZXMuCi0JICoKLQkgKiBO b3RlOiBpZiB5b3UgY2hhbmdlIHRoZSByaW5nIHNpemUgZm9yIEJBU19CVUxLUkVBRCwgc2Vl IGFsc28KLQkgKiBTWU5DX1NDQU5fUkVQT1JUX0lOVEVSVkFMIGluIGFjY2Vzcy9oZWFwL3N5 bmNzY2FuLmMuCi0JICovCi0Jc3dpdGNoIChidHlwZSkKLQl7Ci0JCWNhc2UgQkFTX05PUk1B TDoKLQkJCS8qIGlmIHNvbWVvbmUgYXNrcyBmb3IgTk9STUFMLCBqdXN0IGdpdmUgJ2VtIGEg ImRlZmF1bHQiIG9iamVjdCAqLwotCQkJcmV0dXJuIE5VTEw7Ci0KLQkJY2FzZSBCQVNfQlVM S1JFQUQ6Ci0JCQl7Ci0JCQkJaW50CQkJcmluZ19tYXhfa2I7Ci0KLQkJCQkvKgotCQkJCSAq IFRoZSByaW5nIGFsd2F5cyBuZWVkcyB0byBiZSBsYXJnZSBlbm91Z2ggdG8gYWxsb3cgc29t ZQotCQkJCSAqIHNlcGFyYXRpb24gaW4gdGltZSBiZXR3ZWVuIHByb3ZpZGluZyBhIGJ1ZmZl ciB0byB0aGUgdXNlcgotCQkJCSAqIG9mIHRoZSBzdHJhdGVneSBhbmQgdGhhdCBidWZmZXIg YmVpbmcgcmV1c2VkLiBPdGhlcndpc2UgdGhlCi0JCQkJICogdXNlcidzIHBpbiB3aWxsIHBy ZXZlbnQgcmV1c2Ugb2YgdGhlIGJ1ZmZlciwgZXZlbiB3aXRob3V0Ci0JCQkJICogY29uY3Vy cmVudCBhY3Rpdml0eS4KLQkJCQkgKgotCQkJCSAqIFdlIGFsc28gbmVlZCB0byBlbnN1cmUg dGhlIHJpbmcgYWx3YXlzIGlzIGxhcmdlIGVub3VnaCBmb3IKLQkJCQkgKiBTWU5DX1NDQU5f UkVQT1JUX0lOVEVSVkFMLCBhcyBub3RlZCBhYm92ZS4KLQkJCQkgKgotCQkJCSAqIFRodXMg d2Ugc3RhcnQgb3V0IGEgbWluaW1hbCBzaXplIGFuZCBpbmNyZWFzZSB0aGUgc2l6ZQotCQkJ CSAqIGZ1cnRoZXIgaWYgYXBwcm9wcmlhdGUuCi0JCQkJICovCi0JCQkJcmluZ19zaXplX2ti ID0gMjU2OwotCi0JCQkJLyoKLQkJCQkgKiBUaGVyZSdzIG5vIHBvaW50IGluIGEgbGFyZ2Vy IHJpbmcgaWYgd2Ugd29uJ3QgYmUgYWxsb3dlZCB0bwotCQkJCSAqIHBpbiBzdWZmaWNpZW50 bHkgbWFueSBidWZmZXJzLiAgQnV0IHdlIG5ldmVyIGxpbWl0IHRvIGxlc3MKLQkJCQkgKiB0 aGFuIHRoZSBtaW5pbWFsIHNpemUgYWJvdmUuCi0JCQkJICovCi0JCQkJcmluZ19tYXhfa2Ig PSBHZXRQaW5MaW1pdCgpICogKEJMQ0tTWiAvIDEwMjQpOwotCQkJCXJpbmdfbWF4X2tiID0g TWF4KHJpbmdfc2l6ZV9rYiwgcmluZ19tYXhfa2IpOwotCi0JCQkJLyoKLQkJCQkgKiBXZSB3 b3VsZCBsaWtlIHRoZSByaW5nIHRvIGFkZGl0aW9uYWxseSBoYXZlIHNwYWNlIGZvciB0aGUK LQkJCQkgKiBjb25maWd1cmVkIGRlZ3JlZSBvZiBJTyBjb25jdXJyZW5jeS4gV2hpbGUgYmVp bmcgcmVhZCBpbiwKLQkJCQkgKiBidWZmZXJzIGNhbiBvYnZpb3VzbHkgbm90IHlldCBiZSBy ZXVzZWQuCi0JCQkJICoKLQkJCQkgKiBFYWNoIElPIGNhbiBiZSB1cCB0byBpb19jb21iaW5l X2xpbWl0IGJsb2NrcyBsYXJnZSwgYW5kIHdlCi0JCQkJICogd2FudCB0byBzdGFydCB1cCB0 byBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kgSU9zLgotCQkJCSAqCi0JCQkJICogTm90ZSB0 aGF0IGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSBtYXkgYmUgMCwgd2hpY2ggZGlzYWJsZXMK LQkJCQkgKiBBSU8uCi0JCQkJICovCi0JCQkJcmluZ19zaXplX2tiICs9IChCTENLU1ogLyAx MDI0KSAqCi0JCQkJCWlvX2NvbWJpbmVfbGltaXQgKiBlZmZlY3RpdmVfaW9fY29uY3VycmVu Y3k7Ci0KLQkJCQlpZiAocmluZ19zaXplX2tiID4gcmluZ19tYXhfa2IpCi0JCQkJCXJpbmdf c2l6ZV9rYiA9IHJpbmdfbWF4X2tiOwotCQkJCWJyZWFrOwotCQkJfQotCQljYXNlIEJBU19C VUxLV1JJVEU6Ci0JCQlyaW5nX3NpemVfa2IgPSAxNiAqIDEwMjQ7Ci0JCQlicmVhazsKLQkJ Y2FzZSBCQVNfVkFDVVVNOgotCQkJcmluZ19zaXplX2tiID0gMjA0ODsKLQkJCWJyZWFrOwot Ci0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGJ1ZmZlciBhY2Nl c3Mgc3RyYXRlZ3k6ICVkIiwKLQkJCQkgKGludCkgYnR5cGUpOwotCQkJcmV0dXJuIE5VTEw7 CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JfQotCi0JcmV0dXJuIEdldEFjY2Vzc1N0 cmF0ZWd5V2l0aFNpemUoYnR5cGUsIHJpbmdfc2l6ZV9rYik7Ci19Ci0KLS8qCi0gKiBHZXRB Y2Nlc3NTdHJhdGVneVdpdGhTaXplIC0tIGNyZWF0ZSBhIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IG9iamVjdCB3aXRoIGEKLSAqCQludW1iZXIgb2YgYnVmZmVycyBlcXVpdmFsZW50IHRvIHRo ZSBwYXNzZWQgaW4gc2l6ZS4KLSAqCi0gKiBJZiB0aGUgZ2l2ZW4gcmluZyBzaXplIGlzIDAs IG5vIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHdpbGwgYmUgY3JlYXRlZCBhbmQKLSAqIHRoZSBm dW5jdGlvbiB3aWxsIHJldHVybiBOVUxMLiAgcmluZ19zaXplX2tiIG11c3Qgbm90IGJlIG5l Z2F0aXZlLgotICovCi1CdWZmZXJBY2Nlc3NTdHJhdGVneQotR2V0QWNjZXNzU3RyYXRlZ3lX aXRoU2l6ZShCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUgYnR5cGUsIGludCByaW5nX3NpemVf a2IpCi17Ci0JaW50CQkJcmluZ19idWZmZXJzOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5OwotCi0JQXNzZXJ0KHJpbmdfc2l6ZV9rYiA+PSAwKTsKLQotCS8qIEZpZ3VyZSBv dXQgaG93IG1hbnkgYnVmZmVycyByaW5nX3NpemVfa2IgaXMgKi8KLQlyaW5nX2J1ZmZlcnMg PSByaW5nX3NpemVfa2IgLyAoQkxDS1NaIC8gMTAyNCk7Ci0KLQkvKiAwIG1lYW5zIHVubGlt aXRlZCwgc28gbm8gQnVmZmVyQWNjZXNzU3RyYXRlZ3kgcmVxdWlyZWQgKi8KLQlpZiAocmlu Z19idWZmZXJzID09IDApCi0JCXJldHVybiBOVUxMOwotCi0JLyogQ2FwIHRvIDEvOHRoIG9m IHNoYXJlZF9idWZmZXJzICovCi0JcmluZ19idWZmZXJzID0gTWluKE5CdWZmZXJzIC8gOCwg cmluZ19idWZmZXJzKTsKLQotCS8qIE5CdWZmZXJzIHNob3VsZCBuZXZlciBiZSBsZXNzIHRo YW4gMTYsIHNvIHRoaXMgc2hvdWxkbid0IGhhcHBlbiAqLwotCUFzc2VydChyaW5nX2J1ZmZl cnMgPiAwKTsKLQotCS8qIEFsbG9jYXRlIHRoZSBvYmplY3QgYW5kIGluaXRpYWxpemUgYWxs IGVsZW1lbnRzIHRvIHplcm9lcyAqLwotCXN0cmF0ZWd5ID0gKEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5KQotCQlwYWxsb2MwKG9mZnNldG9mKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5RGF0YSwgYnVm ZmVycykgKwotCQkJCXJpbmdfYnVmZmVycyAqIHNpemVvZihCdWZmZXIpKTsKLQotCS8qIFNl dCBmaWVsZHMgdGhhdCBkb24ndCBzdGFydCBvdXQgemVybyAqLwotCXN0cmF0ZWd5LT5idHlw ZSA9IGJ0eXBlOwotCXN0cmF0ZWd5LT5uYnVmZmVycyA9IHJpbmdfYnVmZmVyczsKLQotCXJl dHVybiBzdHJhdGVneTsKLX0KLQotLyoKLSAqIEdldEFjY2Vzc1N0cmF0ZWd5QnVmZmVyQ291 bnQgLS0gYW4gYWNjZXNzb3IgZm9yIHRoZSBudW1iZXIgb2YgYnVmZmVycyBpbgotICoJCXRo ZSByaW5nCi0gKgotICogUmV0dXJucyAwIG9uIE5VTEwgaW5wdXQgdG8gbWF0Y2ggYmVoYXZp b3Igb2YgR2V0QWNjZXNzU3RyYXRlZ3lXaXRoU2l6ZSgpCi0gKiByZXR1cm5pbmcgTlVMTCB3 aXRoIDAgc2l6ZS4KLSAqLwotaW50Ci1HZXRBY2Nlc3NTdHJhdGVneUJ1ZmZlckNvdW50KEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQotewotCWlmIChzdHJhdGVneSA9PSBOVUxM KQotCQlyZXR1cm4gMDsKLQotCXJldHVybiBzdHJhdGVneS0+bmJ1ZmZlcnM7Ci19Ci0KLS8q Ci0gKiBHZXRBY2Nlc3NTdHJhdGVneVBpbkxpbWl0IC0tIGdldCBjYXAgb2YgbnVtYmVyIG9m IGJ1ZmZlcnMgdGhhdCBzaG91bGQgYmUgcGlubmVkCi0gKgotICogV2hlbiBwaW5uaW5nIGV4 dHJhIGJ1ZmZlcnMgdG8gbG9vayBhaGVhZCwgdXNlcnMgb2YgYSByaW5nLWJhc2VkIHN0cmF0 ZWd5IGFyZQotICogaW4gZGFuZ2VyIG9mIHBpbm5pbmcgdG9vIG11Y2ggb2YgdGhlIHJpbmcg YXQgb25jZSB3aGlsZSBwZXJmb3JtaW5nIGxvb2stYWhlYWQuCi0gKiBGb3Igc29tZSBzdHJh dGVnaWVzLCB0aGF0IG1lYW5zICJlc2NhcGluZyIgZnJvbSB0aGUgcmluZywgYW5kIGluIG90 aGVycyBpdAotICogbWVhbnMgZm9yY2luZyBkaXJ0eSBkYXRhIHRvIGRpc2sgdmVyeSBmcmVx dWVudGx5IHdpdGggYXNzb2NpYXRlZCBXQUwKLSAqIGZsdXNoaW5nLiAgU2luY2UgZXh0ZXJu YWwgY29kZSBoYXMgbm8gaW5zaWdodCBpbnRvIGFueSBvZiB0aGF0LCBhbGxvdwotICogaW5k aXZpZHVhbCBzdHJhdGVneSB0eXBlcyB0byBleHBvc2UgYSBjbGFtcCB0aGF0IHNob3VsZCBi ZSBhcHBsaWVkIHdoZW4KLSAqIGRlY2lkaW5nIG9uIGEgbWF4aW11bSBudW1iZXIgb2YgYnVm ZmVycyB0byBwaW4gYXQgb25jZS4KLSAqCi0gKiBDYWxsZXJzIHNob3VsZCBjb21iaW5lIHRo aXMgbnVtYmVyIHdpdGggb3RoZXIgcmVsZXZhbnQgbGltaXRzIGFuZCB0YWtlIHRoZQotICog bWluaW11bS4KLSAqLwotaW50Ci1HZXRBY2Nlc3NTdHJhdGVneVBpbkxpbWl0KEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KQotewotCWlmIChzdHJhdGVneSA9PSBOVUxMKQotCQly ZXR1cm4gTkJ1ZmZlcnM7Ci0KLQlzd2l0Y2ggKHN0cmF0ZWd5LT5idHlwZSkKLQl7Ci0JCWNh c2UgQkFTX0JVTEtSRUFEOgotCi0JCQkvKgotCQkJICogU2luY2UgQkFTX0JVTEtSRUFEIHVz ZXMgU3RyYXRlZ3lSZWplY3RCdWZmZXIoKSwgZGlydHkgYnVmZmVycwotCQkJICogc2hvdWxk bid0IGJlIGEgcHJvYmxlbSBhbmQgdGhlIGNhbGxlciBpcyBmcmVlIHRvIHBpbiB1cCB0byB0 aGUKLQkJCSAqIGVudGlyZSByaW5nIGF0IG9uY2UuCi0JCQkgKi8KLQkJCXJldHVybiBzdHJh dGVneS0+bmJ1ZmZlcnM7Ci0KLQkJZGVmYXVsdDoKLQotCQkJLyoKLQkJCSAqIFRlbGwgY2Fs bGVyIG5vdCB0byBwaW4gbW9yZSB0aGFuIGhhbGYgdGhlIGJ1ZmZlcnMgaW4gdGhlIHJpbmcu Ci0JCQkgKiBUaGlzIGlzIGEgdHJhZGUtb2ZmIGJldHdlZW4gbG9vayBhaGVhZCBkaXN0YW5j ZSBhbmQgZGVmZXJyaW5nCi0JCQkgKiB3cml0ZWJhY2sgYW5kIGFzc29jaWF0ZWQgV0FMIHRy YWZmaWMuCi0JCQkgKi8KLQkJCXJldHVybiBzdHJhdGVneS0+bmJ1ZmZlcnMgLyAyOwotCX0K LX0KLQotLyoKLSAqIEZyZWVBY2Nlc3NTdHJhdGVneSAtLSByZWxlYXNlIGEgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgb2JqZWN0Ci0gKgotICogQSBzaW1wbGUgcGZyZWUgd291bGQgZG8gYXQg dGhlIG1vbWVudCwgYnV0IHdlIHdvdWxkIHByZWZlciB0aGF0IGNhbGxlcnMKLSAqIGRvbid0 IGFzc3VtZSB0aGF0IG11Y2ggYWJvdXQgdGhlIHJlcHJlc2VudGF0aW9uIG9mIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5LgotICovCi12b2lkCi1GcmVlQWNjZXNzU3RyYXRlZ3koQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpCi17Ci0JLyogZG9uJ3QgY3Jhc2ggaWYgY2FsbGVkIG9u IGEgImRlZmF1bHQiIHN0cmF0ZWd5ICovCi0JaWYgKHN0cmF0ZWd5ICE9IE5VTEwpCi0JCXBm cmVlKHN0cmF0ZWd5KTsKLX0KLQotLyoKLSAqIEdldEJ1ZmZlckZyb21SaW5nIC0tIHJldHVy bnMgYSBidWZmZXIgZnJvbSB0aGUgcmluZywgb3IgTlVMTCBpZiB0aGUKLSAqCQlyaW5nIGlz IGVtcHR5IC8gbm90IHVzYWJsZS4KLSAqCi0gKiBUaGUgYnVmZmVyIGlzIHBpbm5lZCBhbmQg bWFya2VkIGFzIG93bmVkLCB1c2luZyBUcmFja05ld0J1ZmZlclBpbigpLCBiZWZvcmUKLSAq IHJldHVybmluZy4KLSAqLwotc3RhdGljIEJ1ZmZlckRlc2MgKgotR2V0QnVmZmVyRnJvbVJp bmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlKQot ewotCUJ1ZmZlckRlc2MgKmJ1ZjsKLQlCdWZmZXIJCWJ1Zm51bTsKLQl1aW50NjQJCW9sZF9i dWZfc3RhdGU7Ci0JdWludDY0CQlsb2NhbF9idWZfc3RhdGU7CS8qIHRvIGF2b2lkIHJlcGVh dGVkIChkZS0pcmVmZXJlbmNpbmcgKi8KLQotCi0JLyogQWR2YW5jZSB0byBuZXh0IHJpbmcg c2xvdCAqLwotCWlmICgrK3N0cmF0ZWd5LT5jdXJyZW50ID49IHN0cmF0ZWd5LT5uYnVmZmVy cykKLQkJc3RyYXRlZ3ktPmN1cnJlbnQgPSAwOwotCi0JLyoKLQkgKiBJZiB0aGUgc2xvdCBo YXNuJ3QgYmVlbiBmaWxsZWQgeWV0LCB0ZWxsIHRoZSBjYWxsZXIgdG8gYWxsb2NhdGUgYSBu ZXcKLQkgKiBidWZmZXIgd2l0aCB0aGUgbm9ybWFsIGFsbG9jYXRpb24gc3RyYXRlZ3kuICBI ZSB3aWxsIHRoZW4gZmlsbCB0aGlzCi0JICogc2xvdCBieSBjYWxsaW5nIEFkZEJ1ZmZlclRv UmluZyB3aXRoIHRoZSBuZXcgYnVmZmVyLgotCSAqLwotCWJ1Zm51bSA9IHN0cmF0ZWd5LT5i dWZmZXJzW3N0cmF0ZWd5LT5jdXJyZW50XTsKLQlpZiAoYnVmbnVtID09IEludmFsaWRCdWZm ZXIpCi0JCXJldHVybiBOVUxMOwotCi0JYnVmID0gR2V0QnVmZmVyRGVzY3JpcHRvcihidWZu dW0gLSAxKTsKLQotCS8qCi0JICogQ2hlY2sgd2hldGhlciB0aGUgYnVmZmVyIGNhbiBiZSB1 c2VkIGFuZCBwaW4gaXQgaWYgc28uIERvIHRoaXMgdXNpbmcgYQotCSAqIENBUyBsb29wLCB0 byBhdm9pZCBoYXZpbmcgdG8gbG9jayB0aGUgYnVmZmVyIGhlYWRlci4KLQkgKi8KLQlvbGRf YnVmX3N0YXRlID0gcGdfYXRvbWljX3JlYWRfdTY0KCZidWYtPnN0YXRlKTsKLQlmb3IgKDs7 KQotCXsKLQkJbG9jYWxfYnVmX3N0YXRlID0gb2xkX2J1Zl9zdGF0ZTsKLQotCQkvKgotCQkg KiBJZiB0aGUgYnVmZmVyIGlzIHBpbm5lZCB3ZSBjYW5ub3QgdXNlIGl0IHVuZGVyIGFueSBj aXJjdW1zdGFuY2VzLgotCQkgKgotCQkgKiBXaXRoIHRoZSBjb29saW5nLXN0YXRlIHJlcGxh Y2VtZW50IHRoZSBmaWVsZCBob2xkcyBvbmx5IENPT0wgb3IgSE9ULAotCQkgKiBzbyB0aGUg c3RvY2sgInVzYWdlX2NvdW50ID4gMSBtZWFucyBhbm90aGVyIGJhY2tlbmQgdG91Y2hlZCBp dCIKLQkJICogaGV1cmlzdGljIG5vIGxvbmdlciBhcHBsaWVzOiBhIHJpbmcgZWxlbWVudCBp cyByZXVzYWJsZSB3aGVuZXZlciBpdAotCQkgKiBpcyB1bnBpbm5lZC4gIChUaGUgd2hvbGUg cmluZyBtZWNoYW5pc20gaXMgcmVtb3ZlZCBpbiBhIGxhdGVyIHBhdGNoOwotCQkgKiBzY2Fu IHJlc2lzdGFuY2UgaXMgbm93IGludHJpbnNpYyB0byB0aGUgc3dlZXAuKQotCQkgKi8KLQkJ aWYgKEJVRl9TVEFURV9HRVRfUkVGQ09VTlQobG9jYWxfYnVmX3N0YXRlKSAhPSAwKQotCQkJ YnJlYWs7Ci0KLQkJLyogU2VlIGVxdWl2YWxlbnQgY29kZSBpbiBQaW5CdWZmZXIoKSAqLwot CQlpZiAodW5saWtlbHkobG9jYWxfYnVmX3N0YXRlICYgQk1fTE9DS0VEKSkKLQkJewotCQkJ b2xkX2J1Zl9zdGF0ZSA9IFdhaXRCdWZIZHJVbmxvY2tlZChidWYpOwotCQkJY29udGludWU7 Ci0JCX0KLQotCQkvKiBwaW4gdGhlIGJ1ZmZlciBpZiB0aGUgQ0FTIHN1Y2NlZWRzICovCi0J CWxvY2FsX2J1Zl9zdGF0ZSArPSBCVUZfUkVGQ09VTlRfT05FOwotCi0JCWlmIChwZ19hdG9t aWNfY29tcGFyZV9leGNoYW5nZV91NjQoJmJ1Zi0+c3RhdGUsICZvbGRfYnVmX3N0YXRlLAot CQkJCQkJCQkJCSAgIGxvY2FsX2J1Zl9zdGF0ZSkpCi0JCXsKLQkJCSpidWZfc3RhdGUgPSBs b2NhbF9idWZfc3RhdGU7Ci0KLQkJCVRyYWNrTmV3QnVmZmVyUGluKEJ1ZmZlckRlc2NyaXB0 b3JHZXRCdWZmZXIoYnVmKSk7Ci0JCQlyZXR1cm4gYnVmOwotCQl9Ci0JfQotCi0JLyoKLQkg KiBUZWxsIGNhbGxlciB0byBhbGxvY2F0ZSBhIG5ldyBidWZmZXIgd2l0aCB0aGUgbm9ybWFs IGFsbG9jYXRpb24KLQkgKiBzdHJhdGVneS4gIEhlJ2xsIHRoZW4gcmVwbGFjZSB0aGlzIHJp bmcgZWxlbWVudCB2aWEgQWRkQnVmZmVyVG9SaW5nLgotCSAqLwotCXJldHVybiBOVUxMOwot fQotCi0vKgotICogQWRkQnVmZmVyVG9SaW5nIC0tIGFkZCBhIGJ1ZmZlciB0byB0aGUgYnVm ZmVyIHJpbmcKLSAqCi0gKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBidWZmZXIgaGVhZGVyIHNw aW5sb2NrIG9uIHRoZSBidWZmZXIuICBTaW5jZSB0aGlzCi0gKiBpcyBjYWxsZWQgd2l0aCB0 aGUgc3BpbmxvY2sgaGVsZCwgaXQgaGFkIGJldHRlciBiZSBxdWl0ZSBjaGVhcC4KLSAqLwot c3RhdGljIHZvaWQKLUFkZEJ1ZmZlclRvUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJh dGVneSwgQnVmZmVyRGVzYyAqYnVmKQotewotCXN0cmF0ZWd5LT5idWZmZXJzW3N0cmF0ZWd5 LT5jdXJyZW50XSA9IEJ1ZmZlckRlc2NyaXB0b3JHZXRCdWZmZXIoYnVmKTsKLX0KLQotLyoK LSAqIFV0aWxpdHkgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBJT0NvbnRleHQgb2YgYSBnaXZl biBCdWZmZXJBY2Nlc3NTdHJhdGVneSdzCi0gKiBzdHJhdGVneSByaW5nLgotICovCi1JT0Nv bnRleHQKLUlPQ29udGV4dEZvclN0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5KQotewotCWlmICghc3RyYXRlZ3kpCi0JCXJldHVybiBJT0NPTlRFWFRfTk9STUFMOwot Ci0Jc3dpdGNoIChzdHJhdGVneS0+YnR5cGUpCi0JewotCQljYXNlIEJBU19OT1JNQUw6Ci0K LQkJCS8qCi0JCQkgKiBDdXJyZW50bHksIEdldEFjY2Vzc1N0cmF0ZWd5KCkgcmV0dXJucyBO VUxMIGZvcgotCQkJICogQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlIEJBU19OT1JNQUwsIHNv IHRoaXMgY2FzZSBpcwotCQkJICogdW5yZWFjaGFibGUuCi0JCQkgKi8KLQkJCXBnX3VucmVh Y2hhYmxlKCk7Ci0JCQlyZXR1cm4gSU9DT05URVhUX05PUk1BTDsKLQkJY2FzZSBCQVNfQlVM S1JFQUQ6Ci0JCQlyZXR1cm4gSU9DT05URVhUX0JVTEtSRUFEOwotCQljYXNlIEJBU19CVUxL V1JJVEU6Ci0JCQlyZXR1cm4gSU9DT05URVhUX0JVTEtXUklURTsKLQkJY2FzZSBCQVNfVkFD VVVNOgotCQkJcmV0dXJuIElPQ09OVEVYVF9WQUNVVU07Ci0JfQotCi0JZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGU6ICVkIiwgc3RyYXRlZ3kt PmJ0eXBlKTsKLQlwZ191bnJlYWNoYWJsZSgpOwotfQotCi0vKgotICogU3RyYXRlZ3lSZWpl Y3RCdWZmZXIgLS0gY29uc2lkZXIgcmVqZWN0aW5nIGEgZGlydHkgYnVmZmVyCi0gKgotICog V2hlbiBhIG5vbmRlZmF1bHQgc3RyYXRlZ3kgaXMgdXNlZCwgdGhlIGJ1ZmZlciBtYW5hZ2Vy IGNhbGxzIHRoaXMgZnVuY3Rpb24KLSAqIHdoZW4gaXQgdHVybnMgb3V0IHRoYXQgdGhlIGJ1 ZmZlciBzZWxlY3RlZCBieSBTdHJhdGVneUdldEJ1ZmZlciBuZWVkcyB0bwotICogYmUgd3Jp dHRlbiBvdXQgYW5kIGRvaW5nIHNvIHdvdWxkIHJlcXVpcmUgZmx1c2hpbmcgV0FMIHRvby4g IFRoaXMgZ2l2ZXMgdXMKLSAqIGEgY2hhbmNlIHRvIGNob29zZSBhIGRpZmZlcmVudCB2aWN0 aW0uCi0gKgotICogUmV0dXJucyB0cnVlIGlmIGJ1ZmZlciBtYW5hZ2VyIHNob3VsZCBhc2sg Zm9yIGEgbmV3IHZpY3RpbSwgYW5kIGZhbHNlCi0gKiBpZiB0aGlzIGJ1ZmZlciBzaG91bGQg YmUgd3JpdHRlbiBhbmQgcmUtdXNlZC4KLSAqLwotYm9vbAotU3RyYXRlZ3lSZWplY3RCdWZm ZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIEJ1ZmZlckRlc2MgKmJ1ZiwgYm9v bCBmcm9tX3JpbmcpCi17Ci0JLyogV2Ugb25seSBkbyB0aGlzIGluIGJ1bGtyZWFkIG1vZGUg Ki8KLQlpZiAoc3RyYXRlZ3ktPmJ0eXBlICE9IEJBU19CVUxLUkVBRCkKLQkJcmV0dXJuIGZh bHNlOwotCi0JLyogRG9uJ3QgbXVjayB3aXRoIGJlaGF2aW9yIG9mIG5vcm1hbCBidWZmZXIt cmVwbGFjZW1lbnQgc3RyYXRlZ3kgKi8KLQlpZiAoIWZyb21fcmluZyB8fAotCQlzdHJhdGVn eS0+YnVmZmVyc1tzdHJhdGVneS0+Y3VycmVudF0gIT0gQnVmZmVyRGVzY3JpcHRvckdldEJ1 ZmZlcihidWYpKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKgotCSAqIFJlbW92ZSB0aGUgZGly dHkgYnVmZmVyIGZyb20gdGhlIHJpbmc7IG5lY2Vzc2FyeSB0byBwcmV2ZW50IGluZmluaXRl Ci0JICogbG9vcCBpZiBhbGwgcmluZyBtZW1iZXJzIGFyZSBkaXJ0eS4KLQkgKi8KLQlzdHJh dGVneS0+YnVmZmVyc1tzdHJhdGVneS0+Y3VycmVudF0gPSBJbnZhbGlkQnVmZmVyOwotCi0J cmV0dXJuIHRydWU7Ci19CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZyZWVz cGFjZS9mcmVlc3BhY2UuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZnJlZXNwYWNlL2ZyZWVz cGFjZS5jCmluZGV4IDAwNmVkYWI5ZDc3Li4yOWNiMmQ3MGY2NiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9mcmVlc3BhY2UvZnJlZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9mcmVlc3BhY2UvZnJlZXNwYWNlLmMKQEAgLTYwMyw3ICs2MDMsNyBAQCBm c21fcmVhZGJ1ZihSZWxhdGlvbiByZWwsIEZTTUFkZHJlc3MgYWRkciwgYm9vbCBleHRlbmQp CiAJCQlyZXR1cm4gSW52YWxpZEJ1ZmZlcjsKIAl9CiAJZWxzZQotCQlidWYgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQocmVsLCBGU01fRk9SS05VTSwgYmxrbm8sIFJCTV9aRVJPX09OX0VSUk9S LCBOVUxMKTsKKwkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgRlNNX0ZPUktOVU0s IGJsa25vLCBSQk1fWkVST19PTl9FUlJPUik7CiAKIAkvKgogCSAqIEluaXRpYWxpemluZyB0 aGUgcGFnZSB3aGVuIG5lZWRlZCBpcyB0cmlja2llciB0aGFuIGl0IGxvb2tzLCBiZWNhdXNl IG9mCkBAIC02MzgsNyArNjM4LDcgQEAgZnNtX3JlYWRidWYoUmVsYXRpb24gcmVsLCBGU01B ZGRyZXNzIGFkZHIsIGJvb2wgZXh0ZW5kKQogc3RhdGljIEJ1ZmZlcgogZnNtX2V4dGVuZChS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGZzbV9uYmxvY2tzKQogewotCXJldHVybiBFeHRl bmRCdWZmZXJlZFJlbFRvKEJNUl9SRUwocmVsKSwgRlNNX0ZPUktOVU0sIE5VTEwsCisJcmV0 dXJuIEV4dGVuZEJ1ZmZlcmVkUmVsVG8oQk1SX1JFTChyZWwpLCBGU01fRk9SS05VTSwKIAkJ CQkJCQkgICBFQl9DUkVBVEVfRk9SS19JRl9ORUVERUQgfAogCQkJCQkJCSAgIEVCX0NMRUFS X1NJWkVfQ0FDSEUsCiAJCQkJCQkJICAgZnNtX25ibG9ja3MsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL3NtZ3IvbWQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9t ZC5jCmluZGV4IDcxOGMxY2ZjMGY5Li4zYzNlMzVhYjhhOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zbWdyL21kLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdy L21kLmMKQEAgLTE1NDAsMTUgKzE1NDAsOCBAQCByZWdpc3Rlcl9kaXJ0eV9zZWdtZW50KFNN Z3JSZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtudW0sIE1kZmRWZWMgKnNlZykKIAkJ CQkJCQlGaWxlUGF0aE5hbWUoc2VnLT5tZGZkX3ZmZCkpKSk7CiAKIAkJLyoKLQkJICogV2Ug aGF2ZSBubyB3YXkgb2Yga25vd2luZyBpZiB0aGUgY3VycmVudCBJT0NvbnRleHQgaXMKLQkJ ICogSU9DT05URVhUX05PUk1BTCBvciBJT0NPTlRFWFRfW0JVTEtSRUFELCBCVUxLV1JJVEUs IFZBQ1VVTV0gYXQgdGhpcwotCQkgKiBwb2ludCwgc28gY291bnQgdGhlIGZzeW5jIGFzIGJl aW5nIGluIHRoZSBJT0NPTlRFWFRfTk9STUFMCi0JCSAqIElPQ29udGV4dC4gVGhpcyBpcyBw cm9iYWJseSBva2F5LCBiZWNhdXNlIHRoZSBudW1iZXIgb2YgYmFja2VuZAotCQkgKiBmc3lu Y3MgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgdGhlIGVmZmljYWN5IG9mIHRoZQotCQkg KiBCdWZmZXJBY2Nlc3NTdHJhdGVneS4gQW5kIGNvdW50aW5nIGJvdGggZnN5bmNzIGRvbmUg aW4KLQkJICogSU9DT05URVhUX05PUk1BTCBhbmQgSU9DT05URVhUX1tCVUxLUkVBRCwgQlVM S1dSSVRFLCBWQUNVVU1dIHVuZGVyCi0JCSAqIElPQ09OVEVYVF9OT1JNQUwgaXMgbGlrZWx5 IGNsZWFyZXIgd2hlbiBpbnZlc3RpZ2F0aW5nIHRoZSBudW1iZXIgb2YKLQkJICogYmFja2Vu ZCBmc3luY3MuCisJCSAqIENvdW50IHRoZSBmc3luYyBpbiB0aGUgSU9DT05URVhUX05PUk1B TCBJT0NvbnRleHQsIHRoZSBvbmx5CisJCSAqIElPQ29udGV4dCByZWxhdGlvbnMgYXJlIHJl YWQvd3JpdHRlbiB1bmRlci4KIAkJICovCiAJCXBnc3RhdF9jb3VudF9pb19vcF90aW1lKElP T0JKRUNUX1JFTEFUSU9OLCBJT0NPTlRFWFRfTk9STUFMLAogCQkJCQkJCQlJT09QX0ZTWU5D LCBpb19zdGFydCwgMSwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9p by5jCmluZGV4IDM4YmFlN2IxNWQyLi5kNjZhMjM3NDlkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKQEAgLTI0MSwxNiArMjQxLDEwIEBAIHBnc3RhdF9n ZXRfaW9fY29udGV4dF9uYW1lKElPQ29udGV4dCBpb19jb250ZXh0KQogewogCXN3aXRjaCAo aW9fY29udGV4dCkKIAl7Ci0JCWNhc2UgSU9DT05URVhUX0JVTEtSRUFEOgotCQkJcmV0dXJu ICJidWxrcmVhZCI7Ci0JCWNhc2UgSU9DT05URVhUX0JVTEtXUklURToKLQkJCXJldHVybiAi YnVsa3dyaXRlIjsKIAkJY2FzZSBJT0NPTlRFWFRfSU5JVDoKIAkJCXJldHVybiAiaW5pdCI7 CiAJCWNhc2UgSU9DT05URVhUX05PUk1BTDoKIAkJCXJldHVybiAibm9ybWFsIjsKLQkJY2Fz ZSBJT0NPTlRFWFRfVkFDVVVNOgotCQkJcmV0dXJuICJ2YWN1dW0iOwogCX0KIAogCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgSU9Db250ZXh0IHZhbHVlOiAlZCIsIGlvX2NvbnRleHQp OwpAQCAtNDUxLDE4ICs0NDUsNiBAQCBwZ3N0YXRfdHJhY2tzX2lvX29iamVjdChCYWNrZW5k VHlwZSBia3R5cGUsIElPT2JqZWN0IGlvX29iamVjdCwKIAkgKiBJT0NvbnRleHRzLCBhbmQs IHdoaWxlIGl0IG1heSBub3QgYmUgaW5oZXJlbnRseSBpbmNvcnJlY3QgZm9yIHRoZW0gdG8K IAkgKiBkbyBzbywgZXhjbHVkaW5nIHRob3NlIHJvd3MgZnJvbSB0aGUgdmlldyBtYWtlcyB0 aGUgdmlldyBlYXNpZXIgdG8gdXNlLgogCSAqLwotCWlmICgoYmt0eXBlID09IEJfQ0hFQ0tQ T0lOVEVSIHx8IGJrdHlwZSA9PSBCX0JHX1dSSVRFUikgJiYKLQkJKGlvX2NvbnRleHQgPT0g SU9DT05URVhUX0JVTEtSRUFEIHx8Ci0JCSBpb19jb250ZXh0ID09IElPQ09OVEVYVF9CVUxL V1JJVEUgfHwKLQkJIGlvX2NvbnRleHQgPT0gSU9DT05URVhUX1ZBQ1VVTSkpCi0JCXJldHVy biBmYWxzZTsKLQotCWlmIChia3R5cGUgPT0gQl9BVVRPVkFDX0xBVU5DSEVSICYmIGlvX2Nv bnRleHQgPT0gSU9DT05URVhUX1ZBQ1VVTSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKChi a3R5cGUgPT0gQl9BVVRPVkFDX1dPUktFUiB8fCBia3R5cGUgPT0gQl9BVVRPVkFDX0xBVU5D SEVSKSAmJgotCQlpb19jb250ZXh0ID09IElPQ09OVEVYVF9CVUxLV1JJVEUpCi0JCXJldHVy biBmYWxzZTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtNDc5LDggKzQ2MSw2IEBAIGJvb2wK IHBnc3RhdF90cmFja3NfaW9fb3AoQmFja2VuZFR5cGUgYmt0eXBlLCBJT09iamVjdCBpb19v YmplY3QsCiAJCQkJCUlPQ29udGV4dCBpb19jb250ZXh0LCBJT09wIGlvX29wKQogewotCWJv b2wJCXN0cmF0ZWd5X2lvX2NvbnRleHQ7Ci0KIAkvKiBpZiAoaW9fY29udGV4dCwgaW9fb2Jq ZWN0KSB3aWxsIG5ldmVyIGNvbGxlY3Qgc3RhdHMsIHdlJ3JlIGRvbmUgKi8KIAlpZiAoIXBn c3RhdF90cmFja3NfaW9fb2JqZWN0KGJrdHlwZSwgaW9fb2JqZWN0LCBpb19jb250ZXh0KSkK IAkJcmV0dXJuIGZhbHNlOwpAQCAtNTIxLDE3ICs1MDEsMTMgQEAgcGdzdGF0X3RyYWNrc19p b19vcChCYWNrZW5kVHlwZSBia3R5cGUsIElPT2JqZWN0IGlvX29iamVjdCwKIAkvKgogCSAq IFNvbWUgSU9PcHMgYXJlIG5vdCB2YWxpZCBpbiBjZXJ0YWluIElPQ29udGV4dHMgYW5kIHNv bWUgSU9PcHMgYXJlIG9ubHkKIAkgKiB2YWxpZCBpbiBjZXJ0YWluIGNvbnRleHRzLgorCSAq CisJICogSU9PUF9SRVVTRSB3YXMgb25seSByZWxldmFudCB3aGVuIGEgQnVmZmVyQWNjZXNz U3RyYXRlZ3kgd2FzIGluIHVzZS4KKwkgKiBCdWZmZXIgYWNjZXNzIHN0cmF0ZWdpZXMgKHJp bmcgYnVmZmVycykgaGF2ZSBiZWVuIHJlbW92ZWQgLS0gc2NhbgorCSAqIHJlc2lzdGFuY2Ug aXMgbm93IGludHJpbnNpYyB0byB0aGUgY29vbGluZy1zdGFnZSBjbG9jayBzd2VlcCAtLSBz bworCSAqIElPT1BfUkVVU0UgbmV2ZXIgb2NjdXJzLgogCSAqLwotCWlmIChpb19jb250ZXh0 ID09IElPQ09OVEVYVF9CVUxLUkVBRCAmJiBpb19vcCA9PSBJT09QX0VYVEVORCkKLQkJcmV0 dXJuIGZhbHNlOwotCi0Jc3RyYXRlZ3lfaW9fY29udGV4dCA9IGlvX2NvbnRleHQgPT0gSU9D T05URVhUX0JVTEtSRUFEIHx8Ci0JCWlvX2NvbnRleHQgPT0gSU9DT05URVhUX0JVTEtXUklU RSB8fCBpb19jb250ZXh0ID09IElPQ09OVEVYVF9WQUNVVU07Ci0KLQkvKgotCSAqIElPT1Bf UkVVU0UgaXMgb25seSByZWxldmFudCB3aGVuIGEgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgaXMg aW4gdXNlLgotCSAqLwotCWlmICghc3RyYXRlZ3lfaW9fY29udGV4dCAmJiBpb19vcCA9PSBJ T09QX1JFVVNFKQorCWlmIChpb19vcCA9PSBJT09QX1JFVVNFKQogCQlyZXR1cm4gZmFsc2U7 CiAKIAkvKgpAQCAtNTQ1LDE0ICs1MjEsNSBAQCBwZ3N0YXRfdHJhY2tzX2lvX29wKEJhY2tl bmRUeXBlIGJrdHlwZSwgSU9PYmplY3QgaW9fb2JqZWN0LAogCQkhKGlvX29wID09IElPT1Bf V1JJVEUgfHwgaW9fb3AgPT0gSU9PUF9SRUFEIHx8IGlvX29wID09IElPT1BfRlNZTkMpKQog CQlyZXR1cm4gZmFsc2U7CiAKLQkvKgotCSAqIElPT1BfRlNZTkMgSU9PcHMgZG9uZSBieSBh IGJhY2tlbmQgdXNpbmcgYSBCdWZmZXJBY2Nlc3NTdHJhdGVneSBhcmUKLQkgKiBjb3VudGVk IGluIHRoZSBJT0NPTlRFWFRfTk9STUFMIElPQ29udGV4dC4gU2VlIGNvbW1lbnQgaW4KLQkg KiByZWdpc3Rlcl9kaXJ0eV9zZWdtZW50KCkgZm9yIG1vcmUgZGV0YWlscy4KLQkgKi8KLQlp ZiAoc3RyYXRlZ3lfaW9fY29udGV4dCAmJiBpb19vcCA9PSBJT09QX0ZTWU5DKQotCQlyZXR1 cm4gZmFsc2U7Ci0KLQogCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2Jh bHMuYwppbmRleCBiYmQyOGQxNGQ5OS4uNTU1YzA0MjcyZjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2lu aXQvZ2xvYmFscy5jCkBAIC0xNDksNyArMTQ5LDYgQEAgaW50CQkJYXV0b3ZhY3V1bV9tYXhf cGFyYWxsZWxfd29ya2VycyA9IDA7CiBpbnQJCQlNYXhCYWNrZW5kcyA9IDA7CiAKIC8qIEdV QyBwYXJhbWV0ZXJzIGZvciB2YWN1dW0gKi8KLWludAkJCVZhY3V1bUJ1ZmZlclVzYWdlTGlt aXQgPSAyMDQ4OwogCiBpbnQJCQlWYWN1dW1Db3N0UGFnZUhpdCA9IDE7CiBpbnQJCQlWYWN1 dW1Db3N0UGFnZU1pc3MgPSAyOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJh bWV0ZXJzLmRhdAppbmRleCBkNDIxY2RiZGU3Ni4uYjFlYTgxZjUzNmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0zMzI2LDE2ICszMzI2 LDYgQEAKICAgYm9vdF92YWwgPT4gJ0RFRkFVTFRfVVBEQVRFX1BST0NFU1NfVElUTEUnLAog fSwKIAoteyBuYW1lID0+ICd2YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0JywgdHlwZSA9PiAn aW50JywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUkVTT1VSQ0VTX01F TScsCi0gIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIGJ1ZmZlciBwb29sIHNpemUgZm9yIFZB Q1VVTSwgQU5BTFlaRSwgYW5kIGF1dG92YWN1dW0uJywKLSAgZmxhZ3MgPT4gJ0dVQ19VTklU X0tCJywKLSAgdmFyaWFibGUgPT4gJ1ZhY3V1bUJ1ZmZlclVzYWdlTGltaXQnLAotICBib290 X3ZhbCA9PiAnMjA0OCcsCi0gIG1pbiA9PiAnMCcsCi0gIG1heCA9PiAnTUFYX0JBU19WQUNf UklOR19TSVpFX0tCJywKLSAgY2hlY2tfaG9vayA9PiAnY2hlY2tfdmFjdXVtX2J1ZmZlcl91 c2FnZV9saW1pdCcsCi19LAotCiB7IG5hbWUgPT4gJ3ZhY3V1bV9jb3N0X2RlbGF5JywgdHlw ZSA9PiAncmVhbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1ZBQ1VV TV9DT1NUX0RFTEFZJywKICAgc2hvcnRfZGVzYyA9PiAnVmFjdXVtIGNvc3QgZGVsYXkgaW4g bWlsbGlzZWNvbmRzLicsCiAgIGZsYWdzID0+ICdHVUNfVU5JVF9NUycsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNzk1ODY1 MzA3N2IuLmNiMWViOGVmM2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0xNjQsOSArMTY0LDYgQEAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbW1hcAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQog I21pbl9keW5hbWljX3NoYXJlZF9tZW1vcnkgPSAwTUIgICAgICAgICMgKGNoYW5nZSByZXF1 aXJlcyByZXN0YXJ0KQotI3ZhY3V1bV9idWZmZXJfdXNhZ2VfbGltaXQgPSAyTUIgICAgICAg ICMgc2l6ZSBvZiB2YWN1dW0gYW5kIGFuYWx5emUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBy aW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCB0byBk aXNhYmxlIHZhY3V1bSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5OwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgcmFuZ2UgMTI4a0IgdG8gMTZHQgogCiAjIFNM UlUgYnVmZmVycyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjY29tbWl0X3RpbWVzdGFt cF9idWZmZXJzID0gMCAgICAgICAgICAgIyBtZW1vcnkgZm9yIHBnX2NvbW1pdF90cyAoMCA9 IGF1dG8pCmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYyBiL3NyYy9i aW4vc2NyaXB0cy92YWN1dW1kYi5jCmluZGV4IGY4MTU4Y2E2YTc4Li5mNzhlNTdmZjJjMyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWRiLmMKKysrIGIvc3JjL2Jpbi9z Y3JpcHRzL3ZhY3V1bWRiLmMKQEAgLTU3LDcgKzU3LDYgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCQl7Im5vLXRydW5jYXRlIiwgbm9fYXJndW1lbnQsIE5VTEwsIDEwfSwK IAkJeyJuby1wcm9jZXNzLXRvYXN0Iiwgbm9fYXJndW1lbnQsIE5VTEwsIDExfSwKIAkJeyJu by1wcm9jZXNzLW1haW4iLCBub19hcmd1bWVudCwgTlVMTCwgMTJ9LAotCQl7ImJ1ZmZlci11 c2FnZS1saW1pdCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxM30sCiAJCXsibWlzc2lu Zy1zdGF0cy1vbmx5Iiwgbm9fYXJndW1lbnQsIE5VTEwsIDE0fSwKIAkJeyJkcnktcnVuIiwg bm9fYXJndW1lbnQsIE5VTEwsIDE1fSwKIAkJe05VTEwsIDAsIE5VTEwsIDB9CkBAIC0yMDIs OSArMjAxLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJY2FzZSAxMjoK IAkJCQl2YWNvcHRzLnByb2Nlc3NfbWFpbiA9IGZhbHNlOwogCQkJCWJyZWFrOwotCQkJY2Fz ZSAxMzoKLQkJCQl2YWNvcHRzLmJ1ZmZlcl91c2FnZV9saW1pdCA9IGVzY2FwZV9xdW90ZXMo b3B0YXJnKTsKLQkJCQlicmVhazsKIAkJCWNhc2UgMTQ6CiAJCQkJdmFjb3B0cy5taXNzaW5n X3N0YXRzX29ubHkgPSB0cnVlOwogCQkJCWJyZWFrOwpAQCAtMjkwLDE0ICsyODYsNiBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXBnX2ZhdGFsKCJjYW5ub3QgdXNlIHRo ZSBcIiVzXCIgb3B0aW9uIHdpdGggdGhlIFwiJXNcIiBvcHRpb24iLAogCQkJCSAibm8taW5k ZXgtY2xlYW51cCIsICJmb3JjZS1pbmRleC1jbGVhbnVwIik7CiAKLQkvKgotCSAqIGJ1ZmZl ci11c2FnZS1saW1pdCBpcyBub3QgYWxsb3dlZCB3aXRoIFZBQ1VVTSBGVUxMIHVubGVzcyBB TkFMWVpFIGlzCi0JICogaW5jbHVkZWQgdG9vLgotCSAqLwotCWlmICh2YWNvcHRzLmJ1ZmZl cl91c2FnZV9saW1pdCAmJiB2YWNvcHRzLmZ1bGwgJiYgIXZhY29wdHMuYW5kX2FuYWx5emUp Ci0JCXBnX2ZhdGFsKCJjYW5ub3QgdXNlIHRoZSBcIiVzXCIgb3B0aW9uIHdpdGggdGhlIFwi JXNcIiBvcHRpb24iLAotCQkJCSAiYnVmZmVyLXVzYWdlLWxpbWl0IiwgImZ1bGwiKTsKLQog CS8qCiAJICogUHJvaGliaXQgLS1taXNzaW5nLXN0YXRzLW9ubHkgd2l0aG91dCAtLWFuYWx5 emUtb25seSBvcgogCSAqIC0tYW5hbHl6ZS1pbi1zdGFnZXMuCkBAIC0zNTIsNyArMzQwLDYg QEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAlcyBbT1BUSU9O XS4uLiBbREJOQU1FXVxuIiksIHByb2duYW1lKTsKIAlwcmludGYoXygiXG5PcHRpb25zOlxu IikpOwogCXByaW50ZihfKCIgIC1hLCAtLWFsbCAgICAgICAgICAgICAgICAgICAgICAgdmFj dXVtIGFsbCBkYXRhYmFzZXNcbiIpKTsKLQlwcmludGYoXygiICAgICAgLS1idWZmZXItdXNh Z2UtbGltaXQ9U0laRSAgIHNpemUgb2YgcmluZyBidWZmZXIgdXNlZCBmb3IgdmFjdXVtXG4i KSk7CiAJcHJpbnRmKF8oIiAgLWQsIC0tZGJuYW1lPURCTkFNRSAgICAgICAgICAgICBkYXRh YmFzZSB0byB2YWN1dW1cbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1kaXNhYmxlLXBhZ2Ut c2tpcHBpbmcgICAgIGRpc2FibGUgYWxsIHBhZ2Utc2tpcHBpbmcgYmVoYXZpb3JcbiIpKTsK IAlwcmludGYoXygiICAgICAgLS1kcnktcnVuICAgICAgICAgICAgICAgICAgIHNob3cgdGhl IGNvbW1hbmRzIHRoYXQgd291bGQgYmUgc2VudCB0byB0aGUgc2VydmVyXG4iKSk7CmRpZmYg LS1naXQgYS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMgYi9zcmMvYmluL3NjcmlwdHMv dmFjdXVtaW5nLmMKaW5kZXggODU1YTU3NTRjOTguLjA3OGEzYmJiNTE2IDEwMDY0NAotLS0g YS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3Zh Y3V1bWluZy5jCkBAIC0yNjQsMTMgKzI2NCw2IEBAIHZhY3V1bV9vbmVfZGF0YWJhc2UoQ29u blBhcmFtcyAqY3BhcmFtcywKIAkJCQkgIi0tcGFyYWxsZWwiLCAiMTMiKTsKIAl9CiAKLQlp ZiAodmFjb3B0cy0+YnVmZmVyX3VzYWdlX2xpbWl0ICYmIFBRc2VydmVyVmVyc2lvbihjb25u KSA8IDE2MDAwMCkKLQl7Ci0JCVBRZmluaXNoKGNvbm4pOwotCQlwZ19mYXRhbCgiY2Fubm90 IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiBvbiBzZXJ2ZXIgdmVyc2lvbnMgb2xkZXIgdGhhbiBQ b3N0Z3JlU1FMICVzIiwKLQkJCQkgIi0tYnVmZmVyLXVzYWdlLWxpbWl0IiwgIjE2Iik7Ci0J fQotCiAJaWYgKHZhY29wdHMtPm1pc3Npbmdfc3RhdHNfb25seSAmJiBQUXNlcnZlclZlcnNp b24oY29ubikgPCAxNTAwMDApCiAJewogCQlQUWZpbmlzaChjb25uKTsKQEAgLTg2NSwxMyAr ODU4LDYgQEAgcHJlcGFyZV92YWN1dW1fY29tbWFuZChQR2Nvbm4gKmNvbm4sIFBRRXhwQnVm ZmVyIHNxbCwKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihzcWwsICIlc1ZFUkJPU0UiLCBzZXAp OwogCQkJCXNlcCA9IGNvbW1hOwogCQkJfQotCQkJaWYgKHZhY29wdHMtPmJ1ZmZlcl91c2Fn ZV9saW1pdCkKLQkJCXsKLQkJCQlBc3NlcnQoc2VydmVyVmVyc2lvbiA+PSAxNjAwMDApOwot CQkJCWFwcGVuZFBRRXhwQnVmZmVyKHNxbCwgIiVzQlVGRkVSX1VTQUdFX0xJTUlUICclcyci LCBzZXAsCi0JCQkJCQkJCSAgdmFjb3B0cy0+YnVmZmVyX3VzYWdlX2xpbWl0KTsKLQkJCQlz ZXAgPSBjb21tYTsKLQkJCX0KIAkJCWlmIChzZXAgIT0gcGFyZW4pCiAJCQkJYXBwZW5kUFFF eHBCdWZmZXJDaGFyKHNxbCwgJyknKTsKIAkJfQpAQCAtOTc0LDEzICs5NjAsNiBAQCBwcmVw YXJlX3ZhY3V1bV9jb21tYW5kKFBHY29ubiAqY29ubiwgUFFFeHBCdWZmZXIgc3FsLAogCQkJ CQkJCQkgIHZhY29wdHMtPnBhcmFsbGVsX3dvcmtlcnMpOwogCQkJCXNlcCA9IGNvbW1hOwog CQkJfQotCQkJaWYgKHZhY29wdHMtPmJ1ZmZlcl91c2FnZV9saW1pdCkKLQkJCXsKLQkJCQlB c3NlcnQoc2VydmVyVmVyc2lvbiA+PSAxNjAwMDApOwotCQkJCWFwcGVuZFBRRXhwQnVmZmVy KHNxbCwgIiVzQlVGRkVSX1VTQUdFX0xJTUlUICclcyciLCBzZXAsCi0JCQkJCQkJCSAgdmFj b3B0cy0+YnVmZmVyX3VzYWdlX2xpbWl0KTsKLQkJCQlzZXAgPSBjb21tYTsKLQkJCX0KIAkJ CWlmIChzZXAgIT0gcGFyZW4pCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHNxbCwgJykn KTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5oIGIvc3Jj L2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5oCmluZGV4IDVhNDkxZGIyNTI2Li44M2EyNDY5YTZh YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWluZy5oCisrKyBiL3NyYy9i aW4vc2NyaXB0cy92YWN1dW1pbmcuaApAQCAtNDksNyArNDksNiBAQCB0eXBlZGVmIHN0cnVj dCB2YWN1dW1pbmdPcHRpb25zCiAJYm9vbAkJcHJvY2Vzc19tYWluOwogCWJvb2wJCXByb2Nl c3NfdG9hc3Q7CiAJYm9vbAkJc2tpcF9kYXRhYmFzZV9zdGF0czsKLQljaGFyCSAgICpidWZm ZXJfdXNhZ2VfbGltaXQ7CiAJYm9vbAkJbWlzc2luZ19zdGF0c19vbmx5OwogCWJvb2wJCWVj aG87CiAJYm9vbAkJcXVpZXQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDY4YmZlNDA1ZGIzLi5i Yzg3ZjZmN2NjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTU4LDcgKzU4LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJYm9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBu dW1faGVhcF90dXBsZXMgaXMgYW4gZXN0aW1hdGUgKi8KIAlpbnQJCQltZXNzYWdlX2xldmVs OwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJ bnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KLQlCdWZm ZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFk cyAqLwogfSBJbmRleFZhY3V1bUluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaAppbmRleCBhODcw MmYwZTVlYS4uN2M5MjY4ZmU5NTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o YXNoLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaApAQCAtNDA1LDEyICs0MDUs MTEgQEAgZXh0ZXJuIHZvaWQgX2hhc2hfcGdhZGRtdWx0aXR1cChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsIEluZGV4VHVwbGUgKml0dXBzLAogZXh0ZXJuIEJ1ZmZlciBfaGFzaF9hZGRv dmZscGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgYnVmLCBib29s IHJldGFpbl9waW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIF9oYXNoX2ZyZWVvdmZscGFnZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWNrZXRidWYsIEJ1ZmZlciBvdmZsYnVmLAogCQkJCQkJ CQkJICBCdWZmZXIgd2J1ZiwgSW5kZXhUdXBsZSAqaXR1cHMsIE9mZnNldE51bWJlciAqaXR1 cF9vZmZzZXRzLAotCQkJCQkJCQkJICBTaXplICp0dXBzX3NpemUsIHVpbnQxNiBuaXR1cHMs IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJCQkgIFNpemUgKnR1 cHNfc2l6ZSwgdWludDE2IG5pdHVwcyk7CiBleHRlcm4gdm9pZCBfaGFzaF9pbml0Yml0bWFw YnVmZmVyKEJ1ZmZlciBidWYsIHVpbnQxNiBibXNpemUsIGJvb2wgaW5pdHBhZ2UpOwogZXh0 ZXJuIHZvaWQgX2hhc2hfc3F1ZWV6ZWJ1Y2tldChSZWxhdGlvbiByZWwsCiAJCQkJCQkJCUJ1 Y2tldCBidWNrZXQsIEJsb2NrTnVtYmVyIGJ1Y2tldF9ibGtubywKLQkJCQkJCQkJQnVmZmVy IGJ1Y2tldF9idWYsCi0JCQkJCQkJCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7 CisJCQkJCQkJCUJ1ZmZlciBidWNrZXRfYnVmKTsKIGV4dGVybiB1aW50MzIgX2hhc2hfb3Zm bGJsa25vX3RvX2JpdG5vKEhhc2hNZXRhUGFnZSBtZXRhcCwgQmxvY2tOdW1iZXIgb3ZmbGJs a25vKTsKIAogLyogaGFzaHBhZ2UuYyAqLwpAQCAtNDI4LDkgKzQyNyw2IEBAIGV4dGVybiB2 b2lkIF9oYXNoX2luaXRidWYoQnVmZmVyIGJ1ZiwgdWludDMyIG1heF9idWNrZXQsIHVpbnQz MiBudW1fYnVja2V0LAogCQkJCQkJICB1aW50MzIgZmxhZywgYm9vbCBpbml0cGFnZSk7CiBl eHRlcm4gQnVmZmVyIF9oYXNoX2dldG5ld2J1ZihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkJCQkJCSAgRm9ya051bWJlciBmb3JrTnVtKTsKLWV4dGVybiBCdWZmZXIg X2hhc2hfZ2V0YnVmX3dpdGhfc3RyYXRlZ3koUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywKLQkJCQkJCQkJCQkgaW50IGFjY2VzcywgaW50IGZsYWdzLAotCQkJCQkJCQkJCSBC dWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIHZvaWQgX2hhc2hfcmVs YnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CiBleHRlcm4gdm9pZCBfaGFzaF9kcm9w YnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CiBleHRlcm4gdm9pZCBfaGFzaF9kcm9w c2NhbmJ1ZihSZWxhdGlvbiByZWwsIEhhc2hTY2FuT3BhcXVlIHNvKTsKQEAgLTQ4MSw3ICs0 NzcsNiBAQCBleHRlcm4gdm9pZCBfaGFzaF9raWxsX2l0ZW1zKEluZGV4U2NhbkRlc2Mgc2Nh bik7CiAvKiBoYXNoLmMgKi8KIGV4dGVybiB2b2lkIGhhc2hidWNrZXRjbGVhbnVwKFJlbGF0 aW9uIHJlbCwgQnVja2V0IGN1cl9idWNrZXQsCiAJCQkJCQkJICBCdWZmZXIgYnVja2V0X2J1 ZiwgQmxvY2tOdW1iZXIgYnVja2V0X2Jsa25vLAotCQkJCQkJCSAgQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgYnN0cmF0ZWd5LAogCQkJCQkJCSAgdWludDMyIG1heGJ1Y2tldCwgdWludDMyIGhp Z2htYXNrLCB1aW50MzIgbG93bWFzaywKIAkJCQkJCQkgIGRvdWJsZSAqdHVwbGVzX3JlbW92 ZWQsIGRvdWJsZSAqbnVtX2luZGV4X3R1cGxlcywKIAkJCQkJCQkgIGJvb2wgc3BsaXRfY2xl YW51cCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA1MTc2NDc4YzI5NS4uMDk2N2I2NTk3OTQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTcyLDggKzcyLDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg SGVhcFNjYW5EZXNjRGF0YQogCUJ1ZmZlcgkJcnNfY2J1ZjsJCS8qIGN1cnJlbnQgYnVmZmVy IGluIHNjYW4sIGlmIGFueSAqLwogCS8qIE5COiBpZiByc19jYnVmIGlzIG5vdCBJbnZhbGlk QnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyICovCiAKLQlCdWZmZXJBY2Nl c3NTdHJhdGVneSByc19zdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAq LwotCiAJSGVhcFR1cGxlRGF0YSByc19jdHVwOwkJLyogY3VycmVudCB0dXBsZSBpbiBzY2Fu LCBpZiBhbnkgKi8KIAogCS8qIEZvciBzY2FucyB0aGF0IHN0cmVhbSByZWFkcyAqLwpAQCAt NDY2LDcgKzQ2NCw3IEBAIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIC8qIGluIGhlYXAvdmFjdXVt bGF6eS5jICovCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLAot CQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVn eSBic3RyYXRlZ3kpOworCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zKTsKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiBleHRlcm4gYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkJIEdsb2JhbFZp c1N0YXRlICp2aXN0ZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hpby5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hpby5oCmluZGV4IDYwY2ZjMzc1ZmQ1Li42M2JmY2M4 ODRlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hpby5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oaW8uaApAQCAtMjgsNyArMjgsNiBAQAogICovCiB0eXBlZGVmIHN0 cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhCiB7Ci0JQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3k7CS8qIG91ciBCVUxLV1JJVEUgc3RyYXRlZ3kgb2JqZWN0ICovCiAJQnVmZmVyCQlj dXJyZW50X2J1ZjsJLyogY3VycmVudCBpbnNlcnRpb24gdGFyZ2V0IHBhZ2UgKi8KIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBmMmMzNjY5NmJjYS4uODNiYTBmM2NhNzMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjg5LDggKzY4OSw3IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlQW1Sb3V0aW5lCiAJICogaW50ZWdyYXRlIHdpdGggYXV0b3ZhY3V1bSdzIHNjaGVk dWxpbmcuCiAJICovCiAJdm9pZAkJKCpyZWxhdGlvbl92YWN1dW0pIChSZWxhdGlvbiByZWws Ci0JCQkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJCQkJCQkJCUJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CisJCQkJCQkJCQljb25zdCBWYWN1dW1QYXJh bXMgKnBhcmFtcyk7CiAKIAkvKgogCSAqIFByZXBhcmUgdG8gYW5hbHl6ZSBibG9jayBgYmxv Y2tub2Agb2YgYHNjYW5gLiBUaGUgc2NhbiBoYXMgYmVlbiBzdGFydGVkCkBAIC0xNzc0LDEw ICsxNzczLDkgQEAgdGFibGVfcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBP bGRUYWJsZSwgUmVsYXRpb24gTmV3VGFibGUsCiAgKiByb3V0aW5lLCBldmVuIGlmIChmb3Ig QU5BTFlaRSkgaXQgaXMgcGFydCBvZiB0aGUgc2FtZSBWQUNVVU0gY29tbWFuZC4KICAqLwog c3RhdGljIGlubGluZSB2b2lkCi10YWJsZV9yZWxhdGlvbl92YWN1dW0oUmVsYXRpb24gcmVs LCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKLQkJCQkJICBCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kpCit0YWJsZV9yZWxhdGlvbl92YWN1dW0oUmVsYXRpb24gcmVsLCBj b25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKIHsKLQlyZWwtPnJkX3RhYmxlYW0tPnJlbGF0 aW9uX3ZhY3V1bShyZWwsIHBhcmFtcywgYnN0cmF0ZWd5KTsKKwlyZWwtPnJkX3RhYmxlYW0t PnJlbGF0aW9uX3ZhY3V1bShyZWwsIHBhcmFtcyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Zh Y3V1bS5oCmluZGV4IDk1NmQ5Y2VhMzZkLi4xNGE5YjUzMGJjZiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dmFjdXVtLmgKQEAgLTM2Myw3ICszNjMsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50NjQg cGFyYWxsZWxfdmFjdXVtX3dvcmtlcl9kZWxheV9uczsKIC8qIGluIGNvbW1hbmRzL3ZhY3V1 bS5jICovCiBleHRlcm4gdm9pZCBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFj dXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiB2b2lkIHZhY3V1 bShMaXN0ICpyZWxhdGlvbnMsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAotCQkJCSAg IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSwgTWVtb3J5Q29udGV4dCB2YWNfY29u dGV4dCwKKwkJCQkgICBNZW1vcnlDb250ZXh0IHZhY19jb250ZXh0LAogCQkJCSAgIGJvb2wg aXNUb3BMZXZlbCk7CiBleHRlcm4gdm9pZCB2YWNfb3Blbl9pbmRleGVzKFJlbGF0aW9uIHJl bGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkgaW50ICpuaW5kZXhlcywgUmVs YXRpb24gKipJcmVsKTsKQEAgLTQwNyw4ICs0MDcsNyBAQCBleHRlcm4gdm9pZCBWYWN1dW1V cGRhdGVDb3N0cyh2b2lkKTsKIC8qIGluIGNvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgKi8K IGV4dGVybiBQYXJhbGxlbFZhY3V1bVN0YXRlICpwYXJhbGxlbF92YWN1dW1faW5pdChSZWxh dGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLAogCQkJCQkJCQkJCQkJIGludCBuaW5kZXhl cywgaW50IG5yZXF1ZXN0ZWRfd29ya2VycywKLQkJCQkJCQkJCQkJCSBpbnQgdmFjX3dvcmtf bWVtLCBpbnQgZWxldmVsLAotCQkJCQkJCQkJCQkJIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJz dHJhdGVneSk7CisJCQkJCQkJCQkJCQkgaW50IHZhY193b3JrX21lbSwgaW50IGVsZXZlbCk7 CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1dW1fZW5kKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICoqaXN0YXRzKTsKIGV4dGVybiBUaWRTdG9y ZSAqcGFyYWxsZWxfdmFjdXVtX2dldF9kZWFkX2l0ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUg KnB2cywKIAkJCQkJCQkJCQkJCVZhY0RlYWRJdGVtc0luZm8gKipkZWFkX2l0ZW1zX2luZm9f cCk7CkBAIC00MjgsOCArNDI3LDcgQEAgZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMv YW5hbHl6ZS5jICovCiBleHRlcm4gdm9pZCBhbmFseXplX3JlbChPaWQgcmVsaWQsIFJhbmdl VmFyICpyZWxhdGlvbiwKLQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBMaXN0 ICp2YV9jb2xzLCBib29sIGluX291dGVyX3hhY3QsCi0JCQkJCQlCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kpOworCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsIExp c3QgKnZhX2NvbHMsIGJvb2wgaW5fb3V0ZXJfeGFjdCk7CiBleHRlcm4gYm9vbCBhdHRyaWJ1 dGVfaXNfYW5hbHl6YWJsZShSZWxhdGlvbiBvbmVyZWwsIGludCBhdHRudW0sIEZvcm1fcGdf YXR0cmlidXRlIGF0dHIsCiAJCQkJCQkJCQlpbnQgKnBfYXR0c3RhdHRhcmdldCk7CiBleHRl cm4gYm9vbCBzdGRfdHlwYW5hbHl6ZShWYWNBdHRyU3RhdHMgKnN0YXRzKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK aW5kZXggNzE3MGE0YmZmOTguLmM1ZDU4MmIxNTJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMjczLDE1 ICsyNzMsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIGhhc2hfbWVtX211bHRpcGxp ZXI7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1haW50ZW5hbmNlX3dvcmtfbWVtOwogZXh0 ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VyczsK IAotLyoKLSAqIFVwcGVyIGFuZCBsb3dlciBoYXJkIGxpbWl0cyBmb3IgdGhlIGJ1ZmZlciBh Y2Nlc3Mgc3RyYXRlZ3kgcmluZyBzaXplCi0gKiBzcGVjaWZpZWQgYnkgdGhlIFZhY3V1bUJ1 ZmZlclVzYWdlTGltaXQgR1VDIGFuZCBCVUZGRVJfVVNBR0VfTElNSVQgb3B0aW9uCi0gKiB0 byBWQUNVVU0gYW5kIEFOQUxZWkUuCi0gKi8KLSNkZWZpbmUgTUlOX0JBU19WQUNfUklOR19T SVpFX0tCIDEyOAotI2RlZmluZSBNQVhfQkFTX1ZBQ19SSU5HX1NJWkVfS0IgKDE2ICogMTAy NCAqIDEwMjQpCi0KLWV4dGVybiBQR0RMTElNUE9SVCBpbnQgVmFjdXVtQnVmZmVyVXNhZ2VM aW1pdDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgVmFjdXVtQ29zdFBhZ2VIaXQ7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RQYWdlTWlzczsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgVmFjdXVtQ29zdFBhZ2VEaXJ0eTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggNThhNDQ4NTdmMTMuLjY4 YjRlNTA5M2EyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMv aW5jbHVkZS9wZ3N0YXQuaApAQCAtMjg3LDE0ICsyODcsMTEgQEAgdHlwZWRlZiBlbnVtIElP T2JqZWN0CiAKIHR5cGVkZWYgZW51bSBJT0NvbnRleHQKIHsKLQlJT0NPTlRFWFRfQlVMS1JF QUQsCi0JSU9DT05URVhUX0JVTEtXUklURSwKIAlJT0NPTlRFWFRfSU5JVCwKIAlJT0NPTlRF WFRfTk9STUFMLAotCUlPQ09OVEVYVF9WQUNVVU0sCiB9IElPQ29udGV4dDsKIAotI2RlZmlu ZSBJT0NPTlRFWFRfTlVNX1RZUEVTIChJT0NPTlRFWFRfVkFDVVVNICsgMSkKKyNkZWZpbmUg SU9DT05URVhUX05VTV9UWVBFUyAoSU9DT05URVhUX05PUk1BTCArIDEpCiAKIC8qCiAgKiBF bnVtZXJhdGlvbiBvZiBJTyBvcGVyYXRpb25zLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9idWYuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmLmgKaW5kZXggYjIxNDQ1 NTIyYjEuLmZhOTQyYTY0ZjA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1 Zi5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmLmgKQEAgLTM2LDExICszNiw0IEBA IHR5cGVkZWYgaW50IEJ1ZmZlcjsKICAqLwogI2RlZmluZSBCdWZmZXJJc0xvY2FsKGJ1ZmZl cikJKChidWZmZXIpIDwgMCkKIAotLyoKLSAqIEJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgb2Jq ZWN0cy4KLSAqCi0gKiBCdWZmZXJBY2Nlc3NTdHJhdGVneURhdGEgaXMgcHJpdmF0ZSB0byBm cmVlbGlzdC5jCi0gKi8KLXR5cGVkZWYgc3RydWN0IEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5RGF0 YSAqQnVmZmVyQWNjZXNzU3RyYXRlZ3k7Ci0KICNlbmRpZgkJCQkJCQkvKiBCVUZfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAppbmRleCAxMzFkZjEyNmNkYS4uM2I0 NGFkM2UwYjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFs cy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCkBAIC02MzIs MTEgKzYzMiw3IEBAIGV4dGVybiB2b2lkIFRlcm1pbmF0ZUJ1ZmZlcklPKEJ1ZmZlckRlc2Mg KmJ1ZiwgYm9vbCBjbGVhcl9kaXJ0eSwgdWludDY0IHNldF9mbGFnCiAKIAogLyogZnJlZWxp c3QuYyAqLwotZXh0ZXJuIElPQ29udGV4dCBJT0NvbnRleHRGb3JTdHJhdGVneShCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7Ci1leHRlcm4gQnVmZmVyRGVzYyAqU3RyYXRlZ3lH ZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCi0JCQkJCQkJCQkgdWlu dDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcmluZyk7Ci1leHRlcm4gYm9vbCBTdHJhdGVn eVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKLQkJCQkJCQkJ IEJ1ZmZlckRlc2MgKmJ1ZiwgYm9vbCBmcm9tX3JpbmcpOworZXh0ZXJuIEJ1ZmZlckRlc2Mg KlN0cmF0ZWd5R2V0QnVmZmVyKHVpbnQ2NCAqYnVmX3N0YXRlKTsKIAogZXh0ZXJuIGludAlT dHJhdGVneVN5bmNTdGFydCh1aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywgdWludDMyICpudW1f YnVmX2FsbG9jKTsKIGV4dGVybiB2b2lkIFN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoaW50IGJn d3Byb2Nubyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAppbmRleCA2ODM3YjM1ZmM2ZC4uMzYwMjM3 OTJmMzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApAQCAtMjUsMjEgKzI1LDYgQEAKIAogdHlw ZWRlZiB2b2lkICpCbG9jazsKIAotLyoKLSAqIFBvc3NpYmxlIGFyZ3VtZW50cyBmb3IgR2V0 QWNjZXNzU3RyYXRlZ3koKS4KLSAqCi0gKiBJZiBhZGRpbmcgYSBuZXcgQnVmZmVyQWNjZXNz U3RyYXRlZ3lUeXBlLCBhbHNvIGFkZCBhIG5ldyBJT0NvbnRleHQgc28KLSAqIElPIHN0YXRp c3RpY3MgdXNpbmcgdGhpcyBzdHJhdGVneSBhcmUgdHJhY2tlZC4KLSAqLwotdHlwZWRlZiBl bnVtIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZQotewotCUJBU19OT1JNQUwsCQkJCQkvKiBO b3JtYWwgcmFuZG9tIGFjY2VzcyAqLwotCUJBU19CVUxLUkVBRCwJCQkJLyogTGFyZ2UgcmVh ZC1vbmx5IHNjYW4gKGhpbnQgYml0IHVwZGF0ZXMgYXJlCi0JCQkJCQkJCSAqIG9rKSAqLwot CUJBU19CVUxLV1JJVEUsCQkJCS8qIExhcmdlIG11bHRpLWJsb2NrIHdyaXRlIChlLmcuIENP UFkgSU4pICovCi0JQkFTX1ZBQ1VVTSwJCQkJCS8qIFZBQ1VVTSAqLwotfSBCdWZmZXJBY2Nl c3NTdHJhdGVneVR5cGU7Ci0KIC8qIFBvc3NpYmxlIG1vZGVzIGZvciBSZWFkQnVmZmVyRXh0 ZW5kZWQoKSAqLwogdHlwZWRlZiBlbnVtCiB7CkBAIC0xMzUsNyArMTIwLDYgQEAgc3RydWN0 IFJlYWRCdWZmZXJzT3BlcmF0aW9uCiAJU01nclJlbGF0aW9uIHNtZ3I7CiAJY2hhcgkJcGVy c2lzdGVuY2U7CiAJRm9ya051bWJlcglmb3JrbnVtOwotCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHN0cmF0ZWd5OwogCiAJLyoKIAkgKiBUaGUgZm9sbG93aW5nIHByaXZhdGUgbWVtYmVycyBh cmUgcHJpdmF0ZSBzdGF0ZSBmb3IgY29tbXVuaWNhdGlvbgpAQCAtMjM1LDExICsyMTksMTAg QEAgZXh0ZXJuIGJvb2wgUmVhZFJlY2VudEJ1ZmZlcihSZWxGaWxlTG9jYXRvciBybG9jYXRv ciwgRm9ya051bWJlciBmb3JrTnVtLAogCQkJCQkJCSBCbG9ja051bWJlciBibG9ja051bSwg QnVmZmVyIHJlY2VudF9idWZmZXIpOwogZXh0ZXJuIEJ1ZmZlciBSZWFkQnVmZmVyKFJlbGF0 aW9uIHJlbG4sIEJsb2NrTnVtYmVyIGJsb2NrTnVtKTsKIGV4dGVybiBCdWZmZXIgUmVhZEJ1 ZmZlckV4dGVuZGVkKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9ya051bSwKLQkJCQkJ CQkJIEJsb2NrTnVtYmVyIGJsb2NrTnVtLCBSZWFkQnVmZmVyTW9kZSBtb2RlLAotCQkJCQkJ CQkgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOworCQkJCQkJCQkgQmxvY2tOdW1i ZXIgYmxvY2tOdW0sIFJlYWRCdWZmZXJNb2RlIG1vZGUpOwogZXh0ZXJuIEJ1ZmZlciBSZWFk QnVmZmVyV2l0aG91dFJlbGNhY2hlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAogCQkJCQkJ CQkJCUZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOdW0sCi0JCQkJCQkJ CQkJUmVhZEJ1ZmZlck1vZGUgbW9kZSwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ks CisJCQkJCQkJCQkJUmVhZEJ1ZmZlck1vZGUgbW9kZSwKIAkJCQkJCQkJCQlib29sIHBlcm1h bmVudCk7CiAKIGV4dGVybiBib29sIFN0YXJ0UmVhZEJ1ZmZlcihSZWFkQnVmZmVyc09wZXJh dGlvbiAqb3BlcmF0aW9uLApAQCAtMjY2LDE4ICsyNDksMTUgQEAgZXh0ZXJuIEJ1ZmZlciBS ZWxlYXNlQW5kUmVhZEJ1ZmZlcihCdWZmZXIgYnVmZmVyLCBSZWxhdGlvbiByZWxhdGlvbiwK IAogZXh0ZXJuIEJ1ZmZlciBFeHRlbmRCdWZmZXJlZFJlbChCdWZmZXJNYW5hZ2VyUmVsYXRp b24gYm1yLAogCQkJCQkJCQlGb3JrTnVtYmVyIGZvcmtOdW0sCi0JCQkJCQkJCUJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQl1aW50MzIgZmxhZ3MpOwogZXh0ZXJu IEJsb2NrTnVtYmVyIEV4dGVuZEJ1ZmZlcmVkUmVsQnkoQnVmZmVyTWFuYWdlclJlbGF0aW9u IGJtciwKIAkJCQkJCQkJCSAgIEZvcmtOdW1iZXIgZm9yaywKLQkJCQkJCQkJCSAgIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkJICAgdWludDMyIGZsYWdzLAog CQkJCQkJCQkJICAgdWludDMyIGV4dGVuZF9ieSwKIAkJCQkJCQkJCSAgIEJ1ZmZlciAqYnVm ZmVycywKIAkJCQkJCQkJCSAgIHVpbnQzMiAqZXh0ZW5kZWRfYnkpOwogZXh0ZXJuIEJ1ZmZl ciBFeHRlbmRCdWZmZXJlZFJlbFRvKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJ CQkJCSAgRm9ya051bWJlciBmb3JrLAotCQkJCQkJCQkgIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IHN0cmF0ZWd5LAogCQkJCQkJCQkgIHVpbnQzMiBmbGFncywKIAkJCQkJCQkJICBCbG9ja051 bWJlciBleHRlbmRfdG8sCiAJCQkJCQkJCSAgUmVhZEJ1ZmZlck1vZGUgbW9kZSk7CkBAIC0z NzYsMTQgKzM1Niw2IEBAIGV4dGVybiB2b2lkIEF0UHJvY0V4aXRfTG9jYWxCdWZmZXJzKHZv aWQpOwogCiAvKiBpbiBmcmVlbGlzdC5jICovCiAKLWV4dGVybiBCdWZmZXJBY2Nlc3NTdHJh dGVneSBHZXRBY2Nlc3NTdHJhdGVneShCdWZmZXJBY2Nlc3NTdHJhdGVneVR5cGUgYnR5cGUp OwotZXh0ZXJuIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IEdldEFjY2Vzc1N0cmF0ZWd5V2l0aFNp emUoQnVmZmVyQWNjZXNzU3RyYXRlZ3lUeXBlIGJ0eXBlLAotCQkJCQkJCQkJCQkJCSAgaW50 IHJpbmdfc2l6ZV9rYik7Ci1leHRlcm4gaW50CUdldEFjY2Vzc1N0cmF0ZWd5QnVmZmVyQ291 bnQoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOwotZXh0ZXJuIGludAlHZXRBY2Nl c3NTdHJhdGVneVBpbkxpbWl0KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKLQot ZXh0ZXJuIHZvaWQgRnJlZUFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5KTsKLQogCiAvKiBpbmxpbmUgZnVuY3Rpb25zICovCiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cmVhZF9zdHJlYW0uaAppbmRleCA0ODk5NWM2ZDUzNC4uOWU1ZmJiZWQ5ZTggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVhZF9zdHJlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKQEAgLTgzLDE3ICs4MywxNCBAQCBleHRlcm4gQmxv Y2tOdW1iZXIgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IoUmVhZFN0cmVhbSAqc3RyZWFt LAogCQkJCQkJCQkJCQkgIHZvaWQgKmNhbGxiYWNrX3ByaXZhdGVfZGF0YSwKIAkJCQkJCQkJ CQkJICB2b2lkICpwZXJfYnVmZmVyX2RhdGEpOwogZXh0ZXJuIFJlYWRTdHJlYW0gKnJlYWRf c3RyZWFtX2JlZ2luX3JlbGF0aW9uKGludCBmbGFncywKLQkJCQkJCQkJCQkJICBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJCQkJCQkJICBSZWxhdGlvbiByZWwsCiAJ CQkJCQkJCQkJCSAgRm9ya051bWJlciBmb3JrbnVtLAogCQkJCQkJCQkJCQkgIFJlYWRTdHJl YW1CbG9ja051bWJlckNCIGNhbGxiYWNrLAogCQkJCQkJCQkJCQkgIHZvaWQgKmNhbGxiYWNr X3ByaXZhdGVfZGF0YSwKIAkJCQkJCQkJCQkJICBzaXplX3QgcGVyX2J1ZmZlcl9kYXRhX3Np emUpOwogZXh0ZXJuIEJ1ZmZlciByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihSZWFkU3RyZWFt ICpzdHJlYW0sIHZvaWQgKipwZXJfYnVmZmVyX2RhdGEpOwotZXh0ZXJuIEJsb2NrTnVtYmVy IHJlYWRfc3RyZWFtX25leHRfYmxvY2soUmVhZFN0cmVhbSAqc3RyZWFtLAotCQkJCQkJCQkJ CSAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgKnN0cmF0ZWd5KTsKK2V4dGVybiBCbG9ja051bWJl ciByZWFkX3N0cmVhbV9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSk7CiBleHRlcm4g UmVhZFN0cmVhbSAqcmVhZF9zdHJlYW1fYmVnaW5fc21ncl9yZWxhdGlvbihpbnQgZmxhZ3Ms Ci0JCQkJCQkJCQkJCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJ CQkJCQkJCSAgIFNNZ3JSZWxhdGlvbiBzbWdyLAogCQkJCQkJCQkJCQkJICAgY2hhciBzbWdy X3BlcnNpc3RlbmNlLAogCQkJCQkJCQkJCQkJICAgRm9ya051bWJlciBmb3JrbnVtLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9ndWNfaG9va3MuaAppbmRleCAzMDdmNGZiYWVmZS4uM2YyODU1OGQ0N2MgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2d1Y19ob29rcy5oCkBAIC0zMSw4ICszMSw2IEBAIGV4dGVybiB2b2lkIGFzc2ln bl9hcHBsaWNhdGlvbl9uYW1lKGNvbnN0IGNoYXIgKm5ld3ZhbCwgdm9pZCAqZXh0cmEpOwog ZXh0ZXJuIGNvbnN0IGNoYXIgKnNob3dfYXJjaGl2ZV9jb21tYW5kKHZvaWQpOwogZXh0ZXJu IGJvb2wgY2hlY2tfYXV0b3ZhY3V1bV93b3JrX21lbShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4 dHJhLAogCQkJCQkJCQkJICBHdWNTb3VyY2Ugc291cmNlKTsKLWV4dGVybiBib29sIGNoZWNr X3ZhY3V1bV9idWZmZXJfdXNhZ2VfbGltaXQoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwK LQkJCQkJCQkJCQkJR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gYm9vbCBjaGVja19iYWNr dHJhY2VfZnVuY3Rpb25zKGNoYXIgKipuZXd2YWwsIHZvaWQgKipleHRyYSwKIAkJCQkJCQkJ CSAgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gdm9pZCBhc3NpZ25fYmFja3RyYWNlX2Z1 bmN0aW9ucyhjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9haW8vdGVzdF9haW8uYwppbmRleCA2MjcwNzc1YWY3Yy4uOGQ3YjJhNzI4ZDYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLmMKQEAgLTE5NCw3ICsxOTQs NiBAQCBncm93X3JlbChQR19GVU5DVElPTl9BUkdTKQogCiAJCUV4dGVuZEJ1ZmZlcmVkUmVs QnkoQk1SX1JFTChyZWwpLAogCQkJCQkJCU1BSU5fRk9SS05VTSwKLQkJCQkJCQlOVUxMLAog CQkJCQkJCTAsCiAJCQkJCQkJZXh0ZW5kX2J5X3BhZ2VzLAogCQkJCQkJCXZpY3RpbV9idWZm ZXJzLApAQCAtMjMxLDcgKzIzMCw3IEBAIG1vZGlmeV9yZWxfYmxvY2soUEdfRlVOQ1RJT05f QVJHUykKIAlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2Nr KTsKIAogCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChyZWwsIE1BSU5fRk9SS05VTSwgYmxr bm8sCi0JCQkJCQkJIFJCTV9aRVJPX09OX0VSUk9SLCBOVUxMKTsKKwkJCQkJCQkgUkJNX1pF Uk9fT05fRVJST1IpOwogCiAJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CiAKQEAgLTMzMSw3ICszMzAsNyBAQCBjcmVhdGVfdG95X2J1ZmZlcihSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGJsa25vKQogCXVpbnQ2NAkJdW5zZXRfYml0cyA9IDA7CiAKIAkv KiBwbGFjZSBidWZmZXIgaW4gc2hhcmVkIGJ1ZmZlcnMgd2l0aG91dCBlcnJvcmluZyBvdXQg Ki8KLQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25v LCBSQk1fWkVST19BTkRfTE9DSywgTlVMTCk7CisJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVk KHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywgUkJNX1pFUk9fQU5EX0xPQ0spOwogCUxvY2tC dWZmZXIoYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogCiAJaWYgKFJlbGF0aW9uVXNlc0xv Y2FsQnVmZmVycyhyZWwpKQpAQCAtNzM3LDcgKzczNiw2IEBAIHJlYWRfYnVmZmVycyhQR19G VU5DVElPTl9BUkdTKQogCQlvcGVyYXRpb24tPnJlbCA9IHJlbDsKIAkJb3BlcmF0aW9uLT5z bWdyID0gc21ncjsKIAkJb3BlcmF0aW9uLT5wZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZTsKLQkJb3BlcmF0aW9uLT5zdHJhdGVneSA9IE5VTEw7CiAJCW9wZXJh dGlvbi0+Zm9ya251bSA9IE1BSU5fRk9SS05VTTsKIAogCQlpb19yZXFkc1tuaW9zXSA9IFN0 YXJ0UmVhZEJ1ZmZlcnMob3BlcmF0aW9uLApAQCAtODc5LDcgKzg3Nyw2IEBAIHJlYWRfc3Ry ZWFtX2Zvcl9ibG9ja3MoUEdfRlVOQ1RJT05fQVJHUykKIAlyZWwgPSByZWxhdGlvbl9vcGVu KHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOwogCiAJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVMTCwKLQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJ CQkJCXJlbCwKIAkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCiAJCQkJCQkJCQkJcmVhZF9zdHJl YW1fZm9yX2Jsb2Nrc19jYiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKaW5k ZXggMDNjYmMxY2RlZjUuLmJlYjg3NmM0OGI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N0YXRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N0YXRzLm91dApAQCAtMTYsMjIgKzE2LDE2IEBAIFNIT1cgdHJhY2tfY291bnRzOyAgLS0g bXVzdCBiZSBvbgogU0VMRUNUIGJhY2tlbmRfdHlwZSwgb2JqZWN0LCBjb250ZXh0IEZST00g cGdfc3RhdF9pbwogICBPUkRFUiBCWSBiYWNrZW5kX3R5cGUgQ09MTEFURSAiQyIsIG9iamVj dCBDT0xMQVRFICJDIiwgY29udGV4dCBDT0xMQVRFICJDIjsKIGJhY2tlbmRfdHlwZXxvYmpl Y3R8Y29udGV4dAotYXV0b3ZhY3V1bSBsYXVuY2hlcnxyZWxhdGlvbnxidWxrcmVhZAogYXV0 b3ZhY3V1bSBsYXVuY2hlcnxyZWxhdGlvbnxpbml0CiBhdXRvdmFjdXVtIGxhdW5jaGVyfHJl bGF0aW9ufG5vcm1hbAogYXV0b3ZhY3V1bSBsYXVuY2hlcnx3YWx8aW5pdAogYXV0b3ZhY3V1 bSBsYXVuY2hlcnx3YWx8bm9ybWFsCi1hdXRvdmFjdXVtIHdvcmtlcnxyZWxhdGlvbnxidWxr cmVhZAogYXV0b3ZhY3V1bSB3b3JrZXJ8cmVsYXRpb258aW5pdAogYXV0b3ZhY3V1bSB3b3Jr ZXJ8cmVsYXRpb258bm9ybWFsCi1hdXRvdmFjdXVtIHdvcmtlcnxyZWxhdGlvbnx2YWN1dW0K IGF1dG92YWN1dW0gd29ya2VyfHdhbHxpbml0CiBhdXRvdmFjdXVtIHdvcmtlcnx3YWx8bm9y bWFsCi1iYWNrZ3JvdW5kIHdvcmtlcnxyZWxhdGlvbnxidWxrcmVhZAotYmFja2dyb3VuZCB3 b3JrZXJ8cmVsYXRpb258YnVsa3dyaXRlCiBiYWNrZ3JvdW5kIHdvcmtlcnxyZWxhdGlvbnxp bml0CiBiYWNrZ3JvdW5kIHdvcmtlcnxyZWxhdGlvbnxub3JtYWwKLWJhY2tncm91bmQgd29y a2VyfHJlbGF0aW9ufHZhY3V1bQogYmFja2dyb3VuZCB3b3JrZXJ8dGVtcCByZWxhdGlvbnxu b3JtYWwKIGJhY2tncm91bmQgd29ya2VyfHdhbHxpbml0CiBiYWNrZ3JvdW5kIHdvcmtlcnx3 YWx8bm9ybWFsCkBAIC00Myw2NyArMzcsNDMgQEAgY2hlY2twb2ludGVyfHJlbGF0aW9ufGlu aXQKIGNoZWNrcG9pbnRlcnxyZWxhdGlvbnxub3JtYWwKIGNoZWNrcG9pbnRlcnx3YWx8aW5p dAogY2hlY2twb2ludGVyfHdhbHxub3JtYWwKLWNsaWVudCBiYWNrZW5kfHJlbGF0aW9ufGJ1 bGtyZWFkCi1jbGllbnQgYmFja2VuZHxyZWxhdGlvbnxidWxrd3JpdGUKIGNsaWVudCBiYWNr ZW5kfHJlbGF0aW9ufGluaXQKIGNsaWVudCBiYWNrZW5kfHJlbGF0aW9ufG5vcm1hbAotY2xp ZW50IGJhY2tlbmR8cmVsYXRpb258dmFjdXVtCiBjbGllbnQgYmFja2VuZHx0ZW1wIHJlbGF0 aW9ufG5vcm1hbAogY2xpZW50IGJhY2tlbmR8d2FsfGluaXQKIGNsaWVudCBiYWNrZW5kfHdh bHxub3JtYWwKLWRhdGFjaGVja3N1bXMgbGF1bmNoZXJ8cmVsYXRpb258YnVsa3JlYWQKLWRh dGFjaGVja3N1bXMgbGF1bmNoZXJ8cmVsYXRpb258YnVsa3dyaXRlCiBkYXRhY2hlY2tzdW1z IGxhdW5jaGVyfHJlbGF0aW9ufGluaXQKIGRhdGFjaGVja3N1bXMgbGF1bmNoZXJ8cmVsYXRp b258bm9ybWFsCi1kYXRhY2hlY2tzdW1zIGxhdW5jaGVyfHJlbGF0aW9ufHZhY3V1bQogZGF0 YWNoZWNrc3VtcyBsYXVuY2hlcnx0ZW1wIHJlbGF0aW9ufG5vcm1hbAogZGF0YWNoZWNrc3Vt cyBsYXVuY2hlcnx3YWx8aW5pdAogZGF0YWNoZWNrc3VtcyBsYXVuY2hlcnx3YWx8bm9ybWFs Ci1kYXRhY2hlY2tzdW1zIHdvcmtlcnxyZWxhdGlvbnxidWxrcmVhZAotZGF0YWNoZWNrc3Vt cyB3b3JrZXJ8cmVsYXRpb258YnVsa3dyaXRlCiBkYXRhY2hlY2tzdW1zIHdvcmtlcnxyZWxh dGlvbnxpbml0CiBkYXRhY2hlY2tzdW1zIHdvcmtlcnxyZWxhdGlvbnxub3JtYWwKLWRhdGFj aGVja3N1bXMgd29ya2VyfHJlbGF0aW9ufHZhY3V1bQogZGF0YWNoZWNrc3VtcyB3b3JrZXJ8 dGVtcCByZWxhdGlvbnxub3JtYWwKIGRhdGFjaGVja3N1bXMgd29ya2VyfHdhbHxpbml0CiBk YXRhY2hlY2tzdW1zIHdvcmtlcnx3YWx8bm9ybWFsCi1pbyB3b3JrZXJ8cmVsYXRpb258YnVs a3JlYWQKLWlvIHdvcmtlcnxyZWxhdGlvbnxidWxrd3JpdGUKIGlvIHdvcmtlcnxyZWxhdGlv bnxpbml0CiBpbyB3b3JrZXJ8cmVsYXRpb258bm9ybWFsCi1pbyB3b3JrZXJ8cmVsYXRpb258 dmFjdXVtCiBpbyB3b3JrZXJ8dGVtcCByZWxhdGlvbnxub3JtYWwKIGlvIHdvcmtlcnx3YWx8 aW5pdAogaW8gd29ya2VyfHdhbHxub3JtYWwKLXNsb3RzeW5jIHdvcmtlcnxyZWxhdGlvbnxi dWxrcmVhZAotc2xvdHN5bmMgd29ya2VyfHJlbGF0aW9ufGJ1bGt3cml0ZQogc2xvdHN5bmMg d29ya2VyfHJlbGF0aW9ufGluaXQKIHNsb3RzeW5jIHdvcmtlcnxyZWxhdGlvbnxub3JtYWwK LXNsb3RzeW5jIHdvcmtlcnxyZWxhdGlvbnx2YWN1dW0KIHNsb3RzeW5jIHdvcmtlcnx0ZW1w IHJlbGF0aW9ufG5vcm1hbAogc2xvdHN5bmMgd29ya2VyfHdhbHxpbml0CiBzbG90c3luYyB3 b3JrZXJ8d2FsfG5vcm1hbAotc3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0aW9ufGJ1bGtyZWFk Ci1zdGFuZGFsb25lIGJhY2tlbmR8cmVsYXRpb258YnVsa3dyaXRlCiBzdGFuZGFsb25lIGJh Y2tlbmR8cmVsYXRpb258aW5pdAogc3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0aW9ufG5vcm1h bAotc3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0aW9ufHZhY3V1bQogc3RhbmRhbG9uZSBiYWNr ZW5kfHdhbHxpbml0CiBzdGFuZGFsb25lIGJhY2tlbmR8d2FsfG5vcm1hbAotc3RhcnR1cHxy ZWxhdGlvbnxidWxrcmVhZAotc3RhcnR1cHxyZWxhdGlvbnxidWxrd3JpdGUKIHN0YXJ0dXB8 cmVsYXRpb258aW5pdAogc3RhcnR1cHxyZWxhdGlvbnxub3JtYWwKLXN0YXJ0dXB8cmVsYXRp b258dmFjdXVtCiBzdGFydHVwfHdhbHxpbml0CiBzdGFydHVwfHdhbHxub3JtYWwKIHdhbHJl Y2VpdmVyfHdhbHxpbml0CiB3YWxyZWNlaXZlcnx3YWx8bm9ybWFsCi13YWxzZW5kZXJ8cmVs YXRpb258YnVsa3JlYWQKLXdhbHNlbmRlcnxyZWxhdGlvbnxidWxrd3JpdGUKIHdhbHNlbmRl cnxyZWxhdGlvbnxpbml0CiB3YWxzZW5kZXJ8cmVsYXRpb258bm9ybWFsCi13YWxzZW5kZXJ8 cmVsYXRpb258dmFjdXVtCiB3YWxzZW5kZXJ8dGVtcCByZWxhdGlvbnxub3JtYWwKIHdhbHNl bmRlcnx3YWx8aW5pdAogd2Fsc2VuZGVyfHdhbHxub3JtYWwKQEAgLTExMSw3ICs4MSw3IEBA IHdhbHN1bW1hcml6ZXJ8d2FsfGluaXQKIHdhbHN1bW1hcml6ZXJ8d2FsfG5vcm1hbAogd2Fs d3JpdGVyfHdhbHxpbml0CiB3YWx3cml0ZXJ8d2FsfG5vcm1hbAotKDk1IHJvd3MpCisoNjUg cm93cykKIFxhCiAtLSBMaXN0IG9mIHJlZ2lzdGVyZWQgc3RhdGlzdGljcyBraW5kcy4KIFNF TEVDVCBpZCwgbmFtZSwgZml4ZWRfYW1vdW50LApAQCAtMTc1Nyw4MCArMTcyNywyMCBAQCBT RUxFQ1QgOmlvX3N1bV9sb2NhbF9uZXdfdGJsc3BjX3dyaXRlcyA+IDppb19zdW1fbG9jYWxf YWZ0ZXJfd3JpdGVzOwogKDEgcm93KQogCiBSRVNFVCB0ZW1wX2J1ZmZlcnM7Ci0tLSBUZXN0 IHRoYXQgcmV1c2Ugb2Ygc3RyYXRlZ3kgYnVmZmVycyBhbmQgcmVhZHMgb2YgYmxvY2tzIGlu dG8gdGhlc2UgcmV1c2VkCi0tLSBidWZmZXJzIHdoaWxlIFZBQ1VVTWluZyBhcmUgdHJhY2tl ZCBpbiBwZ19zdGF0X2lvLiBJZiB0aGVyZSBpcyBzdWZmaWNpZW50Ci0tLSBkZW1hbmQgZm9y IHNoYXJlZCBidWZmZXJzIGZyb20gY29uY3VycmVudCBxdWVyaWVzLCBzb21lIGJ1ZmZlcnMg bWF5IGJlCi0tLSBwaW5uZWQgYnkgb3RoZXIgYmFja2VuZHMgYmVmb3JlIHRoZXkgY2FuIGJl IHJldXNlZC4gSW4gc3VjaCBjYXNlcywgdGhlCi0tLSBiYWNrZW5kIHdpbGwgZXZpY3QgYSBi dWZmZXIgZnJvbSBvdXRzaWRlIHRoZSByaW5nIGFuZCBhZGQgaXQgdG8gdGhlCi0tLSByaW5n LiBUaGlzIGlzIGNvbnNpZGVyZWQgYW4gZXZpY3Rpb24gYW5kIG5vdCBhIHJldXNlLgotLS0g U2V0IHdhbF9za2lwX3RocmVzaG9sZCBzbWFsbGVyIHRoYW4gdGhlIGV4cGVjdGVkIHNpemUg b2YKLS0tIHRlc3RfaW9fdmFjX3N0cmF0ZWd5IHNvIHRoYXQsIGV2ZW4gaWYgd2FsX2xldmVs IGlzIG1pbmltYWwsIFZBQ1VVTSBGVUxMIHdpbGwKLS0tIGZzeW5jIHRoZSBuZXdseSByZXdy aXR0ZW4gdGVzdF9pb192YWNfc3RyYXRlZ3kgaW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIFdB TC4KLS0tIFdyaXRpbmcgaXQgdG8gV0FMIHdpbGwgcmVzdWx0IGluIHRoZSBuZXdseSB3cml0 dGVuIHJlbGF0aW9uIHBhZ2VzIGJlaW5nIGluCi0tLSBzaGFyZWQgYnVmZmVycyAtLSBwcmV2 ZW50aW5nIHVzIGZyb20gdGVzdGluZyBCQVNfVkFDVVVNIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 Ci0tLSByZWFkcy4KLVNFVCB3YWxfc2tpcF90aHJlc2hvbGQgPSAnMSBrQic7Ci1TRUxFQ1Qg c3VtKHJldXNlcykgQVMgcmV1c2VzLCBzdW0ocmVhZHMpIEFTIHJlYWRzLCBzdW0oZXZpY3Rp b25zKSBBUyBldmljdGlvbnMKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAn dmFjdXVtJyBcZ3NldCBpb19zdW1fdmFjX3N0cmF0ZWd5X2JlZm9yZV8KLUNSRUFURSBUQUJM RSB0ZXN0X2lvX3ZhY19zdHJhdGVneShhIGludCwgYiBpbnQpIFdJVEggKGF1dG92YWN1dW1f ZW5hYmxlZCA9ICdmYWxzZScpOwotSU5TRVJUIElOVE8gdGVzdF9pb192YWNfc3RyYXRlZ3kg U0VMRUNUIGksIGkgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDUwMClpOwotLS0gRW5zdXJl IHRoYXQgdGhlIG5leHQgVkFDVVVNIHdpbGwgbmVlZCB0byBwZXJmb3JtIElPIGJ5IHJld3Jp dGluZyB0aGUgdGFibGUKLS0tIGZpcnN0IHdpdGggVkFDVVVNIChGVUxMKS4KLVZBQ1VVTSAo RlVMTCkgdGVzdF9pb192YWNfc3RyYXRlZ3k7Ci0tLSBVc2UgdGhlIG1pbmltdW0gQlVGRkVS X1VTQUdFX0xJTUlUIHRvIGNhdXNlIHJldXNlcyBvciBldmljdGlvbnMgd2l0aCB0aGUKLS0t IHNtYWxsZXN0IHRhYmxlIHBvc3NpYmxlLgotVkFDVVVNIChQQVJBTExFTCAwLCBCVUZGRVJf VVNBR0VfTElNSVQgMTI4KSB0ZXN0X2lvX3ZhY19zdHJhdGVneTsKLVNFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKLSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1Qgc3VtKHJldXNl cykgQVMgcmV1c2VzLCBzdW0ocmVhZHMpIEFTIHJlYWRzLCBzdW0oZXZpY3Rpb25zKSBBUyBl dmljdGlvbnMKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAndmFjdXVtJyBc Z3NldCBpb19zdW1fdmFjX3N0cmF0ZWd5X2FmdGVyXwotU0VMRUNUIDppb19zdW1fdmFjX3N0 cmF0ZWd5X2FmdGVyX3JlYWRzID4gOmlvX3N1bV92YWNfc3RyYXRlZ3lfYmVmb3JlX3JlYWRz OwotID9jb2x1bW4/IAotLS0tLS0tLS0tLQotIHQKLSgxIHJvdykKLQotU0VMRUNUICg6aW9f c3VtX3ZhY19zdHJhdGVneV9hZnRlcl9yZXVzZXMgKyA6aW9fc3VtX3ZhY19zdHJhdGVneV9h ZnRlcl9ldmljdGlvbnMpID4KLSAgKDppb19zdW1fdmFjX3N0cmF0ZWd5X2JlZm9yZV9yZXVz ZXMgKyA6aW9fc3VtX3ZhY19zdHJhdGVneV9iZWZvcmVfZXZpY3Rpb25zKTsKLSA/Y29sdW1u PyAKLS0tLS0tLS0tLS0KLSB0Ci0oMSByb3cpCi0KLVJFU0VUIHdhbF9za2lwX3RocmVzaG9s ZDsKLS0tIFRlc3QgdGhhdCBleHRlbmRzIGRvbmUgYnkgYSBDVEFTLCB3aGljaCB1c2VzIGEg QkFTX0JVTEtXUklURQotLS0gQnVmZmVyQWNjZXNzU3RyYXRlZ3ksIGFyZSB0cmFja2VkIGlu IHBnX3N0YXRfaW8uCi1TRUxFQ1Qgc3VtKGV4dGVuZHMpIEFTIGlvX3N1bV9idWxrd3JpdGVf c3RyYXRlZ3lfZXh0ZW5kc19iZWZvcmUKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRl eHQgPSAnYnVsa3dyaXRlJyBcZ3NldAotQ1JFQVRFIFRBQkxFIHRlc3RfaW9fYnVsa3dyaXRl X3N0cmF0ZWd5IEFTIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKWk7Ci1T RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Ci0gcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VM RUNUIHN1bShleHRlbmRzKSBBUyBpb19zdW1fYnVsa3dyaXRlX3N0cmF0ZWd5X2V4dGVuZHNf YWZ0ZXIKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAnYnVsa3dyaXRlJyBc Z3NldAotU0VMRUNUIDppb19zdW1fYnVsa3dyaXRlX3N0cmF0ZWd5X2V4dGVuZHNfYWZ0ZXIg PiA6aW9fc3VtX2J1bGt3cml0ZV9zdHJhdGVneV9leHRlbmRzX2JlZm9yZTsKLSA/Y29sdW1u PyAKLS0tLS0tLS0tLS0KLSB0Ci0oMSByb3cpCi0KIC0tIFRlc3QgSU8gc3RhdHMgcmVzZXQK Ky0tIE5vdGU6IHJldXNlcyBpcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIGZyb20gdGhlc2Ug dG90YWxzLiAgV2l0aCB0aGUKKy0tIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHJpbmcgYnVmZmVy cyByZW1vdmVkLCBJT09QX1JFVVNFIGlzIG5ldmVyIHRyYWNrZWQsIHNvCistLSB0aGUgcmV1 c2VzIGNvbHVtbiBpcyBOVUxMIGZvciBldmVyeSByb3c7IHN1bW1pbmcgaXQgd291bGQgbWFr ZSB0aGUgd2hvbGUKKy0tIHRvdGFsIE5VTEwuCiBTRUxFQ1QgcGdfc3RhdF9oYXZlX3N0YXRz KCdpbycsIDAsIDApOwogIHBnX3N0YXRfaGF2ZV9zdGF0cyAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgdAogKDEgcm93KQogCi1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1c2Vz KSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0 ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIGlvX3N0YXRzX3ByZV9yZXNl dAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMpICsgc3VtKGZzeW5jcykg KyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNrcykgKyBzdW0oaGl0 cykgQVMgaW9fc3RhdHNfcHJlX3Jlc2V0CiAgIEZST00gcGdfc3RhdF9pbyBcZ3NldAotU0VM RUNUIHN1bShldmljdGlvbnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0ZW5kcykgKyBzdW0o ZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSAr IHN1bShoaXRzKSBBUyBteV9pb19zdGF0c19wcmVfcmVzZXQKK1NFTEVDVCBzdW0oZXZpY3Rp b25zKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3 cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3By ZV9yZXNldAogICBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaW8ocGdfYmFja2VuZF9waWQo KSkgXGdzZXQKIFNFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgnaW8nKTsKICBwZ19zdGF0 X3Jlc2V0X3NoYXJlZCAKQEAgLTE4MzgsNyArMTc0OCw3IEBAIFNFTEVDVCBwZ19zdGF0X3Jl c2V0X3NoYXJlZCgnaW8nKTsKICAKICgxIHJvdykKIAotU0VMRUNUIHN1bShldmljdGlvbnMp ICsgc3VtKHJldXNlcykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFk cykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBpb19z dGF0c19wb3N0X3Jlc2V0CitTRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0oZXh0ZW5kcykg KyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJh Y2tzKSArIHN1bShoaXRzKSBBUyBpb19zdGF0c19wb3N0X3Jlc2V0CiAgIEZST00gcGdfc3Rh dF9pbyBcZ3NldAogU0VMRUNUIDppb19zdGF0c19wb3N0X3Jlc2V0IDwgOmlvX3N0YXRzX3By ZV9yZXNldDsKICA/Y29sdW1uPyAKQEAgLTE4NDYsNyArMTc1Niw3IEBAIFNFTEVDVCA6aW9f c3RhdHNfcG9zdF9yZXNldCA8IDppb19zdGF0c19wcmVfcmVzZXQ7CiAgdAogKDEgcm93KQog Ci1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1c2VzKSArIHN1bShleHRlbmRzKSAr IHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFj a3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bvc3RfcmVzZXQKK1NFTEVDVCBzdW0o ZXZpY3Rpb25zKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSAr IHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0 YXRzX3Bvc3RfcmVzZXQKICAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lvKHBnX2JhY2tl bmRfcGlkKCkpIFxnc2V0CiAtLSBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgpIGRpZCBub3QgcmVz ZXQgYmFja2VuZCBJTyBzdGF0cwogU0VMRUNUIDpteV9pb19zdGF0c19wcmVfcmVzZXQgPD0g Om15X2lvX3N0YXRzX3Bvc3RfcmVzZXQ7CkBAIC0xODYyLDcgKzE3NzIsNyBAQCBTRUxFQ1Qg cGdfc3RhdF9yZXNldF9iYWNrZW5kX3N0YXRzKHBnX2JhY2tlbmRfcGlkKCkpOwogIAogKDEg cm93KQogCi1TRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0ocmV1c2VzKSArIHN1bShleHRl bmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdy aXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bvc3RfYmFja2VuZF9yZXNl dAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMpICsgc3VtKGZzeW5jcykg KyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNrcykgKyBzdW0oaGl0 cykgQVMgbXlfaW9fc3RhdHNfcG9zdF9iYWNrZW5kX3Jlc2V0CiAgIEZST00gcGdfc3RhdF9n ZXRfYmFja2VuZF9pbyhwZ19iYWNrZW5kX3BpZCgpKSBcZ3NldAogU0VMRUNUIDpteV9pb19z dGF0c19wcmVfcmVzZXQgPiA6bXlfaW9fc3RhdHNfcG9zdF9iYWNrZW5kX3Jlc2V0OwogID9j b2x1bW4/IApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0CmluZGV4IGQ0Njk2 YmMzMzI1Li44NWQwNjkwN2NlYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC92YWN1dW0ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVt Lm91dApAQCAtNTI2LDI1ICs1MjYsNiBAQCBTRUxFQ1QgdC5yZWxmaWxlbm9kZSA9IDp0b2Fz dF9maWxlbm9kZSBBUyBpc19zYW1lX3RvYXN0X2ZpbGVub2RlCiAgZgogKDEgcm93KQogCi0t LSBCVUZGRVJfVVNBR0VfTElNSVQgb3B0aW9uCi1WQUNVVU0gKEJVRkZFUl9VU0FHRV9MSU1J VCAnNTEyIGtCJykgdmFjX29wdGlvbl90YWI7Ci1BTkFMWVpFIChCVUZGRVJfVVNBR0VfTElN SVQgJzUxMiBrQicpIHZhY19vcHRpb25fdGFiOwotLS0gdHJ5IGRpc2FibGluZyB0aGUgYnVm ZmVyIHVzYWdlIGxpbWl0Ci1WQUNVVU0gKEJVRkZFUl9VU0FHRV9MSU1JVCAwKSB2YWNfb3B0 aW9uX3RhYjsKLUFOQUxZWkUgKEJVRkZFUl9VU0FHRV9MSU1JVCAwKSB2YWNfb3B0aW9uX3Rh YjsKLS0tIHZhbHVlIGV4Y2VlZHMgbWF4IHNpemUgZXJyb3IKLVZBQ1VVTSAoQlVGRkVSX1VT QUdFX0xJTUlUIDE2Nzc3MjIwKSB2YWNfb3B0aW9uX3RhYjsKLUVSUk9SOiAgQlVGRkVSX1VT QUdFX0xJTUlUIG9wdGlvbiBtdXN0IGJlIDAgb3IgYmV0d2VlbiAxMjgga0IgYW5kIDE2Nzc3 MjE2IGtCCi0tLSB2YWx1ZSBpcyBsZXNzIHRoYW4gbWluIHNpemUgZXJyb3IKLVZBQ1VVTSAo QlVGRkVSX1VTQUdFX0xJTUlUIDEyMCkgdmFjX29wdGlvbl90YWI7Ci1FUlJPUjogIEJVRkZF Ul9VU0FHRV9MSU1JVCBvcHRpb24gbXVzdCBiZSAwIG9yIGJldHdlZW4gMTI4IGtCIGFuZCAx Njc3NzIxNiBrQgotLS0gaW50ZWdlciBvdmVyZmxvdyBlcnJvcgotVkFDVVVNIChCVUZGRVJf VVNBR0VfTElNSVQgMTAwMDAwMDAwMDApIHZhY19vcHRpb25fdGFiOwotRVJST1I6ICBCVUZG RVJfVVNBR0VfTElNSVQgb3B0aW9uIG11c3QgYmUgMCBvciBiZXR3ZWVuIDEyOCBrQiBhbmQg MTY3NzcyMTYga0IKLUhJTlQ6ICBWYWx1ZSBleGNlZWRzIGludGVnZXIgcmFuZ2UuCi0tLSBp bmNvbXBhdGlibGUgd2l0aCBWQUNVVU0gRlVMTCBlcnJvcgotVkFDVVVNIChCVUZGRVJfVVNB R0VfTElNSVQgJzUxMiBrQicsIEZVTEwpIHZhY19vcHRpb25fdGFiOwotRVJST1I6ICBCVUZG RVJfVVNBR0VfTElNSVQgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgVkFDVVVNIEZVTEwKIC0t IFNLSVBfREFUQUJBU0VfU1RBVFMgb3B0aW9uCiBWQUNVVU0gKFNLSVBfREFUQUJBU0VfU1RB VFMpIHZhY3RzdDsKIC0tIE9OTFlfREFUQUJBU0VfU1RBVFMgb3B0aW9uCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdGF0cy5zcWwKaW5kZXggNGMyNjVkMTI0NWMuLjRlYjQ4MTE0ZTgwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RhdHMuc3FsCkBAIC04MTQsNjUgKzgxNCwyNyBAQCBTRUxFQ1Qgc3VtKHdyaXRl cykgQVMgaW9fc3VtX2xvY2FsX25ld190YmxzcGNfd3JpdGVzCiBTRUxFQ1QgOmlvX3N1bV9s b2NhbF9uZXdfdGJsc3BjX3dyaXRlcyA+IDppb19zdW1fbG9jYWxfYWZ0ZXJfd3JpdGVzOwog UkVTRVQgdGVtcF9idWZmZXJzOwogCi0tLSBUZXN0IHRoYXQgcmV1c2Ugb2Ygc3RyYXRlZ3kg YnVmZmVycyBhbmQgcmVhZHMgb2YgYmxvY2tzIGludG8gdGhlc2UgcmV1c2VkCi0tLSBidWZm ZXJzIHdoaWxlIFZBQ1VVTWluZyBhcmUgdHJhY2tlZCBpbiBwZ19zdGF0X2lvLiBJZiB0aGVy ZSBpcyBzdWZmaWNpZW50Ci0tLSBkZW1hbmQgZm9yIHNoYXJlZCBidWZmZXJzIGZyb20gY29u Y3VycmVudCBxdWVyaWVzLCBzb21lIGJ1ZmZlcnMgbWF5IGJlCi0tLSBwaW5uZWQgYnkgb3Ro ZXIgYmFja2VuZHMgYmVmb3JlIHRoZXkgY2FuIGJlIHJldXNlZC4gSW4gc3VjaCBjYXNlcywg dGhlCi0tLSBiYWNrZW5kIHdpbGwgZXZpY3QgYSBidWZmZXIgZnJvbSBvdXRzaWRlIHRoZSBy aW5nIGFuZCBhZGQgaXQgdG8gdGhlCi0tLSByaW5nLiBUaGlzIGlzIGNvbnNpZGVyZWQgYW4g ZXZpY3Rpb24gYW5kIG5vdCBhIHJldXNlLgotCi0tLSBTZXQgd2FsX3NraXBfdGhyZXNob2xk IHNtYWxsZXIgdGhhbiB0aGUgZXhwZWN0ZWQgc2l6ZSBvZgotLS0gdGVzdF9pb192YWNfc3Ry YXRlZ3kgc28gdGhhdCwgZXZlbiBpZiB3YWxfbGV2ZWwgaXMgbWluaW1hbCwgVkFDVVVNIEZV TEwgd2lsbAotLS0gZnN5bmMgdGhlIG5ld2x5IHJld3JpdHRlbiB0ZXN0X2lvX3ZhY19zdHJh dGVneSBpbnN0ZWFkIG9mIHdyaXRpbmcgaXQgdG8gV0FMLgotLS0gV3JpdGluZyBpdCB0byBX QUwgd2lsbCByZXN1bHQgaW4gdGhlIG5ld2x5IHdyaXR0ZW4gcmVsYXRpb24gcGFnZXMgYmVp bmcgaW4KLS0tIHNoYXJlZCBidWZmZXJzIC0tIHByZXZlbnRpbmcgdXMgZnJvbSB0ZXN0aW5n IEJBU19WQUNVVU0gQnVmZmVyQWNjZXNzU3RyYXRlZ3kKLS0tIHJlYWRzLgotU0VUIHdhbF9z a2lwX3RocmVzaG9sZCA9ICcxIGtCJzsKLVNFTEVDVCBzdW0ocmV1c2VzKSBBUyByZXVzZXMs IHN1bShyZWFkcykgQVMgcmVhZHMsIHN1bShldmljdGlvbnMpIEFTIGV2aWN0aW9ucwotICBG Uk9NIHBnX3N0YXRfaW8gV0hFUkUgY29udGV4dCA9ICd2YWN1dW0nIFxnc2V0IGlvX3N1bV92 YWNfc3RyYXRlZ3lfYmVmb3JlXwotQ1JFQVRFIFRBQkxFIHRlc3RfaW9fdmFjX3N0cmF0ZWd5 KGEgaW50LCBiIGludCkgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gJ2ZhbHNlJyk7Ci1J TlNFUlQgSU5UTyB0ZXN0X2lvX3ZhY19zdHJhdGVneSBTRUxFQ1QgaSwgaSBmcm9tIGdlbmVy YXRlX3NlcmllcygxLCA0NTAwKWk7Ci0tLSBFbnN1cmUgdGhhdCB0aGUgbmV4dCBWQUNVVU0g d2lsbCBuZWVkIHRvIHBlcmZvcm0gSU8gYnkgcmV3cml0aW5nIHRoZSB0YWJsZQotLS0gZmly c3Qgd2l0aCBWQUNVVU0gKEZVTEwpLgotVkFDVVVNIChGVUxMKSB0ZXN0X2lvX3ZhY19zdHJh dGVneTsKLS0tIFVzZSB0aGUgbWluaW11bSBCVUZGRVJfVVNBR0VfTElNSVQgdG8gY2F1c2Ug cmV1c2VzIG9yIGV2aWN0aW9ucyB3aXRoIHRoZQotLS0gc21hbGxlc3QgdGFibGUgcG9zc2li bGUuCi1WQUNVVU0gKFBBUkFMTEVMIDAsIEJVRkZFUl9VU0FHRV9MSU1JVCAxMjgpIHRlc3Rf aW9fdmFjX3N0cmF0ZWd5OwotU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwot U0VMRUNUIHN1bShyZXVzZXMpIEFTIHJldXNlcywgc3VtKHJlYWRzKSBBUyByZWFkcywgc3Vt KGV2aWN0aW9ucykgQVMgZXZpY3Rpb25zCi0gIEZST00gcGdfc3RhdF9pbyBXSEVSRSBjb250 ZXh0ID0gJ3ZhY3V1bScgXGdzZXQgaW9fc3VtX3ZhY19zdHJhdGVneV9hZnRlcl8KLVNFTEVD VCA6aW9fc3VtX3ZhY19zdHJhdGVneV9hZnRlcl9yZWFkcyA+IDppb19zdW1fdmFjX3N0cmF0 ZWd5X2JlZm9yZV9yZWFkczsKLVNFTEVDVCAoOmlvX3N1bV92YWNfc3RyYXRlZ3lfYWZ0ZXJf cmV1c2VzICsgOmlvX3N1bV92YWNfc3RyYXRlZ3lfYWZ0ZXJfZXZpY3Rpb25zKSA+Ci0gICg6 aW9fc3VtX3ZhY19zdHJhdGVneV9iZWZvcmVfcmV1c2VzICsgOmlvX3N1bV92YWNfc3RyYXRl Z3lfYmVmb3JlX2V2aWN0aW9ucyk7Ci1SRVNFVCB3YWxfc2tpcF90aHJlc2hvbGQ7Ci0KLS0t IFRlc3QgdGhhdCBleHRlbmRzIGRvbmUgYnkgYSBDVEFTLCB3aGljaCB1c2VzIGEgQkFTX0JV TEtXUklURQotLS0gQnVmZmVyQWNjZXNzU3RyYXRlZ3ksIGFyZSB0cmFja2VkIGluIHBnX3N0 YXRfaW8uCi1TRUxFQ1Qgc3VtKGV4dGVuZHMpIEFTIGlvX3N1bV9idWxrd3JpdGVfc3RyYXRl Z3lfZXh0ZW5kc19iZWZvcmUKLSAgRlJPTSBwZ19zdGF0X2lvIFdIRVJFIGNvbnRleHQgPSAn YnVsa3dyaXRlJyBcZ3NldAotQ1JFQVRFIFRBQkxFIHRlc3RfaW9fYnVsa3dyaXRlX3N0cmF0 ZWd5IEFTIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKWk7Ci1TRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Ci1TRUxFQ1Qgc3VtKGV4dGVuZHMpIEFTIGlv X3N1bV9idWxrd3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19hZnRlcgotICBGUk9NIHBnX3N0YXRf aW8gV0hFUkUgY29udGV4dCA9ICdidWxrd3JpdGUnIFxnc2V0Ci1TRUxFQ1QgOmlvX3N1bV9i dWxrd3JpdGVfc3RyYXRlZ3lfZXh0ZW5kc19hZnRlciA+IDppb19zdW1fYnVsa3dyaXRlX3N0 cmF0ZWd5X2V4dGVuZHNfYmVmb3JlOwotCiAtLSBUZXN0IElPIHN0YXRzIHJlc2V0CistLSBO b3RlOiByZXVzZXMgaXMgaW50ZW50aW9uYWxseSBleGNsdWRlZCBmcm9tIHRoZXNlIHRvdGFs cy4gIFdpdGggdGhlCistLSBCdWZmZXJBY2Nlc3NTdHJhdGVneSByaW5nIGJ1ZmZlcnMgcmVt b3ZlZCwgSU9PUF9SRVVTRSBpcyBuZXZlciB0cmFja2VkLCBzbworLS0gdGhlIHJldXNlcyBj b2x1bW4gaXMgTlVMTCBmb3IgZXZlcnkgcm93OyBzdW1taW5nIGl0IHdvdWxkIG1ha2UgdGhl IHdob2xlCistLSB0b3RhbCBOVUxMLgogU0VMRUNUIHBnX3N0YXRfaGF2ZV9zdGF0cygnaW8n LCAwLCAwKTsKLVNFTEVDVCBzdW0oZXZpY3Rpb25zKSArIHN1bShyZXVzZXMpICsgc3VtKGV4 dGVuZHMpICsgc3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0o d3JpdGViYWNrcykgKyBzdW0oaGl0cykgQVMgaW9fc3RhdHNfcHJlX3Jlc2V0CitTRUxFQ1Qg c3VtKGV2aWN0aW9ucykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFk cykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBpb19z dGF0c19wcmVfcmVzZXQKICAgRlJPTSBwZ19zdGF0X2lvIFxnc2V0Ci1TRUxFQ1Qgc3VtKGV2 aWN0aW9ucykgKyBzdW0ocmV1c2VzKSArIHN1bShleHRlbmRzKSArIHN1bShmc3luY3MpICsg c3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdyaXRlYmFja3MpICsgc3VtKGhpdHMp IEFTIG15X2lvX3N0YXRzX3ByZV9yZXNldAorU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3Vt KGV4dGVuZHMpICsgc3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBz dW0od3JpdGViYWNrcykgKyBzdW0oaGl0cykgQVMgbXlfaW9fc3RhdHNfcHJlX3Jlc2V0CiAg IEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pbyhwZ19iYWNrZW5kX3BpZCgpKSBcZ3NldAog U0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCdpbycpOwotU0VMRUNUIHN1bShldmljdGlv bnMpICsgc3VtKHJldXNlcykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShy ZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBp b19zdGF0c19wb3N0X3Jlc2V0CitTRUxFQ1Qgc3VtKGV2aWN0aW9ucykgKyBzdW0oZXh0ZW5k cykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBzdW0od3JpdGVzKSArIHN1bSh3cml0 ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBpb19zdGF0c19wb3N0X3Jlc2V0CiAgIEZST00gcGdf c3RhdF9pbyBcZ3NldAogU0VMRUNUIDppb19zdGF0c19wb3N0X3Jlc2V0IDwgOmlvX3N0YXRz X3ByZV9yZXNldDsKLVNFTEVDVCBzdW0oZXZpY3Rpb25zKSArIHN1bShyZXVzZXMpICsgc3Vt KGV4dGVuZHMpICsgc3VtKGZzeW5jcykgKyBzdW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBz dW0od3JpdGViYWNrcykgKyBzdW0oaGl0cykgQVMgbXlfaW9fc3RhdHNfcG9zdF9yZXNldAor U0VMRUNUIHN1bShldmljdGlvbnMpICsgc3VtKGV4dGVuZHMpICsgc3VtKGZzeW5jcykgKyBz dW0ocmVhZHMpICsgc3VtKHdyaXRlcykgKyBzdW0od3JpdGViYWNrcykgKyBzdW0oaGl0cykg QVMgbXlfaW9fc3RhdHNfcG9zdF9yZXNldAogICBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRf aW8ocGdfYmFja2VuZF9waWQoKSkgXGdzZXQKIC0tIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCkg ZGlkIG5vdCByZXNldCBiYWNrZW5kIElPIHN0YXRzCiBTRUxFQ1QgOm15X2lvX3N0YXRzX3By ZV9yZXNldCA8PSA6bXlfaW9fc3RhdHNfcG9zdF9yZXNldDsKIC0tIGJ1dCBwZ19zdGF0X3Jl c2V0X2JhY2tlbmRfc3RhdHMoKSBkb2VzCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9iYWNrZW5k X3N0YXRzKHBnX2JhY2tlbmRfcGlkKCkpOwotU0VMRUNUIHN1bShldmljdGlvbnMpICsgc3Vt KHJldXNlcykgKyBzdW0oZXh0ZW5kcykgKyBzdW0oZnN5bmNzKSArIHN1bShyZWFkcykgKyBz dW0od3JpdGVzKSArIHN1bSh3cml0ZWJhY2tzKSArIHN1bShoaXRzKSBBUyBteV9pb19zdGF0 c19wb3N0X2JhY2tlbmRfcmVzZXQKK1NFTEVDVCBzdW0oZXZpY3Rpb25zKSArIHN1bShleHRl bmRzKSArIHN1bShmc3luY3MpICsgc3VtKHJlYWRzKSArIHN1bSh3cml0ZXMpICsgc3VtKHdy aXRlYmFja3MpICsgc3VtKGhpdHMpIEFTIG15X2lvX3N0YXRzX3Bvc3RfYmFja2VuZF9yZXNl dAogICBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaW8ocGdfYmFja2VuZF9waWQoKSkgXGdz ZXQKIFNFTEVDVCA6bXlfaW9fc3RhdHNfcHJlX3Jlc2V0ID4gOm15X2lvX3N0YXRzX3Bvc3Rf YmFja2VuZF9yZXNldDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFj dXVtLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwKaW5kZXggMjQ3Yjhl MjNiMjMuLjUwNmM0Mzg5NzY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC92 YWN1dW0uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ZhY3V1bS5zcWwKQEAgLTM5 MCwyMSArMzkwLDYgQEAgU0VMRUNUIHQucmVsZmlsZW5vZGUgPSA6dG9hc3RfZmlsZW5vZGUg QVMgaXNfc2FtZV90b2FzdF9maWxlbm9kZQogICBGUk9NIHBnX2NsYXNzIGMsIHBnX2NsYXNz IHQKICAgV0hFUkUgYy5yZWx0b2FzdHJlbGlkID0gdC5vaWQgQU5EIGMucmVsbmFtZSA9ICd2 YWNfb3B0aW9uX3RhYic7CiAKLS0tIEJVRkZFUl9VU0FHRV9MSU1JVCBvcHRpb24KLVZBQ1VV TSAoQlVGRkVSX1VTQUdFX0xJTUlUICc1MTIga0InKSB2YWNfb3B0aW9uX3RhYjsKLUFOQUxZ WkUgKEJVRkZFUl9VU0FHRV9MSU1JVCAnNTEyIGtCJykgdmFjX29wdGlvbl90YWI7Ci0tLSB0 cnkgZGlzYWJsaW5nIHRoZSBidWZmZXIgdXNhZ2UgbGltaXQKLVZBQ1VVTSAoQlVGRkVSX1VT QUdFX0xJTUlUIDApIHZhY19vcHRpb25fdGFiOwotQU5BTFlaRSAoQlVGRkVSX1VTQUdFX0xJ TUlUIDApIHZhY19vcHRpb25fdGFiOwotLS0gdmFsdWUgZXhjZWVkcyBtYXggc2l6ZSBlcnJv cgotVkFDVVVNIChCVUZGRVJfVVNBR0VfTElNSVQgMTY3NzcyMjApIHZhY19vcHRpb25fdGFi OwotLS0gdmFsdWUgaXMgbGVzcyB0aGFuIG1pbiBzaXplIGVycm9yCi1WQUNVVU0gKEJVRkZF Ul9VU0FHRV9MSU1JVCAxMjApIHZhY19vcHRpb25fdGFiOwotLS0gaW50ZWdlciBvdmVyZmxv dyBlcnJvcgotVkFDVVVNIChCVUZGRVJfVVNBR0VfTElNSVQgMTAwMDAwMDAwMDApIHZhY19v cHRpb25fdGFiOwotLS0gaW5jb21wYXRpYmxlIHdpdGggVkFDVVVNIEZVTEwgZXJyb3IKLVZB Q1VVTSAoQlVGRkVSX1VTQUdFX0xJTUlUICc1MTIga0InLCBGVUxMKSB2YWNfb3B0aW9uX3Rh YjsKLQogLS0gU0tJUF9EQVRBQkFTRV9TVEFUUyBvcHRpb24KIFZBQ1VVTSAoU0tJUF9EQVRB QkFTRV9TVEFUUykgdmFjdHN0OwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4 IDU2YzFmOTk3Zjg4Li4wNjRhOTg3OGU3MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTM1NSw4ICszNTUsNiBAQCBCdHJlZUxldmVsCiBCdWNrZXQKIEJ1ZkZpbGUKIEJ1 ZmZlcgotQnVmZmVyQWNjZXNzU3RyYXRlZ3kKLUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5VHlwZQog QnVmZmVyQ2FjaGVPc1BhZ2VzQ29udGV4dAogQnVmZmVyQ2FjaGVPc1BhZ2VzUmVjCiBCdWZm ZXJEZXNjCi0tIAoyLjUxLjIKCg== --a57bc87414e283fe5b1ad8beabf032b6dad8c957--