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 1wibyI-000JSO-0I for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Jul 2026 17:58:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wibyG-004eLO-1f for pgsql-hackers@arkaria.postgresql.org; Sat, 11 Jul 2026 17:58:37 +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 1wibeG-004X2a-2r for pgsql-hackers@lists.postgresql.org; Sat, 11 Jul 2026 17:37:58 +0000 Received: from fout-a4-smtp.messagingengine.com ([103.168.172.147]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wibe2-00000000pxq-2lrQ for pgsql-hackers@postgresql.org; Sat, 11 Jul 2026 17:37:57 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id AC3E7EC00CF; Sat, 11 Jul 2026 13:37:40 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Sat, 11 Jul 2026 13:37:40 -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=1783791460; x=1783877860; bh=3kgHHWq22S uLE0k7AUA+ksek+DHQpV5TBPdVmvAiLG8=; b=Cwj8Y85UZW8H9hq65hEnuuDx/b Vzntxjgra7PF0LvUGZkugoqWRAWVeCzSP9ZmoBvdACRXwJJE6DuBkem775X+Hxx5 JpRC+Hb7NC+P975qcuFRcYR/le8ezRWO8FqdhV2G1sBcs1fJmp3XXErblSqlmHeW d+eak7dqs1aW/G7LkGDhh++GxjiXCQsgbQefP4TypOhhdhlhglD34V8XepF/Qu3P bIQkKP2+ksue20jNaEswrBKUpW1cAx5kv8fWDJAj5YTlePmr2QHQnGVBdQwAkOhV Q3XYNo1DSM0gVZyOCObxQRbNJlxLiTFEJLxg6pGGKm+D93lO+4oKiynCSiHg== 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= 1783791460; x=1783877860; bh=3kgHHWq22SuLE0k7AUA+ksek+DHQpV5TBPd VmvAiLG8=; b=CpOiWBmYVVkMIXhYldXlzVDysWU7RVsv2AkJi7U6u/fiifQ9cm/ RQunE8+Wpwrteo2uDYTiEAPmW3jxh7AO+N/Gzl0Vn8DKr0cc+/ZInb/suC6t2xBz lLjhT2Cu40Vk337XRuma/8xKzpC/bZtySc0uDlAYB9C7PCJ+xwpFsrRaZtmZjTSR 9ZPS95x8Z3H04lvOTN+q2EbkXpiVZAkG9Wva8m47A1BXAScQx3vMqnScSw8l3OMj u1fphfy87+xhNG42tJp0c+ApI7EVdk2VO4806C+9N/JF9jPR0Zgv+v32aVM33Syk KWRbOtddEOSpXrRpUqlGyTH2nqb54zBEFfQ== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTFl9xDb+bVDNT5LhMSjQHj7qcbGxJiJAeYefFHTHq9dF12M69cfO/YACzLNfZ1id0 oltLeEWNoIe5ZVAt3DUDgT/FTKaR1XSi2z7DBwQsmuRamOt78QO9Ugu+hKCufMMw1CPLZL NwSf1A22SmzpWQdmxH9XYZqRNQImup/dPeB7/VecdMvprfx2PKgQW8sGRADXtR9djIBpqP GvoEUEd8JulXZQQbc4UZNqtyJaOCYQSYANnLq/so62My8rPmPJGavtouyQNZ9yMWnAhiQh wBwj83fuhL5Byj8Iey5iaR4doSNKJgLEQlvG7uaxFyxjtjCngncOwVDaKGPQDO8JA6XOor sAud3UFXOqFKPV3lS/CJ8Z8aQ+HYXQJKwvfmrVFXQuQRMb+tnncnsnAD4p6mbEKcghECiK /fkD53rkaFznWnN/5jlqAktVkbkoCzGadUStzIvUrph25QG2oWC2uZZ+QmgB0BlJfjESaQ ZdX0kCyMK5OqvCl/91i51ka4FVBijc4bxV6ihdp6gqYbSH89eMsOltNc40Uduwct9MUiKb ZmYVLieB9SS4C/lLz5Dl4CbYRkPBWzBfngB3LIDRT5lN4MOZimjppb1Ij/pZD9c7XSUa+p 9vXdxhjalc3w19gkqVgB05ClVyoWs0H1nmMBpVh7XIcFkoAZhXrQfSFa38fQ X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 2E9FB700065; Sat, 11 Jul 2026 13:37:40 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Sat, 11 Jul 2026 13:37:19 -0400 From: "Greg Burd" To: "Alexander Korotkov" Cc: pgsql-hackers Message-Id: In-Reply-To: <97d5e5a3-f8e2-49ec-bd52-5b43e5d2b30a@app.fastmail.com> References: <97d5e5a3-f8e2-49ec-bd52-5b43e5d2b30a@app.fastmail.com> Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=83aaa022bd17276b82d029e5f2d2108609246421 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --83aaa022bd17276b82d029e5f2d2108609246421 Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello. TL;DR, Patch 5 is new, it works around the bitmap scan issues by encoding a flag into the TID using the unused bit 14 to signal "may be stale, recheck on bitmap scan". Wiki page updated with more information on the fix. Another long one, apologies... but worth the time! ;-) Alexander found a real correctness bug (thanks!); chasing it took me through a systemic issue in how indexes address heap rows that is bigger than this patch, older than this patch, and shared with other projects (OrioleDB in particular). I want to lay out the whole path -- the bug, the abstraction tension, why the clean fix is out of scope, and the narrower fix I actually shipped -- because the reasoning matters more than the diff, and because the path there ran through a design goal I thought I'd have to give up and then, thanks to some digging, got back. == The bug == A HOT-indexed (SIU) update's fresh entry in a *changed* index points at the new heap-only tuple, not at the chain root the way every other index entry for that row does. That positional distinction is deliberate: it is what lets the read side decide staleness from the crossed-attribute bitmap without a value recheck (and thus survive the ABA case that a value recheck fails). BitmapAnd/BitmapOr combine two indexes' TID sets in tidbitmap.c at raw block+offset granularity, *before* either side touches the heap. So for a row matched by one predicate on an unchanged index (entry -> root) and another on a changed index (fresh entry -> new tuple), the two sides feed different TIDs for the same logical row, the exact-mode intersection finds nothing in common, and the row is dropped. A false negative. Bitmap scans tolerate false positives but not false negatives, so this is a correctness bug, not a performance wart. Reproduced, confirmed, and it is exactly the class of weakness that sank WARM. == The tension: TID is a leaky abstraction, and not just for us == Digging into why the obvious fixes don't work, I kept hitting the same wall, and it is worth naming because it is not really about this patch. An index has exactly one channel to say "which row this points to": a 6-byte block+offset ItemPointer. That is not an interface abstraction that happens to be implemented with TIDs -- it is the physical shape of an index tuple's header, inherited from before pluggable table AMs existed, and tidbitmap.c's whole fast path is literally dimensioned by it (TBM_MAX_TUPLES_PER_PAGE is #defined to MaxHeapTuplesPerPage). When pluggable table AMs landed, the index side of that contract was not actually made table-AM-agnostic; it was left exactly as heap needs it, and every non-heap table AM has to be block+offset- addressable or fake it. Let me stress this point again, what indexes store (see: tidbitmap.c) and what the executor sometimes assumes and uses (see: BitmapAnd/Or) and optimizes for is not table-AM-agnostic, it is HEAP-shaped. IMO, this is a leaky abstraction and should someday be corrected without losing the performance gains associated with it, but that's a different ocean to boil for a different day. This has bitten Zedstore, OrioleDB, and Tepid (and likely more I don't even know about). HOT sidesteps this by enforcing a stronger invariant instead -- only the chain root is ever indexed -- which costs nothing until you want to skip maintaining some indexes on an update, which is precisely when it starts costing. WARM tried to maintain this invariant, and ran afoul of the ABA and other issues. This is not a new observation. Robert Haas's 2016 "UNDO and in-place update" thread [1] is the clearest prior discussion. Alexander proposed, nine years ago, the clean fix: "Imagine that heap is TID => tuple map and index is index_key => tuple map... Imagine you can select between heap-organized table and index-organized table (IoT) just by choosing its primary access method. If you select heap for primary access method, indexes would refer TID. If you select [OrioleDB/btree] on could_id as primary access method, indexes would refer id_could." [2] That is the real solution: let the table AM define what an index stores to identify a row, instead of hardcoding block+offset. It has never been built in core. OrioleDB works around the same gap today with "bridged indexes" -- a tid => pkey bridge that translates a synthetic TID to its real (index- organized) row identity before the bitmap combine, using its own custom-scan node and its own PK-keyed bitmap (o_keybitmap, an rbtree) rather than tidbitmap.c -- because rather than wait for the core contract to change, they kept TID as the wire format and inserted a translation shim scoped entirely inside their own AM. So: this is systemic, it predates Tepid, and it has actively shaped how more than one serious out-of-core table AM has been built. I think it deserves its own thread someday, not today, but someday. But redefining the index-to-row contract touches the heap tuple header, the table-AM and index-AM interfaces, tidbitmap.c's core data structure, WAL/redo, and SQL-visible ctid semantics, and it must migrate every existing AM including heap. It is emphatically not something to smuggle into a HOT/SIU project, and I am not going to try. So I have no choice but to find another way or abandon this effort... and I'm not giving up yet. == What I developed for v59 == I have a few important design goals, one of them being: no changes to index AMs. WARM needed per-AM recheck logic, and I considered that one of the things that made it unpalatable. My first cut of this fix did miss it -- I put the check in each amgetbitmap -- but after further review I found a way to around this too, and I can keep Tepid functional with zero index-AM changes required. The fix reserves one otherwise-unused bit (bit 14) in a stored TID's offset field, ItemPointerSIUMaybeStaleFlag. MaxOffsetNumber never needs more than 14 bits even at the largest configurable BLCKSZ, so the bit is free for any real offset (feel free to disagree on this point). It is set only on the local TID copy handed to a HOT-indexed fresh entry's index_insert() (never on the tuple's own tts_tid, never on a classic-HOT or plain entry). ItemPointerGetOffsetNumber and ItemPointerCompare strip it by default via a sentinel-safe helper -- so every ordinary consumer keeps seeing the real offset -- while ItemPointerGetOffsetNumberNoCheck still exposes the raw value for the handful of sites that need it. (A note on the sentinels, because it bit me: the two reserved offset values SpecTokenOffsetNumber (0xfffe) and MovedPartitionsOffsetNumber (0xfffd) sit at the very top of the offset range, far above any real offset -- a flagged offset maxes out at 0x6000 even at 32KB BLCKSZ, so it can never collide with a sentinel, and the three interpretations (real offset, flagged real offset, sentinel) partition the value space cleanly. The catch is only in the stripping direction: 0xfffd/0xfffe happen to have bit 14 set within their all-high-bits encoding, so unconditionally clearing it corrupts them (0xfffd -> 0xbffd) and breaks their recognition. My first cut masked unconditionally and silently broke cross-partition-UPDATE conflict detection; the isolation suite caught it immediately. The strip is now range-gated to leave anything at or above the sentinel range untouched.) Detection lives at one choke point: tbm_add_tuples(), which every amgetbitmap funnels exact heap TIDs through. It tests the raw flag (before the offset is stripped) and, when set, adds the whole page as lossy (tbm_add_page) instead of the single exact offset. Per tbm_intersect_page's own case analysis a lossy page survives any AND/OR against an exact-mode page and forces a recheck, so BitmapHeapScan resolves the chain and the existing heap-side crossed-attribute test makes the final, correct call. Because this lives in tbm_add_tuples and not in each access method, NO index AM needs to know about HOT-indexed chains. There is no per-AM code at all: btree, hash, GIN, GiST, SP-GiST are untouched, contrib/bloom is correct with no bloom-specific code, and any out-of-tree AM that feeds a TIDBitmap is correct automatically. A TID that never carries the flag takes the identical path it always did. GIN's own unrelated page-level lossy sentinel is untouched. The only cross-cutting surface that remains is the one design choice I do want to flag for debate (see the ask): the marker lives in the generic ItemPointer offset and the universal ItemPointerGetOffsetNumber/ItemPointerCompare strip it. That strip is required regardless of the bitmap fix -- a plain index scan resolves a fresh entry's TID to a live line pointer, and the unique check compares TIDs -- so it is not something the tbm_add_tuples placement lets me avoid. It is a tiny, branch-predictable mask on a hot path; I'll bring a microbenchmark. Tooling: amcheck's heapallindexed fingerprints leaf TIDs and compares them to the plain heap TIDs it re-derives, so verify_nbtree strips the marker while fingerprinting or a fresh entry raises a spurious "lacks matching index tuple". pageinspect 1.14's bt_page_items reports the real offset in ctid/htid (earlier versions showed the marker as an inflated offset) and adds a hot_indexed column exposing the marker. Correctness: a regression test (hot_indexed_updates.sql section 32) now covers BitmapAnd across a changed+unchanged index for every access method SIU exercises -- btree+btree, hash+btree, GIN+btree, GiST+btree, SP-GiST+btree -- plus a BitmapOr case, each verifying the previously-dropped row is returned and an unrelated row is unaffected. == Performance == The one real cost is that when a page carrying an SIU fresh entry is added lossy, that page's *other*, unrelated tuples also lose exact-mode precision on that bitmap contribution (extra heap recheck) until the SIU chain collapses. So I measured the workload most likely to expose it: a mixed 80% BitmapAnd reads across two unchanged indexes / 20% HOT-indexed updates on a third index of the same table, A/B alternating the tree with the fix against the identical tree with only that one commit reverted, 5 iterations each. bit14 off (unfixed): 30650.6 TPS median bit14 on (fixed): 30552.1 TPS median delta: -0.32%, inside the ~0.2% run-to-run noise band No measurable overhead, in the shape built to provoke it. (EC2 c7i.4xlarge, scale 10, 16 clients, 60s cells). The general SIU A/B is unchanged by this fix, as expected -- it only touches the bitmap read path. == The ask == Two separate things, and I'd like them kept separate: 1. For this patch set: Is bit14 an acceptable fix? It spends one free bit in a very load-bearing struct (the last spare offset bit; bit 15 is held by the SpecToken/MovedPartitions sentinels), which I do not do lightly, but it needs zero index-AM code, benchmarks at no measurable cost, and closes a real correctness hole. The one cross-cutting surface is that the universal ItemPointerGetOffsetNumber/ItemPointerCompare strip the bit (required for plain scans and TID comparison regardless of the bitmap path) and the marker is persisted on-disk in index tuples (now shown transparently by pageinspect 1.14). If the objection is "not that bit," "not a TID bit at all," or "not in the universal accessors," I need to hear it -- the whole encoding hangs off that choice. 2. Independently: the leaky TID-as-row-identity contract is real and worth a thread of its own, but it is out of scope here and I am not proposing to solve it in this series. I raise it only so the narrow fix is understood as a deliberate accommodation of that leak, not a claim to have addressed it. v59 attached with this fix as patch 5, best. -greg [1] https://www.postgresql.org/message-id/flat/CA%2BTgmoZS4_CvkaseW8dUcXwJuZmPhdcGBoE_GNZXWWn6xgKh9A%40mail.gmail.com [2] https://www.postgresql.org/message-id/CAPpHfdtiLK55eT9uJu6U%3Dg12q%2BmNMkegvtGhz0Qdic5H%2BkuSzA%40mail.gmail.com --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAxZWVjZWNhZGMzYmRiMGJjYzQ1NDljMmM1MGQ3ODdjMTEwOTFiYzdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDAx LzEwXSBBZGQgdGVzdHMgdG8gY292ZXIgYSB2YXJpZXR5IG9mIGhlYXAgSE9UIHVwZGF0ZQog YmVoYXZpb3JzCgpBZGQgcmVncmVzc2lvbiBjb3ZlcmFnZSBmb3IgZXhpc3RpbmcgY2xhc3Np YyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlCmJlaGF2aW9yLCBjb21taXR0ZWQgZmly c3Qgc28gdGhlIGJlaGF2aW9yYWwgY2hhbmdlcyBpbiB0aGUgbGF0ZXIgSE9ULWluZGV4ZWQK Y29tbWl0cyBhcmUgZGlmZmFibGUgYWdhaW5zdCBhIGtub3duLWdvb2QgYmFzZWxpbmUuICBU aGlzIGNvbW1pdCBhZGRzCnRlc3RzIHNvIGFzIHRvIGNvZGlmeSBleHBsaWNpdGx5IHRoZSBI T1QgY29udHJhY3QgZm9yIHRoZSBoZWFwIEFNLgoKVGhlIG5ldyBob3RfdXBkYXRlcyByZWdy ZXNzaW9uIHRlc3QgZXhlcmNpc2VzOgotIEJhc2ljIEhPVCB2cyBub24tSE9UIHVwZGF0ZSBk ZWNpc2lvbnMKLSBUaGUgYWxsLW9yLW5vbmUgcHJvcGVydHkgYWNyb3NzIG11bHRpcGxlIGlu ZGV4ZXMKLSBQYXJ0aWFsIGluZGV4ZXMgYW5kIHByZWRpY2F0ZSBoYW5kbGluZwotIEJSSU4g KHN1bW1hcml6aW5nKSBpbmRleGVzIGFsbG93aW5nIEhPVCB1cGRhdGVzCi0gVE9BU1QgY29s dW1uIGhhbmRsaW5nIHdpdGggSE9UCi0gVW5pcXVlIGNvbnN0cmFpbnQgYmVoYXZpb3IKLSBN dWx0aS1jb2x1bW4gaW5kZXhlcwotIFBhcnRpdGlvbmVkIHRhYmxlIEhPVCB1cGRhdGVzCi0g SE9UIGNoYWluIGZvcm1hdGlvbiBhbmQgdGhlIGluZGV4LXNjYW4gd2FsayBvdmVyIGEgY2hh aW4KCkF1dGhvcmVkLWJ5OiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KLS0tCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCB8IDc0NSArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICB8 ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgICAgICB8IDYw NSArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTM1NSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3Rf dXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9o b3RfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0 ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yNzNmZTMz MTBkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90 X3VwZGF0ZXMub3V0CkBAIC0wLDAgKzEsNzQ1IEBACistLQorLS0gSE9UX1VQREFURVMKKy0t IFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tCistLSBU aGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUg dXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAo ZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tCistLSBXZSB1 c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgorLS0gMS4gU3RhdGlzdGljcyBmdW5j dGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tIDIuIHBhZ2VpbnNw ZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1pbmF0aW9uCistLSAzLiBFWFBMQUlO IHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRhdGVzCistLQorLS0gTG9hZCByZXF1 aXJlZCBleHRlbnNpb25zCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CistLSBGdW5jdGlvbiB0byBnZXQgSE9UIHVwZGF0ZSBjb3VudAorQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJO UyBUQUJMRSAoCisgICAgdXBkYXRlcyBCSUdJTlQsCisgICAgaG90IEJJR0lOVAorKSBBUyAk JAorREVDTEFSRQorICByZWxfb2lkIG9pZDsKK0JFR0lOCisgIHJlbF9vaWQgOj0gcmVsX25h bWU6OnJlZ2NsYXNzOjpvaWQ7CisKKyAgLS0gUmVhZCBib3RoIGNvbW1pdHRlZCBhbmQgdHJh bnNhY3Rpb24tbG9jYWwgc3RhdHMKKyAgLS0gSW4gYXV0b2NvbW1pdCBtb2RlIChkZWZhdWx0 IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhpcyB3b3JrcyBjb3JyZWN0bHkKKyAgLS0gTm90 ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25zIChCRUdJTi9DT01NSVQpLCBjb21taXR0ZWQg c3RhdHMgYWxyZWFkeQorICAtLSBpbmNsdWRlIGZsdXNoZWQgdXBkYXRlcywgc28gdGhpcyB3 b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBsaWNpdAorICAtLSB0cmFuc2FjdGlvbiB0ZXN0 aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1bmN0 aW9uLgorICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVk KHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgIGhvdCA6PSBDT0FMRVNDRShwZ19z dGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgIENP QUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAw KTsKKworICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBD aGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vz c29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3Rf Y2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFu IEFTICQkCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7 CitCRUdJTgorICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06 OmludDsKKworICAtLSBMb29rIGZvciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBw YWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJnZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJ TgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBs cF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0 X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0 IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9P UAorICAgIFJFVFVSTiB0cnVlOworICBFTkQgTE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFy dGluZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHBy aW50X2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKK1JFVFVSTlMg VEFCTEUoY2hhaW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9j dGlkIHRpZCwgY2hhaW5fZW5kIGJvb2xlYW4pIEFTCiskJAorI3ZhcmlhYmxlX2NvbmZsaWN0 IHVzZV9jb2x1bW4KK0RFQ0xBUkUKKyAgYmxvY2tfbnVtIGludDsKKyAgbGluZV9wdHIgaW50 OworICBjdXJyZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIG5leHRfY3RpZCB0aWQ7 CisgIHBvc2l0aW9uIGludCA6PSAwOworICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwor ICBwYWdlX2l0ZW0gcmVjb3JkOworICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZh bHNlOworICBmbGFnc19uYW1lIHRleHQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHN0YXJ0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIEZpbmQgdGhlIHByZWRlY2Vz c29yIChvbGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCisgIEZPUiBwYWdl X2l0ZW0gSU4KKyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhl YXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAg V0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAorICBM T09QCisgICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcs JyB8fCBwYWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgIGZvdW5kX3ByZWRl Y2Vzc29yIDo9IHRydWU7CisgICAgRVhJVDsKKyAgRU5EIExPT1A7CisKKyAgLS0gSWYgbm8g cHJlZGVjZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKKyAgSUYgTk9U IGZvdW5kX3ByZWRlY2Vzc29yIFRIRU4KKyAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3Rp ZDsKKyAgRU5EIElGOworCisgIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAorICBXSElM RSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICBsaW5lX3B0ciA6PSAoY3Vy cmVudF9jdGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKworICAgIEZPUiBwYWdlX2l0ZW0g SU4KKyAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAg V0hFUkUgbHAgPSBsaW5lX3B0cgorICAgIExPT1AKKyAgICAgIC0tIE1hcCBscF9mbGFncyB0 byBuYW1lcworICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncwor ICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgV0hFTiAxIFRIRU4g J25vcm1hbCAoMSknCisgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAg ICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKKyAgICAgICAgRUxTRSAndW5rbm93biAoJyB8 fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICBFTkQ7CisKKyAgICAg IFJFVFVSTiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGN1cnJl bnRfY3RpZCwKKyAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgcGFnZV9pdGVtLnRfY3Rp ZCwKKyAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9j dGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgorICAgICAgOworCisgICAgICBJRiBwYWdl X2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3Rp ZCBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAgICAgIEVORCBJRjsKKworICAgICAgbmV4dF9j dGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisKKyAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgIFJFVFVSTjsKKyAg ICAgIEVORCBJRjsKKworICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAg IHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICBFTkQgTE9PUDsKKworICAgIElGIHBv c2l0aW9uID0gMCBUSEVOCisgICAgICBSRVRVUk47CisgICAgRU5EIElGOworICBFTkQgTE9P UDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CistLSBCYXNpYyBIT1QgdXBkYXRlICh1 cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uKQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9p bmRleGVkX2NvbCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOworLS0gR2V0IGJhc2VsaW5l CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0g U2hvdWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmll ZCkKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBX SEVSRSBpZCA9IDE7CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1 cGRhdGVkMicgV0hFUkUgaWQgPSAyOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJFIGlkID0gMzsKKy0tIFZlcmlmeSBIT1QgdXBkYXRl cyBvY2N1cnJlZAorU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAzIHwgICAzCisoMSBy b3cpCisKKy0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCitXSVRIIGN1 cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlk ID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90 dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBwcmludF9o b3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1 cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2Zs YWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0KKyB0ICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgw LDEpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDEg fCAoMCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorKDIgcm93cykKKworLS0gVmFjdXVtIHRo ZSByZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKK1ZBQ1VVTSBo b3RfdGVzdDsKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0K K1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3Qg V0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBj dXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24sCisg IHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9NIGN1 cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpOworIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAg fCAgbHBfZmxhZ3MgIHwgdF9jdGlkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLQorIGYgICAgICAgICB8ICAgICAgICAgICAg ICAwIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygxIHJvdykKKworLS0gTm9uLUhP VCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQg aW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICA0IHwgICAzCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRl ZCAobmV3IHZhbHVlIGZpbmRhYmxlKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3Qg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaG90X3Rlc3RfaW5k ZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDE1 MCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBX SEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCB8IGluZGV4ZWRfY29sIAorLS0tLSstLS0t LS0tLS0tLS0tCisgIDEgfCAgICAgICAgIDE1MAorKDEgcm93KQorCistLSBWZXJpZnkgb2xk IHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1 c2luZyBob3RfdGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAorICAgSW5kZXggQ29uZDog KGluZGV4ZWRfY29sID0gMTAwKQorKDIgcm93cykKKworU0VMRUNUIGlkIEZST00gaG90X3Rl c3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5OiB1cGRhdGlu ZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0ZXMKK0RST1Ag VEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9j IGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rlc3QoY29sX2EpOworQ1JF QVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNvbF9iKTsKK0NSRUFURSBJ TkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7CistLSBVcGRhdGUg b25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgYW4gaW5kZXhlZCBjb2x1 bW4gY2hhbmdlZAorLS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBtdXN0IGJlIHVwZGF0ZWQg KGFsbC1vci1ub25lIHByb3BlcnR5KQorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1 IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAor KDEgcm93KQorCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hv dWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZCA9ICd1cGRhdGVk JzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVz IHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMQorKDEgcm93KQorCist LSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJlZGljYXRlIChj b25zZXJ2YXRpdmUgPSBub24tSE9UKQorRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBU QUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHN0YXR1cyB0 ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworLS0gUGFy dGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAnYWN0aXZlJworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2ZScs ICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3RpdmUn LCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0ZWQn LCAnZGF0YTMnKTsKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2FjdGl2ZScg cm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCistLSBTaG91bGQgYmUgSE9U CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBV cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHBy ZWRpY2F0ZSkKKy0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAyIHwgICAyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAnaW5hY3RpdmUn IHRvICdkZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKKy0tIFBvc3RncmVTUUwg aXMgY29uc2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBwcmVkaWNhdGUg Y2hlY2sKKy0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3RoIHZhbHVlcyBh cmUgb3V0c2lkZSBwcmVkaWNhdGUKK1VQREFURSBob3RfdGVzdCBTRVQgc3RhdHVzID0gJ2Rl bGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8 ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisgaWQgfCBzdGF0dXMgCistLS0tKy0tLS0tLS0tCisgIDEgfCBhY3Rp dmUKKygxIHJvdykKKworLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBvbiBu b24tUEsgY29sdW1ucworRFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3Rf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwKKyAg ICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBi cmluKHRzKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90 ZXN0IFVTSU5HIGJyaW4oYnJpbl9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVT ICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CistLSBVcGRhdGUgYm90aCBCUklOIGNv bHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5nIGluZGV4ZXMp CitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmluX2NvbCA9IDIw MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAxIHwgICAx CisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYWxz byBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAx OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCisKKy0t IFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQgY29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9U CitEUk9QIFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdlX3Rl eHQgdGV4dCwKKyAgICBzbWFsbF90ZXh0IHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wp OworLS0gSW5zZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKK0lOU0VSVCBJ TlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxs Jyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBV cGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlmIGluZGV4ZWQgY29sdW1u IHVuY2hhbmdlZAorVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90ZXh0ID0gcmVwZWF0KCd5 JywgMzAwMCk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Cisg dXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDIKKygxIHJv dykKKworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDMgfCAgIDIKKygxIHJvdykKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQg KHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5kZXgKK0RST1AgVEFCTEUg aG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEs IDEwMCwgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwg J2RhdGEyJyk7CistLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCisKKy0tIFZlcmlmeSB1bmlxdWUg Y29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAorU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRh IEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CisgaWQgfCB1bmlxdWVfY29sIHwgIGRhdGEg ICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorICAxIHwgICAgICAgIDEwMCB8IHVw ZGF0ZWQKKyAgMiB8ICAgICAgICAyMDAgfCB1cGRhdGVkCisoMiByb3dzKQorCistLSBUaGlz IHNob3VsZCBmYWlsICh1bmlxdWUgdmlvbGF0aW9uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB1 bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2 YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVlX2NvbF9r ZXkiCitERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhpc3RzLgor LS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKK0RS T1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNv bF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsK K0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2RhdGEnKTsK Ky0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0t LS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBSZXNldAorVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOworLS0gVXBkYXRlIGNvbF9iIChwYXJ0IG9m IG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAzIHwg ICAwCisoMSByb3cpCisKKy0tIFJlc2V0CitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjA7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCitVUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQp IC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQn OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA2IHwgICAyCisoMSByb3cpCisKKy0t IFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25zCitEUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworTk9USUNF OiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBp bmcKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAor ICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRh IHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0X3Bh cnQxIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZPUiBWQUxVRVMg RlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBUQUJM RSBob3RfdGVzdF9wYXJ0MiBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAg ICBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRp b25lZChpbmRleGVkX2NvbCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CistLSBVcGRh dGUgaW4gcGFydGl0aW9uIDEgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9U CitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdI RVJFIGlkID0gMTsKKy0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMiAobm9uLWluZGV4ZWQgY29s dW1uKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQg ZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0r LS0tLS0KKyAgICAgICAxIHwgICAxCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXhlcyB3 b3JrIG9uIHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisK K1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29s ID0gMjAwOworIGlkIAorLS0tLQorICAyCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVk IGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKwor LS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9w YXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCAKKy0tLS0KKyAgMQor KDEgcm93KQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUcmlnZ2VyIG1vZGlm aWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhPVAorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBkZXRlY3Qgd2hlbiB0cmln Z2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQorLS0gaGVhcF9tb2RpZnlfdHVwbGUo KSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGluIHRoZSBVUERBVEUncyBTRVQg Y2xhdXNlCitDUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCAoCisgICAgaWQgaW50IFBS SU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90cmlnZ2VyX2lkeCBP TiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wpOworLS0gQ3JlYXRlIGEgdHJpZ2dl ciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1uCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQK K0JFR0lOCisgICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7 CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUg VFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlmeQorICAgIEJFRk9SRSBVUERBVEUgT04gaG90 X3RyaWdnZXJfdGVzdAorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04g bW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKK0lOU0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3Qg VkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgb25seSBkYXRhIGNv bHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBO T1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2RpZmllZCBhbiBpbmRleGVkIGNvbHVtbgor VVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1QgdXBkYXRlIChpbmRleGVkIGNvbHVt biB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3RyaWdnZXJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAxIHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSB0aGUgdHJpZ2dlcmVk IGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7CisgdHJpZ2dlcmVkX2NvbCAKKy0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxMDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBo b3RfdHJpZ2dlcl90ZXN0IENBU0NBREU7CitEUk9QIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2Vy ZWRfY29sKCk7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBKU09OQiBleHByZXNz aW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIEpTT05C IHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworQ1JFQVRFIFRBQkxFIGhvdF9qc29uYl90ZXN0 ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVj aWZpYyBKU09OIHBhdGgKK0NSRUFURSBJTkRFWCBob3RfanNvbmJfbmFtZV9pZHggT04gaG90 X2pzb25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7CitJTlNFUlQgSU5UTyBob3RfanNvbmJf dGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6 Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEi fScpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwor IHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSBy b3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBhdGggKGFnZSkgLSBzaG91bGQg YmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNF VCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICczMScpIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRh dGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMAorKDEgcm93KQor CistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAn e25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3 b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hFUkUgZGF0YS0+PiduYW1l JyA9ICdBbGljZTInOworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKKy0tIFRlc3QganNv bmJfZGVsZXRlIG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGlu c3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAt ICdjaXR5JyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAg ICAgIDMgfCAgIDAKKygxIHJvdykKKworLS0gVGVzdCBqc29uYl9pbnNlcnQgb24gbm9uLWlu ZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERB VEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3Vu dHJ5fScsICciVVNBIicpIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgNCB8ICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhvdF9qc29uYl90 ZXN0OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5k ZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNh biBiZSBIT1QgdXBkYXRlcworQ1JFQVRFIFRBQkxFIGhvdF94bWxfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGRvYyB4bWwKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgWFBhdGgKK0NS RUFURSBJTkRFWCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxfdGVzdCAoKHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSkpOworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0 IFZBTFVFUworICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9h Z2U+PC9wZXJzb24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdl PjI1PC9hZ2U+PC9wZXJzb24+Jyk7CitFUlJPUjogIGNvdWxkIG5vdCBpZGVudGlmeSBhIGNv bXBhcmlzb24gZnVuY3Rpb24gZm9yIHR5cGUgeG1sCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBY UGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJh Y2sKKy0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBh dGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3Rf eG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGgg KG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRv YyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+ JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxf dGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwg ICAwCisoMSByb3cpCisKKy0tIFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00g aG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9 IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKK0VSUk9SOiAgb3BlcmF0b3IgZG9lcyBub3QgZXhp c3Q6IHhtbFtdID0gdGV4dFtdCitMSU5FIDE6IC4uLl94bWxfdGVzdCBXSEVSRSB4cGF0aCgn L3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBBUlJBWVsnQS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIE5vIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1 bWVudCB0eXBlcy4KK0hJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KK0RST1AgVEFCTEUgaG90X3htbF90ZXN0OworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFyZWRhdHVtcyBmb3IgSlNPTkIK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCBHSU4gaW5kZXhlcyBj YW4gdXNlIGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9UIHdoZW4gZXh0cmFjdGVkIGtl eXMgbWF0Y2gKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CistLSBHSU4gaW5kZXggb24gdGV4dCBhcnJheQorQ1JF QVRFIElOREVYIGhvdF9naW5fdGFnc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAo dGFncyk7CistLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAtIGtleXMgYW5kIHZh bHVlcykKK0NSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBob3RfZ2luX3Rlc3Qg VVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQor ICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcg b3JkZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBi ZSBIT1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRl cikKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx J10gV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2lu X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8 ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0 ZXIgYW1jb21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5n IG9uIEdJTiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFu ZCB2YWx1ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5 MSI6InZhbDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAor LS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBBZGQgbmV3 IHRhZyAtIHNob3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitV UERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0 YWc1J10gV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf Z2luX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MyB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNU IGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKKyBp ZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3Qg V0hFUkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7CisgaWQgCistLS0t CisgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBDbGVhbnVwCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdDsKK0RST1AgVEFCTEUgSUYgRVhJU1RT IGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNU UyBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBw cmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdl dF9ob3RfY291bnQodGV4dCk7CitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDhmYTBhNmM0N2ZiLi5iZDk1Y2MyNDk3 NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xNDMsNiArMTQzLDEx IEBAIHRlc3Q6IGV2ZW50X3RyaWdnZXJfbG9naW4KICMgdGhpcyB0ZXN0IGFsc28gdXNlcyBl dmVudCB0cmlnZ2Vycywgc28gbGlrZXdpc2UgcnVuIGl0IGJ5IGl0c2VsZgogdGVzdDogZmFz dF9kZWZhdWx0CiAKKyMgLS0tLS0tLS0tLQorIyBIT1QgdXBkYXRlcyB0ZXN0cworIyAtLS0t LS0tLS0tCit0ZXN0OiBob3RfdXBkYXRlcworCiAjIHJ1biB0YWJsZXNwYWNlIHRlc3QgYXQg dGhlIGVuZCBiZWNhdXNlIGl0IGRyb3BzIHRoZSB0YWJsZXNwYWNlIGNyZWF0ZWQgZHVyaW5n CiAjIHNldHVwIHRoYXQgb3RoZXIgdGVzdHMgbWF5IHVzZS4KIHRlc3Q6IHRhYmxlc3BhY2UK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYTg4OTQwMDYxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKQEAgLTAsMCArMSw2MDUgQEAK Ky0tCistLSBIT1RfVVBEQVRFUworLS0gVGVzdCBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBk YXRlIGRlY2lzaW9ucworLS0KKy0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmll cyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKKy0tIGFuZCBh dm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUg bW9kaWZpZWQpLgorLS0KKy0tIFdlIHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6 CistLSAxLiBTdGF0aXN0aWNzIGZ1bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91 cGRhdGVkKQorLS0gMi4gcGFnZWluc3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhh bWluYXRpb24KKy0tIDMuIEVYUExBSU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVw ZGF0ZXMKKy0tCisKKy0tIExvYWQgcmVxdWlyZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVO U0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OworCistLSBGdW5jdGlvbiB0byBnZXQg SE9UIHVwZGF0ZSBjb3VudAorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9j b3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgICAgdXBkYXRlcyBCSUdJ TlQsCisgICAgaG90IEJJR0lOVAorKSBBUyAkJAorREVDTEFSRQorICByZWxfb2lkIG9pZDsK K0JFR0lOCisgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisKKyAgLS0g UmVhZCBib3RoIGNvbW1pdHRlZCBhbmQgdHJhbnNhY3Rpb24tbG9jYWwgc3RhdHMKKyAgLS0g SW4gYXV0b2NvbW1pdCBtb2RlIChkZWZhdWx0IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhp cyB3b3JrcyBjb3JyZWN0bHkKKyAgLS0gTm90ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25z IChCRUdJTi9DT01NSVQpLCBjb21taXR0ZWQgc3RhdHMgYWxyZWFkeQorICAtLSBpbmNsdWRl IGZsdXNoZWQgdXBkYXRlcywgc28gdGhpcyB3b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBs aWNpdAorICAtLSB0cmFuc2FjdGlvbiB0ZXN0aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgorICB1cGRhdGVzIDo9IENPQUxFU0NF KHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAg ICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwg MCk7CisgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQo cmVsX29pZCksIDApICsKKyAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKworICBSRVRVUk4gTkVYVDsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CisKKy0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFydCBv ZiBhIEhPVCBjaGFpbiAoaGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCB0YXJn ZXRfY3RpZCB0aWQpCitSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAgYmxvY2tf bnVtIGludDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKK0JFR0lOCisgIGJsb2NrX251bSA6PSAo dGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworCisgIC0tIExvb2sgZm9yIGEg ZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRh cmdldCB0dXBsZQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFn cywgdF9jdGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9u YW1lLCBibG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRf Y3RpZCBJUyBOT1QgTlVMTAorICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAg ICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcp Jyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICBMT09QCisgICAgUkVUVVJOIHRydWU7CisgIEVO RCBMT09QOworCisgIFJFVFVSTiBmYWxzZTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CisKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxl CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUg dGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGlu dCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29s ZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1c2VfY29sdW1uCitERUNMQVJFCisg IGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsKKyAgY3VycmVudF9jdGlkIHRpZCA6 PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOworICBwb3NpdGlvbiBpbnQgOj0gMDsK KyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAgcGFnZV9pdGVtIHJlY29yZDsKKyAg Zm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0 OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06 OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5n IHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9pdGVtIElOCisgICAgU0VMRUNUIGxw LCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19w YWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAg ICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9PUAorICAgIGN1cnJlbnRfY3RpZCA6 PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0 IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOworICAgIEVY SVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFy dCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVO CisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7CisgIEVORCBJRjsKKworICAtLSBG b2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0 aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQp WzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICBTRUxFQ1QgbHAsIGxw X2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAg ICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8gbmFtZXMKKyAgICAgIGZsYWdzX25h bWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAgICAgICAgV0hFTiAwIFRIRU4gJ3Vu dXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEpJworICAgICAgICBX SEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAo MyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0 ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisg ICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50X2N0aWQsCisgICAgICAgIGZsYWdz X25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQsCisgICAgICAgIChwYWdlX2l0ZW0u dF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJv b2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9S IHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgorICAgICAgICBSRVRVUk47 CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlk OworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9j a19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIGN1 cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiAr IDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgorICAgICAg UkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsOworCistLSBCYXNpYyBIT1QgdXBkYXRlICh1cGRhdGUgbm9uLWluZGV4ZWQgY29s dW1uKQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0ZXh0CispIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pbmRleGVk X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFM VUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsIDMwMCwgJ2luaXRpYWwnKTsKKworLS0gR2V0IGJhc2VsaW5lCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFNob3VsZCBiZSBIT1QgdXBkYXRl cyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQpCitVUERBVEUgaG90X3Rlc3Qg U0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdIRVJFIGlkID0g MjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQzJyBX SEVSRSBpZCA9IDM7CisKKy0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1cnJlZAorU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBEdW1wIHRoZSBIT1Qg Y2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJyZW50X3R1cGxlIEFTICgKKyAgU0VM RUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKKykKK1NFTEVDVAorICBoYXNf aG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWlu LAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90X2NoYWluLmN0aWQsCisgIGxwX2Zs YWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwKK0xBVEVSQUwgcHJpbnRfaG90 X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CisKKy0tIFZhY3V1bSB0 aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0g aG90X3Rlc3Q7CisKKy0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1 dW0KK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVDVCBjdGlkIEZST00gaG90X3Rl c3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3Qn LCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgY2hhaW5fcG9zaXRpb24s CisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFncywKKyAgdF9jdGlkCitGUk9N IGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBj dXJyZW50X3R1cGxlLmN0aWQpOworCistLSBOb24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4 ZWQgY29sdW1uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisK Ky0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZpbmRhYmxlKQorU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQs IGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CitT RUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxNTA7CisKKy0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRf Y29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworLS0gQWxsLW9yLW5vbmUgcHJvcGVy dHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBk YXRlcworRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGlu dCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rl c3QoY29sX2EpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNv bF9iKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7 CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRp YWwnKTsKKworLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNh dXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4 ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3Rf dGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhl ZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRl eGVkID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworCistLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJl ZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQorRFJPUCBUQUJMRSBob3RfdGVzdDsK KworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKKy0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScK K0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykg V0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVT ICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNv bHVtbiBvbiAnYWN0aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkK Ky0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVk MScgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93 IChvdXRzaWRlIHByZWRpY2F0ZSkKKy0tIFNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2lu YWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0 Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJl ZGljYXRlIGNoZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2 YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1 cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2Fj dGl2ZScgcm93cworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0 dXMgPSAnYWN0aXZlJzsKKworLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhlcyBv biBub24tUEsgY29sdW1ucworRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHMgdGltZXN0YW1w LAorICAgIHZhbHVlIGludCwKKyAgICBicmluX2NvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3Qg VVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBP TiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKKworSU5TRVJUIElOVE8gaG90X3Rl c3QgVkFMVUVTICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAwMCk7CisKKy0tIFVwZGF0ZSBi b3RoIEJSSU4gY29sdW1ucyAtIHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXpp bmcgaW5kZXhlcykKK1VQREFURSBob3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJy aW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91 bGQgYWxzbyBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAyMDAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBUT0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhP VAorRFJPUCBUQUJMRSBob3RfdGVzdDsKKworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdl X3RleHQgdGV4dCwKKyAgICBzbWFsbF90ZXh0IHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CisKKy0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCks ICdzbWFsbCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gVXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNv bHVtbiB1bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVh dCgneScsIDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBE QVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVW5pcXVlIGNvbnN0cmFpbnQgKHVuaXF1 ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5kZXgKK0RST1AgVEFCTEUgaG90X3Rl c3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZ LAorICAgIHVuaXF1ZV9jb2wgaW50IFVOSVFVRSwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKKworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworCistLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgdW5pcXVlIGNvbnN0 cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9N IGhvdF90ZXN0IE9SREVSIEJZIGlkOworCistLSBUaGlzIHNob3VsZCBmYWlsICh1bmlxdWUg dmlvbGF0aW9uKQorVVBEQVRFIGhvdF90ZXN0IFNFVCB1bmlxdWVfY29sID0gMTAwIFdIRVJF IGlkID0gMjsKKworLS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9 IG5vbi1IT1QKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVz dCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xf YiBpbnQsCisgICAgY29sX2MgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hLCBjb2xfYik7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAs IDIwLCAzMCwgJ2RhdGEnKTsKKworLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNv bHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBj b2xfYSA9IDE1OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOworCistLSBVcGRh dGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUg SE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjU7CitTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFJlc2V0CitVUERBVEUgaG90X3Rlc3Qg U0VUIGNvbF9iID0gMjA7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7CisKKy0tIFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYyA9IDM1OworCistLSBVcGRhdGUgZGF0YSAobm90 IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor CistLSBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucwor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKKwor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkICgKKyAgICBpZCBpbnQsCisgICAg cGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4 dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBhcnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBC WSBSQU5HRSAocGFydGl0aW9uX2tleSk7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRp b25lZChpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVk IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CitJTlNFUlQgSU5UTyBob3RfdGVz dF9wYXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKKworLS0g VXBkYXRlIGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJl IEhPVAorVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQx JyBXSEVSRSBpZCA9IDE7CisKKy0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMiAobm9uLWluZGV4 ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisKKy0tIFZlcmlmeSBpbmRleGVzIHdvcmsg b24gcGFydGl0aW9ucworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hF UkUgaW5kZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRp b25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDIwMDsKKworLS0gVXBkYXRlIGluZGV4ZWQgY29s dW1uIGluIHBhcnRpdGlvbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Rf cGFydGl0aW9uZWQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKworLS0gVmVyaWZ5 IGluZGV4IHdhcyB1cGRhdGVkCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVHJpZ2dlciBtb2RpZmljYXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBI T1QKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0 bHkgZGV0ZWN0IHdoZW4gdHJpZ2dlcnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0t IGhlYXBfbW9kaWZ5X3R1cGxlKCksIGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBp biB0aGUgVVBEQVRFJ3MgU0VUIGNsYXVzZQorCitDUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJf dGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50 LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUg SU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3QodHJpZ2dlcmVkX2Nv bCk7CisKKy0tIENyZWF0ZSBhIHRyaWdnZXIgdGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNv bHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2wo KQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29s ID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlm eQorICAgIEJFRk9SRSBVUERBVEUgT04gaG90X3RyaWdnZXJfdGVzdAorICAgIEZPUiBFQUNI IFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKKwor SU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwn KTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7 CisKKy0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJpZ2dlciBtb2RpZmllcyBp bmRleGVkIGNvbHVtbgorLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0cmlnZ2VyIG1v ZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCitVUERBVEUgaG90X3RyaWdnZXJfdGVzdCBTRVQg ZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CisKKy0tIFZlcmlmeSBpdCB3YXMgTk9U IGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4gd2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIp CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKKwor LS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBhY3R1YWxseSBtb2RpZmllZAor U0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0IFdIRVJFIGlkID0g MTsKKworRFJPUCBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0IENBU0NBREU7CitEUk9QIEZVTkNU SU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFj a2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0aGF0IHVwZGF0ZXMg dG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCisKK0NSRUFU RSBUQUJMRSBob3RfanNvbmJfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGRhdGEganNvbmIKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworLS0gQ3JlYXRlIGV4 cHJlc3Npb24gaW5kZXggb24gYSBzcGVjaWZpYyBKU09OIHBhdGgKK0NSRUFURSBJTkRFWCBo b3RfanNvbmJfbmFtZV9pZHggT04gaG90X2pzb25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7 CisKK0lOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUworICAgICgxLCAneyJuYW1l IjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKKyAgICAoMiwgJ3sibmFtZSI6 IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpT T04gcGF0aCAoYWdlKSAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitV UERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9 JywgJzMxJykgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBpbmRleGVkIEpTT04gcGF0aCAobmFt ZSkgLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRh ID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKwor LS0gVmVyaWZ5IGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7CisKKy0tIFRlc3QganNvbmJfZGVsZXRl IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRh dGlvbgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdjaXR5JyBX SEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25i X3Rlc3QnKTsKKworLS0gVGVzdCBqc29uYl9pbnNlcnQgb24gbm9uLWluZGV4ZWQgcGF0aCAt IHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCitVUERBVEUgaG90X2pzb25i X3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3VudHJ5fScsICciVVNB IicpIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworCitEUk9QIFRBQkxFIGhvdF9qc29uYl90ZXN0OworCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBYTUwgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWIt YXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0 IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRh dGVzCisKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENy ZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgWFBhdGgKK0NSRUFURSBJTkRF WCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxfdGVzdCAoKHhwYXRoKCcvcGVyc29uL25h bWUvdGV4dCgpJywgZG9jKSkpOworCitJTlNFUlQgSU5UTyBob3RfeG1sX3Rlc3QgVkFMVUVT CisgICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzA8L2FnZT48L3Bl cnNvbj4nKSwKKyAgICAoMiwgJzxwZXJzb24+PG5hbWU+Qm9iPC9uYW1lPjxhZ2U+MjU8L2Fn ZT48L3BlcnNvbj4nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1s X3Rlc3QnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZp b3IgZGVwZW5kcyBvbiBYTUwgY29tcGFyaXNvbiBmYWxsYmFjaworLS0gRnVsbCBYTUwgdmFs dWUgcmVwbGFjZW1lbnQgbWVhbnMgbm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJl cXVpcmUgaW5kZXggY29tcGFyaXNvbgorVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0g JzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxfdGVz dCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJl IEhPVAorVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxp Y2UyPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKKworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKKworLS0gVmVyaWZ5 IGluZGV4IHdvcmtzCitTRUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgo Jy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwor CitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFyZWRhdHVtcyBmb3IgSlNPTkIKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCBHSU4gaW5kZXhlcyBjYW4gdXNl IGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9UIHdoZW4gZXh0cmFjdGVkIGtleXMgbWF0 Y2gKKworQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIHRhZ3MgdGV4dFtdLAorICAgIHByb3BlcnRpZXMganNvbmIKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKKworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworCistLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAtIGtleXMgYW5kIHZh bHVlcykKK0NSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBob3RfZ2luX3Rlc3Qg VVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKKworSU5TRVJUIElOVE8gaG90X2dpbl90ZXN0IFZB TFVFUworICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7ImtleTEiOiJ2YWwxIiwi a2V5MiI6InZhbDIifScpLAorICAgICgyLCBBUlJBWVsndGFnMycsICd0YWc0J10sICd7Imtl eTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBVcGRhdGUgdGhhdCBjaGFuZ2VzIHRhZyBv cmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgc2hvdWxkIGJl IEhPVAorLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlmZmVyZW50IG9yZGVy KQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEn XSBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBKU09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBh bWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhPVCBvciBub24tSE9UCistLSBkZXBlbmRpbmcgb24g R0lOIG9wZXJhdG9yIGNsYXNzIChqc29uYl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZh bHVlcykKK1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoi dmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisKKy0tIEFkZCBuZXcgdGFnIC0g c2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5cykKK1VQREFURSBo b3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJywgJ3RhZzUnXSBX SEVSRSBpZCA9IDE7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisKKy0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCitTRUxFQ1QgaWQgRlJPTSBo b3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOworU0VMRUNUIGlkIEZS T00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3 In0nOworCitEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVz dF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgaGFzX2hv dF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJpbnRfaG90 X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRfaG90X2Nv dW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7Ci0tIAoyLjUwLjEKCg== --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA0MjQzNTEzOTE1NDUxMzkwODVkNTgxNWE4ZGIzYzIwM2MzZTVlNzUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDAy LzEwXSBJZGVudGlmeSBtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMgaW4gdGhlCiBleGVj dXRvciBvbiBVUERBVEUKClJlZmFjdG9yIGV4ZWN1dG9yIHVwZGF0ZSBsb2dpYyB0byBkZXRl cm1pbmUgd2hpY2ggaW5kZXhlZCBjb2x1bW5zIGhhdmUKYWN0dWFsbHkgY2hhbmdlZCBkdXJp bmcgYW4gVVBEQVRFIG9wZXJhdGlvbiByYXRoZXIgdGhhbiBsZWF2aW5nIHRoaXMgdXAKdG8g SGVhcERldGVybWluZUNvbHVtbnNJbmZvKCkgaW4gaGVhcF91cGRhdGUoKS4gRmluZGluZyB0 aGlzIHNldCBvZgphdHRyaWJ1dGVzIGlzIG5vdCBoZWFwLXNwZWNpZmljLCBidXQgbW9yZSBn ZW5lcmFsIHRvIGFsbCB0YWJsZSBBTXMgYW5kCmhhdmluZyB0aGlzIGluZm9ybWF0aW9uIGlu IHRoZSBleGVjdXRvciBjb3VsZCBpbmZvcm0gb3RoZXIgZGVjaXNpb25zCmFib3V0IHdoZW4g aW5kZXggaW5zZXJ0cyBhcmUgcmVxdWlyZWQgYW5kIHdoZW4gdGhleSBhcmUgbm90IHJlZ2Fy ZGxlc3MKb2YgdGhlIHRhYmxlIEFNJ3MgTVZDQyBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneS4K ClRoZSBoZWFwLW9ubHkgdHVwbGUgZGVjaXNpb24gKEhPVCkgaW4gaGVhcCBmdW5jdGlvbnMg YXMgaXQgYWx3YXlzIGhhczsKd2hhdCBtb3ZlcyB0byB0aGUgZXhlY3V0b3IgaXMgb25seSB0 aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgIm1vZGlmaWVkCmluZGV4ZWQgYXR0cmlidXRlcyIg KG1vZGlmaWVkX2lkeF9hdHRycykuCgpFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIHJl cGxhY2VzIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGFuZCBpcwpjYWxsZWQgYmVmb3Jl IHRhYmxlX3R1cGxlX3VwZGF0ZSgpIGNydWNpYWxseSB3aXRob3V0IHRoZSBuZWVkIGZvciBh bgpleGNsdXNpdmUgYnVmZmVyIGxvY2sgb24gdGhlIHBhZ2UgdGhhdCBob2xkcyB0aGUgdHVw bGUgYmVpbmcgdXBkYXRlZC4KVGhpcyByZWR1Y2VzIHRoZSB0aW1lIHRoZSBidWZmZXIgbG9j ayBpcyBoZWxkIGxhdGVyIHdpdGhpbgpoZWFwYW1fdHVwbGVfdXBkYXRlKCkgYW5kIGhlYXBf dXBkYXRlKCkuCgpCZXNpZGVzIGlkZW50aWZ5aW5nIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzCkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIHdhcyBhbHNvIHBh cnRpYWxseSByZXNwb25zaWJsZSBmb3IgdGhlCmRlY2lzaW9uIGFib3V0IHdoYXQgdG8gV0FM IGxvZyBmb3IgdGhlIHJlcGxpY2EgaWRlbnRpdHkga2V5LiBUaGF0IGxvZ2ljCm1vdmVzIGlu dG8gaGVhcF91cGRhdGUoKSBhbmQgaW50byB0aGUgcmVwbGFjZW1lbnQgaGVscGVyCkhlYXBV cGRhdGVNb2RpZmllZElkeEF0dHJzKCksIHNvIHNpbXBsZV9oZWFwX3VwZGF0ZSgpIGFuZApo ZWFwYW1fdHVwbGVfdXBkYXRlKCkgc2hhcmUgdGhlIHNhbWUgbG9naWMgc2luY2UgYm90aCBj YWxsIGludG8KaGVhcF91cGRhdGUoKS4KClVwZGF0ZXMgc3RlbW1pbmcgZnJvbSBsb2dpY2Fs IHJlcGxpY2F0aW9uIGFsc28gdXNlIHRoZSBuZXcKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0 cnMoKSBpbiBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoKS4KCkV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKCkgdXNlcyBFeGVjQ29tcGFyZVNsb3RBdHRycygpIHRvIGlkZW50aWZ5Cndo aWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkIGFuZCB0aGVuIGludGVyc2VjdHMgdGhhdCB3 aXRoIHRoZSBzZXQgb2YKaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIGlkZW50aWZ5IHRoZSBtb2Rp ZmllZCBpbmRleGVkIHNldCwgdGhlCm1vZGlmaWVkX2lkeF9hdHRycy4KClRoaXMgcGF0Y2gg aW50cm9kdWNlcyBhIGZldyBoZWxwZXIgZnVuY3Rpb25zIHRvIHJlZHVjZSBjb2RlIGR1cGxp Y2F0aW9uCmFuZCBpbmNyZWFzZSByZWFkYWJpbGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJs ZSgpIGFuZApIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoKSwgdXNlZCBpbiBib3RoIGhl YXBfdXBkYXRlKCkgYW5kCnNpbXBsZV9oZWFwX3VwZGF0ZSgpLgoKaGVhcF91cGRhdGUoKSBp cyBub3cgY2FsbGVkIHdpdGggbG9ja21vZGUgcHJlLWRldGVybWluZWQgYW5kIGEgYm9vbGVh bgppbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVwZGF0ZSBtYXkgYmUgSE9ULCBib3RoIGNvbnN0 LiBJZiBkdXJpbmcKaGVhcF91cGRhdGUoKSB0aGUgbmV3IHR1cGxlIGZpdHMgb24gdGhlIHNh bWUgcGFnZSBhbmQgdGhhdCBib29sZWFuIGlzCnRydWUsIHRoZSB1cGRhdGUgaXMgSE9ULiBT byBhbHRob3VnaCB0aGUgZnVuY3Rpb25zIGFuZCB0aW1pbmcgb2YgdGhlCkhPVCBkZWNpc2lv biBjb2RlIGhhdmUgY2hhbmdlZCwgbm9uZSBvZiB0aGUgbG9naWMgZ292ZXJuaW5nIHdoZW4g SE9UIGlzCmFsbG93ZWQgaGFzIGNoYW5nZWQuCgpEZXZlbG9wbWVudCBvZiB0aGlzIGZlYXR1 cmUgZXhwb3NlZCBub25kZXRlcm1pbmlzdGljIGJlaGF2aW9yIGluIHRocmVlCmV4aXN0aW5n IHRlc3RzLCB3aGljaCBoYXZlIGJlZW4gYWRqdXN0ZWQgdG8gYXZvaWQgaW5jb25zaXN0ZW50 IHJlc3VsdHMKZHVlIHRvIHR1cGxlIG9yZGVyaW5nIGR1cmluZyBoZWFwIHBhZ2Ugc2NhbnMu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkRpc2N1c3Npb246IGh0 dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81NTU2LwpEaXNjdXNzaW9u OiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvNzg1NzRCMjQt QkUwQS00MkM1LTgwNzUtM0ZBOUZBNjNCOEZDJTQwYW1hem9uLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDQ1MSArKysrKysrKysr KystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAg ICB8ICAzNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAgICAgICAg ICAgICAgfCAgMTQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j ICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jICAg ICAgICAgICAgIHwgIDcyICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgICAgICAgIHwgIDg2ICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMgICAgICAgICAgICB8ICA0NCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o ICAgICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS91dGlscy9yZWwu aCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3Jl bGNhY2hlLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL3N5c2Nh Y2hlLXVwZGF0ZS1wcnVuZWQub3V0ICAgICAgIHwgIDEyICstCiAuLi4vc3BlY3Mvc3lzY2Fj aGUtdXBkYXRlLXBydW5lZC5zcGVjICAgICAgICAgfCAgIDYgKy0KIC4uLi9yZWdyZXNzL2V4 cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQgICAgICAgIHwgIDE2ICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0ICAgICAgICAgfCAgIDMgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCB8ICAgNCArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsICAgIHwgICAyICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwgICAgICAgICAgICAgfCAgIDQgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsICAgICAgICAgICAgICB8ICAgMyArLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCAgICAgIHwgICAyICst CiAyMyBmaWxlcyBjaGFuZ2VkLCA1NzYgaW5zZXJ0aW9ucygrKSwgMjI2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYWJmZDhlODk3MGEuLjViMDU5 YTVhY2VmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzcsNiArMzcsOCBA QAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3Vi dHJhbnMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKKyNpbmNsdWRlICJhY2Nl c3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3ZhbGlkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgpAQCAtNDQsOCArNDYsMTEgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1 dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIKKyNpbmNsdWRl ICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgor I2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Mu aCIKQEAgLTUzLDYgKzU4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1 ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKQEAgLTcwLDExICs3Niw4IEBA IHN0YXRpYyB2b2lkIGNoZWNrX2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChSZWxh dGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwKTsKIHN0YXRp YyB2b2lkIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVhcFR1cGxlIG9sZHR1cCk7CiAjZW5k aWYKLXN0YXRpYyBCaXRtYXBzZXQgKkhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlv biByZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKmludGVyZXN0aW5nX2NvbHMs Ci0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICpleHRlcm5hbF9jb2xzLAotCQkJCQkJCQkJCSAg IEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQkJCQkJCQkJICAgYm9v bCAqaGFzX2V4dGVybmFsKTsKK3N0YXRpYyBCaXRtYXBzZXQgKkhlYXBVcGRhdGVNb2RpZmll ZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG9s ZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMgYm9vbCBoZWFwX2FjcXVpcmVfdHVw bG9jayhSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQsCiAJ CQkJCQkJCSBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5 LAogCQkJCQkJCQkgYm9vbCAqaGF2ZV90dXBsZV9sb2NrKTsKQEAgLTMxOTAsNyArMzE5Myw3 IEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBv aW50ZXJEYXRhICp0aWQpCiAgKgloZWFwX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQogICoK ICAqIFNlZSB0YWJsZV90dXBsZV91cGRhdGUoKSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhl IHBhcmFtZXRlcnMsIGV4Y2VwdCB0aGF0Ci0gKiB0aGlzIHJvdXRpbmUgZGlyZWN0bHkgdGFr ZXMgYSB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCisgKiB0aGlzIHJvdXRpbmUgZGlyZWN0 bHkgdGFrZXMgYSBoZWFwIHR1cGxlIHJhdGhlciB0aGFuIGEgc2xvdC4KICAqCiAgKiBJbiB0 aGUgZmFpbHVyZSBjYXNlcywgdGhlIHJvdXRpbmUgZmlsbHMgKnRtZmQgd2l0aCB0aGUgdHVw bGUncyB0X2N0aWQsCiAgKiB0X3htYXggKHJlc29sdmluZyBhIHBvc3NpYmxlIE11bHRpWGFj dCwgaWYgbmVjZXNzYXJ5KSwgYW5kIHRfY21heCAodGhlIGxhc3QKQEAgLTMyMDAsMTcgKzMy MDMsMTMgQEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCkKIFRNX1Jlc3VsdAogaGVhcF91cGRhdGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1 cCwKIAkJCUNvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zIHBnX2F0dHJpYnV0ZV91bnVz ZWQoKSwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAotCQkJVE1fRmFpbHVyZURh dGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJVFVfVXBkYXRlSW5kZXhl cyAqdXBkYXRlX2luZGV4ZXMpCisJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9j a1R1cGxlTW9kZSBsb2NrbW9kZSwKKwkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4 X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7 CiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwotCUJp dG1hcHNldCAgKmhvdF9hdHRyczsKLQlCaXRtYXBzZXQgICpzdW1fYXR0cnM7Ci0JQml0bWFw c2V0ICAqa2V5X2F0dHJzOwotCUJpdG1hcHNldCAgKmlkX2F0dHJzOwotCUJpdG1hcHNldCAg KmludGVyZXN0aW5nX2F0dHJzOwotCUJpdG1hcHNldCAgKm1vZGlmaWVkX2F0dHJzOworCUJp dG1hcHNldCAgKmlkeF9hdHRycywKKwkJCSAgICppZF9hdHRyczsKIAlJdGVtSWQJCWxwOwog CUhlYXBUdXBsZURhdGEgb2xkdHVwOwogCUhlYXBUdXBsZQloZWFwdHVwOwpAQCAtMzIzMSwx MyArMzIzMCwxMiBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJCWhhdmVfdHVw bGVfbG9jayA9IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNlX2hvdF91cGRh dGUgPSBmYWxzZTsKLQlib29sCQlzdW1tYXJpemVkX3VwZGF0ZSA9IGZhbHNlOwogCWJvb2wJ CWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCWJv b2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CiAJYm9vbAkJY2hlY2tlZF9s b2NrZXJzOwogCWJvb2wJCWxvY2tlcl9yZW1haW5zOwotCWJvb2wJCWlkX2hhc19leHRlcm5h bCA9IGZhbHNlOworCWJvb2wJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBmYWxzZTsKIAlUcmFu c2FjdGlvbklkIHhtYXhfbmV3X3R1cGxlLAogCQkJCXhtYXhfb2xkX3R1cGxlOwogCXVpbnQx NgkJaW5mb21hc2tfb2xkX3R1cGxlLApAQCAtMzI2OCwzMyArMzI2NiwxOCBAQCBoZWFwX3Vw ZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBI ZWFwVHVwbGUgbmV3dHVwLAogI2VuZGlmCiAKIAkvKgotCSAqIEZldGNoIHRoZSBsaXN0IG9m IGF0dHJpYnV0ZXMgdG8gYmUgY2hlY2tlZCBmb3IgdmFyaW91cyBvcGVyYXRpb25zLgotCSAq Ci0JICogRm9yIEhPVCBjb25zaWRlcmF0aW9ucywgdGhpcyBpcyB3YXN0ZWQgZWZmb3J0IGlm IHdlIGZhaWwgdG8gdXBkYXRlIG9yCi0JICogaGF2ZSB0byBwdXQgdGhlIG5ldyB0dXBsZSBv biBhIGRpZmZlcmVudCBwYWdlLiAgQnV0IHdlIG11c3QgY29tcHV0ZSB0aGUKLQkgKiBsaXN0 IGJlZm9yZSBvYnRhaW5pbmcgYnVmZmVyIGxvY2sgLS0tIGluIHRoZSB3b3JzdCBjYXNlLCBp ZiB3ZSBhcmUKLQkgKiBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZSByZWxldmFudCBz eXN0ZW0gY2F0YWxvZ3MsIHdlIGNvdWxkCi0JICogZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZl dGNoIHRoZSBsaXN0IGxhdGVyLiAgSW4gYW55IGNhc2UsIHRoZSByZWxjYWNoZQotCSAqIGNh Y2hlcyB0aGUgZGF0YSBzbyB0aGlzIGlzIHVzdWFsbHkgcHJldHR5IGNoZWFwLgotCSAqCi0J ICogV2UgYWxzbyBuZWVkIGNvbHVtbnMgdXNlZCBieSB0aGUgcmVwbGljYSBpZGVudGl0eSBh bmQgY29sdW1ucyB0aGF0IGFyZQotCSAqIGNvbnNpZGVyZWQgdGhlICJrZXkiIG9mIHJvd3Mg aW4gdGhlIHRhYmxlLgorCSAqIEZldGNoIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYWNyb3NzIGFs bCBpbmRleGVzIG9uIHRoaXMgcmVsYXRpb24gYXMgd2VsbAorCSAqIGFzIHRoZSByZXBsaWNh IGlkZW50aXR5IGFuZCBjb2x1bW5zLgogCSAqCi0JICogTm90ZSB0aGF0IHdlIGdldCBjb3Bp ZXMgb2YgZWFjaCBiaXRtYXAsIHNvIHdlIG5lZWQgbm90IHdvcnJ5IGFib3V0Ci0JICogcmVs Y2FjaGUgZmx1c2ggaGFwcGVuaW5nIG1pZHdheSB0aHJvdWdoLgotCSAqLwotCWhvdF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAg IElOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORyk7Ci0Jc3VtX2F0dHJzID0gUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICAgSU5ERVhfQVRU Ul9CSVRNQVBfU1VNTUFSSVpFRCk7Ci0Ja2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0tFWSk7Ci0JaWRfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgIElO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7Ci0JaW50ZXJlc3RpbmdfYXR0cnMgPSBO VUxMOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5n X2F0dHJzLCBob3RfYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1i ZXJzKGludGVyZXN0aW5nX2F0dHJzLCBzdW1fYXR0cnMpOwotCWludGVyZXN0aW5nX2F0dHJz ID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBrZXlfYXR0cnMpOwotCWlu dGVyZXN0aW5nX2F0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGludGVyZXN0aW5nX2F0dHJzLCBp ZF9hdHRycyk7CisJICogTm90ZTogV2UgbXVzdCBjb21wdXRlIHRoZSBsaXN0IGJlZm9yZSBv YnRhaW5pbmcgYnVmZmVyIGxvY2suIEluIHRoZQorCSAqIHdvcnN0IGNhc2UsIGlmIHdlIGFy ZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZSByZWxldmFudCBzeXN0ZW0KKwkgKiBj YXRhbG9ncywgd2UgY291bGQgZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRoZSBsaXN0 IGxhdGVyLiBLZWVwIGluCisJICogbWluZCB0aGF0IHJlbGNhY2hlIHJldHVybnMgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeQorCSAqIGFib3V0IHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaCwgYnV0IHdlIGRvIG5lZWQgdG8g ZnJlZQorCSAqIHRoZW0uCisJICovCisJaWR4X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0 dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpOworCWlkX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJf QklUTUFQX0lERU5USVRZX0tFWSk7CiAKIAlibG9jayA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tO dW1iZXIob3RpZCk7CiAJSU5KRUNUSU9OX1BPSU5UKCJoZWFwX3VwZGF0ZS1iZWZvcmUtcGlu IiwgTlVMTCk7CkBAIC0zMzQ4LDIwICszMzMxLDE3IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0 dXAsCiAJCXRtZmQtPmN0aWQgPSAqb3RpZDsKIAkJdG1mZC0+eG1heCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKLQkJKnVwZGF0 ZV9pbmRleGVzID0gVFVfTm9uZTsKIAotCQlibXNfZnJlZShob3RfYXR0cnMpOwotCQlibXNf ZnJlZShzdW1fYXR0cnMpOwotCQlibXNfZnJlZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShp ZF9hdHRycyk7Ci0JCS8qIG1vZGlmaWVkX2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8K LQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCQlibXNfZnJlZShpZHhfYXR0cnMp OworCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkgdGhlIGNhbGxlciwgZG9u J3QgZnJlZSBpdCAqLworCiAJCXJldHVybiBUTV9EZWxldGVkOwogCX0KIAogCS8qCi0JICog RmlsbCBpbiBlbm91Z2ggZGF0YSBpbiBvbGR0dXAgZm9yIEhlYXBEZXRlcm1pbmVDb2x1bW5z SW5mbyB0byB3b3JrCi0JICogcHJvcGVybHkuCisJICogRmlsbCBpbiBlbm91Z2ggZGF0YSBp biBvbGR0dXAgdG8gZGV0ZXJtaW5lIHJlcGxpY2EgaWRlbnRpdHkgYXR0cmlidXRlCisJICog cmVxdWlyZW1lbnRzLgogCSAqLwogCW9sZHR1cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRS ZWxpZChyZWxhdGlvbik7CiAJb2xkdHVwLnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpIFBh Z2VHZXRJdGVtKHBhZ2UsIGxwKTsKQEAgLTMzNzIsMTYgKzMzNTIsNTkgQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAluZXd0dXAtPnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHJlbGF0aW9uKTsKIAogCS8qCi0JICogRGV0ZXJtaW5lIGNvbHVtbnMgbW9kaWZpZWQgYnkg dGhlIHVwZGF0ZS4gIEFkZGl0aW9uYWxseSwgaWRlbnRpZnkKLQkgKiB3aGV0aGVyIGFueSBv ZiB0aGUgdW5tb2RpZmllZCByZXBsaWNhIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzIGluIHRo ZQotCSAqIG9sZCB0dXBsZSBpcyBleHRlcm5hbGx5IHN0b3JlZCBvciBub3QuICBUaGlzIGlz IHJlcXVpcmVkIGJlY2F1c2UgZm9yCi0JICogc3VjaCBhdHRyaWJ1dGVzIHRoZSBmbGF0dGVu ZWQgdmFsdWUgd29uJ3QgYmUgV0FMIGxvZ2dlZCBhcyBwYXJ0IG9mIHRoZQotCSAqIG5ldyB0 dXBsZSBzbyB3ZSBtdXN0IGluY2x1ZGUgaXQgYXMgcGFydCBvZiB0aGUgb2xkX2tleV90dXBs ZS4gIFNlZQotCSAqIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkuCisJICogRXh0cmFjdFJlcGxp Y2FJZGVudGl0eSgpIG5lZWRzIHRvIGtub3cgaWYgYSBtb2RpZmllZCBpbmRleGVkIGF0dHJp YnV0ZQorCSAqIGlzIHVzZWQgYXMgYSByZXBsaWNhIGlkZW50aXR5IG9yIGlmIGFueSBvZiB0 aGUgcmVwbGljYSBpZGVudGl0eQorCSAqIGF0dHJpYnV0ZXMgYXJlIHJlZmVyZW5jZWQgaW4g YW4gaW5kZXgsIHVubW9kaWZpZWQsIGFuZCBhcmUgc3RvcmVkCisJICogZXh0ZXJuYWxseSBp biB0aGUgb2xkIHR1cGxlIGJlaW5nIHJlcGxhY2VkLiAgSW4gdGhvc2UgY2FzZXMgaXQgbWF5 IGJlCisJICogbmVjZXNzYXJ5IHRvIFdBTCBsb2cgdGhlbSBzbyB0aGV5IGFyZSBhdmFpbGFi bGUgdG8gcmVwbGljYXMuCiAJICovCi0JbW9kaWZpZWRfYXR0cnMgPSBIZWFwRGV0ZXJtaW5l Q29sdW1uc0luZm8ocmVsYXRpb24sIGludGVyZXN0aW5nX2F0dHJzLAotCQkJCQkJCQkJCQkg IGlkX2F0dHJzLCAmb2xkdHVwLAotCQkJCQkJCQkJCQkgIG5ld3R1cCwgJmlkX2hhc19leHRl cm5hbCk7CisJcmVwX2lkX2tleV9yZXF1aXJlZCA9IGJtc19vdmVybGFwKG1vZGlmaWVkX2lk eF9hdHRycywgaWRfYXR0cnMpOworCWlmICghcmVwX2lkX2tleV9yZXF1aXJlZCkKKwl7CisJ CUJpdG1hcHNldCAgKmF0dHJzOworCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0 RGVzY3IocmVsYXRpb24pOworCQlpbnQJCQlhdHRpZHggPSAtMTsKKworCQkvKgorCQkgKiBS ZWR1Y2UgdGhlIHNldCB1bmRlciByZXZpZXcgdG8gb25seSB0aGUgdW5tb2RpZmllZCBpbmRl eGVkIHJlcGxpY2EKKwkJICogaWRlbnRpdHkga2V5IGF0dHJpYnV0ZXMuICBpZHhfYXR0cnMg aXMgY29waWVkIChieSBibXNfZGlmZmVyZW5jZSgpKQorCQkgKiBub3QgbW9kaWZpZWQgaGVy ZS4KKwkJICovCisJCWF0dHJzID0gYm1zX2RpZmZlcmVuY2UoaWR4X2F0dHJzLCBtb2RpZmll ZF9pZHhfYXR0cnMpOworCQlhdHRycyA9IGJtc19pbnRfbWVtYmVycyhhdHRycywgaWRfYXR0 cnMpOworCisJCXdoaWxlICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRp ZHgpKSA+PSAwKQorCQl7CisJCQkvKgorCQkJICogYXR0aWR4IGlzIHplcm8tYmFzZWQsIGF0 dHJudW0gaXMgdGhlIG5vcm1hbCBhdHRyaWJ1dGUgbnVtYmVyCisJCQkgKi8KKwkJCUF0dHJO dW1iZXIJYXR0cm51bSA9IGF0dGlkeCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXI7CisJCQlEYXR1bQkJdmFsdWU7CisJCQlib29sCQlpc251bGw7CisKKwkJCS8qCisJ CQkgKiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbm90IGFkZGVkIGludG8gSU5ERVhfQVRUUl9C SVRNQVBfSU5ERVhFRAorCQkJICogYml0bWFwIGJ5IHJlbGNhY2hlLgorCQkJICovCisJCQlB c3NlcnQoYXR0cm51bSA+IDApOworCisJCQl2YWx1ZSA9IGhlYXBfZ2V0YXR0cigmb2xkdHVw LCBhdHRybnVtLCB0dXBkZXNjLCAmaXNudWxsKTsKKworCQkJLyogTm8gbmVlZCB0byBjaGVj ayBhdHRyaWJ1dGVzIHRoYXQgY2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlm IChpc251bGwgfHwKKwkJCQlUdXBsZURlc2NDb21wYWN0QXR0cih0dXBkZXNjLCBhdHRybnVt IC0gMSktPmF0dGxlbiAhPSAtMSkKKwkJCQljb250aW51ZTsKKworCQkJLyogQ2hlY2sgaWYg dGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQgZXh0ZXJuYWxseSAqLworCQkJ aWYgKFZBUkFUVF9JU19FWFRFUk5BTCgoc3RydWN0IHZhcmxlbmEgKikgRGF0dW1HZXRQb2lu dGVyKHZhbHVlKSkpCisJCQl7CisJCQkJcmVwX2lkX2tleV9yZXF1aXJlZCA9IHRydWU7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlibXNfZnJlZShhdHRycyk7CisJfQogCiAJLyoK IAkgKiBJZiB3ZSdyZSBub3QgdXBkYXRpbmcgYW55ICJrZXkiIGNvbHVtbiwgd2UgY2FuIGdy YWIgYSB3ZWFrZXIgbG9jayB0eXBlLgpAQCAtMzM5NCw5ICszNDE3LDggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKIAkgKiBpcyB1cGRhdGVzIHRoYXQgZG9uJ3QgbWFuaXB1bGF0ZSBr ZXkgY29sdW1ucywgbm90IHRob3NlIHRoYXQKIAkgKiBzZXJlbmRpcGl0b3VzbHkgYXJyaXZl IGF0IHRoZSBzYW1lIGtleSB2YWx1ZXMuCiAJICovCi0JaWYgKCFibXNfb3ZlcmxhcChtb2Rp ZmllZF9hdHRycywga2V5X2F0dHJzKSkKKwlpZiAobG9ja21vZGUgPT0gTG9ja1R1cGxlTm9L ZXlFeGNsdXNpdmUpCiAJewotCQkqbG9ja21vZGUgPSBMb2NrVHVwbGVOb0tleUV4Y2x1c2l2 ZTsKIAkJbXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzTm9LZXlVcGRhdGU7CiAJCWtl eV9pbnRhY3QgPSB0cnVlOwogCkBAIC0zNDEzLDcgKzM0MzUsNyBAQCBoZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgbmV3dHVwLAogCX0KIAllbHNlCiAJewotCQkqbG9ja21vZGUgPSBMb2NrVHVwbGVFeGNs dXNpdmU7CisJCUFzc2VydChsb2NrbW9kZSA9PSBMb2NrVHVwbGVFeGNsdXNpdmUpOwogCQlt eGFjdF9zdGF0dXMgPSBNdWx0aVhhY3RTdGF0dXNVcGRhdGU7CiAJCWtleV9pbnRhY3QgPSBm YWxzZTsKIAl9CkBAIC0zNDkyLDcgKzM1MTQsNyBAQCBsMjoKIAkJCWJvb2wJCWN1cnJlbnRf aXNfbWVtYmVyID0gZmFsc2U7CiAKIAkJCWlmIChEb2VzTXVsdGlYYWN0SWRDb25mbGljdCgo TXVsdGlYYWN0SWQpIHh3YWl0LCBpbmZvbWFzaywKLQkJCQkJCQkJCQkqbG9ja21vZGUsICZj dXJyZW50X2lzX21lbWJlcikpCisJCQkJCQkJCQkJbG9ja21vZGUsICZjdXJyZW50X2lzX21l bWJlcikpCiAJCQl7CiAJCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9D Syk7CiAKQEAgLTM1MDEsNyArMzUyMyw3IEBAIGwyOgogCQkJCSAqIHJlcXVlc3RpbmcgYSBs b2NrIGFuZCBhbHJlYWR5IGhhdmUgb25lOyBhdm9pZHMgZGVhZGxvY2spLgogCQkJCSAqLwog CQkJCWlmICghY3VycmVudF9pc19tZW1iZXIpCi0JCQkJCWhlYXBfYWNxdWlyZV90dXBsb2Nr KHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUsCisJCQkJCWhlYXBfYWNx dWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJ CQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVfdHVwbGVfbG9jayk7CiAKIAkJCQkvKiB3 YWl0IGZvciBtdWx0aXhhY3QgKi8KQEAgLTM1ODYsNyArMzYwOCw3IEBAIGwyOgogCQkJICog bG9jay4KIAkJCSAqLwogCQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9D Syk7Ci0JCQloZWFwX2FjcXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgKmxvY2ttb2RlLAorCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xk dHVwLnRfc2VsZiksIGxvY2ttb2RlLAogCQkJCQkJCQkgTG9ja1dhaXRCbG9jaywgJmhhdmVf dHVwbGVfbG9jayk7CiAJCQlYYWN0TG9ja1RhYmxlV2FpdCh4d2FpdCwgcmVsYXRpb24sICZv bGR0dXAudF9zZWxmLAogCQkJCQkJCSAgWExUV19VcGRhdGUpOwpAQCAtMzY0NiwxNyArMzY2 OCwxNCBAQCBsMjoKIAkJCXRtZmQtPmNtYXggPSBJbnZhbGlkQ29tbWFuZElkOwogCQlVbmxv Y2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCWlmIChoYXZlX3R1cGxlX2xvY2spCi0JCQlV bmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiksICpsb2NrbW9k ZSk7CisJCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiks IGxvY2ttb2RlKTsKIAkJaWYgKHZtYnVmZmVyICE9IEludmFsaWRCdWZmZXIpCiAJCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAot CQlibXNfZnJlZShob3RfYXR0cnMpOwotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCQlibXNf ZnJlZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShpZF9hdHRycyk7Ci0JCWJtc19mcmVlKG1v ZGlmaWVkX2F0dHJzKTsKLQkJYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOworCQlibXNf ZnJlZShpZHhfYXR0cnMpOworCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMgb3duZWQgYnkg dGhlIGNhbGxlciwgZG9uJ3QgZnJlZSBpdCAqLworCiAJCXJldHVybiByZXN1bHQ7CiAJfQog CkBAIC0zNjg2LDcgKzM3MDUsNyBAQCBsMjoKIAljb21wdXRlX25ld194bWF4X2luZm9tYXNr KEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJCQkJCQkJICBv bGR0dXAudF9kYXRhLT50X2luZm9tYXNrLAogCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9p bmZvbWFzazIsCi0JCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgdHJ1ZSwKKwkJCQkJCQkgIHhp ZCwgbG9ja21vZGUsIHRydWUsCiAJCQkJCQkJICAmeG1heF9vbGRfdHVwbGUsICZpbmZvbWFz a19vbGRfdHVwbGUsCiAJCQkJCQkJICAmaW5mb21hc2syX29sZF90dXBsZSk7CiAKQEAgLTM4 MDMsNyArMzgyMiw3IEBAIGwyOgogCQljb21wdXRlX25ld194bWF4X2luZm9tYXNrKEhlYXBU dXBsZUhlYWRlckdldFJhd1htYXgob2xkdHVwLnRfZGF0YSksCiAJCQkJCQkJCSAgb2xkdHVw LnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkJICBvbGR0dXAudF9kYXRhLT50X2luZm9t YXNrMiwKLQkJCQkJCQkJICB4aWQsICpsb2NrbW9kZSwgZmFsc2UsCisJCQkJCQkJCSAgeGlk LCBsb2NrbW9kZSwgZmFsc2UsCiAJCQkJCQkJCSAgJnhtYXhfbG9ja19vbGRfdHVwbGUsICZp bmZvbWFza19sb2NrX29sZF90dXBsZSwKIAkJCQkJCQkJICAmaW5mb21hc2syX2xvY2tfb2xk X3R1cGxlKTsKIApAQCAtMzk3NiwyMCArMzk5NSw4IEBAIGwyOgogCQkgKiB0byBkbyBhIEhP VCB1cGRhdGUuICBDaGVjayBpZiBhbnkgb2YgdGhlIGluZGV4IGNvbHVtbnMgaGF2ZSBiZWVu CiAJCSAqIGNoYW5nZWQuCiAJCSAqLwotCQlpZiAoIWJtc19vdmVybGFwKG1vZGlmaWVkX2F0 dHJzLCBob3RfYXR0cnMpKQotCQl7CisJCWlmIChob3RfYWxsb3dlZCkKIAkJCXVzZV9ob3Rf dXBkYXRlID0gdHJ1ZTsKLQotCQkJLyoKLQkJCSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMg dGhhdCBhcmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5kZXhlcwotCQkJICogd2VyZSB1cGRh dGVkLCB3ZSBjYW4gYXBwbHkgSE9ULCBidXQgd2UgZG8gc3RpbGwgbmVlZCB0byBjaGVjawot CQkJICogaWYgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHN1bW1hcml6aW5nIGluZGV4ZXMsIGFu ZCB1cGRhdGUgdGhvc2UKLQkJCSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVtbnMgd2VyZSB1cGRh dGVkLCBvciB3ZSBtYXkgZmFpbCB0byBkZXRlY3QKLQkJCSAqIGUuZy4gdmFsdWUgYm91bmQg Y2hhbmdlcyBpbiBCUklOIG1pbm1heCBpbmRleGVzLgotCQkJICovCi0JCQlpZiAoYm1zX292 ZXJsYXAobW9kaWZpZWRfYXR0cnMsIHN1bV9hdHRycykpCi0JCQkJc3VtbWFyaXplZF91cGRh dGUgPSB0cnVlOwotCQl9CiAJfQogCWVsc2UKIAl7CkBAIC00MDA1LDggKzQwMTIsNyBAQCBs MjoKIAkgKiBjb2x1bW5zIGFyZSBtb2RpZmllZCBvciBpdCBoYXMgZXh0ZXJuYWwgZGF0YS4K IAkgKi8KIAlvbGRfa2V5X3R1cGxlID0gRXh0cmFjdFJlcGxpY2FJZGVudGl0eShyZWxhdGlv biwgJm9sZHR1cCwKLQkJCQkJCQkJCQkgICBibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRycywg aWRfYXR0cnMpIHx8Ci0JCQkJCQkJCQkJICAgaWRfaGFzX2V4dGVybmFsLAorCQkJCQkJCQkJ CSAgIHJlcF9pZF9rZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJICAgJm9sZF9rZXlfY29waWVk KTsKIAogCS8qIE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMgYXJl IGxvZ2dlZCAqLwpAQCAtNDEzNiw3ICs0MTQyLDcgQEAgbDI6CiAJICogUmVsZWFzZSB0aGUg bG1nciB0dXBsZSBsb2NrLCBpZiB3ZSBoYWQgaXQuCiAJICovCiAJaWYgKGhhdmVfdHVwbGVf bG9jaykKLQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYp LCAqbG9ja21vZGUpOworCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVw LnRfc2VsZiksIGxvY2ttb2RlKTsKIAogCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShyZWxh dGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIpOwogCkBAIC00MTUwLDMx ICs0MTU2LDEyIEBAIGwyOgogCQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKIAl9CiAKLQkv KgotCSAqIElmIGl0IGlzIGEgSE9UIHVwZGF0ZSwgdGhlIHVwZGF0ZSBtYXkgc3RpbGwgbmVl ZCB0byB1cGRhdGUgc3VtbWFyaXplZAotCSAqIGluZGV4ZXMsIGxlc3Qgd2UgZmFpbCB0byB1 cGRhdGUgdGhvc2Ugc3VtbWFyaWVzIGFuZCBnZXQgaW5jb3JyZWN0Ci0JICogcmVzdWx0cyAo Zm9yIGV4YW1wbGUsIG1pbm1heCBib3VuZHMgb2YgdGhlIGJsb2NrIG1heSBjaGFuZ2Ugd2l0 aCB0aGlzCi0JICogdXBkYXRlKS4KLQkgKi8KLQlpZiAodXNlX2hvdF91cGRhdGUpCi0Jewot CQlpZiAoc3VtbWFyaXplZF91cGRhdGUpCi0JCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1t YXJpemluZzsKLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKLQl9Ci0J ZWxzZQotCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7Ci0KIAlpZiAob2xkX2tleV90dXBs ZSAhPSBOVUxMICYmIG9sZF9rZXlfY29waWVkKQogCQloZWFwX2ZyZWV0dXBsZShvbGRfa2V5 X3R1cGxlKTsKIAotCWJtc19mcmVlKGhvdF9hdHRycyk7Ci0JYm1zX2ZyZWUoc3VtX2F0dHJz KTsKLQlibXNfZnJlZShrZXlfYXR0cnMpOwogCWJtc19mcmVlKGlkX2F0dHJzKTsKLQlibXNf ZnJlZShtb2RpZmllZF9hdHRycyk7Ci0JYm1zX2ZyZWUoaW50ZXJlc3RpbmdfYXR0cnMpOwor CWJtc19mcmVlKGlkeF9hdHRycyk7CisJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVk IGJ5IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KIAogCXJldHVybiBUTV9PazsKIH0K QEAgLTQzNDcsMjggKzQzMzQsMTE1IEBAIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1 cGRlc2MsIGludCBhdHRybnVtLCBEYXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKIH0KIAog LyoKLSAqIENoZWNrIHdoaWNoIGNvbHVtbnMgYXJlIGJlaW5nIHVwZGF0ZWQuCi0gKgotICog R2l2ZW4gYW4gdXBkYXRlZCB0dXBsZSwgZGV0ZXJtaW5lIChhbmQgcmV0dXJuIGludG8gdGhl IG91dHB1dCBiaXRtYXBzZXQpLAotICogZnJvbSB0aG9zZSBsaXN0ZWQgYXMgaW50ZXJlc3Rp bmcsIHRoZSBzZXQgb2YgY29sdW1ucyB0aGF0IGNoYW5nZWQuCi0gKgotICogaGFzX2V4dGVy bmFsIGluZGljYXRlcyBpZiBhbnkgb2YgdGhlIHVubW9kaWZpZWQgYXR0cmlidXRlcyAoZnJv bSB0aG9zZQotICogbGlzdGVkIGFzIGludGVyZXN0aW5nKSBvZiB0aGUgb2xkIHR1cGxlIGlz IGEgbWVtYmVyIG9mIGV4dGVybmFsX2NvbHMgYW5kIGlzCi0gKiBzdG9yZWQgZXh0ZXJuYWxs eS4KKyAqIEhPVCB1cGRhdGVzIGFyZSBwb3NzaWJsZSB3aGVuIGVpdGhlcjogYSkgdGhlcmUg YXJlIG5vIG1vZGlmaWVkIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMsIG9yIGIpIHRoZSBtb2Rp ZmllZCBhdHRyaWJ1dGVzIGFyZSBhbGwgb24gc3VtbWFyaXppbmcgaW5kZXhlcy4KKyAqIExh dGVyLCBpbiBoZWFwX3VwZGF0ZSgpLCB3ZSBjYW4gY2hvb3NlIHRvIHBlcmZvcm0gYSBIT1Qg dXBkYXRlIGlmIHRoZXJlIGlzCisgKiBzcGFjZSBvbiB0aGUgcGFnZSBmb3IgdGhlIG5ldyB0 dXBsZSBhbmQgdGhlIGZvbGxvd2luZyBjb2RlIGhhcyBkZXRlcm1pbmVkCisgKiB0aGF0IEhP VCBpcyBhbGxvd2VkLgorICovCitib29sCitIZWFwVXBkYXRlSG90QWxsb3dhYmxlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKKwkJ CQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQoreworCWJvb2wJCWhvdF9hbGxvd2VkOwor CisJLyoKKwkgKiBMZXQncyBiZSBvcHRpbWlzdGljIGFuZCBzdGFydCBvZmYgYnkgYXNzdW1p bmcgdGhlIGJlc3QgY2FzZSwgbm8gaW5kZXhlcworCSAqIG5lZWQgdXBkYXRpbmcgYW5kIEhP VCBpcyBhbGxvd2FibGUuCisJICovCisJaG90X2FsbG93ZWQgPSB0cnVlOworCSpzdW1tYXJp emVkX29ubHkgPSBmYWxzZTsKKworCS8qCisJICogQ2hlY2sgZm9yIGNhc2UgKGEpOyB3aGVu IHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIEhPVCBpcworCSAqIGFs bG93ZWQuCisJICovCisJaWYgKGJtc19pc19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQor CQlob3RfYWxsb3dlZCA9IHRydWU7CisJZWxzZQorCXsKKwkJQml0bWFwc2V0ICAqc3VtX2F0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCisJCQkJCQkJCQkJ CQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOworCisJCS8qCisJCSAqIEF0 IGxlYXN0IG9uZSBpbmRleCBhdHRyaWJ1dGUgd2FzIG1vZGlmaWVkLCBidXQgaXMgdGhpcyBj YXNlIChiKQorCQkgKiB3aGVyZSBhbGwgdGhlIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMg YXJlIG9ubHkgdXNlZCBieQorCQkgKiBzdW1tYXJpemluZyBpbmRleGVzPyAgSWYgaXQgaXMs IHRoZW4gd2UgbmVlZCB0byB1cGRhdGUgdGhvc2UKKwkJICogaW5kZXhlcywgYnV0IHRoaXMg dXBkYXRlIGNhbiBzdGlsbCBiZSBjb25zaWRlcmVkIGhlYXAtb25seSAoSE9UKQorCQkgKiBh bmQgYXZvaWQgdXBkYXRpbmcgYW55IG5vbi1zdW1tYXJpemluZyBpbmRleGVzIG9uIHRoZSBy ZWxhdGlvbi4KKwkJICovCisJCWlmIChibXNfaXNfc3Vic2V0KG1vZGlmaWVkX2lkeF9hdHRy cywgc3VtX2F0dHJzKSkKKwkJeworCQkJaG90X2FsbG93ZWQgPSB0cnVlOworCQkJKnN1bW1h cml6ZWRfb25seSA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogTm93 IHdlIGtub3cgYSkgb25lIG9yIG1vcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIHdlcmUgbW9kaWZp ZWQKKwkJCSAqIChjaGFuZ2VkIHZhbHVlLCBub3QganVzdCByZWZlcmVuY2VkIHdpdGhpbiB0 aGUgVVBEQVRFKSBhbmQgdGhhdAorCQkJICogYikgYXQgbGVhc3Qgb25lIG9mIHRob3NlIGF0 dHJpYnV0ZXMgaXMgdXNlZCBieSBhCisJCQkgKiBub24tc3VtbWFyaXppbmcgaW5kZXguIEhP VCBpcyBub3QgYWxsb3dlZC4KKwkJCSAqLworCQkJaG90X2FsbG93ZWQgPSBmYWxzZTsKKwkJ fQorCisJCWJtc19mcmVlKHN1bV9hdHRycyk7CisJfQorCisJcmV0dXJuIGhvdF9hbGxvd2Vk OworfQorCisvKgorICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSBhdHRyaWJ1dGVzIHVz ZWQgd2hlbiBmb3JtaW5nIHRoZSBpbmRleCBrZXlzIHdlIGNhbgorICogZ3JhYiBhIHdlYWtl ciBsb2NrIHR5cGUuIFRoaXMgYWxsb3dzIGZvciBtb3JlIGNvbmN1cnJlbmN5IHdoZW4gd2Ug YXJlCisgKiBydW5uaW5nIHNpbXVsdGFuZW91c2x5IHdpdGggZm9yZWlnbiBrZXkgY2hlY2tz LgorICovCitMb2NrVHVwbGVNb2RlCitIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQor eworCUxvY2tUdXBsZU1vZGUgbG9ja21vZGUgPSBMb2NrVHVwbGVFeGNsdXNpdmU7CisKKwlC aXRtYXBzZXQgICprZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxh dGlvbiwKKwkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCisJaWYg KCFibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIGtleV9hdHRycykpCisJCWxvY2tt b2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7CisKKwlibXNfZnJlZShrZXlfYXR0cnMp OworCisJcmV0dXJuIGxvY2ttb2RlOworfQorCisvKgorICogUmV0dXJuIGEgQml0bWFwc2V0 IHRoYXQgY29udGFpbnMgdGhlIHNldCBvZiBtb2RpZmllZCAoY2hhbmdlZCkgaW5kZXhlZAor ICogYXR0cmlidXRlcyBiZXR3ZWVuIG9sZHR1cCBhbmQgbmV3dHVwLgogICovCiBzdGF0aWMg Qml0bWFwc2V0ICoKLUhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiByZWxhdGlv biwKLQkJCQkJCSBCaXRtYXBzZXQgKmludGVyZXN0aW5nX2NvbHMsCi0JCQkJCQkgQml0bWFw c2V0ICpleHRlcm5hbF9jb2xzLAotCQkJCQkJIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBs ZSBuZXd0dXAsCi0JCQkJCQkgYm9vbCAqaGFzX2V4dGVybmFsKQorSGVhcFVwZGF0ZU1vZGlm aWVkSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBU dXBsZSBuZXd0dXApCiB7CiAJaW50CQkJYXR0aWR4OwotCUJpdG1hcHNldCAgKm1vZGlmaWVk ID0gTlVMTDsKKwlCaXRtYXBzZXQgICphdHRycywKKwkJCSAgICptb2RpZmllZF9pZHhfYXR0 cnMgPSBOVUxMOwogCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxh dGlvbik7CiAKKwkvKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxs IGluZGV4ZXMgZm9yIHRoaXMgcmVsYXRpb24gKi8KKwlhdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwor CS8qIE5vIGluZGV4ZWQgYXR0cmlidXRlcywgd2UncmUgZG9uZSAqLworCWlmIChibXNfaXNf ZW1wdHkoYXR0cnMpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogVGhpcyBoZWFwIHVw ZGF0ZSBmdW5jdGlvbiBpcyB1c2VkIG91dHNpZGUgdGhlIGV4ZWN1dG9yIGFuZCBzbyB1bmxp a2UKKwkgKiBoZWFwYW1fdHVwbGVfdXBkYXRlKCkgd2hlcmUgdGhlcmUgaXMgUmVzdWx0UmVs SW5mbyBhbmQgRVN0YXRlIHRvCisJICogcHJvdmlkZSB0aGUgY29uY2lzZSBzZXQgb2YgYXR0 cmlidXRlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZAorCSAqICh2aWEgRXhlY0dl dEFsbFVwZGF0ZWRDb2xzKCkpIHdlIHNpbXBseSBjaGVjayBhbGwgaW5kZXhlZCBhdHRyaWJ1 dGVzIHRvCisJICogZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQn cyB0aGUgIm1vZGlmaWVkIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGVzIiBvciAibW9kaWZpZWRf aWR4X2F0dHJzIi4KKwkgKi8KIAlhdHRpZHggPSAtMTsKLQl3aGlsZSAoKGF0dGlkeCA9IGJt c19uZXh0X21lbWJlcihpbnRlcmVzdGluZ19jb2xzLCBhdHRpZHgpKSA+PSAwKQorCXdoaWxl ICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgpKSA+PSAwKQogCXsK IAkJLyogYXR0aWR4IGlzIHplcm8tYmFzZWQsIGF0dHJudW0gaXMgdGhlIG5vcm1hbCBhdHRy aWJ1dGUgbnVtYmVyICovCiAJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dGlkeCArIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CkBAIC00Mzg0LDcgKzQ0NTgsNyBAQCBI ZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24sCiAJCSAqLwogCQlp ZiAoYXR0cm51bSA9PSAwKQogCQl7Ci0JCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1v ZGlmaWVkLCBhdHRpZHgpOworCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0gYm1zX2FkZF9tZW1i ZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOwogCQkJY29udGludWU7CiAJCX0KIApA QCAtNDM5Nyw3ICs0NDcxLDcgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9u IHJlbGF0aW9uLAogCQl7CiAJCQlpZiAoYXR0cm51bSAhPSBUYWJsZU9pZEF0dHJpYnV0ZU51 bWJlcikKIAkJCXsKLQkJCQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBh dHRpZHgpOworCQkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKG1vZGlm aWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAt NDQxMywyOSArNDQ4NywxMiBAQCBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCiAKIAkJaWYgKCFoZWFwX2F0dHJfZXF1YWxzKHR1cGRlc2MsIGF0dHJudW0s IHZhbHVlMSwKIAkJCQkJCQkgIHZhbHVlMiwgaXNudWxsMSwgaXNudWxsMikpCi0JCXsKLQkJ CW1vZGlmaWVkID0gYm1zX2FkZF9tZW1iZXIobW9kaWZpZWQsIGF0dGlkeCk7Ci0JCQljb250 aW51ZTsKLQkJfQotCi0JCS8qCi0JCSAqIE5vIG5lZWQgdG8gY2hlY2sgYXR0cmlidXRlcyB0 aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LiBOb3RlCi0JCSAqIHRoYXQgc3lzdGVt IGF0dHJpYnV0ZXMgY2FuJ3QgYmUgc3RvcmVkIGV4dGVybmFsbHkuCi0JCSAqLwotCQlpZiAo YXR0cm51bSA8IDAgfHwgaXNudWxsMSB8fAotCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVw ZGVzYywgYXR0cm51bSAtIDEpLT5hdHRsZW4gIT0gLTEpCi0JCQljb250aW51ZTsKLQotCQkv KgotCQkgKiBDaGVjayBpZiB0aGUgb2xkIHR1cGxlJ3MgYXR0cmlidXRlIGlzIHN0b3JlZCBl eHRlcm5hbGx5IGFuZCBpcyBhCi0JCSAqIG1lbWJlciBvZiBleHRlcm5hbF9jb2xzLgotCQkg Ki8KLQkJaWYgKFZBUkFUVF9JU19FWFRFUk5BTCgodmFybGVuYSAqKSBEYXR1bUdldFBvaW50 ZXIodmFsdWUxKSkgJiYKLQkJCWJtc19pc19tZW1iZXIoYXR0aWR4LCBleHRlcm5hbF9jb2xz KSkKLQkJCSpoYXNfZXh0ZXJuYWwgPSB0cnVlOworCQkJbW9kaWZpZWRfaWR4X2F0dHJzID0g Ym1zX2FkZF9tZW1iZXIobW9kaWZpZWRfaWR4X2F0dHJzLCBhdHRpZHgpOwogCX0KIAotCXJl dHVybiBtb2RpZmllZDsKKwlibXNfZnJlZShhdHRycyk7CisKKwlyZXR1cm4gbW9kaWZpZWRf aWR4X2F0dHJzOwogfQogCiAvKgpAQCAtNDQ1MywxMiArNDUxMCw5NCBAQCBzaW1wbGVfaGVh cF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cAogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEg dG1mZDsKIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlOworCVR1cGxlVGFibGVTbG90ICpzbG90 OworCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNsb3Q7CisJSGVhcFR1cGxlCW9sZHR1 cDsKKwlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKKwlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CisJYm9vbAkJaG90X2FsbG93ZWQsCisJCQkJc3VtbWFyaXplZF9vbmx5Owor CUJ1ZmZlcgkJYnVmZmVyOwogCi0JcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90 aWQsIHR1cCwKLQkJCQkJCSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLCAwLAotCQkJCQkJ IEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCSB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAs Ci0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCUFzc2VydChJ dGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyoKKwkgKiBUbyB1cGRhdGUgYSBoZWFw IHR1cGxlIHdlIG5lZWQgdG8gZmluZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQKKwkg KiBhdHRyaWJ1dGVzICgibW9kaWZpZWRfaWR4X2F0dHJzIikgYW5kIHVzZSB0aGF0IHRvIGRl dGVybWluZSBpZiBhIEhPVAorCSAqIHVwZGF0ZSBpcyBhbGxvd2FibGUgb3Igbm90LiBXaGVu IHVwZGF0aW5nIGhlYXAgdHVwbGVzIHZpYSBleGVjdXRpb24gb2YKKwkgKiBVUERBVEUgc3Rh dGVtZW50cyB0aGlzIHNldCBpcyBjb25zdHJ1Y3RlZCBiZWZvcmUgY2FsbGluZyBpbnRvIHRo ZSB0YWJsZQorCSAqIEFNJ3MgdXBkYXRlIGZ1bmN0aW9uIGJ5IEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKCkgd2hpY2ggY29tcGFyZXMgdGhlCisJICogb2xkL25ldyBUdXBsZVRhYmxl U2xvdHMuCisJICoKKwkgKiBIZXJlIHRoaW5ncyBhcmUgYSBiaXQgZGlmZmVyZW50LCB3ZSBo YXZlIHRoZSBvbGQgVElEIGFuZCB0aGUgbmV3IHR1cGxlLAorCSAqIG5vdCB0d28gVHVwbGVU YWJsZVNsb3RzLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBjb25zdHJ1Y3QgYSBzaW1pbGFyCisJ ICogYml0bWFwIHNvIGFzIHRvIGJlIGFibGUgdG8ga25vdyBpZiBIT1QgdXBkYXRlcyBhcmUg YWxsb3dlZCBvciBub3QuCisJICoKKwkgKiBUbyBkbyB0aGF0IHdlIGZpcnN0IGhhdmUgdG8g ZmV0Y2ggdGhlIG9sZCB0dXBsZSBpdHNlbGYsIGJ1dCBiZWNhdXNlCisJICogaGVhcGFtX2Zl dGNoX3Jvd192ZXJzaW9uKCkgaXMgc3RhdGljLCB3ZSByZXBsaWNhdGUgaW4gcGFydCB0aGF0 IGNvZGUKKwkgKiBoZXJlLgorCSAqCisJICogVGhpcyBpcyBhIGJpdCByZXBldGl0aXZlIGJl Y2F1c2UgaGVhcF91cGRhdGUoKSB3aWxsIGFnYWluIGZpbmQgYW5kIGZvcm0KKwkgKiB0aGUg b2xkIEhlYXBUdXBsZSBmcm9tIHRoZSBvbGQgVElEIGFuZCBpbiBtb3N0IGNhc2VzIHRoZSBj YWxsZXJzCisJICogKGlnbm9yaW5nIGV4dGVuc2lvbnMsIGFyZSBhbHdheXMgY2F0YWxvZyB0 dXBsZSB1cGRhdGVzKSBhbHJlYWR5IGhhZCB0aGUKKwkgKiBzZXQgb2YgY2hhbmdlZCBhdHRy aWJ1dGVzICh0aGUgInJlcGxhY2VzIiBhcnJheSksIGJ1dCBmb3Igbm93IHRoaXMKKwkgKiBt aW5vciByZXBldGl0aW9uIG9mIHdvcmsgaXMgbmVjZXNzYXJ5LgorCSAqLworCUlOSkVDVElP Tl9QT0lOVCgic2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4iLCBOVUxMKTsKKworCXNs b3QgPSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbiksICZU VFNPcHNCdWZmZXJIZWFwVHVwbGUsIDApOworCWJzbG90ID0gKEJ1ZmZlckhlYXBUdXBsZVRh YmxlU2xvdCAqKSBzbG90OworCisJLyoKKwkgKiBTZXQgdGhlIFRJRCBpbiB0aGUgc2xvdCBh bmQgdGhlbiBmZXRjaCB0aGUgb2xkIHR1cGxlIHNvIHdlIGNhbiBleGFtaW5lCisJICogaXQK KwkgKi8KKwlic2xvdC0+YmFzZS50dXBkYXRhLnRfc2VsZiA9ICpvdGlkOworCWlmICghaGVh cF9mZXRjaChyZWxhdGlvbiwgU25hcHNob3RBbnksICZic2xvdC0+YmFzZS50dXBkYXRhLCAm YnVmZmVyLCBmYWxzZSkpCisJeworCQkvKgorCQkgKiBoZWFwX3VwZGF0ZSgpIGNoZWNrcyBm b3IgIUl0ZW1JZElzTm9ybWFsKGxwKSBhbmQgd2lsbCByZXR1cm4gZmFsc2UKKwkJICogaW4g dGhvc2UgY2FzZXMuCisJCSAqLworCQlBc3NlcnQoUmVsYXRpb25TdXBwb3J0c1N5c0NhY2hl KFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKSk7CisKKwkJKnVwZGF0ZV9pbmRleGVzID0g VFVfTm9uZTsKKworCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgbm90IHlldCBpbml0aWFsaXpl ZCAqLworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJCWVsb2co RVJST1IsICJ0dXBsZSBjb25jdXJyZW50bHkgZGVsZXRlZCIpOworCisJCXJldHVybjsKKwl9 CisKKwlBc3NlcnQoYnVmZmVyICE9IEludmFsaWRCdWZmZXIpOworCisJLyogU3RvcmUgaW4g c2xvdCwgdHJhbnNmZXJyaW5nIGV4aXN0aW5nIHBpbiAqLworCUV4ZWNTdG9yZVBpbm5lZEJ1 ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKKwlv bGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJl ZSk7CisKKwltb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOworCWxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVy bWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOworCWhvdF9hbGxv d2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0 dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsKKworCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0 aW9uLCBvdGlkLCB0dXAsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1ZSksIDAsCisJCQkJCQkg SW52YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCisJCQkJCQkg JnRtZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKKwor CWlmIChzaG91bGRGcmVlKQorCQloZWFwX2ZyZWV0dXBsZShvbGR0dXApOworCisJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCS8qCisJICogRGVjaWRlIHdoZXRo ZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRlZCBmb3IgdGhlIHR1cGxlCisJICoKKwkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCisJICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKKwkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqLworCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX05vbmU7CiAJc3dpdGNoIChyZXN1bHQpCiAJewogCQljYXNlIFRNX1NlbGZN b2RpZmllZDoKQEAgLTQ0NjgsNiArNDYwNywxMCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IHR1cAogCiAJCWNhc2UgVE1fT2s6CiAJCQkvKiBkb25lIHN1Y2Nlc3NmdWxseSAqLworCQkJ aWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCkpCisJCQkJKnVwZGF0ZV9pbmRleGVzID0g VFVfQWxsOworCQkJZWxzZSBpZiAoc3VtbWFyaXplZF9vbmx5KQorCQkJCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX1N1bW1hcml6aW5nOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUTV9VcGRhdGVk OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmY4 NzQzMGNmMDEuLjc1YjRkNDBhYWZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc3lu Y3NjYW4uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vz cy90c21hcGkuaCIKLSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9pbmRleC5oIgpAQCAtMjE4LDIwICsyMTcsMjYgQEAgc3RhdGljIFRN X1Jlc3VsdAogaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBv aW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQs IHVpbnQzMiBvcHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jv c3NjaGVjaywKLQkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJ TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKQorCQkJCQlib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVN b2RlICpsb2NrbW9kZSwKKwkJCQkJY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0 cnMsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQogewogCWJvb2wJCXNob3Vs ZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBsZQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVw bGUoc2xvdCwgdHJ1ZSwgJnNob3VsZEZyZWUpOworCWJvb2wJCWhvdF9hbGxvd2VkOworCWJv b2wJCXN1bW1hcml6ZWRfb25seTsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCisJQXNzZXJ0KEl0 ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CisKKwlob3RfYWxsb3dlZCA9IEhlYXBVcGRhdGVI b3RBbGxvd2FibGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycywgJnN1bW1hcml6ZWRf b25seSk7CisJKmxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0 aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOworCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRo IHRhYmxlIG9pZCAqLwogCXNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQo cmVsYXRpb24pOwogCXR1cGxlLT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwog Ci0JcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9w dGlvbnMsCi0JCQkJCQkgY3Jvc3NjaGVjaywgd2FpdCwKLQkJCQkJCSB0bWZkLCBsb2NrbW9k ZSwgdXBkYXRlX2luZGV4ZXMpOworCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBv dGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLCBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRt ZmQsICpsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CiAJSXRl bVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgpA QCAtMjQ0LDE2ICsyNDksMTcgQEAgaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxh dGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJICogSE9U LCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3 ZSBlaXRoZXIKIAkgKiB1cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUg YXQgYWxsLgogCSAqLwotCWlmIChyZXN1bHQgIT0gVE1fT2spCisJKnVwZGF0ZV9pbmRleGVz ID0gVFVfTm9uZTsKKwlpZiAocmVzdWx0ID09IFRNX09rKQogCXsKLQkJQXNzZXJ0KCp1cGRh dGVfaW5kZXhlcyA9PSBUVV9Ob25lKTsKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsK KwkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkodHVwbGUpKQorCQl7CisJCQlpZiAoc3VtbWFy aXplZF9vbmx5KQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOworCQl9 CisJCWVsc2UKKwkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKIAl9Ci0JZWxzZSBpZiAo IUhlYXBUdXBsZUlzSGVhcE9ubHkodHVwbGUpKQotCQlBc3NlcnQoKnVwZGF0ZV9pbmRleGVz ID09IFRVX0FsbCk7Ci0JZWxzZQotCQlBc3NlcnQoKCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9T dW1tYXJpemluZykgfHwKLQkJCSAgICgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfTm9uZSkpOwog CiAJaWYgKHNob3VsZEZyZWUpCiAJCXBmcmVlKHR1cGxlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGUvdGFibGVhbS5jCmluZGV4IDY4ZmYwOTY2ZjFjLi4xMmMyNjc0Y2JkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0zNjEsNiArMzYxLDcgQEAgdm9pZAogc2lt cGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQs CiAJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCwKKwkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCiAJ CQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQogewogCVRNX1Jlc3Vs dAlyZXN1bHQ7CkBAIC0zNzEsNyArMzcyLDkgQEAgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0 ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCUdldEN1cnJlbnRD b21tYW5kSWQodHJ1ZSksCiAJCQkJCQkJCTAsIHNuYXBzaG90LCBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCQkJJnRtZmQs ICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2Rl LAorCQkJCQkJCQltb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCQkJCXVwZGF0ZV9pbmRleGVz KTsKIAogCXN3aXRjaCAocmVzdWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5kZXgg ZmFhMDdkMWExMTguLjk3NjFiZGFjOWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYwpAQCAt MjY4OSw4ICsyNjg5LDE4IEBAIGFwcGx5X2NvbmN1cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJl bCwgVHVwbGVUYWJsZVNsb3QgKnNwaWxsZWRfdHVwbGUsCiAJTG9ja1R1cGxlTW9kZSBsb2Nr bW9kZTsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwogCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRl X2luZGV4ZXM7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOwogCVRNX1Jlc3Vs dAlyZXM7CiAKKwkvKgorCSAqIENvbXB1dGUgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVk IGF0dHJpYnV0ZXMgYnkgY29tcGFyaW5nIHRoZSBvbGQKKwkgKiAob25kaXNrKSBhbmQgbmV3 IChzcGlsbGVkKSB0dXBsZXM7IGhlYXBfdXBkYXRlIG5lZWRzIGl0IGZvciBhIGNvcnJlY3QK KwkgKiBIT1QgZGVjaXNpb24gKGEgTlVMTCBzZXQgd291bGQgbG9vayBsaWtlICJubyBpbmRl eGVkIGNvbHVtbiBjaGFuZ2VkIikuCisJICovCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhl Y1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoY2hnY3h0LT5jY19ycmksCisJCQkJCQkJCQkJCQkJ b25kaXNrX3R1cGxlLAorCQkJCQkJCQkJCQkJCXNwaWxsZWRfdHVwbGUpOworCiAJLyoKIAkg KiBDYXJyeSBvdXQgdGhlIHVwZGF0ZSwgc2tpcHBpbmcgbG9naWNhbCBkZWNvZGluZyBmb3Ig aXQuCiAJICovCkBAIC0yNzAwLDcgKzI3MTAsNyBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0 ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCQkJCQkJ CSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkg ZmFsc2UsCi0JCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsICZ1cGRhdGVfaW5kZXhlcyk7CisJ CQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywgJnVwZGF0ZV9p bmRleGVzKTsKIAlpZiAocmVzICE9IFRNX09rKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVy cmNvZGUoRVJSQ09ERV9UX1JfU0VSSUFMSVpBVElPTl9GQUlMVVJFKSwKQEAgLTI3MjEsNiAr MjczMSw4IEBAIGFwcGx5X2NvbmN1cnJlbnRfdXBkYXRlKFJlbGF0aW9uIHJlbCwgVHVwbGVU YWJsZVNsb3QgKnNwaWxsZWRfdHVwbGUsCiAJfQogCiAJcGdzdGF0X3Byb2dyZXNzX2luY3Jf cGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQsIDEpOworCisJYm1z X2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggYjJjYTVjYmYxMTcuLjYyNjJm NzFiZDkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAt MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVsY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgpAQCAt OTEwLDYgKzkxMSw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKKwlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CiAKIAkvKgogCSAqIFdlIHN1cHBvcnQgb25seSBub24tc3lzdGVtIHRhYmxl cywgd2l0aApAQCAtOTQ4LDggKzk1MCwxMyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxp c3BhcnRpdGlvbikKIAkJCUV4ZWNQYXJ0aXRpb25DaGVjayhyZXN1bHRSZWxJbmZvLCBzbG90 LCBlc3RhdGUsIHRydWUpOwogCisJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVN b2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkJCQkJCXNlYXJjaHNs b3QsIHNsb3QpOworCiAJCXNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNs b3QsIGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgJnVwZGF0ZV9pbmRleGVzKTsK KwkJCQkJCQkJICBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCWJt c19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAogCQljb25mbGljdGluZGV4ZXMgPSBy ZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXM7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNUdXBsZXMuYwppbmRleCA3ZjRlYmY5NTQzMi4uMjlmOWU2Y2U2N2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIK ICNpbmNsdWRlICJ1dGlscy9leHBhbmRlZGRhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTIwMTIsNiArMjAx Myw3NyBAQCBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oVHVwbGVUYWJsZVNsb3QgKnNs b3QpCiAJcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqIEV4ZWNDb21wYXJlU2xvdEF0dHJzCisg KgorICogQ29tcGFyZSB0aGUgc3Vic2V0IG9mIGF0dHJpYnV0ZXMgaW4gYXR0cnMgYmV0d2Vl biBUdXBsZVRhYmxlU2xvdHMgdG8gZGV0ZWN0CisgKiB3aGljaCBhdHRyaWJ1dGVzIGhhdmUg Y2hhbmdlZC4KKyAqCisgKiBUaGUgaW5wdXQgQml0bWFwc2V0IGF0dHJzIGlzIG1vZGlmaWVk IGluIHBsYWNlIChyZWN5Y2xlZCB3aGVuIHBvc3NpYmxlIHZpYQorICogYm1zX2RlbF9tZW1i ZXIsIHdoaWNoIG1heSBwZnJlZSBpdCBhbmQgcmV0dXJuIE5VTEwpIGFuZCBtYXkgYmUgZnJl ZWQ7CisgKiBjYWxsZXJzIG11c3QgdXNlIG9ubHkgdGhlIHJldHVybmVkIHBvaW50ZXIsIG5v dCB0aGVpciBvcmlnaW5hbCBhdHRycworICogdmFsdWUuICBSZXR1cm5zIHRoZSBCaXRtYXBz ZXQgb2YgYXR0cmlidXRlIGluZGljZXMgKHVzaW5nIHRoZQorICogRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50aW9uKSB0aGF0IGRpZmZlciBiZXR3ZWVuIHRo ZSB0d28KKyAqIHNsb3RzLgorICovCitCaXRtYXBzZXQgKgorRXhlY0NvbXBhcmVTbG90QXR0 cnMoQml0bWFwc2V0ICphdHRycywgVHVwbGVEZXNjIHR1cGRlc2MsCisJCQkJCSBUdXBsZVRh YmxlU2xvdCAqczEsIFR1cGxlVGFibGVTbG90ICpzMikKK3sKKwlpbnQJCQlhdHRpZHggPSAt MTsKKworCXdoaWxlICgoYXR0aWR4ID0gYm1zX25leHRfbWVtYmVyKGF0dHJzLCBhdHRpZHgp KSA+PSAwKQorCXsKKwkJLyogYXR0aWR4IGlzIHplcm8tYmFzZWQsIGF0dHJudW0gaXMgdGhl IG5vcm1hbCBhdHRyaWJ1dGUgbnVtYmVyICovCisJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0 dGlkeCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisJCURhdHVtCQl2 YWx1ZTEsCisJCQkJCXZhbHVlMjsKKwkJYm9vbAkJbnVsbDEsCisJCQkJCW51bGwyOworCQlD b21wYWN0QXR0cmlidXRlICphdHQ7CisKKwkJLyoKKwkJICogSWYgaXQncyBhIHdob2xlLXR1 cGxlIHJlZmVyZW5jZSwgc2F5ICJub3QgZXF1YWwiLiAgSXQncyBub3QgcmVhbGx5CisJCSAq IHdvcnRoIHN1cHBvcnRpbmcgdGhpcyBjYXNlLCBzaW5jZSBpdCBjb3VsZCBvbmx5IHN1Y2Nl ZWQgYWZ0ZXIgYQorCQkgKiBuby1vcCB1cGRhdGUsIHdoaWNoIGlzIGhhcmRseSBhIGNhc2Ug d29ydGggb3B0aW1pemluZyBmb3IuCisJCSAqLworCQlpZiAoYXR0cm51bSA9PSAwKQorCQkJ Y29udGludWU7CisKKwkJLyoKKwkJICogTGlrZXdpc2UsIGF1dG9tYXRpY2FsbHkgc2F5ICJu b3QgZXF1YWwiIGZvciBhbnkgc3lzdGVtIGF0dHJpYnV0ZQorCQkgKiBvdGhlciB0aGFuIHRh YmxlT0lEOyB3ZSBjYW5ub3QgZXhwZWN0IHRoZXNlIHRvIGJlIGNvbnNpc3RlbnQgaW4gYQor CQkgKiBIT1QgY2hhaW4sIG9yIGV2ZW4gdG8gYmUgc2V0IGNvcnJlY3RseSB5ZXQgaW4gdGhl IG5ldyB0dXBsZS4KKwkJICovCisJCWlmIChhdHRybnVtIDwgMCkKKwkJeworCQkJaWYgKGF0 dHJudW0gPT0gVGFibGVPaWRBdHRyaWJ1dGVOdW1iZXIpCisJCQkJYXR0cnMgPSBibXNfZGVs X21lbWJlcihhdHRycywgYXR0aWR4KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJYXR0ID0g VHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpOworCQl2YWx1ZTEg PSBzbG90X2dldGF0dHIoczEsIGF0dHJudW0sICZudWxsMSk7CisJCXZhbHVlMiA9IHNsb3Rf Z2V0YXR0cihzMiwgYXR0cm51bSwgJm51bGwyKTsKKworCQkvKiBBIGNoYW5nZSB0by9mcm9t IE5VTEwsIHNvIG5vdCBlcXVhbCAqLworCQlpZiAobnVsbDEgIT0gbnVsbDIpCisJCQljb250 aW51ZTsKKworCQkvKiBCb3RoIE5VTEwsIG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlm IChudWxsMikKKwkJeworCQkJYXR0cnMgPSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4 KTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwg dmFsdWUyLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQlhdHRycyA9IGJtc19k ZWxfbWVtYmVyKGF0dHJzLCBhdHRpZHgpOworCX0KKworCXJldHVybiBhdHRyczsKK30KKwog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCQkJY29udmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGlu ZXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKaW5kZXggYjk3ODFlYjNiOTUuLjliNmY4NzU3ZmFlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTgsNiArMTgsNyBAQAogICoJCUV4ZWNNb2Rp ZnlUYWJsZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJ RXhlY0VuZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAg KgkJRXhlY1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2Rl CisgKgkJRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVk IGluZGV4ZWQgY29sdW1ucwogICoKICAqCSBOT1RFUwogICoJCVRoZSBNb2RpZnlUYWJsZSBu b2RlIHJlY2VpdmVzIGlucHV0IGZyb20gaXRzIG91dGVyUGxhbiwgd2hpY2ggaXMKQEAgLTU2 LDYgKzU3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgor I2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK ICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIgpAQCAtMjAyLDYgKzIwNCw2MyBAQCBzdGF0aWMgdm9pZCBmaXJlQVNU cmlnZ2VycyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIEV4ZWNJbml0 Rm9yUG9ydGlvbk9mKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRl LAogCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CiAKKy8qCisgKiBF eGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycworICoKKyAqIEZpbmQgdGhlIHNldCBvZiBhdHRy aWJ1dGVzIHJlZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNlZCBpbiB0aGlzCisg KiBVUERBVEUgdGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBpcyBkb25lIGJ5IHJl dmlld2luZyBzbG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBEQVRFIHN0YXRtZW50 IGFuZCBhcmUga25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFzdCBvbmUKKyAqIGlu ZGV4IGluIHNvbWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAibW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzIiBvcgorICogIm1vZGlmaWVkX2lkeF9hdHRycyIuICBBbiBvdmVy bGFwIG9mIGEgc2luZ2xlIGluZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcworICogbW9kaWZp ZWRfaWR4X2F0dHJzIHNldCBzaWduYWxzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIG5l d190dHMgdXNlZCB0bworICogZm9ybSB0aGUgaW5kZXggZGF0dW0gaGF2ZSBjaGFuZ2VkLgor ICoKKyAqIFJldHVybiBhIEJpdG1hcHNldCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9k aWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAg YW5kIG5ld3R1cC4KKyAqCisgKiBOb3RlOiBUaGVyZSBpcyBhIHNpbWlsYXIgZnVuY3Rpb24g Y2FsbGVkIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgdGhhdCBvcGVyYXRlcworICog b24gdGhlIG9sZCBUSUQgYW5kIG5ldyBIZWFwVHVwbGUgcmF0aGVyIHRoYW4gdGhlIG9sZC9u ZXcgVHVwbGVUYWJsZVNsb3RzIGFzCisgKiB0aGlzIGZ1bmN0aW9uIGRvZXMuICBUaGVzZSB0 d28gZnVuY3Rpb25zIHNob3VsZCBtaXJyb3Igb25lIGFub3RoZXIgdW50aWwKKyAqIHNvbWVk YXkgd2hlbiBjYXRhbG9nIHR1cGxlIHVwZGF0ZXMgdHJhY2sgdGhlaXIgY2hhbmdlcyBhdm9p ZGluZyB0aGUgbmVlZCB0bworICogcmUtZGlzY292ZXIgdGhlbSBpbiBzaW1wbGVfaGVhcF91 cGRhdGUoKS4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkgICBUdXBsZVRhYmxlU2xv dCAqb2xkX3R0cywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJl bGF0aW9uCXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1 cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFw c2V0ICAqYXR0cnM7CisKKwkvKiBJZiBubyBpbmRleGVzLCB3ZSdyZSBkb25lICovCisJaWYg KHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisK KwkvKgorCSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5k ZXhlcyBmb3IgdGhpcyByZWxhdGlvbiBmcm9tCisJICogdGhlIHJlbGNhY2hlLCBpdCByZXR1 cm5zIHVzIGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICoK KwkgKiBOb3RlOiBXZSBpbnRlbnRpb25hbGx5IHNjYW4gYWxsIGluZGV4ZWQgY29sdW1ucyB3 aGVuIGxvb2tpbmcgZm9yCisJICogY2hhbmdlcyByYXRoZXIgdGhhbiByZWR1Y2UgdGhhdCBz ZXQgYnkgaW50ZXJzZWN0aW5nIGl0IHdpdGgKKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHMo KS4gIERlc2lwdGUgdGhlIG5hbWUgaXQgcHJvdmlkZXMgdGhlIHNldCBvZgorCSAqIHRhcmdl dGVkIGF0dHJpYnV0ZXMgaW4gdGhlIFNRTCB1c2VkIGZvciB0aGUgVVBEQVRFIGFuZCBhbnkg dHJpZ2dlcnMsCisJICogYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRlIGFueSBhdHRyaWJ1dGVz IHVwZGF0ZWQgdXNpbmcKKwkgKiBoZWFwX21vZGlmaXlfdHVwbGUoKS4gVGhlcmUgaXMgb25l IHRlc3QgaW4gdHNlYXJjaC5zcWwgdGhhdCBkb2VzIGp1c3QKKwkgKiB0aGF0LCBtb2RpZmll cyBhbiBpbmRleGVkIGF0dHJpYnV0ZSB0aGF0IGlzbid0IHNwZWNpZmllZCBpbiB0aGUgU1FM IGFuZAorCSAqIHNvIGlzbid0IHByZXNlbnQgaW4gdGhhdCBiaXRtYXBzZXQuCisJICovCisJ YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRU Ul9CSVRNQVBfSU5ERVhFRCk7CisKKwkvKgorCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQg YXR0cmlidXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKKwkgKiB0 byBmaW5kIHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQorCSAq ICJtb2RpZmllZF9pZHhfYXR0cnMiLgorCSAqLworCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90 QXR0cnMoYXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOworCisJcmV0dXJuIGF0 dHJzOworfQogCiAvKgogICogVmVyaWZ5IHRoYXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNl ZCBieSBJTlNFUlQgbWF0Y2ggdGhlCkBAIC0yNDQ2LDE0ICsyNTA1LDE3IEBAIEV4ZWNVcGRh dGVQcmVwYXJlU2xvdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICovCiBzdGF0 aWMgVE1fUmVzdWx0CiBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCSAgSXRlbVBvaW50ZXIgdHVw bGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCSAg Ym9vbCBjYW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKKwkJCSAgSXRlbVBv aW50ZXIgdHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqb2xk U2xvdCwKKwkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRh dGVDb250ZXh0ICp1cGRhdGVDeHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBjb250ZXh0 LT5lc3RhdGU7CiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5m by0+cmlfUmVsYXRpb25EZXNjOwogCWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxl ZDsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCisJLyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRl eGVkIGF0dHJpYnV0ZXMgdGhhdCB0cmlnZ2VyIG5ldyBpbmRleCBlbnRyaWVzICovCisJQml0 bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKKwogCXVwZGF0ZUN4dC0+Y3Jv c3NQYXJ0VXBkYXRlID0gZmFsc2U7CiAKIAkvKgpAQCAtMjU3MCw3ICsyNjMyLDE2IEBAIGxy ZXBsYWNlOgogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRl KTsKIAogCS8qCi0JICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQorCSAqIE5leHQgdXAgd2Ug bmVlZCB0byBmaW5kIG91dCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhh dmUKKwkgKiBjaGFuZ2VkIGluIHZhbHVlIGFuZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRl eCB0dXBsZS4gIFdlIGNvdWxkIHN0YXJ0CisJICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQg Y29sdW1ucyB2aWEgRXhlY0dldFVwZGF0ZWRDb2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdl IHdpbGwgb3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21v ZGlmeV90dXBsZSgpCisJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRl ZENvbHMoKS4KKwkgKi8KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZp ZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJICog Q2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoK IAkgKiBOb3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFw c2hvdCwgd2UgY2hlY2sgdGhhdAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNp YmxlIHRvIHRoYXQgc25hcHNob3QsIGFuZCB0aHJvdyBhCkBAIC0yNTg1LDYgKzI2NTYsNyBA QCBscmVwbGFjZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAog CQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0 LT50bWZkLCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwKKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0 dHJzLAogCQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKIAogCXJldHVybiBy ZXN1bHQ7CkBAIC0yODMxLDggKzI5MDMsOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29u dGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiBy ZWRvX2FjdDoKIAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRh dGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3Qs Ci0JCQkJCQkJICAgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKKwkJcmVzdWx0ID0gRXhlY1Vw ZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xk U2xvdCwKKwkJCQkJCQkgICBzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCS8q CiAJCSAqIElmIEV4ZWNVcGRhdGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9u IHVwZGF0ZSB3YXMgZG9uZSwKQEAgLTM2ODIsOCArMzc1NCw4IEBAIGxtZXJnZV9tYXRjaGVk OgogCQkJCQlBc3NlcnQob2xkdHVwbGUgPT0gTlVMTCk7CiAKIAkJCQkJcmVzdWx0ID0gRXhl Y1VwZGF0ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLAotCQkJCQkJCQkJ CSAgIE5VTEwsIG5ld3Nsb3QsIGNhblNldFRhZywKLQkJCQkJCQkJCQkgICAmdXBkYXRlQ3h0 KTsKKwkJCQkJCQkJCQkgICBOVUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3Qs CisJCQkJCQkJCQkJICAgbmV3c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkJ CQkvKgogCQkJCQkgKiBBcyBpbiBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSBy ZXBvcnRzIHRoYXQgYQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggZmI0 ZTA0MmJlOGEuLjA1NWY3NTcxMDdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKQEAgLTI0ODIsNyArMjQ4Miw3IEBAIFJlbGF0aW9uRGVzdHJveVJlbGF0aW9uKFJlbGF0 aW9uIHJlbGF0aW9uLCBib29sIHJlbWVtYmVyX3R1cGRlc2MpCiAJYm1zX2ZyZWUocmVsYXRp b24tPnJkX2tleWF0dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9wa2F0dHIpOwogCWJt c19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwotCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9o b3RibG9ja2luZ2F0dHIpOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7 CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlpZiAocmVsYXRp b24tPnJkX3B1YmRlc2MpCiAJCXBmcmVlKHJlbGF0aW9uLT5yZF9wdWJkZXNjKTsKQEAgLTUy OTEsOCArNTI5MSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24gcmVs YXRpb24pCiAgKgkJCQkJCQkJCShiZXdhcmU6IGV2ZW4gaWYgUEsgaXMgZGVmZXJyYWJsZSEp CiAgKglJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkJQ29sdW1ucyBpbiB0aGUgdGFi bGUncyByZXBsaWNhIGlkZW50aXR5CiAgKgkJCQkJCQkJCWluZGV4IChlbXB0eSBpZiBGVUxM KQotICoJSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NLSU5HCUNvbHVtbnMgdGhhdCBibG9j ayB1cGRhdGVzIGZyb20gYmVpbmcgSE9UCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJ WkVECUNvbHVtbnMgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcworICoJSU5ERVhf QVRUUl9CSVRNQVBfSU5ERVhFRAkJQ29sdW1ucyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMKKyAq CUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBvbmx5IGluY2x1ZGVkIGlu IHN1bW1hcml6aW5nIGluZGV4ZXMKICAqCiAgKiBBdHRyaWJ1dGUgbnVtYmVycyBhcmUgb2Zm c2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgc28gdGhhdAogICog d2UgY2FuIGluY2x1ZGUgc3lzdGVtIGF0dHJpYnV0ZXMgKGUuZy4sIE9JRCkgaW4gdGhlIGJp dG1hcCByZXByZXNlbnRhdGlvbi4KQEAgLTUzMTUsOCArNTMxNSw4IEBAIFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5k IGF0dHJLaW5kKQogCUJpdG1hcHNldCAgKnVpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGluIHVu aXF1ZSBpbmRleGVzICovCiAJQml0bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBjb2x1bW5z IGluIHRoZSBwcmltYXJ5IGluZGV4ICovCiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJzOwkv KiBjb2x1bW5zIGluIHRoZSByZXBsaWNhIGlkZW50aXR5ICovCi0JQml0bWFwc2V0ICAqaG90 YmxvY2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRoIEhPVCBibG9ja2luZyBpbmRleGVzICov Ci0JQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3VtbWFy aXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1u cyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0 cnM7CS8qIGNvbHVtbnMgb25seSBpbiBzdW1tYXJpemluZyBpbmRleGVzICovCiAJTGlzdAkg ICAqaW5kZXhvaWRsaXN0OwogCUxpc3QJICAgKm5ld2luZGV4b2lkbGlzdDsKIAlPaWQJCQly ZWxwa2luZGV4OwpAQCAtNTMzNSw4ICs1MzM1LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQp CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9wa2F0dHIpOwogCQkJY2FzZSBJ TkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVk6CiAJCQkJcmV0dXJuIGJtc19jb3B5KHJl bGF0aW9uLT5yZF9pZGF0dHIpOwotCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxP Q0tJTkc6Ci0JCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0 dHIpOworCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJCXJldHVybiBi bXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRS X0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRf c3VtbWFyaXplZGF0dHIpOwogCQkJZGVmYXVsdDoKQEAgLTUzODEsNyArNTM4MSw3IEBAIHJl c3RhcnQ6CiAJdWluZGV4YXR0cnMgPSBOVUxMOwogCXBraW5kZXhhdHRycyA9IE5VTEw7CiAJ aWRpbmRleGF0dHJzID0gTlVMTDsKLQlob3RibG9ja2luZ2F0dHJzID0gTlVMTDsKKwlpbmRl eGVkYXR0cnMgPSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7CiAJZm9yZWFjaChs LCBpbmRleG9pZGxpc3QpCiAJewpAQCAtNTQ0MSw3ICs1NDQxLDcgQEAgcmVzdGFydDoKIAkJ aWYgKGluZGV4RGVzYy0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpCiAJCQlhdHRycyA9ICZz dW1tYXJpemVkYXR0cnM7CiAJCWVsc2UKLQkJCWF0dHJzID0gJmhvdGJsb2NraW5nYXR0cnM7 CisJCQlhdHRycyA9ICZpbmRleGVkYXR0cnM7CiAKIAkJLyogQ29sbGVjdCBzaW1wbGUgYXR0 cmlidXRlIHJlZmVyZW5jZXMgKi8KIAkJZm9yIChpID0gMDsgaSA8IGluZGV4RGVzYy0+cmRf aW5kZXgtPmluZG5hdHRzOyBpKyspCkBAIC01NDUwLDkgKzU0NTAsOSBAQCByZXN0YXJ0Ogog CiAJCQkvKgogCQkJICogU2luY2Ugd2UgaGF2ZSBjb3ZlcmluZyBpbmRleGVzIHdpdGggbm9u LWtleSBjb2x1bW5zLCB3ZSBtdXN0Ci0JCQkgKiBoYW5kbGUgdGhlbSBhY2N1cmF0ZWx5IGhl cmUuIG5vbi1rZXkgY29sdW1ucyBtdXN0IGJlIGFkZGVkIGludG8KLQkJCSAqIGhvdGJsb2Nr aW5nYXR0cnMgb3Igc3VtbWFyaXplZGF0dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwK LQkJCSAqIGFuZCB1cGRhdGUgc2hvdWxkbid0IG1pc3MgdGhlbS4KKwkJCSAqIGhhbmRsZSB0 aGVtIGFjY3VyYXRlbHkgaGVyZS4gTm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50 bworCQkJICogaW5kZXhlZGF0dHJzIG9yIHN1bW1hcml6ZWRhdHRycywgc2luY2UgdGhleSBh cmUgaW4gaW5kZXgsIGFuZAorCQkJICogdXBkYXRlIHNob3VsZG4ndCBtaXNzIHRoZW0uCiAJ CQkgKgogCQkJICogU3VtbWFyaXppbmcgaW5kZXhlcyBkbyBub3QgYmxvY2sgSE9ULCBidXQg ZG8gbmVlZCB0byBiZSB1cGRhdGVkCiAJCQkgKiB3aGVuIHRoZSBjb2x1bW4gdmFsdWUgY2hh bmdlcywgdGh1cyByZXF1aXJlIGEgc2VwYXJhdGUKQEAgLTU1MTMsMTIgKzU1MTMsMjAgQEAg cmVzdGFydDoKIAkJYm1zX2ZyZWUodWluZGV4YXR0cnMpOwogCQlibXNfZnJlZShwa2luZGV4 YXR0cnMpOwogCQlibXNfZnJlZShpZGluZGV4YXR0cnMpOwotCQlibXNfZnJlZShob3RibG9j a2luZ2F0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3Vt bWFyaXplZGF0dHJzKTsKIAogCQlnb3RvIHJlc3RhcnQ7CiAJfQogCisJLyoKKwkgKiBSZWNv cmQgd2hhdCBhdHRyaWJ1dGVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgc3VtbWFyaXppbmcg aW5kZXhlcy4gVGhlbgorCSAqIGFkZCB0aGF0IGludG8gdGhlIG90aGVyIGluZGV4ZWQgYXR0 cmlidXRlcyB0byB0cmFjayBhbGwgcmVmZXJlbmNlZAorCSAqIGF0dHJpYnV0ZXMuCisJICov CisJc3VtbWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywg aW5kZXhlZGF0dHJzKTsKKwlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhl ZGF0dHJzLCBzdW1tYXJpemVkYXR0cnMpOworCiAJLyogRG9uJ3QgbGVhayB0aGUgb2xkIHZh bHVlcyBvZiB0aGVzZSBiaXRtYXBzLCBpZiBhbnkgKi8KIAlyZWxhdGlvbi0+cmRfYXR0cnN2 YWxpZCA9IGZhbHNlOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9rZXlhdHRyKTsKQEAgLTU1 MjcsOCArNTUzNSw4IEBAIHJlc3RhcnQ6CiAJcmVsYXRpb24tPnJkX3BrYXR0ciA9IE5VTEw7 CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7CiAJcmVsYXRpb24tPnJkX2lkYXR0 ciA9IE5VTEw7Ci0JYm1zX2ZyZWUocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7Ci0J cmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0ciA9IE5VTEw7CisJYm1zX2ZyZWUocmVsYXRp b24tPnJkX2luZGV4ZWRhdHRyKTsKKwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxM OwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24t PnJkX3N1bW1hcml6ZWRhdHRyID0gTlVMTDsKIApAQCAtNTU0Myw3ICs1NTUxLDcgQEAgcmVz dGFydDoKIAlyZWxhdGlvbi0+cmRfa2V5YXR0ciA9IGJtc19jb3B5KHVpbmRleGF0dHJzKTsK IAlyZWxhdGlvbi0+cmRfcGthdHRyID0gYm1zX2NvcHkocGtpbmRleGF0dHJzKTsKIAlyZWxh dGlvbi0+cmRfaWRhdHRyID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKLQlyZWxhdGlvbi0+ cmRfaG90YmxvY2tpbmdhdHRyID0gYm1zX2NvcHkoaG90YmxvY2tpbmdhdHRycyk7CisJcmVs YXRpb24tPnJkX2luZGV4ZWRhdHRyID0gYm1zX2NvcHkoaW5kZXhlZGF0dHJzKTsKIAlyZWxh dGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBibXNfY29weShzdW1tYXJpemVkYXR0cnMpOwog CXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gdHJ1ZTsKIAlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3h0KTsKQEAgLTU1NTcsOCArNTU2NSw4IEBAIHJlc3RhcnQ6CiAJCQlyZXR1cm4g cGtpbmRleGF0dHJzOwogCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToK IAkJCXJldHVybiBpZGluZGV4YXR0cnM7Ci0JCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9U X0JMT0NLSU5HOgotCQkJcmV0dXJuIGhvdGJsb2NraW5nYXR0cnM7CisJCWNhc2UgSU5ERVhf QVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCXJldHVybiBpbmRleGVkYXR0cnM7CiAJCWNhc2Ug SU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJpemVkYXR0 cnM7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggNTE3NjQ3OGMyOTUuLjJk YmZhZDkyMTEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0zODUsMTEgKzM4NSwxMCBAQCBl eHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCwKIGV4dGVybiB2b2lkIGhlYXBfZmluaXNoX3NwZWN1bGF0 aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBl eHRlcm4gdm9pZCBoZWFwX2Fib3J0X3NwZWN1bGF0aXZlKFJlbGF0aW9uIHJlbGF0aW9uLCBj b25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsCi0J CQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQkJCQkJIENvbW1hbmRJZCBjaWQsIHVpbnQz MiBvcHRpb25zLAorCQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLCBDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkJCQkgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0 LAotCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21v ZGUsCi0JCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJ CQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUs CisJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBjb25zdCBi b29sIGhvdF9hbGxvd2VkKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJl bGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQg Y2lkLCBMb2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAog CQkJCQkJCQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQ2NCw2ICs0NjMsMTIgQEAgZXh0 ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICpkZWFkLCBpbnQgbmRl YWQsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCk7CiAK Ky8qIGluIGhlYXAvaGVhcGFtLmMgKi8KK2V4dGVybiBib29sIEhlYXBVcGRhdGVIb3RBbGxv d2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4 X2F0dHJzLAorCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29ubHkpOworZXh0ZXJuIExv Y2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz KTsKKwogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8KIGV4dGVybiB2b2lkIGhlYXBfdmFj dXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zICpwYXJh bXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCBmMmMzNjY5NmJjYS4uYTk3NzhiMzUyOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aApAQCAtNTg2LDYgKzU4Niw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJ CQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKIAkJ CQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAorCQkJCQkJCQkgY29uc3QgQml0bWFw c2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCiAJCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1 cGRhdGVfaW5kZXhlcyk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZl cmVuY2UgYWJvdXQgcGFyYW1ldGVycyAqLwpAQCAtMTU5OSwxMiArMTYwMCwxMiBAQCB0YWJs ZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucywK IAkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVjaywKIAkJCQkg ICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2Nr bW9kZSwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkg ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgVFVfVXBkYXRlSW5kZXhl cyAqdXBkYXRlX2luZGV4ZXMpCiB7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVf dXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBvcHRpb25zLCBzbmFw c2hvdCwgY3Jvc3NjaGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwKLQkJCQkJCQkJCQkg bG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9j a21vZGUsCisJCQkJCQkJCQkJIG1vZGlmaWVkX2lkeF9hdHRycywgdXBkYXRlX2luZGV4ZXMp OwogfQogCiAvKgpAQCAtMjA4OSw2ICsyMDkwLDcgQEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3Rh YmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJ CQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1 cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCQkg IFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCSAg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCiAJCQkJCQkJCQkgIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaAppbmRleCAxNzk4ZTYwMjdkNC4uMTY2NjFiYzY2ZDkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVz dGFtcC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZm1n ci5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL2xv Y2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCkBAIC02MTUsNiArNjE2LDEwIEBAIGV4dGVybiBUdXBsZURl c2MgRXhlY0NsZWFuVHlwZUZyb21UTChMaXN0ICp0YXJnZXRMaXN0KTsKIGV4dGVybiBUdXBs ZURlc2MgRXhlY1R5cGVGcm9tRXhwckxpc3QoTGlzdCAqZXhwckxpc3QpOwogZXh0ZXJuIHZv aWQgRXhlY1R5cGVTZXRDb2xOYW1lcyhUdXBsZURlc2MgdHlwZUluZm8sIExpc3QgKm5hbWVz TGlzdCk7CiBleHRlcm4gdm9pZCBVcGRhdGVDaGFuZ2VkUGFyYW1TZXQoUGxhblN0YXRlICpu b2RlLCBCaXRtYXBzZXQgKm5ld2NoZyk7CitleHRlcm4gQml0bWFwc2V0ICpFeGVjQ29tcGFy ZVNsb3RBdHRycyhCaXRtYXBzZXQgKmF0dHJzLAorCQkJCQkJCQkJICAgVHVwbGVEZXNjIHR1 cGRlc2MsCisJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJ CSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKTsKIAogdHlwZWRlZiBzdHJ1Y3QgVHVwT3V0 cHV0U3RhdGUKIHsKQEAgLTgxNCw1ICs4MTksOCBAQCBleHRlcm4gUmVzdWx0UmVsSW5mbyAq RXhlY0xvb2t1cFJlc3VsdFJlbEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsCiAJCQkJ CQkJCQkJCSAgIE9pZCByZXN1bHRvaWQsCiAJCQkJCQkJCQkJCSAgIGJvb2wgbWlzc2luZ19v aywKIAkJCQkJCQkJCQkJICAgYm9vbCB1cGRhdGVfY2FjaGUpOworZXh0ZXJuIEJpdG1hcHNl dCAqRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywK KwkJCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpvbGRfdHRzLAorCQkJCQkJCQkJCQkgVHVw bGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1VUT1JfSCAg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmgKaW5kZXggODljMTU5YjEzM2YuLjE3ZGJkYmU2NDVkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwu aApAQCAtMTYyLDcgKzE2Miw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCUJp dG1hcHNldCAgKnJkX2tleWF0dHI7CQkvKiBjb2xzIHRoYXQgY2FuIGJlIHJlZidkIGJ5IGZv cmVpZ24ga2V5cyAqLwogCUJpdG1hcHNldCAgKnJkX3BrYXR0cjsJCS8qIGNvbHMgaW5jbHVk ZWQgaW4gcHJpbWFyeSBrZXkgKi8KIAlCaXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNs dWRlZCBpbiByZXBsaWNhIGlkZW50aXR5IGluZGV4ICovCi0JQml0bWFwc2V0ICAqcmRfaG90 YmxvY2tpbmdhdHRyOyAvKiBjb2xzIGJsb2NraW5nIEhPVCB1cGRhdGUgKi8KKwlCaXRtYXBz ZXQgICpyZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMgcmVmZXJlbmNlZCBieSBpbmRleGVz ICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0dHI7CS8qIGNvbHMgaW5kZXhlZCBi eSBzdW1tYXJpemluZyBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1YmRl c2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oCmluZGV4IDg5YzI3YWExNTI5Li44OTc4ODA5MTU3NiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oCkBAIC03MCw3ICs3MCw3IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBL aW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX1BSSU1B UllfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSwKLQlJTkRFWF9BVFRS X0JJVE1BUF9IT1RfQkxPQ0tJTkcsCisJSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCwKIAlJ TkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVELAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwog CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQKaW5kZXgg YTZhNGU4ZGI5OTYuLjA3ZWY2N2ExZWI0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3N5c2Nh Y2hlLXVwZGF0ZS1wcnVuZWQub3V0CkBAIC0xNiw4ICsxNiw4IEBAIHN0ZXAgd2FrZWludmFs NDoKIHN0ZXAgYXQyOiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWludmFsNDogPC4uLiBj b21wbGV0ZWQ+CiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBGUk9NIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7Ci0JU0VMRUNUIEZST00g aW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlT RUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRl LWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgn c2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2FpdGluZyAuLi4+CiBzdGVw IGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIHR1cGxlIGNvbmN1cnJlbnRseSBk ZWxldGVkCkBAIC00Miw4ICs0Miw4IEBAIHN0ZXAgbWtyZWxzNDoKIAlTRUxFQ1QgRlJPTSB2 YWN0ZXN0Lm1rcmVscygnaW50cnVkZXInLCAxLCAxMDApOyAgLS0gcmVwb3B1bGF0ZSBMUF9V TlVTRUQKIAogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwotCVNFTEVDVCBGUk9NIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VM RUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1i ZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3Np bXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRpbmcgLi4uPgogc3RlcCBn cmFudDE6IDwuLi4gY29tcGxldGVkPgogRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZp b2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJwZ19jbGFzc19vaWRfaW5kZXgiCkBAIC03MSw4 ICs3MSw4IEBAIHN0ZXAgYXQyOiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWludmFsNDog PC4uLiBjb21wbGV0ZWQ+CiBzdGVwIGF0NDogQUxURVIgVEFCTEUgdmFjdGVzdC5jaGlsZDUw IElOSEVSSVQgdmFjdGVzdC5vcmlnNTA7CiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJl Zm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2lt cGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VncmFu dDQ6IDwuLi4gY29tcGxldGVkPgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYyBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1 bmVkLnNwZWMKaW5kZXggZTNhNDI5NWJkMTIuLmZlZjlhYzg5NWExIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRl LXBydW5lZC5zcGVjCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKQEAgLTEwMyw3ICsxMDMsNyBAQCBz ZXNzaW9uIHMxCiBzZXR1cAl7CiAJU0VUIGRlYnVnX2Rpc2NhcmRfY2FjaGVzID0gMDsKIAlT RUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwotCVNFTEVDVCBGUk9N IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJywgJ3dh aXQnKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnc2ltcGxlX2hl YXBfdXBkYXRlLWJlZm9yZS1waW4nLCAnd2FpdCcpOwogfQogc3RlcCBjYWNoZWZpbGwxCXsg U0VMRUNUIEZST00gdmFjdGVzdC5yZWxvaWRfY2F0Y2FjaGVfc2V0KCd2YWN0ZXN0Lm9yaWc1 MCcpOyB9CiBzdGVwIGdyYW50MQl7IEdSQU5UIFNFTEVDVCBPTiB2YWN0ZXN0Lm9yaWc1MCBU TyBQVUJMSUM7IH0KQEAgLTE0MCw4ICsxNDAsOCBAQCBzdGVwIG1rcmVsczQJewogCVNFTEVD VCBGUk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAtLSByZXBvcHVs YXRlIExQX1VOVVNFRAogfQogc3RlcCB3YWtlZ3JhbnQ0CXsKLQlTRUxFQ1QgRlJPTSBpbmpl Y3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwotCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGlu Jyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFw X3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193 YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiB9CiBzdGVwIGF0NAl7 IEFMVEVSIFRBQkxFIHZhY3Rlc3QuY2hpbGQ1MCBJTkhFUklUIHZhY3Rlc3Qub3JpZzUwOyB9 CiBzdGVwIHdha2VpbnZhbDQJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2dlbmVyYXRlZF92aXJ0dWFsLm91dAppbmRleCA2ZWUwMjk3OTZmMS4uYmRjOWU5NzI3YTQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1 YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1 YWwub3V0CkBAIC0yODcsNyArMjg3LDcgQEAgREVUQUlMOiAgQ29sdW1uICJiIiBpcyBhIGdl bmVyYXRlZCBjb2x1bW4uCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVFUyAoOCwgREVGQVVM VCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiBFUlJPUjogIGNhbm5vdCBpbnNlcnQgYSBu b24tREVGQVVMVCB2YWx1ZSBpbnRvIGNvbHVtbiAiYiIKIERFVEFJTDogIENvbHVtbiAiYiIg aXMgYSBnZW5lcmF0ZWQgY29sdW1uLgotU0VMRUNUICogRlJPTSBndGVzdDF2OworU0VMRUNU ICogRlJPTSBndGVzdDF2IE9SREVSIEJZIGE7CiAgYSB8IGIgIAogLS0tKy0tLS0KICAzIHwg IDYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vycy5vdXQKaW5kZXggOGZjYjMz YWM4MWEuLjAwZWJlMzA1ODc1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3RyaWdnZXJzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdn ZXJzLm91dApAQCAtOTU5LDE2ICs5NTksMjQgQEAgTk9USUNFOiAgbWFpbl92aWV3IEJFRk9S RSBVUERBVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld191cGRfc3RtdCkKIE5PVElDRTogIG1h aW5fdmlldyBBRlRFUiBVUERBVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X3VwZF9zdG10KQog VVBEQVRFIDAKIC0tIERlbGV0ZSBmcm9tIHZpZXcgdXNpbmcgdHJpZ2dlcgotREVMRVRFIEZS T00gbWFpbl92aWV3IFdIRVJFIGEgSU4gKDIwLDIxKTsKK0RFTEVURSBGUk9NIG1haW5fdmll dyBXSEVSRSBhID0gMjAgQU5EIGIgPSAzMTsKIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUg REVMRVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWlu X3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKLU5PVElDRTog IE9MRDogKDIxLDEwKQotTk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJP VyAoaW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6ICgyMCwzMSkKK05PVElDRTogIG1h aW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X2RlbF9zdG10KQor REVMRVRFIDEKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAx MDsKK05PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3Jl X3ZpZXdfZGVsX3N0bXQpCitOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUg Uk9XIChpbnN0ZWFkX29mX2RlbCkKK05PVElDRTogIE9MRDogKDIxLDEwKQorTk9USUNFOiAg bWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfZGVsX3N0bXQp CitERUxFVEUgMQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9 IDMyOworTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZv cmVfdmlld19kZWxfc3RtdCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVU RSBST1cgKGluc3RlYWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAoMjEsMzIpCiBOT1RJQ0U6 ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld19kZWxfc3Rt dCkKLURFTEVURSAzCitERUxFVEUgMQogREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEg PSAzMSBSRVRVUk5JTkcgYSwgYjsKIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRF IFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcg SU5TVEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3RzZWFyY2gub3V0CmluZGV4IDViN2MyMTIzZjM3Li42ZGMxOTNmMDJkNiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0CkBAIC0yNDkzLDcgKzI0 OTMsOCBAQCBTRUxFQ1QgdG9fdHNxdWVyeSgnU0tJRVMgJiBNeSB8IGJvb0tzJyk7CiAgJ3Nr eScgfCAnYm9vaycKICgxIHJvdykKIAotLS10cmlnZ2VyCistLSB0c3ZlY3Rvcl91cGRhdGVf dHJpZ2dlcigpIHVzZXMgaGVhcF9tb2RpZnlfdHVwbGUoKSB0byBzZXQgY29sdW1uICdhJwor LS0gd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBleGVjdXRvcidzIFNFVC1jbGF1c2UgdHJh Y2tpbmcuCiBDUkVBVEUgVFJJR0dFUiB0c3ZlY3RvcnVwZGF0ZQogQkVGT1JFIFVQREFURSBP UiBJTlNFUlQgT04gdGVzdF90c3ZlY3RvcgogRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VE VVJFIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKGEsICdwZ19jYXRhbG9nLmVuZ2xpc2gnLCB0 KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3Zp ZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91 dAppbmRleCA3YjAwYzc0Mjc3Ni4uY2Q2ZTcxYWM0OTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTM3MiwxNSArMzcyLDE1 IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAoYSwgYikgVkFMVUVTICgzLCAnUm93IDMnKTsg LS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndfdmlldzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJF IGE9MzsgLS0gc2hvdWxkIGZhaWwKIEVSUk9SOiAgbXVsdGlwbGUgYXNzaWdubWVudHMgdG8g c2FtZSBjb2x1bW4gImEiCiBVUERBVEUgcndfdmlldzE2IFNFVCBhYT0tMyBXSEVSRSBhPTM7 IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJPTSBiYXNlX3RibDsKK1NFTEVDVCAqIEZS T00gYmFzZV90YmwgT1JERVIgQlkgYTsKICBhICB8ICAgYiAgICAKIC0tLS0rLS0tLS0tLS0K KyAtMyB8IFJvdyAzCiAgLTIgfCBSb3cgLTIKICAtMSB8IFJvdyAtMQogICAwIHwgUm93IDAK ICAgMSB8IFJvdyAxCiAgIDIgfCBSb3cgMgotIC0zIHwgUm93IDMKICg2IHJvd3MpCiAKIERF TEVURSBGUk9NIHJ3X3ZpZXcxNiBXSEVSRSBhPS0zOyAtLSBzaG91bGQgYmUgT0sKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbAppbmRleCBlZDlkNTBm ZTc4NC4uZmU2MzkyOGYxMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dl bmVyYXRlZF92aXJ0dWFsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0 ZWRfdmlydHVhbC5zcWwKQEAgLTEyNyw3ICsxMjcsNyBAQCBBTFRFUiBWSUVXIGd0ZXN0MXYg QUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMTAwOwogSU5TRVJUIElOVE8gZ3Rlc3QxdiBW QUxVRVMgKDgsIERFRkFVTFQpOyAgLS0gZXJyb3IKIElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFM VUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAgLS0gZXJyb3IKIAotU0VMRUNUICog RlJPTSBndGVzdDF2OworU0VMRUNUICogRlJPTSBndGVzdDF2IE9SREVSIEJZIGE7CiBERUxF VEUgRlJPTSBndGVzdDF2IFdIRVJFIGEgPj0gNTsKIERST1AgVklFVyBndGVzdDF2OwogCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKaW5kZXggMjI4NWU5MDExMGUuLjE5YzI1NzIy MDFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCkBAIC02NjAsNyArNjYwLDkg QEAgVVBEQVRFIG1haW5fdmlldyBTRVQgYiA9IDMyIFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMx IFJFVFVSTklORyBhLCBiOwogVVBEQVRFIG1haW5fdmlldyBTRVQgYiA9IDAgV0hFUkUgZmFs c2U7CiAKIC0tIERlbGV0ZSBmcm9tIHZpZXcgdXNpbmcgdHJpZ2dlcgotREVMRVRFIEZST00g bWFpbl92aWV3IFdIRVJFIGEgSU4gKDIwLDIxKTsKK0RFTEVURSBGUk9NIG1haW5fdmlldyBX SEVSRSBhID0gMjAgQU5EIGIgPSAzMTsKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBh ID0gMjEgQU5EIGIgPSAxMDsKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEg QU5EIGIgPSAzMjsKIERFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMzEgUkVUVVJO SU5HIGEsIGI7CiAKIFxzZXQgUVVJRVQgdHJ1ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvdHNlYXJjaC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNx bAppbmRleCA4YjNkNzAwZjU3Yy4uMDk0MTgxZTc3NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3RzZWFyY2guc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Rz ZWFyY2guc3FsCkBAIC03NjAsNyArNzYwLDggQEAgU0VMRUNUIHRvX3RzdmVjdG9yKCdTS0lF UyBNeSBib29LcycpOwogU0VMRUNUIHBsYWludG9fdHNxdWVyeSgnU0tJRVMgTXkgYm9vS3Mn KTsKIFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15IHwgYm9vS3MnKTsKIAotLS10cmln Z2VyCistLSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcigpIHVzZXMgaGVhcF9tb2RpZnlfdHVw bGUoKSB0byBzZXQgY29sdW1uICdhJworLS0gd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSBl eGVjdXRvcidzIFNFVC1jbGF1c2UgdHJhY2tpbmcuCiBDUkVBVEUgVFJJR0dFUiB0c3ZlY3Rv cnVwZGF0ZQogQkVGT1JFIFVQREFURSBPUiBJTlNFUlQgT04gdGVzdF90c3ZlY3RvcgogRk9S IEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKGEs ICdwZ19jYXRhbG9nLmVuZ2xpc2gnLCB0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRh dGFibGVfdmlld3Muc3FsCmluZGV4IDRhNjAxMjZlYzkwLi4wMTcwMDQwYzA5OCAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCkBAIC0xMjUsNyArMTI1 LDcgQEAgSU5TRVJUIElOVE8gcndfdmlldzE2IFZBTFVFUyAoMywgJ1JvdyAzJywgMyk7IC0t IHNob3VsZCBmYWlsCiBJTlNFUlQgSU5UTyByd192aWV3MTYgKGEsIGIpIFZBTFVFUyAoMywg J1JvdyAzJyk7IC0tIHNob3VsZCBiZSBPSwogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYT0zLCBh YT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBmYWlsCiBVUERBVEUgcndfdmlldzE2IFNFVCBh YT0tMyBXSEVSRSBhPTM7IC0tIHNob3VsZCBiZSBPSwotU0VMRUNUICogRlJPTSBiYXNlX3Ri bDsKK1NFTEVDVCAqIEZST00gYmFzZV90YmwgT1JERVIgQlkgYTsKIERFTEVURSBGUk9NIHJ3 X3ZpZXcxNiBXSEVSRSBhPS0zOyAtLSBzaG91bGQgYmUgT0sKIC0tIFJlYWQtb25seSB2aWV3 cwogSU5TRVJUIElOVE8gcm9fdmlldzE3IFZBTFVFUyAoMywgJ1JPVyAzJyk7Ci0tIAoyLjUw LjEKCg== --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBkNGFiZjI3MzkwOTYwZDNmNTFjMTA3Y2JmNzA2MmEzZWI5YWJkNDBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDAz LzEwXSBBZGQgdGhlIEhPVC1pbmRleGVkIG9uLWRpc2sgZm9ybWF0OiBpbmxpbmUgYXR0cgog Yml0bWFwIGFuZCBzdHVicwoKRGVmaW5lIHRoZSBvbi1kaXNrIHJlcHJlc2VudGF0aW9uIGEg SE9ULWluZGV4ZWQgdXBkYXRlIGFuZCBpdHMgbGF0ZXIKcHJ1bmUvY29sbGFwc2UgcHJvZHVj ZSwgYWhlYWQgb2YgdGhlIGNvZGUgdGhhdCByZWFkcyBvciB3cml0ZXMgaXQ6CgotIEhFQVBf SU5ERVhFRF9VUERBVEVEIChodHVwX2RldGFpbHMuaCksIHRoZSB0X2luZm9tYXNrMiBiaXQg bWFya2luZyBhCiAgaGVhcC1vbmx5IHR1cGxlIHdob3NlIHByb2R1Y2luZyBVUERBVEUgYWxz byBjaGFuZ2VkIGFuIGluZGV4ZWQgY29sdW1uOyBhbmQKLSBhY2Nlc3MvaG90X2luZGV4ZWQu aCwgdGhlIGlubGluZSBmaXhlZC1zaXplIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBzdG9yZWQg aW4KICB0aGUgdGFpbCBvZiBzdWNoIGEgdHVwbGUsIHBsdXMgdGhlIHhpZC1mcmVlICJjb2xs YXBzZS1zdXJ2aXZvciBzdHViIiBmb3JtYXQKICAoSEVBUF9JTkRFWEVEX1VQREFURUQgd2l0 aCBuYXR0cyA9PSAwLCBhIGZvcndhcmQgbGluaywgYW5kIHRoZSBzZWdtZW50J3MKICBiaXRt YXApIGFuZCB0aGUgYWNjZXNzb3JzIGJvdGggc2hhcmUuCgpSRUFETUUuSE9ULUlOREVYRUQg aW50cm9kdWNlcyB0aGUgZGVzaWduIGFuZCB0aGUgcmVsYXhlZCBjbGFzc2ljLUhPVAppbnZh cmlhbnQ7IGxhdGVyIGNvbW1pdHMgZG9jdW1lbnQgdGhlIGVsaWdpYmlsaXR5LCB3cml0ZSwg cmVhZCwgYW5kCnBydW5lL2NvbGxhcHNlIG1hY2hpbmVyeSBpbiB0aGVpciBvd24gc2VjdGlv bnMuCgpDby1hdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkNvLWF1dGhv cmVkLWJ5OiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCB8ICA1NiArKysr KysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oICAgICAgICAgICB8IDE5OCAr KysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMu aCAgICAgICAgICB8ICAgOCArLQogMyBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNs dWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVC1JTkRFWEVECm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi40YjcwMWU0MjU4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMCwwICsxLDU2IEBACitIT1QtaW5kZXhl ZCB1cGRhdGVzIChTZWxlY3RpdmUgSW5kZXggVXBkYXRlLCAiSE9UL1NJVSIpCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0Ns YXNzaWMgSE9UIChzZWUgUkVBRE1FLkhPVCkga2VlcHMgYW4gVVBEQVRFIG9mZiB0aGUgaW5k ZXhlcyBvbmx5IHdoZW4gbm8KK2luZGV4ZWQgY29sdW1uIGNoYW5nZWQ6IHRoZSBuZXcgdHVw bGUgaXMgYSBoZWFwLW9ubHkgdHVwbGUgYXBwZW5kZWQgdG8gdGhlCitjaGFpbiwgYW5kIGV2 ZXJ5IGluZGV4IGVudHJ5IGNvbnRpbnVlcyB0byByZXNvbHZlLCB2aWEgdGhlIHNhbWUtcGFn ZSB0X2N0aWQKK2NoYWluLCB0byBhIHR1cGxlIHdob3NlIGluZGV4ZWQgdmFsdWVzIHN0aWxs IGVxdWFsIHRoZSBlbnRyeSdzIGtleS4KKworSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRl eCBVcGRhdGUsIFNJVSkgcmVsYXhlcyB0aGF0IHRvOiBhbiBVUERBVEUgbWF5CitjaGFuZ2Ug aW5kZXhlZCBjb2x1bW5zIGFuZCBzdGlsbCBiZSBhIGhlYXAtb25seSB0dXBsZSBvbiB0aGUg c2FtZSBwYWdlLAorcHJvdmlkZWQgbmV3IGluZGV4IGVudHJpZXMgYXJlIGluc2VydGVkIG9u bHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkKK2F0dHJpYnV0ZXMgYWN0dWFsbHkgY2hh bmdlZC4gIFRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgZGlkIG5vdCBjaGFuZ2UgYXJl CitsZWZ0IHVudG91Y2hlZCwgd2hpY2ggaXMgd2hlcmUgdGhlIHdyaXRlLWFtcGxpZmljYXRp b24gc2F2aW5nIGNvbWVzIGZyb20uCisKK1RoZSBwcmljZSBpcyB0aGF0IGEgY2hhaW4gbWF5 IG5vdyBjb250YWluIHR1cGxlcyB3aXRoIGRpZmZlcmVudCBpbmRleCBrZXlzLCBzbworYW4g aW5kZXggZW50cnkgZm9yIGFuIG9sZCBrZXkgY2FuIGNoYWluLXJlc29sdmUgdG8gYSBsaXZl IHR1cGxlIHdob3NlIGN1cnJlbnQKK2tleSBkaWZmZXJzLiAgU3VjaCBhbiBlbnRyeSBpcyBT VEFMRS4gIFRoZSByZWFkIHNpZGUgZGV0ZWN0cyBhbmQgZHJvcHMgc3RhbGUKK2VudHJpZXMg YnkgdGVzdGluZyB0aGUgaGVhcCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBhZ2FpbnN0 IHRoZSBpbmRleCdzCitrZXkgY29sdW1ucy4KKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUg ZWxpZ2liaWxpdHkgcnVsZXMsIHRoZSB3cml0ZSBwYXRoLCB0aGUgb24tY2hhaW4KK3JlcHJl c2VudGF0aW9uLCB0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0LCBwcnVuZS9jb2xsYXBz ZSwgdmFjdXVtIHJlY2xhbWF0aW9uLAorcmVjb3ZlcnksIHRoZSBsb2dpY2FsLXJlcGxpY2F0 aW9uIGFwcGx5IGdhdGluZywgYW5kIHRoZSBzdGF0aXN0aWNzLgorCisKK1RoZSBjbGFzc2lj LUhPVCBpbnZhcmlhbnQgd2UgYXJlIHJlbGF4aW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2xhc3NpYyBIT1QgcmVsaWVzIG9uIHR3byBwcm9w ZXJ0aWVzOgorCisgIChhKSBldmVyeSBsaXZlIGluZGV4IGVudHJ5IHJlc29sdmVzLCB2aWEg YSBzYW1lLXBhZ2UgdF9jdGlkIGNoYWluLCB0byB0aGUKKyAgICAgIGNoYWluJ3Mgcm9vdCBs aW5lIHBvaW50ZXI7IGFuZAorCisgIChiKSB0aGUgaW5kZXhlZCB2YWx1ZXMgb2YgZXZlcnkg dHVwbGUgb24gdGhlIGNoYWluIGVxdWFsIHRoZSBrZXkgb2YgZXZlcnkKKyAgICAgIGluZGV4 IGVudHJ5IHRoYXQgcmVhY2hlcyBpdC4KKworSE9ULWluZGV4ZWQga2VlcHMgKGEpIGJ1dCBi cmVha3MgKGIpOiBhZnRlciBhIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGUgY2hhaW4KK2hvbGRz IHR1cGxlcyB3aXRoIGRpZmZlcmVudCBrZXlzLCBhbmQgYSBuZXcgaW5kZXggZW50cnkgaXMg cGxhbnRlZCB0aGF0IHBvaW50cworYXQgdGhlICpzcGVjaWZpYyogaGVhcC1vbmx5IHR1cGxl IHdob3NlIGtleSBpdCBtYXRjaGVzIC0tIG5vdCBuZWNlc3NhcmlseSB0aGUKK3Jvb3QuCisK KworVGhlIEhPVC1pbmRleGVkIGludmFyaWFudCAodGhlIG5ldyBjb250cmFjdCkKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQW4gaW5kZXgg ZW50cnkgcG9pbnRzIGF0IHRoZSBoZWFwLW9ubHkgdHVwbGUgdmVyc2lvbiB3aG9zZSBpbmRl eGVkIGtleSBpdAorICBtYXRjaGVkIGF0IGluc2VydGlvbiB0aW1lLiAgQSBjaGFpbiB3YWxr IHRoYXQgcmVhY2hlcyBhIGxpdmUgdHVwbGUgYnkKKyAgY3Jvc3NpbmcgYSBIT1QtaW5kZXhl ZCBob3AgKmFmdGVyKiB0aGUgZW50cnkncyBvd24gdGFyZ2V0IG1heSBiZSBzdGFsZTogaWYK KyAgdGhlIHVuaW9uIG9mIHRob3NlIGNyb3NzZWQgaG9wcycgbW9kaWZpZWQgYXR0cmlidXRl cyBvdmVybGFwcyB0aGUgaW5kZXgncworICBrZXkgY29sdW1ucywgdGhlIGVudHJ5IGlzIHN0 YWxlIGFuZCB0aGUgdHVwbGUgaXMgZHJvcHBlZCBmcm9tIHRoYXQgc2Nhbi4KKyAgVGhlIHJv dyBpcworICByZS1zdXBwbGllZCBieSB0aGUgZnJlc2ggZW50cnkgdGhhdCB0aGUgc2FtZSB1 cGRhdGUgaW5zZXJ0ZWQgZm9yIHRoZSBuZXcKKyAga2V5LgorCitUaGlzIGlzIHdoYXQgbWFr ZXMgZHJvcHBpbmcgYSBzdGFsZSBlbnRyeSBzYWZlOiB0aGUgbGl2ZSByb3cgaXMgYWx3YXlz CityZWFjaGFibGUgdGhyb3VnaCBleGFjdGx5IG9uZSBub24tc3RhbGUgZW50cnkgcGVyIGlu ZGV4LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMjk1ZjU4OTUzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaApAQCAtMCwwICsxLDE5OCBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogaG90X2luZGV4ZWQuaAorICoJICBJbmxpbmUtdHJh aWxpbmcgbW9kaWZpZWQtYXR0cmlidXRlcyBiaXRtYXAgZm9yIEhPVC1pbmRleGVkIChIT1Qv U0lVKQorICoJICB0dXBsZXMuCisgKgorICogQSBoZWFwIHR1cGxlIHByb2R1Y2VkIGJ5IGEg SE9ULWluZGV4ZWQgVVBEQVRFIGhhcyBIRUFQX0lOREVYRURfVVBEQVRFRCBzZXQKKyAqIGlu IHRfaW5mb21hc2syIGFuZCBjYXJyaWVzLCBhcHBlbmRlZCBhZnRlciBpdHMgbm9ybWFsIGF0 dHJpYnV0ZSBkYXRhLCBhCisgKiBmaXhlZC1zaXplIGJpdG1hcCByZWNvcmRpbmcgd2hpY2gg aGVhcCBhdHRyaWJ1dGVzIGNoYW5nZWQgYXQgdGhpcyBjaGFpbiBob3AKKyAqIChyZWxhdGl2 ZSB0byB0aGUgcHJpb3IgY2hhaW4gbWVtYmVyKS4gIEJpdCAoYXR0bnVtIC0gMSkgY29ycmVz cG9uZHMgdG8gdXNlcgorICogYXR0cmlidXRlIGF0dG51bS4KKyAqCisgKiBUaGUgYml0bWFw IGlzIGNlaWwobmF0dHMgLyA4KSBieXRlcywgd2hlcmUgbmF0dHMgaXMgdGhlIHR1cGxlJ3Mg b3duCisgKiBhdHRyaWJ1dGUgY291bnQgYXQgdGhlIHRpbWUgaXQgd2FzIHdyaXR0ZW4gKEhl YXBUdXBsZUhlYWRlckdldE5hdHRzIGZvciBhCisgKiBsaXZlIHR1cGxlOyBwcmVzZXJ2ZWQg c2VwYXJhdGVseSBmb3IgYSBzdHViLCBzZWUgYmVsb3cpLiAgSXRzIGxlbmd0aCBpcyBub3QK KyAqIHN0b3JlZCBhcyBzdWNoOyBpdCBvY2N1cGllcyB0aGUgZmluYWwgSG90SW5kZXhlZEJp dG1hcEJ5dGVzKG5hdHRzKSBieXRlcyBvZgorICogdGhlIGxpbmUgcG9pbnRlcidzIGl0ZW0g YW5kIGlzIGxvY2F0ZWQgdmlhIEl0ZW1JZEdldExlbmd0aCgpLCBwYXN0IHRoZQorICogYXR0 cmlidXRlIGRhdGE6IHJvdXRpbmVzIHRoYXQgZGVmb3JtIHRoZSB0dXBsZSBzdG9wIGF0IG5h dHRzIGFuZCBuZXZlciBzZWUKKyAqIGl0LgorICoKKyAqIEJlY2F1c2UgQUREIENPTFVNTiBy YWlzZXMgdGhlIHJlbGF0aW9uJ3MgbmF0dHMgd2l0aG91dCByZXdyaXRpbmcgZXhpc3RpbmcK KyAqIHR1cGxlcywgYSBjaGFpbiBjYW4gaG9sZCB0dXBsZXMgd2hvc2UgYml0bWFwcyB3ZXJl IHNpemVkIGZvciBkaWZmZXJlbnQKKyAqIChzbWFsbGVyKSBuYXR0cyB0aGFuIHRoZSByZWxh dGlvbiBoYXMgbm93LiAgQ29uc3VtZXJzIHRoZXJlZm9yZSBzaXplIGFuZAorICogbG9jYXRl IGEgdHVwbGUncyBiaXRtYXAgZnJvbSB0aGF0IHR1cGxlJ3MgT1dOIHdyaXRlLXRpbWUgbmF0 dHMKKyAqIChIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyksIG5ldmVyIGZyb20gdGhlIHJl bGF0aW9uJ3MgY3VycmVudCBuYXR0cy4KKyAqIEJpdCBwb3NpdGlvbnMgYXJlIGF0dHJpYnV0 ZSBiYXNlZCBhbmQgaWRlbnRpY2FsIGFjcm9zcyBzaXplcywgc28gYSBzbWFsbGVyCisgKiBi aXRtYXAgc2ltcGx5IE9ScyBpbnRvIHRoZSBsb3cgYnl0ZXMgb2YgYSBsYXJnZXIgYWNjdW11 bGF0b3IuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgSE9UX0lOREVYRURfSAorI2RlZmluZSBIT1RfSU5E RVhFRF9ICisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisKKy8qCisgKiBO dW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBm b3IgYSByZWxhdGlvbiB3aXRoCisgKiBuYXR0cyB1c2VyIGF0dHJpYnV0ZXMgKG9uZSBiaXQg cGVyIGF0dHJpYnV0ZSwgYXR0bnVtIC0gMSkuCisgKi8KK3N0YXRpYyBpbmxpbmUgU2l6ZQor SG90SW5kZXhlZEJpdG1hcEJ5dGVzKGludCBuYXR0cykKK3sKKwlBc3NlcnQobmF0dHMgPj0g MCk7CisJcmV0dXJuIChTaXplKSAoKG5hdHRzICsgNykgLyA4KTsKK30KKworLyoKKyAqIFJl YWQtb25seSBwb2ludGVyIHRvIHRoZSB0cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAg b2YgYSBIT1QtaW5kZXhlZAorICogdHVwbGUuICBpdGVtX2xlbiBpcyBJdGVtSWRHZXRMZW5n dGgoKSBvZiB0aGUgdHVwbGUncyBsaW5lIHBvaW50ZXI7IG5hdHRzIGlzCisgKiB0aGUgcmVs YXRpb24ncyBudW1iZXIgb2YgYXR0cmlidXRlcy4gIFRoZSBjYWxsZXIgbXVzdCBoYXZlIHZl cmlmaWVkIHRoYXQKKyAqIHRoZSB0dXBsZSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0 LgorICovCitzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4ICoKK0hvdEluZGV4ZWRHZXRNb2Rp ZmllZEJpdG1hcChjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRhICpodHVwLAorCQkJCQkJCVNp emUgaXRlbV9sZW4sIGludCBuYXR0cykKK3sKKwlyZXR1cm4gKGNvbnN0IHVpbnQ4ICopICgo Y29uc3QgY2hhciAqKSBodHVwICsKKwkJCQkJCQlpdGVtX2xlbiAtIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykpOworfQorCisvKiBXcml0YWJsZSB2YXJpYW50LCBmb3IgT1ItaW5n IHRoZSB1bmlvbiBvbnRvIGEgc3Vydml2aW5nIHJlZGlyZWN0IHRhcmdldC4gKi8KK3N0YXRp YyBpbmxpbmUgdWludDggKgorSG90SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwUlcoSGVhcFR1 cGxlSGVhZGVyRGF0YSAqaHR1cCwKKwkJCQkJCQkgIFNpemUgaXRlbV9sZW4sIGludCBuYXR0 cykKK3sKKwlyZXR1cm4gKHVpbnQ4ICopICgoY2hhciAqKSBodHVwICsKKwkJCQkJICBpdGVt X2xlbiAtIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykpOworfQorCisvKiBUcnVlIGlm IHVzZXIgYXR0cmlidXRlIGF0dG51bSAoMS1iYXNlZCkgaXMgc2V0IGluIHRoZSBiaXRtYXAu ICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdEluZGV4ZWRBdHRySXNNb2RpZmllZChjb25z dCB1aW50OCAqYml0bWFwLCBBdHRyTnVtYmVyIGF0dG51bSkKK3sKKwlpbnQJCQliaXQgPSBh dHRudW0gLSAxOworCisJQXNzZXJ0KGF0dG51bSA+PSAxKTsKKwlyZXR1cm4gKGJpdG1hcFti aXQgLyA4XSAmICgxIDw8IChiaXQgJSA4KSkpICE9IDA7Cit9CisKKy8qIFNldCB1c2VyIGF0 dHJpYnV0ZSBhdHRudW0gKDEtYmFzZWQpIGluIHRoZSBiaXRtYXAuICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK0hvdEluZGV4ZWRTZXRBdHRyTW9kaWZpZWQodWludDggKmJpdG1hcCwgQXR0 ck51bWJlciBhdHRudW0pCit7CisJaW50CQkJYml0ID0gYXR0bnVtIC0gMTsKKworCUFzc2Vy dChhdHRudW0gPj0gMSk7CisJYml0bWFwW2JpdCAvIDhdIHw9ICh1aW50OCkgKDEgPDwgKGJp dCAlIDgpKTsKK30KKworLyogT1IgdGhlIGZpcnN0IG5ieXRlcyBvZiBzcmMgaW50byBkc3Qu ICBkc3QgbXVzdCBiZSBhdCBsZWFzdCBuYnl0ZXMgbG9uZzsgaXQKKyAqIG1heSBiZSBsb25n ZXIgKHNpemVkIGZvciBhIGxhcmdlciBuYXR0cykgLS0gYml0IHBvc2l0aW9ucyBhcmUgYXR0 cmlidXRlCisgKiBiYXNlZCBhbmQgaWRlbnRpY2FsIGFjcm9zcyBzaXplcywgc28gT1ItaW5n IG9ubHkgc3JjJ3MgYnl0ZXMgaXMgY29ycmVjdC4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAor SG90SW5kZXhlZEJpdG1hcFVuaW9uKHVpbnQ4ICpkc3QsIGNvbnN0IHVpbnQ4ICpzcmMsIGlu dCBzcmNfbmF0dHMpCit7CisJU2l6ZQkJbmJ5dGVzID0gSG90SW5kZXhlZEJpdG1hcEJ5dGVz KHNyY19uYXR0cyk7CisKKwlmb3IgKFNpemUgaSA9IDA7IGkgPCBuYnl0ZXM7IGkrKykKKwkJ ZHN0W2ldIHw9IHNyY1tpXTsKK30KKworLyoKKyAqIElzIGV2ZXJ5IGJpdCBzZXQgaW4gc3Vi IGFsc28gc2V0IGluIHN1cGVyPyAgc3ViIGlzIHNpemVkIGZvciBzdWJfbmF0dHM7CisgKiBz dXBlciBtdXN0IGJlIGF0IGxlYXN0IHRoYXQgbG9uZy4gIFVzZWQgYnkgcHJ1bmUgdG8gZGVj aWRlIGEgY29sbGFwc2UKKyAqIHN1cnZpdm9yIGlzIHJlY2xhaW1hYmxlOiB3aGVuIHRoZSBh dHRyaWJ1dGVzIGEgZGVhZCBtZW1iZXIgY2hhbmdlZCBhcmUgYWxsCisgKiBjaGFuZ2VkIGFn YWluIGJ5IGxhdGVyIGhvcHMsIGV2ZXJ5IGluZGV4IGVudHJ5IHBvaW50aW5nIGF0IHRoYXQg bWVtYmVyIGlzCisgKiBzdXBlcnNlZGVkIChzdGFsZSksIHNvIGl0IGNhcnJpZXMgbm8gbGl2 ZSBlbnRyeS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitIb3RJbmRleGVkQml0bWFwSXNT dWJzZXQoY29uc3QgdWludDggKnN1YiwgY29uc3QgdWludDggKnN1cGVyLCBpbnQgc3ViX25h dHRzKQoreworCVNpemUJCW5ieXRlcyA9IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhzdWJfbmF0 dHMpOworCisJZm9yIChTaXplIGkgPSAwOyBpIDwgbmJ5dGVzOyBpKyspCisJCWlmICgoc3Vi W2ldICYgfnN1cGVyW2ldKSAhPSAwKQorCQkJcmV0dXJuIGZhbHNlOworCXJldHVybiB0cnVl OworfQorCisvKgorICogU3R1YiBsaW5lIHBvaW50ZXJzIChjb2xsYXBzZSBzdXJ2aXZvcnMp LgorICoKKyAqIFdoZW4gcHJ1bmUgY29sbGFwc2VzIGEgZGVhZCBIT1QtaW5kZXhlZCBjaGFp biBpdCBjYW5ub3Qga2VlcCB0aGUgZGVhZCBrZXkKKyAqIHR1cGxlcyBhcyBsaXZlIGRhdGEt YmVhcmluZyB0dXBsZXMgKHRoZWlyIFhJRHMgd291bGQgaG9sZCBiYWNrCisgKiByZWxmcm96 ZW54aWQpLiAgRWFjaCBwcmVzZXJ2ZWQgZGVhZCBrZXkgdHVwbGUgaXMgaW5zdGVhZCBjb252 ZXJ0ZWQgdG8gYW4KKyAqIHhpZC1mcmVlICJzdHViIjogYW4gTFBfTk9STUFMIGl0ZW0gd2hv c2UgSGVhcFR1cGxlSGVhZGVyIGlzIGZyb3plbiBhbmQKKyAqIG1hcmtlZCBub3QtYS1yZWFs LXR1cGxlIChIRUFQX0lOREVYRURfVVBEQVRFRCBzZXQsIEhlYXBUdXBsZUhlYWRlckdldE5h dHRzCisgKiA9PSAwKSwgd2hvc2UgdF9jdGlkLm9mZm51bSBmb3J3YXJkcyB0byB0aGUgbmV4 dCBrZXkgdHVwbGUgb24gdGhlIHBhZ2UsIGFuZAorICogd2hvc2UgcGF5bG9hZCBpcyB0aGUg bW9kaWZpZWQtYXR0cnMgYml0bWFwIGZvciB0aGUgc2VnbWVudCBpdCByZXByZXNlbnRzIC0t CisgKiBsb2NhdGVkLCBsaWtlIGEgbGl2ZSB0dXBsZSdzIGlubGluZSBiaXRtYXAsIGluIHRo ZSBmaW5hbAorICogSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSBieXRlcyBvZiB0aGUg aXRlbSwgc28gdGhlIHNhbWUgYWNjZXNzb3JzIHdvcmsKKyAqIGZvciBib3RoLiAgQmVjYXVz ZSB0aGUgbmF0dHMgZmllbGQgaXMgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgMCBzZW50aW5lbCwg dGhlCisgKiBzdHViJ3Mgd3JpdGUtdGltZSBuYXR0cyAobmVlZGVkIHRvIHNpemUvbG9jYXRl IHRoYXQgYml0bWFwKSBpcyBwcmVzZXJ2ZWQgaW4KKyAqIHRoZSBvdGhlcndpc2UtdW51c2Vk IGJsb2NrLW51bWJlciBoYWxmIG9mIHRfY3RpZDsgSG90SW5kZXhlZFN0dWJHZXRGb3J3YXJk CisgKiByZWFkcyBvbmx5IHRoZSBvZmZzZXQgaGFsZi4KKyAqCisgKiBBIHN0dWIgaXMgc2ln bmF0dXJlLXNraXBwZWQgKG5vdCB2aXNpYmlsaXR5LXNraXBwZWQpIGJ5IGV2ZXJ5IGNvbnN1 bWVyIHRoYXQKKyAqIHdhbGtzIExQX05PUk1BTCBpdGVtcy4KKyAqLworc3RhdGljIGlubGlu ZSBib29sCitIb3RJbmRleGVkSGVhZGVySXNTdHViKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRh dGEgKnR1cCkKK3sKKwlyZXR1cm4gKHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURf VVBEQVRFRCkgIT0gMCAmJgorCQlIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApID09IDA7 Cit9CisKKy8qIE9mZnNldCBvZiB0aGUgbmV4dCBrZXkgdHVwbGUgdGhpcyBzdHViIGZvcndh cmRzIHRvIChzYW1lIHBhZ2UpLiAqLworc3RhdGljIGlubGluZSBPZmZzZXROdW1iZXIKK0hv dEluZGV4ZWRTdHViR2V0Rm9yd2FyZChjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRhICp0dXAp Cit7CisJcmV0dXJuIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjaygmdHVwLT50 X2N0aWQpOworfQorCisvKgorICogQml0bWFwIHNpemluZyBhY3Jvc3MgdGhlIHJlbGF0aW9u J3MgbGlmZXRpbWUuCisgKgorICogVGhlIHRyYWlsaW5nIGJpdG1hcCBpcyBjZWlsKG5hdHRz IC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSByZWxhdGlvbidzCisgKiBhdHRyaWJ1 dGUgY291bnQgKmF0IHRoZSB0aW1lIHRoZSB0dXBsZSB3YXMgd3JpdHRlbiouICBBREQgQ09M VU1OIHJhaXNlcyB0aGUKKyAqIHJlbGF0aW9uJ3MgbmF0dHMgd2l0aG91dCByZXdyaXRpbmcg ZXhpc3RpbmcgdHVwbGVzLCBzbyBhIGNoYWluIGNhbiBob2xkCisgKiB0dXBsZXMgd2hvc2Ug Yml0bWFwcyB3ZXJlIHNpemVkIGZvciBkaWZmZXJlbnQgKHNtYWxsZXIpIG5hdHRzIHRoYW4g dGhlCisgKiByZWxhdGlvbiBoYXMgbm93LiAgRXZlcnkgY29uc3VtZXIgbXVzdCB0aGVyZWZv cmUgc2l6ZSBhbmQgbG9jYXRlIGEgdHVwbGUncworICogYml0bWFwIGZyb20gdGhhdCB0dXBs ZSdzIG93biB3cml0ZS10aW1lIG5hdHRzLCBuZXZlciBmcm9tIHRoZSByZWxhdGlvbidzCisg KiBjdXJyZW50IG5hdHRzLgorICoKKyAqIEZvciBhIGxpdmUgSE9ULWluZGV4ZWQgdHVwbGUg dGhlIHdyaXRlLXRpbWUgbmF0dHMgaXMgSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMKKyAqIChh IGZyZXNobHkgZm9ybWVkIFVQREFURSB0dXBsZSBzdG9yZXMgdGhlIGZ1bGwgcmVsYXRpb24g bmF0dHMsIHdoaWNoIGlzIHdoYXQKKyAqIGhlYXBfZm9ybV9ob3RfaW5kZXhlZF90dXBsZSBz aXplZCB0aGUgYml0bWFwIHdpdGgpLiAgQSBzdHViIG92ZXJ3cml0ZXMgbmF0dHMKKyAqIHdp dGggMCBhcyBpdHMgc2VudGluZWwsIHNvIGl0IHByZXNlcnZlcyBpdHMgd3JpdGUtdGltZSBu YXR0cyBpbiB0aGUgdW51c2VkCisgKiBibG9jay1udW1iZXIgaGFsZiBvZiB0X2N0aWQgaW5z dGVhZCAodGhlIG9mZnNldCBoYWxmIGhvbGRzIHRoZSBmb3J3YXJkCisgKiBsaW5rKS4KKyAq Lworc3RhdGljIGlubGluZSB2b2lkCitIb3RJbmRleGVkU3R1YlNldEJpdG1hcE5hdHRzKEhl YXBUdXBsZUhlYWRlckRhdGEgKnR1cCwgaW50IG5hdHRzKQoreworCUJsb2NrSWRTZXQoJnR1 cC0+dF9jdGlkLmlwX2Jsa2lkLCAoQmxvY2tOdW1iZXIpIG5hdHRzKTsKK30KKworc3RhdGlj IGlubGluZSBpbnQKK0hvdEluZGV4ZWRTdHViR2V0Qml0bWFwTmF0dHMoY29uc3QgSGVhcFR1 cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCXJldHVybiAoaW50KSBCbG9ja0lkR2V0QmxvY2tO dW1iZXIoJnR1cC0+dF9jdGlkLmlwX2Jsa2lkKTsKK30KKworLyogV3JpdGUtdGltZSBuYXR0 cyBvZiBhbnkgSE9ULWluZGV4ZWQgaXRlbSAobGl2ZSB0dXBsZSBvciBzdHViKS4gKi8KK3N0 YXRpYyBpbmxpbmUgaW50CitIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyhjb25zdCBIZWFw VHVwbGVIZWFkZXJEYXRhICp0dXApCit7CisJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIo dHVwKSkKKwkJcmV0dXJuIEhvdEluZGV4ZWRTdHViR2V0Qml0bWFwTmF0dHModHVwKTsKKwly ZXR1cm4gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKK30KKworI2VuZGlmCQkJCQkJ CS8qIEhPVF9JTkRFWEVEX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o dHVwX2RldGFpbHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaAppbmRl eCA3N2E2YzQ4ZmQ3MS4uN2ViN2Y4NmY1ZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9odHVwX2RldGFpbHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRh aWxzLmgKQEAgLTI4OSw3ICsyODksMTMgQEAgSEVBUF9YTUFYX0lTX0tFWVNIUl9MT0NLRUQo dWludDE2IGluZm9tYXNrKQogICogaW5mb3JtYXRpb24gc3RvcmVkIGluIHRfaW5mb21hc2sy OgogICovCiAjZGVmaW5lIEhFQVBfTkFUVFNfTUFTSwkJCTB4MDdGRgkvKiAxMSBiaXRzIGZv ciBudW1iZXIgb2YgYXR0cmlidXRlcyAqLwotLyogYml0cyAweDE4MDAgYXJlIGF2YWlsYWJs ZSAqLworI2RlZmluZSBIRUFQX0lOREVYRURfVVBEQVRFRAkweDA4MDAJLyogSE9UIHR1cGxl IHByb2R1Y2VkIGJ5IGFuIFVQREFURQorCQkJCQkJCQkJCSAqIHRoYXQgYWxzbyBjaGFuZ2Vk IGFuIGluZGV4ZWQKKwkJCQkJCQkJCQkgKiBhdHRyaWJ1dGUgKEhPVC9TSVUpOyBpbmRleCBz Y2FucworCQkJCQkJCQkJCSAqIHRoYXQgcmVhY2ggaXQgdmlhIGEgY2hhaW4gcmVjaGVjawor CQkJCQkJCQkJCSAqIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2FpbnN0IHRoZQorCQkJCQkJ CQkJCSAqIGxpdmUgdHVwbGUuICovCisvKiBiaXQgMHgxMDAwIGlzIGF2YWlsYWJsZSAqLwog I2RlZmluZSBIRUFQX0tFWVNfVVBEQVRFRAkJMHgyMDAwCS8qIHR1cGxlIHdhcyB1cGRhdGVk IGFuZCBrZXkgY29scwogCQkJCQkJCQkJCSAqIG1vZGlmaWVkLCBvciB0dXBsZSBkZWxldGVk ICovCiAjZGVmaW5lIEhFQVBfSE9UX1VQREFURUQJCTB4NDAwMAkvKiB0dXBsZSB3YXMgSE9U LXVwZGF0ZWQgKi8KLS0gCjIuNTAuMQoK --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA2NDFjMTBhNzllYTY1NjY3OWFjM2QzMzQzNTA2NjI5OTE1ZWVkYjBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA0 LzEwXSBBZGQgSE9ULWluZGV4ZWQgdXBkYXRlczogc2VsZWN0aXZlIGluZGV4CiBtYWludGVu YW5jZSBhbmQgcmVhZHMKCkltcGxlbWVudCB0aGUgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJ bmRleCBVcGRhdGUpIGZlYXR1cmUgb24gdGhlIGZvdW5kYXRpb24KbGFpZCBieSB0aGUgZXhl Y3V0b3IncyBtb2RpZmllZC1hdHRyaWJ1dGUgaWRlbnRpZmljYXRpb24uCgpFbGlnaWJpbGl0 eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSByZXR1cm5zIGEgSGVhcFVwZGF0ZUluZGV4TW9k ZSAtLQpIRUFQX1VQREFURV9BTExfSU5ERVhFUyAobm90IEhPVDsgZXZlcnkgaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBIRUFQX1VQREFURV9IT1QKKGNsYXNzaWMgSE9UOyBubyBpbmRleCBu ZWVkcyBhbiBlbnRyeSksIG9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSAoSE9UCmNo YWluLCBvbmx5IHRoZSBjaGFuZ2VkIGluZGV4ZXMgbWFpbnRhaW5lZCkgLS0gY29tcHV0ZWQg ZnJvbSBtb2RpZmllZF9pZHhfYXR0cnMKYW5kIHRoZSBwZXItcmVsYXRpb24gaW5kZXhlZC1h dHRyaWJ1dGUgc2V0IChSZWxhdGlvbkdldEluZGV4ZWRBdHRycykuICBBbgpVUERBVEUgdGhh dCBjaGFuZ2VzIGEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGlzCkhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSB1bmxlc3MgaXQgaXMgZm9yY2VkIHRvIEhFQVBfVVBE QVRFX0FMTF9JTkRFWEVTIGJ5Cm9uZSBvZjogZXZlcnkgaW5kZXhlZCBhdHRyaWJ1dGUgY2hh bmdlZCAobm90aGluZyB0byBza2lwKSwgYW4gYXR0cmlidXRlCnJlZmVyZW5jZWQgYnkgYW4g ZXhwcmVzc2lvbiBpbmRleCBjaGFuZ2VkIChleHByZXNzaW9uLWF3YXJlIG1haW50ZW5hbmNl IGlzIG5vdAppbXBsZW1lbnRlZCB5ZXQpLCBhIHN5c3RlbSBjYXRhbG9nLCBvciB0aGUgbG9n aWNhbC1yZXBsaWNhdGlvbiBhcHBseSBnYXRlIChzZWUKdGhlIGFwcGx5LWdhdGluZyBjb21t aXQpLiAgUGFydGlhbCBpbmRleGVzLCBleGNsdXNpb24gY29uc3RyYWludHMsIHBhcnRpdGlv bmVkCnRhYmxlcywgYW5kIG5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kcyBhcmUgYWxsIGVsaWdp YmxlIC0tIHRoZSByZWFkIHBhdGggaXMKYWNjZXNzLW1ldGhvZCBhZ25vc3RpYyBhbmQgdGhl IHByZWRpY2F0ZSBjb2x1bW4gaXMgcGFydCBvZiB0aGUgaW5kZXgncwphdHRyaWJ1dGUgc2V0 LCBzbyBubyBjYXJ2ZS1vdXQgaXMgbmVlZGVkIGZvciB0aGVtLgoKV3JpdGUgcGF0aDogdGhl IHRhYmxlLUFNIHVwZGF0ZSBjb250cmFjdCBjYXJyaWVzIG1vZGlmaWVkIGF0dHJpYnV0ZXMg SU4vT1VUIGFzCmEgQml0bWFwc2V0IChvbiBvdXRwdXQgdGhlIEFNIGFkZHMgdGhlIHdob2xl LXJvdyBzZW50aW5lbCwKVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsIHRvIHNpZ25hbCAi ZXZlcnkgaW5kZXggbmVlZHMgYW4gZW50cnkiKSwgYW5kCmhlYXBfdXBkYXRlLCBmb3IgSEVB UF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFLCBrZWVwcyB0aGUgbmV3IHZlcnNpb24gb24gdGhl IEhPVApjaGFpbiB3aGlsZSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgbWFpbnRhaW5zIG9ubHkg dGhlIGluZGV4ZXMgd2hvc2UgYXR0cmlidXRlcwpjaGFuZ2VkLiAgVGhlIG5ldyBoZWFwLW9u bHkgdHVwbGUgcmVjb3JkcywgaW4gYW4gaW5saW5lIGJpdG1hcCBpbiBpdHMgdGFpbCwgdGhl CmF0dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGF0IGl0cyBob3AuICBPbmx5IHRoZSBzdG9yZWQg dHVwbGUgY2FycmllcyB0aGUgYml0bWFwCmFuZCB0aGUgSEVBUF9JTkRFWEVEX1VQREFURUQg ZmxhZzsgdGhlIGNhbGxlcidzIGluLW1lbW9yeSBjb3B5IGlzIGxlZnQgdW5tYXJrZWQKc28g dGhlIGZsYWcgbmV2ZXIgcHJvbWlzZXMgYSB0cmFpbGluZyBiaXRtYXAgdGhhdCBpcyBub3Qg cHJlc2VudC4KClJlYWQgcGF0aDogYSBjaGFpbiB3YWxrIHRvIHRoZSBsaXZlIHR1cGxlIHVu aW9ucyB0aGUgbW9kaWZpZWQtYXR0cmlidXRlCmJpdG1hcHMgb2YgZXZlcnkgaG9wIGl0IGNy b3NzZXMuICBUaGUgaW5kZXgtYWNjZXNzIGxheWVyIHRyZWF0cyB0aGF0CmNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBhcyB0aGUgc3RhbGVuZXNzIGF1dGhvcml0eTogaWYgaXQgb3Zlcmxh cHMgdGhlCmFycml2aW5nIGluZGV4J3Mga2V5IGNvbHVtbnMgdGhlIGVudHJ5IGlzIHN0YWxl IGFuZCBpcyBkcm9wcGVkLCBhbmQgdGhlIHJvdyBpcwpyZS1zdXBwbGllZCBieSB0aGUgZnJl c2ggZW50cnkgdGhlIHNhbWUgdXBkYXRlIHBsYW50ZWQuICBUaGUgcmVhZCBwYXRoIGlzCmFj Y2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIG5lZWRzIG5vIHZhbHVlIHJlY2hlY2sgb3IgbGVh ZiBrZXk6IGl0IGlzIGNvcnJlY3QKZXZlbiB3aGVuIGEga2V5IGlzIGN5Y2xlZCBhd2F5IGFu ZCBiYWNrLCBiZWNhdXNlIHRoZSB2YWx1ZS1yZXN0b3JpbmcgdXBkYXRlCnBsYW50ZWQgYSBm cmVzaCBlbnRyeSB3aG9zZSB3YWxrIGNyb3NzZXMgbm8gbGF0ZXIga2V5LWNoYW5naW5nIGhv cC4KClVuaXF1ZSBjaGVja3MgYXJlIHRoZSBvbmUgcGxhY2UgdGhhdCBkb2VzIGNvbXBhcmUg dmFsdWVzOiBfYnRfY2hlY2tfdW5pcXVlCmZldGNoZXMgdGhlIGNvbmZsaWN0aW5nIHR1cGxl IHVuZGVyIFNuYXBzaG90RGlydHkgYW5kLCBvbiBhIGNyb3NzZWQtaG9wCmFycml2YWwsIGNv bXBhcmVzIHRoZSBsaXZlIHR1cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUgYXJyaXZp bmcgbGVhZiB3aXRoCnRoZSBpbmRleCdzIG93biBvcmRlcmluZyBwcm9jZWR1cmUgKF9idF9o ZWFwX2tleXNfZXF1YWxfbGVhZiwgQlRPUkRFUl9QUk9DCnVuZGVyIGVhY2ggY29sdW1uJ3Mg Y29sbGF0aW9uKS4gIFVzaW5nIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IgLS0gbm90IGEgYml0 d2lzZQppbWFnZSBjb21wYXJpc29uIC0tIGRpc3Rpbmd1aXNoZXMgYSBzdGFsZSBhbmNlc3Rv ciBsZWFmIGZyb20gYSBnZW51aW5lbHkgbGl2ZQpkdXBsaWNhdGUgKGVxdWFsIHVuZGVyIHRo ZSBvcGNsYXNzIGV2ZW4gaWYgbm90IGJpdHdpc2UtaWRlbnRpY2FsKSBhbmQsIGluIHRoZQpp bi1mbGlnaHQgd2luZG93IG9mIGEgcmVzdG9yaW5nIHVwZGF0ZSwgcm91dGVzIHRoZSBzdGFs ZS1hbmNlc3RvciBoaXQgaW50bwpfYnRfZG9pbnNlcnQncyB4d2FpdCBzbyB0aGUgZHVwbGlj YXRlIGlzIHN0aWxsIGNhdWdodC4gIFRoZSBjb21wYXJpc29uIHJlYWRzCnBsYWluIGtleSBj b2x1bW5zIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xvdDsgaXQgbmV2ZXIgZXZhbHVhdGVz IGFuIGluZGV4ZWQKZXhwcmVzc2lvbiwgYmVjYXVzZSBhbiBVUERBVEUgdG91Y2hpbmcgYW4g ZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUgaXMKaW5lbGlnaWJsZSBmb3IgSE9ULWluZGV4 ZWQsIHNvIGFuIGV4cHJlc3Npb24gaW5kZXggaXMgbmV2ZXIgdGhlIG9uZSByZWNlaXZpbmcK dGhlIGZyZXNoIGVudHJ5IHdob3NlIGluc2VydCBydW5zIHRoaXMgY2hlY2suCgpDby1hdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+CkNvLWF1dGhvcmVkLWJ5OiBOYXRo YW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgIHwgIDM0ICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgIHwgMzA2ICsrKysrKysrCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICB8IDQ3MSArKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgfCAx ODcgKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYyAg IHwgMTkyICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAg ICAgICB8ICA5NCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMg ICAgICAgIHwgMTcxICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMg ICAgICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5j ICAgICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGluZy5jICAg ICAgICAgICAgICAgfCAgNjYgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAg ICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAg ICAgICAgICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICAgICB8IDMyOSArKysrLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMgICAgICAgfCAgMzggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMgICAgIHwgIDMyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYyAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jICAgICAgIHwgIDczICstCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtl ZnVuY3MuYyAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYyB8ICAyMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYyAgICAgICAgICAgfCAyNDEgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nl c3MvYW1hcGkuaCAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggICAgICAgICAgICAgICAgICB8ICA1MCArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbHNjYW4uaCAgICAgICAgICAgICAgICAgfCAgNjAgKysKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgIHwgIDcxICstCiBzcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9pbmNsdWRl L3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvaW5jbHVk ZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvaW5jbHVk ZS91dGlscy9yZWxjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAxNyArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCAgICB8IDc3MSArKysrKysrLS0tLS0t LS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgICAgICAgICB8 IDYwMyArKysrKy0tLS0tLS0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgICAgIHwgICAyICstCiAzMyBmaWxlcyBjaGFuZ2VkLCAyNTk0IGluc2VydGlv bnMoKyksIDEzODAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QKaW5kZXggNzRlNDA3ZjM3NWEuLjcxMjM2NTYxNzNjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QKQEAgLTE1Niw2ICsxNTYsNDAgQEAgYWxsIHN1bW1hcml6aW5nIGlu ZGV4ZXMuICAoUmVhbGlzdGljYWxseSwgd2Ugb25seSBuZWVkIHRvIHByb3BhZ2F0ZSB0aGUK IHVwZGF0ZSB0byB0aGUgaW5kZXhlcyB0aGF0IGNvbnRhaW4gdGhlIHVwZGF0ZWQgdmFsdWVz LCBidXQgdGhhdCBpcyB5ZXQgdG8KIGJlIGltcGxlbWVudGVkLikKIAorCitQZXItSW5kZXgg VXBkYXRlIFRyYWNraW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FmdGVyIHRo ZSB0YWJsZSBBTSBwZXJmb3JtcyB0aGUgdXBkYXRlLCB0aGUgZXhlY3V0b3IgZGV0ZXJtaW5l cyB3aGljaAoraW5kZXhlcyBuZWVkIG5ldyBlbnRyaWVzIHVzaW5nIHBlci1pbmRleCB0cmFj a2luZy4KKworVGhlIHRhYmxlIEFNIGNvbW11bmljYXRlcyB3aGV0aGVyIGEgSE9UIHVwZGF0 ZSBvY2N1cnJlZCB2aWEgdGhlCit1cGRhdGVfYWxsX2luZGV4ZXMgYm9vbGVhbiBvdXRwdXQg b2YgdGFibGVfdHVwbGVfdXBkYXRlKCksIHRvZ2V0aGVyIHdpdGggdGhlCittb2RpZmllZC1h dHRycyBCaXRtYXBzZXQgdGhlIGNhbGxlciBwYXNzZWQgaW4gKGF0dHJpYnV0ZSBudW1iZXJz IGVuY29kZWQgd2l0aAorRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcikuICBX aGVuIHVwZGF0ZV9hbGxfaW5kZXhlcyBpcyB0cnVlIHRoZQordXBkYXRlIHdhcyBub24tSE9U IGFuZCBldmVyeSBpbmRleCByZXF1aXJlcyBhIG5ldyBlbnRyeSAodGhlIHR1cGxlIGhhcyBh IG5ldworVElEKS4gIFdoZW4gZmFsc2UgdGhlIHVwZGF0ZSB3YXMgSE9UOiB0aGUgY2FsbGVy IGNvbnN1bHRzIG1vZGlmaWVkX2F0dHJzIHdpdGgKK2VhY2ggaW5kZXgncyBvd24gYXR0cmli dXRlcyB0byBpbnNlcnQgZW50cmllcyBvbmx5IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5 CithdHRyaWJ1dGVzIGNoYW5nZWQgKGEgSE9ULWluZGV4ZWQgdXBkYXRlKSBvciBvbmx5IHRo ZSBzdW1tYXJpemluZyBpbmRleGVzIChhCitjbGFzc2ljIEhPVCB1cGRhdGUgdGhhdCBjaGFu Z2VkIGEgc3VtbWFyaXplZCBjb2x1bW4pLCBhbmQgc2tpcHMgdGhlIHJlc3QuCisKK1RoZSBl eGVjdXRvciB0aGVuIGNhbGxzIEV4ZWNTZXRJbmRleFVuY2hhbmdlZCgpIHRvIHBvcHVsYXRl IHRoZSBwZXItaW5kZXgKK2lpX0luZGV4VW5jaGFuZ2VkIGZsYWcgb24gZWFjaCBJbmRleElu Zm8uICBUaGlzIGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgZWFjaAoraW5kZXgncyBrZXkgdmFs dWVzIGFyZSB1bmNoYW5nZWQgYnkgdGhlIHVwZGF0ZS4gIEZvciBub24tSE9UIHVwZGF0ZXMK K3RoZSBmbGFnIGlzIGNsZWFyZWQgb24gZXZlcnkgaW5kZXgsIHNvIGVhY2ggZ2V0cyBhIGZy ZXNoIGVudHJ5IGF0IHRoZQorbmV3IFRJRDsgdGhlIGZsYWcgaXMgbmV2ZXIgYSBza2lwIG9u IGl0cyBvd24sIGp1c3QgYSBoaW50IHRvIHRoZQoraW5kZXggQU0ncyBhbWluc2VydCBmb3Ig b3B0aW1pemF0aW9ucyBzdWNoIGFzIGJvdHRvbS11cCBkZWxldGlvbiBvZgorbG9naWNhbGx5 IGVxdWl2YWxlbnQgZHVwbGljYXRlIGVudHJpZXMuCisKK0V4ZWNJbnNlcnRJbmRleFR1cGxl cyBjb25zdWx0cyBpaV9JbmRleFVuY2hhbmdlZCB0byBkZWNpZGUgd2hldGhlciB0bworc2tp cCBhIG5vbi1zdW1tYXJpemluZyBpbmRleCBkdXJpbmcgYW4gVVBEQVRFOiBpZiB0aGUgaW5k ZXggaXMgbWFya2VkCit1bmNoYW5nZWQsIHRoZSBIT1QgY2hhaW4gcm9vdCdzIGV4aXN0aW5n IGVudHJ5IHN0aWxsIHBvaW50cyBhdCB0aGUKK3R1cGxlLCBzbyBubyBuZXcgZW50cnkgaXMg bmVlZGVkLiAgRm9yIG5vbi1IT1QgdXBkYXRlcyB0aGUgVElECitjaGFuZ2VkIGFuZCBFeGVj U2V0SW5kZXhVbmNoYW5nZWQgbWFya3MgZXZlcnkgaW5kZXggYXMgY2hhbmdlZCwKK2ZvcmNp bmcgZWFjaCB0byByZWNlaXZlIGEgbmV3IGVudHJ5LiAgU3VtbWFyaXppbmcgaW5kZXhlcyBh bHdheXMgZ2V0Cit0aGUgb3Bwb3J0dW5pdHkgdG8gdXBkYXRlIHRoZWlyIGJsb2NrLWxldmVs IHN1bW1hcmllcy4KKworCiBBYm9ydCBDYXNlcwogLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECmluZGV4IDRiNzAxZTQyNTg2 Li41ZDRhMmM3ZDY2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVB RE1FLkhPVC1JTkRFWEVECisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QtSU5ERVhFRApAQCAtNTQsMyArNTQsMzA5IEBAIFRoZSBIT1QtaW5kZXhlZCBpbnZhcmlh bnQgKHRoZSBuZXcgY29udHJhY3QpCiAKIFRoaXMgaXMgd2hhdCBtYWtlcyBkcm9wcGluZyBh IHN0YWxlIGVudHJ5IHNhZmU6IHRoZSBsaXZlIHJvdyBpcyBhbHdheXMKIHJlYWNoYWJsZSB0 aHJvdWdoIGV4YWN0bHkgb25lIG5vbi1zdGFsZSBlbnRyeSBwZXIgaW5kZXguCisKKworRWxp Z2liaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisKK1RoZSBleGVjdXRvciBjb21wdXRlcyBtb2RpZmllZF9pZHhf YXR0cnMgKHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhpcyBVUERBVEUKK2NoYW5nZWQsIGF0 dHJpYnV0ZSBudW1iZXJzIG9mZnNldCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyKSBhbmQKK3Bhc3NlcyBpdCB0byBoZWFwX3VwZGF0ZSB2aWEgdGFibGVfdHVwbGVf dXBkYXRlLiAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZQorY2xhc3NpZmllcyB0aGUgdXBkYXRl OgorCisgIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTCisgICAgICAgIEhPVCBpcyBub3QgcGVy bWl0dGVkOyB0aGUgbmV3IHR1cGxlIGdvZXMgb24gYSBmcmVzaCBUSUQgYW5kIGV2ZXJ5Cisg ICAgICAgIGluZGV4IGdldHMgYSBuZXcgZW50cnkuCisgIEhFQVBfSEVBUF9PTkxZX1VQREFU RQorICAgICAgICBubyBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdl ZCwgc28gbm8gaW5kZXggbmVlZHMgYQorICAgICAgICBuZXcgZW50cnkgKGNsYXNzaWMgSE9U KS4KKyAgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFCisgICAgICAgIGF0IGxlYXN0IG9u ZSBub24tc3VtbWFyaXppbmcgaW5kZXgncyBhdHRyaWJ1dGUgY2hhbmdlZCwgYnV0IHRoZQor ICAgICAgICB1cGRhdGUgbWF5IHN0YXkgb24gdGhlIEhPVCBjaGFpbiBhbmQgbWFpbnRhaW4g b25seSB0aGUgY2hhbmdlZAorICAgICAgICBpbmRleGVzIHNlbGVjdGl2ZWx5LgorCitBIG5v bi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2luZyB5aWVsZHMgSEVBUF9T RUxFQ1RJVkVfSU5ERVhfVVBEQVRFCit1bmxlc3Mgb25lIG9mIHRoZXNlIGZvcmNlcyBIRUFQ X1VQREFURV9BTExfSU5ERVhFUzoKKworICAxLiBUaGUgbG9naWNhbC1yZXBsaWNhdGlvbiBh cHBseSBwYXRoLCBnYXRlZCBwZXIgc3Vic2NyaXB0aW9uIChzZWUgIkxvZ2ljYWwKKyAgICAg cmVwbGljYXRpb24iIGJlbG93KS4KKyAgMi4gQW4gVVBEQVRFIHRvdWNoaW5nIGFuIGF0dHJp YnV0ZSByZWZlcmVuY2VkIGJ5IGFuIGV4cHJlc3Npb24gaW5kZXgKKyAgICAgKHNlbGVjdGl2 ZSBtYWludGVuYW5jZSBvZiBleHByZXNzaW9uIGluZGV4ZXMgaXMgbm90IGltcGxlbWVudGVk IHlldCkuCisgIDMuIEFuIFVQREFURSB0aGF0IGNoYW5nZXMgKmV2ZXJ5KiBpbmRleGVkIGF0 dHJpYnV0ZTogdGhlcmUgaXMgbm8gaW5kZXggdG8KKyAgICAgc2tpcCwgc28gYSBwbGFpbiBu b24tSE9UIHVwZGF0ZSBpcyBjaGVhcGVyLgorCitTeXN0ZW0gY2F0YWxvZ3Mgc3RheSBjbGFz c2ljLUhPVCBvbmx5OiBhIGNhdGFsb2cgVVBEQVRFIHRoYXQgY2hhbmdlcyBhCitub24tc3Vt bWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgZmFsbHMgYmFjayB0byBIRUFQX1VQREFURV9B TExfSU5ERVhFUywgYmVjYXVzZQorY2F0YWxvZyByZWFkcyBnbyB0aHJvdWdoIG1hbnkgcGF0 aHMgbm90IGFsbCBwcm92ZW4gc2FmZSBhZ2FpbnN0IHN0YWxlIGNoYWluCitlbnRyaWVzLiAg VGhpcyBpcyB0aGUgcHJlLUhPVC1pbmRleGVkIGJlaGF2aW91ciBmb3Igc3VjaCB1cGRhdGVz LgorCitJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIChjYWNoZWQgaW4gcmRfaW5kZXhlZGF0 dHIpIGlzIHRoZSBzZXQgb2YgY29sdW1ucworcmVmZXJlbmNlZCBieSBub24tc3VtbWFyaXpp bmcgaW5kZXhlcyBwbHVzLCBmb2xkZWQgaW4sIHRoZSBjb2x1bW5zIHJlZmVyZW5jZWQKK29u bHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcywgc28gdGhhdCBhIGNoYW5nZSB0byBhIHN1bW1h cml6aW5nLW9ubHkgY29sdW1uIGlzCitzZWVuIGJ5IHRoZSBtb2RpZmllZC1hdHRyaWJ1dGUg Y29tcGFyaXNvbiAoaXRzIGluZGV4IGlzIG1haW50YWluZWQgdmlhIHRoZQorY2xhc3NpYy1I T1Qgc3VtbWFyaXppbmcgcGF0aCkuICBSZWFkLXNpZGUgc3RhbGVuZXNzIGlzIGZpbHRlcmVk IGJ5IHRoZQorY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaCBpcyBhY2Nlc3MtbWV0 aG9kIGFnbm9zdGljLCBzbyBhIGNoYW5nZSB0byBhCitjb2x1bW4gY292ZXJlZCBieSBhbnkg aW5kZXggaXMgSE9ULWluZGV4ZWQgcmVnYXJkbGVzcyBvZiB0aGUgaW5kZXgncyBhY2Nlc3MK K21ldGhvZC4gIFN1bW1hcml6aW5nIGluZGV4ZXMgKGUuZy4gQlJJTikga2VlcCBubyBwZXIt cm93IGxlYWYgdGhhdCBjYW4gZ28KK3N0YWxlIGFuZCBhcmUgbWFpbnRhaW5lZCB2aWEgdGhl IHN1bW1hcml6aW5nIHBhdGguCisKKworVGhlIHdyaXRlIHBhdGgKKy0tLS0tLS0tLS0tLS0t CisKK0ZvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUsIGhlYXBfdXBkYXRlOgorCisg IC0gc3RvcmVzIHRoZSBuZXcgdHVwbGUgYXMgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwgbGlua2VkIGludG8KKyAgICB0aGUgY2hhaW4gdmlhIHRfY3RpZCwgZXhhY3Rs eSBsaWtlIGNsYXNzaWMgSE9UOyBhbmQKKyAgLSBzZXRzIEhFQVBfSU5ERVhFRF9VUERBVEVE ICh0X2luZm9tYXNrMiBiaXQgMHgwODAwKSBvbiB0aGUgbmV3IHR1cGxlIHRvCisgICAgbWFy ayB0aGF0IHRoZSBjaGFpbiBub3cgY2FycmllcyBkaWZmZXJpbmcga2V5cy4KKworVGhlcmUg aXMgbm8gc2VwYXJhdGUgb24tcGFnZSBtZXRhLWl0ZW06IHRoZSBiaXQgb24gdGhlIGhlYXAt b25seSB0dXBsZSBpcyB0aGUKK2VudGlyZSBvbi1kaXNrIGZvb3RwcmludC4gIEFzIGZvciBj bGFzc2ljIEhPVCwgaWYgdGhlIG5ldyB0dXBsZSBkb2VzIG5vdCBmaXQKK29uIHRoZSBwYWdl IHRoZSB1cGRhdGUgZmFsbHMgYmFjayB0byBhIG5vbi1IT1QgKG5ldy1wYWdlKSB1cGRhdGUu CisKK1RoZSBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0bWFwIGlzIGNlaWwobmF0dHMvOCkg Ynl0ZXMsIHNpemVkIGJ5IHRoZSB0dXBsZSdzCitPV04gYXR0cmlidXRlIGNvdW50IGF0IHdy aXRlIHRpbWUgKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKSwgbm90IHRoZSByZWxhdGlvbidz CitjdXJyZW50IG5hdHRzLiAgQUREIENPTFVNTiByYWlzZXMgdGhlIHJlbGF0aW9uJ3MgbmF0 dHMgd2l0aG91dCByZXdyaXRpbmcKK2V4aXN0aW5nIHR1cGxlcywgc28gb25lIGNoYWluIGNh biBob2xkIGhvcHMgd2hvc2UgYml0bWFwcyB3ZXJlIHNpemVkIGZvcgorZGlmZmVyZW50IChz bWFsbGVyKSBuYXR0czsgZXZlcnkgY29uc3VtZXIgbG9jYXRlcyBhbmQgc2l6ZXMgYSBob3An cyBiaXRtYXAKK2Zyb20gdGhhdCBob3AncyBvd24gd3JpdGUtdGltZSBuYXR0cyAoSG90SW5k ZXhlZFR1cGxlQml0bWFwTmF0dHMgaW4KK2FjY2Vzcy9ob3RfaW5kZXhlZC5oKS4gIEEgY29s bGFwc2Utc3Vydml2b3Igc3R1YiBvdmVyd3JpdGVzIG5hdHRzIHdpdGggaXRzIDAKK3NlbnRp bmVsLCBzbyBpdCBwcmVzZXJ2ZXMgaXRzIHdyaXRlLXRpbWUgbmF0dHMgaW4gdGhlIHVudXNl ZCBibG9jay1udW1iZXIgaGFsZgorb2YgdF9jdGlkICh0aGUgb2Zmc2V0IGhhbGYgaXMgdGhl IGZvcndhcmQgbGluaykuICBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUKK2Jhc2VkIGFu ZCBpZGVudGljYWwgYWNyb3NzIHNpemVzLCBzbyBhIHNtYWxsZXIgYml0bWFwIHNpbXBseSBP UnMgaW50byB0aGUgbG93CitieXRlcyBvZiBhIGxhcmdlciBjcm9zc2VkLWF0dHJpYnV0ZSBh Y2N1bXVsYXRvci4gIERST1AgQ09MVU1OIGtlZXBzIHRoZSBhdHRudW0KK3Nsb3QgKGl0IG5l dmVyIHJlbnVtYmVycyksIHNvIGV4aXN0aW5nIGJpdG1hcHMgc3RheSBhbGlnbmVkLgorCitB ZnRlciB0aGUgdXBkYXRlLCB0YWJsZV90dXBsZV91cGRhdGUgcmVwb3J0cyB1cGRhdGVfYWxs X2luZGV4ZXMgPSBmYWxzZSAodGhlCit0dXBsZSBpcyBoZWFwLW9ubHkpLiAgVGhlIGV4ZWN1 dG9yIHRoZW4gbWFpbnRhaW5zIGluZGV4ZXMgc2VsZWN0aXZlbHk6CitFeGVjU2V0SW5kZXhV bmNoYW5nZWQgbWFya3MgZWFjaCBpbmRleCB3aG9zZSBrZXkgYXR0cmlidXRlcyBkaWQgbm90 IGNoYW5nZSBhcwordW5jaGFuZ2VkLCBhbmQgRXhlY0luc2VydEluZGV4VHVwbGVzIGluc2Vy dHMgYSBmcmVzaCBlbnRyeSBvbmx5IGludG8gdGhlCitpbmRleGVzIHRoYXQgZGlkIGNoYW5n ZS4gIEVhY2ggc3VjaCBlbnRyeSBwb2ludHMgYXQgdGhlIG5ldyB0dXBsZSdzIG93biBUSUQu CisKKworVGhlIGNoYWluIGFuZCB0aGUgdHdvIGtpbmRzIG9mIGxlYWYgZW50cnkKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZnRlciBhIEhPVC1p bmRleGVkIHVwZGF0ZSB0aGVyZSBhcmUsIGZvciBhIGNoYW5nZWQgaW5kZXgsIHR3byBraW5k cyBvZiBsZWFmCitlbnRyeSByZWFjaGluZyB0aGUgY2hhaW46CisKKyAgLSB0aGUgcHJlLXVw ZGF0ZSBlbnRyeSBmb3IgdGhlIE9MRCBrZXksIHN0aWxsIHBvaW50aW5nIGF0IGFuIG9sZGVy IGNoYWluCisgICAgbWVtYmVyIChub3cgc3RhbGUgb25jZSB0aGUgd2FsayBjcm9zc2VzIHRo ZSBIT1QtaW5kZXhlZCBob3ApOyBhbmQKKyAgLSB0aGUgZnJlc2ggZW50cnkgZm9yIHRoZSBO RVcga2V5LCBwb2ludGluZyBhdCB0aGUgbmV3IGhlYXAtb25seSB0dXBsZS4KKworSW5kZXgg YnVpbGQgYW5kIFJFSU5ERVggaW5kZXggYSBsaXZlIEhPVC1pbmRleGVkIHR1cGxlIHVuZGVy IGl0cyBPV04gVElEIChub3QKK3RoZSBjaGFpbiByb290KSwgc28gdGhlIGZyZXNobHkgYnVp bHQgZW50cnkgaGFzIG5vIGhvcCBhZnRlciBpdCBhbmQgaXMgbmV2ZXIKK3RyZWF0ZWQgYXMg c3RhbGUuCisKKworUmVhZC1zaWRlIGNvcnJlY3RuZXNzOiB0aGUgY3Jvc3NlZC1hdHRyaWJ1 dGUgYml0bWFwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKworaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlciB3YWxrcyB0aGUgY2hhaW4gZnJv bSB0aGUgZW50cnkncyB0YXJnZXQgdG8gdGhlIGxpdmUKK3Zpc2libGUgdHVwbGUuICBFYWNo IGhvcCBpdCBjcm9zc2VzIGFmdGVyIHRoZSBlbnRyeSdzIG93biB0YXJnZXQgLS0gYSBsaXZl CitIT1QtaW5kZXhlZCBtZW1iZXIsIGEgY29sbGFwc2Utc3Vydml2b3Igc3R1Yiwgb3IgYSBj b2xsYXBzZWQgKHJlZGlyZWN0ZWQpCitwcmVmaXggLS0gY29udHJpYnV0ZXMgdGhhdCBob3An cyBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0bWFwIHRvIGEgcnVubmluZwordW5pb24sIElu ZGV4RmV0Y2hUYWJsZURhdGEueHNfaG90X2luZGV4ZWRfY3Jvc3NlZCwgYW5kIHNldHMKKypo b3RfaW5kZXhlZF9yZWNoZWNrIHRvIGZsYWcgdGhhdCB0aGUgd2FsayBjcm9zc2VkIGF0IGxl YXN0IG9uZSBzdWNoIGhvcC4KKworVGhlIGluZGV4LWFjY2VzcyBsYXllciAoaW5kZXhfZmV0 Y2hfaGVhcCkgdGVzdHMgdGhhdCB1bmlvbiBhZ2FpbnN0IHRoZQorYXJyaXZpbmcgaW5kZXgn cyBrZXkgY29sdW1ucy4gIEFueSBvdmVybGFwIG1lYW5zIGEgY3Jvc3NlZCBob3AgY2hhbmdl ZCBvbmUgb2YKK3RoaXMgaW5kZXgncyBpbnB1dHMsIHNvIHRoZSBlbnRyeSdzIHN0b3JlZCBr ZXkgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGxpdmUKK3R1cGxlOiBJbmRleFNjYW5EZXNjLnhz X2hvdF9pbmRleGVkX3N0YWxlIGlzIHNldCwgYW5kIEluZGV4U2NhbiwKK0luZGV4T25seVNj YW4sIENMVVNURVIsIGFuZCB0aGUgbG9naWNhbC1yZXBsaWNhdGlvbiByZXBsaWNhLWlkZW50 aXR5IGxvb2t1cHMKK2Ryb3AgdGhlIHR1cGxlLiAgSWYgdGhlIHVuaW9uIGlzIGRpc2pvaW50 IGZyb20gdGhlIGluZGV4J3Mga2V5IGNvbHVtbnMsIG5vbmUKK29mIHRoZSBpbmRleCdzIGlu cHV0cyBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW4sIHNvIHRoZSBlbnRyeSBpcyBjdXJyZW50 IGFuZAordGhlIHJvdyBpcyByZXR1cm5lZC4KKworVGhlIHVuaW9uIGlzIGNvbXBsZXRlOiBl dmVyeSBjcm9zc2VkIGxpdmUgaG9wIGFuZCBzdHViIGNvbnRyaWJ1dGVzIGl0cworYml0bWFw LCBhbmQgY2hhaW4gY29sbGFwc2Ugb25seSBldmVyIHJlY2xhaW1zIGEgbWVtYmVyIHdob3Nl IGF0dHJpYnV0ZXMgYXJlIGEKK3N1YnNldCBvZiB0aGUgc3Vydml2aW5nIGxhdGVyIGhvcHMg KHNlZSAiUHJ1bmUgYW5kIGNoYWluIGNvbGxhcHNlIiksIHNvIGEKK3JlYWRlciBjcm9zc2lu ZyB0aGUgc3Vydml2b3JzIHN0aWxsIHNlZXMgZXZlcnkgY29sbGFwc2VkIGhvcCdzIGF0dHJp YnV0ZXMuCitEaXNqb2ludG5lc3MgdGhlcmVmb3JlIHJlbGlhYmx5IG1lYW5zIHRoZSBlbnRy eSBpcyBjdXJyZW50LgorCitUaGlzIG5lZWRzIG5vIHZhbHVlIGNvbXBhcmlzb24gYW5kIG5v IGxlYWYga2V5LCBzbyBpdCBzZXJ2ZXMgZXF1YWxpdHksIHJhbmdlLAorYW5kIGluZXF1YWxp dHkgc2NhbnMgdW5pZm9ybWx5LCB3b3JrcyBmb3IgYW55IGFjY2VzcyBtZXRob2Qgd2hvc2Ug Y29sdW1ucyBhcmUKK2VsaWdpYmxlIGZvciBIT1QtaW5kZXhlZCB1cGRhdGVzLCBhbmQgaXMg Y29ycmVjdCBldmVuIHdoZW4gYSBrZXkgaXMgY3ljbGVkCithd2F5IGFuZCBiYWNrIChYIC0+ IFkgLT4gWCk6IHRoZSB1cGRhdGUgdGhhdCByZXN0b3JlZCB0aGUgdmFsdWUgcGxhbnRlZCBh CitmcmVzaCBlbnRyeSBwb2ludGluZyBhdCBpdHMgb3duIGxpdmUgdHVwbGUsIHdob3NlIHdh bGsgY3Jvc3NlcyBubyBsYXRlcgora2V5LWNoYW5naW5nIGhvcCwgc28gdGhhdCBlbnRyeSB1 bmlxdWVseSByZXR1cm5zIHRoZSByb3cgd2hpbGUgdGhlIHN0YWxlCithbmNlc3RvciBlbnRy eSAtLSB3aG9zZSB3YWxrIGRvZXMgY3Jvc3MgdGhlIGNoYW5naW5nIGhvcHMgLS0gaXMgZHJv cHBlZC4KKworVGhlIHJlYWQgbWVjaGFuaXNtIG5ldmVyIHJlY29uc3RydWN0cyBvciBjb21w YXJlcyBhbiBpbmRleCBrZXksIHNvIGl0IG5lZWRzIG5vCitwZXItYWNjZXNzLW1ldGhvZCBz dXBwb3J0LiAgKG5idHJlZSBrZWVwcyBhbiBpbnRlcm5hbCBsZWFmLWtleSBjb21wYXJpc29u LAorX2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmLCB1c2VkIG9ubHkgYnkgX2J0X2NoZWNrX3Vu aXF1ZSB0byB0ZWxsIGEgc3RhbGUgY2hhaW4KK2VudHJ5IGZyb20gYSBsaXZlIGR1cGxpY2F0 ZSBkdXJpbmcgYSB1bmlxdWUgaW5zZXJ0OyBpdCBpcyBub3QgcGFydCBvZiB0aGUgcmVhZAor cGF0aC4pCisKK1VuaXF1ZSBjaGVja3MuICBfYnRfY2hlY2tfdW5pcXVlIGZldGNoZXMgdGhl IGNvbmZsaWN0aW5nIHR1cGxlIHVuZGVyCitTbmFwc2hvdERpcnR5IGFuZCwgd2hlbiB0aGUg Y2hhaW4gd2FsayBjcm9zc2VkIGEgSE9ULWluZGV4ZWQgaG9wLCBjb21wYXJlcyB0aGUKK2xp dmUgdHVwbGUncyBjdXJyZW50IGtleSBhZ2FpbnN0IHRoZSBhcnJpdmluZyBsZWFmIHdpdGgg dGhlIGluZGV4J3Mgb3duCitvcmRlcmluZyBwcm9jZWR1cmUgKF9idF9oZWFwX2tleXNfZXF1 YWxfbGVhZiwgdXNpbmcgQlRPUkRFUl9QUk9DIHVuZGVyIGVhY2gKK2NvbHVtbidzIGNvbGxh dGlvbikuICBUaGlzIHJlY2hlY2sgaXMgcmVhY2hlZCBvbmx5IGZvciBhbiBpbmRleCByZWNl aXZpbmcgYQorZnJlc2ggZW50cnkgZHVyaW5nIGEgSE9ULWluZGV4ZWQgdXBkYXRlOyBIZWFw VXBkYXRlSG90QWxsb3dhYmxlIGRpc3F1YWxpZmllcworYW55IFVQREFURSB0aGF0IHRvdWNo ZXMgYW4gZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZSBpbmRleCBoZXJlIG5l dmVyCitoYXMgYW4gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBrZXkgY29sdW1uIGlz IGEgcGxhaW4gYXR0cmlidXRlKSwgYW5kIHRoZQorY29tcGFyaXNvbiByZWFkcyBhdHRyaWJ1 dGUgdmFsdWVzIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xvdCAtLSBubyBleHByZXNzaW9u CitldmFsdWF0aW9uIG9yIGV4ZWN1dG9yIHN0YXRlIGlzIG5lZWRlZC4gIFVzaW5nIHRoZSBv cGNsYXNzIGNvbXBhcmF0b3IgLS0gbm90IGEKK2JpdHdpc2UgaW1hZ2UgY29tcGFyaXNvbiAt LSBtZWFucyBhIGtleQordGhhdCB3YXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKFggLT4gWSAt PiBYKSBkb2VzIG5vdCByYWlzZSBhIHNwdXJpb3VzCitkdXBsaWNhdGUgYWdhaW5zdCBpdHMg b3duIHN0YWxlIGxlYWYsIHdoaWxlIGEgZ2VudWluZWx5IGxpdmUgZHVwbGljYXRlIChlcXVh bAordW5kZXIgdGhlIG9wY2xhc3MgZXZlbiBpZiBub3QgYml0d2lzZS1pZGVudGljYWwsIGUu Zy4gbnVtZXJpYyAxLjAgdnMgMS4wMCkgaXMKK3N0aWxsIGRldGVjdGVkLiAgKEFwcGVuZGl4 IEEgbW90aXZhdGVzIHRoaXMgcmVjaGVjayBpbiBkZXRhaWwuKQorCisKK0FwcGVuZGljZXMK Ky0tLS0tLS0tLS0KKworQXBwZW5kaXggQTogV2h5IHRoZSB1bmlxdWUtY2hlY2sgcGF0aCBu ZWVkcyBhIHZhbHVlIGNvbXBhcmlzb24gYXQgYWxsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhp cyBpcyB0aGUgb25lIHBsYWNlIEhPVC1pbmRleGVkIGRvZXMgY29tcGFyZSBhIGtleSB2YWx1 ZSwgZXZlbiB0aG91Z2ggdGhlCityZWFkIHBhdGggZGVsaWJlcmF0ZWx5IGF2b2lkcyBvbmUu ICBUaGUgcmVzdCBvZiB0aGlzIGFwcGVuZGl4IGV4cGxhaW5zIHdoeSB0aGUKK2NvbXBhcmlz b24gaXMgbmVlZGVkLCB3aHkgaXQgbXVzdCB1c2UgdGhlIG9wY2xhc3MgY29tcGFyYXRvciBy YXRoZXIgdGhhbiBhCitiaXR3aXNlIG9uZSwgYW5kIHdoeSB0aGUgQUJBIGNhc2UgaXMgd2hh dCBmb3JjZXMgdGhlIGlzc3VlLgorCisxLiBUaGUgc2V0dXA6IHdoeSBhIHVuaXF1ZSBpbnNl cnQgY2FuIGV2ZW4gcmVhY2ggYSBzdGFsZSBsZWFmCisKK1VuZGVyIGNsYXNzaWMgSE9ULCBh biBpbmRleCBoYXMgZXhhY3RseSBvbmUgbGVhZiBlbnRyeSBwZXIgbG9naWNhbCByb3csIGFu ZAorZXZlcnkgbGVhZiBlbnRyeSdzIGtleSBtYXRjaGVzIHRoZSBsaXZlIHR1cGxlIGl0IGNo YWluLXJlc29sdmVzIHRvLiAgU28KK19idF9jaGVja191bmlxdWUgY2FuIHRydXN0OiAiaWYg SSBmaW5kIGEgbGVhZiB3aG9zZSBrZXkgZXF1YWxzIG15IG5ldyBrZXksIGFuZAoraXQgcmVz b2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCB0aGF0J3MgYSBnZW51aW5lIGR1cGxpY2F0ZS4iCisK K0hPVC9TSVUgYnJlYWtzIHRoYXQgb25lLXRvLW9uZSBjb3JyZXNwb25kZW5jZS4gIEEgSE9U LWluZGV4ZWQgVVBEQVRFIHRoYXQKK2NoYW5nZXMgY29sdW1uIGEgZnJvbSBYIHRvIFk6Cisg LSBpbnNlcnRzIGEgZnJlc2ggbGVhZiBlbnRyeSAoWSAtPiBuZXcgdHVwbGUpIGludG8gaWR4 X2EsIGFuZAorIC0gbGVhdmVzIHRoZSBvbGQgbGVhZiBlbnRyeSAoWCAtPiBvbGQgY2hhaW4g cm9vdCkgaW4gcGxhY2UuCisKK1RoYXQgb2xkIChYIC0+IHJvb3QpIGVudHJ5IGlzIG5vdyBz dGFsZTogaXQgc3RpbGwgY2hhaW4tcmVzb2x2ZXMgdG8gYSBsaXZlCit0dXBsZSwgYnV0IHRo YXQgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgYSBpcyBZLCBub3QgWC4gIFRoZSByZWFkIHBhdGgg aGFuZGxlcyB0aGlzCit3aXRoIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZh bHVlIGNvbXBhcmlzb24gbmVlZGVkKTogaWYgdGhlIHdhbGsKK2Zyb20gdGhlIGVudHJ5J3Mg dGFyZ2V0IHRvIHRoZSBsaXZlIHR1cGxlIGNyb3NzZXMgYSBob3AgdGhhdCBjaGFuZ2VkIGEs IHRoZQorZW50cnkgaXMgc3RhbGUgYW5kIGRyb3BwZWQuCisKK1doZW4geW91IG5vdyBJTlNF UlQgYSByb3cgd2l0aCBhID0gWCwgX2J0X2NoZWNrX3VuaXF1ZSBzY2FucyBpZHhfYSBmb3Ig a2V5IFgKK2FuZCBmaW5kcyB0aGF0IHN0YWxlIChYIC0+IHJvb3QpIGxlYWYuICBJdCBtdXN0 IGRlY2lkZTogaXMgdGhpcyBhIHJlYWwKK2NvbmZsaWN0PworCisyLiBXaHkgdGhlIHJlYWQt cGF0aCBiaXRtYXAgaXMgbm90IHN1ZmZpY2llbnQgaGVyZQorCitUaGUgcmVhZCBwYXRoJ3Mg bG9naWMgaXM6ICJ0aGlzIGVudHJ5IGNyb3NzZWQgYSBob3AgdGhhdCBjaGFuZ2VkIGEgPT4g c3RhbGUgPT4KK2Ryb3AgaXQsIHRoZSBmcmVzaCBlbnRyeSB3aWxsIHN1cHBseSB0aGUgcm93 LiIgIEZvciBzY2FucyB0aGF0J3MgY29ycmVjdCBhbmQKK2NvbXBsZXRlLCBiZWNhdXNlIGV2 ZXJ5IGxpdmUgcm93IGhhcyBleGFjdGx5IG9uZSBub24tc3RhbGUgZW50cnkgdGhhdAorcmUt c3VwcGxpZXMgaXQuCisKK0J1dCBhIHVuaXF1ZSBjaGVjayBpcyBhc2tpbmcgYSBkaWZmZXJl bnQgcXVlc3Rpb24uICBJdCBpcyBub3QgInNob3VsZCBJIHJldHVybgordGhpcyByb3c/IiAt LSBpdCBpcyAiZG9lcyB0aGUgbGl2ZSB0dXBsZSB0aGlzIGVudHJ5IHJlc29sdmVzIHRvIGNv bmZsaWN0IHdpdGgKK3RoZSBrZXkgSSdtIGluc2VydGluZz8iICBUaGUgYml0bWFwIGNhbiBv bmx5IHRlbGwgeW91ICJhbiBpbmRleGVkIGF0dHJpYnV0ZQorY2hhbmdlZCBzb21ld2hlcmUg b24gdGhlIGNoYWluLiIgIEl0IGNhbm5vdCB0ZWxsIHlvdSB3aGF0IHRoZSBsaXZlIHZhbHVl IGlzCitub3csIGFuZCB0aGF0IGlzIGV4YWN0bHkgd2hhdCB5b3UgbmVlZCB0byBrbm93IHRv IGRldGVjdCBhIGR1cGxpY2F0ZS4KKworVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgQUJBIHBy b2JsZW0uICBDb25zaWRlcjoKKworICBJTlNFUlQgKGE9MTApICAgICAgICAgICAgICAgICAg TFBbMV0gYT0xMCAgIChyb290KQorICBVUERBVEUgYT0xMSAgIChIT1QtaW5kZXhlZCkgICAg TFBbMl0gYT0xMSAgIGJpdG1hcCB7YX0sIGxlYWYgKDExKS0+TFBbMl0KKyAgVVBEQVRFIGE9 MTAgICAoSE9ULWluZGV4ZWQpICAgIExQWzNdIGE9MTAgICBiaXRtYXAge2F9LCBsZWFmICgx MCktPkxQWzNdLCBsaXZlCisKK2lkeF9hIG5vdyBoYXMgbGVhdmVzICgxMCktPkxQWzFdIFtz dGFsZSBhbmNlc3Rvcl0sICgxMSktPkxQWzJdIFtzdGFsZV0sIGFuZAorKDEwKS0+TFBbM10g W2ZyZXNoLCBsaXZlXS4KKworTm93IElOU0VSVCAoYT0xMCksIGEgZ2VudWluZSBkdXBsaWNh dGUgb2YgdGhlIGxpdmUgcm93LiAgX2J0X2NoZWNrX3VuaXF1ZSBzY2FucworZm9yIGtleSAx MCBhbmQgZmluZHMgdGhlICgxMCktPkxQWzFdIHN0YWxlIGFuY2VzdG9yIGVudHJ5LiAgVGhl IGNoYWluIHdhbGsgZnJvbQorTFBbMV0gdG8gdGhlIGxpdmUgdHVwbGUgTFBbM10gY3Jvc3Nl cyBob3BzIHRoYXQgY2hhbmdlZCBhICgxMC0+MTEsIHRoZW4KKzExLT4xMCksIHNvIHRoZSBi aXRtYXAgc2F5cyAic3RhbGUuIiAgSWYgdGhlIHVuaXF1ZSBjaGVjayB0cnVzdGVkIHRoZSBi aXRtYXAKK2Fsb25lIGl0IHdvdWxkIHNraXAgKDEwKS0+TFBbMV0gYXMgc3RhbGUgYW5kIG1p c3MgdGhlIHJlYWwgZHVwbGljYXRlLiAgVGhlCitiaXRtYXAgaXMgZm9vbGVkIGJlY2F1c2Ug YSBjaGFuZ2VkIChzbyB0aGUgYml0IGlzIHNldCkgZXZlbiB0aG91Z2ggaXQgY2hhbmdlZAor YmFjayB0byB0aGUgc2FtZSB2YWx1ZTogImFuIGF0dHJpYnV0ZSBjaGFuZ2VkIG9uIHRoZSBj aGFpbiIgaXMgbm90ICJ0aGUgbGl2ZQordmFsdWUgZGlmZmVycyBmcm9tIHRoaXMgbGVhZidz IGtleS4iICBVbmRlciBBQkEgdGhleSBkaXZlcmdlLgorCitUaGUgc2hhcnBlciBjYXNlIGlz IGNvbmN1cnJlbmN5LiAgV2hpbGUgdGhlIHJlc3RvcmluZyBVUERBVEUgKGE6IDExIC0+IDEw KSBpcworaW4gZmxpZ2h0LCBpdCBoYXMgd3JpdHRlbiBpdHMgbmV3IGhlYXAgdHVwbGUgYnV0 IG5vdCB5ZXQgaW5zZXJ0ZWQgdGhlIGZyZXNoCisoMTApLT5MUFszXSBsZWFmLiAgQSBjb25j dXJyZW50IElOU0VSVCAoYT0xMCkgcnVubmluZyBpdHMgX2J0X2NoZWNrX3VuaXF1ZSBzY2Fu CitpbiB0aGF0IHdpbmRvdyBzZWVzIG9ubHkgdGhlIHN0YWxlICgxMCktPkxQWzFdIGFuY2Vz dG9yLiAgVGhlIHZhbHVlIHJlY2hlY2sKK2JlbG93IG1ha2VzIHRoYXQgaGl0IHJlc29sdmUg dG8geHdhaXQgb24gdGhlIGluLWZsaWdodCB1cGRhdGVyICh2aWEKK19idF9kb2luc2VydCdz IHdhaXQtYW5kLXJlY2hlY2spLCBzbyB0aGUgaW5zZXJ0ZXIgcmUtY2hlY2tzIGFmdGVyIHRo ZSB1cGRhdGVyCitjb21taXRzIGFuZCBmaW5kcyB0aGUgY29uZmxpY3QuICBBIGJpdG1hcC1v bmx5IHZlcmRpY3Qgd291bGQgc2tpcCB0aGUgYW5jZXN0b3IKK2JlZm9yZSByZWFjaGluZyB0 aGUgeHdhaXQgbG9naWMgYW5kIGFkbWl0IGEgZHVwbGljYXRlIC0tIHdoaWNoIGlzIHdoeSB0 aGUKK3JlY2hlY2sgaXMgYSBjb3JyZWN0bmVzcyByZXF1aXJlbWVudCwgbm90IG1lcmVseSBh biBvcHRpbWl6YXRpb24uCisKKzMuIFdoeSBhIHZhbHVlIGNvbXBhcmlzb24gZml4ZXMgaXQs IGFuZCB3aHkgaXQgbXVzdCBiZSB0aGUgb3BjbGFzcyBjb21wYXJhdG9yCisKK1NvIHRoZSB1 bmlxdWUgcGF0aCBuZWVkcyB0byBsb29rIGF0IHRoZSBhY3R1YWwgbGl2ZSB2YWx1ZSwgbm90 IGp1c3QgImRpZAorc29tZXRoaW5nIGNoYW5nZS4iICBfYnRfY2hlY2tfdW5pcXVlIGZldGNo ZXMgdGhlIGNvbmZsaWN0aW5nIHR1cGxlIHVuZGVyCitTbmFwc2hvdERpcnR5IGFuZCwgd2hl biBoaV9yZWNoZWNrIHNheXMgYSBIT1QtaW5kZXhlZCBob3Agd2FzIGNyb3NzZWQsIGNhbGxz CitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYgdG8gY29tcGFyZSB0aGUgbGl2ZSB0dXBsZSdz IGN1cnJlbnQga2V5IGFnYWluc3QgdGhlCithcnJpdmluZyBsZWFmJ3Mgc3RvcmVkIGtleToK KworIC0gbGl2ZSBrZXkgZXF1YWxzIHRoZSBsZWFmIGtleSAtPiBnZW51aW5lIGR1cGxpY2F0 ZSAob3IgYW4gaW4tZmxpZ2h0IGNvbmZsaWN0CisgICByZWFjaGVkIGFzIHh3YWl0KSAtLSBj b3JyZWN0OiBBQkEgYmFjayB0byBYIGlzIGEgcmVhbCBjb25mbGljdCB3aXRoIGEgbmV3IFgu CisgLSBsaXZlIGtleSBkaWZmZXJzIC0+IHRoZSBsZWFmIGlzIHRydWx5IHN0YWxlIC0+IHNr aXAgaXQgKHRoZSBmcmVzaCBlbnRyeQorICAgaGFuZGxlcyB0aGUgcmVhbCByb3cpLgorCitX aGljaCBlcXVhbGl0eT8gIFR3byBjYW5kaWRhdGVzOgorCitCaXR3aXNlL2ltYWdlIGNvbXBh cmlzb24gKGRhdHVtX2ltYWdlX2VxKSBjb21wYXJlcyByYXcgYnl0ZXMuICBUaGF0IGlzIHdy b25nCitmb3IgdW5pcXVlIGNoZWNraW5nIGluIHRoZSBkYW5nZXJvdXMgZGlyZWN0aW9uLiAg VW5pcXVlbmVzcyBpbiBQb3N0Z3JlU1FMIGlzCitkZWZpbmVkIGJ5IHRoZSBpbmRleCBvcGNs YXNzJ3MgZXF1YWxpdHkgb3BlcmF0b3IsIG5vdCBieXRlIGlkZW50aXR5LCBhbmQgbWFueQor dHlwZXMgaGF2ZSB2YWx1ZXMgZXF1YWwgdW5kZXIgdGhlIG9wY2xhc3MgYnV0IGJ5dGUtZGlz dGluY3Q6CisgLSBudW1lcmljOiAxLjAgYW5kIDEuMDAgYXJlIG9wY2xhc3MtZXF1YWwsIGRp ZmZlcmVudCBvbi1kaXNrIGJ5dGVzLgorIC0gZmxvYXQ4OiAtMC4wIGFuZCArMC4wIGFyZSBl cXVhbCwgZGlmZmVyZW50IGJpdCBwYXR0ZXJucy4KKyAtIHRleHQvY2l0ZXh0IHVuZGVyIGEg bm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb246IGNhbm9uaWNhbGx5LWVxdWl2YWxlbnQKKyAg IHN0cmluZ3MgdGhhdCBhcmUgbm90IGJ5dGUtaWRlbnRpY2FsLgorCitBIGJpdHdpc2UgY29t cGFyaXNvbiB3b3VsZCBjb25jbHVkZSAibm90IGVxdWFsID0+IHN0YWxlID0+IHNraXAiIGZv ciBhIGxpdmUKKzEuMDAgdmVyc3VzIGFuIGluc2VydGVkIDEuMCBhbmQgbWlzcyBhIGdlbnVp bmUgdmlvbGF0aW9uIC0tIGEgY29ycmVjdG5lc3MgaG9sZQorYXMgYmFkIGFzIHRoZSBBQkEg b25lLgorCitTbyBfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYgdXNlcyB0aGUgaW5kZXgncyBv d24gQlRPUkRFUl9QUk9DIChidHJlZSBzdXBwb3J0CitmdW5jdGlvbiAxKSB1bmRlciBlYWNo IGtleSBjb2x1bW4ncyBjb2xsYXRpb24sIHRoZSBzYW1lIG1hY2hpbmVyeSBfYnRfY29tcGFy ZQorYW5kIF9idF9ta3NjYW5rZXkgdXNlIHRvIGRlZmluZSBlcXVhbGl0eSBmb3IgdGhlIGlu ZGV4LiAgQSB6ZXJvIHJlc3VsdCBtZWFucworImVxdWFsIGFzIHRoZSBpbmRleCBkZWZpbmVz IGVxdWFsaXR5LCIgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSB1bmlxdWUtdmlvbGF0aW9uCitj b25kaXRpb24sIGFuZCB0aGUgdmVyZGljdCBhZ3JlZXMgd2l0aCB0aGUgaW5kZXgncyBvd24g bm90aW9uIG9mIHVuaXF1ZW5lc3MgaW4KK2JvdGggZGlyZWN0aW9ucy4KKworNC4gV2h5IG5v IGV4cHJlc3Npb24gZXZhbHVhdGlvbiBpcyBuZWVkZWQKKworX2J0X2hlYXBfa2V5c19lcXVh bF9sZWFmIHJlYWRzIGVhY2gga2V5IGNvbHVtbiBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNs b3QKKyhzbG90X2dldGF0dHIpIGFuZCBjb21wYXJlcyBpdCB0byB0aGUgbGVhZiBkYXR1bTsg aXQgZG9lcyBub3QgZXZhbHVhdGUgaW5kZXhlZAorZXhwcmVzc2lvbnMgYW5kIG5lZWRzIG5v IGV4ZWN1dG9yIHN0YXRlLiAgVGhhdCBpcyBzdWZmaWNpZW50IGJlY2F1c2UgdGhlCityZWNo ZWNrIGlzIG9ubHkgZXZlciByZWFjaGVkIGZvciBhbiBpbmRleCByZWNlaXZpbmcgYSBmcmVz aCBlbnRyeSBkdXJpbmcgYQorSE9ULWluZGV4ZWQgdXBkYXRlLCBhbmQgSGVhcFVwZGF0ZUhv dEFsbG93YWJsZSBkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0aGF0Cit0b3VjaGVzIGFuIGF0 dHJpYnV0ZSByZWZlcmVuY2VkIGJ5IGFuIGV4cHJlc3Npb24gaW5kZXgKKyhJTkRFWF9BVFRS X0JJVE1BUF9FWFBSRVNTSU9OIGNhcHR1cmVzIGV2ZXJ5IHN1Y2ggYXR0cmlidXRlKS4gIFNv IGEgSE9ULWluZGV4ZWQKK2NoYWluIG5ldmVyIGhhcyBhIGNyb3NzZWQgaG9wIGFmZmVjdGlu ZyBhbiBleHByZXNzaW9uIGluZGV4LCB0aGUgaW5kZXggcmVhY2hpbmcKK3RoZSByZWNoZWNr IG5ldmVyIGhhcyBhbiBleHByZXNzaW9uIGtleSBjb2x1bW4gKGV2ZXJ5IGluZGtleSBpcyBh IHJlYWwKK2F0dHJpYnV0ZSBudW1iZXIpLCBhbmQgdGhlcmUgaXMgbm90aGluZyB0byBldmFs dWF0ZS4gIElmIHNlbGVjdGl2ZSBtYWludGVuYW5jZQorb2YgZXhwcmVzc2lvbiBpbmRleGVz IGlzIGltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUsIHRoaXMgaXMgd2hlcmUgYW4KK2V4cHJl c3Npb24tZXZhbHVhdGluZyBjb21wYXJpc29uIChlLmcuIEZvcm1JbmRleERhdHVtKSB3b3Vs ZCBiZSByZWludHJvZHVjZWQuCisKKzUuIFdoeSB0aGUgYXN5bW1ldHJ5IChiaXRtYXAgb24g cmVhZCwgdmFsdWUgcmVjaGVjayBvbiB1bmlxdWUpIGlzIGludGVudGlvbmFsCisKK0l0IGxv b2tzIGxpa2UgdHdvIGRpZmZlcmVudCBhbnN3ZXJzIHRvIHRoZSBzYW1lIHF1ZXN0aW9uLCBi dXQgdGhlIHF1ZXN0aW9ucworZGlmZmVyOgorCisgLSBSZWFkL3NjYW4gcGF0aDogInNob3Vs ZCB0aGlzIHJvdyBiZSByZXR1cm5lZD8iICBBIHN0YWxlIGVudHJ5IGlzIHJlZHVuZGFudAor ICAgKHRoZSBmcmVzaCBlbnRyeSBzdXBwbGllcyB0aGUgcm93KSwgc28gdGhlIGNvbnNlcnZh dGl2ZSBiaXRtYXAgdmVyZGljdCBpcworICAgc3VmZmljaWVudCAtLSB3b3JzdCBjYXNlIHVu ZGVyIEFCQSB5b3UgZHJvcCBhIHJlZHVuZGFudCBlbnRyeSBhbmQgdGhlIGZyZXNoCisgICBv bmUgc3RpbGwgcmV0dXJucyB0aGUgcm93LiAgTm8gdmFsdWUgY29tcGFyaXNvbiwgc28gcmVh ZHMgc3RheQorICAgYWNjZXNzLW1ldGhvZC1hZ25vc3RpYyBhbmQgY2hlYXAuCisgLSBVbmlx dWUtY2hlY2sgcGF0aDogImlzIHRoaXMgYSBjb25mbGljdD8iICBBIHdyb25nICJzdGFsZSIg dmVyZGljdCBoZXJlIGRvZXMKKyAgIG5vdCBqdXN0IGRyb3AgYSByZWR1bmRhbnQgZW50cnk7 IGl0IHNpbGVudGx5IGFkbWl0cyBhIGR1cGxpY2F0ZSwgY29ycnVwdGluZworICAgdGhlIGNv bnN0cmFpbnQuICBJdCBjYW5ub3QgdG9sZXJhdGUgdGhlIGJpdG1hcCdzIGZhbHNlICJzdGFs ZSIgdW5kZXIgQUJBIGFuZAorICAgbXVzdCBjb25zdWx0IHRoZSBsaXZlIHZhbHVlIChvciB3 YWl0IG9uIGFuIGluLWZsaWdodCB1cGRhdGVyKSB2aWEgdGhlCisgICBvcGNsYXNzIGNvbXBh cmF0b3IuCisKK1RoZSBiaXRtYXAgaXMgYSBmaWx0ZXIgKGEgbmVjZXNzYXJ5IGNvbmRpdGlv bjogImNvdWxkIGJlIHN0YWxlIik7IHRoZSBvcGNsYXNzCityZWNoZWNrIGlzIHRoZSBhdXRo b3JpdHkgKHRoZSBzdWZmaWNpZW50IGNvbmRpdGlvbjogImlzIHRoZSBsaXZlIGtleSBhY3R1 YWxseQorZGlmZmVyZW50LCBvciBpcyBhIGNvbmZsaWN0aW5nIHVwZGF0ZSBpbiBmbGlnaHQi KS4gIFRoZSB1bmlxdWUgcGF0aCBsYXllcnMgdGhlCithdXRob3JpdHkgb24gdG9wIG9mIHRo ZSBmaWx0ZXIgcHJlY2lzZWx5IGJlY2F1c2UgaXRzIGVycm9yIG1vZGUgaXMKK3VuZm9yZ2l2 aW5nLgorCitJbiBvbmUgc2VudGVuY2U6IHRoZSB1bmlxdWUgY2hlY2sgY29tcGFyZXMgdGhl IGxpdmUgdHVwbGUncyBjdXJyZW50IGtleSB0byB0aGUKK2Fycml2aW5nIGxlYWYgd2l0aCB0 aGUgaW5kZXgncyBvd24gZXF1YWxpdHkgKG5vdCBieXRlcykgYmVjYXVzZSB0aGUKK2Nyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gb25seSBzYXkgInNvbWV0aGluZyBjaGFuZ2VkIiAt LSB0cnVlIHVuZGVyIGFuCitYLT5ZLT5YIGN5Y2xlIGV2ZW4gdGhvdWdoIHRoZSB2YWx1ZSBp cyBiYWNrIHRvIFggLS0gYW5kIG9ubHkgYW4gb3BjbGFzcy1jb3JyZWN0Cit2YWx1ZSBjb21w YXJpc29uICh3aGljaCBhbHNvIHJvdXRlcyBhbiBpbi1mbGlnaHQgcmVzdG9yaW5nIHVwZGF0 ZSB0byB4d2FpdCkgY2FuCitib3RoIHJlY29nbml6ZSB0aGUgY3ljbGVkLWJhY2sgdmFsdWUg YXMgYSBnZW51aW5lIGR1cGxpY2F0ZSBhbmQgY2F0Y2gKK2R1cGxpY2F0ZXMgdGhhdCBhcmUg b3BjbGFzcy1lcXVhbCBidXQgbm90IGJ5dGUtaWRlbnRpY2FsLCBlaXRoZXIgb2Ygd2hpY2gg YQorYml0bWFwIG9yIGEgYml0d2lzZSBjb21wYXJpc29uIHdvdWxkIGdldCB3cm9uZy4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNWIwNTlhNWFjZWYuLjNiZmFjOGMwYjE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMzQsNiArMzQsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcHRvYXN0Lmgi CiAjaW5jbHVkZSAiYWNjZXNzL2hpby5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3RfaW5kZXhl ZC5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3VidHJhbnMuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3luY3NjYW4uaCIKQEAgLTQ0LDEzICs0 NSwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nr b3B0aW9ucy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0 dXRpbHMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpA QCAtNzgsNiArODAsOCBAQCBzdGF0aWMgdm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhl YXBUdXBsZSBvbGR0dXApOwogI2VuZGlmCiBzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRl TW9kaWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJIEhlYXBU dXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBuZXd0dXApOworc3RhdGljIEhlYXBUdXBsZSBoZWFw X2Zvcm1faG90X2luZGV4ZWRfdHVwbGUoSGVhcFR1cGxlIHR1cCwgaW50IHJlbG5hdHRzLAor CQkJCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKTsKIHN0 YXRpYyBib29sIGhlYXBfYWNxdWlyZV90dXBsb2NrKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25z dCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgbW9kZSwg TG9ja1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sICpoYXZlX3R1cGxl X2xvY2spOwpAQCAtMjEwOSw5ICsyMTEzLDI4IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQkgKiBJZiB0aGlzIGlz IHRoZSBzaW5nbGUgYW5kIGZpcnN0IHR1cGxlIG9uIHBhZ2UsIHdlIGNhbiByZWluaXQgdGhl CiAJCSAqIHBhZ2UgaW5zdGVhZCBvZiByZXN0b3JpbmcgdGhlIHdob2xlIHRoaW5nLiAgU2V0 IGZsYWcsIGFuZCBoaWRlCiAJCSAqIGJ1ZmZlciByZWZlcmVuY2VzIGZyb20gWExvZ0luc2Vy dC4KKwkJICoKKwkJICogQWxzbyByZXF1aXJlIHRoYXQgdGhlIHBhZ2UncyB0dXBsZSBhcmVh IGNvbnRhaW5zIG5vdGhpbmcgb3RoZXIgdGhhbgorCQkgKiB0aGlzIHR1cGxlLiAgVmFjdXVt J3MgbHBfdHJ1bmNhdGVfb25seSBzZWNvbmQgcGFzcworCQkgKiAoUFJVTkVfVkFDVVVNX0NM RUFOVVApIGRvZXMgbm90IGNhbGwgUGFnZVJlcGFpckZyYWdtZW50YXRpb24sIHNvIGEKKwkJ ICogcGFnZSBjYW4gbGVnaXRpbWF0ZWx5IGVuZCB1cCB3aXRoIG9uZSBMUF9VTlVTRUQgc2xv dCBhdCBvZmZzZXQgMQorCQkgKiBwbHVzIG9ycGhhbiB0dXBsZSBieXRlcyBsZWZ0IG92ZXIg ZnJvbSB0aGUgcHJldmlvdXMgbGlmZXRpbWUuIElmCisJCSAqIGhlYXBfaW5zZXJ0IHJldXNl cyB0aGF0IExQX1VOVVNFRCBzbG90LCBwcmltYXJ5J3MgcGFnZSBrZWVwcyB0aGUKKwkJICog b3JwaGFuIGJ5dGVzIHdoaWxlIGEgc3RhbmRieSByZXBsYXlpbmcgSU5TRVJUK0lOSVQgemVy b2VzIHRoZW0uCisJCSAqIEVtaXR0aW5nIElOU0VSVCtJTklUIGluIHRoYXQgY2FzZSB0cmlw cyB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCisJCSAqIEZhbGxpbmcgYmFjayB0byBhIHJl Z3VsYXIgSU5TRVJUICh3aXRoIHRoZSBGUEkgb24gZmlyc3QgdG91Y2ggYWZ0ZXIKKwkJICog YSBjaGVja3BvaW50KSBrZWVwcyByZXBsYXkgYnl0ZS1pZGVudGljYWwgd2l0aG91dCBzYWNy aWZpY2luZyBjcmFzaAorCQkgKiBzYWZldHkuCisJCSAqCisJCSAqIE5PVEU6IGhlYXBfbXVs dGlfaW5zZXJ0KCkgZG9lcyBub3QgbmVlZCB0aGlzIGV4dHJhIGNoZWNrOiBpdCB1c2VzIHRo ZQorCQkgKiBzaW1wbGVyIHN0YXJ0aW5nX3dpdGhfZW1wdHlfcGFnZSAoUGFnZUdldE1heE9m ZnNldE51bWJlcihwYWdlKSA9PSAwKQorCQkgKiBnYXRlIGZvciBpdHMgb3duIElOSVRfUEFH RSBkZWNpc2lvbiwgYmVjYXVzZSBieSBjb25zdHJ1Y3Rpb24gaXQgaXMKKwkJICogbmV2ZXIg aGFuZGVkIGEgcGFnZSB3aXRoIGxlZnRvdmVyIG9ycGhhbiBieXRlcyBmcm9tIGEgcHJpb3Ig bGlmZXRpbWUuCiAJCSAqLwogCQlpZiAoSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJiho ZWFwdHVwLT50X3NlbGYpKSA9PSBGaXJzdE9mZnNldE51bWJlciAmJgotCQkJUGFnZUdldE1h eE9mZnNldE51bWJlcihwYWdlKSA9PSBGaXJzdE9mZnNldE51bWJlcikKKwkJCVBhZ2VHZXRN YXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXROdW1iZXIgJiYKKwkJCSgoUGFn ZUhlYWRlcikgcGFnZSktPnBkX3VwcGVyID09CisJCQkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5w ZF9zcGVjaWFsIC0gTUFYQUxJR04oaGVhcHR1cC0+dF9sZW4pKQogCQl7CiAJCQlpbmZvIHw9 IFhMT0dfSEVBUF9JTklUX1BBR0U7CiAJCQlidWZmbGFncyB8PSBSRUdCVUZfV0lMTF9JTklU OwpAQCAtMzIwMiw5ICszMjI1LDExIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpCiAgKi8KIFRNX1Jlc3VsdAog aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq b3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRp b25zIHBnX2F0dHJpYnV0ZV91bnVzZWQoKSwgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3 YWl0LAorCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMgcGdfYXR0cmlidXRlX3Vu dXNlZCgpLAorCQkJU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJVE1fRmFp bHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCi0JCQljb25z dCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dl ZCkKKwkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJSGVhcFVw ZGF0ZUluZGV4TW9kZSBob3RfbW9kZSkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRyYW5z YWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKQEAgLTMyMzAsNiAr MzI1NSw5IEBAIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAJYm9vbAkJaGF2ZV90dXBsZV9s b2NrID0gZmFsc2U7CiAJYm9vbAkJaXNjb21ibzsKIAlib29sCQl1c2VfaG90X3VwZGF0ZSA9 IGZhbHNlOworCWJvb2wJCWhvdF9pbmRleGVkID0gZmFsc2U7CS8qIEhPVC1pbmRleGVkIHVw ZGF0ZSAobW9kaWZpZWQgYW4KKwkJCQkJCQkJCQkgKiBpbmRleGVkIGF0dHIgYnV0IHN0YXll ZCBIT1QpICovCisJU2l6ZQkJaGlfYm1ieXRlcyA9IDA7IC8qIHRyYWlsaW5nIG1vZGlmaWVk LWF0dHJzIGJpdG1hcCBzaXplLCBpZiBhbnkgKi8KIAlib29sCQlrZXlfaW50YWN0OwogCWJv b2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29sCQlhbGxfdmlzaWJsZV9j bGVhcmVkX25ldyA9IGZhbHNlOwpAQCAtMzc5NCw2ICszODIyLDM4IEBAIGwyOgogCiAJbmV3 dHVwc2l6ZSA9IE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4pOwogCisJLyoKKwkgKiBLZWVwIEhP VC1pbmRleGVkIChTSVUpIGNoYWlucyB1bmlmb3JtLiAgSGVhcFVwZGF0ZUhvdEFsbG93YWJs ZSByZXR1cm5zCisJICogSEVBUF9IRUFQX09OTFlfVVBEQVRFIHdoZW5ldmVyIHRoaXMgdXBk YXRlIG1vZGlmaWVzIG5vIGluZGV4ZWQKKwkgKiBhdHRyaWJ1dGUuICBCdXQgaWYgdGhlIHR1 cGxlIGJlaW5nIHVwZGF0ZWQgaXMgYWxyZWFkeSBhIEhPVC1pbmRleGVkCisJICogY2hhaW4g bWVtYmVyIChpdCBjYXJyaWVzIEhFQVBfSU5ERVhFRF9VUERBVEVEKSwgZW1pdHRpbmcgYSBj bGFzc2ljLUhPVAorCSAqIHZlcnNpb24gd291bGQgc3BsaWNlIGEgbm9uLUhFQVBfSU5ERVhF RF9VUERBVEVEIHR1cGxlIGludG8gdGhlIGNoYWluLgorCSAqIFRoZSBwcnVuZS9jb2xsYXBz ZSBtYWNoaW5lcnkgZm9yd2FyZHMgb25seSBIRUFQX0lOREVYRURfVVBEQVRFRCBtZW1iZXJz CisJICogdGhyb3VnaCBicmlkZ2VzLCBzbyBzdWNoIGEgY2xhc3NpYy1IT1QgdmVyc2lvbiwg b25jZSBpdCBkaWVzIG1pZAorCSAqIGNvbGxhcHNlZC1jaGFpbiwgaGFzIG5vIGhhbmRsZXIg YW5kIHRyaXBzIHRoZSAibm90IGxpbmtlZCB0byBmcm9tIGFueQorCSAqIEhPVCBjaGFpbiIg ZXJyb3IuICBQcm9tb3RlIHRvIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSBpbnN0ZWFk OiB3aXRoIGFuCisJICogZW1wdHkgbW9kaWZpZWQtYXR0cnMgc2V0IHRoZSBuZXcgdmVyc2lv biBjYXJyaWVzIEhFQVBfSU5ERVhFRF9VUERBVEVECisJICogYW5kIGFuIGVtcHR5IGlubGlu ZS10cmFpbGluZyBiaXRtYXAsIGluc2VydHMgaW50byBubyBpbmRleCAobm90aGluZworCSAq IGNoYW5nZWQpLCBhbmQga2VlcHMgZXZlcnkgY2hhaW4gbWVtYmVyIHVuaWZvcm0uICBDYXRh bG9nIHJlbGF0aW9ucyBhcmUKKwkgKiBjbGFzc2ljLUhPVCBvbmx5IGFuZCBuZXZlciBjYXJy eSBIRUFQX0lOREVYRURfVVBEQVRFRCwgc28gdGhpcyBuZXZlcgorCSAqIGZpcmVzIGZvciB0 aGVtLgorCSAqLworCWlmIChob3RfbW9kZSA9PSBIRUFQX0hFQVBfT05MWV9VUERBVEUgJiYK KwkJKG9sZHR1cC50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQp ICE9IDApCisJCWhvdF9tb2RlID0gSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFOworCisJ LyoKKwkgKiBBIEhPVC1pbmRleGVkIHVwZGF0ZSBhcHBlbmRzIGEgZml4ZWQtc2l6ZSBpbmxp bmUtdHJhaWxpbmcKKwkgKiBtb2RpZmllZC1hdHRycyBiaXRtYXAgdG8gdGhlIG5ldyB0dXBs ZSAoc2VlIGFjY2Vzcy9ob3RfaW5kZXhlZC5oKS4KKwkgKiBSZXNlcnZlIHJvb20gZm9yIGl0 IGluIHRoZSBwYWdlLWZpdCBjYWxjdWxhdGlvbiBub3csIHdoaWxlIHdlIHN0aWxsCisJICog bWlnaHQgdGFrZSB0aGUgc2FtZS1wYWdlIEhPVCBwYXRoOyBpZiB0aGUgdXBkYXRlIGxhdGVy IGRyb3BzIHRvIG5vbi1IT1QKKwkgKiAodGhlIHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUg cGFnZSkgaXQgaXMgc3RvcmVkIHdpdGhvdXQgdGhlIGJpdG1hcCBhbmQKKwkgKiB0aGUgcmVz ZXJ2YXRpb24gaXMgc2ltcGx5IGNvbnNlcnZhdGl2ZS4KKwkgKi8KKwlpZiAoaG90X21vZGUg PT0gSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFKQorCQloaV9ibWJ5dGVzID0gSG90SW5k ZXhlZEJpdG1hcEJ5dGVzKFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9u KSk7CisJbmV3dHVwc2l6ZSA9IE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4gKyBoaV9ibWJ5dGVz KTsKKwogCWlmIChuZWVkX3RvYXN0IHx8IG5ld3R1cHNpemUgPiBwYWdlZnJlZSkKIAl7CiAJ CVRyYW5zYWN0aW9uSWQgeG1heF9sb2NrX29sZF90dXBsZTsKQEAgLTM4OTEsNyArMzk1MSw3 IEBAIGwyOgogCQl7CiAJCQkvKiBOb3RlIHdlIGFsd2F5cyB1c2UgV0FMIGFuZCBGU00gZHVy aW5nIHVwZGF0ZXMgKi8KIAkJCWhlYXB0dXAgPSBoZWFwX3RvYXN0X2luc2VydF9vcl91cGRh dGUocmVsYXRpb24sIG5ld3R1cCwgJm9sZHR1cCwgMCk7Ci0JCQluZXd0dXBzaXplID0gTUFY QUxJR04oaGVhcHR1cC0+dF9sZW4pOworCQkJbmV3dHVwc2l6ZSA9IE1BWEFMSUdOKGhlYXB0 dXAtPnRfbGVuICsgaGlfYm1ieXRlcyk7CiAJCX0KIAkJZWxzZQogCQkJaGVhcHR1cCA9IG5l d3R1cDsKQEAgLTM5OTIsMTAgKzQwNTIsMTAgQEAgbDI6CiAJewogCQkvKgogCQkgKiBTaW5j ZSB0aGUgbmV3IHR1cGxlIGlzIGdvaW5nIGludG8gdGhlIHNhbWUgcGFnZSwgd2UgbWlnaHQg YmUgYWJsZQotCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBDaGVjayBpZiBhbnkgb2YgdGhl IGluZGV4IGNvbHVtbnMgaGF2ZSBiZWVuCi0JCSAqIGNoYW5nZWQuCisJCSAqIHRvIGRvIGEg SE9UIHVwZGF0ZS4gIENoZWNrIGlmIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSBoYXMKKwkJ ICogc2FuY3Rpb25lZCBpdCAoSEVBUF9IRUFQX09OTFlfVVBEQVRFIG9yIEhFQVBfU0VMRUNU SVZFX0lOREVYX1VQREFURSkuCiAJCSAqLwotCQlpZiAoaG90X2FsbG93ZWQpCisJCWlmICho b3RfbW9kZSAhPSBIRUFQX1VQREFURV9BTExfSU5ERVhFUykKIAkJCXVzZV9ob3RfdXBkYXRl ID0gdHJ1ZTsKIAl9CiAJZWxzZQpAQCAtNDAwNCw2ICs0MDY0LDI3IEBAIGwyOgogCQlQYWdl U2V0RnVsbChwYWdlKTsKIAl9CiAKKwkvKgorCSAqIEZvciBhIHNhbWUtcGFnZSBIT1QtaW5k ZXhlZCB1cGRhdGUsIHJlcGxhY2UgaGVhcHR1cCB3aXRoIGEgY29weSB0aGF0CisJICogY2Fy cmllcyB0aGUgaW5saW5lLXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCAoYW5kCisJ ICogSEVBUF9JTkRFWEVEX1VQREFURUQpLiAgRG9uZSBoZXJlLCBvdXRzaWRlIHRoZSBjcml0 aWNhbCBzZWN0aW9uLAorCSAqIGJlY2F1c2UgaXQgYWxsb2NhdGVzOyB0aGUgYml0bWFwJ3Mg c2l6ZSB3YXMgcmVzZXJ2ZWQgaW4gbmV3dHVwc2l6ZQorCSAqIGFib3ZlLiAgT25seSB0aGUg c3RvcmVkIHR1cGxlIChoZWFwdHVwKSBnZXRzIHRoZSBiaXRtYXAgYW5kIHRoZSBmbGFnOwor CSAqIHRoZSBjYWxsZXIncyBuZXd0dXAgbXVzdCBOT1QgYmUgbWFya2VkIEhFQVBfSU5ERVhF RF9VUERBVEVELCBiZWNhdXNlIGl0CisJICogaGFzIG5vIHRyYWlsaW5nIGJpdG1hcCAtLSBz ZWUgdGhlIGZsYWcgaGFuZGxpbmcgYmVsb3cuCisJICovCisJaWYgKHVzZV9ob3RfdXBkYXRl ICYmIGhvdF9tb2RlID09IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSkKKwl7CisJCUhl YXBUdXBsZQlleHQ7CisKKwkJZXh0ID0gaGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlKGhl YXB0dXAsCisJCQkJCQkJCQkJICBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWxh dGlvbiksCisJCQkJCQkJCQkJICBtb2RpZmllZF9pZHhfYXR0cnMpOworCQlpZiAoaGVhcHR1 cCAhPSBuZXd0dXApCisJCQloZWFwX2ZyZWV0dXBsZShoZWFwdHVwKTsKKwkJaGVhcHR1cCA9 IGV4dDsKKwl9CisKIAkvKgogCSAqIENvbXB1dGUgcmVwbGljYSBpZGVudGl0eSB0dXBsZSBi ZWZvcmUgZW50ZXJpbmcgdGhlIGNyaXRpY2FsIHNlY3Rpb24gc28KIAkgKiB3ZSBkb24ndCBQ QU5JQyB1cG9uIGEgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4KQEAgLTQwNDAsNiArNDEy MSwyOSBAQCBsMjoKIAkJSGVhcFR1cGxlU2V0SGVhcE9ubHkoaGVhcHR1cCk7CiAJCS8qIE1h cmsgdGhlIGNhbGxlcidzIGNvcHkgdG9vLCBpbiBjYXNlIGRpZmZlcmVudCBmcm9tIGhlYXB0 dXAgKi8KIAkJSGVhcFR1cGxlU2V0SGVhcE9ubHkobmV3dHVwKTsKKworCQkvKgorCQkgKiBG b3IgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIHRoZSBuZXcgbGl2ZSB0dXBsZSBjYXJyaWVzCisJ CSAqIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNvIGluZGV4IHNjYW5zIHdhbGtpbmcgdGhlIGNo YWluIGtub3cgaXQgaXMgYQorCQkgKiBIT1QtaW5kZXhlZCBob3AgY2FycnlpbmcgYW4gaW5s aW5lLXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4KKwkJICoKKwkJICogU2V0IHRo ZSBmbGFnIG9ubHkgb24gaGVhcHR1cCwgdGhlIHZlcnNpb24gYWN0dWFsbHkgc3RvcmVkIG9u IHRoZQorCQkgKiBwYWdlOiBoZWFwdHVwIGNhcnJpZXMgdGhlIHRyYWlsaW5nIGJpdG1hcCwg c28gdGhlIGZsYWcncyBwcm9taXNlIChhCisJCSAqIGJpdG1hcCBvY2N1cGllcyB0aGUgZmlu YWwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSBieXRlcyBvZiB0aGUKKwkJICogaXRl bSkgaG9sZHMuICBUaGUgY2FsbGVyJ3MgbmV3dHVwIGlzIGEgc2VwYXJhdGUgaW4tbWVtb3J5 IHR1cGxlCisJCSAqIHdob3NlIHRfbGVuIGRvZXMgbm90IGluY2x1ZGUgdGhlIGJpdG1hcDsg bWFya2luZyBpdAorCQkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCB3b3VsZCBhc3NlcnQgYSB0 cmFpbGluZyBiaXRtYXAgdGhhdCBpcyBub3QKKwkJICogdGhlcmUsIHNvIGFueSBsYXRlciBy ZWFkZXIgdXNpbmcgSXRlbUlkR2V0TGVuZ3RoKCktcmVsYXRpdmUgYWNjZXNzCisJCSAqIHdv dWxkIG1pc3JlYWQgYXR0cmlidXRlIGRhdGEgYXMgdGhlIGJpdG1hcC4gIFdlIHRoZXJlZm9y ZSBsZWF2ZQorCQkgKiBuZXd0dXAncyBmbGFnIGNsZWFyLiAgTm90aGluZyByZWFkcyB0aGUg bW9kaWZpZWQtYXR0cnMgYml0bWFwIG9mZiBhbgorCQkgKiBpbi1tZW1vcnkgdHVwbGU7IGV2 ZXJ5IGNvbnN1bWVyIHJlYWRzIGl0IGZyb20gdGhlIHBhZ2UgdmlhIHRoZSBsaW5lCisJCSAq IHBvaW50ZXIncyBsZW5ndGguCisJCSAqLworCQlpZiAoaG90X21vZGUgPT0gSEVBUF9TRUxF Q1RJVkVfSU5ERVhfVVBEQVRFKQorCQl7CisJCQloZWFwdHVwLT50X2RhdGEtPnRfaW5mb21h c2syIHw9IEhFQVBfSU5ERVhFRF9VUERBVEVEOworCQkJaG90X2luZGV4ZWQgPSB0cnVlOwor CQl9CiAJfQogCWVsc2UKIAl7CkBAIC00MTQ0LDcgKzQyNDgsOCBAQCBsMjoKIAlpZiAoaGF2 ZV90dXBsZV9sb2NrKQogCQlVbmxvY2tUdXBsZVR1cGxvY2socmVsYXRpb24sICYob2xkdHVw LnRfc2VsZiksIGxvY2ttb2RlKTsKIAotCXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShyZWxh dGlvbiwgdXNlX2hvdF91cGRhdGUsIG5ld2J1ZiAhPSBidWZmZXIpOworCXBnc3RhdF9jb3Vu dF9oZWFwX3VwZGF0ZShyZWxhdGlvbiwgdXNlX2hvdF91cGRhdGUsIGhvdF9pbmRleGVkLAor CQkJCQkJCSBuZXdidWYgIT0gYnVmZmVyKTsKIAogCS8qCiAJICogSWYgaGVhcHR1cCBpcyBh IHByaXZhdGUgY29weSwgcmVsZWFzZSBpdC4gIERvbid0IGZvcmdldCB0byBjb3B5IHRfc2Vs ZgpAQCAtNDI5MCw3ICs0Mzk1LDcgQEAgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFwVHVw bGUgb2xkdHVwKQogCiAvKgogICogQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUn cyB2YWx1ZXMgYXJlIHRoZSBzYW1lLiAgU3Vicm91dGluZSBmb3IKLSAqIEhlYXBEZXRlcm1p bmVDb2x1bW5zSW5mby4KKyAqIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzLgogICovCiBz dGF0aWMgYm9vbAogaGVhcF9hdHRyX2VxdWFscyhUdXBsZURlc2MgdHVwZGVzYywgaW50IGF0 dHJudW0sIERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUyLApAQCAtNDMzNCw2MyArNDQzOSwx MDMgQEAgaGVhcF9hdHRyX2VxdWFscyhUdXBsZURlc2MgdHVwZGVzYywgaW50IGF0dHJudW0s IERhdHVtIHZhbHVlMSwgRGF0dW0gdmFsdWUyLAogfQogCiAvKgotICogSE9UIHVwZGF0ZXMg YXJlIHBvc3NpYmxlIHdoZW4gZWl0aGVyOiBhKSB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5k ZXhlZAotICogYXR0cmlidXRlcywgb3IgYikgdGhlIG1vZGlmaWVkIGF0dHJpYnV0ZXMgYXJl IGFsbCBvbiBzdW1tYXJpemluZyBpbmRleGVzLgotICogTGF0ZXIsIGluIGhlYXBfdXBkYXRl KCksIHdlIGNhbiBjaG9vc2UgdG8gcGVyZm9ybSBhIEhPVCB1cGRhdGUgaWYgdGhlcmUgaXMK LSAqIHNwYWNlIG9uIHRoZSBwYWdlIGZvciB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgZm9sbG93 aW5nIGNvZGUgaGFzIGRldGVybWluZWQKLSAqIHRoYXQgSE9UIGlzIGFsbG93ZWQuCisgKiBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlIC0tCisgKgorICogQ2xhc3NpZnkgYW4gVVBEQVRFIGZv ciBIT1QgZWxpZ2liaWxpdHkgZnJvbSB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcwor ICogaXQgY2hhbmdlZCAobW9kaWZpZWRfaWR4X2F0dHJzLCBjb21wdXRlZCBieSB0aGUgZXhl Y3V0b3IpOgorICoKKyAqICAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgICBIT1QgaXMgbm90 IHBlcm1pdHRlZDsgdGhlIG5ldyB0dXBsZSBnb2VzIG9uIGEKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcmVzaCBUSUQgYW5kIGV2ZXJ5IGluZGV4IGdldHMgYSBuZXcgZW50 cnkuCisgKiAgIEhFQVBfSEVBUF9PTkxZX1VQREFURSAgICAgQ2xhc3NpYyBIT1Q6IG5vIG5v bi1zdW1tYXJpemluZyBpbmRleGVkCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXR0cmlidXRlIGNoYW5nZWQsIHNvIG5vIGluZGV4IG5lZWRzIGEgbmV3CisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW50cnkgYW5kIHRoZSBuZXcgdHVwbGUgam9pbnMgdGhl IGNoYWluIHZpYSBhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdF9jdGlkIGZv cndhcmQgbGluay4KKyAqICAgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFIEhPVCB3aXRo IHNlbGVjdGl2ZSBpbmRleCB1cGRhdGU6IGF0IGxlYXN0IG9uZQorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5vbi1zdW1tYXJpemluZyBpbmRleCdzIGF0dHJpYnV0ZSBjaGFu Z2VkLCBidXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmV3IHR1cGxl IGNhbiBzdGlsbCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGUgc2FtZSBwYWdlOyBvbmx5IHRoZSBpbmRleGVzIHdob3NlCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyBjaGFuZ2VkIHJlY2VpdmUg YSBuZXcgZW50cnkuCisgKgorICogVGhpcyByb3V0aW5lIG9ubHkgY2xhc3NpZmllcyB0aGUg dXBkYXRlOyBoZWFwX3VwZGF0ZSgpIHBlcmZvcm1zIGl0IGFuZCBtYXkKKyAqIHN0aWxsIGZh bGwgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlIHdoZW4gdGhlIG5ldyB0dXBsZSBkb2VzIG5v dCBmaXQgb24gdGhlCisgKiBwYWdlLCBleGFjdGx5IGFzIGZvciBjbGFzc2ljIEhPVC4KICAq LwotYm9vbAotSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCSAgIGJvb2wgKnN1bW1h cml6ZWRfb25seSkKK0hlYXBVcGRhdGVJbmRleE1vZGUKK0hlYXBVcGRhdGVIb3RBbGxvd2Fi bGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0 dHJzKQogewotCWJvb2wJCWhvdF9hbGxvd2VkOworCWNvbnN0IEJpdG1hcHNldCAqYWxsX2lk eF9hdHRyczsKIAogCS8qCi0JICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2Zm IGJ5IGFzc3VtaW5nIHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKLQkgKiBuZWVkIHVwZGF0 aW5nIGFuZCBIT1QgaXMgYWxsb3dhYmxlLgorCSAqIENhc2UgKGEpOiBubyBpbmRleGVkIGF0 dHJpYnV0ZSB3YXMgbW9kaWZpZWQgLT4gY2xhc3NpYyBIT1QuCiAJICovCi0JaG90X2FsbG93 ZWQgPSB0cnVlOwotCSpzdW1tYXJpemVkX29ubHkgPSBmYWxzZTsKKwlpZiAoYm1zX2lzX2Vt cHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCisJCXJldHVybiBIRUFQX0hFQVBfT05MWV9VUERB VEU7CiAKIAkvKgotCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hlbiB0aGVyZSBhcmUgbm8g bW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKLQkgKiBhbGxvd2VkLgorCSAqIENh c2UgKGIpOiBhdCBsZWFzdCBvbmUgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdlZC4gIElmIGFs bCBvZiB0aGVtIGFyZQorCSAqIHVzZWQgb25seSBieSBzdW1tYXJpemluZyBpbmRleGVzLCB3 ZSBjYW4gc3RpbGwgdGFrZSB0aGUgY2xhc3NpYyBIT1QKKwkgKiBwYXRoIC0tIHRoZSBzdW1t YXJpemluZyBpbmRleCBBTSBnZXRzIGEgbmV3IGVudHJ5IHZpYSBhbWluc2VydCBhbmQgbm8K KwkgKiBub24tc3VtbWFyaXppbmcgaW5kZXggbmVlZHMgdG8gY2hhbmdlLgogCSAqLwotCWlm IChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkKLQkJaG90X2FsbG93ZWQgPSB0 cnVlOwotCWVsc2UKLQl7Ci0JCUJpdG1hcHNldCAgKnN1bV9hdHRycyA9IFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRS X0JJVE1BUF9TVU1NQVJJWkVEKTsKKwlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhf YXR0cnMsIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJ CQkJCQkJCQkJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCkpKQorCQlyZXR1cm4gSEVB UF9IRUFQX09OTFlfVVBEQVRFOwogCi0JCS8qCi0JCSAqIEF0IGxlYXN0IG9uZSBpbmRleCBh dHRyaWJ1dGUgd2FzIG1vZGlmaWVkLCBidXQgaXMgdGhpcyBjYXNlIChiKQotCQkgKiB3aGVy ZSBhbGwgdGhlIG1vZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgYXJlIG9ubHkgdXNlZCBieQot CQkgKiBzdW1tYXJpemluZyBpbmRleGVzPyAgSWYgaXQgaXMsIHRoZW4gd2UgbmVlZCB0byB1 cGRhdGUgdGhvc2UKLQkJICogaW5kZXhlcywgYnV0IHRoaXMgdXBkYXRlIGNhbiBzdGlsbCBi ZSBjb25zaWRlcmVkIGhlYXAtb25seSAoSE9UKQotCQkgKiBhbmQgYXZvaWQgdXBkYXRpbmcg YW55IG5vbi1zdW1tYXJpemluZyBpbmRleGVzIG9uIHRoZSByZWxhdGlvbi4KLQkJICovCi0J CWlmIChibXNfaXNfc3Vic2V0KG1vZGlmaWVkX2lkeF9hdHRycywgc3VtX2F0dHJzKSkKLQkJ ewotCQkJaG90X2FsbG93ZWQgPSB0cnVlOwotCQkJKnN1bW1hcml6ZWRfb25seSA9IHRydWU7 Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogTm93IHdlIGtub3cgYSkgb25lIG9y IG1vcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIHdlcmUgbW9kaWZpZWQKLQkJCSAqIChjaGFuZ2Vk IHZhbHVlLCBub3QganVzdCByZWZlcmVuY2VkIHdpdGhpbiB0aGUgVVBEQVRFKSBhbmQgdGhh dAotCQkJICogYikgYXQgbGVhc3Qgb25lIG9mIHRob3NlIGF0dHJpYnV0ZXMgaXMgdXNlZCBi eSBhCi0JCQkgKiBub24tc3VtbWFyaXppbmcgaW5kZXguIEhPVCBpcyBub3QgYWxsb3dlZC4K LQkJCSAqLwotCQkJaG90X2FsbG93ZWQgPSBmYWxzZTsKLQkJfQorCS8qCisJICogQSBub24t c3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdlZC4gIEhPVC1pbmRleGVkIGlz IHN1cHBvcnRlZAorCSAqIHdoZW5ldmVyIHRoZSByZWxhdGlvbiBjYW4gdG9sZXJhdGUgZXh0 cmEgaW5kZXggZW50cmllcyBpbiBhIGNoYWluIHdob3NlCisJICogcGVyLWNoYWluLW1lbWJl ciBrZXlzIG1heSBkaWZmZXIuICBUaGUgbG9naWNhbC1yZXBsaWNhdGlvbiBhcHBseSBwYXRo CisJICogaXMgZ2F0ZWQgYWJvdmUgYnkgaG90X2luZGV4ZWRfb25fYXBwbHkuICBUaGUgcmVt YWluaW5nCisJICogSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgZmFsbGJhY2tzIGFyZToKKwkg KgorCSAqIC0gQW4gVVBEQVRFIHRoYXQgbW9kaWZpZXMgYW4gYXR0cmlidXRlIHJlZmVyZW5j ZWQgYnkgYW4gZXhwcmVzc2lvbgorCSAqIGluZGV4LiAgU2VsZWN0aXZlIG1haW50ZW5hbmNl IG9mIGFuIGV4cHJlc3Npb24gaW5kZXggcmVxdWlyZXMKKwkgKiBldmFsdWF0aW5nIHRoZSBp bmRleGVkIGV4cHJlc3Npb24gdG8gZGVjaWRlIHdoZXRoZXIgaXRzIHZhbHVlIChoZW5jZQor CSAqIGl0cyBlbnRyeSkgY2hhbmdlZDsgdGhhdCBleHByZXNzaW9uLWF3YXJlIHBhdGggaXMg bm90IGltcGxlbWVudGVkIHlldCwKKwkgKiBzbyBzdWNoIGFuIHVwZGF0ZSBmYWxscyBiYWNr IHRvIG5vbi1IT1QuICBVcGRhdGVzIHRoYXQgZG8gbm90IHRvdWNoIGFueQorCSAqIGV4cHJl c3Npb24taW5kZXggYXR0cmlidXRlIHN0YXkgZWxpZ2libGUuCisJICoKKwkgKiAtIEFuIFVQ REFURSB0aGF0IG1vZGlmaWVzIGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIG9mIHRoZSByZWxh dGlvbi4KKwkgKiBIT1QtaW5kZXhlZCBvbmx5IHBheXMgb2ZmIHdoZW4gaXQgY2FuIHNraXAg bWFpbnRhaW5pbmcgYXQgbGVhc3Qgb25lCisJICogaW5kZXggd2hvc2Uga2V5IGRpZCBub3Qg Y2hhbmdlOyBpZiBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzIGNoYW5nZWQgdGhlcmUKKwkgKiBp cyBub3RoaW5nIHRvIHNraXAsIHNvIGEgcGxhaW4gbm9uLUhPVCB1cGRhdGUgaXMgY2hlYXBl ciAoaXQgYXZvaWRzIHRoZQorCSAqIGNoYWluLXdhbGsgYW5kIGJpdG1hcC1vdmVybGFwIG92 ZXJoZWFkKS4KKwkgKi8KKwlhbGxfaWR4X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQ X0lOREVYRUQpOwogCi0JCWJtc19mcmVlKHN1bV9hdHRycyk7Ci0JfQorCS8qCisJICogU3lz dGVtIGNhdGFsb2dzIGtlZXAgY2xhc3NpYyBIT1QgKGFuIFVQREFURSB0b3VjaGluZyBubyBu b24tc3VtbWFyaXppbmcKKwkgKiBpbmRleGVkIGF0dHJpYnV0ZSBhbHJlYWR5IHJldHVybmVk IEhFQVBfSEVBUF9PTkxZX1VQREFURSBhYm92ZSksIGJ1dCBkbworCSAqIE5PVCB0YWtlIHRo ZSBIT1QtaW5kZXhlZCBwYXRoOiBjYXRhbG9nIHJlYWRzIGdvIHRocm91Z2ggbWFueSBjb2Rl IHBhdGhzCisJICogKHN5c3RhYmxlIGluZGV4IHNjYW5zLCBTbmFwc2hvdERpcnR5IHVuaXF1 ZSBjaGVja3MsIHNlcXNjYW5zIGluCisJICogb3JkZXJpbmdzIHRoZSBjaGFpbi13YWxrIGRl ZHVwIGRvZXMgbm90IGNvdmVyKSB0aGF0IGFyZSBub3QgYWxsIHByb3ZlbgorCSAqIHNhZmUg YWdhaW5zdCBzdGFsZSBjaGFpbiBlbnRyaWVzLiAgRmFsbGluZyBiYWNrIHRvIGEgbm9uLUhP VCB1cGRhdGUKKwkgKiBoZXJlIGlzIGV4YWN0bHkgdGhlIHByZS1IT1QtaW5kZXhlZCBiZWhh dmlvdXIgZm9yIHN1Y2ggY2F0YWxvZyB1cGRhdGVzLgorCSAqLworCWlmIChJc0NhdGFsb2dS ZWxhdGlvbihyZWxhdGlvbikpCisJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsK IAotCXJldHVybiBob3RfYWxsb3dlZDsKKwkvKgorCSAqIERpc3F1YWxpZnkgd2hlbiB0aGUg dXBkYXRlIHRvdWNoZXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZWQgYnkgYW4KKwkgKiBleHBy ZXNzaW9uIGluZGV4IChzZWUgY2FzZSAxIGFib3ZlKS4gIFVwZGF0ZXMgdGhhdCBsZWF2ZSBl dmVyeQorCSAqIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRlIHVuY2hhbmdlZCByZW1haW4g ZWxpZ2libGUuCisJICovCisJaWYgKGJtc19vdmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywK KwkJCQkJUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJ CQkJCQkJCQkJIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04pKSkKKwkJcmV0dXJuIEhF QVBfVVBEQVRFX0FMTF9JTkRFWEVTOworCisJLyoKKwkgKiBJZiBldmVyeSBpbmRleGVkIGF0 dHJpYnV0ZSBjaGFuZ2VkLCBhIEhPVC1zZWxlY3RpdmUgdXBkYXRlIGNvdWxkIG5vdAorCSAq IHNraXAgYW55IGluZGV4IC0tIGVhY2ggaW5kZXggbmVlZHMgYSBmcmVzaCBlbnRyeSBhbnl3 YXkgLS0gc28gaXQgd291bGQKKwkgKiBwYXkgdGhlIEhPVC9TSVUgY2hhaW4td2FsayBhbmQg Yml0bWFwLW92ZXJsYXAgb3ZlcmhlYWQgZm9yIG5vIHNhdmVkCisJICogaW5kZXggbWFpbnRl bmFuY2UuICBGYWxsIGJhY2sgdG8gYSBwbGFpbiBub24tSE9UIHVwZGF0ZSBpbiB0aGF0IGNh c2UuCisJICovCisJaWYgKGJtc19pc19zdWJzZXQoYWxsX2lkeF9hdHRycywgbW9kaWZpZWRf aWR4X2F0dHJzKSkKKwkJcmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOworCisJcmV0 dXJuIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURTsKIH0KIAogLyoKQEAgLTQ0MDIsMTUg KzQ1NDcsMzMgQEAgTG9ja1R1cGxlTW9kZQogSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2Rl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRy cykKIHsKIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOwor CWNvbnN0IEJpdG1hcHNldCAqa2V5X2F0dHJzOworCisJLyoKKwkgKiBDb21tb24gZmFzdCBw YXRoOiB3aGVuIG5vIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQgKGUuZy4gcGdiZW5jaC1z dHlsZQorCSAqICJVUERBVEUgdCBTRVQgbm9uX2lkeF9jb2wgPSAuLi4iIG9yIHRoZSB3aWRl XzAgIlVQREFURSB0IFNFVCBpZCA9IGlkIgorCSAqIHdvcmtsb2FkIGFmdGVyIHRoZSBleGVj dXRvcidzIGZhc3QgcGF0aCBpbiBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyksCisJICog bW9kaWZpZWRfaWR4X2F0dHJzIGlzIGVtcHR5IGFuZCBhIGtleSBjb2x1bW4gY2Fubm90IGhh dmUgY2hhbmdlZC4gIFNraXAKKwkgKiB0aGUgcmVsY2FjaGUgbG9va3VwIGFuZCByZXR1cm4g dGhlIHdlYWtlciBsb2NrIGltbWVkaWF0ZWx5LiAgQXQgaGlnaAorCSAqIFRQUyB0aGlzIGF2 b2lkcyBhIHBlci1VUERBVEUgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAgY2FsbCAoYW5k IGl0cworCSAqIGJtc19jb3B5KSBvbiB0aGUgS0VZIGJpdG1hcC4KKwkgKi8KKwlpZiAoYm1z X2lzX2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCisJCXJldHVybiBMb2NrVHVwbGVOb0tl eUV4Y2x1c2l2ZTsKIAotCUJpdG1hcHNldCAgKmtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklU TUFQX0tFWSk7CisJLyoKKwkgKiBCb3Jyb3cgdGhlIGNhY2hlZCBiaXRtYXAgcmF0aGVyIHRo YW4gY29weWluZyBpdDsgd2Ugb25seSB0ZXN0IG92ZXJsYXAKKwkgKiBhbmQgbmV2ZXIgbXV0 YXRlIG9yIGZyZWUga2V5X2F0dHJzLiAgSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlIHJ1 bnMKKwkgKiB3aXRob3V0IGJ1ZmZlciBsb2NrcyBidXQgdGhlIHJlbGNhY2hlIGVudHJ5IGlz IHBpbm5lZCBieSB0aGUgY2FsbGVyJ3MKKwkgKiBsb2NrIG9uIHRoZSByZWxhdGlvbiwgYW5k IHdlIHRvdWNoIG5vdGhpbmcgYmV0d2VlbiBmZXRjaCBhbmQgdGhlCisJICogYm1zX292ZXJs YXAgdGhhdCBjb3VsZCB0cmlnZ2VyIGEgcmVsY2FjaGUgaW52YWxpZGF0aW9uLgorCSAqLwor CWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9u LAorCQkJCQkJCQkJCQkJIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CiAKIAlpZiAoIWJtc19v dmVybGFwKG1vZGlmaWVkX2lkeF9hdHRycywga2V5X2F0dHJzKSkKIAkJbG9ja21vZGUgPSBM b2NrVHVwbGVOb0tleUV4Y2x1c2l2ZTsKIAotCWJtc19mcmVlKGtleV9hdHRycyk7Ci0KIAly ZXR1cm4gbG9ja21vZGU7CiB9CiAKQEAgLTQ0OTUsNiArNDY1OCw3MSBAQCBIZWFwVXBkYXRl TW9kaWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cCwg SGVhcFR1cGxlIG5ld3R1cAogCXJldHVybiBtb2RpZmllZF9pZHhfYXR0cnM7CiB9CiAKKy8q CisgKiBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUKKyAqCisgKiBSZXR1cm4gYSBuZXds eSBwYWxsb2MnZCBjb3B5IG9mIHR1cCB0aGF0IGNhcnJpZXMgdGhlIGZpeGVkLXNpemUKKyAq IGlubGluZS10cmFpbGluZyBtb2RpZmllZC1hdHRyaWJ1dGVzIGJpdG1hcCAoc2VlIGFjY2Vz cy9ob3RfaW5kZXhlZC5oKSwKKyAqIHdpdGggSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0LiAg VGhlIGJpdG1hcCByZWNvcmRzIHRoZSB1c2VyIGF0dHJpYnV0ZXMgaW4KKyAqIG1vZGlmaWVk X2lkeF9hdHRycyAodGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGlzIFVQREFURSBjaGFuZ2Vk LCB1c2luZyB0aGUKKyAqIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgb2Zm c2V0IGNvbnZlbnRpb24pOyBhbiBlbXB0eSBzZXQgeWllbGRzCisgKiBhbiBhbGwtemVybyBi aXRtYXAsIHdoaWNoIGlzIGNvcnJlY3QgZm9yIHRoZSBjaGFpbi11bmlmb3JtaXR5IHByb21v dGlvbiBvZgorICogYSBjbGFzc2ljLUhPVCB1cGRhdGUgb24gYW4gYWxyZWFkeS1IT1QtaW5k ZXhlZCBjaGFpbi4KKyAqCisgKiBUaGUgYml0bWFwIG9jY3VwaWVzIHRoZSBmaW5hbCBIb3RJ bmRleGVkQml0bWFwQnl0ZXMobmF0dHMpIGJ5dGVzIG9mIHRoZQorICogdHVwbGUsIHdoZXJl IG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93biBhdHRyaWJ1dGUgY291bnQKKyAqIChIZWFwVHVw bGVIZWFkZXJHZXROYXR0cykgLS0gd2hpY2ggYSByZWFkZXIgcmVjb3ZlcnMgZnJvbSB0aGUg c3RvcmVkIHR1cGxlLAorICogc28gdGhlIGJpdG1hcCBzdGF5cyBsb2NhdGFibGUgZXZlbiBh ZnRlciB0aGUgcmVsYXRpb24ncyBuYXR0cyBsYXRlciBncm93cworICogdmlhIEFERCBDT0xV TU4uICBGb3IgYSBmcmVzaGx5IGZvcm1lZCBVUERBVEUgdHVwbGUgdGhpcyBlcXVhbHMgdGhl CisgKiByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHM7IHdlIGFzc2VydCB0aGF0IHRvIGNhdGNo IGFueSBmdXR1cmUgZGl2ZXJnZW5jZS4KKyAqIFRoZSBiaXRtYXAgc2l0cyBwYXN0IHRoZSBh dHRyaWJ1dGUgZGF0YSwgc28gaGVhcF9kZWZvcm1fdHVwbGUgbmV2ZXIgc2VlcworICogaXQu ICBUaGUgY2FsbGVyIG11c3QgaGF2ZSByZXNlcnZlZCByb29tIGZvciB0aGUgZXh0cmEgYnl0 ZXMgaW4gdGhlIHBhZ2UtZml0CisgKiBjYWxjdWxhdGlvbiwgYW5kIG11c3QgZnJlZSB0aGUg cmV0dXJuZWQgdHVwbGUuCisgKi8KK3N0YXRpYyBIZWFwVHVwbGUKK2hlYXBfZm9ybV9ob3Rf aW5kZXhlZF90dXBsZShIZWFwVHVwbGUgdHVwLCBpbnQgcmVsbmF0dHMsCisJCQkJCQkJY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCit7CisJaW50CQkJbmF0dHMgPSBI ZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXAtPnRfZGF0YSk7CisJU2l6ZQkJYm1ieXRlczsK KwlTaXplCQluZXdsZW47CisJSGVhcFR1cGxlCW5ld3R1cGxlOworCXVpbnQ4CSAgICpiaXRt YXA7CisJaW50CQkJeCA9IC0xOworCisJLyoKKwkgKiBUaGUgYml0bWFwIGlzIHNpemVkIGFu ZCBsb2NhdGVkIGJ5IHRoZSB0dXBsZSdzIG93biBuYXR0czsgYSBmcmVzaGx5CisJICogZm9y bWVkIFVQREFURSB0dXBsZSBjYXJyaWVzIHRoZSBmdWxsIHJlbGF0aW9uIG5hdHRzLiAgSWYg dGhlc2UgZXZlcgorCSAqIGRpdmVyZ2UgdGhlIHBhZ2UtZml0IHJlc2VydmF0aW9uIChtYWRl IHdpdGggcmVsbmF0dHMpIGFuZCB0aGUgYWN0dWFsCisJICogYml0bWFwIHNpemUgd291bGQg ZGlzYWdyZWUuCisJICovCisJQXNzZXJ0KG5hdHRzID09IHJlbG5hdHRzKTsKKwlibWJ5dGVz ID0gSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKTsKKwluZXdsZW4gPSB0dXAtPnRfbGVu ICsgYm1ieXRlczsKKworCW5ld3R1cGxlID0gKEhlYXBUdXBsZSkgcGFsbG9jMChIRUFQVFVQ TEVTSVpFICsgbmV3bGVuKTsKKwluZXd0dXBsZS0+dF9sZW4gPSBuZXdsZW47CisJbmV3dHVw bGUtPnRfc2VsZiA9IHR1cC0+dF9zZWxmOworCW5ld3R1cGxlLT50X3RhYmxlT2lkID0gdHVw LT50X3RhYmxlT2lkOworCW5ld3R1cGxlLT50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSAo KGNoYXIgKikgbmV3dHVwbGUgKyBIRUFQVFVQTEVTSVpFKTsKKworCS8qIGNvcHkgdGhlIG9y aWdpbmFsIHR1cGxlOyB0aGUgdHJhaWxpbmcgYml0bWFwIGJ5dGVzIHN0YXkgemVybyAqLwor CW1lbWNweShuZXd0dXBsZS0+dF9kYXRhLCB0dXAtPnRfZGF0YSwgdHVwLT50X2xlbik7CisJ bmV3dHVwbGUtPnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gSEVBUF9JTkRFWEVEX1VQREFURUQ7 CisKKwliaXRtYXAgPSBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXBSVyhuZXd0dXBsZS0+ dF9kYXRhLCBuZXdsZW4sIG5hdHRzKTsKKwl3aGlsZSAoKHggPSBibXNfbmV4dF9tZW1iZXIo bW9kaWZpZWRfaWR4X2F0dHJzLCB4KSkgPj0gMCkKKwl7CisJCUF0dHJOdW1iZXIJYXR0bnVt ID0geCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJLyogb25s eSB1c2VyIGF0dHJpYnV0ZXMgY2FuIGJlIG1vZGlmaWVkLWFuZC1pbmRleGVkICovCisJCWlm IChhdHRudW0gPj0gMSkKKwkJCUhvdEluZGV4ZWRTZXRBdHRyTW9kaWZpZWQoYml0bWFwLCBh dHRudW0pOworCX0KKworCXJldHVybiBuZXd0dXBsZTsKK30KKwogLyoKICAqCXNpbXBsZV9o ZWFwX3VwZGF0ZSAtIHJlcGxhY2UgYSB0dXBsZQogICoKQEAgLTQ1MDUsNyArNDczMyw3IEBA IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVw bGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwCiAgKi8KIHZvaWQKIHNpbXBsZV9oZWFwX3Vw ZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBI ZWFwVHVwbGUgdHVwLAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KQorCQkJCSAgIGJvb2wgKnVwZGF0ZV9hbGxfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVz dWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CkBAIC00NTE0LDEzICs0NzQyLDE0IEBAIHNp bXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJE YXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpi c2xvdDsKIAlIZWFwVHVwbGUJb2xkdHVwOwogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwot CUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKLQlib29sCQlob3RfYWxsb3dlZCwK LQkJCQlzdW1tYXJpemVkX29ubHk7CisJQml0bWFwc2V0ICAqbG9jYWxfbW9kaWZpZWRfaWR4 X2F0dHJzOworCUhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJQnVmZmVyCQlidWZm ZXI7CiAKIAlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKIAorCSp1cGRhdGVf YWxsX2luZGV4ZXMgPSBmYWxzZTsKKwogCS8qCiAJICogVG8gdXBkYXRlIGEgaGVhcCB0dXBs ZSB3ZSBuZWVkIHRvIGZpbmQgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkCiAJICogYXR0 cmlidXRlcyAoIm1vZGlmaWVkX2lkeF9hdHRycyIpIGFuZCB1c2UgdGhhdCB0byBkZXRlcm1p bmUgaWYgYSBIT1QKQEAgLTQ1NjEsOCArNDc5MCw2IEBAIHNpbXBsZV9oZWFwX3VwZGF0ZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVw bGUgdHVwCiAJCSAqLwogCQlBc3NlcnQoUmVsYXRpb25TdXBwb3J0c1N5c0NhY2hlKFJlbGF0 aW9uR2V0UmVsaWQocmVsYXRpb24pKSk7CiAKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9u ZTsKLQogCQkvKiBtb2RpZmllZF9pZHhfYXR0cnMgbm90IHlldCBpbml0aWFsaXplZCAqLwog CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCkBAIC00NTc3LDI3ICs0 ODA0LDIwIEBAIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJRXhlY1N0b3JlUGlubmVk QnVmZmVySGVhcFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBzbG90LCBidWZmZXIpOwog CW9sZHR1cCA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsICZzaG91bGRG cmVlKTsKIAotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7Ci0JbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0 ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7Ci0JaG90X2Fs bG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhf YXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCWxvY2FsX21vZGlmaWVkX2lkeF9hdHRycyA9 IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJ bG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIGxvY2Fs X21vZGlmaWVkX2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKHJlbGF0aW9uLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JcmVzdWx0ID0g aGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgMCwKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLCBH ZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIDAgLyogb3B0aW9ucyAqLyAsCiAJ CQkJCQkgSW52YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0J CQkJCQkgJnRtZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2Vk KTsKKwkJCQkJCSAmdG1mZCwgbG9ja21vZGUsIGxvY2FsX21vZGlmaWVkX2lkeF9hdHRycywg aG90X21vZGUpOwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCWhlYXBfZnJlZXR1cGxlKG9sZHR1 cCk7CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCi0JLyoKLQkg KiBEZWNpZGUgd2hldGhlciBuZXcgaW5kZXggZW50cmllcyBhcmUgbmVlZGVkIGZvciB0aGUg dHVwbGUKLQkgKgotCSAqIElmIHRoZSB1cGRhdGUgaXMgbm90IEhPVCwgd2UgbXVzdCB1cGRh dGUgYWxsIGluZGV4ZXMuIElmIHRoZSB1cGRhdGUgaXMKLQkgKiBIT1QsIGl0IGNvdWxkIGJl IHRoYXQgd2UgdXBkYXRlZCBzdW1tYXJpemVkIGNvbHVtbnMsIHNvIHdlIGVpdGhlcgotCSAq IHVwZGF0ZSBvbmx5IHN1bW1hcml6ZWQgaW5kZXhlcywgb3Igbm9uZSBhdCBhbGwuCi0JICov Ci0JKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CiAJ CWNhc2UgVE1fU2VsZk1vZGlmaWVkOgpAQCAtNDYwNiwxMSArNDgyNiwxNCBAQCBzaW1wbGVf aGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq b3RpZCwgSGVhcFR1cGxlIHR1cAogCQkJYnJlYWs7CiAKIAkJY2FzZSBUTV9PazoKLQkJCS8q IGRvbmUgc3VjY2Vzc2Z1bGx5ICovCi0JCQlpZiAoIUhlYXBUdXBsZUlzSGVhcE9ubHkodHVw KSkKLQkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7Ci0JCQllbHNlIGlmIChzdW1tYXJp emVkX29ubHkpCi0JCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFyaXppbmc7CisKKwkJ CS8qCisJCQkgKiBJZiB0aGUgdHVwbGUgc3RvcmVkIGJ5IGhlYXBfdXBkYXRlIGlzIGhlYXAt b25seSB0aGlzIHdhcyBhIEhPVAorCQkJICogdXBkYXRlIGFuZCAoc3ViamVjdCB0byBwZXIt aW5kZXggY2hlY2tzKSBub3QgZXZlcnkgaW5kZXggbmVlZHMKKwkJCSAqIGEgbmV3IGVudHJ5 OyBvdGhlcndpc2UgZXZlcnkgaW5kZXggbXVzdCBnZXQgb25lIHBvaW50aW5nIGF0IHRoZQor CQkJICogbmV3IHR1cGxlJ3MgVElELgorCQkJICovCisJCQkqdXBkYXRlX2FsbF9pbmRleGVz ID0gIUhlYXBUdXBsZUlzSGVhcE9ubHkodHVwKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1f VXBkYXRlZDoKQEAgLTQ2MjUsNiArNDg0OCw4IEBAIHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUg dHVwCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGhlYXBfdXBkYXRlIHN0YXR1czog JXUiLCByZXN1bHQpOwogCQkJYnJlYWs7CiAJfQorCisJYm1zX2ZyZWUobG9jYWxfbW9kaWZp ZWRfaWR4X2F0dHJzKTsKIH0KIAogCkBAIC04MTg5LDQwICs4NDE0LDQyIEBAIGluZGV4X2Rl bGV0ZV9jaGVja19odGlkKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlLAogCUFzc2VydChP ZmZzZXROdW1iZXJJc1ZhbGlkKGlzdGF0dXMtPmlkeG9mZm51bSkpOwogCiAJaWYgKHVubGlr ZWx5KGluZGV4cGFnZWhvZmZudW0gPiBtYXhvZmYpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnX2ludGVy bmFsKCJoZWFwIHRpZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHBhc3QgZW5k IG9mIGhlYXAgcGFnZSBsaW5lIHBvaW50ZXIgYXJyYXkgYXQgb2Zmc2V0ICV1IG9mIGJsb2Nr ICV1IGluIGluZGV4IFwiJXNcIiIsCi0JCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKGh0aWQpLAotCQkJCQkJCQkgaW5kZXhwYWdlaG9mZm51bSwKLQkJCQkJCQkJIGlzdGF0 dXMtPmlkeG9mZm51bSwgZGVsc3RhdGUtPmlibGtudW0sCi0JCQkJCQkJCSBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShkZWxzdGF0ZS0+aXJlbCkpKSk7CisJeworCQkvKgorCQkgKiBVbmRl ciBIT1QtaW5kZXhlZCB1cGRhdGVzLCBhIHN0YWxlIGJ0cmVlIGVudHJ5IGNhbiBvdXRsaXZl IGhlYXAKKwkJICogcHJ1bmluZy92YWN1dW0gb2YgdGhlIHBhZ2UgaXQgdGFyZ2V0czsgaWYg dGhlIHRhcmdldCBvZmZzZXQgaXMgcGFzdAorCQkgKiB0aGUgY3VycmVudCBtYXgsIHRyZWF0 IGFzIHZhY3V1bWFibGUgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisJCSAqIGluZGV4LWNvcnJ1 cHRpb24gZXJyb3IuCisJCSAqLworCQlyZXR1cm47CisJfQogCiAJaWlkID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBpbmRleHBhZ2Vob2ZmbnVtKTsKIAlpZiAodW5saWtlbHkoIUl0ZW1JZElz VXNlZChpaWQpKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0lO REVYX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiaGVhcCB0aWQgZnJvbSBp bmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyB0byB1bnVzZWQgaGVhcCBwYWdlIGl0ZW0gYXQg b2Zmc2V0ICV1IG9mIGJsb2NrICV1IGluIGluZGV4IFwiJXNcIiIsCi0JCQkJCQkJCSBJdGVt UG9pbnRlckdldEJsb2NrTnVtYmVyKGh0aWQpLAotCQkJCQkJCQkgaW5kZXhwYWdlaG9mZm51 bSwKLQkJCQkJCQkJIGlzdGF0dXMtPmlkeG9mZm51bSwgZGVsc3RhdGUtPmlibGtudW0sCi0J CQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShkZWxzdGF0ZS0+aXJlbCkpKSk7Ci0K LQlpZiAoSXRlbUlkSGFzU3RvcmFnZShpaWQpKQogCXsKLQkJSGVhcFR1cGxlSGVhZGVyIGh0 dXA7Ci0KLQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGlpZCkpOwotCQlodHVwID0gKEhlYXBU dXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgaWlkKTsKLQotCQlpZiAodW5saWtlbHko SGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSkpCi0JCQllcmVwb3J0KEVSUk9SLAot CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCi0JCQkJCSBlcnJtc2df aW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5kZXggdHVwbGUgKCV1LCV1KSBwb2ludHMgdG8g aGVhcC1vbmx5IHR1cGxlIGF0IG9mZnNldCAldSBvZiBibG9jayAldSBpbiBpbmRleCBcIiVz XCIiLAotCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJ CQkJCQkgaW5kZXhwYWdlaG9mZm51bSwKLQkJCQkJCQkJCSBpc3RhdHVzLT5pZHhvZmZudW0s IGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KGRlbHN0YXRlLT5pcmVsKSkpKTsKKwkJLyoKKwkJICogVW5kZXIgSE9ULWluZGV4ZWQgdXBk YXRlcywgYSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gbGVnaXRpbWF0ZWx5CisJCSAqIHBvaW50 IGF0IGFuIExQIHRoYXQgaGFzIHNpbmNlIGJlZW4gcmVjbGFpbWVkIHRvIExQX1VOVVNFRCBi eQorCQkgKiBwcnVuaW5nIGJlZm9yZSBWQUNVVU0gcHJvY2Vzc2VkIHRoZSBpbmRleC4gIFRy ZWF0IHRoYXQgYXMgInRoZQorCQkgKiBjaGFpbiBpcyB2YWN1dW1hYmxlIiAoY2FsbGVyJ3Mg ZG93bnN0cmVhbSBjaGFpbiB3YWxrIHdpbGwgcmVhY2ggdGhlCisJCSAqIHNhbWUgY29uY2x1 c2lvbikgcmF0aGVyIHRoYW4gYW4gaW5kZXgtY29ycnVwdGlvbiBlcnJvci4KKwkJICovCisJ CXJldHVybjsKIAl9CisKKwkvKgorCSAqIEEgcmVkaXJlY3QgdGFyZ2V0IChMUF9SRURJUkVD VCkgaXMgYSB2YWxpZCBjaGFpbiByb290OiBhbiBpbmRleCBlbnRyeQorCSAqIHBvaW50aW5n IGF0IGl0IGlzIGxlZ2l0aW1hdGUgYW5kIHRoZSBjYWxsZXIncyBjaGFpbiB3YWxrIGRlY2lk ZXMKKwkgKiBkZWxldGFiaWxpdHkuICBPbmx5IGdlbnVpbmVseSBub3JtYWwgdHVwbGVzIGFy ZSBpbnNwZWN0ZWQgYmVsb3cuCisJICoKKwkgKiBBIG5vcm1hbCB0dXBsZSB0aGF0IGlzIGhl YXAtb25seSAoSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seSkgaXMgYWxzbworCSAqIHRvbGVy YXRlZCB3aXRob3V0IGZ1cnRoZXIgY2hlY2tzOiBhIEhPVC1pbmRleGVkIHVwZGF0ZSBwbGFu dHMgYSBmcmVzaAorCSAqIGluZGV4IGVudHJ5IHRoYXQgcG9pbnRzIGRpcmVjdGx5IGF0IHN1 Y2ggYSB0dXBsZSAoaXQgY2FycmllcworCSAqIEhFQVBfSU5ERVhFRF9VUERBVEVEKSwgYW5k IGEgc3RhbGUgYnRyZWUgZW50cnkgY2FuIGxpa2V3aXNlIGFycml2ZSBhdAorCSAqIGEgaGVh cC1vbmx5IHR1cGxlIHdoZW4gaXRzIGNoYWluIHJvb3Qgd2FzIHBydW5lZCBvdXQuICBCb3Ro IGFyZSBsZWdhbAorCSAqIHVuZGVyIEhPVC1pbmRleGVkOyB0aGUgY2FsbGVyJ3MgY2hhaW4g d2FsayBkZWNpZGVzIHdoZXRoZXIgdGhlIGVudHJ5CisJICogaXMgZGVsZXRhYmxlLCBzbyB0 aGVyZSBpcyBub3RoaW5nIHRvIGNoZWNrIGhlcmUgZm9yIHRoYXQgY2FzZS4KKwkgKi8KIH0K IAogLyoKQEAgLTg0MzYsNyArODY2Myw3IEBAIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhS ZWxhdGlvbiByZWwsIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCiAJCQkvKiBBcmUg YW55IHR1cGxlcyBmcm9tIHRoaXMgSE9UIGNoYWluIG5vbi12YWN1dW1hYmxlPyAqLwogCQkJ aWYgKGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRtcCwgcmVsLCBidWYsICZTbmFwc2hvdE5v blZhY3V1bWFibGUsCi0JCQkJCQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlKSkKKwkJ CQkJCQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwpKQog CQkJCWNvbnRpbnVlOwkJLyogY2FuJ3QgZGVsZXRlIGVudHJ5ICovCiAKIAkJCS8qIENhbGxl ciB3aWxsIGRlbGV0ZSwgc2luY2Ugd2hvbGUgSE9UIGNoYWluIGlzIHZhY3V1bWFibGUgKi8K QEAgLTkwMTgsOSArOTI0NSwyMCBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwg QnVmZmVyIG9sZGJ1ZiwKIAkJfQogCX0KIAotCS8qIElmIG5ldyB0dXBsZSBpcyB0aGUgc2lu Z2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLi4uICovCisJLyoKKwkgKiBJZiBuZXcgdHVw bGUgaXMgdGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgcmVwbGF5IGNhbiBy ZWluaXQKKwkgKiB0aGUgcGFnZSBmcm9tIHNjcmF0Y2guCisJICoKKwkgKiBBbHNvIHJlcXVp cmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEgY29udGFpbnMgbm90aGluZyBvdGhlciB0 aGFuIHRoaXMKKwkgKiB0dXBsZS4gIFNlZSBoZWFwX2luc2VydCBmb3Igd2h5IHRoaXMgbWF0 dGVycyB3aGVuIHZhY3V1bSBoYXMgbGVmdCBvcnBoYW4KKwkgKiB0dXBsZSBieXRlcyBiZWhp bmQgYW4gTFBfVU5VU0VEIHNsb3QuCisJICoKKwkgKiBOT1RFOiB0aGlzIG11c3QgbWlycm9y IHRoZSBzYW1lIGxvZ2ljIGluIGhlYXBfaW5zZXJ0KCkKKwkgKi8KIAlpZiAoSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIoJihuZXd0dXAtPnRfc2VsZikpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCi0JCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIpCisJCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIgJiYKKwkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIgPT0KKwkJKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfc3BlY2lhbCAtIE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4pKQog CXsKIAkJaW5mbyB8PSBYTE9HX0hFQVBfSU5JVF9QQUdFOwogCQlpbml0ID0gdHJ1ZTsKQEAg LTkwODIsNiArOTMyMCw3IEBAIGxvZ19oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxuLCBCdWZm ZXIgb2xkYnVmLAogCSAqIFRoZSAnZGF0YScgZG9lc24ndCBpbmNsdWRlIHRoZSBjb21tb24g cHJlZml4IG9yIHN1ZmZpeC4KIAkgKi8KIAlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ4bGhk ciwgU2l6ZU9mSGVhcEhlYWRlcik7CisKIAlpZiAocHJlZml4bGVuID09IDApCiAJewogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCA3NWI0ZDQwYWFmYy4uMDdkZjlhYmMyN2EgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjE4LDQ4ICsyMTgsMzcg QEAgaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQz MiBvcHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVj aywKIAkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQml0bWFwc2V0ICoq bW9kaWZpZWRfYXR0cnMpCiB7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1 cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxk RnJlZSk7Ci0JYm9vbAkJaG90X2FsbG93ZWQ7Ci0JYm9vbAkJc3VtbWFyaXplZF9vbmx5Owor CUhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAog CUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwogCi0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOwotCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfbW9kZSA9IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sICptb2RpZmllZF9hdHRycyk7CisJKmxvY2tt b2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCAqbW9kaWZpZWRf YXR0cnMpOwogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNs b3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxl LT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCi0JcmVzdWx0ID0gaGVhcF91 cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGNyb3NzY2hlY2ss IHdhaXQsCi0JCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9hbGxvd2VkKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVw bGUsIGNpZCwgb3B0aW9ucywKKwkJCQkJCSBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRt ZmQsICpsb2NrbW9kZSwgKm1vZGlmaWVkX2F0dHJzLCBob3RfbW9kZSk7CiAJSXRlbVBvaW50 ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgotCSAqIERl Y2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBs ZQotCSAqCi0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlv bikgb2YgdGhlIG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqIFRlbGwgdGhlIGNhbGxl ciB3aGV0aGVyIGV2ZXJ5IGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgSWYgdGhlIG5ldwor CSAqIHR1cGxlIGlzIG5vdCBoZWFwLW9ubHkgdGhlIHVwZGF0ZSB3YXMgbm90IEhPVDogaXQg aXMgYW4gaW5kZXBlbmRlbnQKKwkgKiB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNoIGVudHJ5 IGluIGV2ZXJ5IGluZGV4LCB3aGljaCB3ZSBzaWduYWwgYnkKKwkgKiBhZGRpbmcgdGhlIHdo b2xlLXJvdyBhdHRyaWJ1dGUgdG8gKm1vZGlmaWVkX2F0dHJzLiAgT3RoZXJ3aXNlIChjbGFz c2ljCisJICogSE9UIG9yIEhPVC1pbmRleGVkKSB0aGUgY2FsbGVyIGNvbnN1bHRzIHRoZSBw ZXItaW5kZXggYXR0cmlidXRlcy4KIAkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwotCWlmIChyZXN1bHQgPT0gVE1fT2spCi0JewotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25s eSh0dXBsZSkpCi0JCXsKLQkJCWlmIChzdW1tYXJpemVkX29ubHkpCi0JCQkJKnVwZGF0ZV9p bmRleGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCX0KLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfQWxsOwotCX0KKwlpZiAocmVzdWx0ID09IFRNX09rICYmICFIZWFwVHVwbGVJ c0hlYXBPbmx5KHR1cGxlKSkKKwkJKm1vZGlmaWVkX2F0dHJzID0gYm1zX2FkZF9tZW1iZXIo Km1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhl cyk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwpAQCAtNzI1LDkgKzcx NCwzMyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRI ZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3QoaW5k ZXhTY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCQkJYnJlYWs7CiAKLQkJ CS8qIFNpbmNlIHdlIHVzZWQgbm8gc2NhbiBrZXlzLCBzaG91bGQgbmV2ZXIgbmVlZCB0byBy ZWNoZWNrICovCisJCQkvKgorCQkJICogQ0xVU1RFUiB1c2VzIGEgbm8ta2V5IGZ1bGwtaW5k ZXggc2NhbjsgaXQgY2Fubm90IGRvIGFueQorCQkJICogdHVwbGUtbGV2ZWwgZmlsdGVyaW5n IGl0c2VsZi4gIFRoZSBIT1QtaW5kZXhlZCByZWFkZXIgcGF0aAorCQkJICogcm91dGluZWx5 IHNldHMgeHNfcmVjaGVjayB3aGVuIHdhbGtpbmcgY2hhaW4gZW50cmllcyB3aG9zZQorCQkJ ICogaW5kZXgga2V5IG1heSBiZSBzdGFsZSByZWxhdGl2ZSB0byB0aGUgdmlzaWJsZSBoZWFw IHR1cGxlLgorCQkJICogVGhvc2UgZW50cmllcyBjYXVzZSB0aGUgc2FtZSBsaXZlIHR1cGxl IHRvIGJlIHZpc2l0ZWQgdmlhIHRoZQorCQkJICogZnJlc2ggaG90LWluZGV4ZWQtaW5zZXJ0 ZWQgZW50cnkgdG9vOyBpbmNsdWRpbmcgdGhlbSB3b3VsZAorCQkJICogZHVwbGljYXRlIHJv d3MgaW4gdGhlIHJld3JpdHRlbiBoZWFwLiAgU2tpcCB0aGVtIGhlcmUgLS0gdGhlCisJCQkg KiB0dXBsZSBpcyByZWFjaGFibGUgdGhyb3VnaCBpdHMgY2Fub25pY2FsIGluZGV4IGVudHJ5 LgorCQkJICoKKwkJCSAqIElmIHhzX3JlY2hlY2sgaXMgc2V0IHdpdGggYWN0dWFsIHNjYW4g a2V5cywgdGhhdCdzIGEgcmVhbCBsb3NzeQorCQkJICogaW5kZXggc2NlbmFyaW8gQ0xVU1RF UiBjYW4ndCBoYW5kbGUgKGhpc3RvcmljYWwgcmVzdHJpY3Rpb24pLgorCQkJICovCiAJCQlp ZiAoaW5kZXhTY2FuLT54c19yZWNoZWNrKQotCQkJCWVsb2coRVJST1IsICJDTFVTVEVSIGRv ZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJeworCQkJCWlm IChpbmRleFNjYW4tPm51bWJlck9mS2V5cyA+IDApCisJCQkJCWVsb2coRVJST1IsICJDTFVT VEVSIGRvZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogU2FtZSByZWFzb25pbmcgYXMgZm9yIHhz X3JlY2hlY2s6IGEgSE9ULWluZGV4ZWQgc3RhbGUgZW50cnkKKwkJCSAqIHdvdWxkIHJlLWVt aXQgYW4gYWxyZWFkeS12aXNpdGVkIHR1cGxlIHZpYSBpdHMgY2Fub25pY2FsIGZyZXNoCisJ CQkgKiBlbnRyeS4gIFNraXAuCisJCQkgKi8KKwkJCWlmIChpbmRleFNjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWNvbnRpbnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY0 MSwzMCArMTY1NCw0OCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAKIAkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZoZWFwVHVwbGUtPnRfc2VsZik7CiAKLQkJCS8qCi0JCQkgKiBJZiBhIEhPVCB0dXBs ZSBwb2ludHMgdG8gYSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKLQkJCSAqIG9i dGFpbiByb290IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBp dCBhcwotCQkJICogY29ycnVwdGlvbi4KLQkJCSAqLwotCQkJaWYgKHJvb3Rfb2Zmc2V0c1tv ZmZudW0gLSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJaWYgKChoZWFwVHVwbGUt PnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKIAkJ CXsKLQkJCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0K LQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0J CQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCS8qCisJ CQkJICogSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGxpdmUgdHVwbGU6 IGluZGV4IGl0CisJCQkJICogdW5kZXIgaXRzIE9XTiBUSUQsIG5vdCB0aGUgY2hhaW4gcm9v dC4gIEl0cyBpbmRleGVkIHZhbHVlcworCQkJCSAqIGRpZmZlciBmcm9tIGVhcmxpZXIgY2hh aW4gbWVtYmVycycsIGFuZCB0aGUgYml0bWFwLW92ZXJsYXAKKwkJCQkgKiByZWFkIHBhdGgg a2VlcHMgYW4gZW50cnkgb25seSB3aGVuIG5vIGhvcCBhZnRlciB0aGUgZW50cnkncworCQkJ CSAqIHRhcmdldCBjaGFuZ2VkIHRoZSBpbmRleCdzIGF0dHJpYnV0ZXMuICBUaGF0IGhvbGRz IGZvciBhbgorCQkJCSAqIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IHRoZSBsaXZlIHR1 cGxlIChubyBsYXRlciBob3ApOworCQkJCSAqIGFuIGVudHJ5IHBvaW50ZWQgYXQgdGhlIHJv b3Qgd291bGQgYmUgZHJvcHBlZCBhcyBzdGFsZSwKKwkJCQkgKiBsb3NpbmcgdGhlIHJvdy4K KwkJCQkgKi8KKwkJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJICAgb2ZmbnVtKTsKIAkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIGEgSE9UIHR1cGxlIHBvaW50cyB0 byBhIHJvb3QgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0LAorCQkJCSAqIG9idGFpbiByb290 IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBpdAorCQkJCSAq IGFzIGNvcnJ1cHRpb24uCisJCQkJICovCisJCQkJaWYgKHJvb3Rfb2Zmc2V0c1tvZmZudW0g LSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCXsKKwkJCQkJUGFnZQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwogCi0JCQlpZiAoIU9mZnNldE51bWJl cklzVmFsaWQocm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJy bXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25s eSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKLQkJCQkJCQkJCQkg b2ZmbnVtLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRp b24pKSkpOworCQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19T SEFSRSk7CisJCQkJCWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7 CisJCQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CisJCQkJfQogCi0JCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkgICByb290X29mZnNldHNbb2Zm bnVtIC0gMV0pOworCQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZnNldHNb b2ZmbnVtIC0gMV0pKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxl ZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkg aW4gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKKwkJCQkJCQkJCQkJIG9mZm51bSwKKwkJCQkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKKwkJCQlJ dGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVw bGUtPnRfc2VsZiksCisJCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKTsKKwkJ CX0KIAogCQkJLyogQ2FsbCB0aGUgQU0ncyBjYWxsYmFjayByb3V0aW5lIHRvIHByb2Nlc3Mg dGhlIHR1cGxlICovCiAJCQljYWxsYmFjayhpbmRleFJlbGF0aW9uLCAmdGlkLCB2YWx1ZXMs IGlzbnVsbCwgdHVwbGVJc0FsaXZlLApAQCAtMTgyOSw3ICsxODYwLDggQEAgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlyb290VHVwbGUg PSAqaGVhcGN1cnNvcjsKIAkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihoZWFwY3Vyc29yKTsKIAotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpKQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmCisJCQkoaGVh cFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpID09 IDApCiAJCXsKIAkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0g MV07CiAJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQpAQCAtMjU4 Niw2ICsyNjE4LDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLAogCQkgKiBvZmZzZXQuCiAJCSAqLwogCQlpbnQJCQljdXJzbG90OworCQlib29sCQlw YWdlX2hhZF9ob3RfaW5kZXhlZCA9IGZhbHNlOwogCiAJCS8qIFdlIG11c3QgaGF2ZSBleHRy YWN0ZWQgdGhlIHR1cGxlIG9mZnNldHMgYnkgbm93ICovCiAJCUFzc2VydChub2Zmc2V0cyA+ IC0xKTsKQEAgLTI1OTUsMTEgKzI2MjgsNjMgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2so VGFibGVTY2FuRGVzYyBzY2FuLAogCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IG9mZnNldHNb Y3Vyc2xvdF07CiAJCQlJdGVtUG9pbnRlckRhdGEgdGlkOwogCQkJSGVhcFR1cGxlRGF0YSBo ZWFwVHVwbGU7CisJCQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQlJ dGVtUG9pbnRlclNldCgmdGlkLCBibG9jaywgb2ZmbnVtKTsKIAkJCWlmIChoZWFwX2hvdF9z ZWFyY2hfYnVmZmVyKCZ0aWQsIHNjYW4tPnJzX3JkLCBidWZmZXIsIHNuYXBzaG90LAotCQkJ CQkJCQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCi0JCQkJaHNjYW4tPnJzX3Zpc3R1 cGxlc1tudHVwKytdID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJ CQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLAorCQkJCQkJCQkJICAgJmhvdF9pbmRl eGVkX3N0YWxlLCBOVUxMLCBOVUxMKSkKKwkJCXsKKwkJCQlPZmZzZXROdW1iZXIgcmVzb2x2 ZWQgPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGlkKTsKKwkJCQlib29sCQlhbHJl YWR5X2hhdmUgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQSBiaXRtYXAgaGVhcCBzY2Fu IGNhbm5vdCBhdHRyaWJ1dGUgYSBUSUQgdG8gb25lIGluZGV4LCBzbworCQkJCSAqIGFueSBj cm9zc2VkIGluLWNoYWluIEhPVC9TSVUgaG9wIG1lYW5zIHRoZSBhcnJpdmluZyBlbnRyeQor CQkJCSAqIG1heSBiZSBzdGFsZTsgcmVjaGVjay9kZWR1cCBjb25zZXJ2YXRpdmVseS4KKwkJ CQkgKi8KKwkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUpCisJCQkJCXBhZ2VfaGFkX2hvdF9p bmRleGVkID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogV2l0aCBIT1QtaW5kZXhlZCB1cGRh dGVzLCBtb3JlIHRoYW4gb25lIGJpdG1hcCBlbnRyeSBvbiB0aGUKKwkJCQkgKiBzYW1lIGJs b2NrIGNhbiBjaGFpbi1yZXNvbHZlIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUgKGEKKwkJCQkg KiBzdGFsZSBvbGQta2V5IGVudHJ5IHBsdXMgdGhlIGZyZXNoIG5ldy1rZXkgZW50cnksIG9y CisJCQkJICogbXVsdGlwbGUgc3RhbGUgZW50cmllcyBmcm9tIHN1Y2Nlc3NpdmUgaG90LWlu ZGV4ZWQKKwkJCQkgKiB1cGRhdGVzKS4gIE9uY2Ugd2UndmUgc2VlbiBhbnkgaG90LWluZGV4 ZWQgaG9wIG9uIHRoaXMKKwkJCQkgKiBibG9jayBkZWR1cCBpbmxpbmUgc28gdXBwZXIgbm9k ZXMgKGUuZy4sIE1FUkdFKSBkb24ndCBzZWUKKwkJCQkgKiB0aGUgc2FtZSByb3cgdHdpY2Uu ICBQcmVzZXJ2ZSBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXI6CisJCQkJICogTUVSR0UncyBS RVRVUk5JTkcgb3JkZXJpbmcgYW5kIHRlc3QgaGFybmVzcyBzdGFiaWxpdHkgYm90aAorCQkJ CSAqIGRlcGVuZCBvbiBpdC4gIEluIHRoZSBhYnNlbmNlIG9mIGhvdC1pbmRleGVkIG9uIHRo ZSBwYWdlIHdlCisJCQkJICogc2tpcCB0aGUgbGluZWFyIHNjYW4gZW50aXJlbHkgLS0gdGhl IFRCTSdzIFRJRHMgYXJlIGFscmVhZHkKKwkJCQkgKiBkaXN0aW5jdCBieSBjb25zdHJ1Y3Rp b24uCisJCQkJICovCisJCQkJaWYgKHBhZ2VfaGFkX2hvdF9pbmRleGVkKQorCQkJCXsKKwkJ CQkJZm9yIChpbnQgaiA9IDA7IGogPCBudHVwOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmICho c2Nhbi0+cnNfdmlzdHVwbGVzW2pdID09IHJlc29sdmVkKQorCQkJCQkJeworCQkJCQkJCWFs cmVhZHlfaGF2ZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJ CQl9CisKKwkJCQlpZiAoIWFscmVhZHlfaGF2ZSkKKwkJCQkJaHNjYW4tPnJzX3Zpc3R1cGxl c1tudHVwKytdID0gcmVzb2x2ZWQ7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlYWNoZWQg dGhlIHZpc2libGUgdHVwbGUgdGhyb3VnaCBhIEhPVC1pbmRleGVkCisJCQkJICogKGhvdC1p bmRleGVkKSBob3AsIHRoZSBiaXRtYXAgaW5kZXggZW50cnkgdGhhdCBwb2ludGVkIHVzCisJ CQkJICogYXQgdGhlIGNoYWluIHJvb3QgbWF5IGRlc2NyaWJlIGtleSB2YWx1ZXMgdGhlIHZp c2libGUgdHVwbGUKKwkJCQkgKiBubyBsb25nZXIgaGFzLiAgRm9yY2UgQml0bWFwSGVhcFNj YW4gdG8gcnVuIGl0cyByZWNoZWNrCisJCQkJICogcXVhbCBhZ2FpbnN0IHRoZXNlIHR1cGxl cyBldmVuIGlmIHRoZSBiaXRtYXAgcGFnZSB3YXMKKwkJCQkgKiBvdGhlcndpc2UgZXhhY3Qu CisJCQkJICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQkqcmVjaGVjayA9 IHRydWU7CisJCQl9CiAJCX0KIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IDMzZDE0ZjFkZTdkLi44MmEzZmIyYjMyNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwpAQCAt MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog CkBAIC0zNSw2ICszNiwxNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24g cmVsLCB1aW50MzIgZmxhZ3MpCiAJaHNjYW4tPnhzX2JsayA9IEludmFsaWRCbG9ja051bWJl cjsKIAloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCisJLyoKKwkgKiBT Y3JhdGNoIHNwYWNlIGZvciB0aGUgdW5pb24gb2YgbW9kaWZpZWQtYXR0cnMgYml0bWFwcyB0 aGF0IGEgSE9UL1NJVQorCSAqIGNoYWluIHdhbGsgY3Jvc3Nlcywgc2l6ZWQgZm9yIHRoaXMg cmVsYXRpb24ncyBjb2x1bW4gY291bnQuICBUaHJlYWRlZAorCSAqIGJhY2sgb3V0IHRocm91 Z2ggeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCBmb3IgdGhlIGluZGV4LWFjY2VzcyBsYXllci4K KwkgKi8KKwloc2Nhbi0+eHNfYmFzZS54c19ob3RfaW5kZXhlZF9jcm9zc2VkID0KKwkJcGFs bG9jMChIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0 ZXMocmVsKSkpOworCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KIApAQCAtNjMsNiAr NzIsOSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkKIAkJUmVsZWFz ZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwogCisJaWYgKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwkJcGZyZWUoaHNjYW4tPnhzX2Jhc2Uu eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCk7CisKIAlwZnJlZShoc2Nhbik7CiB9CiAKQEAgLTgz LDEzICs5NSwyNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURh dGEgKnNjYW4pCiAgKiBnbG9iYWxseSBkZWFkOyAqYWxsX2RlYWQgaXMgc2V0IHRydWUgaWYg YWxsIG1lbWJlcnMgb2YgdGhlIEhPVCBjaGFpbgogICogYXJlIHZhY3V1bWFibGUsIGZhbHNl IGlmIG5vdC4KICAqCisgKiBJZiBob3RfaW5kZXhlZF9yZWNoZWNrIGlzIG5vdCBOVUxMLCAq aG90X2luZGV4ZWRfcmVjaGVjayBpcyBzZXQgdHJ1ZSBpZmYgdGhlCisgKiB3YWxrIGNyb3Nz ZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkgaG9wIGFmdGVyIHRoZSBl bnRyeSB0dXBsZQorICogb24gdGhlIHdheSB0byB0aGUgcmV0dXJuZWQgdHVwbGUgLS0gaS5l LiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkncyBzdG9yZWQKKyAqIGtleSBtYXkgbm8gbG9u Z2VyIG1hdGNoIHRoZSBsaXZlIHR1cGxlLCBzbyB0aGUgY2FsbGVyIG11c3QgcmVjaGVjayBp dCAodmlhCisgKiBhIGxlYWYta2V5IGNvbXBhcmlzb24gb3IgYSBxdWFsIHJlY2hlY2spLiAg VGhlIGVudHJ5IHR1cGxlJ3Mgb3duIHByb2R1Y2luZworICogaG9wIGlzIGV4Y2x1ZGVkLCBz byBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IGl0cyB0dXBsZSBpcyBub3QK KyAqIGZsYWdnZWQuICBXaGVuIG5vIHN1Y2ggaG9wIHdhcyBjcm9zc2VkLCAqaG90X2luZGV4 ZWRfcmVjaGVjayBpcyBsZWZ0IGZhbHNlLgorICoKICAqIFVubGlrZSBoZWFwX2ZldGNoLCB0 aGUgY2FsbGVyIG11c3QgYWxyZWFkeSBoYXZlIHBpbiBhbmQgKGF0IGxlYXN0KSBzaGFyZQog ICogbG9jayBvbiB0aGUgYnVmZmVyOyBpdCBpcyBzdGlsbCBwaW5uZWQvbG9ja2VkIGF0IGV4 aXQuCiAgKi8KIGJvb2wKIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlk LCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICAgU25hcHNob3Qg c25hcHNob3QsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCSAgIGJvb2wgKmFsbF9kZWFk LCBib29sIGZpcnN0X2NhbGwpCisJCQkJCSAgIGJvb2wgKmFsbF9kZWFkLCBib29sIGZpcnN0 X2NhbGwsCisJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCSAgIHVp bnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJICAgYm9vbCAqcHJlZml4X2FsbF9kZWFkKQog ewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25J ZCBwcmV2X3htYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTk4LDEyICsxMjEsMzAg QEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWF0X2NoYWluX3N0YXJ0OwogCWJvb2wJ CXZhbGlkOwogCWJvb2wJCXNraXA7CisJYm9vbAkJcHJlZml4X2RlYWQ7CiAJR2xvYmFsVmlz U3RhdGUgKnZpc3Rlc3QgPSBOVUxMOworCWludAkJCXJlbG5hdHRzID0gUmVsYXRpb25HZXRO dW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pOworCisJLyogT25seSB0cmFjayBwcmVmaXhf ZGVhZCB3aGVuIHRoZSBjYWxsZXIgYWN0dWFsbHkgd2FudHMgaXQuICovCisJcHJlZml4X2Rl YWQgPSAocHJlZml4X2FsbF9kZWFkICE9IE5VTEwpOwogCiAJLyogSWYgdGhpcyBpcyBub3Qg dGhlIGZpcnN0IGNhbGwsIHByZXZpb3VzIGNhbGwgcmV0dXJuZWQgYSAobGl2ZSEpIHR1cGxl ICovCiAJaWYgKGFsbF9kZWFkKQogCQkqYWxsX2RlYWQgPSBmaXJzdF9jYWxsOwogCisJLyoK KwkgKiBPbiB0aGUgZmlyc3QgY2FsbCwgY2xlYXIgdGhlIHJlY2hlY2sgZmxhZyBhbmQgdGhl IGNyb3NzZWQtYXR0cnMgdW5pb24uCisJICogT24gc3Vic2VxdWVudCBjYWxscyAoc2FtZSBj aGFpbiBjb250aW51aW5nKSBrZWVwIHdoYXRldmVyIGFuIGVhcmxpZXIKKwkgKiBob3AgYWxy ZWFkeSBhY2N1bXVsYXRlZC4KKwkgKi8KKwlpZiAoZmlyc3RfY2FsbCkKKwl7CisJCWlmICho b3RfaW5kZXhlZF9yZWNoZWNrKQorCQkJKmhvdF9pbmRleGVkX3JlY2hlY2sgPSBmYWxzZTsK KwkJaWYgKGNyb3NzZWRfYml0bWFwKQorCQkJbWVtc2V0KGNyb3NzZWRfYml0bWFwLCAwLCBI b3RJbmRleGVkQml0bWFwQnl0ZXMocmVsbmF0dHMpKTsKKwl9CisKIAlibGtubyA9IEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKTsKIAlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcih0aWQpOwogCWF0X2NoYWluX3N0YXJ0ID0gZmlyc3RfY2FsbDsKQEAgLTEz MCw3ICsxNzEsMTcgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQs IFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJLyogV2Ugc2hvdWxkIG9u bHkgc2VlIGEgcmVkaXJlY3QgYXQgc3RhcnQgb2YgY2hhaW4gKi8KIAkJCWlmIChJdGVtSWRJ c1JlZGlyZWN0ZWQobHApICYmIGF0X2NoYWluX3N0YXJ0KQogCQkJewotCQkJCS8qIEZvbGxv dyB0aGUgcmVkaXJlY3QgKi8KKwkJCQkvKgorCQkJCSAqIEZvbGxvdyB0aGUgcmVkaXJlY3Qu ICBBIGNvbGxhcHNlZCBkZWFkIHByZWZpeCBpcyBwcmVzZXJ2ZWQKKwkJCQkgKiBhcyBhIHJ1 biBvZiBmb3J3YXJkaW5nIHN0dWJzLCBlYWNoIGNhcnJ5aW5nIGl0cyBzZWdtZW50J3MKKwkJ CQkgKiBtb2RpZmllZC1hdHRycyBiaXRtYXAsIGVuZGluZyBhdCB0aGUgZmlyc3QgbGl2ZSB0 dXBsZTsKKwkJCQkgKiBjaGFpbiBjb2xsYXBzZSByZWNsYWltcyBhIGRlYWQgbWVtYmVyIG9u bHkgd2hlbiBpdHMKKwkJCQkgKiBhdHRyaWJ1dGVzIGFyZSBhIHN1YnNldCBvZiB0aGUgc3Vy dml2aW5nIGxhdGVyIGhvcHMgKHNlZQorCQkJCSAqIHBydW5laGVhcC5jKS4gIFNvIHRoZSBz dHVicyBhbmQgbGl2ZSBob3BzIHRoaXMgd2FsayBjcm9zc2VzCisJCQkJICogYmVsb3cgY29u dHJpYnV0ZSB0aGUgY29tcGxldGUgdW5pb24gb2YgZXZlcnkgY29sbGFwc2VkCisJCQkJICog aG9wJ3MgbW9kaWZpZWQgYXR0cmlidXRlcywgYW5kIHRoYXQgdW5pb24gZHJpdmVzIHRoZQor CQkJCSAqIG92ZXJsYXAgc3RhbGVuZXNzIHRlc3QgZm9yIHRoZSBpbmRleC1hY2Nlc3MgbGF5 ZXIuCisJCQkJICovCiAJCQkJb2ZmbnVtID0gSXRlbUlkR2V0UmVkaXJlY3QobHApOwogCQkJ CWF0X2NoYWluX3N0YXJ0ID0gZmFsc2U7CiAJCQkJY29udGludWU7CkBAIC0xNTEsMTAgKzIw MiwxMTEgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlJdGVtUG9pbnRlclNldCgmaGVhcFR1 cGxlLT50X3NlbGYsIGJsa25vLCBvZmZudW0pOwogCiAJCS8qCi0JCSAqIFNob3VsZG4ndCBz ZWUgYSBIRUFQX09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQuCisJCSAqIEEgY29sbGFwc2Ut c3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSBidXQgbm90IGEgcmVhbCB0dXBs ZToKKwkJICogaXQgaXMgYSBmcmVlemUtc2FmZSBmb3J3YXJkaW5nIG5vZGUgY2Fycnlpbmcg dGhlIG1vZGlmaWVkLWF0dHJzCisJCSAqIGJpdG1hcCBmb3IgdGhlIGNoYWluIHNlZ21lbnQg aXQgcmVwcmVzZW50cy4gIFRyZWF0IGl0IGxpa2UgYQorCQkgKiBjcm9zc2VkIEhPVC9TSVUg aG9wIC0tIGFybSB0aGUgcmVjaGVjayBhbmQgT1IgaXRzIGJpdG1hcCBpbnRvIHRoZQorCQkg KiBjcm9zc2VkIHVuaW9uICh1bmxlc3Mgd2UgYXJyaXZlZCBkaXJlY3RseSBhdCBpdCwgaW4g d2hpY2ggY2FzZSB0aGUKKwkJICogYXJyaXZpbmcgZW50cnkgYWxyZWFkeSByZWZsZWN0cyB0 aGlzIHNlZ21lbnQncyB2YWx1ZSkgLS0gdGhlbgorCQkgKiBmb2xsb3cgaXRzIGZvcndhcmQg bGluay4gIEEgc3R1YiBpcyBuZXZlciB2aXNpYmxlIGFuZCBuZXZlcgorCQkgKiByZXR1cm5l ZCwgYW5kIGl0cyBmb3J3YXJkIGxpbmsgaXMgYSBsb2dpY2FsLCBub3QgeGlkLWNvbnRpbnVv dXMsCisJCSAqIGVkZ2UsIHNvIHJlc2V0IHByZXZfeG1heCB0byBza2lwIHRoZSBjaGFpbi1p bnRlZ3JpdHkgY2hlY2sgb24gdGhlCisJCSAqIG5leHQgbWVtYmVyLgorCQkgKi8KKwkJaWYg KEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoaGVhcFR1cGxlLT50X2RhdGEpKQorCQl7CisJCQlp ZiAoIWF0X2NoYWluX3N0YXJ0KQorCQkJeworCQkJCWlmIChob3RfaW5kZXhlZF9yZWNoZWNr KQorCQkJCQkqaG90X2luZGV4ZWRfcmVjaGVjayA9IHRydWU7CisJCQkJaWYgKGNyb3NzZWRf Yml0bWFwKQorCQkJCXsKKwkJCQkJaW50CQkJYm1uYXR0cyA9CisJCQkJCQlIb3RJbmRleGVk VHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkJLyoKKwkJCQkJ ICogQSBob3AncyB3cml0ZS10aW1lIG5hdHRzIGNhbiBuZXZlciBsZWdpdGltYXRlbHkgZXhj ZWVkCisJCQkJCSAqIHRoZSByZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMuICBPbiBhIGNvcnJ1 cHQgcGFnZSBhCisJCQkJCSAqIHN0dWIncyB1bmJvdW5kZWQgc3Rhc2hlZCBuYXR0cyBjb3Vs ZCBvdGhlcndpc2Ugb3ZlcmZsb3cKKwkJCQkJICogY3Jvc3NlZF9iaXRtYXAsIHdoaWNoIGlz IGFsbG9jYXRlZCBmb3IgcmVsbmF0dHM7IGNsYW1wCisJCQkJCSAqIGRlZmVuc2l2ZWx5Lgor CQkJCQkgKi8KKwkJCQkJQXNzZXJ0KGJtbmF0dHMgPD0gcmVsbmF0dHMpOworCQkJCQlpZiAo Ym1uYXR0cyA+IHJlbG5hdHRzKQorCQkJCQkJYm1uYXR0cyA9IHJlbG5hdHRzOworCisJCQkJ CUhvdEluZGV4ZWRCaXRtYXBVbmlvbihjcm9zc2VkX2JpdG1hcCwKKwkJCQkJCQkJCQkgIEhv dEluZGV4ZWRHZXRNb2RpZmllZEJpdG1hcChoZWFwVHVwbGUtPnRfZGF0YSwKKwkJCQkJCQkJ CQkJCQkJCQkJICBoZWFwVHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCQkgIGJtbmF0 dHMpLAorCQkJCQkJCQkJCSAgYm1uYXR0cyk7CisJCQkJfQorCQkJfQorCQkJb2ZmbnVtID0g SG90SW5kZXhlZFN0dWJHZXRGb3J3YXJkKGhlYXBUdXBsZS0+dF9kYXRhKTsKKwkJCWF0X2No YWluX3N0YXJ0ID0gZmFsc2U7CisJCQlwcmV2X3htYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogU2hvdWxkbid0IHNlZSBhIEhF QVBfT05MWSB0dXBsZSBhdCBjaGFpbiBzdGFydCwgdW5sZXNzIHRoYXQgdHVwbGUKKwkJICog aXMgdGhlIHRhcmdldCBvZiBhIGZyZXNobHktaW5zZXJ0ZWQgaG90LWluZGV4ZWQgaW5kZXgg ZW50cnk6IHRoZW4KKwkJICogYXJyaXZpbmcgZGlyZWN0bHkgYXQgYSBoZWFwLW9ubHkgSE9U LWluZGV4ZWQgdHVwbGUgaXMgbGVnYWwgYW5kIHRoZQorCQkgKiB0dXBsZSBpcyB0aGUgY2Fu b25pY2FsIHZpc2libGUgdmVyc2lvbiwgc28gd2UgZmFsbCB0aHJvdWdoIGFuZAorCQkgKiBh cHBseSBub3JtYWwgdmlzaWJpbGl0eSBjaGVja3MgdG8gaXQuICBPdGhlcndpc2UsIHRyZWF0 IGl0IGFzIGEKKwkJICogYnJva2VuIGNoYWluLgogCQkgKi8KIAkJaWYgKGF0X2NoYWluX3N0 YXJ0ICYmIEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKLQkJCWJyZWFrOworCQl7 CisJCQlpZiAoKGhlYXBUdXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhF RF9VUERBVEVEKSA9PSAwKQorCQkJCWJyZWFrOworCisJCQkvKgorCQkJICogV2Ugd2VyZSBw b2ludGVkIGRpcmVjdGx5IGF0IHRoaXMgaG90LWluZGV4ZWQgdHVwbGUuICBUaGUgaW5kZXgK KwkJCSAqIGVudHJ5IHdlIGFycml2ZWQgdGhyb3VnaCB3YXMgaW5zZXJ0ZWQgKmZvciogdGhp cyB1cGRhdGUsIHNvIGl0CisJCQkgKiByZWZsZWN0cyB0aGlzIHR1cGxlJ3MgY3VycmVudCBh dHRyaWJ1dGUgdmFsdWVzOyBpdHMgb3duCisJCQkgKiBwcm9kdWNpbmcgaG9wIGlzIG5vdCBh IGNyb3NzZWQgaG9wLCBzbyBpdCBpcyBub3QgZmxhZ2dlZCBmb3IKKwkJCSAqIHJlY2hlY2sg KGEgZnJlc2ggZW50cnkgaXMgbmV2ZXIgc3RhbGUgZm9yIGl0cyBvd24gaW5kZXgpLgorCQkJ ICovCisJCX0KKwkJZWxzZSBpZiAoaG90X2luZGV4ZWRfcmVjaGVjayAhPSBOVUxMICYmCisJ CQkJIChoZWFwVHVwbGUtPnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBE QVRFRCkgIT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIEEgSE9UL1NJVSBob3AgcmVhY2hlZCBi eSBmb2xsb3dpbmcgdGhlIGNoYWluIChvciBhIHJlZGlyZWN0KQorCQkJICogZnJvbSBhbiBl YXJsaWVyIGVudHJ5OiB0aGlzIGhvcCBpcyBjcm9zc2VkLCBzbyB0aGUgYXJyaXZpbmcKKwkJ CSAqIGVudHJ5J3Mgc3RvcmVkIGtleSBtYXkgbm8gbG9uZ2VyIG1hdGNoIHRoZSBsaXZlIHR1 cGxlLiAgU2V0IHRoZQorCQkJICogcmVjaGVjayBmbGFnIHRvIHRlbGwgdGhlIGluZGV4LWFj Y2VzcyBsYXllciB0byBjb25zdWx0IHRoZQorCQkJICogY3Jvc3NlZC1hdHRycyB1bmlvbjsg dGhhdCB1bmlvbiAoYWNjdW11bGF0ZWQgYmVsb3cpIGlzIHdoYXQKKwkJCSAqIGRlY2lkZXMg c3RhbGVuZXNzLgorCQkJICovCisJCQkqaG90X2luZGV4ZWRfcmVjaGVjayA9IHRydWU7CisK KwkJCS8qCisJCQkgKiBBY2N1bXVsYXRlIHRoaXMgaG9wJ3MgbW9kaWZpZWQtYXR0cnMgYml0 bWFwIGludG8gdGhlIGNyb3NzZWQKKwkJCSAqIHVuaW9uLiAgQSB0dXBsZSdzIGlubGluZSBi aXRtYXAgcmVjb3JkcyB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzCisJCQkgKiB0aGF0IGNoYW5n ZWQgYXQgdGhlIGhvcCBJTlRPIGl0LCB3aGljaCBpcyBleGFjdGx5IHRoZSBob3Agd2UKKwkJ CSAqIGp1c3QgY3Jvc3NlZCBieSBhZHZhbmNpbmcgdG8gaXQ7IE9SaW5nIGVhY2ggY3Jvc3Nl ZCBob3AgeWllbGRzCisJCQkgKiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgY2hhbmdl ZCBhZnRlciB0aGUgZW50cnkncyBvd24KKwkJCSAqIHR1cGxlLgorCQkJICovCisJCQlpZiAo Y3Jvc3NlZF9iaXRtYXApCisJCQl7CisJCQkJaW50CQkJYm1uYXR0cyA9CisJCQkJCUhvdElu ZGV4ZWRUdXBsZUJpdG1hcE5hdHRzKGhlYXBUdXBsZS0+dF9kYXRhKTsKKworCQkJCS8qIFNl ZSB0aGUgY29tbWVudCBvbiB0aGUgc3R1YiBjYXNlJ3MgY3Jvc3NlZF9iaXRtYXAgdXNlLiAq LworCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQlpZiAoYm1uYXR0cyA+ IHJlbG5hdHRzKQorCQkJCQlibW5hdHRzID0gcmVsbmF0dHM7CisKKwkJCQlIb3RJbmRleGVk Qml0bWFwVW5pb24oY3Jvc3NlZF9iaXRtYXAsCisJCQkJCQkJCQkgIEhvdEluZGV4ZWRHZXRN b2RpZmllZEJpdG1hcChoZWFwVHVwbGUtPnRfZGF0YSwKKwkJCQkJCQkJCQkJCQkJCQkgIGhl YXBUdXBsZS0+dF9sZW4sCisJCQkJCQkJCQkJCQkJCQkJICBibW5hdHRzKSwKKwkJCQkJCQkJ CSAgYm1uYXR0cyk7CisJCQl9CisJCX0KIAogCQkvKgogCQkgKiBUaGUgeG1pbiBzaG91bGQg bWF0Y2ggdGhlIHByZXZpb3VzIHhtYXggdmFsdWUsIGVsc2UgY2hhaW4gaXMKQEAgLTE4Niw2 ICszMzgsMTUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihoZWFwVHVwbGUtPnRfZGF0YSkpOwogCQkJCWlmIChhbGxfZGVhZCkKIAkJ CQkJKmFsbF9kZWFkID0gZmFsc2U7CisKKwkJCQkvKgorCQkJCSAqIFJlcG9ydCB3aGV0aGVy IGV2ZXJ5IGNoYWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGlzCisJCQkJICogdmlzaWJs ZSB0dXBsZSBpcyBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMuICBXaXRoIGEgc3RhbGUKKwkJ CQkgKiB2ZXJkaWN0IHRoaXMgbGV0cyB0aGUgY2FsbGVyIGtpbGwgdGhlIGFycml2aW5nIGxl YWYgc2FmZWx5LgorCQkJCSAqLworCQkJCWlmIChwcmVmaXhfYWxsX2RlYWQpCisJCQkJCSpw cmVmaXhfYWxsX2RlYWQgPSBwcmVmaXhfZGVhZDsKKwogCQkJCXJldHVybiB0cnVlOwogCQkJ fQogCQl9CkBAIC0xOTQsMTggKzM1NSwyNSBAQCBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0 ZW1Qb2ludGVyIHRpZCwgUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8q CiAJCSAqIElmIHdlIGNhbid0IHNlZSBpdCwgbWF5YmUgbm8gb25lIGVsc2UgY2FuIGVpdGhl ci4gIEF0IGNhbGxlcgogCQkgKiByZXF1ZXN0LCBjaGVjayB3aGV0aGVyIGFsbCBjaGFpbiBt ZW1iZXJzIGFyZSBkZWFkIHRvIGFsbAotCQkgKiB0cmFuc2FjdGlvbnMuCisJCSAqIHRyYW5z YWN0aW9ucy4gIFRoZSBzYW1lIHN1cmVseS1kZWFkIHRlc3QgZmVlZHMgcHJlZml4X2RlYWQs IHdoaWNoCisJCSAqICh1bmxpa2UgYWxsX2RlYWQpIGlzIG5vdCByZXNldCB3aGVuIGEgdmlz aWJsZSB0dXBsZSBpcyBmb3VuZCwgc28gaXQKKwkJICogcmVjb3JkcyB3aGV0aGVyIHRoZSBt ZW1iZXJzIHNraXBwZWQgYWhlYWQgb2YgdGhlIHJldHVybmVkIHR1cGxlIGFyZQorCQkgKiBh bGwgZGVhZCB0byBhbGwgLS0gdGhlIHNhZmUtdG8ta2lsbC10aGlzLWxlYWYgY29uZGl0aW9u LgogCQkgKgogCQkgKiBOb3RlOiBpZiB5b3UgY2hhbmdlIHRoZSBjcml0ZXJpb24gaGVyZSBm b3Igd2hhdCBpcyAiZGVhZCIsIGZpeCB0aGUKIAkJICogcGxhbm5lcidzIGdldF9hY3R1YWxf dmFyaWFibGVfcmFuZ2UoKSBmdW5jdGlvbiB0byBtYXRjaC4KIAkJICovCi0JCWlmIChhbGxf ZGVhZCAmJiAqYWxsX2RlYWQpCisJCWlmICgoYWxsX2RlYWQgJiYgKmFsbF9kZWFkKSB8fCAo cHJlZml4X2FsbF9kZWFkICYmIHByZWZpeF9kZWFkKSkKIAkJewogCQkJaWYgKCF2aXN0ZXN0 KQogCQkJCXZpc3Rlc3QgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbGF0aW9uKTsKIAogCQkJaWYg KCFIZWFwVHVwbGVJc1N1cmVseURlYWQoaGVhcFR1cGxlLCB2aXN0ZXN0KSkKLQkJCQkqYWxs X2RlYWQgPSBmYWxzZTsKKwkJCXsKKwkJCQlpZiAoYWxsX2RlYWQpCisJCQkJCSphbGxfZGVh ZCA9IGZhbHNlOworCQkJCXByZWZpeF9kZWFkID0gZmFsc2U7CisJCQl9CiAJCX0KIAogCQkv KgpAQCAtMjczLDcgKzQ0MSwxNSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0 IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCQkJCQkJCQkJCXNuYXBzaG90LAogCQkJ CQkJCQkJCQkmYnNsb3QtPmJhc2UudHVwZGF0YSwKIAkJCQkJCQkJCQkJYWxsX2RlYWQsCi0J CQkJCQkJCQkJCSEqaGVhcF9jb250aW51ZSk7CisJCQkJCQkJCQkJCSEqaGVhcF9jb250aW51 ZSwKKwkJCQkJCQkJCQkJJnNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCQkJ CQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQsCisJCQkJCQkJCQkJCSZzY2FuLT54 c19wcmVmaXhfYWxsX2RlYWQpOworCWlmICghZ290X2hlYXBfdHVwbGUpCisJeworCQlzY2Fu LT54c19ob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFsc2U7CisJCXNjYW4tPnhzX3ByZWZpeF9h bGxfZGVhZCA9IGZhbHNlOworCX0KIAlic2xvdC0+YmFzZS50dXBkYXRhLnRfc2VsZiA9ICp0 aWQ7CiAJTG9ja0J1ZmZlcihoc2Nhbi0+eHNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCAxNDA4OTg5YzU2OC4uNjYyOGY5 YmY4NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC0xMDMsNiArMTAzLDkg QEAgUmVsYXRpb25HZXRJbmRleFNjYW4oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwgaW50IG5r ZXlzLCBpbnQgbm9yZGVyYnlzKQogCQlzY2FuLT5vcmRlckJ5RGF0YSA9IE5VTEw7CiAKIAlz Y2FuLT54c193YW50X2l0dXAgPSBmYWxzZTsgLyogbWF5IGJlIHNldCBsYXRlciAqLworCXNj YW4tPnhzX2luZGV4X29ubHkgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBsYXRlciAqLworCisJ c2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKIAogCS8qCiAJICogRHVyaW5n IHJlY292ZXJ5IHdlIGlnbm9yZSBraWxsZWQgdHVwbGVzIGFuZCBkb24ndCBib3RoZXIgdG8g a2lsbCB0aGVtCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCA3OTY3ZTkz OTg0Ny4uNzIzNzc3N2U2MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpA QCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJh Y2Nlc3MvYW1hcGkuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQuaCIKICNpbmNs dWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5o IgogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCkBAIC02MDYsNiArNjA3LDE1IEBAIGlu ZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXJl Y3Rpb24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgYSBzbmFwc2hvdCBpcyBw dXNoZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChS ZWNlbnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHRoZSBIT1QtaW5kZXhlZCByZWNoZWNr IGZsYWc6IGl0IGlzIHNldCBieSB0aGUgaGVhcCBBTSBkdXJpbmcKKwkgKiBpbmRleF9mZXRj aF9oZWFwIGFuZCBpcyBwZXItZmV0Y2hlZC10dXBsZSwgbm90IHBlci1pbmRleC1lbnRyeS4g Rm9yCisJICogSW5kZXhPbmx5U2Nhbiwgd2hpY2ggbWF5IHNraXAgaW5kZXhfZmV0Y2hfaGVh cCB3aGVuIHRoZSBWTSBzYXlzIHRoZQorCSAqIGVudHJ5IGlzIHZpc2libGUtdG8tYWxsLCB0 aGlzIGVuc3VyZXMgd2UgZG9uJ3QgY2FycnkgYSBzdGFsZSB2YWx1ZSBmcm9tCisJICogYSBw cmV2aW91cyBlbnRyeS4KKwkgKi8KKwlzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSA9IGZh bHNlOworCiAJLyoKIAkgKiBUaGUgQU0ncyBhbWdldHR1cGxlIHByb2MgZmluZHMgdGhlIG5l eHQgaW5kZXggZW50cnkgbWF0Y2hpbmcgdGhlIHNjYW4KIAkgKiBrZXlzLCBhbmQgcHV0cyB0 aGUgVElEIGludG8gc2Nhbi0+eHNfaGVhcHRpZC4gIEl0IHNob3VsZCBhbHNvIHNldApAQCAt NjY2LDE1ICs2NzYsOTcgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNjIHNjYW4s IFR1cGxlVGFibGVTbG90ICpzbG90KQogCWlmIChmb3VuZCkKIAkJcGdzdGF0X2NvdW50X2hl YXBfZmV0Y2goc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAKKwkvKgorCSAqIFRoZSB0YWJsZSBB TSByZXBvcnRlZCwgdmlhIHhzX2hvdF9pbmRleGVkX3JlY2hlY2ssIHdoZXRoZXIgdGhlIHdh bGsgdG8KKwkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULWluZGV4ZWQgaG9wIGFm dGVyIHRoZSBhcnJpdmluZyBpbmRleAorCSAqIGVudHJ5J3Mgb3duIHR1cGxlLiAgV2hlbiBp dCBkaWQsIHRoZSBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdlcgorCSAqIGFncmVl IHdpdGggdGhlIGxpdmUgdHVwbGUsIGFuZCB3ZSBtdXN0IGRlY2lkZSB3aGV0aGVyIHRvIGRy b3AgaXQuCisJICoKKwkgKiBUaGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwICh4c19ob3Rf aW5kZXhlZF9jcm9zc2VkKSBpcyB0aGUgc3RhbGVuZXNzCisJICogYXV0aG9yaXR5LiAgSXQg aXMgdGhlIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJpYnV0ZSBiaXRtYXBz CisJICogb2YgZXZlcnkgaG9wIHRoZSB3YWxrIGNyb3NzZWQsIGFuZCBpdCBpcyBjb21wbGV0 ZTogZWFjaCBjcm9zc2VkIGxpdmUKKwkgKiBob3AsIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIs IGFuZCByZWRpcmVjdGVkIChjb2xsYXBzZWQpIHByZWZpeAorCSAqIGNvbnRyaWJ1dGVzIGl0 cyBzZWdtZW50J3MgYml0bWFwLCBhbmQgY2hhaW4gY29sbGFwc2Ugb25seSBldmVyIHJlY2xh aW1zCisJICogYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhl IHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkgKiBwcnVuZWhlYXAuYykuICBUaGVyZWZv cmU6CisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBmcm9tIHRoZSBoZWFw IGNvbHVtbnMgdGhpcyBpbmRleCByZWZlcmVuY2VzLAorCSAqIG5vbmUgb2YgdGhlIGluZGV4 J3MgaW5wdXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhlIGVudHJ5J3Mga2V5 CisJICogc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZToga2VlcCBpdDsgYW5kCisJICoK KwkgKiAtIGlmIHRoZSB1bmlvbiBvdmVybGFwcyB0aGVtLCBvbmUgb2YgdGhpcyBpbmRleCdz IGtleSBjb2x1bW5zIGNoYW5nZWQKKwkgKiBhZnRlciB0aGUgZW50cnkncyBvd24gdHVwbGUs IHNvIHRoZSBlbnRyeSBpcyBzdGFsZTogZHJvcCBpdC4KKwkgKgorCSAqIERyb3BwaW5nIG9u IG92ZXJsYXAgaXMgY29ycmVjdCBldmVuIHdoZW4gdGhlIGtleSB3YXMgY3ljbGVkIGF3YXkg YW5kCisJICogYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgKGFuIEFCQSB1cGRhdGUpOiB0 aGUgdXBkYXRlIHRoYXQgc2V0IHRoZQorCSAqIHZhbHVlIGJhY2sgY3JlYXRlZCBhIGZyZXNo IGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gKGxpdmUpIHR1cGxlLAorCSAqIHdob3NlIHdh bGsgY3Jvc3NlcyBubyBsYXRlciBrZXktY2hhbmdpbmcgaG9wLCBzbyB0aGF0IGVudHJ5IHVu aXF1ZWx5CisJICogc3VwcGxpZXMgdGhlIHJvdyB3aGlsZSB0aGlzIHN0YWxlIGFuY2VzdG9y IGVudHJ5IGlzIGRyb3BwZWQuICBObworCSAqIHZhbHVlLXJlY2hlY2sgaXMgbmVlZGVkLCBz byB0aGlzIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZDsgdGhlCisJICogc3RhbGVuZXNz IGRlY2lzaW9uIGlzIHB1cmVseSBhdHRyaWJ1dGUtYmFzZWQuCisJICovCisJc2Nhbi0+eHNf aG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKKwlpZiAoZm91bmQgJiYKKwkJc2Nhbi0+eHNf aGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrICYmCisJCXNjYW4tPnhzX2hlYXBm ZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQorCXsKKwkJQml0bWFwc2V0 ICAqaWR4YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhzY2FuLT5pbmRleFJlbGF0 aW9uKTsKKwkJaW50CQkJeCA9IC0xOworCisJCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJl cihpZHhhdHRycywgeCkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0bnVtID0geCAr IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJCS8qIHRoZSBjcm9z c2VkIGJpdG1hcCByZWNvcmRzIG9ubHkgdXNlciBhdHRyaWJ1dGVzICovCisJCQlpZiAoYXR0 bnVtID49IDEgJiYKKwkJCQlIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQoc2Nhbi0+eHNfaGVh cGZldGNoLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJCSBhdHRudW0pKQor CQkJeworCQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gdHJ1ZTsKKwkJCQlicmVh azsKKwkJCX0KKwkJfQorCQlibXNfZnJlZShpZHhhdHRycyk7CisJfQorCiAJLyoKIAkgKiBJ ZiB3ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWluIGFuZCBmb3VuZCBvbmx5IGRlYWQgdHVw bGVzLCB0ZWxsIGluZGV4CiAJICogQU0gdG8ga2lsbCBpdHMgZW50cnkgZm9yIHRoYXQgVElE ICh0aGlzIHdpbGwgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQKIAkgKiBhbWdldHR1cGxlIGNh bGwsIGluIGluZGV4X2dldG5leHRfdGlkKS4gIFdlIGRvIG5vdCBkbyB0aGlzIHdoZW4gaW4K IAkgKiByZWNvdmVyeSBiZWNhdXNlIGl0IG1heSB2aW9sYXRlIE1WQ0MgdG8gZG8gc28uICBT ZWUgY29tbWVudHMgaW4KIAkgKiBSZWxhdGlvbkdldEluZGV4U2NhbigpLgorCSAqCisJICog QWRkaXRpb25hbGx5IGtpbGwgYSBzdGFsZSBIT1QtaW5kZXhlZCBsZWFmIChvbmUgd2hvc2Ug a2V5IHRoZSBsaXZlCisJICogdHVwbGUgbm8gbG9uZ2VyIGhvbGRzKSB3aGVuIGV2ZXJ5IGNo YWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGUKKwkgKiByZXR1cm5lZCB0dXBsZSBpcyBk ZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMgKHhzX3ByZWZpeF9hbGxfZGVhZCk6IG5vCisJICog c25hcHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hpbmcgdmVyc2lvbiB0aHJvdWdoIHRoaXMgbGVh Ziwgc28gaXQgaXMKKwkgKiByZWR1bmRhbnQgYW5kIHJlY2xhaW1pbmcgaXQgYm91bmRzIHRo ZSBpbmRleCBibG9hdCBIT1QtaW5kZXhlZCB1cGRhdGVzCisJICogY3JlYXRlLgorCSAqCisJ ICogVHdvIGluZGVwZW5kZW50IGNvbmRpdGlvbnMgbWFrZSB0aGlzIHNhZmU6CisJICoKKwkg KiAgLSBUaGUgc3VyZWx5LWRlYWQgcHJlZml4IGdhdGUgKHhzX3ByZWZpeF9hbGxfZGVhZCkg bWVhbnMgbm8gc25hcHNob3QsCisJICogICAgaW5jbHVkaW5nIG9sZGVyIG9uZXMgc3RpbGwg cnVubmluZywgY2FuIHJlYWNoIGEgdmVyc2lvbiB0aHJvdWdoIHRoaXMKKwkgKiAgICBsZWFm IHdob3NlIGtleSBtYXRjaGVzOiBldmVyeSBtZW1iZXIgYWhlYWQgb2YgdGhlIGxpdmUgdHVw bGUgaXMgZGVhZAorCSAqICAgIHRvIGFsbC4gIFRoaXMgaXMgd2hhdCBtYWtlcyBpdCBNVkND LXNhZmUsIGV4YWN0bHkgYXMgZm9yIHRoZQorCSAqICAgIGFsbF9kZWFkIGNhc2UuCisJICoK KwkgKiAgLSBUaGUgbGVhZiBpcyBnZW51aW5lbHkgcmVkdW5kYW50LCBub3QgdGhlIHJvdydz IG9ubHkgZW50cnkuICBBIHN0YWxlCisJICogICAgdmVyZGljdCBtZWFucyB0aGUgY3Jvc3Nl ZC1ob3AgdW5pb24gb3ZlcmxhcHMgdGhpcyBpbmRleCdzIGNvbHVtbnMsCisJICogICAgaS5l LiBvbmUgb2YgdGhpcyBpbmRleCdzIGF0dHJpYnV0ZXMgY2hhbmdlZCBvbiBhIGhvcCBhZnRl ciB0aGlzCisJICogICAgbGVhZidzIHRhcmdldC4gIFRoZSB1cGRhdGUgdGhhdCBtYWRlIHRo YXQgY2hhbmdlIG1haW50YWluZWQgdGhpcworCSAqICAgIGluZGV4IChpdHMgYXR0cmlidXRl IGNoYW5nZWQpLCBzbyBpdCBwbGFudGVkIGEgZnJlc2ggZW50cnkgcG9pbnRpbmcKKwkgKiAg ICBhdCBpdHMgb3duIGxpdmUgdHVwbGU7IHRoYXQgZnJlc2ggZW50cnkgY3Jvc3NlcyBubyBs YXRlcgorCSAqICAgIGtleS1jaGFuZ2luZyBob3AgYW5kIHVuaXF1ZWx5IHN1cHBsaWVzIHRo ZSByb3cuICBEcm9wcGluZyB0aGUgc3RhbGUKKwkgKiAgICBhbmNlc3RvciB0aGVyZWZvcmUg bmV2ZXIgcmVtb3ZlcyB0aGUgcm93J3MgbGFzdCByZWFjaGFibGUgZW50cnkuCisJICogICAg VGhpcyBob2xkcyBldmVuIHVuZGVyIEFCQSBrZXkgY3ljbGluZyAoWCAtPiBZIC0+IFgpOiB0 aGUgWC1yZXN0b3JpbmcKKwkgKiAgICB1cGRhdGUgY2hhbmdlZCB0aGlzIGluZGV4J3MgY29s dW1uIChZIC0+IFgpIGFuZCBzbyBwbGFudGVkIHRoZSBmcmVzaAorCSAqICAgIGVudHJ5Lgog CSAqLwogCWlmICghc2Nhbi0+eGFjdFN0YXJ0ZWRJblJlY292ZXJ5KQotCQlzY2FuLT5raWxs X3ByaW9yX3R1cGxlID0gYWxsX2RlYWQ7CisJCXNjYW4tPmtpbGxfcHJpb3JfdHVwbGUgPQor CQkJYWxsX2RlYWQgfHwKKwkJCShzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSAmJiBzY2Fu LT54c19oZWFwZmV0Y2gtPnhzX3ByZWZpeF9hbGxfZGVhZCk7CiAKIAlyZXR1cm4gZm91bmQ7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRleCBjOGFmOTdk ZDIzZC4uMmExMDYzOThkNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNl cnQuYwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lu Y2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMu aCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHhs b2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgpAQCAtMjIsMTggKzI0LDI0IEBA CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tb24vaW50 LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRlICJleGVjdXRvci90 dXB0YWJsZS5oIgogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cmVkaWNhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgotCiAvKiBNaW5pbXVtIHRyZWUgaGVpZ2h0IGZvciBhcHBs aWNhdGlvbiBvZiBmYXN0cGF0aCBvcHRpbWl6YXRpb24gKi8KICNkZWZpbmUgQlRSRUVfRkFT VFBBVEhfTUlOX0xFVkVMCTIKIAogCiBzdGF0aWMgQlRTdGFjayBfYnRfc2VhcmNoX2luc2Vy dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJCSBCVEluc2VydFN0 YXRlIGluc2VydHN0YXRlKTsKKworLyogSW50ZXJuYWwgaGVscGVyOiBIT1QtaW5kZXhlZCBs ZWFmLWtleSBzdGFsZW5lc3MgY2hlY2sgZm9yIF9idF9jaGVja191bmlxdWUuICovCitzdGF0 aWMgYm9vbCBfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxlYWZ0dXAsCisJCQkJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVTbG90ICpoZWFwU2xv dCk7CisKIHN0YXRpYyBUcmFuc2FjdGlvbklkIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24g cmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLAogCQkJCQkJCQkJICBSZWxhdGlvbiBo ZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29s ICppc191bmlxdWUsCkBAIC00MjYsNiArNDM0LDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxh dGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWws CiAJYm9vbAkJaW5wb3N0aW5nID0gZmFsc2U7CiAJYm9vbAkJcHJldmFsbGRlYWQgPSB0cnVl OwogCWludAkJCWN1cnBvc3RpID0gMDsKKwlUdXBsZVRhYmxlU2xvdCAqY2hhaW5fd2Fsa19z bG90ID0gTlVMTDsKKwlib29sCQloaV9yZWNoZWNrID0gZmFsc2U7CiAKIAkvKiBBc3N1bWUg dW5pcXVlIHVudGlsIHdlIGZpbmQgYSBkdXBsaWNhdGUgKi8KIAkqaXNfdW5pcXVlID0gdHJ1 ZTsKQEAgLTUwOSw2ICs1MTksNyBAQCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwg QlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCXsKIAkJ CQlJdGVtUG9pbnRlckRhdGEgaHRpZDsKIAkJCQlib29sCQlhbGxfZGVhZCA9IGZhbHNlOwor CQkJCWJvb2wJCWhvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkJCQlpZiAoIWlucG9z dGluZykKIAkJCQl7CkBAIC01NTksMTMgKzU3MCw4MCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAkJCQkgKiBzYXRpc2Z5aW5nIFNuYXBzaG90RGlydHkuIFRoaXMgaXMgbmVjZXNzYXJ5 IGJlY2F1c2UgZm9yIEFNcwogCQkJCSAqIHdpdGggb3B0aW1pemF0aW9ucyBsaWtlIGhlYXAn cyBIT1QsIHdlIGhhdmUganVzdCBhIHNpbmdsZQogCQkJCSAqIGluZGV4IGVudHJ5IGZvciB0 aGUgZW50aXJlIGNoYWluLgorCQkJCSAqCisJCQkJICogVGhlIGZldGNoIHJlcG9ydHMgKGhp X3JlY2hlY2spIHdoZXRoZXIgdGhlIGNoYWluIHdhbGsgdG8KKwkJCQkgKiB0aGUgbGl2ZSB0 dXBsZSBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpCisJCQkJ ICogaG9wLiBJbiBjbGFzc2ljIEhPVCB0aGUgY2hhaW4gcHJlc2VydmVzIHRoZSBpbmRleCBr ZXksIHNvIGEKKwkJCQkgKiBsaXZlIHR1cGxlIGFueXdoZXJlIGluIHRoZSBjaGFpbiBpcyBh IGRlZmluaXRlIGNvbmZsaWN0OworCQkJCSAqIHdpdGggSE9UL1NJVSB0aGF0IGludmFyaWFu dCBubyBsb25nZXIgaG9sZHMgLS0gYW4gb2xkIGluZGV4CisJCQkJICogZW50cnkgZm9yIGtl eSBLIG1heSBjaGFpbi1sZWFkIHRvIGEgaGVhcCB0dXBsZSB3aG9zZSBhY3R1YWwKKwkJCQkg KiBpbmRleCBrZXkgaXMgSycuICBXaGVuIGEgaG9wIHdhcyBjcm9zc2VkIHdlIHJlY2hlY2sg dGhlCisJCQkJICogbGVhZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSBiZWxvdzsgYSBz dGFsZSBlbnRyeSBpcworCQkJCSAqIGZpbHRlcmVkIG91dCwgbm90IHRyZWF0ZWQgYXMgYSBj b25mbGljdC4gIGNoYWluX3dhbGtfc2xvdAorCQkJCSAqIGhvbGRzIHRoZSBsaXZlIHR1cGxl IGZvciB0aGF0IHJlY2hlY2sgYW5kIGlzIGZyZWVkIGF0IGV2ZXJ5CisJCQkJICogZXhpdC4K IAkJCQkgKi8KLQkJCQllbHNlIGlmICh0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayho ZWFwUmVsLCAmaHRpZCwKKwkJCQllbHNlIGlmICgoY2hhaW5fd2Fsa19zbG90ICE9IE5VTEwg fHwKKwkJCQkJCSAgKGNoYWluX3dhbGtfc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKGhlYXBS ZWwsIE5VTEwpKSkgJiYKKwkJCQkJCSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayho ZWFwUmVsLCAmaHRpZCwKIAkJCQkJCQkJCQkJCQkgICAmU25hcHNob3REaXJ0eSwKLQkJCQkJ CQkJCQkJCQkgICAmYWxsX2RlYWQpKQorCQkJCQkJCQkJCQkJCSAgICZhbGxfZGVhZCwKKwkJ CQkJCQkJCQkJCQkgICAmaGlfcmVjaGVjaywKKwkJCQkJCQkJCQkJCQkgICBjaGFpbl93YWxr X3Nsb3QpKQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25JZCB4d2FpdDsKIAorCQkJCQkvKgor CQkJCQkgKiBUaGUgY2hhaW4gd2FsayByZXBvcnRlZCAoaGlfcmVjaGVjaykgdGhhdCBpdCBj cm9zc2VkIGF0CisJCQkJCSAqIGxlYXN0IG9uZSBIT1QvU0lVIGhvcCBvbiB0aGUgd2F5IHRv IHRoZSBsaXZlIHR1cGxlLCBzbworCQkJCQkgKiB0aGUgY2xhc3NpYyAibGl2ZSB0dXBsZSBp biB0aGUgY2hhaW4gaW1wbGllcyB0aGUgc2FtZQorCQkJCQkgKiBpbmRleCBrZXkiIGludmFy aWFudCBtYXkgbm90IGhvbGQ6IGFuIG9sZCBpbmRleCBlbnRyeQorCQkJCQkgKiBmb3Iga2V5 IEsgbWF5IGNoYWluLWxlYWQgdG8gYSB0dXBsZSB3aG9zZSBjdXJyZW50IGtleQorCQkJCQkg KiBpcyBLJy4gIFJlY2hlY2sgdGhlIGxlYWYncyBzdG9yZWQga2V5IGFnYWluc3QgdGhlIGxp dmUKKwkJCQkJICogdHVwbGUncyBjdXJyZW50IGluZGV4IGZvcm0uICBBIG1pc21hdGNoIG1l YW5zIHRoZSBsZWFmCisJCQkJCSAqIGlzIHN0YWxlIChub3QgYSBjb25mbGljdCk6IHNraXAg aXQ7IHRoZSBmcmVzaCBlbnRyeQorCQkJCQkgKiBpbnNlcnRlZCBmb3IgdGhlIGN1cnJlbnQg dmFsdWUgaXMgdGhlIGNhbm9uaWNhbCBvbmUuCisJCQkJCSAqIEJlY2F1c2UgdGhlIGxlYWYg c3RpbGwgcmVzb2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCBjbGVhcgorCQkJCQkgKiBwcmV2YWxs ZGVhZCBzbyB0aGUgY2FsbGVyIG5ldmVyIG1hcmtzIGl0IExQX0RFQUQKKwkJCQkJICogKGtp bGxhYmxlKS4KKwkJCQkJICovCisJCQkJCWhvdF9pbmRleGVkX3N0YWxlID0KKwkJCQkJCSho aV9yZWNoZWNrICYmCisJCQkJCQkgIV9idF9oZWFwX2tleXNfZXF1YWxfbGVhZihyZWwsIGN1 cml0dXAsIGNoYWluX3dhbGtfc2xvdCkpOworCisJCQkJCWlmIChob3RfaW5kZXhlZF9zdGFs ZSkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJCQkJCWlmIChuYnVm ICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYpOworCQkJ CQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJUdXBsZShjaGFpbl93 YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7CisJCQkJCX0KKwor CQkJCQkvKgorCQkJCQkgKiBUaGUgbGVhZidzIGtleSBzdGlsbCBtYXRjaGVzIHRoZSBsaXZl IHR1cGxlLiAgSWYgdGhlCisJCQkJCSAqIGNoYWluIHdhbGsgY3Jvc3NlZCBhIEhPVC1pbmRl eGVkIGhvcCBhbmQgcmVzb2x2ZWQgdG8KKwkJCQkJICogdGhlIHZlcnkgdHVwbGUgdGhlIGNh bGxlciBpcyBpbnNlcnRpbmcgYW4gZW50cnkgZm9yLAorCQkJCQkgKiB0aGlzIGlzIG5vdCBh IGR1cGxpY2F0ZSAtLSBpdCBpcyB0aGUgc2FtZSBsb2dpY2FsIHJvdworCQkJCQkgKiBiZWlu ZyByZS1pbmRleGVkIChlLmcuIGEgSE9ULWluZGV4ZWQgVVBEQVRFIHRoYXQgbGVmdAorCQkJ CQkgKiB0aGlzIGluZGV4J3Mga2V5IHVuY2hhbmdlZCwgb3IgYSBrZXkgY3ljbGVkIGF3YXkg YW5kCisJCQkJCSAqIGJhY2spLiBTa2lwIGl0IHJhdGhlciB0aGFuIHJhaXNpbmcgYSBzcHVy aW91cyB1bmlxdWUKKwkJCQkJICogdmlvbGF0aW9uLgorCQkJCQkgKi8KKwkJCQkJaWYgKGhp X3JlY2hlY2sgJiYKKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZSgmaHRpZCwgJml0dXAtPnRf dGlkKSA9PSAwKQorCQkJCQl7CisJCQkJCQlwcmV2YWxsZGVhZCA9IGZhbHNlOworCQkJCQkJ aWYgKG5idWYgIT0gSW52YWxpZEJ1ZmZlcikKKwkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1 Zik7CisJCQkJCQluYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwkJCQkJCUV4ZWNDbGVhclR1cGxl KGNoYWluX3dhbGtfc2xvdCk7CisJCQkJCQlnb3RvIGJ0X2NoYWluX3dhbGtfc2tpcDsKKwkJ CQkJfQorCQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90ICE9IE5VTEwpCisJCQkJCQlFeGVjQ2xl YXJUdXBsZShjaGFpbl93YWxrX3Nsb3QpOworCiAJCQkJCS8qCiAJCQkJCSAqIEl0IGlzIGEg ZHVwbGljYXRlLiBJZiB3ZSBhcmUgb25seSBkb2luZyBhIHBhcnRpYWwKIAkJCQkJICogY2hl Y2ssIHRoZW4gZG9uJ3QgYm90aGVyIGNoZWNraW5nIGlmIHRoZSB0dXBsZSBpcyBiZWluZwpA QCAtNTc4LDYgKzY1Niw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVElu c2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQl7CiAJCQkJ CQlpZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQkJCQkJCV9idF9yZWxidWYocmVsLCBu YnVmKTsKKwkJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCQkJCQkJKmlzX3VuaXF1ZSA9 IGZhbHNlOwogCQkJCQkJcmV0dXJuIEludmFsaWRUcmFuc2FjdGlvbklkOwogCQkJCQl9CkBA IC01OTMsNiArNjczLDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5z ZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCXsKIAkJCQkJ CWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5i dWYpOworCQkJCQkJaWYgKGNoYWluX3dhbGtfc2xvdCkKKwkJCQkJCQlFeGVjRHJvcFNpbmds ZVR1cGxlVGFibGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CiAJCQkJCQkvKiBUZWxsIF9idF9k b2luc2VydCB0byB3YWl0Li4uICovCiAJCQkJCQkqc3BlY3VsYXRpdmVUb2tlbiA9IFNuYXBz aG90RGlydHkuc3BlY3VsYXRpdmVUb2tlbjsKIAkJCQkJCS8qIENhbGxlciByZWxlYXNlcyBs b2NrIG9uIGJ1ZiBpbW1lZGlhdGVseSAqLwpAQCAtNjE5LDcgKzcwMSw4IEBAIF9idF9jaGVj a191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxh dGlvbiBoZWFwUmVsLAogCQkJCQkgKi8KIAkJCQkJaHRpZCA9IGl0dXAtPnRfdGlkOwogCQkJ CQlpZiAodGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVhcFJlbCwgJmh0aWQsCi0J CQkJCQkJCQkJCQkJICBTbmFwc2hvdFNlbGYsIE5VTEwpKQorCQkJCQkJCQkJCQkJCSAgU25h cHNob3RTZWxmLCBOVUxMLAorCQkJCQkJCQkJCQkJCSAgTlVMTCwgTlVMTCkpCiAJCQkJCXsK IAkJCQkJCS8qIE5vcm1hbCBjYXNlIC0tLSBpdCdzIHN0aWxsIGxpdmUgKi8KIAkJCQkJfQpA QCAtNjU0LDYgKzczNyw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVElu c2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQlfYnRfcmVs YnVmKHJlbCwgaW5zZXJ0c3RhdGUtPmJ1Zik7CiAJCQkJCWluc2VydHN0YXRlLT5idWYgPSBJ bnZhbGlkQnVmZmVyOwogCQkJCQlpbnNlcnRzdGF0ZS0+Ym91bmRzX3ZhbGlkID0gZmFsc2U7 CisJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CiAKIAkJCQkJewogCQkJCQkJRGF0dW0JCXZh bHVlc1tJTkRFWF9NQVhfS0VZU107CkBAIC03MTUsNiArODAwLDkgQEAgX2J0X2NoZWNrX3Vu aXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkJICovCiAJCQkJaWYgKCFhbGxfZGVhZCAmJiBpbnBvc3RpbmcpCiAJ CQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisKKwkJYnRfY2hhaW5fd2Fsa19za2lwOgorCQkJ CTsKIAkJCX0KIAkJfQogCkBAIC03ODIsOSArODcwLDg0IEBAIF9idF9jaGVja191bmlxdWUo UmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFw UmVsLAogCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCV9idF9yZWxidWYocmVsLCBu YnVmKTsKIAorCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKKwogCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIH0KIAorLyoKKyAqCV9idF9oZWFwX2tleXNfZXF1YWxfbGVhZigpIC0tIENvbXBh cmUgYSBoZWFwIHR1cGxlJ3MgY3VycmVudCBidHJlZSBrZXkKKyAqCWFnYWluc3QgdGhlIGtl eSBzdG9yZWQgaW4gYSBsZWFmIEluZGV4VHVwbGUuCisgKgorICoJVGhlIEhPVC1pbmRleGVk IHVuaXF1ZS1jaGVjayBwYXRoIHVzZXMgdGhpcyB0byBkaXN0aW5ndWlzaCBhIGxpdmUgdHVw bGUKKyAqCXdob3NlIGN1cnJlbnQga2V5IHN0aWxsIG1hdGNoZXMgdGhlIGFycml2aW5nIGxl YWYgKGEgZ2VudWluZSBjb25mbGljdCkKKyAqCWZyb20gYSBzdGFsZSBjaGFpbiBoaXQ6IHdp dGggYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSkgY2hhaW4KKyAqCXRo ZSBsZWFmIGVudHJ5IGZvciBhbiBvbGQga2V5IHN0aWxsIHJlc29sdmVzIHRvIHRoZSBsaXZl IHR1cGxlLCB3aG9zZQorICoJY3VycmVudCBpbmRleCBmb3JtIG1heSBkaWZmZXIuCisgKgor ICoJRXF1YWxpdHkgbXVzdCBhZ3JlZSB3aXRoIHRoZSBpbmRleCdzIG93biBub3Rpb24gb2Yg ZXF1YWxpdHksIGJlY2F1c2UgdGhlCisgKgljYWxsZXIgdXNlcyB0aGUgdmVyZGljdCB0byBk ZWNpZGUgd2hldGhlciB0byByYWlzZSBhIHVuaXF1ZSB2aW9sYXRpb24uCisgKglXZSBjb21w YXJlIGVhY2gga2V5IGNvbHVtbiB3aXRoIGl0cyBidHJlZSBvcmRlcmluZyBwcm9jZWR1cmUg KEJUT1JERVJfUFJPQywKKyAqCXRoZSBzYW1lIHN1cHBvcnQgZnVuY3Rpb24gX2J0X21rc2Nh bmtleSB1c2VzKSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9uCisgKgktLSBub3QgYSBi aXR3aXNlIGltYWdlIGNvbXBhcmlzb24uICBCaXR3aXNlIGVxdWFsaXR5IHdvdWxkIHdyb25n bHkgdHJlYXQKKyAqCW9wY2xhc3MtZXF1YWwgYnV0IGltYWdlLWRpc3RpbmN0IHZhbHVlcyAo bnVtZXJpYyAxLjAgdnMgMS4wMCwgZmxvYXQgLTAuMAorICoJdnMgMC4wLCB0ZXh0IHVuZGVy IGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24pIGFzICJub3QgZXF1YWwiIGFuZCBza2lw IGEKKyAqCWdlbnVpbmUgZHVwbGljYXRlLgorICoKKyAqCVRoaXMgaXMgY2FsbGVkIGZyb20g X2J0X2NoZWNrX3VuaXF1ZSB3aGlsZSB0aGUgbGVhZiBidWZmZXIgaXMgbG9ja2VkLCBzbyBp dAorICoJZGVsaWJlcmF0ZWx5IGF2b2lkcyBleGVjdXRvciBtYWNoaW5lcnk6IGl0IGZldGNo ZXMgZWFjaCBrZXkgYXR0cmlidXRlCisgKglzdHJhaWdodCBmcm9tIHRoZSBzbG90LiAgSXQg aXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBhCisgKglmcmVz aCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlCisgKglkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0aGF0IHRvdWNoZXMgYW4g ZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZQorICoJaW5kZXggaGVyZSBoYXMg bm8gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkgaXMgYSByZWFsIGF0dHJp YnV0ZQorICoJbnVtYmVyKS4gIFdlIGFzc2VydCB0aGF0IHJhdGhlciB0aGFuIGhhbmRsZSBh IGtleWNvbCA9PSAwIGNhc2UgdGhhdCBjYW5ub3QKKyAqCW9jY3VyOyBpZiBleHByZXNzaW9u LWluZGV4IHNlbGVjdGl2ZSBtYWludGVuYW5jZSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUKKyAq CWZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbiBleHByZXNzaW9uLWV2YWx1YXRpbmcgY29tcGFy aXNvbiB3b3VsZCBiZSBhZGRlZC4KKyAqCisgKgloZWFwU2xvdCBtdXN0IGFscmVhZHkgYmUg cG9wdWxhdGVkIGJ5IHRoZSBjYWxsZXIgKHZpYQorICoJdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUgLyB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjaykuCisgKi8KK3N0YXRpYyBib29s CitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxl YWZ0dXAsCisJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVTbG90ICpoZWFwU2xvdCkKK3sKKwlU dXBsZURlc2MJaW5kZXhEZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCWludAkJCW5r ZXkgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CisJRm9y bV9wZ19pbmRleCBpbmRleFN0cnVjdCA9IHJlbC0+cmRfaW5kZXg7CisKKwlBc3NlcnQobGVh ZnR1cCAhPSBOVUxMKTsKKwlBc3NlcnQoaGVhcFNsb3QgIT0gTlVMTCAmJiAhVFRTX0VNUFRZ KGhlYXBTbG90KSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5rZXk7IGkrKykKKwl7CisJ CUF0dHJOdW1iZXIJa2V5Y29sID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbaV07CisJ CURhdHVtCQloZWFwX2RhdHVtOworCQlib29sCQloZWFwX2lzbnVsbDsKKwkJRGF0dW0JCWxl YWZfZGF0dW07CisJCWJvb2wJCWxlYWZfaXNudWxsOworCQlGbWdySW5mbyAgICpjbXBwcm9j OworCisJCS8qIEV4cHJlc3Npb24ga2V5IGNvbHVtbnMgY2Fubm90IHJlYWNoIGhlcmUgKHNl ZSBoZWFkZXIpLiAqLworCQlBc3NlcnQoa2V5Y29sICE9IDApOworCisJCWhlYXBfZGF0dW0g PSBzbG90X2dldGF0dHIoaGVhcFNsb3QsIGtleWNvbCwgJmhlYXBfaXNudWxsKTsKKwkJbGVh Zl9kYXR1bSA9IGluZGV4X2dldGF0dHIobGVhZnR1cCwgaSArIDEsIGluZGV4RGVzYywgJmxl YWZfaXNudWxsKTsKKworCQlpZiAoaGVhcF9pc251bGwgIT0gbGVhZl9pc251bGwpCisJCQly ZXR1cm4gZmFsc2U7CisJCWlmIChoZWFwX2lzbnVsbCkKKwkJCWNvbnRpbnVlOworCisJCS8q IG9wY2xhc3MgMy13YXkgY29tcGFyZSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9uOyAw ID09IGVxdWFsICovCisJCWNtcHByb2MgPSBpbmRleF9nZXRwcm9jaW5mbyhyZWwsIGkgKyAx LCBCVE9SREVSX1BST0MpOworCQlpZiAoRGF0dW1HZXRJbnQzMihGdW5jdGlvbkNhbGwyQ29s bChjbXBwcm9jLCByZWwtPnJkX2luZGNvbGxhdGlvbltpXSwKKwkJCQkJCQkJCQkJaGVhcF9k YXR1bSwgbGVhZl9kYXR1bSkpICE9IDApCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0 dXJuIHRydWU7Cit9CiAKIC8qCiAgKglfYnRfZmluZGluc2VydGxvYygpIC0tIEZpbmRzIGFu IGluc2VydCBsb2NhdGlvbiBmb3IgYSB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cmVlLmMKaW5kZXggM2RmMmM3NTJlYWQuLjViMjY5ZWFhYTkzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTQwOCw2ICs0MDgsMTYgQEAgYnRyZXNjYW4oSW5kZXhT Y2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCiAJICogcmFj ZSBjb25kaXRpb24gaW52b2x2aW5nIFZBQ1VVTSBzZXR0aW5nIHBhZ2VzIGFsbC12aXNpYmxl IGluIHRoZSBWTS4KIAkgKiBJdCdzIGFsc28gdW5zYWZlIGZvciBwbGFpbiBpbmRleCBzY2Fu cyB0aGF0IHVzZSBhIG5vbi1NVkNDIHNuYXBzaG90LgogCSAqCisJICogTm90ZSB0aGF0IHdh bnRpbmcgdGhlIGluZGV4IHR1cGxlICh4c193YW50X2l0dXApIGlzIG5vdCBieSBpdHNlbGYg YQorCSAqIHJlYXNvbiB0byByZXRhaW4gdGhlIHBpbjogYnRyZWUgY29waWVzIGVhY2ggcmV0 dXJuZWQgSW5kZXhUdXBsZSBpbnRvCisJICogc28tPmN1cnJUdXBsZXMgKHNjYW4tbG9jYWwg bWVtb3J5KSBhbmQgcG9pbnRzIHhzX2l0dXAgdGhlcmUsIHNvIHRoZQorCSAqIHR1cGxlIHN0 YXlzIHZhbGlkIGFmdGVyIHRoZSBwaW4gaXMgZHJvcHBlZC4gIE9ubHkgZ2VudWluZSBpbmRl eC1vbmx5CisJICogc2NhbnMgKHhzX2luZGV4X29ubHkpLCB3aGljaCBtYXkgcmV0dXJuIGEg dHVwbGUgd2l0aG91dCBmZXRjaGluZyB0aGUKKwkgKiBoZWFwIGFuZCB0aGVyZWZvcmUgcmVs eSBvbiB0aGUgVk0sIG11c3Qga2VlcCB0aGUgcGluLiAgQSBwbGFpbiBpbmRleAorCSAqIHNj YW4gdGhhdCBzZXRzIHhzX3dhbnRfaXR1cCBtZXJlbHkgdG8gaW5zcGVjdCBvciByZWNoZWNr IHRoZSBpbmRleAorCSAqIHR1cGxlIHN0aWxsIGZldGNoZXMgYW5kIHZpc2liaWxpdHktY2hl Y2tzIHRoZSBoZWFwLCBzbyBpdCBoYXMgbm8gVk0KKwkgKiByYWNlIGFuZCBtYXkgZHJvcCBw aW5zIGxpa2UgYW55IG90aGVyIHBsYWluIHNjYW4uCisJICoKIAkgKiBBbHNvIG9wdCBvdXQg b2YgZHJvcHBpbmcgbGVhZiBwYWdlIHBpbnMgZWFnZXJseSBkdXJpbmcgYml0bWFwIHNjYW5z LgogCSAqIFBpbnMgY2Fubm90IGJlIGhlbGQgZm9yIG1vcmUgdGhhbiBhbiBpbnN0YW50IGR1 cmluZyBiaXRtYXAgc2NhbnMgZWl0aGVyCiAJICogd2F5LCBzbyB3ZSBtaWdodCBhcyB3ZWxs IGF2b2lkIHdhc3RpbmcgY3ljbGVzIG9uIGFjcXVpcmluZyBwYWdlIExTTnMuCkBAIC00MTYs NyArNDI2LDcgQEAgYnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5r ZXksIGludCBuc2NhbmtleXMsCiAJICoKIAkgKiBOb3RlOiBzby0+ZHJvcFBpbiBzaG91bGQg bmV2ZXIgY2hhbmdlIGFjcm9zcyByZXNjYW5zLgogCSAqLwotCXNvLT5kcm9wUGluID0gKCFz Y2FuLT54c193YW50X2l0dXAgJiYKKwlzby0+ZHJvcFBpbiA9ICghc2Nhbi0+eHNfaW5kZXhf b25seSAmJgogCQkJCSAgIElzTVZDQ0xpa2VTbmFwc2hvdChzY2FuLT54c19zbmFwc2hvdCkg JiYKIAkJCQkgICBzY2FuLT5oZWFwUmVsYXRpb24gIT0gTlVMTCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCmluZGV4IDEyYzI2NzRjYmQ3Li5mMDVjYWJjOGM2NSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0yNDIsMTkgKzI0MiwzMSBAQCBi b29sCiB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJ CQkJICBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJ CQkJCQkgIGJvb2wgKmFsbF9kZWFkKQorCQkJCQkJCSAgYm9vbCAqYWxsX2RlYWQsCisJCQkJ CQkJICBib29sICpob3RfaW5kZXhlZF9yZWNoZWNrX291dCwKKwkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICprZWVwX3Nsb3QpCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbjsKIAlU dXBsZVRhYmxlU2xvdCAqc2xvdDsKIAlib29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAJYm9v bAkJZm91bmQ7CiAKLQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKKwlz bG90ID0ga2VlcF9zbG90ID8ga2VlcF9zbG90IDogdGFibGVfc2xvdF9jcmVhdGUocmVsLCBO VUxMKTsKIAlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBTT19OT05FKTsK IAlmb3VuZCA9IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3Qs IHNsb3QsICZjYWxsX2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOworCisJLyoKKwkgKiBT dXJmYWNlIHRoZSB0YWJsZSBBTSdzIEhPVC9TSVUgcmVjaGVjayBzaWduYWwgdG8gdGhlIGNh bGxlciAodGhlIGluZGV4CisJICogQU0sIHdoaWNoIHJlY2hlY2tzIHRoZSBhcnJpdmluZyBs ZWFmIGtleSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlKTsgdGhlCisJICogc2NhbiBpcyBmcmVl ZCBiZWxvdywgc28gY29weSBpdCBvdXQuCisJICovCisJaWYgKGhvdF9pbmRleGVkX3JlY2hl Y2tfb3V0ICE9IE5VTEwpCisJCSpob3RfaW5kZXhlZF9yZWNoZWNrX291dCA9IGZvdW5kICYm IHNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2s7CisKIAl0YWJsZV9pbmRleF9mZXRjaF9l bmQoc2Nhbik7Ci0JRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwlpZiAo a2VlcF9zbG90ID09IE5VTEwpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xv dCk7CiAKIAlyZXR1cm4gZm91bmQ7CiB9CkBAIC0zNjEsOCArMzczLDcgQEAgdm9pZAogc2lt cGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQs CiAJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCwKLQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0J CQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQkJICBCaXRt YXBzZXQgKiptb2RpZmllZF9hdHRycykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0Zh aWx1cmVEYXRhIHRtZmQ7CkBAIC0zNzMsOCArMzg0LDcgQEAgc2ltcGxlX3RhYmxlX3R1cGxl X3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCTAsIHNu YXBzaG90LCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29t bWl0ICovICwKIAkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRf aWR4X2F0dHJzLAotCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCW1vZGlmaWVk X2F0dHJzKTsKIAogCXN3aXRjaCAocmVzdWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcu YwppbmRleCBmZDdkMmVjMGUzYS4uZWZkOGExOWMyMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 aW5nLmMKQEAgLTE4LDExICsxOCwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgog I2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRh aWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv eGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9n L2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRl ICJub2Rlcy9iaXRtYXBzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRl ICJ1dGlscy9yZWxjYWNoZS5oIgogCiAKIC8qCkBAIC02OSwxMSArNzIsMTcgQEAgQ2F0YWxv Z0Nsb3NlSW5kZXhlcyhDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkKICAqCiAgKiBUaGlz IHNob3VsZCBiZSBjYWxsZWQgZm9yIGVhY2ggaW5zZXJ0ZWQgb3IgdXBkYXRlZCBjYXRhbG9n IHR1cGxlLgogICoKLSAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJzaW9u IG9mIEV4ZWNJbnNlcnRJbmRleFR1cGxlcy4KKyAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBj dXQtZG93biB2ZXJzaW9uIG9mIEV4ZWNJbnNlcnRJbmRleFR1cGxlcy4gIEZvcgorICogVVBE QVRFIHBhdGhzIHRoZSBjYWxsZXIgc3VwcGxpZXMgdXBkYXRlX2FsbF9pbmRleGVzIChmcm9t CisgKiB0YWJsZV90dXBsZV91cGRhdGUgLyBzaW1wbGVfaGVhcF91cGRhdGUpIHNvIHdlIGNh biB0ZWxsIHdoaWNoIGluZGV4ZXMKKyAqIGFjdHVhbGx5IG5lZWQgYSBuZXcgZW50cnk6IHVw ZGF0ZV9hbGxfaW5kZXhlcyBpcyB0cnVlIGZvciBhIGZyZXNoIGluc2VydCBvcgorICogYSBu b24tSE9UIHVwZGF0ZSAoZXZlcnkgaW5kZXggZ2V0cyBhbiBlbnRyeSksIGZhbHNlIGZvciBh IGNsYXNzaWMtSE9UCisgKiBjYXRhbG9nIHVwZGF0ZSAobm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgYXJlIHNraXBwZWQsIHNpbmNlIHRoZWlyIGV4aXN0aW5nCisgKiBlbnRyaWVzIHN0aWxs IHJlc29sdmUgdGhlIGNoYWluKS4KICAqLwogc3RhdGljIHZvaWQKIENhdGFsb2dJbmRleElu c2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwK LQkJCQkgICBUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMpCisJCQkJICAgYm9vbCB1 cGRhdGVfYWxsX2luZGV4ZXMpCiB7CiAJaW50CQkJaTsKIAlpbnQJCQludW1JbmRleGVzOwpA QCAtODMsMjAgKzkyLDYgQEAgQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRl IGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAogCUluZGV4SW5mbyAqKmluZGV4SW5m b0FycmF5OwogCURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCWJvb2wJCWlzbnVs bFtJTkRFWF9NQVhfS0VZU107Ci0JYm9vbAkJb25seVN1bW1hcml6ZWQgPSAodXBkYXRlSW5k ZXhlcyA9PSBUVV9TdW1tYXJpemluZyk7Ci0KLQkvKgotCSAqIEhPVCB1cGRhdGUgZG9lcyBu b3QgcmVxdWlyZSBpbmRleCBpbnNlcnRzLiBCdXQgd2l0aCBhc3NlcnRzIGVuYWJsZWQgd2UK LQkgKiB3YW50IHRvIGNoZWNrIHRoYXQgaXQnZCBiZSBsZWdhbCB0byBjdXJyZW50bHkgaW5z ZXJ0IGludG8gdGhlCi0JICogdGFibGUvaW5kZXguCi0JICovCi0jaWZuZGVmIFVTRV9BU1NF UlRfQ0hFQ0tJTkcKLQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmICFv bmx5U3VtbWFyaXplZCkKLQkJcmV0dXJuOwotI2VuZGlmCi0KLQkvKiBXaGVuIG9ubHkgdXBk YXRpbmcgc3VtbWFyaXplZCBpbmRleGVzLCB0aGUgdHVwbGUgaGFzIHRvIGJlIEhPVC4gKi8K LQlBc3NlcnQoKCFvbmx5U3VtbWFyaXplZCkgfHwgSGVhcFR1cGxlSXNIZWFwT25seShoZWFw VHVwbGUpKTsKIAogCS8qCiAJICogR2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIHN0YXRlIHN0 cnVjdHVyZS4gIEZhbGwgb3V0IGlmIG5vdGhpbmcgdG8gZG8uCkBAIC0xMjAsNiArMTE1LDcg QEAgQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlLCBIZWFw VHVwbGUgaGVhcFR1cGxlLAogCXsKIAkJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCQlSZWxh dGlvbglpbmRleDsKKwkJYm9vbAkJaW5kZXhfdW5jaGFuZ2VkOwogCiAJCWluZGV4SW5mbyA9 IGluZGV4SW5mb0FycmF5W2ldOwogCQlpbmRleCA9IHJlbGF0aW9uRGVzY3NbaV07CkBAIC0x MzgsMjAgKzEzNCwxNiBAQCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCiAJCUFzc2VydChpbmRleC0+cmRfaW5k ZXgtPmluZGltbWVkaWF0ZSk7CiAJCUFzc2VydChpbmRleEluZm8tPmlpX051bUluZGV4S2V5 QXR0cnMgIT0gMCk7CiAKLQkJLyogc2VlIGVhcmxpZXIgY2hlY2sgYWJvdmUgKi8KLSNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBU dXBsZSkgJiYgIW9ubHlTdW1tYXJpemVkKQotCQl7Ci0JCQlBc3NlcnQoIVJlaW5kZXhJc1By b2Nlc3NpbmdJbmRleChSZWxhdGlvbkdldFJlbGlkKGluZGV4KSkpOwotCQkJY29udGludWU7 Ci0JCX0KLSNlbmRpZgkJCQkJCQkvKiBVU0VfQVNTRVJUX0NIRUNLSU5HICovCi0KIAkJLyoK LQkJICogU2tpcCBpbnNlcnRpb25zIGludG8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgaWYg d2Ugb25seSBuZWVkIHRvCi0JCSAqIHVwZGF0ZSBzdW1tYXJpemluZyBpbmRleGVzLgorCQkg KiBEZWNpZGUgd2hldGhlciB0aGlzIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgT24gSU5T RVJUIG9yIGEKKwkJICogbm9uLUhPVCB1cGRhdGUgKHVwZGF0ZV9hbGxfaW5kZXhlcykgZXZl cnkgaW5kZXggZ2V0cyBvbmUuICBPbiBhCisJCSAqIGNsYXNzaWMtSE9UIGNhdGFsb2cgdXBk YXRlIG5vIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQsIHNvIHRoZQorCQkgKiBub24tc3Vt bWFyaXppbmcgaW5kZXhlcyBhcmUgc2tpcHBlZCAoc3VtbWFyaXppbmcgaW5kZXhlcyBhbHdh eXMgZ2V0CisJCSAqIGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGVpciBibG9jay1sZXZlbCBzdW1t YXJpZXMgYmVsb3cpLgogCQkgKi8KLQkJaWYgKG9ubHlTdW1tYXJpemVkICYmICFpbmRleElu Zm8tPmlpX1N1bW1hcml6aW5nKQorCQlpbmRleF91bmNoYW5nZWQgPSAhdXBkYXRlX2FsbF9p bmRleGVzOworCisJCWlmIChpbmRleF91bmNoYW5nZWQgJiYgIWluZGV4SW5mby0+aWlfU3Vt bWFyaXppbmcpCiAJCQljb250aW51ZTsKIAogCQkvKgpAQCAtMjQwLDcgKzIzMiw3IEBAIENh dGFsb2dUdXBsZUluc2VydChSZWxhdGlvbiBoZWFwUmVsLCBIZWFwVHVwbGUgdHVwKQogCiAJ c2ltcGxlX2hlYXBfaW5zZXJ0KGhlYXBSZWwsIHR1cCk7CiAKLQlDYXRhbG9nSW5kZXhJbnNl cnQoaW5kc3RhdGUsIHR1cCwgVFVfQWxsKTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3Rh dGUsIHR1cCwgdHJ1ZSk7CiAJQ2F0YWxvZ0Nsb3NlSW5kZXhlcyhpbmRzdGF0ZSk7CiB9CiAK QEAgLTI2MCw3ICsyNTIsNyBAQCBDYXRhbG9nVHVwbGVJbnNlcnRXaXRoSW5mbyhSZWxhdGlv biBoZWFwUmVsLCBIZWFwVHVwbGUgdHVwLAogCiAJc2ltcGxlX2hlYXBfaW5zZXJ0KGhlYXBS ZWwsIHR1cCk7CiAKLQlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cCwgVFVfQWxs KTsKKwlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUsIHR1cCwgdHJ1ZSk7CiB9CiAKIC8q CkBAIC0yOTEsNyArMjgzLDcgQEAgQ2F0YWxvZ1R1cGxlc011bHRpSW5zZXJ0V2l0aEluZm8o UmVsYXRpb24gaGVhcFJlbCwgVHVwbGVUYWJsZVNsb3QgKipzbG90LAogCiAJCXR1cGxlID0g RXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90W2ldLCB0cnVlLCAmc2hvdWxkX2ZyZWUpOwog CQl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3RbaV0tPnR0c190YWJsZU9pZDsKLQkJQ2F0YWxv Z0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXBsZSwgVFVfQWxsKTsKKwkJQ2F0YWxvZ0luZGV4 SW5zZXJ0KGluZHN0YXRlLCB0dXBsZSwgdHJ1ZSk7CiAKIAkJaWYgKHNob3VsZF9mcmVlKQog CQkJaGVhcF9mcmVldHVwbGUodHVwbGUpOwpAQCAtMzEzLDE1ICszMDUsMTUgQEAgdm9pZAog Q2F0YWxvZ1R1cGxlVXBkYXRlKFJlbGF0aW9uIGhlYXBSZWwsIGNvbnN0IEl0ZW1Qb2ludGVy RGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cCkKIHsKIAlDYXRhbG9nSW5kZXhTdGF0ZSBpbmRz dGF0ZTsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJYm9v bAkJdXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJhaW50 cyhoZWFwUmVsLCB0dXApOwogCiAJaW5kc3RhdGUgPSBDYXRhbG9nT3BlbkluZGV4ZXMoaGVh cFJlbCk7CiAKLQlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3RpZCwgdHVwLCAmdXBk YXRlSW5kZXhlcyk7CisJc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwg JnVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAKLQlDYXRhbG9nSW5kZXhJbnNlcnQoaW5kc3RhdGUs IHR1cCwgdXBkYXRlSW5kZXhlcyk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0 dXAsIHVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAJQ2F0YWxvZ0Nsb3NlSW5kZXhlcyhpbmRzdGF0 ZSk7CiB9CiAKQEAgLTMzNywxMyArMzI5LDEzIEBAIHZvaWQKIENhdGFsb2dUdXBsZVVwZGF0 ZVdpdGhJbmZvKFJlbGF0aW9uIGhlYXBSZWwsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3Rp ZCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJCSAgIENhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRl KQogewotCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcyA9IFRVX0FsbDsKKwlib29s CQl1cGRhdGVfYWxsX2luZGV4ZXM7CiAKIAlDYXRhbG9nVHVwbGVDaGVja0NvbnN0cmFpbnRz KGhlYXBSZWwsIHR1cCk7CiAKLQlzaW1wbGVfaGVhcF91cGRhdGUoaGVhcFJlbCwgb3RpZCwg dHVwLCAmdXBkYXRlSW5kZXhlcyk7CisJc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90 aWQsIHR1cCwgJnVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAKLQlDYXRhbG9nSW5kZXhJbnNlcnQo aW5kc3RhdGUsIHR1cCwgdXBkYXRlSW5kZXhlcyk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHVwZGF0ZV9hbGxfaW5kZXhlcyk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMKaW5kZXggNGFhNTJhNGJkMjUuLmUwYmMwMWY2M2QzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCkBAIC0zMDcsOCArMzA3LDYgQEAgY3JlYXRlX3RvYXN0X3RhYmxl KFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlpbmRl eEluZm8tPmlpX1VuaXF1ZSA9IHRydWU7CiAJaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0ID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMgPSB0cnVlOwot CWluZGV4SW5mby0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCWluZGV4SW5mby0+ aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQg PSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJaW5k ZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvcmVwYWNrLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYwpp bmRleCA5NzYxYmRhYzlkMC4uNzA2YmMyNDQ5OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3JlcGFjay5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5j CkBAIC0yNjg4LDE0ICsyNjg4LDE0IEBAIGFwcGx5X2NvbmN1cnJlbnRfdXBkYXRlKFJlbGF0 aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNwaWxsZWRfdHVwbGUsCiB7CiAJTG9ja1R1cGxl TW9kZSBsb2NrbW9kZTsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwotCVRVX1VwZGF0ZUluZGV4 ZXMgdXBkYXRlX2luZGV4ZXM7CiAJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOwog CVRNX1Jlc3VsdAlyZXM7CiAKIAkvKgogCSAqIENvbXB1dGUgdGhlIHNldCBvZiBtb2RpZmll ZCBpbmRleGVkIGF0dHJpYnV0ZXMgYnkgY29tcGFyaW5nIHRoZSBvbGQKLQkgKiAob25kaXNr KSBhbmQgbmV3IChzcGlsbGVkKSB0dXBsZXM7IGhlYXBfdXBkYXRlIG5lZWRzIGl0IGZvciBh IGNvcnJlY3QKLQkgKiBIT1QgZGVjaXNpb24gKGEgTlVMTCBzZXQgd291bGQgbG9vayBsaWtl ICJubyBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkIikuCisJICogKG9uZGlzaykgYW5kIG5ldyAo c3BpbGxlZCkgdHVwbGVzLiAgaGVhcF91cGRhdGUgbmVlZHMgdGhpcyB0byBtYWtlIGEKKwkg KiBjb3JyZWN0IEhPVCBkZWNpc2lvbjsgd2l0aG91dCBpdCBtb2RpZmllZF9pZHhfYXR0cnMg d291bGQgYmUgTlVMTCBhbmQKKwkgKiBoZWFwX3VwZGF0ZSB3b3VsZCBhbHdheXMgdHJlYXQg dGhlIHVwZGF0ZSBhcyBIT1QtZWxpZ2libGUuCiAJICovCiAJbW9kaWZpZWRfaWR4X2F0dHJz ID0gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoY2hnY3h0LT5jY19ycmksCiAJCQkJCQkJ CQkJCQkJb25kaXNrX3R1cGxlLApAQCAtMjcxMCwyOSArMjcxMCwzMyBAQCBhcHBseV9jb25j dXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1 cGxlLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIEludmFsaWRTbmFwc2hv dCwKIAkJCQkJCQkgZmFsc2UsCi0JCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIG1vZGlmaWVk X2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkgJnRtZmQsICZsb2NrbW9k ZSwKKwkJCQkJCQkgJm1vZGlmaWVkX2lkeF9hdHRycyk7CiAJaWYgKHJlcyAhPSBUTV9PaykK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJ T05fRkFJTFVSRSksCiAJCQkJZXJybXNnKCJjb3VsZCBub3QgYXBwbHkgY29uY3VycmVudCAl cyBvbiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkgICAiVVBEQVRFIiwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpOwogCi0JaWYgKHVwZGF0ZV9pbmRleGVzICE9IFRVX05vbmUp CisJaWYgKGNoZ2N4dC0+Y2NfcnJpLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lz X2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCiAJewotCQl1aW50MzIJCWZsYWdzID0gRUlJ VF9JU19VUERBVEU7CisJCWJvb2wJCWFsbF9pbmRleGVzID0KKwkJCWJtc19pc19tZW1iZXIo VGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRycyk7CiAKLQkJ aWYgKHVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKQotCQkJZmxhZ3MgfD0gRUlJ VF9PTkxZX1NVTU1BUklaSU5HOworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQoY2hnY3h0LT5j Y19ycmksIG1vZGlmaWVkX2lkeF9hdHRycyk7CiAJCUV4ZWNJbnNlcnRJbmRleFR1cGxlcyhj aGdjeHQtPmNjX3JyaSwKIAkJCQkJCQkgIGNoZ2N4dC0+Y2NfZXN0YXRlLAotCQkJCQkJCSAg ZmxhZ3MsCisJCQkJCQkJICBFSUlUX0lTX1VQREFURSB8CisJCQkJCQkJICAoYWxsX2luZGV4 ZXMgPworCQkJCQkJCSAgIDAgOiBFSUlUX0lTX0hPVF9JTkRFWEVEKSwKIAkJCQkJCQkgIHNw aWxsZWRfdHVwbGUsCiAJCQkJCQkJICBOSUwsIE5VTEwpOwogCX0KIAotCXBnc3RhdF9wcm9n cmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAx KTsKLQogCWJtc19mcmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7CisKKwlwZ3N0YXRfcHJvZ3Jl c3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRFRCwgMSk7 CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmlu ZGV4IGViMzgzODEyOTAxLi5hMjMxNDQ1OTJlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0luZGV4aW5nLmMKQEAgLTExMywxMSArMTEzLDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9p bmRleC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVz LmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KQEAgLTE0 MCwxMSArMTQyLDYgQEAgc3RhdGljIGJvb2wgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9j b25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIGJvb2wg aW5kZXhfcmVjaGVja19jb25zdHJhaW50KFJlbGF0aW9uIGluZGV4LCBjb25zdCBPaWQgKmNv bnN0cl9wcm9jcywKIAkJCQkJCQkJCSBjb25zdCBEYXR1bSAqZXhpc3RpbmdfdmFsdWVzLCBj b25zdCBib29sICpleGlzdGluZ19pc251bGwsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKm5l d192YWx1ZXMpOwotc3RhdGljIGJvb2wgaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAotCQkJCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwg SW5kZXhJbmZvICppbmRleEluZm8sCi0JCQkJCQkJCQkgIFJlbGF0aW9uIGluZGV4UmVsYXRp b24pOwotc3RhdGljIGJvb2wgaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2Rl ICpub2RlLAotCQkJCQkJCQkJCQlCaXRtYXBzZXQgKmFsbFVwZGF0ZWRDb2xzKTsKIHN0YXRp YyB2b2lkIEV4ZWNXaXRob3V0T3ZlcmxhcHNOb3RFbXB0eShSZWxhdGlvbiByZWwsIE5hbWVE YXRhIGF0dG5hbWUsIERhdHVtIGF0dHZhbCwKIAkJCQkJCQkJCQljaGFyIHR5cHR5cGUsIE9p ZCBhdHR0eXBpZCk7CiAKQEAgLTI3NywyNCArMjc0LDEyIEBAIEV4ZWNDbG9zZUluZGljZXMo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKICAqCQlpbnRvIGFsbCB0aGUgcmVsYXRp b25zIGluZGV4aW5nIHRoZSByZXN1bHQgcmVsYXRpb24KICAqCQl3aGVuIGEgaGVhcCB0dXBs ZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSByZXN1bHQgcmVsYXRpb24uCiAgKgotICoJCVdoZW4g RUlJVF9JU19VUERBVEUgaXMgc2V0IGFuZCBFSUlUX09OTFlfU1VNTUFSSVpJTkcgaXNuJ3Qs Ci0gKgkJZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbiBVUERBVEUgdGhhdCBjb3VsZCBub3Qg dXNlIGFuCi0gKgkJb3B0aW1pemF0aW9uIGxpa2UgaGVhcGFtJ3MgSE9UIChpbiBtb3JlIGdl bmVyYWwgdGVybXMgYQotICoJCWNhbGwgdG8gdGFibGVfdHVwbGVfdXBkYXRlKCkgdG9vayBw bGFjZSBhbmQgc2V0Ci0gKgkJJ3VwZGF0ZV9pbmRleGVzJyB0byBUVV9BbGwpLiAgUmVjZWl2 aW5nIHRoaXMgaGludCBtYWtlcwotICoJCXVzIGNvbnNpZGVyIGlmIHdlIHNob3VsZCBwYXNz IGRvd24gdGhlICdpbmRleFVuY2hhbmdlZCcKLSAqCQloaW50IGluIHR1cm4uICBUaGF0J3Mg c29tZXRoaW5nIHRoYXQgd2UgZmlndXJlIG91dCBmb3IKLSAqCQllYWNoIGluZGV4X2luc2Vy dCgpIGNhbGwgaWZmIEVJSVRfSVNfVVBEQVRFIGlzIHNldC4KLSAqCQkoV2hlbiB0aGF0IGZs YWcgaXMgbm90IHNldCB3ZSBhbHJlYWR5IGtub3cgbm90IHRvIHBhc3MgdGhlCi0gKgkJaGlu dCB0byBhbnkgaW5kZXguKQotICoKLSAqCQlJZiBFSUlUX09OTFlfU1VNTUFSSVpJTkcgaXMg c2V0LCBhbiBlcXVpdmFsZW50IG9wdGltaXphdGlvbiB0bwotICoJCUhPVCBoYXMgYmVlbiBh cHBsaWVkIGFuZCBhbnkgdXBkYXRlZCBjb2x1bW5zIGFyZSBpbmRleGVkCi0gKgkJb25seSBi eSBzdW1tYXJpemluZyBpbmRleGVzIChvciBpbiBtb3JlIGdlbmVyYWwgdGVybXMgYQotICoJ CWNhbGwgdG8gdGFibGVfdHVwbGVfdXBkYXRlKCkgdG9vayBwbGFjZSBhbmQgc2V0Ci0gKgkJ J3VwZGF0ZV9pbmRleGVzJyB0byBUVV9TdW1tYXJpemluZykuIFdlIGNhbiAoYW5kIG11c3Qp Ci0gKgkJdGhlcmVmb3JlIG9ubHkgdXBkYXRlIHRoZSBpbmRleGVzIHRoYXQgaGF2ZQotICoJ CSdhbXN1bW1hcml6aW5nJyA9IHRydWUuCisgKgkJV2hlbiBFSUlUX0lTX1VQREFURSBpcyBz ZXQsIHRoZSBleGVjdXRvciBpcyBwZXJmb3JtaW5nIGFuCisgKgkJVVBEQVRFLiAgVGhlIHBl ci1pbmRleCBpaV9JbmRleFVuY2hhbmdlZCBmbGFnIChwb3B1bGF0ZWQgYnkKKyAqCQlFeGVj U2V0SW5kZXhVbmNoYW5nZWQoKSkgaW5kaWNhdGVzIHdoZXRoZXIgZWFjaCBpbmRleCdzIGtl eQorICoJCXZhbHVlcyBhcmUgdW5jaGFuZ2VkIGJ5IHRoaXMgdXBkYXRlLiAgV2hlbiBpaV9J bmRleFVuY2hhbmdlZAorICoJCWlzIHRydWUsIHdlIHBhc3MgaW5kZXhVbmNoYW5nZWQ9dHJ1 ZSB0byBpbmRleF9pbnNlcnQoKSBhcyBhCisgKgkJaGludCBmb3IgYm90dG9tLXVwIGRlbGV0 aW9uIG9wdGltaXphdGlvbi4KICAqCiAgKgkJVW5pcXVlIGFuZCBleGNsdXNpb24gY29uc3Ry YWludHMgYXJlIGVuZm9yY2VkIGF0IHRoZSBzYW1lCiAgKgkJdGltZS4gIFRoaXMgcmV0dXJu cyBhIGxpc3Qgb2YgaW5kZXggT0lEcyBmb3IgYW55IHVuaXF1ZSBvcgpAQCAtMzcwLDExICsz NTUsMzIgQEAgRXhlY0luc2VydEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCiAJCQljb250aW51ZTsKIAogCQkvKgotCQkgKiBTa2lwIHByb2Nlc3Npbmcgb2Yg bm9uLXN1bW1hcml6aW5nIGluZGV4ZXMgaWYgd2Ugb25seSB1cGRhdGUKLQkJICogc3VtbWFy aXppbmcgaW5kZXhlcworCQkgKiBVUERBVEUgc2tpcCBydWxlLiAgRXhlY1NldEluZGV4VW5j aGFuZ2VkIHBvcHVsYXRlZAorCQkgKiBpaV9JbmRleE5lZWRzVXBkYXRlIGZvciBldmVyeSBp bmRleDogdHJ1ZSB3aGVuIHRoZSB0YWJsZSBBTSBzdG9yZWQKKwkJICogYW4gaW5kZXBlbmRl bnQgbmV3IHZlcnNpb24sIG9yIHdoZW4gYW55IGF0dHJpYnV0ZSB0aGUgaW5kZXgKKwkJICog cmVmZXJlbmNlcyAoa2V5LCBJTkNMVURFLCBleHByZXNzaW9uLCBvciBwYXJ0aWFsLXByZWRp Y2F0ZSBjb2x1bW4pCisJCSAqIG92ZXJsYXBzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAu ICBXaGVuIGl0IGlzIGZhbHNlIG9uIGEKKwkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4IHdl IHNraXAgdGhlIGluc2VydCBlbnRpcmVseTsgdGhlIEhPVCBjaGFpbgorCQkgKiBrZWVwcyBl eGlzdGluZyBlbnRyaWVzIHBvaW50aW5nIGF0IHRoZSBjaGFpbiByb290LiAgU3VtbWFyaXpp bmcKKwkJICogaW5kZXhlcyBhbHdheXMgZ2V0IGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGVpciBi bG9jay1sZXZlbCBzdW1tYXJpZXMuCiAJCSAqLwotCQlpZiAoKGZsYWdzICYgRUlJVF9PTkxZ X1NVTU1BUklaSU5HKSAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKKwkJaWYgKChm bGFncyAmIEVJSVRfSVNfVVBEQVRFKSAmJgorCQkJIWluZGV4SW5mby0+aWlfSW5kZXhOZWVk c1VwZGF0ZSAmJgorCQkJIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCXsKKwkJCS8q CisJCQkgKiBUaGlzIGluZGV4IHdhcyBza2lwcGVkIGJlY2F1c2UgaXRzIGtleSBhdHRyaWJ1 dGVzIGRpZCBub3QKKwkJCSAqIGNoYW5nZS4gIFdoZW4gdGhlIG92ZXJhbGwgdXBkYXRlIGlz IGEgSE9ULWluZGV4ZWQgdXBkYXRlIChzb21lCisJCQkgKiBvdGhlciBub24tc3VtbWFyaXpp bmcgaW5kZXggZGlkIGNoYW5nZSksIHJlY29yZCB0aGUgc2tpcCBvbgorCQkJICogdGhpcyBp bmRleCdzIHBnc3RhdCBlbnRyeS4gIEEgY2xhc3NpYy1IT1QgdXBkYXRlIChubyBpbmRleGVk CisJCQkgKiBhdHRyaWJ1dGUgY2hhbmdlZCkgZG9lcyBub3QgcmVhY2ggdGhpcyBwYXRoIC0t CisJCQkgKiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgaXMgb25seSBpbnZva2VkIHdoZW4gYXQg bGVhc3Qgb25lIGluZGV4CisJCQkgKiBuZWVkcyBhIGZyZXNoIGVudHJ5LgorCQkJICovCisJ CQlpZiAoZmxhZ3MgJiBFSUlUX0lTX0hPVF9JTkRFWEVEKQorCQkJCXBnc3RhdF9jb3VudF9o b3RfaW5kZXhlZF91cGRfc2tpcHBlZChpbmRleFJlbGF0aW9uKTsKIAkJCWNvbnRpbnVlOwor CQl9CiAKIAkJLyogQ2hlY2sgZm9yIHBhcnRpYWwgaW5kZXggKi8KIAkJaWYgKGluZGV4SW5m by0+aWlfUHJlZGljYXRlICE9IE5JTCkKQEAgLTM5Nyw2ICs0MDMsMTcgQEAgRXhlY0luc2Vy dEluZGV4VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJY29udGlu dWU7CiAJCX0KIAorCQkvKgorCQkgKiBOb24tc2tpcHBlZCBpbmRleCB1bmRlciBhIEhPVC1p bmRleGVkIHVwZGF0ZTogdGhpcyBpbmRleCBpcworCQkgKiByZWNlaXZpbmcgYSBmcmVzaCBl bnRyeSBiZWNhdXNlIG9uZSBvZiBpdHMga2V5IGF0dHJpYnV0ZXMgY2hhbmdlZC4KKwkJICog U3VtbWFyaXppbmcgaW5kZXhlcyBhbHdheXMgaW5zZXJ0IHJlZ2FyZGxlc3Mgb2YgdGhlIEhP VC1pbmRleGVkCisJCSAqIGRlY2lzaW9uIChzYW1lIGFzIGNsYXNzaWMgSE9UKSwgc28gdGhl eSBhcmUgbm90IGNvdW50ZWQgaGVyZS4gIENvdW50CisJCSAqIG9ubHkgbm93IHRoYXQgdGhl IHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIChpZiBhbnkpIGhhcyBhbHNvIHBhc3NlZCwKKwkJ ICogc28gYSBwcmVkaWNhdGUtZXhjbHVkZWQgcGFydGlhbCBpbmRleCBpcyBub3QgY291bnRl ZCBhcyBtYXRjaGVkLgorCQkgKi8KKwkJaWYgKChmbGFncyAmIEVJSVRfSVNfSE9UX0lOREVY RUQpICYmICFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQkJcGdzdGF0X2NvdW50X2hv dF9pbmRleGVkX3VwZF9tYXRjaGVkKGluZGV4UmVsYXRpb24pOworCiAJCS8qCiAJCSAqIEZv cm1JbmRleERhdHVtIGZpbGxzIGluIGl0cyB2YWx1ZXMgYW5kIGlzbnVsbCBwYXJhbWV0ZXJz IHdpdGggdGhlCiAJCSAqIGFwcHJvcHJpYXRlIHZhbHVlcyBmb3IgdGhlIGNvbHVtbihzKSBv ZiB0aGUgaW5kZXguCkBAIC00MzYsMTUgKzQ1MywxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCWNoZWNrVW5pcXVlID0gVU5J UVVFX0NIRUNLX1BBUlRJQUw7CiAKIAkJLyoKLQkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdv aW5nIHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKLQkJICogaW5kZXgu ICBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50 LAotCQkgKiBjb25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBz aG91bGQgYmUgcGFzc2VkLgorCQkgKiBGb3IgVVBEQVRFIG9wZXJhdGlvbnMsIHVzZSB0aGUg cGVyLWluZGV4IGlpX0luZGV4VW5jaGFuZ2VkIGZsYWcKKwkJICogKHBvcHVsYXRlZCBieSBF eGVjU2V0SW5kZXhVbmNoYW5nZWQpIHRvIGhpbnQgd2hldGhlciB0aGUgaW5kZXgKKwkJICog dmFsdWVzIGFyZSB1bmNoYW5nZWQuICBUaGlzIGhlbHBzIHRoZSBpbmRleCBBTSBvcHRpbWl6 ZSBmb3IKKwkJICogYm90dG9tLXVwIGRlbGV0aW9uIG9mIGR1cGxpY2F0ZSBpbmRleCBlbnRy aWVzLgogCQkgKi8KLQkJaW5kZXhVbmNoYW5nZWQgPSAoKGZsYWdzICYgRUlJVF9JU19VUERB VEUpICYmCi0JCQkJCQkgIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5m bywKLQkJCQkJCQkJCQkJCQllc3RhdGUsCi0JCQkJCQkJCQkJCQkJaW5kZXhJbmZvLAotCQkJ CQkJCQkJCQkJCWluZGV4UmVsYXRpb24pKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSAoZmxhZ3Mg JiBFSUlUX0lTX1VQREFURSkgPworCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA6 IGZhbHNlOwogCiAJCXNhdGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGlu ZGV4UmVsYXRpb24sIC8qIGluZGV4IHJlbGF0aW9uICovCkBAIC03MjEsNiArNzM2LDcgQEAg Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCWludAkJCWk7CiAJYm9vbAkJY29uZmxpY3Q7CiAJYm9vbAkJZm91 bmRfc2VsZjsKKwlib29sCQlmb3VuZF9zZWxmX3NpdV9oaXQ7CiAJRXhwckNvbnRleHQgKmVj b250ZXh0OwogCVR1cGxlVGFibGVTbG90ICpleGlzdGluZ19zbG90OwogCVR1cGxlVGFibGVT bG90ICpzYXZlX3NjYW50dXBsZTsKQEAgLTgyMyw2ICs4MzksNyBAQCBjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiByZXRyeToKIAljb25mbGljdCA9IGZhbHNlOwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKKwlm b3VuZF9zZWxmX3NpdV9oaXQgPSBmYWxzZTsKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LAogCQkJCQkJCQkgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5r ZXlhdHRzLCAwLAogCQkJCQkJCQkgU09fTk9ORSk7CkBAIC04MzgsMTQgKzg1NSwyOCBAQCBy ZXRyeToKIAkJY2hhcgkgICAqZXJyb3JfZXhpc3Rpbmc7CiAKIAkJLyoKLQkJICogSWdub3Jl IHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4KKwkJICog SWdub3JlIHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4g IFdpdGggSE9ULQorCQkgKiBpbmRleGVkIChob3QtaW5kZXhlZCkgdXBkYXRlcywgc2V2ZXJh bCBpbmRleCBlbnRyaWVzIG1heSBjaGFpbi1sZWFkCisJCSAqIHRvIHRoZSBzYW1lIGhlYXAg dHVwbGUgKGEgc3RhbGUgZW50cnkgZm9yIHRoZSBvbGQga2V5IGFuZCBhIGZyZXNoCisJCSAq IGVudHJ5IGZvciB0aGUgbmV3IGtleSkuICBUaGV5IGFsbCByZXNvbHZlIHRvIHRoZSBzYW1l IFRJRCBoZXJlIGFuZAorCQkgKiBtdXN0IGFsbCBiZSB0cmVhdGVkIGFzICJzZWxmIiwgbm90 IGFzIGEgZHVwbGljYXRlIGVycm9yLiAgV2UKKwkJICogdG9sZXJhdGUgdGhlIGR1cGxpY2F0 ZSBzZWxmIGFycml2YWwgd2hlbmV2ZXIgKmVpdGhlciogdGhpcworCQkgKiBpdGVyYXRpb24g b3IgYW4gZWFybGllciBvbmUgc2F3IHhzX2hvdF9pbmRleGVkX3N0YWxlIC0tIHRoZQorCQkg KiBjYW5vbmljYWwgZGlyZWN0IGVudHJ5IGFuZCB0aGUgc3RhbGUgY2hhaW4td2FsayBlbnRy aWVzIGNhbiBhcnJpdmUKKwkJICogaW4gZWl0aGVyIG9yZGVyLgogCQkgKi8KIAkJaWYgKEl0 ZW1Qb2ludGVySXNWYWxpZCh0dXBsZWlkKSAmJgogCQkJSXRlbVBvaW50ZXJFcXVhbHModHVw bGVpZCwgJmV4aXN0aW5nX3Nsb3QtPnR0c190aWQpKQogCQl7Ci0JCQlpZiAoZm91bmRfc2Vs ZikJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCisJCQlpZiAoaW5kZXhfc2Nhbi0+eHNfaG90 X2luZGV4ZWRfc3RhbGUpCisJCQkJZm91bmRfc2VsZl9zaXVfaGl0ID0gdHJ1ZTsKKwkJCWlm IChmb3VuZF9zZWxmKQorCQkJeworCQkJCWlmIChmb3VuZF9zZWxmX3NpdV9oaXQpCisJCQkJ CWNvbnRpbnVlOwogCQkJCWVsb2coRVJST1IsICJmb3VuZCBzZWxmIHR1cGxlIG11bHRpcGxl IHRpbWVzIGluIGluZGV4IFwiJXNcIiIsCiAJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpbmRleCkpOworCQkJfQogCQkJZm91bmRfc2VsZiA9IHRydWU7CiAJCQljb250aW51ZTsK IAkJfQpAQCAtODY5LDYgKzkwMCwzMSBAQCByZXRyeToKIAkJCQkJCQkJICogY29uZmxpY3Qg Ki8KIAkJfQogCisJCS8qCisJCSAqIEhPVC1pbmRleGVkIGNoYWlucyBjYW4gcmVhY2ggdGhp cyBsb29wIHZpYSBhIHN0YWxlIGJ0cmVlIGxlYWYgZW50cnkKKwkJICogd2hvc2Uga2V5IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBoZWFwIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtLgor CQkgKiBleGlzdGluZ192YWx1ZXMgaG9sZHMgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSdzIGlu ZGV4LWZvcm0KKwkJICogKEZvcm1JbmRleERhdHVtIGFib3ZlKS4gIENvbXBhcmUgaXQgYWdh aW5zdCBvdXIgbmV3IHR1cGxlJ3MgdmFsdWVzCisJCSAqIHVzaW5nIHRoZSBzYW1lIGNvbnN0 cmFpbnQgb3BlcmF0b3JzOyBpZiB0aGV5IGRvbid0IGFncmVlLCB0aGUKKwkJICogY2hhaW4t d2Fsa2VkIHR1cGxlIGlzIG5vdCBhY3R1YWxseSBpbiBjb25mbGljdCB3aXRoIG91ciBpbnNl cnRpb24KKwkJICogLS0gaXQganVzdCBzaGFyZWQgYSBUSUQgd2l0aCBhIHN0YWxlIGxlYWYg ZW50cnkgd2UgaGFwcGVuZWQgdG8gc2NhbgorCQkgKiB0aHJvdWdoLiAgU2tpcCBpdC4KKwkJ ICoKKwkJICogVGhpcyBtaXJyb3JzIF9idF9jaGVja191bmlxdWUncyBIT1QtaW5kZXhlZCBy ZWNoZWNrIHBhdGg7IGZvcgorCQkgKiBleGNsdXNpb24gY29uc3RyYWludHMgdGhlIHVzZXIt c3VwcGxpZWQgb3BlcmF0b3IgaW4gY29uc3RyX3Byb2NzCisJCSAqIHJlcGxhY2VzIHRoZSBi dHJlZSBlcXVhbGl0eSBjb21wYXJhdG9yLCBhbmQKKwkJICogaW5kZXhfcmVjaGVja19jb25z dHJhaW50IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBlaXRoZXIuCisJCSAqLworCQlpZiAo aW5kZXhfc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCWlmICghaW5kZXhf cmVjaGVja19jb25zdHJhaW50KGluZGV4LAorCQkJCQkJCQkJCSAgY29uc3RyX3Byb2NzLAor CQkJCQkJCQkJCSAgZXhpc3RpbmdfdmFsdWVzLAorCQkJCQkJCQkJCSAgZXhpc3RpbmdfaXNu dWxsLAorCQkJCQkJCQkJCSAgdmFsdWVzKSkKKwkJCQljb250aW51ZTsJCS8qIHN0YWxlIGNo YWluIGhpdCwgbm90IGEgcmVhbCBjb25mbGljdCAqLworCQl9CisKIAkJLyoKIAkJICogQXQg dGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhIGNvbmZsaWN0IG9yIGEgcG90ZW50aWFsIGNv bmZsaWN0LgogCQkgKgpAQCAtMTAwOSwxNDkgKzEwNjUsOTQgQEAgaW5kZXhfcmVjaGVja19j b25zdHJhaW50KFJlbGF0aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIH0K IAogLyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNz IGluZGV4VW5jaGFuZ2VkIGhpbnQuCisgKiBFeGVjU2V0SW5kZXhVbmNoYW5nZWQKKyAqCisg KiBQb3B1bGF0ZSB0d28gcGVyLWluZGV4IGZsYWdzIGFoZWFkIG9mIEV4ZWNJbnNlcnRJbmRl eFR1cGxlczoKKyAqCisgKiAgIC0gaWlfSW5kZXhOZWVkc1VwZGF0ZSAod2lkZSkgZHJpdmVz IHRoZSBza2lwIGRlY2lzaW9uLiAgSXQgaXMgdHJ1ZSB3aGVuCisgKiAgICAgdGhlIHRhYmxl IEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJp YnV0ZQorICogICAgIHByZXNlbnQgaW4gbW9kaWZpZWRfaWR4X2F0dHJzKSBvciB3aGVuIGFu eSBhdHRyaWJ1dGUgdGhlIGluZGV4CisgKiAgICAgcmVmZXJlbmNlcyAtLSBrZXksIElOQ0xV REUsIGV4cHJlc3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiwKKyAqICAgICBw ZXIgUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSAtLSBjaGFuZ2VkLiAgQSBub24tc3VtbWFy aXppbmcgaW5kZXggZm9yCisgKiAgICAgd2hpY2ggdGhpcyBpcyBmYWxzZSBpcyBza2lwcGVk OiBpdHMgZXhpc3RpbmcgZW50cnkga2VlcHMgcmVzb2x2aW5nIHRoZQorICogICAgIEhPVCBj aGFpbi4KICAqCi0gKiBXaGVuIHRoZSBleGVjdXRvciBwZXJmb3JtcyBhbiBVUERBVEUgdGhh dCByZXF1aXJlcyBhIG5ldyByb3VuZCBvZiBpbmRleAotICogdHVwbGVzLCBkZXRlcm1pbmUg aWYgd2Ugc2hvdWxkIHBhc3MgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBmb3Igb25l Ci0gKiBzaW5nbGUgaW5kZXguCisgKiAgIC0gaWlfSW5kZXhVbmNoYW5nZWQgKG5hcnJvdykg aXMgdGhlIGluZGV4VW5jaGFuZ2VkIGhpbnQgdG8gYW1pbnNlcnQsCisgKiAgICAgY29uc3Vt ZWQgYnkgbmJ0cmVlIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24uICBQZXIg dGhlCisgKiAgICAgaGlzdG9yaWNhbCBydWxlIGl0IGNvdW50cyBvbmx5IGtleSBjb2x1bW5z OyBJTkNMVURFIGFuZCBwcmVkaWNhdGUKKyAqICAgICBjb2x1bW5zIGFyZSBkZWxpYmVyYXRl bHkgaWdub3JlZCwgYW5kIGFuIGV4cHJlc3Npb24ga2V5IGlzIHRyZWF0ZWQKKyAqICAgICBj b25zZXJ2YXRpdmVseSBhcyBwb3NzaWJseSBjaGFuZ2VkLgogICovCi1zdGF0aWMgYm9vbAot aW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LCBFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24pCit2b2lkCitFeGVjU2V0SW5kZXhVbmNoYW5nZWQoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlm aWVkX2lkeF9hdHRycykKIHsKLQlCaXRtYXBzZXQgICp1cGRhdGVkQ29sczsKLQlCaXRtYXBz ZXQgICpleHRyYVVwZGF0ZWRDb2xzOwotCUJpdG1hcHNldCAgKmFsbFVwZGF0ZWRDb2xzOwot CWJvb2wJCWhhc2V4cHJlc3Npb24gPSBmYWxzZTsKLQlMaXN0CSAgICppZHhFeHByczsKLQot CS8qCi0JICogQ2hlY2sgY2FjaGUgZmlyc3QKLQkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9D aGVja2VkVW5jaGFuZ2VkKQotCQlyZXR1cm4gaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZDsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSB0cnVlOwotCi0JLyoKLQkg KiBDaGVjayBmb3IgaW5kZXhlZCBhdHRyaWJ1dGUgb3ZlcmxhcCB3aXRoIHVwZGF0ZWQgY29s dW1ucy4KLQkgKgotCSAqIE9ubHkgZG8gdGhpcyBmb3Iga2V5IGNvbHVtbnMuICBBIGNoYW5n ZSB0byBhIG5vbi1rZXkgY29sdW1uIHdpdGhpbiBhbgotCSAqIElOQ0xVREUgaW5kZXggc2hv dWxkIG5vdCBiZSBjb3VudGVkIGhlcmUuICBOb24ta2V5IGNvbHVtbiB2YWx1ZXMgYXJlCi0J ICogb3BhcXVlIHBheWxvYWQgc3RhdGUgdG8gdGhlIGluZGV4IEFNLCBhIGxpdHRsZSBsaWtl IGFuIGV4dHJhIHRhYmxlIFRJRC4KLQkgKgotCSAqIE5vdGUgdGhhdCByb3ctbGV2ZWwgQkVG T1JFIHRyaWdnZXJzIHdvbid0IGFmZmVjdCBvdXIgYmVoYXZpb3IsIHNpbmNlCi0JICogdGhl eSBkb24ndCBhZmZlY3QgdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHMgZ2VuZXJhbGx5LiAgSXQg ZG9lc24ndCBzZWVtCi0JICogd29ydGggdGhlIHRyb3VibGUgb2YgY2hlY2tpbmcgd2hpY2gg YXR0cmlidXRlcyB3ZXJlIGNoYW5nZWQgZGlyZWN0bHkuCi0JICovCi0JdXBkYXRlZENvbHMg PSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0YXRlKTsKLQlleHRyYVVw ZGF0ZWRDb2xzID0gRXhlY0dldEV4dHJhVXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0 YXRlKTsKLQlmb3IgKGludCBhdHRyID0gMDsgYXR0ciA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhLZXlBdHRyczsgYXR0cisrKQotCXsKLQkJaW50CQkJa2V5Y29sID0gaW5kZXhJbmZvLT5p aV9JbmRleEF0dHJOdW1iZXJzW2F0dHJdOwotCi0JCWlmIChrZXljb2wgPD0gMCkKLQkJewot CQkJLyoKLQkJCSAqIFNraXAgZXhwcmVzc2lvbnMgZm9yIG5vdywgYnV0IHJlbWVtYmVyIHRv IGRlYWwgd2l0aCB0aGVtIGxhdGVyCi0JCQkgKiBvbgotCQkJICovCi0JCQloYXNleHByZXNz aW9uID0gdHJ1ZTsKLQkJCWNvbnRpbnVlOwotCQl9CisJaW50CQkJbnVtSW5kaWNlcyA9IHJl c3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7CisJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJy YXkgPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mbzsKKwlSZWxhdGlvblB0 ciBpbmRleERlc2NzID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzOwor CWJvb2wJCWFsbF9pbmRleGVzOwogCi0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xz KSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVwZGF0ZWRDb2xzKSkKLQkJewotCQkJLyog Q2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQgZm9yIHRoaXMgaW5kZXggKi8KLQkJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKLQkJCXJldHVybiBmYWxz ZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhpcyBmYXIgYW5kIGluZGV4 IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAotCSAqIGluZGV4X2lu c2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVl IGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5IGF0dHJp YnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGluIGFk ZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQor CWlmIChudW1JbmRpY2VzID09IDApCisJCXJldHVybjsKIAogCS8qCi0JICogTmVlZCB0byBw YXNzIG9ubHkgb25lIGJtcyB0byBleHByZXNzaW9uX3RyZWVfd2Fsa2VyIGhlbHBlciBmdW5j dGlvbi4KLQkgKiBBdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSBpbiBjb21tb24gY2FzZSB3aGVy ZSB0aGVyZSBhcmUgbm8gZXh0cmEgY29scy4KKwkgKiBBIHdob2xlLXJvdyBlbnRyeSBpbiBt b2RpZmllZF9pZHhfYXR0cnMgbWVhbnMgdGhlIHRhYmxlIEFNIHN0b3JlZCBhbgorCSAqIGlu ZGVwZW5kZW50IG5ldyB2ZXJzaW9uIChlLmcuIGF0IGEgbmV3IFRJRCksIHNvIGV2ZXJ5IGlu ZGV4IG5lZWRzIGEKKwkgKiBmcmVzaCBlbnRyeSByZWdhcmRsZXNzIG9mIHdoaWNoIGF0dHJp YnV0ZXMgY2hhbmdlZC4KIAkgKi8KLQlpZiAoIWV4dHJhVXBkYXRlZENvbHMpCi0JCWFsbFVw ZGF0ZWRDb2xzID0gdXBkYXRlZENvbHM7Ci0JZWxzZQotCQlhbGxVcGRhdGVkQ29scyA9IGJt c191bmlvbih1cGRhdGVkQ29scywgZXh0cmFVcGRhdGVkQ29scyk7CisJYWxsX2luZGV4ZXMg PSBibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9p ZHhfYXR0cnMpOwogCi0JLyoKLQkgKiBXZSBoYXZlIHRvIHdvcmsgc2xpZ2h0bHkgaGFyZGVy IGluIHRoZSBldmVudCBvZiBpbmRleGVkIGV4cHJlc3Npb25zLAotCSAqIGJ1dCB0aGUgcHJp bmNpcGxlIGlzIHRoZSBzYW1lIGFzIGJlZm9yZTogdHJ5IHRvIGZpbmQgY29sdW1ucyAoVmFy cywKLQkgKiBhY3R1YWxseSkgdGhhdCBvdmVybGFwIHdpdGgga25vd24tdXBkYXRlZCBjb2x1 bW5zLgotCSAqCi0JICogSWYgd2UgZmluZCBhbnkgbWF0Y2hpbmcgVmFycywgZG9uJ3QgcGFz cyBoaW50IGZvciBpbmRleC4gIE90aGVyd2lzZQotCSAqIHBhc3MgaGludC4KLQkgKi8KLQlp ZHhFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsK LQloYXNleHByZXNzaW9uID0gaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcigoTm9k ZSAqKSBpZHhFeHBycywKLQkJCQkJCQkJCQkJCQlhbGxVcGRhdGVkQ29scyk7Ci0JbGlzdF9m cmVlKGlkeEV4cHJzKTsKLQlpZiAoZXh0cmFVcGRhdGVkQ29scykKLQkJYm1zX2ZyZWUoYWxs VXBkYXRlZENvbHMpOwotCi0JaWYgKGhhc2V4cHJlc3Npb24pCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewotCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7Ci0JCXJldHVybiBmYWxzZTsKLQl9CisJCUluZGV4SW5mbyAgKmluZGV4 SW5mbyA9IGluZGV4SW5mb0FycmF5W2ldOworCQlSZWxhdGlvbglpbmRleERlc2MgPSBpbmRl eERlc2NzW2ldOworCQlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CisJCWJvb2wJCWtleWNo YW5nZWQ7CiAKLQkvKgotCSAqIERlbGliZXJhdGVseSBkb24ndCBjb25zaWRlciBpbmRleCBw cmVkaWNhdGVzLiAgV2Ugc2hvdWxkIGV2ZW4gZ2l2ZSB0aGUKLQkgKiBoaW50IHdoZW4gcmVz dWx0IHJlbCdzICJ1cGRhdGVkIHR1cGxlIiBoYXMgbm8gY29ycmVzcG9uZGluZyBpbmRleAot CSAqIHR1cGxlLCB3aGljaCBpcyBwb3NzaWJsZSB3aXRoIGEgcGFydGlhbCBpbmRleCAocHJv dmlkZWQgdGhlIHVzdWFsCi0JICogY29uZGl0aW9ucyBhcmUgbWV0KS4KLQkgKi8KLQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQot LyoKLSAqIEluZGV4ZWQgZXhwcmVzc2lvbiBoZWxwZXIgZm9yIGluZGV4X3VuY2hhbmdlZF9i eV91cGRhdGUoKS4KLSAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBWYXIgdGhhdCBhcHBlYXJz IHdpdGhpbiBhbGxVcGRhdGVkQ29scyBsb2NhdGVkLgotICovCi1zdGF0aWMgYm9vbAotaW5k ZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2RlICpub2RlLCBCaXRtYXBzZXQgKmFs bFVwZGF0ZWRDb2xzKQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsK KwkJaWYgKGluZGV4RGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlpZiAoSXNBKG5v ZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCS8qCisJ CSAqIFNraXAgZGVjaXNpb24gKHdpZGUpLiAgVGhlIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5 IGlmIHRoZSBBTSBzdG9yZWQKKwkJICogYW4gaW5kZXBlbmRlbnQgdmVyc2lvbiwgb3IgaWYg YW55IGF0dHJpYnV0ZSBpdCByZWZlcmVuY2VzIC0tIGtleSwKKwkJICogSU5DTFVERSwgZXhw cmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNhdGUgY29sdW1uIC0tIGNoYW5nZWQuCisJCSAq IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgY292ZXJzIGFsbCBvZiB0aG9zZS4gIChBbiBV UERBVEUgdGhhdAorCQkgKiB0b3VjaGVzIGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRl IG5ldmVyIHJlYWNoZXMgdGhlIEhPVC1pbmRleGVkCisJCSAqIHBhdGg6IEhlYXBVcGRhdGVI b3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzIGl0LCBwZW5kaW5nCisJCSAqIGV4cHJlc3Npb24t YXdhcmUgbWFpbnRlbmFuY2UuKQorCQkgKi8KKwkJaW5kZXhlZGF0dHJzID0gUmVsYXRpb25H ZXRJbmRleGVkQXR0cnMoaW5kZXhEZXNjKTsKKwkJaW5kZXhJbmZvLT5paV9JbmRleE5lZWRz VXBkYXRlID0KKwkJCWFsbF9pbmRleGVzIHx8IGJtc19vdmVybGFwKGluZGV4ZWRhdHRycywg bW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAotCQlp ZiAoYm1zX2lzX21lbWJlcih2YXItPnZhcmF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlciwKLQkJCQkJCSAgYWxsVXBkYXRlZENvbHMpKQorCQkvKgorCQkgKiBh bWluc2VydCBoaW50IChuYXJyb3cpLiAgaWlfSW5kZXhVbmNoYW5nZWQgZmVlZHMgbmJ0cmVl CisJCSAqIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24gaGV1cmlzdGljcyBh bmQsIHBlciB0aGUKKwkJICogaGlzdG9yaWNhbCBydWxlLCBjb3VudHMgb25seSBrZXkgY29s dW1uczogYSBjaGFuZ2UgdG8gYW4gSU5DTFVERQorCQkgKiBjb2x1bW4gb3IgdG8gYSBwYXJ0 aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4gZG9lcyBub3QgZGlzcXVhbGlmeQorCQkgKiB0 aGUgaGludC4gIEFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiBpcyB0cmVhdGVkIGNvbnNlcnZh dGl2ZWx5IGFzCisJCSAqIHBvc3NpYmx5IGNoYW5nZWQuCisJCSAqLworCQlrZXljaGFuZ2Vk ID0gZmFsc2U7CisJCWZvciAoaW50IGsgPSAwOyBrIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzOyBrKyspCiAJCXsKLQkJCS8qIFZhciB3YXMgdXBkYXRlZCAtLSBpbmRpY2F0 ZXMgdGhhdCB3ZSBzaG91bGQgbm90IGhpbnQgKi8KLQkJCXJldHVybiB0cnVlOwotCQl9CisJ CQlBdHRyTnVtYmVyCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tr XTsKIAotCQkvKiBTdGlsbCBoYXZlbid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRo ZSBoaW50ICovCi0JCXJldHVybiBmYWxzZTsKKwkJCWlmIChrZXljb2wgPT0gMCkJLyogZXhw cmVzc2lvbiBrZXk6IGFzc3VtZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkICovCisJCQl7CisJCQkJ a2V5Y2hhbmdlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoYm1zX2lzX21l bWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJ CQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJCXsKKwkJCQlrZXljaGFuZ2VkID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gIWtleWNoYW5nZWQ7CiAJfQotCi0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxr ZXIobm9kZSwgaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlciwKLQkJCQkJCQkJICBh bGxVcGRhdGVkQ29scyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCmluZGV4IDYyNjJmNzFiZDkzLi43YjViYmRiZmQ3YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIxNyw2ICsyMTcsMTggQEAgcmV0 cnk6CiAJLyogVHJ5IHRvIGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5l eHRfc2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgb3V0c2xvdCkpCiAJeworCQkv KgorCQkgKiBBIEhPVC1pbmRleGVkIHVwZGF0ZSBjYW4gbGVhdmUgYSBzdGFsZSBpbmRleCBs ZWFmOiBhbiBlbnRyeSB3aG9zZQorCQkgKiBrZXkgaXMgYSBwcmUtdXBkYXRlIHZhbHVlIGJ1 dCB3aG9zZSBUSUQgY2hhaW4tcmVzb2x2ZXMgdG8gYSBsaXZlCisJCSAqIHR1cGxlIG5vdyBj YXJyeWluZyBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGEgdHVwbGUgaXMgbm90IHRoZQorCQkg KiByZXBsaWNhLWlkZW50aXR5IG1hdGNoIHdlIGFyZSBsb29raW5nIGZvciAoYW5kIHRoZSBQ Sy9SSSBmYXN0IHBhdGgKKwkJICogYmVsb3cgc2tpcHMgdGhlIGVxdWFsaXR5IHJlY2hlY2sg dGhhdCB3b3VsZCBvdGhlcndpc2UgY2F0Y2ggaXQpLCBzbworCQkgKiBkcm9wIGl0IC0tIGV4 YWN0bHkgYXMgSW5kZXhTY2FuL0luZGV4T25seVNjYW4gZG8uICBUaGUgZnJlc2ggbGVhZgor CQkgKiBmb3IgdGhlIGN1cnJlbnQga2V5LCBpZiBhbnksIGlzIHJldHVybmVkIGJ5IGEgbGF0 ZXIgaXRlcmF0aW9uLgorCQkgKi8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5 IGNoZWNrIGlmIHRoZSBpbmRleCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlk ZW50aXR5IGluZGV4LgpAQCAtNjc4LDYgKzY5MCwxMCBAQCBSZWxhdGlvbkZpbmREZWxldGVk VHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJLyogVHJ5IHRv IGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc2NhbnNsb3QpKQogCXsKKwkJLyogU2tpcCBzdGFsZSBI T1QtaW5kZXhlZCBsZWF2ZXMgKHNlZSBSZWxhdGlvbkZpbmRSZXBsVHVwbGVCeUluZGV4KS4g Ki8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQkJY29udGludWU7CisK IAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5IGNoZWNrIGlmIHRoZSBpbmRl eCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlkZW50aXR5IGluZGV4LgpAQCAt OTExLDcgKzkyNyw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKIAog CS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5vbi1zeXN0ZW0gdGFibGVzLCB3aXRoCkBAIC05 MzQsNyArOTUwLDYgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lwX3R1cGxlKQogCXsKIAkJTGlzdAkgICAqcmVj aGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7 CiAJCUxpc3QJICAgKmNvbmZsaWN0aW5kZXhlczsKIAkJYm9vbAkJY29uZmxpY3QgPSBmYWxz ZTsKIApAQCAtOTUzLDI3ICs5NjgsMzQgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkJ CXNlYXJjaHNsb3QsIHNsb3QpOwogCisJCUFzc2VydCghYm1zX2lzX21lbWJlcihUYWJsZVR1 cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0dHJzKSk7CiAJCXNpbXBsZV90 YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNob3Qs Ci0JCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOwotCQli bXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOwotCisJCQkJCQkJCSAgJm1vZGlmaWVkX2lk eF9hdHRycyk7CiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25D b25mbGljdEFyYml0ZXJJbmRleGVzOwogCi0JCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzID4gMCAmJiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkpCisJCWlmIChyZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkJIWJtc19pc19lbXB0eShtb2Rp ZmllZF9pZHhfYXR0cnMpKQogCQl7CisJCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQkJYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0 dHJzKTsKIAkJCXVpbnQzMgkJZmxhZ3MgPSBFSUlUX0lTX1VQREFURTsKIAogCQkJaWYgKGNv bmZsaWN0aW5kZXhlcyAhPSBOSUwpCiAJCQkJZmxhZ3MgfD0gRUlJVF9OT19EVVBFX0VSUk9S OwotCQkJaWYgKHVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKQotCQkJCWZsYWdz IHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJCWlmICghYWxsX2luZGV4ZXMpCisJCQkJ ZmxhZ3MgfD0gRUlJVF9JU19IT1RfSU5ERVhFRDsKKworCQkJRXhlY1NldEluZGV4VW5jaGFu Z2VkKHJlc3VsdFJlbEluZm8sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJCXJlY2hlY2tJ bmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJ CQkJCQkgICBlc3RhdGUsIGZsYWdzLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgY29uZmxpY3Rp bmRleGVzLAogCQkJCQkJCQkJCQkJICAgJmNvbmZsaWN0KTsKIAkJfQogCisJCWJtc19mcmVl KG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNrQW5kUmVwb3J0Q29uZmxpY3QoKSBpbgogCQkg KiBFeGVjU2ltcGxlUmVsYXRpb25JbnNlcnQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVj ayBpcyBkb25lIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBkNTIwMTJlOGE2OS4uY2QwY2FlZjEzNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMTA0LDYgKzEwNCw3IEBAIEluZGV4T25s eU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCiAJCS8qIFNldCBpdCB1cCBmb3Ig aW5kZXgtb25seSBzY2FuICovCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dhbnRfaXR1 cCA9IHRydWU7CisJCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX2luZGV4X29ubHkgPSB0cnVl OwogCQlub2RlLT5pb3NzX1ZNQnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCQkvKgpAQCAt MTcyLDYgKzE3MywyNSBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9k ZSkKIAkJCWlmICghaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgbm9kZS0+aW9zc19UYWJs ZVNsb3QpKQogCQkJCWNvbnRpbnVlOwkJLyogbm8gdmlzaWJsZSB0dXBsZSwgdHJ5IG5leHQg aW5kZXggZW50cnkgKi8KIAorCQkJLyoKKwkJCSAqIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5 OiBpZiB0aGUgY2hhaW4gd2FsayB0byByZWFjaCB0aGlzIHR1cGxlCisJCQkgKiBjcm9zc2Vk IGEgaG90LWluZGV4ZWQgaG9wIHRoYXQgY2hhbmdlZCBhbiBhdHRyaWJ1dGUgdGhpcyBpbmRl eAorCQkJICogY292ZXJzLCB0aGUgbGVhZiB3ZSBhcnJpdmVkIHRocm91Z2ggaXMgc3RhbGUu ICBGb3IgSU9TIHdlIHNlcnZlCisJCQkgKiB2YWx1ZXMgb3V0IG9mIHhzX2l0dXAsIHNvIGEg c3RhbGUgbGVhZiB3b3VsZCBzdXJmYWNlIHRoZSB3cm9uZworCQkJICogdmFsdWVzOyBkcm9w IGl0LiAgVGhlIGZyZXNoIGVudHJ5IGZvciB0aGUgbmV3IHZhbHVlIHJldHVybnMgdGhlCisJ CQkgKiByb3cgd2l0aCBjb3JyZWN0IHZhbHVlcyB2aWEgaXRzIG93biBwYXRoLiAgUHJ1bmUg a2VlcHMgYW55IHBhZ2UKKwkJCSAqIHRoYXQgY2FuIGNhcnJ5IHN1Y2ggYSBzdGFsZSBsZWFm IC0tIG9uZSB3aXRoIGEgcmVkaXJlY3QgdG8gYQorCQkJICogbGl2ZSBIRUFQX0lOREVYRURf VVBEQVRFRCB0dXBsZSAtLSBvdXQgb2YgdGhlIHZpc2liaWxpdHkgbWFwCisJCQkgKiAoc2Vl IGhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0KSwgc28gYW4gaW5kZXgtb25seSBzY2FuIGFs d2F5cworCQkJICogcmVhY2hlcyB0aGlzIGhlYXAgZmV0Y2ggd2hlbiBzdGFsZW5lc3MgY291 bGQgYXBwbHkuCisJCQkgKi8KKwkJCWlmIChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3Rh bGUpCisJCQl7CisJCQkJSW5zdHJDb3VudEZpbHRlcmVkMihub2RlLCAxKTsKKwkJCQlFeGVj Q2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CisJCQkJY29udGludWU7CisJCQl9 CisKIAkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90KTsKIAogCQkJLyoK QEAgLTIyOSw2ICsyNDksMTYgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUg Km5vZGUpCiAJCQl9CiAJCX0KIAorCQkvKgorCQkgKiBObyBIT1QtaW5kZXhlZCBzdGFsZW5l c3MgY2hlY2sgaXMgbmVlZGVkIG9uIHRoZSBWTS1hbGwtdmlzaWJsZSBwYXRoCisJCSAqICh3 aGVyZSB3ZSBza2lwcGVkIHRoZSBoZWFwIGZldGNoKS4gIFBydW5lIGtlZXBzIGFueSBwYWdl IHRoYXQgY291bGQKKwkJICogY2FycnkgYSBzdGFsZSBsZWFmIC0tIG9uZSB3aXRoIGEgcmVk aXJlY3QgdG8gYSBsaXZlCisJCSAqIEhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxlIC0tIG91 dCBvZiB0aGUgdmlzaWJpbGl0eSBtYXAsIHNvIGFuCisJCSAqIGFsbC12aXNpYmxlIGVudHJ5 IG5ldmVyIGNyb3NzZWQgYSBIT1QvU0lVIGhvcC4gIChpbmRleF9nZXRuZXh0X3RpZAorCQkg KiBhbHNvIHJlc2V0cyB4c19ob3RfaW5kZXhlZF9zdGFsZSBwZXIgZW50cnksIGFuZCBvbmx5 IHRoZSBoZWFwIGZldGNoCisJCSAqIGluIGluZGV4X2ZldGNoX2hlYXAgZXZlciBzZXRzIGl0 LCBzbyBpdCBjYW5ub3QgYmUgc2V0IGhlcmUgYW55d2F5LikKKwkJICovCisKIAkJLyoKIAkJ ICogV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVjaGVja2luZyBPUkRFUiBCWSBkaXN0 YW5jZXMuICAoSW4KIAkJICogcHJpbmNpcGxlLCBpZiB0aGUgaW5kZXggY2FuIHN1cHBvcnQg cmV0cmlldmFsIG9mIHRoZSBvcmlnaW5hbGx5CkBAIC03NzUsNiArODA1LDcgQEAgRXhlY0lu ZGV4T25seVNjYW5Jbml0aWFsaXplRFNNKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSwKIAkJ CQkJCQkJIFNjYW5SZWxJc1JlYWRPbmx5KCZub2RlLT5zcykgPwogCQkJCQkJCQkgU09fSElO VF9SRUxfUkVBRF9PTkxZIDogU09fTk9ORSk7CiAJbm9kZS0+aW9zc19TY2FuRGVzYy0+eHNf d2FudF9pdHVwID0gdHJ1ZTsKKwlub2RlLT5pb3NzX1NjYW5EZXNjLT54c19pbmRleF9vbmx5 ID0gdHJ1ZTsKIAlub2RlLT5pb3NzX1ZNQnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCS8q CkBAIC04MjUsNiArODU2LDcgQEAgRXhlY0luZGV4T25seVNjYW5Jbml0aWFsaXplV29ya2Vy KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkJIFNjYW5SZWxJc1JlYWRPbmx5 KCZub2RlLT5zcykgPwogCQkJCQkJCQkgU09fSElOVF9SRUxfUkVBRF9PTkxZIDogU09fTk9O RSk7CiAJbm9kZS0+aW9zc19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKKwlub2Rl LT5pb3NzX1NjYW5EZXNjLT54c19pbmRleF9vbmx5ID0gdHJ1ZTsKIAogCS8qCiAJICogSWYg bm8gcnVuLXRpbWUga2V5cyB0byBjYWxjdWxhdGUgb3IgdGhleSBhcmUgcmVhZHksIGdvIGFo ZWFkIGFuZCBwYXNzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXgg MzlmNjY5MWVlMzUuLmRhZDkyNWRjYjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4c2Nhbi5jCkBAIC0xNTEsNiArMTUxLDIwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0 ZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCS8qCisJCSAqIEhPVC1pbmRleGVkIHN0YWxlIGVu dHJ5OiB0aGUgY2hhaW4gd2Ugd2Fsa2VkIHRvIHJlYWNoIHRoaXMgdHVwbGUKKwkJICogY3Jv c3NlZCBhIGhvdC1pbmRleGVkIGhvcCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMg aW5kZXgKKwkJICogY292ZXJzLCBzbyB0aGUgbGVhZiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91 Z2ggaXMgc3RhbGUuICBEcm9wIGl0OworCQkgKiB0aGUgZnJlc2ggZW50cnkgaW5zZXJ0ZWQg Zm9yIHRoZSBuZXcgdmFsdWUgcmV0dXJucyB0aGUgcm93IHRocm91Z2gKKwkJICogaXRzIG93 biBwYXRoLiAgU3RhbGVuZXNzIHdhcyBkZWNpZGVkIGJ5IHRoZSBoZWFwIEFNIHZpYSBwZXIt aG9wCisJCSAqIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgKHNlZSBoZWFwX2hvdF9zZWFyY2hf YnVmZmVyKS4KKwkJICovCisJCWlmIChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3RhbGUp CisJCXsKKwkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQljb250aW51ZTsK KwkJfQorCiAJCXJldHVybiBzbG90OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwppbmRleCA5YjZmODc1N2ZhZS4uNzA4ZGE1NWYzYWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xMzAsNyArMTMwLDE0IEBA IHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlQ29udGV4dAogdHlwZWRlZiBzdHJ1Y3QgVXBk YXRlQ29udGV4dAogewogCWJvb2wJCWNyb3NzUGFydFVwZGF0ZTsJLyogd2FzIGl0IGEgY3Jv c3MtcGFydGl0aW9uIHVwZGF0ZT8gKi8KLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4 ZXM7IC8qIFdoaWNoIGluZGV4IHVwZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCisJLyoKKwkg KiBTZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoZSBVUERBVEUgY2hhbmdlZCAoaW4vb3V0 IGZvciB0aGUgdGFibGUgQU0ncworCSAqIHVwZGF0ZSBjYWxsYmFjaykuICBQb3B1bGF0ZWQg YnkgRXhlY1VwZGF0ZUFjdCBhbmQgY29uc3VtZWQgYnkKKwkgKiBFeGVjVXBkYXRlRXBpbG9n dWU7IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1yb3cgYXR0cmlidXRlCisJICogKFRhYmxlVHVw bGVVcGRhdGVBbGxJbmRleGVzKSB3aGVuIGV2ZXJ5IGluZGV4IG5lZWRzIGEgZnJlc2ggZW50 cnkuCisJICovCisJQml0bWFwc2V0ICAqbW9kaWZpZWRfYXR0cnM7CiAKIAkvKgogCSAqIExv Y2sgbW9kZSB0byBhY3F1aXJlIG9uIHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUg cGVyZm9ybWluZwpAQCAtMjM4LDI1ICsyNDUsMjMgQEAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJcmV0dXJuIE5VTEw7CiAK IAkvKgotCSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5k ZXhlcyBmb3IgdGhpcyByZWxhdGlvbiBmcm9tCi0JICogdGhlIHJlbGNhY2hlLCBpdCByZXR1 cm5zIHVzIGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICog RGV0ZXJtaW5lIHdoaWNoIGluZGV4ZWQgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkIHZh bHVlIGJ5IGNvbXBhcmluZworCSAqIHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgYXR0cmlidXRl LWJ5LWF0dHJpYnV0ZSBvdmVyIHRoZSByZWxhdGlvbidzIGZ1bGwKKwkgKiBpbmRleGVkLWF0 dHJpYnV0ZSBzZXQuICBXZSBkZWxpYmVyYXRlbHkgZG8gTk9UIHRyeSB0byBuYXJyb3cgdGhl IHdvcmsKKwkgKiB1c2luZyB0aGUgU1FMIFVQREFURSdzIHRhcmdldCBsaXN0IChFeGVjR2V0 QWxsVXBkYXRlZENvbHMpOiB0aGF0IGxpc3QKKwkgKiBkb2VzIG5vdCBjYXB0dXJlIGluZGV4 ZWQgY29sdW1ucyBtdXRhdGVkIG91dHNpZGUgdGhlIFNFVCBjbGF1c2UsIHN1Y2gKKwkgKiBh cyBhIGNvbHVtbiByZXdyaXR0ZW4gYnkgYSBCRUZPUkUvSU5TVEVBRC1PRiB0cmlnZ2VyIHZp YQorCSAqIGhlYXBfbW9kaWZ5X3R1cGxlIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIo KSBpbiB0c2VhcmNoLnNxbCksIHRoZQorCSAqIGltcGxpY2l0IHRlbXBvcmFsIHJhbmdlIGNv bHVtbiBvZiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZSwgb3IgdGhlCisJICogcHJlLWJ1aWx0 IHR1cGxlcyBhcHBsaWVkIGJ5IFJFUEFDSyAoQ09OQ1VSUkVOVExZKSBhbmQgbG9naWNhbAor CSAqIHJlcGxpY2F0aW9uIHRocm91Z2ggYSBzeW50aGV0aWMgUmVzdWx0UmVsSW5mby4gIENv bXBhcmluZyB0aGUgYWN0dWFsCisJICogdHVwbGUgdmFsdWVzIGlzIGFsd2F5cyBjb3JyZWN0 LgogCSAqCi0JICogTm90ZTogV2UgaW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNv bHVtbnMgd2hlbiBsb29raW5nIGZvcgotCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNl IHRoYXQgc2V0IGJ5IGludGVyc2VjdGluZyBpdCB3aXRoCi0JICogRXhlY0dldEFsbFVwZGF0 ZWRDb2xzKCkuICBEZXNpcHRlIHRoZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKLQkg KiB0YXJnZXRlZCBhdHRyaWJ1dGVzIGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBh bmQgYW55IHRyaWdnZXJzLAotCSAqIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0 cmlidXRlcyB1cGRhdGVkIHVzaW5nCi0JICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJl IGlzIG9uZSB0ZXN0IGluIHRzZWFyY2guc3FsIHRoYXQgZG9lcyBqdXN0Ci0JICogdGhhdCwg bW9kaWZpZXMgYW4gaW5kZXhlZCBhdHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4g dGhlIFNRTCBhbmQKLQkgKiBzbyBpc24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0Lgor CSAqIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIHJldHVybnMgYSBjb3B5IHdlIGFyZSBm cmVlIHRvIG11dGF0ZTsKKwkgKiBFeGVjQ29tcGFyZVNsb3RBdHRycyBkZWxldGVzIHRoZSBh dHRyaWJ1dGVzIHRoYXQgZGlkIG5vdCBjaGFuZ2UgYW5kCisJICogcmV0dXJucyB0aGUgc3Vy dml2aW5nICJtb2RpZmllZCBpbmRleGVkIGF0dHJpYnV0ZXMiIHNldC4KIAkgKi8KIAlhdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVEKTsKLQotCS8qCi0JICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRy aWJ1dGVzIG1lbnRpb25lZCBpbiB0aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAotCSAqIHRvIGZp bmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCi0JICogIm1v ZGlmaWVkX2lkeF9hdHRycyIuCi0JICovCiAJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRy cyhhdHRycywgdHVwZGVzYywgb2xkX3R0cywgbmV3X3R0cyk7CiAKIAlyZXR1cm4gYXR0cnM7 CkBAIC0yNTEzLDggKzI1MTgsOCBAQCBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4 dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlib29sCQlwYXJ0 aXRpb25fY29uc3RyYWludF9mYWlsZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAotCS8qIFRo ZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcg aW5kZXggZW50cmllcyAqLwotCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5V TEw7CisJLyogUmVzZXQgYW55IHN0YXRlIGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgY2Fs bCAqLworCXVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMgPSBOVUxMOwogCiAJdXBkYXRlQ3h0 LT5jcm9zc1BhcnRVcGRhdGUgPSBmYWxzZTsKIApAQCAtMjYzOCw3ICsyNjQzLDggQEAgbHJl cGxhY2U6CiAJICogd2Ugd2lsbCBvdmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlm aWVkIGJ5IGhlYXBfbW9kaWZ5X3R1cGxlKCkKIAkgKiB3aGljaCBhcmUgbm90IGtub3duIHRv IEV4ZWNHZXRVcGRhdGVkQ29scygpLgogCSAqLwotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3Qp OworCXVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMgPQorCQlFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKIAogCS8qCiAJICogQ2Fs bCBpbnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCkBAIC0yNjQ5 LDYgKzI2NTUsOCBAQCBscmVwbGFjZToKIAkgKiBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IHVwZGF0ZXMgaW4gdHJhbnNhY3Rpb24tc25hcHNob3QgbW9kZQogCSAqIHRyYW5zYWN0aW9u cy4KIAkgKi8KKwlBc3NlcnQoIWJtc19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbElu ZGV4ZXMsCisJCQkJCQkgIHVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMpKTsKIAlyZXN1bHQg PSB0YWJsZV90dXBsZV91cGRhdGUocmVzdWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90 LAogCQkJCQkJCQllc3RhdGUtPmVzX291dHB1dF9jaWQsCiAJCQkJCQkJCTAsCkBAIC0yNjU2 LDggKzI2NjQsNyBAQCBscmVwbGFjZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNr X3NuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJ CQkJCSZjb250ZXh0LT50bWZkLCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwKLQkJCQkJCQkJbW9k aWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsK KwkJCQkJCQkJJnVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KQEAgLTI2NzgsMTQgKzI2ODUsMjYgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlm eVRhYmxlQ29udGV4dCAqY29udGV4dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCUxp c3QJICAgKnJlY2hlY2tJbmRleGVzID0gTklMOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJp ZXMgZm9yIHR1cGxlIGlmIG5lY2Vzc2FyeSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9O dW1JbmRpY2VzID4gMCAmJiAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUp KQorCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lz X2VtcHR5KHVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFn cyA9IEVJSVRfSVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNf bWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLAorCQkJCQkJICB1cGRhdGVDeHQt Pm1vZGlmaWVkX2F0dHJzKTsKKworCQkvKgorCQkgKiBQb3B1bGF0ZSBwZXItaW5kZXggaWlf SW5kZXhVbmNoYW5nZWQgYmVmb3JlIGluc2VydGluZy4gIFdoZW4gdGhlIEFNCisJCSAqIHN0 b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJpYnV0ZSBw cmVzZW50KQorCQkgKiBldmVyeSBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5OyBmb3IgYSBI T1QgdXBkYXRlIG9ubHkgdGhvc2Ugd2hvc2UKKwkJICogYXR0cmlidXRlcyBvdmVybGFwIHRo ZSBtb2RpZmllZCBzZXQgZG8uCisJCSAqLworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVz dWx0UmVsSW5mbywgdXBkYXRlQ3h0LT5tb2RpZmllZF9hdHRycyk7CiAKLQkJaWYgKHVwZGF0 ZUN4dC0+dXBkYXRlSW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJ SVRfT05MWV9TVU1NQVJJWklORzsKIAkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5k ZXhUdXBsZXMocmVzdWx0UmVsSW5mbywgY29udGV4dC0+ZXN0YXRlLAotCQkJCQkJCQkJCQkg ICBmbGFncywgc2xvdCwgTklMLAorCQkJCQkJCQkJCQkgICBFSUlUX0lTX1VQREFURSB8CisJ CQkJCQkJCQkJCSAgIChhbGxfaW5kZXhlcyA/CisJCQkJCQkJCQkJCQkwIDogRUlJVF9JU19I T1RfSU5ERVhFRCksCisJCQkJCQkJCQkJCSAgIHNsb3QsIE5JTCwKIAkJCQkJCQkJCQkJICAg TlVMTCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4YWMyLi5m MDUwYzA4OGQyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTg0NSw4ICs4NDUsNiBA QCBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1v aWQsIExpc3QgKmV4cHJlc3Npb25zLAogCW4tPmlpX1VuaXF1ZSA9IHVuaXF1ZTsKIAluLT5p aV9OdWxsc05vdERpc3RpbmN0ID0gbnVsbHNfbm90X2Rpc3RpbmN0OwogCW4tPmlpX1JlYWR5 Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7Ci0Jbi0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNl OwotCW4tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJbi0+aWlfQ29uY3VycmVudCA9 IGNvbmN1cnJlbnQ7CiAJbi0+aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5p aV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IDA0ZjJlYjIxZDBiLi5k ZDExNDBiMjlmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3JlbGF0aW9uLmMKQEAgLTM4NCwxMSArMzg0LDE3IEBAIHBnc3RhdF9jb3VudF9oZWFwX2lu c2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pCiAKIC8qCiAgKiBjb3VudCBh IHR1cGxlIHVwZGF0ZQorICoKKyAqIGhvdCAgICAgIC0tIHRoZSB1cGRhdGUgd2FzIGEgaGVh cC1vbmx5IHR1cGxlIChjbGFzc2ljIEhPVCBvciBIT1QtaW5kZXhlZCkKKyAqIGhvdF9pbmRl eGVkIC0tIHRoZSB1cGRhdGUgd2FzIGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhIHN1YmNhc2Ug b2YKKyAqICAgICAgICAgICAgICAgIGhvdD10cnVlOyBob3RfaW5kZXhlZCBpbXBsaWVzIGhv dAorICogbmV3cGFnZSAgLS0gdGhlIG5ldyB0dXBsZSB3ZW50IHRvIGEgZGlmZmVyZW50IGJ1 ZmZlciB0aGFuIHRoZSBvbGQgb25lCiAgKi8KIHZvaWQKLXBnc3RhdF9jb3VudF9oZWFwX3Vw ZGF0ZShSZWxhdGlvbiByZWwsIGJvb2wgaG90LCBib29sIG5ld3BhZ2UpCitwZ3N0YXRfY291 bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhl ZCwgYm9vbCBuZXdwYWdlKQogewogCUFzc2VydCghKGhvdCAmJiBuZXdwYWdlKSk7CisJQXNz ZXJ0KCEoaG90X2luZGV4ZWQgJiYgIWhvdCkpOwogCiAJaWYgKHBnc3RhdF9zaG91bGRfY291 bnRfcmVsYXRpb24ocmVsKSkKIAl7CkBAIC0zOTgsMTEgKzQwNCwxNyBAQCBwZ3N0YXRfY291 bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQog CQlwZ3N0YXRfaW5mby0+dHJhbnMtPnR1cGxlc191cGRhdGVkKys7CiAKIAkJLyoKLQkJICog dHVwbGVzX2hvdF91cGRhdGVkIGFuZCB0dXBsZXNfbmV3cGFnZV91cGRhdGVkIGNvdW50ZXJz IGFyZQotCQkgKiBub250cmFuc2FjdGlvbmFsLCBzbyBqdXN0IGFkdmFuY2UgdGhlbQorCQkg KiB0dXBsZXNfaG90X3VwZGF0ZWQsIHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkLCBhbmQK KwkJICogdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCBjb3VudGVycyBhcmUgbm9udHJhbnNhY3Rp b25hbCwgc28ganVzdAorCQkgKiBhZHZhbmNlIHRoZW0uICB0dXBsZXNfaG90X2luZGV4ZWRf dXBkYXRlZCBpcyBjb3VudGVkIGluICphZGRpdGlvbiogdG8KKwkJICogdHVwbGVzX2hvdDog ZXZlcnkgaG90LWluZGV4ZWQgdXBkYXRlIGlzIGFsc28gYSBIT1QgdXBkYXRlLgogCQkgKi8K IAkJaWYgKGhvdCkKKwkJewogCQkJcGdzdGF0X2luZm8tPmNvdW50cy50dXBsZXNfaG90X3Vw ZGF0ZWQrKzsKKwkJCWlmIChob3RfaW5kZXhlZCkKKwkJCQlwZ3N0YXRfaW5mby0+Y291bnRz LnR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKys7CisJCX0KIAkJZWxzZSBpZiAobmV3cGFn ZSkKIAkJCXBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX25ld3BhZ2VfdXBkYXRlZCsrOwog CX0KQEAgLTg1NCw3ICs4NjYsMTAgQEAgcGdzdGF0X3JlbGF0aW9uX2ZsdXNoX2NiKFBnU3Rh dF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAl0YWJlbnRyeS0+dHVwbGVz X3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX3VwZGF0ZWQ7CiAJdGFiZW50cnkt PnR1cGxlc19kZWxldGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19kZWxldGVkOwogCXRh YmVudHJ5LT50dXBsZXNfaG90X3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX2hv dF91cGRhdGVkOworCXRhYmVudHJ5LT50dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCArPSBs c3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZDsKIAl0YWJlbnRyeS0+ dHVwbGVzX25ld3BhZ2VfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfbmV3cGFn ZV91cGRhdGVkOworCXRhYmVudHJ5LT50dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQg Kz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkOworCXRh YmVudHJ5LT50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKz0gbHN0YXRzLT5jb3Vu dHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOwogCiAJLyoKIAkgKiBJZiB0YWJs ZSB3YXMgdHJ1bmNhdGVkL2Ryb3BwZWQsIGZpcnN0IHJlc2V0IHRoZSBsaXZlL2RlYWQgY291 bnRlcnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAwNTVmNzU3MTA3 Zi4uY2E2MDUyNjU3MDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAt MTU4Niw2ICsxNTg2LDcgQEAgUmVsYXRpb25Jbml0SW5kZXhBY2Nlc3NJbmZvKFJlbGF0aW9u IHJlbGF0aW9uKQogCSAqLwogCXJlbGF0aW9uLT5yZF9pbmRleHBycyA9IE5JTDsKIAlyZWxh dGlvbi0+cmRfaW5kcHJlZCA9IE5JTDsKKwlyZWxhdGlvbi0+cmRfaW5kYXR0ciA9IE5VTEw7 CiAJcmVsYXRpb24tPnJkX2V4Y2xvcHMgPSBOVUxMOwogCXJlbGF0aW9uLT5yZF9leGNscHJv Y3MgPSBOVUxMOwogCXJlbGF0aW9uLT5yZF9leGNsc3RyYXRzID0gTlVMTDsKQEAgLTI0ODQs NiArMjQ4NSw3IEBAIFJlbGF0aW9uRGVzdHJveVJlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9u LCBib29sIHJlbWVtYmVyX3R1cGRlc2MpCiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0 cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9l eHByaW5kZXhhdHRyKTsKIAlpZiAocmVsYXRpb24tPnJkX3B1YmRlc2MpCiAJCXBmcmVlKHJl bGF0aW9uLT5yZF9wdWJkZXNjKTsKIAlpZiAocmVsYXRpb24tPnJkX29wdGlvbnMpCkBAIC01 Mjc1LDYgKzUyNzcsMTMwIEBAIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24g cmVsYXRpb24pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIFJlbGF0aW9uR2V0SW5k ZXhlZEF0dHJzIC0tIHBhbGxvYydkIEJpdG1hcHNldCBvZiBoZWFwIGF0dHJzIHRoaXMgaW5k ZXgKKyAqIHJlZmVyZW5jZXMuCisgKgorICogSW5jbHVkZXMgYXR0cmlidXRlcyB1c2VkIGFz IHNpbXBsZSBrZXkgY29sdW1ucywgSU5DTFVERSBjb2x1bW5zLCBpbnNpZGUKKyAqIGV4cHJl c3Npb24gY29sdW1ucywgYW5kIGluc2lkZSB0aGUgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUu ICBBdHRyaWJ1dGUKKyAqIG51bWJlcnMgdXNlIHRoZSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyIG9mZnNldCBjb252ZW50aW9uIHNvCisgKiB0aGF0IHN5c3RlbSBhdHRy aWJ1dGVzIGFyZSByZXByZXNlbnRhYmxlIGFsb25nc2lkZSB1c2VyIGF0dHJpYnV0ZXMuCisg KgorICogVGhlIGZ1bmN0aW9uIGJ1aWxkcyB1cCB0aGUgYml0bWFwIGZyb206CisgKiAgIC0g cmRfaW5kZXgtPmluZGtleSAgICAgICAgICAgKGtleXMgKyBJTkNMVURFKQorICogICAtIFJl bGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyAocGFyc2VkIGV4cHJlc3Npb24gdHJlZXMsIGFs cmVhZHkgY2FjaGVkKQorICogICAtIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUgICAocGFy c2VkIHByZWRpY2F0ZSB0cmVlLCBhbHJlYWR5IGNhY2hlZCkKKyAqIGFuZCBjYWNoZXMgYSBj b3B5IGluIHJkX2luZGV4ZWRhdHRyLCB3aGljaCBsaXZlcyBpbiByZF9pbmRleGN4dC4KKyAq CisgKiBUaGUgcmV0dXJuZWQgQml0bWFwc2V0IGlzIGFsbG9jYXRlZCBpbiB0aGUgY2FsbGVy J3MgY3VycmVudCBtZW1vcnkKKyAqIGNvbnRleHQ7IHRoZSBjYWxsZXIgb3ducyBpdCBhbmQg bXVzdCBibXNfZnJlZSB3aGVuIGRvbmUuICBXZSBuZXZlciBoYW5kCisgKiBvdXQgYSBib3Jy b3dlZCBwb2ludGVyIHRvIHRoZSBjYWNoZWQgY29weSBiZWNhdXNlIHJlbGNhY2hlIGludmFs aWRhdGlvbgorICogY2FuIHJlYnVpbGQgcmRfaW5kZXhjeHQgaW4gcGxhY2UgZXZlbiB3aGls ZSBhIHJlZmNvdW50IGlzIGhlbGQuCisgKgorICogQ2FsbGVyIG11c3QgaG9sZCBhbiBvcGVu IGxvY2sgb24gdGhlIGluZGV4IHJlbGF0aW9uLgorICovCitCaXRtYXBzZXQgKgorUmVsYXRp b25HZXRJbmRleGVkQXR0cnMoUmVsYXRpb24gaW5kZXhSZWwpCit7CisJQml0bWFwc2V0ICAq YXR0cnMgPSBOVUxMOworCUZvcm1fcGdfaW5kZXggaW5kZXhTdHJ1Y3Q7CisJTGlzdAkgICAq aW5kZXhwcnM7CisJTGlzdAkgICAqaW5kcHJlZDsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsK KworCUFzc2VydChpbmRleFJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfSU5ERVgg fHwKKwkJICAgaW5kZXhSZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX0lOREVYKTsKKworCS8qIEZhc3QgcGF0aDogcmV0dXJuIGEgY29weSBvZiB0aGUgY2Fj aGVkIGJpdG1hcC4gKi8KKwlpZiAoaW5kZXhSZWwtPnJkX2luZGF0dHIgIT0gTlVMTCkKKwkJ cmV0dXJuIGJtc19jb3B5KGluZGV4UmVsLT5yZF9pbmRhdHRyKTsKKworCWluZGV4U3RydWN0 ID0gaW5kZXhSZWwtPnJkX2luZGV4OworCisJLyoKKwkgKiBEdXJpbmcgdmVyeSBlYXJseSBi b290c3RyYXAgcmRfaW5kZXh0dXBsZSBtYXkgbm90IGJlIHBvcHVsYXRlZCB5ZXQuIEluCisJ ICogdGhhdCBjYXNlIHdlIGZhbGwgYmFjayB0byBqdXN0IHRoZSBrZXkgY29sdW1ucyB3aXRo b3V0IGNhY2hpbmcuCisJICovCisJaWYgKGluZGV4UmVsLT5yZF9pbmRleHR1cGxlID09IE5V TEwpCisJeworCQlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRuYXR0czsg aSsrKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBpbmRleFN0cnVjdC0+aW5ka2V5 LnZhbHVlc1tpXTsKKworCQkJaWYgKGF0dHJudW0gIT0gMCkKKwkJCQlhdHRycyA9IGJtc19h ZGRfbWVtYmVyKGF0dHJzLAorCQkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQl9CisJCXJldHVybiBhdHRyczsKKwl9CisKKwkv KgorCSAqIEtleSBjb2x1bW5zIGFuZCBJTkNMVURFIChjb3ZlcmluZykgY29sdW1ucy4gIElO Q0xVREUgY29sdW1ucyBtdXN0IGJlCisJICogY291bnRlZDogdGhlaXIgdmFsdWVzIGFyZSBz dG9yZWQgaW4gdGhlIGluZGV4IGxlYWYgYW5kIHNlcnZlZCBieQorCSAqIGluZGV4LW9ubHkg c2NhbnMsIHNvIGFuIHVwZGF0ZSB0aGF0IGNoYW5nZXMgYW4gSU5DTFVERSBjb2x1bW4gbXVz dAorCSAqIGluc2VydCBhIGZyZXNoIGluZGV4IGVudHJ5IChvciBiZSBkaXNxdWFsaWZpZWQg ZnJvbSBzdGF5aW5nCisJICogSE9ULWluZGV4ZWQpIGV4YWN0bHkgYXMgZm9yIGEga2V5IGNv bHVtbi4gIFRoaXMgbWF0Y2hlcyB0aGUgaGVhcC1sZXZlbAorCSAqIFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKC4uLiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCksIHdoaWNoIGFs c28KKwkgKiB1bmlvbnMgYWxsIGluZG5hdHRzLiAgRXhwcmVzc2lvbiBhbmQgcGFydGlhbC1w cmVkaWNhdGUgY29sdW1ucyBhcmUKKwkgKiBhZGRlZCBiZWxvdy4KKwkgKi8KKwlmb3IgKGlu dCBpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRuYXR0czsgaSsrKQorCXsKKwkJQXR0ck51 bWJlcglhdHRybnVtID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbaV07CisKKwkJLyog YXR0bnVtIDAgbWVhbnMgImV4cHJlc3Npb24iOyB0aG9zZSBhdHRycyBhcmUgcGlja2VkIHVw IGJlbG93LiAqLworCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJYXR0cnMgPSBibXNfYWRkX21l bWJlcihhdHRycywKKwkJCQkJCQkJICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCX0KKworCS8qCisJICogRXhwcmVzc2lvbiBjb2x1bW5zIGFu ZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW5zLiAgRGVsaWJlcmF0ZWx5CisJICog ZG8gTk9UIHVzZSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoKS9SZWxhdGlvbkdldElu ZGV4UHJlZGljYXRlKCkKKwkgKiBoZXJlLCBmb3IgdGhlIHNhbWUgcmVhc29uIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwIGF2b2lkcyB0aGVtOiB0aG9zZQorCSAqIGZ1bmN0aW9ucyBy dW4gZXZhbF9jb25zdF9leHByZXNzaW9ucygpLCB3aGljaCBuZWVkcyBhIHNuYXBzaG90IHdl IG1heQorCSAqIG5vdCBoYXZlLCBhbmQgY2FuIGNvbnN0LWZvbGQgYXdheSBhIFZhciByZWZl cmVuY2UgKGUuZy4gYSBDQVNFIHdpdGggYQorCSAqIHN0YXRpY2FsbHktZGVjaWRhYmxlIGJy YW5jaCksIGNhdXNpbmcgdGhpcyBiaXRtYXAgdG8gdW5kZXItcmVwb3J0IGFuCisJICogYXR0 cmlidXRlIHRoYXQgcmRfaW5kZXhlZGF0dHIvcmRfZXhwcmluZGV4YXR0ciAoYnVpbHQgZnJv bSB0aGUgc2FtZSByYXcKKwkgKiBjYXRhbG9nIHRleHQpIHN0aWxsIHJlY29yZC4gIFBhcnNl IHRoZSByYXcgc3RvcmVkIHRyZWVzIGluc3RlYWQsIHNvCisJICogdGhpcyBmdW5jdGlvbidz IHJlc3VsdCBzdGF5cyBhIHN1cGVyc2V0LWNvbnNpc3RlbnQgbWF0Y2ggd2l0aCB0aG9zZS4K KwkgKi8KKwl7CisJCURhdHVtCQlkYXR1bTsKKwkJYm9vbAkJaXNudWxsOworCisJCWRhdHVt ID0gaGVhcF9nZXRhdHRyKGluZGV4UmVsLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4 X2luZGV4cHJzLAorCQkJCQkJCSBHZXRQZ0luZGV4RGVzY3JpcHRvcigpLCAmaXNudWxsKTsK KwkJaWYgKCFpc251bGwpCisJCXsKKwkJCWluZGV4cHJzID0gKExpc3QgKikgc3RyaW5nVG9O b2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKwkJCXB1bGxfdmFyYXR0bm9zKChO b2RlICopIGluZGV4cHJzLCAxLCAmYXR0cnMpOworCQl9CisKKwkJZGF0dW0gPSBoZWFwX2dl dGF0dHIoaW5kZXhSZWwtPnJkX2luZGV4dHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwK KwkJCQkJCQkgR2V0UGdJbmRleERlc2NyaXB0b3IoKSwgJmlzbnVsbCk7CisJCWlmICghaXNu dWxsKQorCQl7CisJCQlpbmRwcmVkID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pKTsKKwkJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGluZHBy ZWQsIDEsICZhdHRycyk7CisJCX0KKwl9CisKKwkvKgorCSAqIENhY2hlIGEgY29weSBpbnNp ZGUgcmRfaW5kZXhjeHQgc28gc3Vic2VxdWVudCBjYWxscyBhcmUgY2hlYXAuICBUaGUKKwkg KiBjYWNoZWQgYml0bWFwIGlzIGZyZWVkIGFsb25nIHdpdGggcmRfaW5kZXhjeHQgb24gcmVs Y2FjaGUgcmVidWlsZCwgc28KKwkgKiBpdCdzIHNhZmUgdG8gc3Rhc2ggaGVyZS4KKwkgKi8K KwlpZiAoaW5kZXhSZWwtPnJkX2luZGV4Y3h0ICE9IE5VTEwpCisJeworCQlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kZXhSZWwtPnJkX2luZGV4Y3h0KTsKKwkJaW5kZXhS ZWwtPnJkX2luZGF0dHIgPSBibXNfY29weShhdHRycyk7CisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCX0KKworCXJldHVybiBhdHRyczsKK30KKwogLyoKICAqIFJlbGF0 aW9uR2V0SW5kZXhBdHRyQml0bWFwIC0tIGdldCBhIGJpdG1hcCBvZiBpbmRleCBhdHRyaWJ1 dGUgbnVtYmVycwogICoKQEAgLTUzMTMsNiArNTQzOSw3IEBAIEJpdG1hcHNldCAqCiBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0 bWFwS2luZCBhdHRyS2luZCkKIHsKIAlCaXRtYXBzZXQgICp1aW5kZXhhdHRyczsJLyogY29s dW1ucyBpbiB1bmlxdWUgaW5kZXhlcyAqLworCUJpdG1hcHNldCAgKmV4cHJpbmRleGF0dHJz OyAvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCiAJQml0 bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGluIHRoZSBwcmltYXJ5IGluZGV4 ICovCiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJzOwkvKiBjb2x1bW5zIGluIHRoZSByZXBs aWNhIGlkZW50aXR5ICovCiAJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJzOwkvKiBjb2x1bW5z IHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwpAQCAtNTMzOSw2ICs1NDY2LDggQEAgUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1h cEtpbmQgYXR0cktpbmQpCiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRl eGVkYXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQkJ cmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJCQljYXNl IElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQkJcmV0dXJuIGJtc19jb3B5KHJl bGF0aW9uLT5yZF9leHByaW5kZXhhdHRyKTsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJP UiwgInVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CiAJCX0KQEAgLTUzODMsNiAr NTUxMiw3IEBAIHJlc3RhcnQ6CiAJaWRpbmRleGF0dHJzID0gTlVMTDsKIAlpbmRleGVkYXR0 cnMgPSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7CisJZXhwcmluZGV4YXR0cnMg PSBOVUxMOwogCWZvcmVhY2gobCwgaW5kZXhvaWRsaXN0KQogCXsKIAkJT2lkCQkJaW5kZXhP aWQgPSBsZmlyc3Rfb2lkKGwpOwpAQCAtNTQ4Nyw2ICs1NjE3LDI4IEBAIHJlc3RhcnQ6CiAJ CS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4gdGhlIGluZGV4IHByZWRpY2F0ZSwgdG9v ICovCiAJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCBhdHRycyk7CiAKKwkJ LyoKKwkJICogSWYgdGhpcyBpbmRleCBldmFsdWF0ZXMgYW4gZXhwcmVzc2lvbiwgcmVjb3Jk IGV2ZXJ5IGhlYXAgYXR0cmlidXRlCisJCSAqIGl0IHJlZmVyZW5jZXMgKGtleSBjb2x1bW5z LCBleHByZXNzaW9uIHZhcnMsIHByZWRpY2F0ZSB2YXJzKSBpbgorCQkgKiBleHByaW5kZXhh dHRycy4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSBkaXNxdWFsaWZpZXMgdGhlCisJCSAq IEhPVC1pbmRleGVkIHBhdGggZm9yIGFuIFVQREFURSB0aGF0IHRvdWNoZXMgb25lIG9mIHRo ZXNlLCBiZWNhdXNlCisJCSAqIGV4cHJlc3Npb24tYXdhcmUgc2VsZWN0aXZlIGluZGV4IG1h aW50ZW5hbmNlIGlzIG5vdCBpbXBsZW1lbnRlZAorCQkgKiB5ZXQuCisJCSAqLworCQlpZiAo aW5kZXhFeHByZXNzaW9ucyAhPSBOVUxMKQorCQl7CisJCQlmb3IgKGkgPSAwOyBpIDwgaW5k ZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJCXsKKwkJCQlpbnQJCQlhdHRy bnVtID0gaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKKworCQkJCWlm IChhdHRybnVtICE9IDApCisJCQkJCWV4cHJpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIo ZXhwcmluZGV4YXR0cnMsCisJCQkJCQkJCQkJCQkJYXR0cm51bSAtIEZpcnN0TG93SW52YWxp ZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJfQorCQkJcHVsbF92YXJhdHRub3MoaW5kZXhF eHByZXNzaW9ucywgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJCXB1bGxfdmFyYXR0bm9zKGlu ZGV4UHJlZGljYXRlLCAxLCAmZXhwcmluZGV4YXR0cnMpOworCQl9CisKIAkJaW5kZXhfY2xv c2UoaW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOwogCX0KIApAQCAtNTUxNSwxNCArNTY2 NywyNyBAQCByZXN0YXJ0OgogCQlibXNfZnJlZShpZGluZGV4YXR0cnMpOwogCQlibXNfZnJl ZShpbmRleGVkYXR0cnMpOwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOworCQlibXNf ZnJlZShleHByaW5kZXhhdHRycyk7CiAKIAkJZ290byByZXN0YXJ0OwogCX0KIAogCS8qCi0J ICogUmVjb3JkIHdoYXQgYXR0cmlidXRlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IHN1bW1h cml6aW5nIGluZGV4ZXMuIFRoZW4KLQkgKiBhZGQgdGhhdCBpbnRvIHRoZSBvdGhlciBpbmRl eGVkIGF0dHJpYnV0ZXMgdG8gdHJhY2sgYWxsIHJlZmVyZW5jZWQKLQkgKiBhdHRyaWJ1dGVz LgorCSAqIFJlY29yZCB3aGljaCBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIG9ubHkgYnkg c3VtbWFyaXppbmcgaW5kZXhlcywgc28KKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJ WkVEIHJlcG9ydHMgY29sdW1ucyB3aG9zZSBzb2xlIGluZGV4ZXMgYXJlCisJICogc3VtbWFy aXppbmcgb25lcywgdGhlbiBmb2xkIHRob3NlIGNvbHVtbnMgaW50byBpbmRleGVkYXR0cnMg YXMgd2VsbC4KKwkgKgorCSAqIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQgbXVzdCBpbmNs dWRlIHN1bW1hcml6aW5nLWluZGV4IGNvbHVtbnMgZm9yCisJICogdGhlIEhPVC1pbmRleGVk IHdyaXRlIHBhdGg6IGl0IGNvbXBhcmVzIHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgb3Zlcgor CSAqIHRoaXMgYml0bWFwIHRvIGJ1aWxkIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzLCBhbmQgb25seQorCSAqIG1haW50YWlucyBpbmRleGVzIHdoZW4gdGhhdCBz ZXQgaXMgbm9uLWVtcHR5IChvciB0aGUgdXBkYXRlIGlzCisJICogbm9uLUhPVCkuICBBIGNo YW5nZSB0byBhIGNvbHVtbiBpbmRleGVkIG9ubHkgYnkgYSBzdW1tYXJpemluZyBpbmRleAor CSAqIG11c3QgdGhlcmVmb3JlIGFwcGVhciBpbiB0aGUgYml0bWFwIHNvIHRoZSBzdW1tYXJp emluZyBpbmRleCBnZXRzIGl0cworCSAqIGJsb2NrIHN1bW1hcnkgcmVmcmVzaGVkLiAgSGVh cFVwZGF0ZUhvdEFsbG93YWJsZSdzIGFsbF9zdW1tYXJpemluZworCSAqIGNoZWNrIHN0aWxs IGtlZXBzIHN1Y2ggYW4gdXBkYXRlIG9uIHRoZSBjbGFzc2ljLUhPVCBwYXRoIChpdCBzdGF5 cworCSAqIGNsYXNzaWMgSE9ULCBzaW5jZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVE IC0tIHN1bW1hcml6aW5nLW9ubHkgLS0KKwkgKiBpcyBhIHN1cGVyc2V0IG9mIHRoZSBtb2Rp ZmllZCBhdHRyaWJ1dGVzKSwgYW5kIHRoZSBzdW1tYXJpemluZyBpbmRleAorCSAqIGluc2Vy dHMgdW5jb25kaXRpb25hbGx5IHZpYSBpdHMgaWlfU3VtbWFyaXppbmcgZmxhZy4KIAkgKi8K IAlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGF0dHJzLCBp bmRleGVkYXR0cnMpOwogCWluZGV4ZWRhdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbmRleGVk YXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CkBAIC01NTM5LDYgKzU3MDQsOCBAQCByZXN0YXJ0 OgogCXJlbGF0aW9uLT5yZF9pbmRleGVkYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRp b24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIg PSBOVUxMOworCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9leHByaW5kZXhhdHRyKTsKKwlyZWxh dGlvbi0+cmRfZXhwcmluZGV4YXR0ciA9IE5VTEw7CiAKIAkvKgogCSAqIE5vdyBzYXZlIGNv cGllcyBvZiB0aGUgYml0bWFwcyBpbiB0aGUgcmVsY2FjaGUgZW50cnkuICBXZSBpbnRlbnRp b25hbGx5CkBAIC01NTUzLDYgKzU3MjAsNyBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9p ZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pbmRleGVk YXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6 ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsKKwlyZWxhdGlvbi0+cmRfZXhw cmluZGV4YXR0ciA9IGJtc19jb3B5KGV4cHJpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRf YXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAK QEAgLTU1NjksNiArNTczNyw3MiBAQCByZXN0YXJ0OgogCQkJcmV0dXJuIGluZGV4ZWRhdHRy czsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0dXJuIHN1 bW1hcml6ZWRhdHRyczsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgor CQkJcmV0dXJuIGV4cHJpbmRleGF0dHJzOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg InVua25vd24gYXR0cktpbmQgJXUiLCBhdHRyS2luZCk7CisJCQlyZXR1cm4gTlVMTDsKKwl9 Cit9CisKKy8qCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weSAtLSBib3Jy b3dpbmcgdmFyaWFudCBvZgorICoJCVJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwCisgKgor ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlbGNhY2hlLW93bmVkIGJpdG1hcCBmb3Ig dGhlIGdpdmVuIGF0dHJLaW5kCisgKiB3aXRob3V0IG1ha2luZyBhIGRlZmVuc2l2ZSBjb3B5 LiAgVGhpcyBpcyBhIGhvdC1wYXRoIG9wdGltaXphdGlvbiBmb3IKKyAqIHJlYWQtb25seSBj YWxsZXJzIHRoYXQgcGVyZm9ybSBzZXQgb3BlcmF0aW9ucyBsaWtlIGJtc19vdmVybGFwLAor ICogYm1zX2lzX3N1YnNldCwgYm1zX2VxdWFsLCBvciBibXNfbnVtX21lbWJlcnMgYW5kIG5l dmVyIG11dGF0ZSB0aGUKKyAqIHJldHVybmVkIGJpdG1hcC4gIFRoZSByZXN1bHQgaXMgY29u Y2VwdHVhbGx5IGBjb25zdCBCaXRtYXBzZXQgKmA7IGNhbGxlcnMKKyAqIG11c3Qgbm90IHBh c3MgaXQgdG8gYW55dGhpbmcgdGhhdCBjb3VsZCBmcmVlIG9yIG1vZGlmeSB0aGUgdW5kZXJs eWluZworICogbWVtb3J5IChlLmcuLCBibXNfYWRkX21lbWJlciwgYm1zX2ludF9tZW1iZXJz LCBibXNfZnJlZSkuCisgKgorICogTGlmZXRpbWU6IHRoZSBwb2ludGVyIGlzIHZhbGlkIG9u bHkgdW50aWwgdGhlIG5leHQgZXZlbnQgdGhhdCBjb3VsZAorICogdHJpZ2dlciBhIHJlbGNh Y2hlIGludmFsaWRhdGlvbiBvbiBgcmVsYXRpb25gLiAgQ2FsbGVycyBtdXN0IG5vdCBpbnZv a2UKKyAqIGFueSBjb2RlIHRoYXQgb3BlbnMgYSByZWxhdGlvbiwgcnVucyBjYXRhbG9nIGxv b2t1cHMsIG9yIG90aGVyd2lzZQorICogYWNjZXB0cyBpbnZhbGlkYXRpb24gbWVzc2FnZXMg YmV0d2VlbiB0aGUgZmV0Y2ggYW5kIHRoZSBsYXN0IHVzZS4KKyAqCisgKiBGb3IgdGhlIGNv bW1vbiBjYXNlIHRoZSByZWxjYWNoZSBlbnRyeSdzIGF0dHJpYnV0ZSBiaXRtYXBzIGFyZSBh bHJlYWR5CisgKiBjb21wdXRlZCAocmRfYXR0cnN2YWxpZCBpcyB0cnVlKS4gIFdoZW4gdGhl eSBhcmVuJ3QsIHdlIGdvIHRocm91Z2gKKyAqIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFw IHRvIHBvcHVsYXRlIHRoZSBjYWNoZSAod2hpY2ggY29zdHMgb25lCisgKiB0aHJvd2F3YXkg Ym1zX2NvcHkgb24gZmlyc3QgdXNlKSBhbmQgdGhlbiByZXR1cm4gdGhlIGNhY2hlZCBwb2lu dGVyIG9uCisgKiB0aGUgc2Vjb25kIHBhc3MuICBUaGUgZmlyc3QtdXNlIHBhdGggaXMgcmFy ZSBhbmQgbmV2ZXIgb24gdGhlIGJlbmNoIGhvdAorICogcGF0aCwgc28gdGhlIHNpbXBsaWNp dHkgaXMgcHJlZmVycmVkIG92ZXIgb3Blbi1jb2RpbmcgdGhlIHBvcHVsYXRlLW9ubHkKKyAq IHZhcmlhbnQuCisgKi8KK2NvbnN0IEJpdG1hcHNldCAqCitSZWxhdGlvbkdldEluZGV4QXR0 ckJpdG1hcE5vQ29weShSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBh dHRyS2luZCkKK3sKKwlpZiAoIXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkKQorCXsKKwkJQml0 bWFwc2V0ICAqcG9wdWxhdGVkOworCisJCS8qIFBvcHVsYXRlIHJkXyphdHRyIGZpZWxkczsg ZGlzY2FyZCB0aGUgcmV0dXJuZWQgY29weS4gKi8KKwkJcG9wdWxhdGVkID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIGF0dHJLaW5kKTsKKwkJYm1zX2ZyZWUocG9w dWxhdGVkKTsKKworCQkvKgorCQkgKiBJZiB0aGUgcmVsYXRpb24gaGFzIG5vIGluZGV4ZXMs IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIHJldHVybnMKKwkJICogTlVMTCB3aXRob3V0 IHNldHRpbmcgcmRfYXR0cnN2YWxpZC4gIE1pcnJvciB0aGF0IGhlcmUuCisJCSAqLworCQlp ZiAoIXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJ c3dpdGNoIChhdHRyS2luZCkKKwl7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfS0VZOgor CQkJcmV0dXJuIHJlbGF0aW9uLT5yZF9rZXlhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklU TUFQX1BSSU1BUllfS0VZOgorCQkJcmV0dXJuIHJlbGF0aW9uLT5yZF9wa2F0dHI7CisJCWNh c2UgSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgorCQkJcmV0dXJuIHJlbGF0aW9u LT5yZF9pZGF0dHI7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCXJl dHVybiByZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHI7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfU1VNTUFSSVpFRDoKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHI7 CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCXJldHVybiByZWxh dGlvbi0+cmRfZXhwcmluZGV4YXR0cjsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQkJcmV0dXJuIE5VTEw7CkBAIC02 NTA4LDYgKzY3NDIsNyBAQCBsb2FkX3JlbGNhY2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkK IAkJcmVsLT5yZF9wYXJ0Y2hlY2tjeHQgPSBOVUxMOwogCQlyZWwtPnJkX2luZGV4cHJzID0g TklMOwogCQlyZWwtPnJkX2luZHByZWQgPSBOSUw7CisJCXJlbC0+cmRfaW5kYXR0ciA9IE5V TEw7CiAJCXJlbC0+cmRfZXhjbG9wcyA9IE5VTEw7CiAJCXJlbC0+cmRfZXhjbHByb2NzID0g TlVMTDsKIAkJcmVsLT5yZF9leGNsc3RyYXRzID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9hbWFwaS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKaW5k ZXggNzkyNDAzMzM1MzAuLjE3Yzc2ZTM3Y2RlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvYW1hcGkuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaApAQCAtMjks NyArMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFBhdGggSW5kZXhQYXRoOwogLyogTGlr ZXdpc2UsIHRoaXMgZmlsZSBzaG91bGRuJ3QgZGVwZW5kIG9uIGV4ZWNub2Rlcy5oLiAqLwog dHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvIEluZGV4SW5mbzsKIAotCiAvKgogICogUHJvcGVy dGllcyBmb3IgYW1wcm9wZXJ0eSBBUEkuICBUaGlzIGxpc3QgY292ZXJzIHByb3BlcnRpZXMg a25vd24gdG8gdGhlCiAgKiBjb3JlIGNvZGUsIGJ1dCBhbiBpbmRleCBBTSBjYW4gZGVmaW5l IGl0cyBvd24gcHJvcGVydGllcywgYnkgbWF0Y2hpbmcgdGhlCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK aW5kZXggMmRiZmFkOTIxMTMuLjIzNjc2YWU3MWU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBA IC0zODQsMTEgKzM4NCw0NyBAQCBleHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZCwKIAkJCQkJCQkgYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCk7CiBleHRlcm4gdm9pZCBoZWFwX2Zpbmlz aF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVjdWxhdGl2ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOworCisvKgorICogSGVhcFVw ZGF0ZUluZGV4TW9kZSAtLQorICoJVGhyZWUtdmFsdWVkIGNsYXNzaWZpY2F0aW9uIHJldHVy bmVkIGJ5IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoKSB0aGF0CisgKgl0ZWxscyBoZWFwX3Vw ZGF0ZSgpIHdoZXRoZXIgYSBIT1QgdXBkYXRlIGlzIHBlcm1pdHRlZCBmb3IgdGhpcyB0dXBs ZSBhbmQsCisgKglpZiBzbywgd2hldGhlciB0aGUgaW5kZXhlcyBtYXkgYmUgbWFpbnRhaW5l ZCBzZWxlY3RpdmVseS4KKyAqCisgKglIRUFQX1VQREFURV9BTExfSU5ERVhFUworICoJCUhP VCBpcyBub3QgYWxsb3dlZDsgdGhlIG5ldyB0dXBsZSBtdXN0IGdvIG9uIGl0cyBvd24gVElE IGFuZCBldmVyeQorICoJCWluZGV4IHJlY2VpdmVzIGEgZnJlc2ggZW50cnkuICBUaGlzIGlz IHRoZSBjbGFzc2ljIHByZS1IT1QtaW5kZXhlZAorICoJCWJlaGF2aW9yIGZvciB1cGRhdGVz IHRoYXQgbW9kaWZ5IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlLgorICoK KyAqCUhFQVBfSEVBUF9PTkxZX1VQREFURQorICoJCUNsYXNzaWMgSE9UIHVwZGF0ZTogbm8g bm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQgKG9ubHkKKyAqCQlz dW1tYXJpemluZyBvbmVzLCBpZiBhbnkpLCBzbyBubyBpbmRleCBuZWVkcyBhIG5ldyBlbnRy eS4KKyAqCisgKglIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUKKyAqCQlIT1Qgd2l0aCBz ZWxlY3RpdmUgaW5kZXggdXBkYXRlOiBhdCBsZWFzdCBvbmUgbm9uLXN1bW1hcml6aW5nIGlu ZGV4J3MKKyAqCQlhdHRyaWJ1dGUgY2hhbmdlZCwgYnV0IHRoZSBuZXcgdHVwbGUgY2FuIHN0 aWxsIGpvaW4gdGhlIEhPVCBjaGFpbiBvbgorICoJCXRoZSBzYW1lIHBhZ2U7IG9ubHkgdGhl IGluZGV4ZXMgd2hvc2UgYXR0cmlidXRlcyBjaGFuZ2VkIHJlY2VpdmUgYSBuZXcKKyAqCQll bnRyeS4gIEFzIGZvciBjbGFzc2ljIEhPVCwgaGVhcF91cGRhdGUoKSBzdGlsbCBmYWxscyBi YWNrIHRvIGEKKyAqCQlub24tSE9UIHVwZGF0ZSBpZiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90 IGZpdCBvbiB0aGUgcGFnZS4KKyAqCisgKglDYWxsZXJzIHNob3VsZCBzcGVsbCB0aGUgZXhh Y3QgbW9kZSB0aGV5IGNhcmUgYWJvdXQuICBIRUFQX1VQREFURV9BTExfSU5ERVhFUworICoJ aXMgdGhlIHplcm8vZmFsc2UgdmFsdWUgYW5kIGRvdWJsZXMgYXMgYSBkaXN0aW5ndWlzaGVk ICJubyBIT1QiIHNlbnRpbmVsCisgKgkoZS5nLiB0ZXN0aW5nIGhvdF9tb2RlICE9IEhFQVBf VVBEQVRFX0FMTF9JTkRFWEVTKSwgYnV0IHRoZSB2YWx1ZXMgYXJlIG5vdAorICoJbWVhbmlu Z2Z1bCBhcyBhIG51bWVyaWMgb3JkZXJpbmcuCisgKi8KK3R5cGVkZWYgZW51bSBIZWFwVXBk YXRlSW5kZXhNb2RlCit7CisJSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgPSAwLAorCUhFQVBf SEVBUF9PTkxZX1VQREFURSA9IDEsCisJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFID0g MiwKK30gSGVhcFVwZGF0ZUluZGV4TW9kZTsKKwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX3Vw ZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAog CQkJCQkJCSBIZWFwVHVwbGUgbmV3dHVwLCBDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cywKIAkJCQkJCQkgU25hcHNob3QgY3Jvc3NjaGVjaywgYm9vbCB3YWl0LAogCQkJCQkJCSBU TV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKLQkJ CQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wg aG90X2FsbG93ZWQpOworCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywKKwkJCQkJCQkgSGVhcFVwZGF0ZUluZGV4TW9kZSBob3RfbW9kZSk7CiBleHRlcm4g VE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwgTG9ja1R1cGxlTW9kZSBtb2RlLCBM b2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgZm9sbG93X3VwZGF0 ZXMsCkBAIC00MjMsNyArNDU5LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9uZWVkc19l dmVudHVhbF9mcmVlemUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlKTsKIGV4dGVybiB2b2lkIHNp bXBsZV9oZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCk7CiBl eHRlcm4gdm9pZCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJ CQkJCSAgIEhlYXBUdXBsZSB0dXAsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KTsKKwkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLCBib29sICp1cGRhdGVfYWxsX2luZGV4ZXMp OwogCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsK QEAgLTQzNCw3ICs0NzAsMTAgQEAgZXh0ZXJuIHZvaWQgaGVhcGFtX2luZGV4X2ZldGNoX3Jl c2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4pOwogZXh0ZXJuIHZvaWQgaGVhcGFtX2lu ZGV4X2ZldGNoX2VuZChJbmRleEZldGNoVGFibGVEYXRhICpzY2FuKTsKIGV4dGVybiBib29s IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxh dGlvbiwKIAkJCQkJCQkJICAgQnVmZmVyIGJ1ZmZlciwgU25hcHNob3Qgc25hcHNob3QsIEhl YXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCQkJCSAgIGJvb2wgKmFsbF9kZWFkLCBib29sIGZp cnN0X2NhbGwpOworCQkJCQkJCQkgICBib29sICphbGxfZGVhZCwgYm9vbCBmaXJzdF9jYWxs LAorCQkJCQkJCQkgICBib29sICpob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkgICB1 aW50OCAqY3Jvc3NlZF9iaXRtYXAsCisJCQkJCQkJCSAgIGJvb2wgKnByZWZpeF9hbGxfZGVh ZCk7CiBleHRlcm4gYm9vbCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4 RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJCQkJCQkJCQkgSXRlbVBvaW50ZXIgdGlkLCBTbmFw c2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgYm9vbCAq aGVhcF9jb250aW51ZSwKQEAgLTQ2NCw4ICs1MDMsOSBAQCBleHRlcm4gdm9pZCBsb2dfaGVh cF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOwogCiAvKiBp biBoZWFwL2hlYXBhbS5jICovCi1leHRlcm4gYm9vbCBIZWFwVXBkYXRlSG90QWxsb3dhYmxl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRy cywKLQkJCQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KTsKKworZXh0ZXJuIEhlYXBV cGRhdGVJbmRleE1vZGUgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlv biwKKwkJCQkJCQkJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKTsK IGV4dGVybiBMb2NrVHVwbGVNb2RlIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxh dGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2Fu LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IDJlYTA2YTY3YTYzLi5m ZTQ0NjkxNzhhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBAIC0xMzQsNiArMTM0LDQ1IEBA IHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIAkgKiBwZXJtaXR0ZWQuCiAJ ICovCiAJdWludDMyCQlmbGFnczsKKworCS8qCisJICogU2lkZSBjaGFubmVsIGZvciB0YWJs ZSBBTXMgd2hvc2UgdXBkYXRlIGNoYWlucyBjYW4gcmVhY2ggYSBkaWZmZXJlbnQKKwkgKiBz ZXQgb2YgaW5kZXgta2V5IHZhbHVlcyB0aGFuIHRoZSBhcnJpdmluZyBpbmRleCBlbnRyeSBy ZWNvcmRlZCAoaGVhcCdzCisJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgY2hhaW5zKS4g IFNldCB0cnVlIGJ5IHRoZSB0YWJsZSBBTSB3aGVuIHRoZQorCSAqIHdhbGsgdG8gdGhlIGxp dmUgdHVwbGUgY3Jvc3NlZCBhIEhPVC9TSVUgaG9wIGFmdGVyIHRoZSBlbnRyeSdzIG93bgor CSAqIHR1cGxlLCBtZWFuaW5nIHRoZSBhcnJpdmluZyBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5 IG5vIGxvbmdlciBtYXRjaCB0aGUKKwkgKiBsaXZlIHR1cGxlIGFuZCB0aGUgaW5kZXgtYWNj ZXNzIGxheWVyIG11c3QgcmVjaGVjayBpdC4gIExlZnQgZmFsc2Ugd2hlbgorCSAqIG5vIHN1 Y2ggaG9wIHdhcyBjcm9zc2VkICh0aGUgZW50cnkgaXMgZGVmaW5pdGVseSBjdXJyZW50KSwg YW5kIGFsd2F5cworCSAqIGZhbHNlIGZvciBBTXMgd2l0aG91dCBzdWNoIGNoYWlucy4KKwkg Ki8KKwlib29sCQl4c19ob3RfaW5kZXhlZF9yZWNoZWNrOworCisJLyoKKwkgKiBDb21wYW5p b24gdG8geHNfaG90X2luZGV4ZWRfcmVjaGVjay4gIHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQg aXMgdGhlCisJICogdW5pb24gb2YgdGhlIHBlci1ob3AgbW9kaWZpZWQtYXR0cnMgYml0bWFw cyB0aGUgd2FsayBjcm9zc2VkIGFmdGVyIHRoZQorCSAqIGVudHJ5J3Mgb3duIHR1cGxlLCBv dmVyIGhlYXAgYXR0cmlidXRlIG51bWJlcnMgKGJpdCBhdHRudW0tMSBmb3IgYQorCSAqIDEt YmFzZWQgYXR0bnVtKS4gIFRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgdGVzdHMgaXQgYWdhaW5z dCB0aGUgYXJyaXZpbmcKKwkgKiBpbmRleCdzIGtleSBjb2x1bW5zIHRvIGp1ZGdlIHN0YWxl bmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb246IGFueQorCSAqIG92ZXJsYXAgbWVhbnMg YSBjcm9zc2VkIGhvcCBjaGFuZ2VkIG9uZSBvZiB0aGUgaW5kZXgncyBpbnB1dHMsIHNvIHRo ZQorCSAqIGVudHJ5IGlzIHN0YWxlLiAgVGhlIHVuaW9uIGlzIGNvbXBsZXRlIChldmVyeSBj cm9zc2VkIGxpdmUgaG9wIGFuZAorCSAqIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgY29udHJp YnV0ZXMgaXRzIGJpdG1hcCwgYW5kIGNvbGxhcHNlIG9ubHkKKwkgKiByZWNsYWltcyBtZW1i ZXJzIHN1YnN1bWVkIGJ5IHN1cnZpdmluZyBob3BzKSwgc28gZGlzam9pbnRuZXNzIHJlbGlh Ymx5CisJICogbWVhbnMgZnJlc2guICBJdCBpcyBOVUxMIGZvciBBTXMgd2l0aG91dCBzdWNo IGNoYWlucyBhbmQgaXMgc2l6ZWQgYnkKKwkgKiB0aGUgdGFibGUgQU0gZm9yIHRoZSBoZWFw IHJlbGF0aW9uJ3MgY29sdW1uIGNvdW50LgorCSAqLworCXVpbnQ4CSAgICp4c19ob3RfaW5k ZXhlZF9jcm9zc2VkOworCisJLyoKKwkgKiBTZXQgYnkgdGhlIHRhYmxlIEFNIHdoZW4gaXQg cmV0dXJucyBhIHR1cGxlOiB0cnVlIGlmZiBldmVyeSBjaGFpbgorCSAqIG1lbWJlciB0aGUg d2FsayBza2lwcGVkIGJlZm9yZSByZWFjaGluZyB0aGUgcmV0dXJuZWQgKHZpc2libGUpIHR1 cGxlIGlzCisJICogZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zIChiZWxvdyB0aGUgZ2xvYmFs IHhtaW4gaG9yaXpvbikuICBDb21iaW5lZAorCSAqIHdpdGggYSBzdGFsZSB2ZXJkaWN0ICh0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG92ZXJsYXBwZWQgdGhlCisJICogaW5kZXgn cyBrZXkgY29sdW1ucyksIHRoaXMgbGV0cyB0aGUgaW5kZXgtYWNjZXNzIGxheWVyCisJICog a2lsbCB0aGUgYXJyaXZpbmcgbGVhZjogbm8gc25hcHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hp bmcgdmVyc2lvbgorCSAqIHRocm91Z2ggaXQsIHNvIGl0IGlzIHJlZHVuZGFudC4gIEFNcyB3 aXRob3V0IHN1Y2ggY2hhaW5zIGxlYXZlIGl0CisJICogZmFsc2UuCisJICovCisJYm9vbAkJ eHNfcHJlZml4X2FsbF9kZWFkOwogfSBJbmRleEZldGNoVGFibGVEYXRhOwogCiBzdHJ1Y3Qg SW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwpAQCAtMTU0LDYgKzE5MywxMyBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleFNjYW5EZXNjRGF0YQogCXN0cnVjdCBTY2FuS2V5RGF0YSAqa2V5RGF0 YTsJLyogYXJyYXkgb2YgaW5kZXggcXVhbGlmaWVyIGRlc2NyaXB0b3JzICovCiAJc3RydWN0 IFNjYW5LZXlEYXRhICpvcmRlckJ5RGF0YTsJLyogYXJyYXkgb2Ygb3JkZXJpbmcgb3AgZGVz Y3JpcHRvcnMgKi8KIAlib29sCQl4c193YW50X2l0dXA7CS8qIGNhbGxlciByZXF1ZXN0cyBp bmRleCB0dXBsZXMgKi8KKwlib29sCQl4c19pbmRleF9vbmx5OwkvKiBjYWxsZXIgaXMgYW4g aW5kZXgtb25seSBzY2FuIHRoYXQgbWF5CisJCQkJCQkJCSAqIHJldHVybiB0dXBsZXMgd2l0 aG91dCBmZXRjaGluZyB0aGUgaGVhcDsKKwkJCQkJCQkJICogQU1zIG11c3QgcmV0YWluIGxl YWYtcGFnZSBwaW5zIGZvciBzdWNoCisJCQkJCQkJCSAqIHNjYW5zIChWTSBhbGwtdmlzaWJs ZSAvIFRJRC1yZWN5Y2xlIHJhY2UpLAorCQkJCQkJCQkgKiB3aGVyZWFzIGEgcGxhaW4gc2Nh biB0aGF0IHNldHMgeHNfd2FudF9pdHVwCisJCQkJCQkJCSAqIG9ubHkgdG8gaW5zcGVjdCB0 aGUgaW5kZXggdHVwbGUgc3RpbGwKKwkJCQkJCQkJICogZmV0Y2hlcyB0aGUgaGVhcCBhbmQg bWF5IGRyb3AgcGlucyAqLwogCWJvb2wJCXhzX3RlbXBfc25hcDsJLyogdW5yZWdpc3RlciBz bmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAogCS8qIHNpZ25hbGluZyB0byBpbmRleCBBTSBh Ym91dCBraWxsaW5nIGluZGV4IHR1cGxlcyAqLwpAQCAtMTg5LDYgKzIzNSwyMCBAQCB0eXBl ZGVmIHN0cnVjdCBJbmRleFNjYW5EZXNjRGF0YQogCiAJYm9vbAkJeHNfcmVjaGVjazsJCS8q IFQgbWVhbnMgc2NhbiBrZXlzIG11c3QgYmUgcmVjaGVja2VkICovCiAKKwkvKgorCSAqIFQg bWVhbnMgdGhlIGluZGV4IGVudHJ5IHRoYXQgcmVhY2hlZCB4c19oZWFwdGlkIGlzIHN0YWxl OiB0aGUgSE9UIGNoYWluCisJICogd2Fsa2VkIHRvIHJlYWNoIHRoZSB0dXBsZSBjcm9zc2Vk IGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpCisJICogaG9wIHRoYXQgY2hh bmdlZCBhbiBhdHRyaWJ1dGUgdGhpcyBpbmRleCBjb3ZlcnMsIHNvIHRoZSBhcnJpdmluZwor CSAqIGVudHJ5J3Mgc3RvcmVkIGtleSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBs ZS4gIFRoZSBleGVjdXRvcgorCSAqIGRyb3BzIHN1Y2ggYSB0dXBsZTsgdGhlIHJvdyBpcyBy ZS1zdXBwbGllZCBieSB0aGUgZnJlc2ggZW50cnkgaW5zZXJ0ZWQKKwkgKiBmb3IgdGhlIG5l dyB2YWx1ZS4gIFVubGlrZSB4c19yZWNoZWNrIChzZXQgYnkgbG9zc3kgQU1zIHN1Y2ggYXMg R2lTVAorCSAqIGFuZCBHSU4pLCB0aGlzIGlzIGNvbXB1dGVkIGJ5IHRoZSBpbmRleC1hY2Nl c3MgbGF5ZXIgYnkgdGVzdGluZyB0aGUKKwkgKiBoZWFwIEFNJ3MgY3Jvc3NlZC1hdHRyaWJ1 dGUgYml0bWFwICh4c19ob3RfaW5kZXhlZF9jcm9zc2VkKSBhZ2FpbnN0CisJICogdGhpcyBp bmRleCdzIGtleSBjb2x1bW5zOiBhbnkgb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNo YW5nZWQgb25lCisJICogb2YgdGhlIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUgZW50cnkgaXMg c3RhbGUuCisJICovCisJYm9vbAkJeHNfaG90X2luZGV4ZWRfc3RhbGU7CisKIAkvKgogCSAq IFdoZW4gZmV0Y2hpbmcgd2l0aCBhbiBvcmRlcmluZyBvcGVyYXRvciwgdGhlIHZhbHVlcyBv ZiB0aGUgT1JERVIgQlkKIAkgKiBleHByZXNzaW9ucyBvZiB0aGUgbGFzdCByZXR1cm5lZCB0 dXBsZSwgYWNjb3JkaW5nIHRvIHRoZSBpbmRleC4gIElmCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApp bmRleCBhOTc3OGIzNTI4ZC4uZTdiZDlmM2U2ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApA QCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNs dWRlICJhY2Nlc3Mvc2Rpci5oIgorI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKQEAgLTI4LDYgKzI5LDE4IEBACiAK ICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgogCisvKgorICog V2hvbGUtcm93IHNlbnRpbmVsIGZvciB0aGUgaW4vb3V0IG1vZGlmaWVkLWF0dHJpYnV0ZXMg c2V0IG9mCisgKiB0YWJsZV90dXBsZV91cGRhdGUoKS4gIE9uIGlucHV0IHRoZSBjYWxsZXIg c3VwcGxpZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlcworICogd2hvc2UgdmFsdWVzIGNoYW5n ZWQuICBBIHRhYmxlIEFNIHRoYXQgc3RvcmVkIHRoZSBuZXcgdHVwbGUgYXMgYW4KKyAqIGlu ZGVwZW5kZW50IHZlcnNpb24gbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBleGlzdGluZyBp bmRleCBlbnRyaWVzIChmb3IKKyAqIGhlYXAsIGEgbm9uLUhPVCB1cGRhdGUpIGFkZHMgdGhp cyB3aG9sZS1yb3cgYXR0cmlidXRlIChhdHRyaWJ1dGUgbnVtYmVyIDAsCisgKiBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pIG9uIG91dHB1dCwgc2ln bmFsbGluZyB0aGF0CisgKiBldmVyeSBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeS4gIERpZmZp bmcgcmVhbCBjb2x1bW5zIG5ldmVyIHlpZWxkcyBhdHRyaWJ1dGUKKyAqIDAsIHNvIGl0IGlz IHVuYW1iaWd1b3VzIGFzIHRoaXMgc2VudGluZWwuCisgKi8KKyNkZWZpbmUgVGFibGVUdXBs ZVVwZGF0ZUFsbEluZGV4ZXMJKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyKQorCiAvKiBHVUNzICovCiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqZGVmYXVsdF90 YWJsZV9hY2Nlc3NfbWV0aG9kOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3luY2hyb25p emVfc2Vxc2NhbnM7CkBAIC0xMjUsMjIgKzEzOCw2IEBAIHR5cGVkZWYgZW51bSBUTV9SZXN1 bHQKIAlUTV9Xb3VsZEJsb2NrLAogfSBUTV9SZXN1bHQ7CiAKLS8qCi0gKiBSZXN1bHQgY29k ZXMgZm9yIHRhYmxlX3VwZGF0ZSguLi4sIHVwZGF0ZV9pbmRleGVzKi4uKS4KLSAqIFVzZWQg dG8gZGV0ZXJtaW5lIHdoaWNoIGluZGV4ZXMgdG8gdXBkYXRlLgotICovCi10eXBlZGVmIGVu dW0gVFVfVXBkYXRlSW5kZXhlcwotewotCS8qIE5vIGluZGV4ZWQgY29sdW1ucyB3ZXJlIHVw ZGF0ZWQgKGluY2wuIFRJRCBhZGRyZXNzaW5nIG9mIHR1cGxlKSAqLwotCVRVX05vbmUsCi0K LQkvKiBBIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGNvbHVtbiB3YXMgdXBkYXRlZCwgb3Ig dGhlIFRJRCBoYXMgY2hhbmdlZCAqLwotCVRVX0FsbCwKLQotCS8qIE9ubHkgc3VtbWFyaXpl ZCBjb2x1bW5zIHdlcmUgdXBkYXRlZCwgVElEIGlzIHVuY2hhbmdlZCAqLwotCVRVX1N1bW1h cml6aW5nLAotfSBUVV9VcGRhdGVJbmRleGVzOwotCiAvKgogICogV2hlbiB0YWJsZV90dXBs ZV91cGRhdGUsIHRhYmxlX3R1cGxlX2RlbGV0ZSwgb3IgdGFibGVfdHVwbGVfbG9jayBmYWls CiAgKiBiZWNhdXNlIHRoZSB0YXJnZXQgdHVwbGUgaXMgYWxyZWFkeSBvdXRkYXRlZCwgdGhl eSBmaWxsIGluIHRoaXMgc3RydWN0IHRvCkBAIC00ODgsNiArNDg1LDEzIEBAIHR5cGVkZWYg c3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICogaW5kZXhfZmV0Y2hfdHVwbGUgaWZmIGl0IGlz IGd1YXJhbnRlZWQgdGhhdCBubyBiYWNrZW5kIG5lZWRzIHRvIHNlZQogCSAqIHRoYXQgdHVw bGUuIEluZGV4IEFNcyBjYW4gdXNlIHRoYXQgdG8gYXZvaWQgcmV0dXJuaW5nIHRoYXQgdGlk IGluCiAJICogZnV0dXJlIHNlYXJjaGVzLgorCSAqCisJICogSWYgYSB0dXBsZSBpcyByZXR1 cm5lZCBhbmQgdGhlIHRhYmxlIEFNIHJlYWNoZWQgaXQgYnkgd2Fsa2luZyBhIEhPVAorCSAq IGNoYWluIHRoYXQgY3Jvc3NlZCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lV KSBob3AgYWZ0ZXIgdGhlCisJICogYXJyaXZpbmcgZW50cnkncyBvd24gdHVwbGUsIGl0IHNl dHMgc2Nhbi0+eHNfaG90X2luZGV4ZWRfcmVjaGVjayAoc2VlCisJICogc3RydWN0IEluZGV4 RmV0Y2hUYWJsZURhdGEpIHRvIHRlbGwgdGhlIGluZGV4LWFjY2VzcyBsYXllciB0byByZWNo ZWNrCisJICogdGhlIGFycml2aW5nIGxlYWYga2V5IGFnYWluc3QgdGhlIGxpdmUgdHVwbGUu ICBBTXMgd2l0aG91dCBzdWNoIHVwZGF0ZQorCSAqIGNoYWlucyBsZWF2ZSBpdCBmYWxzZS4K IAkgKi8KIAlib29sCQkoKmluZGV4X2ZldGNoX3R1cGxlKSAoc3RydWN0IEluZGV4RmV0Y2hU YWJsZURhdGEgKnNjYW4sCiAJCQkJCQkJCQkgIEl0ZW1Qb2ludGVyIHRpZCwKQEAgLTU4Niw4 ICs1OTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkgYm9v bCB3YWl0LAogCQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCQkJCSBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZp ZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4 ZXMpOworCQkJCQkJCQkgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAJLyogc2Vl IHRhYmxlX3R1cGxlX2xvY2soKSBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8K IAlUTV9SZXN1bHQJKCp0dXBsZV9sb2NrKSAoUmVsYXRpb24gcmVsLApAQCAtMTMxOSwxMSAr MTMyMiwyMCBAQCB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShzdHJ1Y3QgSW5kZXhGZXRjaFRh YmxlRGF0YSAqc2NhbiwKICAqIHJldHVybnMgd2hldGhlciB0aGVyZSBhcmUgdGFibGUgdHVw bGUgaXRlbXMgY29ycmVzcG9uZGluZyB0byBhbiBpbmRleAogICogZW50cnkuICBUaGlzIGxp a2VseSBpcyBvbmx5IHVzZWZ1bCB0byB2ZXJpZnkgaWYgdGhlcmUncyBhIGNvbmZsaWN0IGlu IGEKICAqIHVuaXF1ZSBpbmRleC4KKyAqCisgKiBJZiBrZWVwX3Nsb3QgaXMgbm9uLU5VTEws IG9uIGEgcG9zaXRpdmUgcmVzdWx0IHRoZSBmdW5jdGlvbiBzdG9yZXMgdGhlCisgKiBmZXRj aGVkIHR1cGxlIGludG8gKmtlZXBfc2xvdCAod2hpY2ggbXVzdCBiZSBhIHZhbGlkIHNsb3Qg b2YgdGhlCisgKiByZWxhdGlvbidzIHR5cGUpIGFuZCByZXR1cm5zIHdpdGggdGhlIHNsb3Qg cG9wdWxhdGVkOyB0aGUgY2FsbGVyIGlzCisgKiByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcg dGhlIHNsb3QuICBXaGVuIGtlZXBfc2xvdCBpcyBOVUxMIGEgdGVtcG9yYXJ5CisgKiBzbG90 IGlzIGNyZWF0ZWQgaW50ZXJuYWxseSBhbmQgZHJvcHBlZCBiZWZvcmUgcmV0dXJuLCBtYXRj aGluZyB0aGUKKyAqIHByZS1leGlzdGluZyBiZWhhdmlvdXIuCiAgKi8KIGV4dGVybiBib29s IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ CQkgIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAot CQkJCQkJCQkJCSAgYm9vbCAqYWxsX2RlYWQpOworCQkJCQkJCQkJCSAgYm9vbCAqYWxsX2Rl YWQsCisJCQkJCQkJCQkJICBib29sICpob3RfaW5kZXhlZF9yZWNoZWNrX291dCwKKwkJCQkJ CQkJCQkgIFR1cGxlVGFibGVTbG90ICprZWVwX3Nsb3QpOwogCiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTU3NCwxMiArMTU4NiwyMCBAQCB0YWJsZV90dXBsZV9kZWxldGUoUmVs YXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsIENvbW1hbmRJZCBjaWQsCiAgKgkJVEFCTEVf VVBEQVRFX05PX0xPR0lDQUwgLS0gZm9yY2UtZGlzYWJsZXMgdGhlIGVtaXR0aW5nIG9mIGxv Z2ljYWwKICAqCQlkZWNvZGluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIHR1cGxlLgogICoKKyAq IEluIHBhcmFtZXRlcnM6CisgKgltb2RpZmllZF9hdHRycyAtIGluL291dDsgb24gaW5wdXQs IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzIHdob3NlCisgKgkJdmFsdWVzIGNoYW5n ZWQgKEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgY29udmVudGlvbikuICBB CisgKgkJdGFibGUgQU0gbWF5IHVzZSB0aGlzIHRvIGNob29zZSBiZXR3ZWVuIEhPVCBhbmQg bm9uLUhPVCBzdG9yYWdlIG9mIHRoZQorICoJCW5ldyB0dXBsZS4gIE9uIG91dHB1dCB0aGUg QU0gYWRkcyB0aGUgd2hvbGUtcm93IGF0dHJpYnV0ZQorICoJCShUYWJsZVR1cGxlVXBkYXRl QWxsSW5kZXhlcykgaWZmIGl0IHN0b3JlZCB0aGUgbmV3IHR1cGxlIGFzIGFuCisgKgkJaW5k ZXBlbmRlbnQgdmVyc2lvbiByZXF1aXJpbmcgYSBmcmVzaCBlbnRyeSBpbiBldmVyeSBpbmRl eDsgb3RoZXJ3aXNlCisgKgkJdGhlIGNhbGxlciBjb25zdWx0cyBlYWNoIGluZGV4J3Mgb3du IGF0dHJpYnV0ZXMgYWdhaW5zdCB0aGlzIHNldCB0bworICoJCWRlY2lkZSBwZXIgaW5kZXgg KHRoZSBzdGFuZGFyZCBIT1QgLyBzZWxlY3RpdmUtaW5kZXgtdXBkYXRlIGNhc2VzKS4KKyAq CiAgKiBPdXRwdXQgcGFyYW1ldGVyczoKICAqCXNsb3QgLSBuZXdseSBjb25zdHJ1Y3RlZCB0 dXBsZSBkYXRhIHRvIHN0b3JlCiAgKgl0bWZkIC0gZmlsbGVkIGluIGZhaWx1cmUgY2FzZXMg KHNlZSBiZWxvdykKICAqCWxvY2ttb2RlIC0gZmlsbGVkIHdpdGggbG9jayBtb2RlIGFjcXVp cmVkIG9uIHR1cGxlCi0gKgl1cGRhdGVfaW5kZXhlcyAtIGluIHN1Y2Nlc3MgY2FzZXMgdGhp cyBpcyBzZXQgaWYgbmV3IGluZGV4IGVudHJpZXMKLSAqCQlhcmUgcmVxdWlyZWQgZm9yIHRo aXMgdHVwbGU7IHNlZSBUVV9VcGRhdGVJbmRleGVzCiAgKgogICogTm9ybWFsLCBzdWNjZXNz ZnVsIHJldHVybiB2YWx1ZSBpcyBUTV9Paywgd2hpY2ggbWVhbnMgd2UgZGlkIGFjdHVhbGx5 CiAgKiB1cGRhdGUgaXQuICBGYWlsdXJlIHJldHVybiBjb2RlcyBhcmUgVE1fU2VsZk1vZGlm aWVkLCBUTV9VcGRhdGVkLCBhbmQKQEAgLTE2MDAsMTIgKzE2MjAsMTQgQEAgdGFibGVfdHVw bGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJsZVNs b3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCiAJCQkJ ICAgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCiAJCQkJICAgYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUs Ci0JCQkJICAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIFRVX1VwZGF0 ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCSAgIEJpdG1hcHNldCAqKm1vZGlmaWVk X2F0dHJzKQogeworCUFzc2VydChtb2RpZmllZF9hdHRycyA9PSBOVUxMIHx8CisJCSAgICFi bXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCAqbW9kaWZpZWRfYXR0 cnMpKTsKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlk LCBzbG90LAogCQkJCQkJCQkJCSBjaWQsIG9wdGlvbnMsIHNuYXBzaG90LCBjcm9zc2NoZWNr LAogCQkJCQkJCQkJCSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKLQkJCQkJCQkJCQkgbW9kaWZp ZWRfaWR4X2F0dHJzLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJIG1vZGlmaWVkX2F0 dHJzKTsKIH0KIAogLyoKQEAgLTIwOTAsOCArMjExMiw3IEBAIGV4dGVybiB2b2lkIHNpbXBs ZV90YWJsZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsCiAJ CQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVybiB2b2lkIHNpbXBsZV90YWJs ZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJ CQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJ CQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkJICBU VV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkgIEJpdG1hcHNl dCAqKm1vZGlmaWVkX2F0dHJzKTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAxNjY2MWJjNjZkOS4uZjcyMTFlY2VjZmYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1 ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNj LmgiCiAjaW5jbHVkZSAiZm1nci5oIgotI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgog I2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vu b2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC03NTUsMTEgKzc1NCwx MyBAQCBleHRlcm4gQml0bWFwc2V0ICpFeGVjR2V0QWxsVXBkYXRlZENvbHMoUmVzdWx0UmVs SW5mbyAqcmVsaW5mbywgRVN0YXRlICplc3RhdGUpOwogICovCiBleHRlcm4gdm9pZCBFeGVj T3BlbkluZGljZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxh dGl2ZSk7CiBleHRlcm4gdm9pZCBFeGVjQ2xvc2VJbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8pOworZXh0ZXJuIHZvaWQgRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOwogCiAvKiBmbGFncyBmb3IgRXhlY0luc2VydEluZGV4VHVw bGVzICovCiAjZGVmaW5lCQlFSUlUX0lTX1VQREFURQkJCSgxPDwwKQogI2RlZmluZQkJRUlJ VF9OT19EVVBFX0VSUk9SCQkoMTw8MSkKLSNkZWZpbmUJCUVJSVRfT05MWV9TVU1NQVJJWklO RwkoMTw8MikKKyNkZWZpbmUJCUVJSVRfSVNfSE9UX0lOREVYRUQJCSgxPDwyKQogZXh0ZXJu IExpc3QgKkV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJICAgdWludDMyIGZsYWdzLCBUdXBsZVRh YmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJICAgTGlzdCAqYXJiaXRlckluZGV4ZXMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGU2NGZkOGM3ZWEzLi4yZTM3MTIyMDVhNCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTIxNiwxMCArMjE2LDE4IEBAIHR5cGVkZWYgc3RydWN0 IEluZGV4SW5mbwogCWJvb2wJCWlpX051bGxzTm90RGlzdGluY3Q7CiAJLyogaXMgaXQgdmFs aWQgZm9yIGluc2VydHM/ICovCiAJYm9vbAkJaWlfUmVhZHlGb3JJbnNlcnRzOwotCS8qIElu ZGV4VW5jaGFuZ2VkIHN0YXR1cyBkZXRlcm1pbmVkIHlldD8gKi8KLQlib29sCQlpaV9DaGVj a2VkVW5jaGFuZ2VkOwotCS8qIGFtaW5zZXJ0IGhpbnQsIGNhY2hlZCBmb3IgcmV0YWlsIGlu c2VydHMgKi8KKwkvKgorCSAqIGFtaW5zZXJ0IGhpbnQ6IGluZGV4IGxvZ2ljYWxseSB1bmNo YW5nZWQgYnkgVVBEQVRFPyAgTmFycm93IHJ1bGU6IGtleQorCSAqIGNvbHVtbnMgb25seTsg SU5DTFVERSBjb2x1bW5zIGFuZCB0aGUgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgYXJlIG5v dAorCSAqIGNvbnNpZGVyZWQgKGV4cHJlc3Npb24gaW5kZXhlcyBhcmUgdHJlYXRlZCBjb25z ZXJ2YXRpdmVseSkuCisJICovCiAJYm9vbAkJaWlfSW5kZXhVbmNoYW5nZWQ7CisJLyoKKwkg KiBzZWxlY3RpdmUgVVBEQVRFOiBkb2VzIHRoaXMgaW5kZXggbmVlZCBhIG5ldyBlbnRyeT8g IFdpZGUgcnVsZTogdHJ1ZSBpZgorCSAqIGFueSBrZXksIElOQ0xVREUsIGV4cHJlc3Npb24s IG9yIHByZWRpY2F0ZSBjb2x1bW4gaXQgcmVmZXJlbmNlcyBjaGFuZ2VkCisJICogKG9yIHRo ZSBBTSBzdG9yZWQgYW4gaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24pLgorCSAqLworCWJvb2wJ CWlpX0luZGV4TmVlZHNVcGRhdGU7CiAJLyogYXJlIHdlIGRvaW5nIGEgY29uY3VycmVudCBp bmRleCBidWlsZD8gKi8KIAlib29sCQlpaV9Db25jdXJyZW50OwogCS8qIGRpZCB3ZSBkZXRl Y3QgYW55IGJyb2tlbiBIT1QgY2hhaW5zPyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCA1OGE0NDg1N2YxMy4uMjhi NzkzNzBmMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9p bmNsdWRlL3Bnc3RhdC5oCkBAIC0xNTEsNyArMTUxLDE5IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9UYWJsZUNvdW50cwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc191cGRhdGVkOwogCVBn U3RhdF9Db3VudGVyIHR1cGxlc19kZWxldGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19o b3RfdXBkYXRlZDsKKwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZDsKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfbmV3cGFnZV91cGRhdGVkOworCisJLyoKKwkg KiBQZXItaW5kZXggSE9ULWluZGV4ZWQgdXBkYXRlIGNvdW50ZXJzLiAgTWFpbnRhaW5lZCBv biBwZ3N0YXQgZW50cmllcworCSAqIGtleWVkIG9uIGFuIGluZGV4IG9pZCwgbm90IG9uIHRo ZSBvd25pbmcgdGFibGUncyBlbnRyeS4gIFRoZXkgY291bnQgaG93CisJICogbWFueSBIT1Qt aW5kZXhlZCB1cGRhdGVzIHNraXBwZWQgdGhpcyBpbmRleCAoa2V5IHVuY2hhbmdlZCkgdnMu CisJICogaW5zZXJ0ZWQgYSBmcmVzaCBlbnRyeSAoa2V5IGNoYW5nZWQpLiAgU3VtbWFyaXpp bmcgaW5kZXhlcyBkbyBub3QKKwkgKiBjb250cmlidXRlIHRvIGVpdGhlciBjb3VudGVyLgor CSAqLworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDsK KwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ7CisKIAli b29sCQl0cnVuY2Ryb3BwZWQ7CiAKIAlQZ1N0YXRfQ291bnRlciBkZWx0YV9saXZlX3R1cGxl czsKQEAgLTIxOCw3ICsyMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfVGFibGVYYWN0 U3RhdHVzCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCi0jZGVmaW5lIFBHU1RBVF9GSUxFX0ZPUk1BVF9J RAkweDAxQTVCQ0JDCisjZGVmaW5lIFBHU1RBVF9GSUxFX0ZPUk1BVF9JRAkweDAxQTVCQ0JE CiAKIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9BcmNoaXZlclN0YXRzCiB7CkBAIC00NjAsOCAr NDcyLDEzIEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0VGFiRW50cnkKIAlQZ1N0YXRf Q291bnRlciB0dXBsZXNfdXBkYXRlZDsKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfZGVsZXRl ZDsKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X3VwZGF0ZWQ7CisJUGdTdGF0X0NvdW50 ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X25ld3BhZ2VfdXBkYXRlZDsKIAorCS8qIFBlci1pbmRleCBIT1QtaW5kZXhlZCB1cGRhdGUg Y291bnRlcnMgKHNlZSBQZ1N0YXRfVGFibGVDb3VudHMpLiAqLworCVBnU3RhdF9Db3VudGVy IHR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDsKKwlQZ1N0YXRfQ291bnRlciB0dXBs ZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ7CisKIAlQZ1N0YXRfQ291bnRlciBsaXZlX3R1 cGxlczsKIAlQZ1N0YXRfQ291bnRlciBkZWFkX3R1cGxlczsKIAlQZ1N0YXRfQ291bnRlciBt b2Rfc2luY2VfYW5hbHl6ZTsKQEAgLTc1Miw2ICs3NjksMTYgQEAgZXh0ZXJuIHZvaWQgcGdz dGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCiAJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfcmV0dXJuZWQgKz0gKG4pOwkJXAogCX0gd2hpbGUgKDApCisjZGVmaW5l IHBnc3RhdF9jb3VudF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZChyZWwpCQkJCQkJXAorCWRv IHsJCQkJCQkJCQkJCQkJCQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9u KHJlbCkpCQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hv dF9pbmRleGVkX3VwZF9za2lwcGVkKys7XAorCX0gd2hpbGUgKDApCisjZGVmaW5lIHBnc3Rh dF9jb3VudF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZChyZWwpCQkJCQkJXAorCWRvIHsJCQkJ CQkJCQkJCQkJCQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkp CQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF9pbmRl eGVkX3VwZF9tYXRjaGVkKys7XAorCX0gd2hpbGUgKDApCiAjZGVmaW5lIHBnc3RhdF9jb3Vu dF9idWZmZXJfcmVhZChyZWwpCQkJCQkJCQlcCiAJZG8gewkJCQkJCQkJCQkJCQkJCVwKIAkJ aWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCkBAIC03NjQs NyArNzkxLDcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hbmFseXplKFJlbGF0aW9u IHJlbCwKIAl9IHdoaWxlICgwKQogCiBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF9p bnNlcnQoUmVsYXRpb24gcmVsLCBQZ1N0YXRfQ291bnRlciBuKTsKLWV4dGVybiB2b2lkIHBn c3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJvb2wgaG90LCBib29sIG5l d3BhZ2UpOworZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9u IHJlbCwgYm9vbCBob3QsIGJvb2wgaG90X2luZGV4ZWQsIGJvb2wgbmV3cGFnZSk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsKTsKIGV4dGVy biB2b2lkIHBnc3RhdF9jb3VudF90cnVuY2F0ZShSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X3VwZGF0ZV9oZWFwX2RlYWRfdHVwbGVzKFJlbGF0aW9uIHJlbCwgaW50IGRl bHRhKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmgKaW5kZXggMTdkYmRiZTY0NWQuLjMwNDc4M2YwYmJjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQog CUJpdG1hcHNldCAgKnJkX2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJlcGxpY2EgaWRlbnRp dHkgaW5kZXggKi8KIAlCaXRtYXBzZXQgICpyZF9pbmRleGVkYXR0cjsgLyogYWxsIGNvbHMg cmVmZXJlbmNlZCBieSBpbmRleGVzICovCiAJQml0bWFwc2V0ICAqcmRfc3VtbWFyaXplZGF0 dHI7CS8qIGNvbHMgaW5kZXhlZCBieSBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFw c2V0ICAqcmRfZXhwcmluZGV4YXR0cjsJLyogY29scyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Np b24gaW5kZXhlcyAqLwogCiAJUHVibGljYXRpb25EZXNjICpyZF9wdWJkZXNjOwkvKiBwdWJs aWNhdGlvbiBkZXNjcmlwdG9yLCBvciBOVUxMICovCiAKQEAgLTIxNyw2ICsyMTgsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25EYXRhCiAJT2lkCQkgICAqcmRfaW5kY29sbGF0aW9u OwkvKiBPSURzIG9mIGluZGV4IGNvbGxhdGlvbnMgKi8KIAlieXRlYQkgICoqcmRfb3Bjb3B0 aW9uczsJLyogcGFyc2VkIG9wY2xhc3Mtc3BlY2lmaWMgb3B0aW9ucyAqLwogCisJLyoKKwkg KiBCaXRtYXAgb2YgaGVhcCBhdHRyaWJ1dGUgbnVtYmVycyByZWZlcmVuY2VkIGJ5IHRoaXMg aW5kZXggKHNpbXBsZSBrZXlzLAorCSAqIElOQ0xVREUgY29sdW1ucywgZXhwcmVzc2lvbiBj b2x1bW5zLCBhbmQgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUKKwkgKiBjb2x1bW5zKSwgb2Zm c2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIuIExhemlseSBidWls dCBieQorCSAqIFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgYW5kIGNhY2hlZCBpbiByZF9p bmRleGN4dC4gQ29uc3VtZXJzIG11c3QKKwkgKiBibXNfY29weSBiZWZvcmUgcmVseWluZyBv biB0aGUgcG9pbnRlciBiZXlvbmQgYW55IHBvdGVudGlhbAorCSAqIEFjY2VwdEludmFsaWRh dGlvbk1lc3NhZ2VzKCkgY2FsbC4KKwkgKi8KKwlCaXRtYXBzZXQgICpyZF9pbmRhdHRyOwor CiAJLyoKIAkgKiByZF9hbWNhY2hlIGlzIGF2YWlsYWJsZSBmb3IgaW5kZXggYW5kIHRhYmxl IEFNcyB0byBjYWNoZSBwcml2YXRlIGRhdGEKIAkgKiBhYm91dCB0aGUgcmVsYXRpb24uICBU aGlzIG11c3QgYmUganVzdCBhIGNhY2hlIHNpbmNlIGl0IG1heSBnZXQgcmVzZXQKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy9yZWxjYWNoZS5oCmluZGV4IDg5Nzg4MDkxNTc2Li5hMzgxYWEzZTA5NSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9yZWxjYWNoZS5oCkBAIC02Miw2ICs2MiwxOSBAQCBleHRlcm4gTGlzdCAqUmVsYXRpb25H ZXREdW1teUluZGV4RXhwcmVzc2lvbnMoUmVsYXRpb24gcmVsYXRpb24pOwogZXh0ZXJuIExp c3QgKlJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24gcmVsYXRpb24pOwogZXh0 ZXJuIGJ5dGVhICoqUmVsYXRpb25HZXRJbmRleEF0dE9wdGlvbnMoUmVsYXRpb24gcmVsYXRp b24sIGJvb2wgY29weSk7CiAKKy8qCisgKiBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyAtLSBy ZXR1cm4gYSBmcmVzaGx5LXBhbGxvYydkIEJpdG1hcHNldCBvZiBldmVyeQorICogaGVhcCBh dHRyaWJ1dGUgdGhpcyBpbmRleCByZWZlcmVuY2VzLCB2aWEga2V5cywgSU5DTFVERSBjb2x1 bW5zLAorICogZXhwcmVzc2lvbnMsIG9yIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlcy4KKyAq CisgKiBUaGUgYXJndW1lbnQgbXVzdCBiZSBhbiBpbmRleCBSZWxhdGlvbiAobm90IGl0cyBv d25pbmcgaGVhcCkuICBBdHRyaWJ1dGUKKyAqIG51bWJlcnMgYXJlIG9mZnNldCBieSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLiAgVGhlIHJlc3VsdCBpcworICogcGFs bG9jJ2QgaW4gdGhlIGNhbGxlcidzIGNvbnRleHQ7IGJtc19mcmVlIHdoZW4gZG9uZS4gIFRo ZSByZWxjYWNoZQorICogY2FjaGVzIGl0cyBvd24gY29weSBpbiByZF9pbmRleGN4dCBzbyBz dWJzZXF1ZW50IGNhbGxzIG9ubHkgcGF5IGZvciB0aGUKKyAqIGZpbmFsIGJtc19jb3B5Lgor ICovCitleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhSZWxhdGlv biBpbmRleFJlbCk7CisKIC8qCiAgKiBXaGljaCBzZXQgb2YgY29sdW1ucyB0byByZXR1cm4g YnkgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAuCiAgKi8KQEAgLTcyLDExICs4NSwxNSBA QCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2luZAogCUlOREVYX0FUVFJfQklUTUFQ X0lERU5USVRZX0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVELAogCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQsCisJSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTiwK IH0gSW5kZXhBdHRyQml0bWFwS2luZDsKIAogZXh0ZXJuIEJpdG1hcHNldCAqUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCSBJbmRl eEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKTsKIAorZXh0ZXJuIGNvbnN0IEJpdG1hcHNldCAq UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCQkJCQkJCSBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKTsKKwogZXh0ZXJu IEJpdG1hcHNldCAqUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChSZWxhdGlvbiByZWxh dGlvbik7CiAKIGV4dGVybiB2b2lkIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlv biBpbmRleFJlbGF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ob3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRh dGVzLm91dAppbmRleCAyNzNmZTMzMTBkYS4uMDY5NzllZDMxZDAgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0CkBAIC0xLDE0NyArMSwxMzIgQEAK IC0tCiAtLSBIT1RfVVBEQVRFUwotLS0gVGVzdCBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBk YXRlIGRlY2lzaW9ucworLS0gVGVzdCBjbGFzc2ljIEhlYXAtT25seSBUdXBsZSAoSE9UKSB1 cGRhdGUgZGVjaXNpb25zCiAtLQotLS0gVGhpcyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlm aWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3ByaWF0ZQotLS0gYW5k IGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFy ZSBtb2RpZmllZCkuCistLSBUaGlzIGZpbGUgY292ZXJzIEhPVCBkZWNpc2lvbnMgdGhhdCBh cHBseSBpZGVudGljYWxseSBvbiBhIHByZS1ob3QtaW5kZXhlZAorLS0gc2VydmVyOiBldmVy eSBVUERBVEUgaGVyZSBlaXRoZXIgbGVhdmVzIGFsbCBpbmRleGVkIGF0dHJpYnV0ZXMKKy0t IHVuY2hhbmdlZCBvciB0b3VjaGVzIG9ubHkgc3VtbWFyaXppbmctaW5kZXggKEJSSU4pIGF0 dHJpYnV0ZXMsIHNvIHRoZQorLS0gSE9UIHZzIG5vbi1IT1QgY2hvaWNlIGRvZXMgbm90IGRl cGVuZCBvbiB3aGV0aGVyIFNlbGVjdGl2ZSBJbmRleAorLS0gVXBkYXRlIChob3QtaW5kZXhl ZCkgaXMgZW5hYmxlZC4gIGhvdC1pbmRleGVkLXNwZWNpZmljIGJlaGF2aW91ciAoVVBEQVRF cyB0aGF0IG1vZGlmeQorLS0gYSBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUp IGlzIGNvdmVyZWQgaW4KKy0tIGhvdF9pbmRleGVkX3VwZGF0ZXMuc3FsLgogLS0KLS0tIFdl IHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6Ci0tLSAxLiBTdGF0aXN0aWNzIGZ1 bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQotLS0gMi4gcGFnZWlu c3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24KLS0tIDMuIEVYUExB SU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVwZGF0ZXMKKy0tIFZhbGlkYXRpb24g bWV0aG9kczoKKy0tICAgMS4gU3RhdGlzdGljcyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91 cGRhdGVkKQorLS0gICAyLiBwYWdlaW5zcGVjdCBmb3IgSE9UIGNoYWluIHN0cnVjdHVyZQor LS0gICAzLiBFWFBMQUlOIHRvIGNvbmZpcm0gdGhlIHBsYW5uZXIgc3RpbGwgcGlja3MgdGhl IGluZGV4CiAtLQogLS0gTG9hZCByZXF1aXJlZCBleHRlbnNpb25zCiBDUkVBVEUgRVhURU5T SU9OIElGIE5PVCBFWElTVFMgcGFnZWluc3BlY3Q7Ci0tLSBGdW5jdGlvbiB0byBnZXQgSE9U IHVwZGF0ZSBjb3VudAorLS0gU3VtIG9mIGNvbW1pdHRlZCBhbmQgaW4tcHJvZ3Jlc3MgKG5v bi1IT1QsIEhPVCkgdXBkYXRlIGNvdW50ZXJzLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQogUkVUVVJOUyBUQUJMRSAoCiAgICAg dXBkYXRlcyBCSUdJTlQsCiAgICAgaG90IEJJR0lOVAogKSBBUyAkJAogREVDTEFSRQotICBy ZWxfb2lkIG9pZDsKKyAgICByZWxfb2lkIG9pZDsKIEJFR0lOCi0gIHJlbF9vaWQgOj0gcmVs X25hbWU6OnJlZ2NsYXNzOjpvaWQ7Ci0KLSAgLS0gUmVhZCBib3RoIGNvbW1pdHRlZCBhbmQg dHJhbnNhY3Rpb24tbG9jYWwgc3RhdHMKLSAgLS0gSW4gYXV0b2NvbW1pdCBtb2RlIChkZWZh dWx0IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhpcyB3b3JrcyBjb3JyZWN0bHkKLSAgLS0g Tm90ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25zIChCRUdJTi9DT01NSVQpLCBjb21taXR0 ZWQgc3RhdHMgYWxyZWFkeQotICAtLSBpbmNsdWRlIGZsdXNoZWQgdXBkYXRlcywgc28gdGhp cyB3b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBsaWNpdAotICAtLSB0cmFuc2FjdGlvbiB0 ZXN0aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpIGJlZm9yZSB0aGlzIGZ1 bmN0aW9uLgotICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKSArCi0gICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7Ci0gIGhvdCA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQp LCAwKTsKLQotICBSRVRVUk4gTkVYVDsKKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdj bGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVz X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBD T0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsK KyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhUOwogRU5EOwogJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKLS0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFydCBvZiBhIEhPVCBjaGFpbiAo aGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorLS0gVHJ1ZSBpZmYgdGFyZ2V0X2N0 aWQgaXMgdGhlIFRBSUwgb2YgYSBIT1QgY2hhaW4gb24gdGhlIHNhbWUgcGFnZS4KIENSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFy Z2V0X2N0aWQgdGlkKQogUkVUVVJOUyBib29sZWFuIEFTICQkCiBERUNMQVJFCi0gIGJsb2Nr X251bSBpbnQ7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAg ICBwYWdlX2l0ZW0gcmVjb3JkOwogQkVHSU4KLSAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3Rp ZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7Ci0KLSAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQg dHVwbGUgb24gdGhlIHNhbWUgcGFnZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxl Ci0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQK LSAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2Nr X251bSkpCi0gICAgV0hFUkUgbHBfZmxhZ3MgPSAxCi0gICAgICBBTkQgdF9jdGlkIElTIE5P VCBOVUxMCi0gICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0aWQKLSAgICAgIEFORCAoJygn IHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9 IHRhcmdldF9jdGlkCi0gIExPT1AKLSAgICBSRVRVUk4gdHJ1ZTsKLSAgRU5EIExPT1A7Ci0K LSAgUkVUVVJOIGZhbHNlOworICAgIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50OworICAgIEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAgICAgU0VMRUNU IGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdl dF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgV0hFUkUgbHBfZmxh Z3MgPSAxCisgICAgICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAorICAgICAgICAgIEFO RCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAgICAgIEFORCAoJygnIHx8IGJsb2NrX251 bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlk CisgICAgTE9PUAorICAgICAgICBSRVRVUk4gdHJ1ZTsKKyAgICBFTkQgTE9PUDsKKyAgICBS RVRVUk4gZmFsc2U7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gUHJpbnQgdGhl IEhPVCBjaGFpbiBzdGFydGluZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKKy0tIEVtaXQgdGhlIEhP VCBjaGFpbiByb290ZWQgYXQgc3RhcnRfY3RpZC4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIHByaW50X2hvdF9jaGFpbihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKIFJF VFVSTlMgVEFCTEUoY2hhaW5fcG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4 dCwgdF9jdGlkIHRpZCwgY2hhaW5fZW5kIGJvb2xlYW4pIEFTCiAkJAogI3ZhcmlhYmxlX2Nv bmZsaWN0IHVzZV9jb2x1bW4KIERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgbGluZV9w dHIgaW50OwotICBjdXJyZW50X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIG5leHRfY3Rp ZCB0aWQ7Ci0gIHBvc2l0aW9uIGludCA6PSAwOwotICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0g MTAwOwotICBwYWdlX2l0ZW0gcmVjb3JkOwotICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFu IDo9IGZhbHNlOwotICBmbGFnc19uYW1lIHRleHQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAg ICBsaW5lX3B0ciBpbnQ7CisgICAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOwor ICAgIG5leHRfY3RpZCB0aWQ7CisgICAgcG9zaXRpb24gaW50IDo9IDA7CisgICAgbWF4X2l0 ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGZvdW5k X3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgICAgZmxhZ3NfbmFtZSB0ZXh0Owog QkVHSU4KLSAgYmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06Omlu dDsKLQotICAtLSBGaW5kIHRoZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRv IG91ciBzdGFydF9jdGlkKQotICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBs cF9mbGFncywgdF9jdGlkCi0gICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KHJlbF9uYW1lLCBibG9ja19udW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAg QU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKLSAgTE9PUAotICAgIGN1cnJlbnRfY3RpZCA6PSAo JygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8 ICcpJyk6OnRpZDsKLSAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOwotICAgIEVYSVQ7 Ci0gIEVORCBMT09QOwotCi0gIC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3 aXRoIHRoZSBnaXZlbiBjdGlkCi0gIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCi0g ICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIEVORCBJRjsKLQotICAtLSBGb2xs b3cgdGhlIGNoYWluIGZvcndhcmQKLSAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9u cyBMT09QCi0gICAgbGluZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFd OjppbnQ7CisgICAgYmxvY2tfbnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06 OmludDsKIAogICAgIEZPUiBwYWdlX2l0ZW0gSU4KLSAgICAgIFNFTEVDVCBscCwgbHBfZmxh Z3MsIHRfY3RpZAotICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJl bF9uYW1lLCBibG9ja19udW0pKQotICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAg ICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICBXSEVS RSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAogICAg IExPT1AKLSAgICAgIC0tIE1hcCBscF9mbGFncyB0byBuYW1lcwotICAgICAgZmxhZ3NfbmFt ZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncwotICAgICAgICBXSEVOIDAgVEhFTiAndW51 c2VkICgwKScKLSAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCi0gICAgICAgIFdI RU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCi0gICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgz KScKLSAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRl eHQgfHwgJyknCi0gICAgICBFTkQ7Ci0KLSAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKLSAg ICAgICAgcG9zaXRpb24sCi0gICAgICAgIGN1cnJlbnRfY3RpZCwKLSAgICAgICAgZmxhZ3Nf bmFtZSwKLSAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKLSAgICAgICAgKHBhZ2VfaXRlbS50 X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9v bGVhbgotICAgICAgOwotCi0gICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1Ig cGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCi0gICAgICAgIFJFVFVSTjsK LSAgICAgIEVORCBJRjsKLQotICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7 Ci0KLSAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2Nr X251bSBUSEVOCi0gICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQotICAgICAgY3Vy cmVudF9jdGlkIDo9IG5leHRfY3RpZDsKLSAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsg MTsKKyAgICAgICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8 ICcsJyB8fCBwYWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgICAgICBmb3Vu ZF9wcmVkZWNlc3NvciA6PSB0cnVlOworICAgICAgICBFWElUOwogICAgIEVORCBMT09QOwot Ci0gICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KLSAgICAgIFJFVFVSTjsKKyAgICBJRiBOT1Qg Zm91bmRfcHJlZGVjZXNzb3IgVEhFTgorICAgICAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRf Y3RpZDsKICAgICBFTkQgSUY7Ci0gIEVORCBMT09QOworCisgICAgV0hJTEUgcG9zaXRpb24g PCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0 aWQ6OnRleHQ6OnBvaW50KVsxXTo6aW50OworICAgICAgICBGT1IgcGFnZV9pdGVtIElOCisg ICAgICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgICAgIEZS T00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkK KyAgICAgICAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICAgICAgTE9PUAorICAgICAg ICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICAg ICAgICAgIFdIRU4gMCBUSEVOICd1bnVzZWQgKDApJworICAgICAgICAgICAgICAgIFdIRU4g MSBUSEVOICdub3JtYWwgKDEpJworICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRp cmVjdCAoMiknCisgICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAg ICAgICAgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0 ZXh0IHx8ICcpJworICAgICAgICAgICAgRU5EOworICAgICAgICAgICAgUkVUVVJOIFFVRVJZ IFNFTEVDVAorICAgICAgICAgICAgICAgIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgIGN1 cnJlbnRfY3RpZCwKKyAgICAgICAgICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICAgICAg ICAgIHBhZ2VfaXRlbS50X2N0aWQsCisgICAgICAgICAgICAgICAgKHBhZ2VfaXRlbS50X2N0 aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVh bjsKKworICAgICAgICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2Vf aXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgorICAgICAgICAgICAgICAgIFJFVFVS TjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIG5leHRfY3RpZCA6PSBwYWdl X2l0ZW0udF9jdGlkOworICAgICAgICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQp WzBdOjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47Cisg ICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9j dGlkOworICAgICAgICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBF TkQgTE9PUDsKKyAgICAgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgICAgICAgIFJF VFVSTjsKKyAgICAgICAgRU5EIElGOworICAgIEVORCBMT09QOwogRU5EOwogJCQgTEFOR1VB R0UgcGxwZ3NxbDsKLS0tIEJhc2ljIEhPVCB1cGRhdGUgKHVwZGF0ZSBub24taW5kZXhlZCBj b2x1bW4pCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEuIEJhc2ljIEhPVDogdXBk YXRlIG9mIGEgbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAg IGluZGV4ZWRfY29sIGludCwKQEAgLTE1MSwyMzkgKzEzNiwyMTggQEAgQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKIElOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwogSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CiBJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKLS0tIEdldCBiYXNlbGluZQor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90 IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMCB8ICAgMAogKDEgcm93KQogCi0tLSBTaG91 bGQgYmUgSE9UIHVwZGF0ZXMgKG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQor LS0gVGhyZWUgY2xhc3NpYyBIT1QgdXBkYXRlcyAobm9uLWluZGV4ZWQgY29sKS4KIFVQREFU RSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9 IDE7CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicg V0hFUkUgaWQgPSAyOwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAn dXBkYXRlZDMnIFdIRVJFIGlkID0gMzsKLS0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1cnJl ZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwg aG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMyB8ICAgMwogKDEgcm93KQogCi0tLSBE dW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZwotV0lUSCBjdXJyZW50X3R1cGxl IEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNF TEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0 aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVS QUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7Cist LSBDaGFpbi1vZi0xIG9uIGlkPTEgc3RpbGwgaGFzIGEgcHJlZGVjZXNzb3IgbGluZSBwb2lu dGVyLgorV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJl bnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9uLCBw cmludF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1 cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOwogIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBfZmxh Z3MgIHwgdF9jdGlkIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLQogIHQgICAgICAgICB8ICAgICAgICAgICAgICAwIHwgKDAs MSkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICB0ICAgICAgICAgfCAgICAgICAgICAgICAgMSB8 ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCiAoMiByb3dzKQogCi0tLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorLS0gVkFDVVVN IGNvbGxhcHNlcyB0aGUgY2hhaW4uCiBWQUNVVU0gaG90X3Rlc3Q7Ci0tLSBTaG93IHRoYXQg dGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCi1XSVRIIGN1cnJlbnRfdHVwbGUgQVMg KAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQotKQotU0VMRUNU Ci0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBo YXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAotICBwcmludF9ob3RfY2hhaW4uY3RpZCwK LSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBjdXJyZW50X3R1cGxlLAotTEFURVJBTCBw cmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKK1dJVEgg Y3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0 aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJpbnRfaG90X2No YWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwgTEFURVJB TCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKICBo YXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdzICB8IHRfY3Rp ZCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0KICBmICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgwLDQpIHwgbm9ybWFs ICgxKSB8ICgwLDQpCiAoMSByb3cpCiAKLS0tIE5vbi1IT1QgdXBkYXRlICh1cGRhdGUgaW5k ZXhlZCBjb2x1bW4pCi1VUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdI RVJFIGlkID0gMTsKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDIuIFN1bW1hcml6aW5nIGluZGV4ZXMgKEJSSU4pIGRvIG5vdCBibG9jayBI T1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHMgdGltZXN0YW1wLAorICAgIHZhbHVl IGludCwKKyAgICBicmluX2NvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJ TkcgYnJpbihicmluX2NvbCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcy MDI0LTAxLTAxJywgMTAwLCAxMDAwKTsKKy0tIEJSSU4gY29sdW1ucyBhcmUgc3VtbWFyaXpp bmc7IHVwZGF0aW5nIHRoZW0gc3RheXMgY2xhc3NpYyBIT1QgZXZlbgorLS0gdGhvdWdoIHRo ZWlyIHZhbHVlcyBjaGFuZ2UuCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEt MDInLCBicmluX2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0t Ci0gICAgICAgNCB8ICAgMworICAgICAgIDEgfCAgIDEKICgxIHJvdykKIAotLS0gVmVyaWZ5 IGluZGV4IHdhcyB1cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUpCi1TRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9j b2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKLSAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5kZXggU2NhbiB1 c2luZyBob3RfdGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAotICAgSW5kZXggQ29uZDog KGluZGV4ZWRfY29sID0gMTUwKQotKDIgcm93cykKLQotU0VMRUNUIGlkLCBpbmRleGVkX2Nv bCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOwotIGlkIHwgaW5kZXhl ZF9jb2wgCi0tLS0tKy0tLS0tLS0tLS0tLS0KLSAgMSB8ICAgICAgICAgMTUwCistLSBOb24t aW5kZXhlZCBjb2x1bW46IGFsc28gSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9 IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKICgxIHJvdykKIAotLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5k ZXgKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci0gICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotIEluZGV4IFNjYW4gdXNpbmcgaG90X3Rlc3RfaW5kZXhlZF9p ZHggb24gaG90X3Rlc3QKLSAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDEwMCkKLSgy IHJvd3MpCi0KLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOwotIGlkIAotLS0tLQotKDAgcm93cykKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAg ICAgMiB8ICAgMgorKDEgcm93KQogCi1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLS0tIEFsbC1v ci1ub25lIHByb3BlcnR5OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMg QUxMIGluZGV4IHVwZGF0ZXMKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDMuIFRPQVNUIHBhcnRpY2lwYXRlcyBpbiBIT1QgKG5vbi1pbmRl eGVkIGNvbHVtbiBwYXRocyBvbmx5KQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBjb2xf YSBpbnQsCi0gICAgY29sX2IgaW50LAotICAgIGNvbF9jIGludCwKLSAgICBub25faW5kZXhl ZCB0ZXh0CisgICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGxhcmdlX3RleHQgdGV4dCwKKyAg ICBzbWFsbF90ZXh0IHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJ TkRFWCBob3RfdGVzdF9hX2lkeCBPTiBob3RfdGVzdChjb2xfYSk7Ci1DUkVBVEUgSU5ERVgg aG90X3Rlc3RfYl9pZHggT04gaG90X3Rlc3QoY29sX2IpOwotQ1JFQVRFIElOREVYIGhvdF90 ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9jKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKLS0tIFVwZGF0ZSBvbmx5IGNvbF9h IC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2Vk Ci0tLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVzIG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5v bmUgcHJvcGVydHkpCi1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQg PSAxOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2Nv bCk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4Jywg MzAwMCksICdzbWFsbCcpOworLS0gTm9uLWluZGV4ZWQsIG5vbi1UT0FTVCBjb2x1bW46IEhP VC4KK1VQREFURSBob3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0t LS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDAKKyAgICAgICAxIHwgICAxCisoMSByb3cp CisKKy0tIFRPQVNUIGNvbHVtbiwgaW5kZXhlZF9jb2wgdW5jaGFuZ2VkOiBIT1QuCitVUERB VEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQoJ3knLCAzMDAwKTsKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBOb3cg dXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVAotVVBEQVRF IGhvdF90ZXN0IFNFVCBub25faW5kZXhlZCA9ICd1cGRhdGVkJzsKIFNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0t Ky0tLS0tCi0gICAgICAgMiB8ICAgMQorICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDQuIFBhcnRpYWwgaW5kZXggd2hlcmUgdXBkYXRlIGxlYXZl cyBpbmRleGVkIGF0dHJzIHVuY2hhbmdlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBD UkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBz dGF0dXMgdGV4dCwKICAgICBkYXRhIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK LS0tIFBhcnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKIENSRUFU RSBJTkRFWCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUg c3RhdHVzID0gJ2FjdGl2ZSc7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdh Y3RpdmUnLCAnZGF0YTEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2lu YWN0aXZlJywgJ2RhdGEyJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdk ZWxldGVkJywgJ2RhdGEzJyk7Ci0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdh Y3RpdmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQotLS0gU2hvdWxk IGJlIEhPVAorLS0gVXBkYXRlIGRhdGEgb24gYSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMg dGhlIHBhcnRpYWwgcHJlZGljYXRlOiBIT1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEg PSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDEgfCAgIDEKICgxIHJvdykKIAotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAn aW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBTaG91bGQgYmUgSE9UCist LSBVcGRhdGUgZGF0YSBvbiBhIHJvdyBvdXRzaWRlIHRoZSBwcmVkaWNhdGU6IEhPVC4KIFVQ REFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAyIHwgICAyCitTRUxFQ1QgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykKIAotLS0gVXBkYXRlIHN0YXR1cyBmcm9t ICdpbmFjdGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQotLS0g UG9zdGdyZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3Jl IHByZWRpY2F0ZSBjaGVjawotLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJv dGggdmFsdWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQotVVBEQVRFIGhvdF90ZXN0IFNFVCBz dGF0dXMgPSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOwogU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0K LSAgICAgICAzIHwgICAyCisgICAgICAgMiB8ICAgMgogKDEgcm93KQogCi0tLSBWZXJpZnkg aW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3RpdmUnIHJvd3MKIFNFTEVDVCBpZCwgc3RhdHVz IEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CiAgaWQgfCBzdGF0dXMg CiAtLS0tKy0tLS0tLS0tCiAgIDEgfCBhY3RpdmUKICgxIHJvdykKIAotLS0gT25seSBCUklO IChzdW1tYXJpemluZykgaW5kZXhlcyBvbiBub24tUEsgY29sdW1ucwogRFJPUCBUQUJMRSBo b3RfdGVzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gTXVsdGktY29sdW1u IGJ0cmVlOiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkg S0VZLAotICAgIHRzIHRpbWVzdGFtcCwKLSAgICB2YWx1ZSBpbnQsCi0gICAgYnJpbl9jb2wg aW50Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5ERVggaG90X3Rlc3Rf dHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKHRzKTsKLUNSRUFURSBJTkRFWCBob3Rf dGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4oYnJpbl9jb2wpOwot SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAyNC0wMS0wMScsIDEwMCwgMTAw MCk7Ci0tLSBVcGRhdGUgYm90aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9U IChvbmx5IHN1bW1hcml6aW5nIGluZGV4ZXMpCi1VUERBVEUgaG90X3Rlc3QgU0VUIHRzID0g JzIwMjQtMDEtMDInLCBicmluX2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0t LS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAxCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBub24t aW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgYWxzbyBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBT RVQgdmFsdWUgPSAyMDAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAg ICAgICAyIHwgICAyCi0oMSByb3cpCi0KLS0tIFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQgY29s dW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCi1EUk9QIFRBQkxFIGhvdF90ZXN0OwotQ1JF QVRFIFRBQkxFIGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgaW5k ZXhlZF9jb2wgaW50LAotICAgIGxhcmdlX3RleHQgdGV4dCwKLSAgICBzbWFsbF90ZXh0IHRl eHQKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9jIGludCwKKyAg ICBkYXRhIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJTkRFWCBo b3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOwotLS0gSW5zZXJ0IHJvdyB3 aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7Ci0tLSBVcGRhdGUgbm9u LWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBo b3RfdGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsKLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgMSB8ICAgMQorQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBo b3RfdGVzdChjb2xfYSwgY29sX2IpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgx LCAxMCwgMjAsIDMwLCAnZGF0YScpOworLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9U LgorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gZGF0YSBub3QgaW4gYW55 IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykKIAotLS0g VXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVt biB1bmNoYW5nZWQKLVVQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgn eScsIDMwMDApOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwog IHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAyCiAoMSBy b3cpCiAKLS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1V UERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOwotU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0r LS0tLS0KLSAgICAgICAzIHwgICAyCi0oMSByb3cpCi0KLS0tIFVuaXF1ZSBjb25zdHJhaW50 ICh1bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CiBEUk9QIFRBQkxF IGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA2LiBVbmlxdWUgaW5k ZXg6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1bW4gKyB1bmlxdWVuZXNzIGVuZm9yY2Vt ZW50CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAo CiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHVuaXF1ZV9jb2wgaW50IFVOSVFVRSwK QEAgLTM5MSwxNSArMzU1LDE5IEBAIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiApIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEw MCwgJ2RhdGExJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2Rh dGEyJyk7Ci0tLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAog VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0t LS0tCiAgICAgICAgMiB8ICAgMgogKDEgcm93KQogCi0tLSBWZXJpZnkgdW5pcXVlIGNvbnN0 cmFpbnQgc3RpbGwgZW5mb3JjZWQKIFNFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9N IGhvdF90ZXN0IE9SREVSIEJZIGlkOwogIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAgCiAt LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KQEAgLTQwNyw2MCArMzc1LDE0IEBAIFNFTEVD VCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOwogICAy IHwgICAgICAgIDIwMCB8IHVwZGF0ZWQKICgyIHJvd3MpCiAKLS0tIFRoaXMgc2hvdWxkIGZh aWwgKHVuaXF1ZSB2aW9sYXRpb24pCistLSBVbmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZv cmNlZCBvbiBhbnkgcGF0aC4KIFVQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEw MCBXSEVSRSBpZCA9IDI7CiBFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMg dW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5IgogREVUQUlMOiAg S2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KLS0tIE11bHRpLWNvbHVt biBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCiBEUk9QIFRBQkxFIGhvdF90 ZXN0OwotQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVks Ci0gICAgY29sX2EgaW50LAotICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAg ZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5ERVggaG90 X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7Ci1JTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Ci0tLSBVcGRhdGUgY29s X2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCi1V UERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQot ICAgICAgIDEgfCAgIDAKLSgxIHJvdykKLQotLS0gUmVzZXQKLVVQREFURSBob3RfdGVzdCBT RVQgY29sX2EgPSAxMDsKLS0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4g aW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2Ig PSAyNTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRh dGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMyB8ICAgMAotKDEgcm93KQot Ci0tLSBSZXNldAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIwOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0t LS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBjb2xf YyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBj b2xfYyA9IDM1OwotLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBI T1QKLVVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0t LS0tKy0tLS0tCi0gICAgICAgNiB8ICAgMgotKDEgcm93KQotCi0tLSBQYXJ0aXRpb25lZCB0 YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucwotRFJPUCBUQUJMRSBJRiBFWElT VFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKLU5PVElDRTogIHRhYmxlICJob3Rf dGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDcuIFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdpdGhpbiBh IHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90 X3Rlc3RfcGFydGl0aW9uZWQgKAogICAgIGlkIGludCwKICAgICBwYXJ0aXRpb25fa2V5IGlu dCwKQEAgLTQ3NSwyMyArMzk3LDMyIEBAIENSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0MiBQ QVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKIENSRUFURSBJTkRFWCBob3RfdGVz dF9wYXJ0X2lkeCBPTiBob3RfdGVzdF9wYXJ0aXRpb25lZChpbmRleGVkX2NvbCk7CiBJTlNF UlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEsIDUwLCAxMDAsICdpbml0 aWFsMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgyLCAx NTAsIDIwMCwgJ2luaXRpYWwyJyk7Ci0tLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5vbi1p bmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3RfcGFydGl0 aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLS0tIFVwZGF0ZSBp biBwYXJ0aXRpb24gMiAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQ REFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUg aWQgPSAyOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsK ICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEg cm93KQogCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOwog IHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAxIHwgICAxCiAoMSBy b3cpCiAKLS0tIFZlcmlmeSBpbmRleGVzIHdvcmsgb24gcGFydGl0aW9ucwogU0VMRUNUIGlk IEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CiAg aWQgCiAtLS0tCkBAIC01MDQsMjQyICs0MzUsMTAwIEBAIFNFTEVDVCBpZCBGUk9NIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMjAwOwogICAyCiAoMSByb3cp CiAKLS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9U IGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9 IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0X3BhcnQxJyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAg IDIgfCAgIDEKLSgxIHJvdykKLQotLS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkCi1TRUxF Q1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1 MDsKLSBpZCAKLS0tLS0KLSAgMQotKDEgcm93KQotCi0tLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBUcmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5k IEhPVAotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHdlIGNvcnJl Y3RseSBkZXRlY3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQot LS0gaGVhcF9tb2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0 IGluIHRoZSBVUERBVEUncyBTRVQgY2xhdXNlCi1DUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJf dGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIHRyaWdnZXJlZF9jb2wgaW50 LAotICAgIGRhdGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OwotLS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1u Ci1DUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCi1S RVRVUk5TIFRSSUdHRVIgQVMgJCQKLUJFR0lOCi0gICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBO RVcudHJpZ2dlcmVkX2NvbCArIDE7Ci0gICAgUkVUVVJOIE5FVzsKLUVORDsKLSQkIExBTkdV QUdFIHBscGdzcWw7Ci1DUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlmeQotICAg IEJFRk9SRSBVUERBVEUgT04gaG90X3RyaWdnZXJfdGVzdAotICAgIEZPUiBFQUNIIFJPVwot ICAgIEVYRUNVVEUgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLUlOU0VSVCBJ TlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7Ci1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLSB1cGRhdGVz IHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0t LSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5kZXhl ZCBjb2x1bW4KLS0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2RpZmll ZCBhbiBpbmRleGVkIGNvbHVtbgotVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRhdGEg PSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOwotLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1Qg dXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAwCi0oMSByb3cpCi0KLS0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKLVNF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 Ci0gdHJpZ2dlcmVkX2NvbCAKLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAxMDEKLSgx IHJvdykKLQotRFJPUCBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0IENBU0NBREU7Ci1EUk9QIEZV TkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7Ci0tLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJh Y2tpbmcKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVz IHRvIG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworRFJPUCBU QUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBub24taW5kZXhlZCBwYXRo IGNoYW5nZSBpcyBIT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxF IGhvdF9qc29uYl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgZGF0YSBq c29uYgogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotLS0gQ3JlYXRlIGV4cHJlc3Npb24g aW5kZXggb24gYSBzcGVjaWZpYyBKU09OIHBhdGgKIENSRUFURSBJTkRFWCBob3RfanNvbmJf bmFtZV9pZHggT04gaG90X2pzb25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7CiBJTlNFUlQg SU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKICAgICAoMSwgJ3sibmFtZSI6IkFsaWNlIiwi YWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCiAgICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2Ui OjI1LCJjaXR5IjoiTEEifScpOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAg ICAwIHwgICAwCistLSBUaGUganNvbmIgY29sdW1uIGlzIHRoZSBleHByZXNzaW9uIGluZGV4 J3MgaW5wdXQsIHNvIEhPVC1pbmRleGVkIGlzCistLSBkaXNxdWFsaWZpZWQgKGV4cHJlc3Np b24gaW5kZXhlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQpIGFuZCB0aGUganNvbmIKKy0tIGNo YW5nZSBibG9ja3MgY2xhc3NpYyBIT1Q6IG5vbi1IT1QgdXBkYXRlLgorVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICczMScpIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAog KDEgcm93KQogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hv dWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVz dCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9 IDE7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CiAg dXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDEgfCAgIDAKICgxIHJv dykKIAotLS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1Qg YmUgSE9UCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0 YSwgJ3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKKy0tIExpa2V3aXNlIG5v bi1IT1Q6IGV4cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdjaXR5JyBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogIHVw ZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAwCiAoMSByb3cp CiAKLS0tIFZlcmlmeSBpbmRleCB3b3JrcwotU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rl c3QgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOwotIGlkIAotLS0tLQotICAxCist LSBMaWtld2lzZSBub24tSE9UOiBleHByZXNzaW9uIGluZGV4IGRpc3F1YWxpZmllcyBIT1Qt aW5kZXhlZC4KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2Vy dChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOworU0VMRUNUIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFRlc3QganNv bmJfZGVsZXRlIG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGlu c3RydW1lbnRhdGlvbgotVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAt ICdjaXR5JyBXSEVSRSBpZCA9IDI7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF9qc29uYl90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAg ICAgIDMgfCAgIDAKICgxIHJvdykKIAotLS0gVGVzdCBqc29uYl9pbnNlcnQgb24gbm9uLWlu ZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERB VEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3Vu dHJ5fScsICciVVNBIicpIFdIRVJFIGlkID0gMjsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X2pzb25iX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgNCB8ICAgMAotKDEgcm93KQotCiBEUk9QIFRBQkxFIGhvdF9qc29uYl90 ZXN0OwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gWE1MIGV4cHJlc3Npb24gaW5k ZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNh biBiZSBIT1QgdXBkYXRlcwotQ1JFQVRFIFRBQkxFIGhvdF94bWxfdGVzdCAoCi0gICAgaWQg aW50IFBSSU1BUlkgS0VZLAotICAgIGRvYyB4bWwKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKLS0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgWFBhdGgKLUNS RUFURSBJTkRFWCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxfdGVzdCAoKHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSkpOwotSU5TRVJUIElOVE8gaG90X3htbF90ZXN0 IFZBTFVFUwotICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9h Z2U+PC9wZXJzb24+JyksCi0gICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdl PjI1PC9hZ2U+PC9wZXJzb24+Jyk7Ci1FUlJPUjogIGNvdWxkIG5vdCBpZGVudGlmeSBhIGNv bXBhcmlzb24gZnVuY3Rpb24gZm9yIHR5cGUgeG1sCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF94bWxfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0t LS0KLSAgICAgICAwIHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBub24taW5kZXhlZCBY UGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJh Y2sKLS0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBh dGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNvbXBhcmlzb24KLVVQREFURSBob3Rf eG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGgg KG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRv YyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+ JyBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxf dGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwg ICAwCi0oMSByb3cpCi0KLS0tIFZlcmlmeSBpbmRleCB3b3JrcwotU0VMRUNUIGlkIEZST00g aG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9 IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKLUVSUk9SOiAgb3BlcmF0b3IgZG9lcyBub3QgZXhp c3Q6IHhtbFtdID0gdGV4dFtdCi1MSU5FIDE6IC4uLl94bWxfdGVzdCBXSEVSRSB4cGF0aCgn L3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBBUlJBWVsnQS4uLgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLURF VEFJTDogIE5vIG9wZXJhdG9yIG9mIHRoYXQgbmFtZSBhY2NlcHRzIHRoZSBnaXZlbiBhcmd1 bWVudCB0eXBlcy4KLUhJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KLURST1AgVEFCTEUgaG90X3htbF90ZXN0OwotLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFyZWRhdHVtcyBmb3IgSlNPTkIK LS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3QgdGhhdCBHSU4gaW5kZXhlcyBj YW4gdXNlIGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9UIHdoZW4gZXh0cmFjdGVkIGtl eXMgbWF0Y2gKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gQSBjaGFuZ2UgdG8g YSBHSU4taW5kZXhlZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBUaGUgcmVhZCBz aWRlIGZpbHRlcnMgYSBzdGFsZSBsZWFmIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwLCB3aGljaAorLS0gaXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBHSU4tY292 ZXJlZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQgbGlrZSBhbnkKKy0tIG90aGVyOiBvbmx5IHRo ZSBHSU4gaW5kZXggaXMgbWFpbnRhaW5lZCwgYW5kIGEgR0lOIHNjYW4gKHdoaWNoIHJlY2hl Y2tzIG9uCistLSB0aGUgaGVhcCkgcmV0dXJucyBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRo ZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9n aW5fdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRhZ3MgdGV4dFtdLAog ICAgIHByb3BlcnRpZXMganNvbmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLS0tIEdJ TiBpbmRleCBvbiB0ZXh0IGFycmF5CiBDUkVBVEUgSU5ERVggaG90X2dpbl90YWdzX2lkeCBP TiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdzKTsKLS0tIEdJTiBpbmRleCBvbiBKU09O QiAoanNvbmJfb3BzIC0ga2V5cyBhbmQgdmFsdWVzKQogQ1JFQVRFIElOREVYIGhvdF9naW5f cHJvcHNfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHByb3BlcnRpZXMpOwogSU5T RVJUIElOVE8gaG90X2dpbl90ZXN0IFZBTFVFUwogICAgICgxLCBBUlJBWVsndGFnMScsICd0 YWcyJ10sICd7ImtleTEiOiJ2YWwxIiwia2V5MiI6InZhbDIifScpLAogICAgICgyLCBBUlJB WVsndGFnMycsICd0YWc0J10sICd7ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOwot U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLSB1cGRhdGVz IHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0t LSBVcGRhdGUgdGhhdCBjaGFuZ2VzIHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRl ciBhbWNvbXBhcmVkYXR1bXMgc2hvdWxkIGJlIEhPVAotLS0gKEdJTiBleHRyYWN0cyBzYW1l IGtleXMsIGp1c3QgZGlmZmVyZW50IG9yZGVyKQorLS0gUmVvcmRlciB0YWdzOiBhIEdJTi1j b3ZlcmVkIGNvbHVtbiBjaGFuZ2VzLCBzbyB0aGlzIGlzIEhPVC1pbmRleGVkLgogVVBEQVRF IGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnXSBXSEVSRSBp ZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwot IHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAwCi0oMSBy b3cpCi0KLS0tIFVwZGF0ZSBKU09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBhbWNvbXBh cmVkYXR1bXMgbWF5IGJlIEhPVCBvciBub24tSE9UCi0tLSBkZXBlbmRpbmcgb24gR0lOIG9w ZXJhdG9yIGNsYXNzIChqc29uYl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZhbHVlcykK LVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoidmFsMV9u ZXciLCJrZXkyIjoidmFsMiJ9JyBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0r LS0tLS0KLSAgICAgICAyIHwgICAwCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKICgxIHJvdykKIAotLS0gQWRkIG5ldyB0YWcgLSBzaG91bGQgTk9UIGJlIEhP VCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQg dGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFnNSddIFdIRVJFIGlkID0gMTsKIFNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CiAgdXBkYXRlcyB8 IGhvdCAKIC0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDAKLSgxIHJvdykKLQotLS0g VmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKLVNFTEVDVCBpZCBGUk9NIGhvdF9naW5fdGVzdCBX SEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107Ci0gaWQgCi0tLS0tCi0gIDEKLSgxIHJvdykK LQotU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3si a2V5MSI6InZhbDFfbmV3In0nOwotIGlkIAotLS0tLQotICAxCisgICAgICAgMSB8ICAgMQog KDEgcm93KQogCiBEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKLS0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gQ2xlYW51cAotLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7Ci1E Uk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwotRFJP UCBGVU5DVElPTiBJRiBFWElTVFMgaGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBG VU5DVElPTiBJRiBFWElTVFMgcHJpbnRfaG90X2NoYWluKHRleHQsIHRpZCk7Ci1EUk9QIEZV TkNUSU9OIElGIEVYSVNUUyBnZXRfaG90X2NvdW50KHRleHQpOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitEUk9QIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RS T1AgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9O IGdldF9ob3RfY291bnQodGV4dCk7CiBEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbAppbmRleCBhODg5NDAwNjE3Ny4uMzVj ZTdlMWNkY2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVz LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKQEAgLTEs MzU0ICsxLDI1OCBAQAogLS0KIC0tIEhPVF9VUERBVEVTCi0tLSBUZXN0IEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLSBUZXN0IGNsYXNzaWMgSGVhcC1Pbmx5 IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKIC0tCi0tLSBUaGlzIHRlc3Qgc3lzdGVt YXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJv cHJpYXRlCi0tLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRl eGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tIFRoaXMgZmlsZSBjb3ZlcnMgSE9UIGRl Y2lzaW9ucyB0aGF0IGFwcGx5IGlkZW50aWNhbGx5IG9uIGEgcHJlLWhvdC1pbmRleGVkCist LSBzZXJ2ZXI6IGV2ZXJ5IFVQREFURSBoZXJlIGVpdGhlciBsZWF2ZXMgYWxsIGluZGV4ZWQg YXR0cmlidXRlcworLS0gdW5jaGFuZ2VkIG9yIHRvdWNoZXMgb25seSBzdW1tYXJpemluZy1p bmRleCAoQlJJTikgYXR0cmlidXRlcywgc28gdGhlCistLSBIT1QgdnMgbm9uLUhPVCBjaG9p Y2UgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgU2VsZWN0aXZlIEluZGV4CistLSBVcGRh dGUgKGhvdC1pbmRleGVkKSBpcyBlbmFibGVkLiAgaG90LWluZGV4ZWQtc3BlY2lmaWMgYmVo YXZpb3VyIChVUERBVEVzIHRoYXQgbW9kaWZ5CistLSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZSkgaXMgY292ZXJlZCBpbgorLS0gaG90X2luZGV4ZWRfdXBkYXRlcy5z cWwuCiAtLQotLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKLS0tIDEu IFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQp Ci0tLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlv bgotLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcwor LS0gVmFsaWRhdGlvbiBtZXRob2RzOgorLS0gICAxLiBTdGF0aXN0aWNzIChwZ19zdGF0X2dl dF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAgIDIuIHBhZ2VpbnNwZWN0IGZvciBIT1QgY2hh aW4gc3RydWN0dXJlCistLSAgIDMuIEVYUExBSU4gdG8gY29uZmlybSB0aGUgcGxhbm5lciBz dGlsbCBwaWNrcyB0aGUgaW5kZXgKIC0tCiAKIC0tIExvYWQgcmVxdWlyZWQgZXh0ZW5zaW9u cwogQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OwogCi0tLSBG dW5jdGlvbiB0byBnZXQgSE9UIHVwZGF0ZSBjb3VudAorLS0gU3VtIG9mIGNvbW1pdHRlZCBh bmQgaW4tcHJvZ3Jlc3MgKG5vbi1IT1QsIEhPVCkgdXBkYXRlIGNvdW50ZXJzLgogQ1JFQVRF IE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQogUkVU VVJOUyBUQUJMRSAoCiAgICAgdXBkYXRlcyBCSUdJTlQsCiAgICAgaG90IEJJR0lOVAogKSBB UyAkJAogREVDTEFSRQotICByZWxfb2lkIG9pZDsKKyAgICByZWxfb2lkIG9pZDsKIEJFR0lO Ci0gIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7Ci0KLSAgLS0gUmVhZCBi b3RoIGNvbW1pdHRlZCBhbmQgdHJhbnNhY3Rpb24tbG9jYWwgc3RhdHMKLSAgLS0gSW4gYXV0 b2NvbW1pdCBtb2RlIChkZWZhdWx0IGZvciByZWdyZXNzaW9uIHRlc3RzKSwgdGhpcyB3b3Jr cyBjb3JyZWN0bHkKLSAgLS0gTm90ZTogSW4gZXhwbGljaXQgdHJhbnNhY3Rpb25zIChCRUdJ Ti9DT01NSVQpLCBjb21taXR0ZWQgc3RhdHMgYWxyZWFkeQotICAtLSBpbmNsdWRlIGZsdXNo ZWQgdXBkYXRlcywgc28gdGhpcyB3b3VsZCBkb3VibGUtY291bnQuIEZvciBleHBsaWNpdAot ICAtLSB0cmFuc2FjdGlvbiB0ZXN0aW5nLCBjYWxsIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpIGJlZm9yZSB0aGlzIGZ1bmN0aW9uLgotICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0 YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCi0gICAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7Ci0g IGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApICsKLSAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKLQotICBSRVRVUk4gTkVYVDsKKyAgICByZWxfb2lk IDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0Uo cGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAg ICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCks IDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0 ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhUOwog RU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBw YXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCist LSBUcnVlIGlmZiB0YXJnZXRfY3RpZCBpcyB0aGUgVEFJTCBvZiBhIEhPVCBjaGFpbiBvbiB0 aGUgc2FtZSBwYWdlLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFp bihyZWxfbmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCiBSRVRVUk5TIGJvb2xlYW4gQVMg JCQKIERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKKyAg ICBibG9ja19udW0gaW50OworICAgIHBhZ2VfaXRlbSByZWNvcmQ7CiBCRUdJTgotICBibG9j a19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBM b29rIGZvciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRz IHRvIG91ciB0YXJnZXQgdHVwbGUKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBs cCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdf cGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAg ICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKLSAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRf Y3RpZAotICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6 dGV4dCB8fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKLSAgTE9PUAotICAgIFJFVFVSTiB0 cnVlOwotICBFTkQgTE9PUDsKLQotICBSRVRVUk4gZmFsc2U7CisgICAgYmxvY2tfbnVtIDo9 ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisgICAgRk9SIHBhZ2VfaXRl bSBJTgorICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJP TSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQor ICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkIElTIE5P VCBOVUxMCisgICAgICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgICBMT09QCisgICAgICAgIFJFVFVSTiB0cnVlOwor ICAgIEVORCBMT09QOworICAgIFJFVFVSTiBmYWxzZTsKIEVORDsKICQkIExBTkdVQUdFIHBs cGdzcWw7CiAKLS0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVu IHR1cGxlCistLSBFbWl0IHRoZSBIT1QgY2hhaW4gcm9vdGVkIGF0IHN0YXJ0X2N0aWQuCiBD UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4 dCwgc3RhcnRfY3RpZCB0aWQpCiBSRVRVUk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGludCwg Y3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29sZWFu KSBBUwogJCQKICN2YXJpYWJsZV9jb25mbGljdCB1c2VfY29sdW1uCiBERUNMQVJFCi0gIGJs b2NrX251bSBpbnQ7Ci0gIGxpbmVfcHRyIGludDsKLSAgY3VycmVudF9jdGlkIHRpZCA6PSBz dGFydF9jdGlkOwotICBuZXh0X2N0aWQgdGlkOwotICBwb3NpdGlvbiBpbnQgOj0gMDsKLSAg bWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKLSAgZm91 bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKLSAgZmxhZ3NfbmFtZSB0ZXh0Owor ICAgIGJsb2NrX251bSBpbnQ7CisgICAgbGluZV9wdHIgaW50OworICAgIGN1cnJlbnRfY3Rp ZCB0aWQgOj0gc3RhcnRfY3RpZDsKKyAgICBuZXh0X2N0aWQgdGlkOworICAgIHBvc2l0aW9u IGludCA6PSAwOworICAgIG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgICAgcGFnZV9p dGVtIHJlY29yZDsKKyAgICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwor ICAgIGZsYWdzX25hbWUgdGV4dDsKIEJFR0lOCi0gIGJsb2NrX251bSA6PSAoc3RhcnRfY3Rp ZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7Ci0KLSAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3Ig KG9sZCB0dXBsZSBwb2ludGluZyB0byBvdXIgc3RhcnRfY3RpZCkKLSAgRk9SIHBhZ2VfaXRl bSBJTgotICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVS RSBscF9mbGFncyA9IDEKLSAgICAgIEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCi0gIExPT1AK LSAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8 IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScpOjp0aWQ7Ci0gICAgZm91bmRfcHJlZGVjZXNz b3IgOj0gdHJ1ZTsKLSAgICBFWElUOwotICBFTkQgTE9PUDsKLQotICAtLSBJZiBubyBwcmVk ZWNlc3NvciBmb3VuZCwgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gY3RpZAotICBJRiBOT1QgZm91 bmRfcHJlZGVjZXNzb3IgVEhFTgotICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwot ICBFTkQgSUY7Ci0KLSAgLS0gRm9sbG93IHRoZSBjaGFpbiBmb3J3YXJkCi0gIFdISUxFIHBv c2l0aW9uIDwgbWF4X2l0ZXJhdGlvbnMgTE9PUAotICAgIGxpbmVfcHRyIDo9IChjdXJyZW50 X2N0aWQ6OnRleHQ6OnBvaW50KVsxXTo6aW50OworICAgIGJsb2NrX251bSA6PSAoc3RhcnRf Y3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CiAKICAgICBGT1IgcGFnZV9pdGVtIElOCi0g ICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICAgIEZST00gaGVhcF9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICAgIFdIRVJF IGxwID0gbGluZV9wdHIKKyAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisg ICAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxv Y2tfbnVtKSkKKyAgICAgICAgV0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICAgICAgQU5EIHRf Y3RpZCA9IHN0YXJ0X2N0aWQKICAgICBMT09QCi0gICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKLSAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKLSAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCi0gICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJwotICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJwotICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCi0gICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJwotICAgICAgRU5EOwotCi0gICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCi0gICAgICAgIHBvc2l0aW9uLAotICAgICAgICBjdXJyZW50 X2N0aWQsCi0gICAgICAgIGZsYWdzX25hbWUsCi0gICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs Ci0gICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KLSAgICAgIDsKLQotICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgotICAgICAgICBSRVRVUk47Ci0gICAgICBFTkQgSUY7Ci0KLSAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOwotCi0gICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgotICAgICAgICBSRVRVUk47Ci0gICAg ICBFTkQgSUY7Ci0KLSAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7Ci0gICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgICAgIGN1cnJlbnRfY3RpZCA6PSAoJygn IHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcp Jyk6OnRpZDsKKyAgICAgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICAgICAg RVhJVDsKICAgICBFTkQgTE9PUDsKLQotICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCi0gICAg ICBSRVRVUk47CisgICAgSUYgTk9UIGZvdW5kX3ByZWRlY2Vzc29yIFRIRU4KKyAgICAgICAg Y3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7CiAgICAgRU5EIElGOwotICBFTkQgTE9PUDsK KworICAgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlvbnMgTE9PUAorICAgICAgICBs aW5lX3B0ciA6PSAoY3VycmVudF9jdGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICAg ICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywg dF9jdGlkCisgICAgICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICAgICAgICBXSEVSRSBscCA9IGxpbmVfcHRy CisgICAgICAgIExPT1AKKyAgICAgICAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0 ZW0ubHBfZmxhZ3MKKyAgICAgICAgICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScK KyAgICAgICAgICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgICAg ICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAgICAgICAgICAgIFdIRU4g MyBUSEVOICdkZWFkICgzKScKKyAgICAgICAgICAgICAgICBFTFNFICd1bmtub3duICgnIHx8 IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4dCB8fCAnKScKKyAgICAgICAgICAgIEVORDsKKyAg ICAgICAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKKyAgICAgICAgICAgICAgICBwb3NpdGlv biwKKyAgICAgICAgICAgICAgICBjdXJyZW50X2N0aWQsCisgICAgICAgICAgICAgICAgZmxh Z3NfbmFtZSwKKyAgICAgICAgICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAg ICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9 IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW47CisKKyAgICAgICAgICAgIElGIHBhZ2VfaXRlbS50 X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4K KyAgICAgICAgICAgICAgICBSRVRVUk47CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAg ICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsKKyAgICAgICAgICAgIElGIChu ZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAg ICAgICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAg Y3VycmVudF9jdGlkIDo9IG5leHRfY3RpZDsKKyAgICAgICAgICAgIHBvc2l0aW9uIDo9IHBv c2l0aW9uICsgMTsKKyAgICAgICAgRU5EIExPT1A7CisgICAgICAgIElGIHBvc2l0aW9uID0g MCBUSEVOCisgICAgICAgICAgICBSRVRVUk47CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQg TE9PUDsKIEVORDsKICQkIExBTkdVQUdFIHBscGdzcWw7CiAKLS0tIEJhc2ljIEhPVCB1cGRh dGUgKHVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4pCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gMS4gQmFzaWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LAogICAgIG5vbl9p bmRleGVkX2NvbCB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KIENSRUFURSBJ TkRFWCBob3RfdGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CiAK IElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwogSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CiBJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKIAotLS0gR2V0IGJh c2VsaW5lCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFNob3VsZCBiZSBIT1QgdXBk YXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQpCistLSBUaHJlZSBjbGFz c2ljIEhPVCB1cGRhdGVzIChub24taW5kZXhlZCBjb2wpLgogVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKIFVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOwotCi0tLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLQotLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKLVdJVEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK LSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFn cywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwotCi0tLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQotVkFDVVVNIGhv dF90ZXN0OwotCi0tLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt Ci1XSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAot ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBj dXJyZW50X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKLQotLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0t LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKLVNFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOwotU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOwotCi0tLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAotRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOwotUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0KLS0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKLURST1AgVEFCTEUgaG90X3Rlc3Q7Ci0KLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0g ICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQs Ci0gICAgY29sX2MgaW50LAotICAgIG5vbl9pbmRleGVkIHRleHQKLSkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKLQotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7Ci1DUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwot Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7Ci0KLS0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCi0tLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCi1VUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OwogCi0tLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGJl IEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZCA9ICd1cGRhdGVkJzsKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKy0tIENoYWluLW9mLTEg b24gaWQ9MSBzdGlsbCBoYXMgYSBwcmVkZWNlc3NvciBsaW5lIHBvaW50ZXIuCitXSVRIIGN1 cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAx KQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFp bi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwg cHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAKLS0t IFBhcnRpYWwgaW5kZXg6IGJvdGggb2xkIGFuZCBuZXcgb3V0c2lkZSBwcmVkaWNhdGUgKGNv bnNlcnZhdGl2ZSA9IG5vbi1IT1QpCi1EUk9QIFRBQkxFIGhvdF90ZXN0OwotCi1DUkVBVEUg VEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBzdGF0dXMg dGV4dCwKLSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQotLS0g UGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAnYWN0aXZlJwotQ1JFQVRFIElO REVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0 dXMgPSAnYWN0aXZlJzsKLQotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0 aXZlJywgJ2RhdGExJyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFj dGl2ZScsICdkYXRhMicpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOwotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdh Y3RpdmUnIHJvdyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQotLS0gU2hvdWxk IGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBp ZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0KLS0t IFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2luYWN0aXZlJyByb3cgKG91dHNpZGUg cHJlZGljYXRlKQotLS0gU2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRh ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4KK1ZBQ1VV TSBob3RfdGVzdDsKIAotLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFjdGl2ZScgdG8gJ2Rl bGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQotLS0gUG9zdGdyZVNRTCBpcyBjb25z ZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRpY2F0ZSBjaGVjawot LS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFsdWVzIGFyZSBvdXRz aWRlIHByZWRpY2F0ZQotVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMgPSAnZGVsZXRlZCcg V0hFUkUgaWQgPSAyOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRf dHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9uLCBwcmlu dF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxl LCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0 aWQpOwogCi0tLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3RpdmUnIHJvd3MK LVNFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVzID0gJ2FjdGl2 ZSc7Ci0KLS0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9uLVBLIGNv bHVtbnMKIERST1AgVEFCTEUgaG90X3Rlc3Q7CiAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMi4gU3VtbWFyaXppbmcgaW5kZXhlcyAoQlJJTikgZG8gbm90IGJsb2NrIEhPVAor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAg IGlkIGludCBQUklNQVJZIEtFWSwKICAgICB0cyB0aW1lc3RhbXAsCiAgICAgdmFsdWUgaW50 LAogICAgIGJyaW5fY29sIGludAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCiBDUkVB VEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKHRzKTsK IENSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5H IGJyaW4oYnJpbl9jb2wpOwogCiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcy MDI0LTAxLTAxJywgMTAwLCAxMDAwKTsKIAotLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1bW5z IC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQorLS0g QlJJTiBjb2x1bW5zIGFyZSBzdW1tYXJpemluZzsgdXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFz c2ljIEhPVCBldmVuCistLSB0aG91Z2ggdGhlaXIgdmFsdWVzIGNoYW5nZS4KIFVQREFURSBo b3RfdGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gLSBzaG91bGQgYWxzbyBiZSBIT1QKKy0tIE5vbi1pbmRleGVkIGNvbHVtbjog YWxzbyBIT1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVE9BU1QgYW5kIEhPVDogVE9BU1Rl ZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKIERST1AgVEFCTEUgaG90X3Rlc3Q7 CiAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gVE9BU1QgcGFydGljaXBhdGVz IGluIEhPVCAobm9uLWluZGV4ZWQgY29sdW1uIHBhdGhzIG9ubHkpCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1B UlkgS0VZLAogICAgIGluZGV4ZWRfY29sIGludCwKICAgICBsYXJnZV90ZXh0IHRleHQsCiAg ICAgc21hbGxfdGV4dCB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KIENSRUFU RSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOwogCi0tLSBJ bnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQogSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAnc21hbGwnKTsKIAot LS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUg SE9UCistLSBOb24taW5kZXhlZCwgbm9uLVRPQVNUIGNvbHVtbjogSE9ULgogVVBEQVRFIGhv dF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dCcpOwogCi0tLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlmIGlu ZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAorLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1 bmNoYW5nZWQ6IEhPVC4KIFVQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVh dCgneScsIDMwMDApOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBVcGRhdGUgaW5k ZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBp bmRleGVkX2NvbCA9IDIwMDsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKLQotLS0gVW5pcXVlIGNvbnN0cmFpbnQgKHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBs aWtlIHJlZ3VsYXIgaW5kZXgKIERST1AgVEFCTEUgaG90X3Rlc3Q7CiAKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gNC4gUGFydGlhbCBpbmRleCB3aGVyZSB1cGRhdGUgbGVhdmVz IGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENS RUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIHVu aXF1ZV9jb2wgaW50IFVOSVFVRSwKKyAgICBzdGF0dXMgdGV4dCwKICAgICBkYXRhIHRleHQK ICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hY3Rp dmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CiAK LUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKLUlOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKIAotLS0gVXBkYXRl IGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBT RVQgZGF0YSA9ICd1cGRhdGVkJzsKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IHdob3NlIHN0 YXR1cyBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRpY2F0ZTogSE9ULgorVVBEQVRFIGhvdF90 ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7CiAKLS0tIFZlcmlmeSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNl ZAotU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkg aWQ7CistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyBvdXRzaWRlIHRoZSBwcmVkaWNhdGU6IEhP VC4KK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAy OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBUaGlzIHNob3VsZCBmYWlsICh1bmlx dWUgdmlvbGF0aW9uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCB1bmlxdWVfY29sID0gMTAwIFdI RVJFIGlkID0gMjsKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3Rh dHVzID0gJ2FjdGl2ZSc7CiAKLS0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBj aGFuZ2UgPSBub24tSE9UCiBEUk9QIFRBQkxFIGhvdF90ZXN0OwogCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDUuIE11bHRpLWNvbHVtbiBidHJlZTogdXBkYXRlIG9mIG5vbi1p bmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUg aG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBjb2xfYSBpbnQsCkBA IC0zNTYsMzYgKzI2MCw0NSBAQCBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGNvbF9j IGludCwKICAgICBkYXRhIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQogQ1JF QVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChjb2xfYSwgY29sX2IpOwog CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7 CiAKLS0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hv dWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKKy0tIGNv bF9jIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2Mg PSAzNTsKKy0tIGRhdGEgbm90IGluIGFueSBpbmRleDogSE9ULgorVVBEQVRFIGhvdF90ZXN0 IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBS ZXNldAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOwotCi0tLSBVcGRhdGUgY29s X2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCi1V UERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjU7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CitEUk9QIFRBQkxFIGhvdF90ZXN0OwogCi0tLSBSZXNldAot VVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIwOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA2LiBV bmlxdWUgaW5kZXg6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1bW4gKyB1bmlxdWVuZXNz IGVuZm9yY2VtZW50CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHVuaXF1ZV9jb2wgaW50 IFVOSVFVRSwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKIAot LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsIDEwMCwgJ2RhdGExJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIw MCwgJ2RhdGEyJyk7CiAKLS0tIFVwZGF0ZSBkYXRhIChub3QgaW5kZXhlZCkgLSBzaG91bGQg YmUgSE9UCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdp dGhpbiBwYXJ0aXRpb25zCi1EUk9QIFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRp b25lZCBDQVNDQURFOworU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rl c3QgT1JERVIgQlkgaWQ7CiAKKy0tIFVuaXF1ZSBjb25zdHJhaW50IHN0aWxsIGVuZm9yY2Vk IG9uIGFueSBwYXRoLgorVVBEQVRFIGhvdF90ZXN0IFNFVCB1bmlxdWVfY29sID0gMTAwIFdI RVJFIGlkID0gMjsKKworRFJPUCBUQUJMRSBob3RfdGVzdDsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSA3LiBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3aXRoaW4gYSBwYXJ0 aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0 X3BhcnRpdGlvbmVkICgKICAgICBpZCBpbnQsCiAgICAgcGFydGl0aW9uX2tleSBpbnQsCkBA IC00MDQsMjAyICszMTcsODIgQEAgQ1JFQVRFIElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9O IGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4ZWRfY29sKTsKIElOU0VSVCBJTlRPIGhvdF90 ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2luaXRpYWwxJyk7CiBJTlNF UlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5p dGlhbDInKTsKIAotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1 bW4pIC0gc2hvdWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBk YXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7Ci0KLS0tIFVwZGF0ZSBpbiBwYXJ0aXRp b24gMiAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3Rf dGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwog CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3Bh cnQyJyk7CiAKLS0tIFZlcmlmeSBpbmRleGVzIHdvcmsgb24gcGFydGl0aW9ucwogU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7 CiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2Nv bCA9IDIwMDsKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlvbiAtIHNo b3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGluZGV4 ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3RfcGFydDEnKTsKLQotLS0gVmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkCi1T RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDE1MDsKLQotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKLS0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKLS0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQotCi1DUkVBVEUgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCAoCi0gICAgaWQgaW50IFBS SU1BUlkgS0VZLAotICAgIHRyaWdnZXJlZF9jb2wgaW50LAotICAgIGRhdGEgdGV4dAotKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOwotCi1DUkVBVEUgSU5ERVggaG90X3RyaWdnZXJfaWR4 IE9OIGhvdF90cmlnZ2VyX3Rlc3QodHJpZ2dlcmVkX2NvbCk7Ci0KLS0tIENyZWF0ZSBhIHRy aWdnZXIgdGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgotQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQotUkVUVVJOUyBUUklHR0VSIEFT ICQkCi1CRUdJTgotICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wg KyAxOwotICAgIFJFVFVSTiBORVc7Ci1FTkQ7Ci0kJCBMQU5HVUFHRSBwbHBnc3FsOwotCi1D UkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX21vZGlmeQotICAgIEJFRk9SRSBVUERBVEUg T04gaG90X3RyaWdnZXJfdGVzdAotICAgIEZPUiBFQUNIIFJPVwotICAgIEVYRUNVVEUgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLQotSU5TRVJUIElOVE8gaG90X3RyaWdn ZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKLQotU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBvbmx5IGRh dGEgY29sdW1uLCBidXQgdHJpZ2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbgotLS0gU2hv dWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29s dW1uCi1VUERBVEUgaG90X3RyaWdnZXJfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVS RSBpZCA9IDE7Ci0KLS0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhl ZCBjb2x1bW4gd2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCi1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLQotLS0gVmVyaWZ5IHRoZSB0cmlnZ2Vy ZWQgY29sdW1uIHdhcyBhY3R1YWxseSBtb2RpZmllZAotU0VMRUNUIHRyaWdnZXJlZF9jb2wg RlJPTSBob3RfdHJpZ2dlcl90ZXN0IFdIRVJFIGlkID0gMTsKLQotRFJPUCBUQUJMRSBob3Rf dHJpZ2dlcl90ZXN0IENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRf Y29sKCk7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTT05CIGV4cHJlc3Np b24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgSlNPTkIg cGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlv bmVkIENBU0NBREU7CiAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOC4gSlNPTkIg ZXhwcmVzc2lvbiBpbmRleDogbm9uLWluZGV4ZWQgcGF0aCBjaGFuZ2UgaXMgSE9UCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAoCiAg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIGRhdGEganNvbmIKICkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKLQotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVjaWZp YyBKU09OIHBhdGgKIENSRUFURSBJTkRFWCBob3RfanNvbmJfbmFtZV9pZHggT04gaG90X2pz b25iX3Rlc3QgKChkYXRhLT4+J25hbWUnKSk7CiAKIElOU0VSVCBJTlRPIGhvdF9qc29uYl90 ZXN0IFZBTFVFUwogICAgICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5Ijoi TllDIn0nKSwKICAgICAoMiwgJ3sibmFtZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9 Jyk7CiAKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsK LQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpTT04gcGF0aCAoYWdlKSAtIHNob3VsZCBiZSBI T1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCistLSBUaGUganNvbmIgY29sdW1uIGlzIHRoZSBl eHByZXNzaW9uIGluZGV4J3MgaW5wdXQsIHNvIEhPVC1pbmRleGVkIGlzCistLSBkaXNxdWFs aWZpZWQgKGV4cHJlc3Npb24gaW5kZXhlcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQpIGFuZCB0 aGUganNvbmIKKy0tIGNoYW5nZSBibG9ja3MgY2xhc3NpYyBIT1Q6IG5vbi1IT1QgdXBkYXRl LgogVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7 YWdlfScsICczMScpIFdIRVJFIGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfanNvbmJfdGVzdCcpOwotCi0tLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGgg KG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQg PSAxOwotCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CiAKLS0tIFZlcmlmeSBpbmRl eCB3b3JrcwotU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hFUkUgZGF0YS0+Pidu YW1lJyA9ICdBbGljZTInOwotCi0tLSBUZXN0IGpzb25iX2RlbGV0ZSBvbiBub24taW5kZXhl ZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIExpa2V3 aXNlIG5vbi1IT1Q6IGV4cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVk LgogVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0gZGF0YSAtICdjaXR5JyBXSEVS RSBpZCA9IDI7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKIAotLS0gVGVzdCBq c29uYl9pbnNlcnQgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIg aW5zdHJ1bWVudGF0aW9uCistLSBMaWtld2lzZSBub24tSE9UOiBleHByZXNzaW9uIGluZGV4 IGRpc3F1YWxpZmllcyBIT1QtaW5kZXhlZC4KIFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX2luc2VydChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUg aWQgPSAyOwotCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CiAKIERST1AgVEFCTEUg aG90X2pzb25iX3Rlc3Q7CiAKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFhNTCBl eHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVk IFhNTCBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKLQotQ1JFQVRFIFRBQkxFIGhvdF94bWxf dGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIGRvYyB4bWwKLSkgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKLQotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBz cGVjaWZpYyBYUGF0aAotQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3ht bF90ZXN0ICgoeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7Ci0KLUlOU0VS VCBJTlRPIGhvdF94bWxfdGVzdCBWQUxVRVMKLSAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxp Y2U8L25hbWU+PGFnZT4zMDwvYWdlPjwvcGVyc29uPicpLAotICAgICgyLCAnPHBlcnNvbj48 bmFtZT5Cb2I8L25hbWU+PGFnZT4yNTwvYWdlPjwvcGVyc29uPicpOwotCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF94bWxfdGVzdCcpOwotCi0tLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgWFBhdGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29u IGZhbGxiYWNrCi0tLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5k ZXhlZCBwYXRoIHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCi1VUERB VEUgaG90X3htbF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48 YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBpbmRleGVkIFhQ YXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3htbF90ZXN0IFNF VCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVy c29uPicgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF94bWxfdGVzdCcpOwotCi0tLSBWZXJpZnkgaW5kZXggd29ya3MKLVNFTEVDVCBpZCBGUk9N IGhvdF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykg PSBBUlJBWVsnQWxpY2UyJzo6dGV4dF07Ci0KLURST1AgVEFCTEUgaG90X3htbF90ZXN0Owot Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21w YXJlZGF0dW1zIGZvciBKU09OQgotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVz dCB0aGF0IEdJTiBpbmRleGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBI T1Qgd2hlbiBleHRyYWN0ZWQga2V5cyBtYXRjaAotCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDkuIEEgY2hhbmdlIHRvIGEgR0lOLWluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRl eGVkCistLQorLS0gVGhlIHJlYWQgc2lkZSBmaWx0ZXJzIGEgc3RhbGUgbGVhZiB2aWEgdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2gKKy0tIGlzIGFjY2Vzcy1tZXRob2Qg YWdub3N0aWMsIHNvIGEgR0lOLWNvdmVyZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkIGxpa2Ug YW55CistLSBvdGhlcjogb25seSB0aGUgR0lOIGluZGV4IGlzIG1haW50YWluZWQsIGFuZCBh IEdJTiBzY2FuICh3aGljaCByZWNoZWNrcyBvbgorLS0gdGhlIGhlYXApIHJldHVybnMgY29y cmVjdCByZXN1bHRzIGFjcm9zcyB0aGUgY2hhaW4uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIENSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKICAgICB0YWdzIHRleHRbXSwKICAgICBwcm9wZXJ0aWVzIGpzb25iCiApIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7Ci0KLS0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CiBDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKLQotLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCiBDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CiAKIElOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKICAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKICAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKIAotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKLQotLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKLS0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK Ky0tIFJlb3JkZXIgdGFnczogYSBHSU4tY292ZXJlZCBjb2x1bW4gY2hhbmdlcywgc28gdGhp cyBpcyBIT1QtaW5kZXhlZC4KIFVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJB WVsndGFnMicsICd0YWcxJ10gV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotCi0tLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5v dCBrZXkpIC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAot LS0gZGVwZW5kaW5nIG9uIEdJTiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMg Ym90aCBrZXlzIGFuZCB2YWx1ZXMpCi1VUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0 aWVzID0gJ3sia2V5MSI6InZhbDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAx OwotCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwogCi0tLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCi1VUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOwotCi0tLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yawotU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKLVNFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKLQogRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CiAKLS0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gQ2xlYW51cAotLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7Ci1EUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwotRFJPUCBG VU5DVElPTiBJRiBFWElTVFMgaGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBGVU5D VElPTiBJRiBFWElTVFMgcHJpbnRfaG90X2NoYWluKHRleHQsIHRpZCk7Ci1EUk9QIEZVTkNU SU9OIElGIEVYSVNUUyBnZXRfaG90X2NvdW50KHRleHQpOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitEUk9QIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RST1Ag RlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIGdl dF9ob3RfY291bnQodGV4dCk7CiBEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZmZiNDEzYWI2MTIuLjBiYzFkNTE0MzQxIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTI3Nyw2ICsxMjc3LDcgQEAgSGVh cFR1cGxlRnJlZXplCiBIZWFwVHVwbGVIZWFkZXIKIEhlYXBUdXBsZUhlYWRlckRhdGEKIEhl YXBUdXBsZVRhYmxlU2xvdAorSGVhcFVwZGF0ZUluZGV4TW9kZQogSGlzdENvbnRyb2wKIEhv c3RDYWNoZUVudHJ5CiBIb3N0c0ZpbGVMb2FkUmVzdWx0CkBAIC0zMTM4LDcgKzMxMzksNiBA QCBUU1ZlY3RvclN0YXQKIFRTdGF0ZQogVFN0YXR1cwogVFN0b3JlU3RhdGUKLVRVX1VwZGF0 ZUluZGV4ZXMKIFRYTkVudHJ5RmlsZQogVFlQQ0FURUdPUlkKIFRfQWN0aW9uCi0tIAoyLjUw LjEKCg== --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0005-Fix-a-BitmapAnd-BitmapOr-false-negative-on-HOT-i.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0005-Fix-a-BitmapAnd-BitmapOr-false-negative-on-HOT-i.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwZGExYjk0YjEzZWRmMmQwOGEwNmY3M2UwNDk3YmM3M2QzY2RjMTY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog RnJpLCAxMCBKdWwgMjAyNiAxNTozMzozNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA1 LzEwXSBGaXggYSBCaXRtYXBBbmQvQml0bWFwT3IgZmFsc2UgbmVnYXRpdmUgb24KIEhPVC1p bmRleGVkIGZyZXNoIGVudHJpZXMKCkEgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlJ3MgZnJl c2ggZW50cnkgaW4gYSBjaGFuZ2VkIGluZGV4IHBvaW50cyBhdAp0aGUgbmV3IGhlYXAtb25s eSB0dXBsZSwgbm90IGF0IHRoZSBjaGFpbiByb290IHRoZSB3YXkgZXZlcnkgb3RoZXIKaW5k ZXggZW50cnkgZm9yIHRoZSBzYW1lIGxvZ2ljYWwgcm93IGRvZXMgLS0gdGhhdCBwb3NpdGlv bmFsCmRpc3RpbmN0aW9uIGlzIHdoYXQgbGV0cyB0aGUgcmVhZCBzaWRlIGp1ZGdlIHN0YWxl bmVzcyBmcm9tIHRoZQpjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgd2l0aG91dCBhIHZhbHVl IHJlY2hlY2suCgpCaXRtYXBBbmQvQml0bWFwT3IgY29tYmluZSB0d28gaW5kZXhlcycgVElE IHNldHMgYXQgcmF3IGJsb2NrK29mZnNldApncmFudWxhcml0eSBpbiB0aWRiaXRtYXAuYywg YmVmb3JlIGVpdGhlciBzaWRlIGV2ZXIgdG91Y2hlcyB0aGUgaGVhcC4KQW4gdW5yZWxhdGVk LCB1bmNoYW5nZWQgaW5kZXgncyByb290LXBvaW50aW5nIGVudHJ5IGZvciB0aGUgc2FtZSBy b3cKd2lsbCBub3QgYWdyZWUgd2l0aCB0aGUgY2hhbmdlZCBpbmRleCdzIGZyZXNoIGVudHJ5 J3Mgb2Zmc2V0LCBzbyBhbgpleGFjdC1tb2RlIGludGVyc2VjdGlvbiBjYW4gc2lsZW50bHkg ZHJvcCBhIHJvdyB0aGF0IG1hdGNoZXMgYm90aApwcmVkaWNhdGVzLiAgUmVwb3J0ZWQgYnkg QWxleGFuZGVyIEtvcm90a292LgoKRml4ZWQgYnkgcmVzZXJ2aW5nIG9uZSBvdGhlcndpc2Ut dW51c2VkIGJpdCAoYml0IDE0KSBpbiBhIHN0b3JlZCBUSUQncwpvZmZzZXQgZmllbGQsIEl0 ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcuICBNYXhPZmZzZXROdW1iZXIgbmV2ZXIKbmVl ZHMgbW9yZSB0aGFuIDE0IGJpdHMgZXZlbiBhdCB0aGUgbGFyZ2VzdCBjb25maWd1cmFibGUg QkxDS1NaLCBzbwp0aGUgYml0IGlzIGZyZWUgZm9yIGFueSByZWFsIG9mZnNldDsgaXQgaXMg c2V0IG9ubHkgb24gdGhlIGxvY2FsIFRJRApjb3B5IGhhbmRlZCB0byBhIEhPVC1pbmRleGVk IGZyZXNoIGVudHJ5J3MgaW5kZXhfaW5zZXJ0KCkgY2FsbCBpbgpFeGVjSW5zZXJ0SW5kZXhU dXBsZXMsIG5ldmVyIG9uIHRoZSBzbG90J3Mgb3duIHR0c190aWQuCgpJdGVtUG9pbnRlckdl dE9mZnNldE51bWJlciBhbmQgSXRlbVBvaW50ZXJDb21wYXJlIHN0cmlwIHRoZSBiaXQgYnkK ZGVmYXVsdCAodmlhIHRoZSBzZW50aW5lbC1zYWZlIEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVy U3RyaXAsIHdoaWNoCmxlYXZlcyBTcGVjVG9rZW5PZmZzZXROdW1iZXIvTW92ZWRQYXJ0aXRp b25zT2Zmc2V0TnVtYmVyIC0tIGJvdGggb2YKd2hpY2ggYWxyZWFkeSBoYXZlIHRoaXMgYml0 IHNldCBhcyBwYXJ0IG9mIHRoZWlyIG93biBlbmNvZGluZyAtLQp1bnRvdWNoZWQpIHNvIGV2 ZXJ5IG9yZGluYXJ5IGNvbnN1bWVyIGtlZXBzIHNlZWluZyB0aGUgcmVhbCBvZmZzZXQ7Cm9u bHkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJOb0NoZWNrIGV4cG9zZXMgdGhlIHJhdyB2 YWx1ZS4KClRoZSBjb25zdW1wdGlvbiBpcyBjZW50cmFsaXplZCBpbiB0Ym1fYWRkX3R1cGxl cygpLCB0aGUgc2luZ2xlIGNob2tlCnBvaW50IGV2ZXJ5IGFtZ2V0Yml0bWFwIGZ1bm5lbHMg ZXhhY3QgaGVhcCBUSURzIHRocm91Z2g6IGl0IHRlc3RzIHRoZQpyYXcgZmxhZyAoYmVmb3Jl IHRoZSBvZmZzZXQgaXMgc3RyaXBwZWQpIGFuZCwgd2hlbiBzZXQsIGFkZHMgdGhlIHdob2xl CnBhZ2UgYXMgbG9zc3kgKHRibV9hZGRfcGFnZSkgaW5zdGVhZCBvZiB0aGUgc2luZ2xlIGV4 YWN0IG9mZnNldC4gIFBlcgp0Ym1faW50ZXJzZWN0X3BhZ2UncyBvd24gY2FzZSBhbmFseXNp cyBhIGxvc3N5IHBhZ2Ugc3Vydml2ZXMgYW55IEFORC9PUgphZ2FpbnN0IGFuIGV4YWN0LW1v ZGUgcGFnZSBhbmQgZm9yY2VzIGEgcmVjaGVjaywgc28gQml0bWFwSGVhcFNjYW4KcmVzb2x2 ZXMgdGhlIGNoYWluIGFuZCB0aGUgZXhpc3RpbmcgaGVhcC1zaWRlIGNyb3NzZWQtYXR0cmli dXRlCnN0YWxlbmVzcyB0ZXN0IG1ha2VzIHRoZSBmaW5hbCwgY29ycmVjdCBjYWxsLiAgQmVj YXVzZSB0aGlzIGxpdmVzIGluCnRibV9hZGRfdHVwbGVzIGFuZCBub3QgaW4gZWFjaCBhY2Nl c3MgbWV0aG9kLCBubyBpbmRleCBBTSBuZWVkcyB0byBrbm93CmFib3V0IEhPVC1pbmRleGVk IGNoYWluczogYnRyZWUsIGhhc2gsIEdJTiwgR2lTVCwgU1AtR2lTVCwgY29udHJpYi9ibG9v bSwKYW5kIG91dC1vZi10cmVlIEFNcyBhcmUgYWxsIGNvcnJlY3Qgd2l0aCBubyBBTS1zcGVj aWZpYyBjb2RlLCBhbmQgYSBUSUQKdGhhdCBuZXZlciBjYXJyaWVzIHRoZSBmbGFnIHRha2Vz IHRoZSBpZGVudGljYWwgcGF0aCBpdCBhbHdheXMgZGlkLgpHSU4ncyBvd24gcGFnZS1sZXZl bCBsb3NzeSBzZW50aW5lbCAoSXRlbVBvaW50ZXJJc0xvc3N5UGFnZSwgYW4KdW5yZWxhdGVk IDB4ZmZmZiBtYXJrZXIgdXNlZCBiZWZvcmUgYSByZWFsIGhlYXAgVElEIGlzIHByb2R1Y2Vk KSBpcwp1bnRvdWNoZWQ7IHRoZSBuZXcgY2hlY2sgb25seSBhcHBsaWVzIHRvIGdlbnVpbmUg aGVhcC1pdGVtIFRJRHMuCgpUaGUgY29zdCBpcyBwcmVjaXNpb24sIG5vdCBjb3JyZWN0bmVz czogYW55IGhlYXAgcGFnZSBjYXJyeWluZyBhIGxpdmUKZnJlc2ggZW50cnkgY29udHJpYnV0 ZXMgbG9zc3kgKGEgd2hvbGUtcGFnZSByZWNoZWNrIGZvciBhbGwgaXRzIHR1cGxlcwpvbiB0 aGF0IGJpdG1hcCBzY2FuLCBub3QganVzdCB0aGUgU0lVIHJvdykgdW50aWwgdGhlIGNoYWlu IGNvbGxhcHNlcy4KSXQgaXMgYm91bmRlZCBhbmQgc2VsZi1oZWFsaW5nIC0tIHBydW5lL1ZB Q1VVTSBjb2xsYXBzZSByZXN0b3JlcwpleGFjdC1tb2RlIGVudHJpZXMuCgphbWNoZWNrJ3Mg aGVhcGFsbGluZGV4ZWQgdmVyaWZpY2F0aW9uIGZpbmdlcnByaW50cyBsZWFmIHR1cGxlcycg c3RvcmVkClRJRHMgYW5kIGNvbXBhcmVzIHRoZW0gYWdhaW5zdCB0aGUgcGxhaW4gaGVhcCBU SURzIGl0IHJlLWRlcml2ZXMgZnJvbQp0aGUgaGVhcCBzY2FuOyB2ZXJpZnlfbmJ0cmVlLmMg bm93IHN0cmlwcyB0aGUgbWFya2VyIHdoaWxlIGZpbmdlcnByaW50aW5nCnNvIGEgZnJlc2gg ZW50cnkgZG9lcyBub3QgcmFpc2UgYSBzcHVyaW91cyAibGFja3MgbWF0Y2hpbmcgaW5kZXgg dHVwbGUiLgpwYWdlaW5zcGVjdCAxLjE0J3MgYnRfcGFnZV9pdGVtcyByZXBvcnRzIHRoZSBy ZWFsIG9mZnNldCBpbiBpdHMgY3RpZCBhbmQKaHRpZCBjb2x1bW5zIChlYXJsaWVyIHZlcnNp b25zIHN1cmZhY2VkIHRoZSBtYXJrZXIgYXMgYW4gaW5mbGF0ZWQgb2Zmc2V0KQphbmQgYWRk cyBhIGhvdF9pbmRleGVkIGJvb2xlYW4gY29sdW1uIGV4cG9zaW5nIHRoZSBtYXJrZXIgZXhw bGljaXRseS4KCkNhdWdodCBpdHMgb3duIHJlZ3Jlc3Npb24gZHVyaW5nIGRldmVsb3BtZW50 OiB0aGUgZmlyc3QgY3V0IG1hc2tlZApiaXQgMTQgdW5jb25kaXRpb25hbGx5LCB3aGljaCBj b3JydXB0ZWQgU3BlY1Rva2VuT2Zmc2V0TnVtYmVyIGFuZApNb3ZlZFBhcnRpdGlvbnNPZmZz ZXROdW1iZXIgKGJvdGggYWxyZWFkeSBoYXZlIGJpdCAxNCBzZXQpLCBzaWxlbnRseQpicmVh a2luZyBjcm9zcy1wYXJ0aXRpb24tVVBEQVRFIGNvbmZsaWN0IGRldGVjdGlvbiAtLSBjYXVn aHQgYnkgdGhlCmlzb2xhdGlvbiBzdWl0ZSAoZXZhbC1wbGFuLXF1YWwsIG1lcmdlLXVwZGF0 ZSwgcGFydGl0aW9uLWtleS11cGRhdGUpLgpGaXhlZCBieSBnYXRpbmcgdGhlIHN0cmlwIG9u IHRoZSB2YWx1ZSBiZWluZyBiZWxvdyB0aGUgc2VudGluZWwgcmFuZ2UuCgpSZWdyZXNzaW9u IGNvdmVyYWdlIChCaXRtYXBBbmQvQml0bWFwT3IgYWNyb3NzIGEgY2hhbmdlZCt1bmNoYW5n ZWQKaW5kZXggZm9yIGV2ZXJ5IGFjY2VzcyBtZXRob2QgU0lVIGV4ZXJjaXNlcywgcGx1cyBh IGJsb29tIGNhc2UgaW4KY29udHJpYi9ibG9vbSBhbmQgaGVhcGFsbGluZGV4ZWQgb24gYSBj aGFuZ2VkIGluZGV4KSBpcyBhZGRlZAphbG9uZ3NpZGUgdGhlIHJlc3Qgb2YgdGhlIEhPVC1p bmRleGVkIHRlc3Qgc3VpdGUuCi0tLQogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUu YyAgICAgICAgICAgICAgIHwgIDI3ICsrKysKIGNvbnRyaWIvYmxvb20vZXhwZWN0ZWQvYmxv b20ub3V0ICAgICAgICAgICAgICB8ICAzMiArKysrKwogY29udHJpYi9ibG9vbS9zcWwvYmxv b20uc3FsICAgICAgICAgICAgICAgICAgIHwgIDI4ICsrKysKIGNvbnRyaWIvcGFnZWluc3Bl Y3QvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8ICAgMiArLQogY29udHJpYi9wYWdlaW5z cGVjdC9idHJlZWZ1bmNzLmMgICAgICAgICAgICAgIHwgIDQ2ICsrKysrKy0KIGNvbnRyaWIv cGFnZWluc3BlY3QvZXhwZWN0ZWQvYnRyZWUub3V0ICAgICAgICB8ICA0MiArKystLS0KIGNv bnRyaWIvcGFnZWluc3BlY3QvbWVzb24uYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiAu Li4vcGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTMtLTEuMTQuc3FsICAgfCAgNDkgKysr KysrKwogY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC5jb250cm9sICAgICAgIHwg ICAyICstCiBkb2Mvc3JjL3NnbWwvcGFnZWluc3BlY3Quc2dtbCAgICAgICAgICAgICAgICAg fCAgMTIgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAg ICB8IDEzMCArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jICAgICAgICAgICB8ICA1MiArKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy90 aWRiaXRtYXAuYyAgICAgICAgICAgICAgICAgfCAgMzcgKysrKy0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvcGFnZS9pdGVtcHRyLmMgICAgICAgICAgICB8ICAxOCArKy0KIHNyYy9pbmNsdWRl L3N0b3JhZ2UvaXRlbXB0ci5oICAgICAgICAgICAgICAgICB8IDEwMSArKysrKysrKysrKysr LQogMTUgZmlsZXMgY2hhbmdlZCwgNTM1IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3Qt LTEuMTMtLTEuMTQuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggM2VmMmQ2 NmY4MjYuLmJhYzFlNWZlYmQ5IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5 X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTE0 ODksNiArMTQ4OSwyOSBAQCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUg KnN0YXRlKQogCQlpZiAoc3RhdGUtPmhlYXBhbGxpbmRleGVkICYmIFBfSVNMRUFGKHRvcGFx dWUpICYmICFJdGVtSWRJc0RlYWQoaXRlbWlkKSkKIAkJewogCQkJSW5kZXhUdXBsZQlub3Jt OworCQkJSXRlbVBvaW50ZXJEYXRhIHNhdmVkX3RpZDsKKwkJCWJvb2wJCXNpdV9zdHJpcHBl ZCA9IGZhbHNlOworCisJCQkvKgorCQkJICogQSBIT1QtaW5kZXhlZCAoU0lVKSBmcmVzaCBl bnRyeSBzdG9yZXMgaXRzIGhlYXAgVElEIHdpdGggdGhlCisJCQkgKiBJdGVtUG9pbnRlclNJ VU1heWJlU3RhbGVGbGFnIG1hcmtlciBiaXQgc2V0IGluIHRoZSBvZmZzZXQgZmllbGQKKwkJ CSAqIChzZWUgc3RvcmFnZS9pdGVtcHRyLmgpLiAgVGhlIG1hcmtlciBpcyBhIGJpdG1hcC1z Y2FuIGhpbnQsIG5vdAorCQkJICogcGFydCBvZiB0aGUgdHVwbGUncyBoZWFwIGFkZHJlc3Ms IGFuZCB0aGUgaGVhcGFsbGluZGV4ZWQgY2FsbGJhY2sKKwkJCSAqIChidF90dXBsZV9wcmVz ZW50X2NhbGxiYWNrKSBmaW5nZXJwcmludHMgdGhlIHBsYWluIGhlYXAgVElEIGl0CisJCQkg KiBnZXRzIGZyb20gdGhlIGhlYXAgc2Nhbi4gIFN0cmlwIHRoZSBtYXJrZXIgZnJvbSB0aGlz IGxlYWYgdHVwbGUncworCQkJICogVElEIGZvciB0aGUgZHVyYXRpb24gb2YgZmluZ2VycHJp bnRpbmcgc28gdGhlIHR3byBub3JtYWxpemVkCisJCQkgKiBpbWFnZXMgbWF0Y2g7IHJlc3Rv cmUgaXQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkLCBzaW5jZSBsYXRlcgorCQkJICogY2hlY2tz IGluIHRoaXMgbG9vcCBzdGlsbCByZWFkIGl0dXAgZnJvbSB0aGUgKGltbXV0YWJsZSkgcGFn ZQorCQkJICogaW1hZ2UuICBPbmx5IHBsYWluIGxlYWYgdHVwbGVzIGNhbiBjYXJyeSB0aGUg bWFya2VyLgorCQkJICovCisJCQlpZiAoIUJUcmVlVHVwbGVJc1Bvc3RpbmcoaXR1cCkgJiYK KwkJCQlJdGVtUG9pbnRlcklzU0lVTWF5YmVTdGFsZSgmaXR1cC0+dF90aWQpKQorCQkJewor CQkJCXNhdmVkX3RpZCA9IGl0dXAtPnRfdGlkOworCQkJCUl0ZW1Qb2ludGVyU2V0T2Zmc2V0 TnVtYmVyKCZpdHVwLT50X3RpZCwKKwkJCQkJCQkJCQkgICBJdGVtUG9pbnRlckdldE9mZnNl dE51bWJlcigmaXR1cC0+dF90aWQpKTsKKwkJCQlzaXVfc3RyaXBwZWQgPSB0cnVlOworCQkJ fQogCiAJCQlpZiAoQlRyZWVUdXBsZUlzUG9zdGluZyhpdHVwKSkKIAkJCXsKQEAgLTE1MTYs NiArMTUzOSwxMCBAQCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNoZWNrU3RhdGUgKnN0 YXRlKQogCQkJCWlmIChub3JtICE9IGl0dXApCiAJCQkJCXBmcmVlKG5vcm0pOwogCQkJfQor CisJCQkvKiBSZXN0b3JlIHRoZSBTSVUgbWFya2VyIGJpdCBzdHJpcHBlZCBmb3IgZmluZ2Vy cHJpbnRpbmcsIGlmIGFueS4gKi8KKwkJCWlmIChzaXVfc3RyaXBwZWQpCisJCQkJaXR1cC0+ dF90aWQgPSBzYXZlZF90aWQ7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9i bG9vbS9leHBlY3RlZC9ibG9vbS5vdXQgYi9jb250cmliL2Jsb29tL2V4cGVjdGVkL2Jsb29t Lm91dAppbmRleCBlZGM4NTUxMjFlMS4uYTU2NzVkYTYyYjQgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYmxvb20vZXhwZWN0ZWQvYmxvb20ub3V0CisrKyBiL2NvbnRyaWIvYmxvb20vZXhwZWN0 ZWQvYmxvb20ub3V0CkBAIC0yMjgsMyArMjI4LDM1IEBAIENSRUFURSBJTkRFWCBibG9vbWlk eDIgT04gdHN0IFVTSU5HIGJsb29tIChpLCB0KSBXSVRIIChsZW5ndGg9MCk7CiBFUlJPUjog IHZhbHVlIDAgb3V0IG9mIGJvdW5kcyBmb3Igb3B0aW9uICJsZW5ndGgiCiBDUkVBVEUgSU5E RVggYmxvb21pZHgyIE9OIHRzdCBVU0lORyBibG9vbSAoaSwgdCkgV0lUSCAoY29sMT0wKTsK IEVSUk9SOiAgdmFsdWUgMCBvdXQgb2YgYm91bmRzIGZvciBvcHRpb24gImNvbDEiCistLQor LS0gSE9ULWluZGV4ZWQgKFNJVSkgQml0bWFwQW5kIGNvcnJlY3RuZXNzIHdpdGggYSBibG9v bSBpbmRleC4KKy0tCistLSBBIGJsb29tIGluZGV4IGlzIGJpdG1hcC1zY2FuLW9ubHkgYW5k IG5vbi1zdW1tYXJpemluZywgc28gaXQgaXMgZWxpZ2libGUgdG8KKy0tIGJlIHRoZSAidW5j aGFuZ2VkIiBzaWRlIG9mIGEgSE9ULWluZGV4ZWQgdXBkYXRlOiB0aGUgdXBkYXRlIGNoYW5n ZXMgYQorLS0gYnRyZWUtaW5kZXhlZCBjb2x1bW4gd2hpbGUgbGVhdmluZyB0aGUgYmxvb20t aW5kZXhlZCBjb2x1bW4gYWxvbmUuICBUaGUKKy0tIGJ0cmVlIGZyZXNoIGVudHJ5IHRoZW4g cG9pbnRzIGF0IHRoZSBuZXcgaGVhcC1vbmx5IHR1cGxlIGFuZCB0aGUgYmxvb20gZW50cnkK Ky0tIHN0aWxsIHBvaW50cyBhdCB0aGUgY2hhaW4gcm9vdDsgYSBCaXRtYXBBbmQgb2YgdGhl IHR3byBtdXN0IG5vdCBkcm9wIHRoZQorLS0gbWF0Y2hpbmcgcm93ICh0aGUgU0lVIGZyZXNo IGVudHJ5J3MgVElEIGNhcnJpZXMgYW4gaW50ZXJuYWwgbWF5LWJlLXN0YWxlCistLSBtYXJr ZXIgdGhhdCB0Ym1fYWRkX3R1cGxlcyBkZWdyYWRlcyB0byBhIGxvc3N5IHBhZ2UsIHNvIHRo ZSBpbnRlcnNlY3Rpb24KKy0tIGtlZXBzIHRoZSByb3cgYW5kIHRoZSBoZWFwLXNpZGUgcmVj aGVjayByZXNvbHZlcyBpdCkuICBUaGlzIGlzIGhhbmRsZWQKKy0tIGNlbnRyYWxseSBpbiB0 Ym1fYWRkX3R1cGxlcywgc28gYmxvb20gLS0gbGlrZSBldmVyeSBvdGhlciBpbmRleCBBTSAt LSBuZWVkcworLS0gbm8gYmxvb20tc3BlY2lmaWMgY29kZSBmb3IgaXQ7IHRoaXMgdGVzdCBn dWFyZHMgdGhhdC4KK0NSRUFURSBUQUJMRSBibG9vbV9zaXUgKGlkIGludCBQUklNQVJZIEtF WSwgYmNvbCBpbnQsIGNoYW5nZWQgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGJsb29tX3NpdV9iIE9OIGJsb29tX3NpdSBVU0lORyBibG9vbSAoYmNvbCk7 CitDUkVBVEUgSU5ERVggYmxvb21fc2l1X2MgT04gYmxvb21fc2l1IChjaGFuZ2VkKTsKK0lO U0VSVCBJTlRPIGJsb29tX3NpdSBWQUxVRVMgKDEsIDExLCAyMSk7CitVUERBVEUgYmxvb21f c2l1IFNFVCBjaGFuZ2VkID0gMjIgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkOiBv bmx5ICJjaGFuZ2VkIgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9p bmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvbjsKKy0tIE11c3Qg cmV0dXJuIHRoZSByb3cgKHByZXZpb3VzbHkgYSBmYWxzZSBuZWdhdGl2ZSBiZWZvcmUgdGhl IFNJVSBiaXRtYXAgZml4KS4KK1NFTEVDVCBjb3VudCgqKSBBUyBibG9vbV9iaXRtYXBhbmQg RlJPTSBibG9vbV9zaXUgV0hFUkUgYmNvbCA9IDExIEFORCBjaGFuZ2VkID0gMjI7CisgYmxv b21fYml0bWFwYW5kIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgIDEKKygx IHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhzY2Fu OworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitEUk9QIFRBQkxFIGJsb29tX3NpdTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vc3FsL2Jsb29tLnNxbCBiL2NvbnRyaWIvYmxvb20v c3FsL2Jsb29tLnNxbAppbmRleCBmYTYzYjMwMWM2ZS4uMjhjOWIzNjc0ZWYgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYmxvb20vc3FsL2Jsb29tLnNxbAorKysgYi9jb250cmliL2Jsb29tL3Nx bC9ibG9vbS5zcWwKQEAgLTkzLDMgKzkzLDMxIEBAIFNFTEVDVCByZWxvcHRpb25zIEZST00g cGdfY2xhc3MgV0hFUkUgb2lkID0gJ2Jsb29taWR4Jzo6cmVnY2xhc3M7CiBcc2V0IFZFUkJP U0lUWSB0ZXJzZQogQ1JFQVRFIElOREVYIGJsb29taWR4MiBPTiB0c3QgVVNJTkcgYmxvb20g KGksIHQpIFdJVEggKGxlbmd0aD0wKTsKIENSRUFURSBJTkRFWCBibG9vbWlkeDIgT04gdHN0 IFVTSU5HIGJsb29tIChpLCB0KSBXSVRIIChjb2wxPTApOworCistLQorLS0gSE9ULWluZGV4 ZWQgKFNJVSkgQml0bWFwQW5kIGNvcnJlY3RuZXNzIHdpdGggYSBibG9vbSBpbmRleC4KKy0t CistLSBBIGJsb29tIGluZGV4IGlzIGJpdG1hcC1zY2FuLW9ubHkgYW5kIG5vbi1zdW1tYXJp emluZywgc28gaXQgaXMgZWxpZ2libGUgdG8KKy0tIGJlIHRoZSAidW5jaGFuZ2VkIiBzaWRl IG9mIGEgSE9ULWluZGV4ZWQgdXBkYXRlOiB0aGUgdXBkYXRlIGNoYW5nZXMgYQorLS0gYnRy ZWUtaW5kZXhlZCBjb2x1bW4gd2hpbGUgbGVhdmluZyB0aGUgYmxvb20taW5kZXhlZCBjb2x1 bW4gYWxvbmUuICBUaGUKKy0tIGJ0cmVlIGZyZXNoIGVudHJ5IHRoZW4gcG9pbnRzIGF0IHRo ZSBuZXcgaGVhcC1vbmx5IHR1cGxlIGFuZCB0aGUgYmxvb20gZW50cnkKKy0tIHN0aWxsIHBv aW50cyBhdCB0aGUgY2hhaW4gcm9vdDsgYSBCaXRtYXBBbmQgb2YgdGhlIHR3byBtdXN0IG5v dCBkcm9wIHRoZQorLS0gbWF0Y2hpbmcgcm93ICh0aGUgU0lVIGZyZXNoIGVudHJ5J3MgVElE IGNhcnJpZXMgYW4gaW50ZXJuYWwgbWF5LWJlLXN0YWxlCistLSBtYXJrZXIgdGhhdCB0Ym1f YWRkX3R1cGxlcyBkZWdyYWRlcyB0byBhIGxvc3N5IHBhZ2UsIHNvIHRoZSBpbnRlcnNlY3Rp b24KKy0tIGtlZXBzIHRoZSByb3cgYW5kIHRoZSBoZWFwLXNpZGUgcmVjaGVjayByZXNvbHZl cyBpdCkuICBUaGlzIGlzIGhhbmRsZWQKKy0tIGNlbnRyYWxseSBpbiB0Ym1fYWRkX3R1cGxl cywgc28gYmxvb20gLS0gbGlrZSBldmVyeSBvdGhlciBpbmRleCBBTSAtLSBuZWVkcworLS0g bm8gYmxvb20tc3BlY2lmaWMgY29kZSBmb3IgaXQ7IHRoaXMgdGVzdCBndWFyZHMgdGhhdC4K K0NSRUFURSBUQUJMRSBibG9vbV9zaXUgKGlkIGludCBQUklNQVJZIEtFWSwgYmNvbCBpbnQs IGNoYW5nZWQgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGJs b29tX3NpdV9iIE9OIGJsb29tX3NpdSBVU0lORyBibG9vbSAoYmNvbCk7CitDUkVBVEUgSU5E RVggYmxvb21fc2l1X2MgT04gYmxvb21fc2l1IChjaGFuZ2VkKTsKK0lOU0VSVCBJTlRPIGJs b29tX3NpdSBWQUxVRVMgKDEsIDExLCAyMSk7CitVUERBVEUgYmxvb21fc2l1IFNFVCBjaGFu Z2VkID0gMjIgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkOiBvbmx5ICJjaGFuZ2Vk IgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvbjsKKy0tIE11c3QgcmV0dXJuIHRoZSBy b3cgKHByZXZpb3VzbHkgYSBmYWxzZSBuZWdhdGl2ZSBiZWZvcmUgdGhlIFNJVSBiaXRtYXAg Zml4KS4KK1NFTEVDVCBjb3VudCgqKSBBUyBibG9vbV9iaXRtYXBhbmQgRlJPTSBibG9vbV9z aXUgV0hFUkUgYmNvbCA9IDExIEFORCBjaGFuZ2VkID0gMjI7CitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK0RST1AgVEFCTEUgYmxvb21fc2l1OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5z cGVjdC9NYWtlZmlsZSBiL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUKaW5kZXggZWFl OTg5NTY5ZDAuLjA5Nzc0ZmQzNDBjIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0 L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvTWFrZWZpbGUKQEAgLTEzLDcg KzEzLDcgQEAgT0JKUyA9IFwKIAlyYXdwYWdlLm8KIAogRVhURU5TSU9OID0gcGFnZWluc3Bl Y3QKLURBVEEgPSAgcGFnZWluc3BlY3QtLTEuMTItLTEuMTMuc3FsIFwKK0RBVEEgPSAgcGFn ZWluc3BlY3QtLTEuMTMtLTEuMTQuc3FsIHBhZ2VpbnNwZWN0LS0xLjEyLS0xLjEzLnNxbCBc CiAJcGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsIHBhZ2VpbnNwZWN0LS0xLjEwLS0xLjEx LnNxbCBcCiAJcGFnZWluc3BlY3QtLTEuOS0tMS4xMC5zcWwgcGFnZWluc3BlY3QtLTEuOC0t MS45LnNxbCBcCiAJcGFnZWluc3BlY3QtLTEuNy0tMS44LnNxbCBwYWdlaW5zcGVjdC0tMS42 LS0xLjcuc3FsIFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5j cy5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMKaW5kZXggMzM4MWU3Y2My YTcuLmY1ODQ5YzlkNmM0IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVl ZnVuY3MuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwpAQCAtNDg1 LDggKzQ4NSw4IEBAIGJ0X3BhZ2VfcHJpbnRfdHVwbGVzKHVhX3BhZ2VfaXRlbXMgKnVhcmdz KQogCWJvb2wJCWxlYWZwYWdlID0gdWFyZ3MtPmxlYWZwYWdlOwogCWJvb2wJCXJpZ2h0bW9z dCA9IHVhcmdzLT5yaWdodG1vc3Q7CiAJYm9vbAkJaXNwaXZvdHR1cGxlOwotCURhdHVtCQl2 YWx1ZXNbOV07Ci0JYm9vbAkJbnVsbHNbOV07CisJRGF0dW0JCXZhbHVlc1sxMF07CisJYm9v bAkJbnVsbHNbMTBdOwogCUhlYXBUdXBsZQl0dXBsZTsKIAlJdGVtSWQJCWlkOwogCUluZGV4 VHVwbGUJaXR1cDsKQEAgLTQ5Nyw2ICs0OTcsOSBAQCBidF9wYWdlX3ByaW50X3R1cGxlcyh1 YV9wYWdlX2l0ZW1zICp1YXJncykKIAkJCSAgICpkYXRhY3N0cmluZzsKIAljaGFyCSAgICpw dHI7CiAJSXRlbVBvaW50ZXIgaHRpZDsKKwlib29sCQlob3RfaW5kZXhlZDsKKwlJdGVtUG9p bnRlckRhdGEgY3RpZF9zaG93OworCUl0ZW1Qb2ludGVyRGF0YSBodGlkX3Nob3c7CiAKIAlp ZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2Zmc2V0KTsKIApAQCAtNTA4LDcgKzUxMSwyOSBA QCBidF9wYWdlX3ByaW50X3R1cGxlcyh1YV9wYWdlX2l0ZW1zICp1YXJncykKIAlqID0gMDsK IAltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCXZhbHVlc1tqKytdID0gSW50 MTZHZXREYXR1bShvZmZzZXQpOwotCXZhbHVlc1tqKytdID0gSXRlbVBvaW50ZXJHZXREYXR1 bSgmaXR1cC0+dF90aWQpOworCisJLyoKKwkgKiBBIEhPVC1pbmRleGVkIChTSVUpIGZyZXNo IGVudHJ5IHN0b3JlcyBpdHMgaGVhcCBUSUQgd2l0aCB0aGUKKwkgKiBJdGVtUG9pbnRlclNJ VU1heWJlU3RhbGVGbGFnIG1hcmtlciBiaXQgc2V0IGluIHRoZSBvZmZzZXQgZmllbGQgKHNl ZQorCSAqIHN0b3JhZ2UvaXRlbXB0ci5oKS4gIFJlcG9ydCB0aGUgcmVhbCBvZmZzZXQgaW4g dGhlIGN0aWQgY29sdW1uIC0tIHRoZQorCSAqIG1hcmtlciBpcyBhIGJpdG1hcC1zY2FuIGhp bnQsIG5vdCBwYXJ0IG9mIHRoZSB0dXBsZSdzIGFkZHJlc3MgLS0gYW5kCisJICogZXhwb3Nl IHRoZSBtYXJrZXIgaXRzZWxmIGluIHRoZSBzZXBhcmF0ZSBob3RfaW5kZXhlZCBjb2x1bW4g YmVsb3cuCisJICogT25seSBhIHBsYWluIGxlYWYgdHVwbGUncyB0X3RpZCBpcyBhIGdlbnVp bmUgaGVhcCBUSUQgdGhhdCBjYW4gY2FycnkKKwkgKiB0aGUgZmxhZzsgYSBwaXZvdC9wb3N0 aW5nIHR1cGxlIHJlcHVycG9zZXMgdF90aWQgZm9yIG90aGVyIGRhdGEgYW5kCisJICogbXVz dCBiZSBzaG93biB2ZXJiYXRpbS4KKwkgKi8KKwlpZiAoIUJUcmVlVHVwbGVJc1Bpdm90KGl0 dXApICYmICFCVHJlZVR1cGxlSXNQb3N0aW5nKGl0dXApKQorCXsKKwkJY3RpZF9zaG93ID0g aXR1cC0+dF90aWQ7CisJCWhvdF9pbmRleGVkID0gSXRlbVBvaW50ZXJJc1NJVU1heWJlU3Rh bGUoJmN0aWRfc2hvdyk7CisJCUl0ZW1Qb2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZjdGlkX3No b3csIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZjdGlkX3Nob3cpKTsKKwkJdmFsdWVz W2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKCZjdGlkX3Nob3cpOworCX0KKwllbHNlCisJ eworCQlob3RfaW5kZXhlZCA9IGZhbHNlOworCQl2YWx1ZXNbaisrXSA9IEl0ZW1Qb2ludGVy R2V0RGF0dW0oJml0dXAtPnRfdGlkKTsKKwl9CiAJdmFsdWVzW2orK10gPSBJbnQxNkdldERh dHVtKEluZGV4VHVwbGVTaXplKGl0dXApKTsKIAl2YWx1ZXNbaisrXSA9IEJvb2xHZXREYXR1 bShJbmRleFR1cGxlSGFzTnVsbHMoaXR1cCkpOwogCXZhbHVlc1tqKytdID0gQm9vbEdldERh dHVtKEluZGV4VHVwbGVIYXNWYXJ3aWR0aHMoaXR1cCkpOwpAQCAtNTg0LDcgKzYwOSwxMiBA QCBidF9wYWdlX3ByaW50X3R1cGxlcyh1YV9wYWdlX2l0ZW1zICp1YXJncykKIAl9CiAKIAlp ZiAoaHRpZCkKLQkJdmFsdWVzW2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKGh0aWQpOwor CXsKKwkJLyogUmVwb3J0IHRoZSByZWFsIG9mZnNldDsgdGhlIFNJVSBtYXJrZXIgaXMgc2hv d24gdmlhIGhvdF9pbmRleGVkLiAqLworCQlodGlkX3Nob3cgPSAqaHRpZDsKKwkJSXRlbVBv aW50ZXJTZXRPZmZzZXROdW1iZXIoJmh0aWRfc2hvdywgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJmh0aWRfc2hvdykpOworCQl2YWx1ZXNbaisrXSA9IEl0ZW1Qb2ludGVyR2V0RGF0 dW0oJmh0aWRfc2hvdyk7CisJfQogCWVsc2UKIAkJbnVsbHNbaisrXSA9IHRydWU7CiAKQEAg LTYwNiw2ICs2MzYsMTQgQEAgYnRfcGFnZV9wcmludF90dXBsZXModWFfcGFnZV9pdGVtcyAq dWFyZ3MpCiAJZWxzZQogCQludWxsc1tqKytdID0gdHJ1ZTsKIAorCS8qCisJICogaG90X2lu ZGV4ZWQ6IHRydWUgaWZmIHRoaXMgbGVhZiBlbnRyeSBpcyBhIEhPVC1pbmRleGVkIChTSVUp IGZyZXNoCisJICogZW50cnkuICBPbmx5IHByZXNlbnQgZnJvbSBwYWdlaW5zcGVjdCAxLjE0 IG9uOyBvbGRlciBleHRlbnNpb24gdmVyc2lvbnMKKwkgKiBkZWNsYXJlIG9uZSBmZXdlciBv dXRwdXQgY29sdW1uLCBzbyBnYXRlIG9uIHRoZSBhY3R1YWwgdHVwbGUgZGVzY3JpcHRvci4K KwkgKi8KKwlpZiAodWFyZ3MtPnR1cGQtPm5hdHRzID4gaikKKwkJdmFsdWVzW2orK10gPSBC b29sR2V0RGF0dW0oaG90X2luZGV4ZWQpOworCiAJLyogQnVpbGQgYW5kIHJldHVybiB0aGUg cmVzdWx0IHR1cGxlICovCiAJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUodWFyZ3MtPnR1cGQs IHZhbHVlcywgbnVsbHMpOwogCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2J0cmVlLm91dCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnRyZWUu b3V0CmluZGV4IDBhYTVkNzMzMjJmLi4xNzM3MzRjMjE1MyAxMDA2NDQKLS0tIGEvY29udHJp Yi9wYWdlaW5zcGVjdC9leHBlY3RlZC9idHJlZS5vdXQKKysrIGIvY29udHJpYi9wYWdlaW5z cGVjdC9leHBlY3RlZC9idHJlZS5vdXQKQEAgLTE1MiwxNiArMTUyLDE3IEBAIEVSUk9SOiAg aW52YWxpZCBibG9jayBudW1iZXIgLTEKIFNFTEVDVCAqIEZST00gYnRfcGFnZV9pdGVtcygn dGVzdDFfYV9pZHgnLCAwKTsKIEVSUk9SOiAgYmxvY2sgMCBpcyBhIG1ldGEgcGFnZQogU0VM RUNUICogRlJPTSBidF9wYWdlX2l0ZW1zKCd0ZXN0MV9hX2lkeCcsIDEpOwotLVsgUkVDT1JE IDEgXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1pdGVtb2Zmc2V0IHwgMQotY3RpZCAgICAg ICB8ICgwLDEpCi1pdGVtbGVuICAgIHwgMTYKLW51bGxzICAgICAgfCBmCi12YXJzICAgICAg IHwgZgotZGF0YSAgICAgICB8IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAxCi1kZWFkICAgICAg IHwgZgotaHRpZCAgICAgICB8ICgwLDEpCi10aWRzICAgICAgIHwgCistWyBSRUNPUkQgMSBd LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitpdGVtb2Zmc2V0ICB8IDEKK2N0aWQgICAgICAg IHwgKDAsMSkKK2l0ZW1sZW4gICAgIHwgMTYKK251bGxzICAgICAgIHwgZgordmFycyAgICAg ICAgfCBmCitkYXRhICAgICAgICB8IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAxCitkZWFkICAg ICAgICB8IGYKK2h0aWQgICAgICAgIHwgKDAsMSkKK3RpZHMgICAgICAgIHwgCitob3RfaW5k ZXhlZCB8IGYKIAogU0VMRUNUICogRlJPTSBidF9wYWdlX2l0ZW1zKCd0ZXN0MV9hX2lkeCcs IDIpOwogRVJST1I6ICBibG9jayBudW1iZXIgMiBpcyBvdXQgb2YgcmFuZ2UKQEAgLTE3MCwx NiArMTcxLDE3IEBAIEVSUk9SOiAgaW52YWxpZCBibG9jayBudW1iZXIKIFNFTEVDVCAqIEZS T00gYnRfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3QxX2FfaWR4JywgMCkpOwogRVJS T1I6ICBibG9jayBpcyBhIG1ldGEgcGFnZQogU0VMRUNUICogRlJPTSBidF9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgndGVzdDFfYV9pZHgnLCAxKSk7Ci0tWyBSRUNPUkQgMSBdLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLWl0ZW1vZmZzZXQgfCAxCi1jdGlkICAgICAgIHwgKDAsMSkK LWl0ZW1sZW4gICAgfCAxNgotbnVsbHMgICAgICB8IGYKLXZhcnMgICAgICAgfCBmCi1kYXRh ICAgICAgIHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDEKLWRlYWQgICAgICAgfCBmCi1odGlk ICAgICAgIHwgKDAsMSkKLXRpZHMgICAgICAgfCAKKy1bIFJFQ09SRCAxIF0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK2l0ZW1vZmZzZXQgIHwgMQorY3RpZCAgICAgICAgfCAoMCwxKQor aXRlbWxlbiAgICAgfCAxNgorbnVsbHMgICAgICAgfCBmCit2YXJzICAgICAgICB8IGYKK2Rh dGEgICAgICAgIHwgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDEKK2RlYWQgICAgICAgIHwgZgor aHRpZCAgICAgICAgfCAoMCwxKQordGlkcyAgICAgICAgfCAKK2hvdF9pbmRleGVkIHwgZgog CiBTRUxFQ1QgKiBGUk9NIGJ0X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0MV9hX2lk eCcsIDIpKTsKIEVSUk9SOiAgYmxvY2sgbnVtYmVyIDIgaXMgb3V0IG9mIHJhbmdlIGZvciBy ZWxhdGlvbiAidGVzdDFfYV9pZHgiCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0 L21lc29uLmJ1aWxkIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZAppbmRleCBj NDNlYTQwMGE0ZC4uMmYzMzM2MzU4MzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9tZXNvbi5idWlsZApA QCAtMzgsNiArMzgsNyBAQCBpbnN0YWxsX2RhdGEoCiAgICdwYWdlaW5zcGVjdC0tMS4xMC0t MS4xMS5zcWwnLAogICAncGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsJywKICAgJ3BhZ2Vp bnNwZWN0LS0xLjEyLS0xLjEzLnNxbCcsCisgICdwYWdlaW5zcGVjdC0tMS4xMy0tMS4xNC5z cWwnLAogICAncGFnZWluc3BlY3QuY29udHJvbCcsCiAgIGt3YXJnczogY29udHJpYl9kYXRh X2FyZ3MsCiApCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0 LS0xLjEzLS0xLjE0LnNxbCBiL2NvbnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEu MTMtLTEuMTQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42 YzVjODI0ZDVlMgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvcGFn ZWluc3BlY3QtLTEuMTMtLTEuMTQuc3FsCkBAIC0wLDAgKzEsNDkgQEAKKy8qIGNvbnRyaWIv cGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTMtLTEuMTQuc3FsICovCisKKy0tIGNvbXBs YWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVB VEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBwYWdlaW5zcGVjdCBV UERBVEUgVE8gJzEuMTQnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworLS0KKy0tIGJ0 X3BhZ2VfaXRlbXMocmVsbmFtZSwgYmxrbm8pIC0tIGFkZCBob3RfaW5kZXhlZCBjb2x1bW4K Ky0tCistLSBBIEhPVC1pbmRleGVkIChTSVUpIGZyZXNoIGluZGV4IGVudHJ5IHN0b3JlcyBp dHMgaGVhcCBUSUQgd2l0aCBhbiBpbnRlcm5hbAorLS0gbWFya2VyIGJpdCAoSXRlbVBvaW50 ZXJTSVVNYXliZVN0YWxlRmxhZykgc2V0IGluIHRoZSBvZmZzZXQgZmllbGQsIHdoaWNoCist LSB0ZWxscyBhIGJpdG1hcCBzY2FuIHRoZSBlbnRyeSBwb2ludHMgbWlkLWNoYWluIGFuZCBt dXN0IGJlIHJlc29sdmVkCistLSBsb3NzaWx5LiAgRWFybGllciBwYWdlaW5zcGVjdCB2ZXJz aW9ucyBzdXJmYWNlZCB0aGF0IG1hcmtlciBhcyBhbiBpbmZsYXRlZAorLS0gY3RpZCBvZmZz ZXQ7IGZyb20gMS4xNCB0aGUgY3RpZC9odGlkIGNvbHVtbnMgcmVwb3J0IHRoZSByZWFsIG9m ZnNldCBhbmQgdGhlCistLSBuZXcgaG90X2luZGV4ZWQgY29sdW1uIGV4cG9zZXMgdGhlIG1h cmtlciBleHBsaWNpdGx5LgorLS0KK0RST1AgRlVOQ1RJT04gYnRfcGFnZV9pdGVtcyh0ZXh0 LCBpbnQ4KTsKK0NSRUFURSBGVU5DVElPTiBidF9wYWdlX2l0ZW1zKElOIHJlbG5hbWUgdGV4 dCwgSU4gYmxrbm8gaW50OCwKKyAgICBPVVQgaXRlbW9mZnNldCBzbWFsbGludCwKKyAgICBP VVQgY3RpZCB0aWQsCisgICAgT1VUIGl0ZW1sZW4gc21hbGxpbnQsCisgICAgT1VUIG51bGxz IGJvb2wsCisgICAgT1VUIHZhcnMgYm9vbCwKKyAgICBPVVQgZGF0YSB0ZXh0LAorICAgIE9V VCBkZWFkIGJvb2xlYW4sCisgICAgT1VUIGh0aWQgdGlkLAorICAgIE9VVCB0aWRzIHRpZFtd LAorICAgIE9VVCBob3RfaW5kZXhlZCBib29sKQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FT ICdNT0RVTEVfUEFUSE5BTUUnLCAnYnRfcGFnZV9pdGVtc18xXzknCitMQU5HVUFHRSBDIFNU UklDVCBQQVJBTExFTCBTQUZFOworCistLQorLS0gYnRfcGFnZV9pdGVtcyhwYWdlKSAtLSBh ZGQgaG90X2luZGV4ZWQgY29sdW1uCistLQorRFJPUCBGVU5DVElPTiBidF9wYWdlX2l0ZW1z KGJ5dGVhKTsKK0NSRUFURSBGVU5DVElPTiBidF9wYWdlX2l0ZW1zKElOIHBhZ2UgYnl0ZWEs CisgICAgT1VUIGl0ZW1vZmZzZXQgc21hbGxpbnQsCisgICAgT1VUIGN0aWQgdGlkLAorICAg IE9VVCBpdGVtbGVuIHNtYWxsaW50LAorICAgIE9VVCBudWxscyBib29sLAorICAgIE9VVCB2 YXJzIGJvb2wsCisgICAgT1VUIGRhdGEgdGV4dCwKKyAgICBPVVQgZGVhZCBib29sZWFuLAor ICAgIE9VVCBodGlkIHRpZCwKKyAgICBPVVQgdGlkcyB0aWRbXSwKKyAgICBPVVQgaG90X2lu ZGV4ZWQgYm9vbCkKK1JFVFVSTlMgU0VUT0YgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1F JywgJ2J0X3BhZ2VfaXRlbXNfYnl0ZWEnCitMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExFTCBT QUZFOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC5jb250 cm9sIGIvY29udHJpYi9wYWdlaW5zcGVjdC9wYWdlaW5zcGVjdC5jb250cm9sCmluZGV4IGNm Yzg3ZmVhYzAzLi5hZWUzZjU5OGE5ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVj dC9wYWdlaW5zcGVjdC5jb250cm9sCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvcGFnZWlu c3BlY3QuY29udHJvbApAQCAtMSw1ICsxLDUgQEAKICMgcGFnZWluc3BlY3QgZXh0ZW5zaW9u CiBjb21tZW50ID0gJ2luc3BlY3QgdGhlIGNvbnRlbnRzIG9mIGRhdGFiYXNlIHBhZ2VzIGF0 IGEgbG93IGxldmVsJwotZGVmYXVsdF92ZXJzaW9uID0gJzEuMTMnCitkZWZhdWx0X3ZlcnNp b24gPSAnMS4xNCcKIG1vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL3BhZ2VpbnNwZWN0Jwog cmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGFnZWluc3Bl Y3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9wYWdlaW5zcGVjdC5zZ21sCmluZGV4IDNhMTEzNDM5 ZTFkLi4zZTk1NzY0MTljMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BhZ2VpbnNwZWN0 LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BhZ2VpbnNwZWN0LnNnbWwKQEAgLTQ1OCw2ICs0 NTgsMTggQEAgdGVzdD0jIFNFTEVDVCBpdGVtb2Zmc2V0LCBjdGlkLCBpdGVtbGVuLCBudWxs cywgdmFycywgZGF0YSwgZGVhZCwgaHRpZCwgdGlkc1swOjIKICAgICAgIGF3YXksIHdoaWNo IGlzIHJlcHJlc2VudGVkIGFzIGEgTlVMTAogICAgICAgPHN0cnVjdGZpZWxkPmh0aWQ8L3N0 cnVjdGZpZWxkPiB2YWx1ZS4KICAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIDxz dHJ1Y3RmaWVsZD5ob3RfaW5kZXhlZDwvc3RydWN0ZmllbGQ+IGlzIHRydWUgd2hlbiB0aGUg bGVhZiB0dXBsZSBpcyBhCisgICAgICBmcmVzaCBpbmRleCBlbnRyeSBwbGFudGVkIGJ5IGEg SE9ULWluZGV4ZWQgKHNlbGVjdGl2ZSBpbmRleCB1cGRhdGUpCisgICAgICA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+LCB3aGljaCBwb2ludHMgYXQgYSBtaWQtY2hhaW4gaGVhcC1vbmx5 IHR1cGxlCisgICAgICByYXRoZXIgdGhhbiBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1Y2ggYW4g ZW50cnkncyBzdG9yZWQgaGVhcCBUSUQgY2FycmllcworICAgICAgYW4gaW50ZXJuYWwgbWFy a2VyIGJpdCBpbiBpdHMgb2Zmc2V0IHRoYXQgYSBiaXRtYXAgc2NhbiB1c2VzIHRvIGZhbGwK KyAgICAgIGJhY2sgdG8gcGFnZS1sZXZlbCAobG9zc3kpIG1hdGNoaW5nOyA8c3RydWN0Zmll bGQ+Y3RpZDwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgPHN0cnVjdGZpZWxkPmh0aWQ8L3N0 cnVjdGZpZWxkPiByZXBvcnQgdGhlIHJlYWwgaGVhcCBvZmZzZXQgd2l0aCB0aGF0CisgICAg ICBtYXJrZXIgcmVtb3ZlZCwgYW5kIDxzdHJ1Y3RmaWVsZD5ob3RfaW5kZXhlZDwvc3RydWN0 ZmllbGQ+IGV4cG9zZXMgdGhlCisgICAgICBtYXJrZXIgaXRzZWxmLiAgSXQgaXMgZmFsc2Ug Zm9yIG9yZGluYXJ5IGVudHJpZXMgYW5kIGZvciB0aGUgcGl2b3QgYW5kCisgICAgICBwb3N0 aW5nLWxpc3QgdHVwbGVzIHdob3NlIDxzdHJ1Y3RmaWVsZD5jdGlkPC9zdHJ1Y3RmaWVsZD4g aXMgcmVwdXJwb3NlZC4KKyAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIE5vdGUg dGhhdCB0aGUgZmlyc3QgaXRlbSBvbiBhbnkgbm9uLXJpZ2h0bW9zdCBwYWdlIChhbnkgcGFn ZSB3aXRoCiAgICAgICBhIG5vbi16ZXJvIHZhbHVlIGluIHRoZSA8c3RydWN0ZmllbGQ+YnRw b19uZXh0PC9zdHJ1Y3RmaWVsZD4gZmllbGQpIGlzIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5iNTYyODMx MDM5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1J TkRFWEVECisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhF RApAQCAtMjA2LDYgKzIwNiwxMzYgQEAgdW5kZXIgdGhlIG9wY2xhc3MgZXZlbiBpZiBub3Qg Yml0d2lzZS1pZGVudGljYWwsIGUuZy4gbnVtZXJpYyAxLjAgdnMgMS4wMCkgaXMKIHN0aWxs IGRldGVjdGVkLiAgKEFwcGVuZGl4IEEgbW90aXZhdGVzIHRoaXMgcmVjaGVjayBpbiBkZXRh aWwuKQogCiAKK0JpdG1hcCBzY2FuczogdGhlIG1pZC1jaGFpbiBUSUQgYW5kIEJpdG1hcEFu ZC9CaXRtYXBPcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworVGhlIGNyb3NzZWQtYXR0cmlidXRlIHRlc3QgYWJvdmUgcnVucyBv biB0aGUgd2F5IHRvIHRoZSBoZWFwLiAgQSBiaXRtYXAgc2NhbgoraGFzIGFuIGVhcmxpZXIg aGF6YXJkIGl0IGNhbm5vdCByZWFjaDogQml0bWFwQW5kL0JpdG1hcE9yIGNvbWJpbmUgdHdv IGluZGV4ZXMnCitUSUQgc2V0cyBpbiB0aWRiaXRtYXAuYyBhdCByYXcgYmxvY2srb2Zmc2V0 IGdyYW51bGFyaXR5LCBiZWZvcmUgZWl0aGVyIHNpZGUKK3RvdWNoZXMgdGhlIGhlYXAuICBB IEhPVC1pbmRleGVkIGZyZXNoIGVudHJ5IHBvaW50cyBhdCB0aGUgbWlkLWNoYWluIG5ldyB0 dXBsZQord2hpbGUgYW4gdW5jaGFuZ2VkIGluZGV4J3MgZW50cnkgZm9yIHRoZSBzYW1lIHJv dyBwb2ludHMgYXQgdGhlIGNoYWluIHJvb3QsIHNvCitmb3IgIldIRVJFIGNoYW5nZWRfY29s ID0geCBBTkQgdW5jaGFuZ2VkX2NvbCA9IHkiIHRoZSB0d28gYml0bWFwIGluZGV4IHNjYW5z Citjb250cmlidXRlIGRpZmZlcmVudCBUSURzIGZvciB0aGUgb25lIGxpdmUgcm93LCB0aGUg ZXhhY3QtbW9kZSBpbnRlcnNlY3Rpb24KK2ZpbmRzIG5vdGhpbmcgaW4gY29tbW9uLCBhbmQg dGhlIHJvdyBpcyBkcm9wcGVkIC0tIGEgZmFsc2UgbmVnYXRpdmUgKGJpdG1hcAorc2NhbnMg dG9sZXJhdGUgZmFsc2UgcG9zaXRpdmVzLCBub3QgZmFsc2UgbmVnYXRpdmVzKS4KKworQSBm cmVzaCBlbnRyeSdzIHN0b3JlZCBoZWFwIFRJRCB0aGVyZWZvcmUgY2FycmllcyBJdGVtUG9p bnRlclNJVU1heWJlU3RhbGVGbGFnLAorYml0IDE0IG9mIHRoZSBvZmZzZXQgZmllbGQgKHNl ZSBzdG9yYWdlL2l0ZW1wdHIuaCkuICBNYXhPZmZzZXROdW1iZXIgbmVlZHMgYXQKK21vc3Qg MTQgYml0cyBldmVuIGF0IHRoZSBsYXJnZXN0IGNvbmZpZ3VyYWJsZSBCTENLU1osIHNvIHRo ZSBiaXQgaXMgZnJlZSBmb3IKK2FueSByZWFsIG9mZnNldDsgdGhlIHR3byByZXNlcnZlZCBv ZmZzZXQgc2VudGluZWxzIChTcGVjVG9rZW5PZmZzZXROdW1iZXIsCitNb3ZlZFBhcnRpdGlv bnNPZmZzZXROdW1iZXIpIGFscmVhZHkgc2V0IGl0IGFzIHBhcnQgb2YgdGhlaXIgb3duIGVu Y29kaW5nLCBzbworSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIncyBzdHJpcCBpcyByYW5n ZS1nYXRlZCB0byBsZWF2ZSB0aGVtIGludGFjdC4gIFRoZQorZmxhZyBpcyBzZXQgb25seSBv biB0aGUgbG9jYWwgVElEIGNvcHkgaGFuZGVkIHRvIGEgZnJlc2ggZW50cnkncyBpbmRleF9p bnNlcnQKKyhFeGVjSW5zZXJ0SW5kZXhUdXBsZXMpLCBuZXZlciBvbiB0aGUgaGVhcCB0dXBs ZSdzIG93biB0X2N0aWQgYW5kIG5ldmVyIG9uIGEKK2NsYXNzaWMtSE9UIG9yIHBsYWluIGVu dHJ5LiAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIgYW5kIEl0ZW1Qb2ludGVyQ29tcGFy ZQorc3RyaXAgaXQgYnkgZGVmYXVsdCwgc28gdGhlIHBsYWluIGluZGV4LXNjYW4gaGVhcCBs b29rdXAsIHRoZSB1bmlxdWUgY2hlY2ssCit0dXBsZXNvcnQsIGFuZCB0aGUgdGlkIG9wY2xh c3MgYWxsIHNlZSB0aGUgcmVhbCBvZmZzZXQ7IG9ubHkKK0l0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyTm9DaGVjayBleHBvc2VzIHRoZSByYXcgdmFsdWUuCisKK3RibV9hZGRfdHVwbGVz IC0tIHRoZSBzaW5nbGUgY2hva2UgcG9pbnQgZXZlcnkgYW1nZXRiaXRtYXAgZnVubmVscyBl eGFjdCBoZWFwCitUSURzIHRocm91Z2ggLS0gY2hlY2tzIHRoZSBmbGFnIGFuZCwgd2hlbiBz ZXQsIGFkZHMgdGhlIHdob2xlIHBhZ2UgYXMgbG9zc3kKKyh0Ym1fYWRkX3BhZ2UpIGluc3Rl YWQgb2YgdGhlIHNpbmdsZSBleGFjdCBvZmZzZXQuICBBIGxvc3N5IHBhZ2Ugc3Vydml2ZXMg YW55CitBTkQvT1IgYWdhaW5zdCBhbiBleGFjdC1tb2RlIHBhZ2UgKHRibV9pbnRlcnNlY3Rf cGFnZSdzIG93biBjYXNlIGFuYWx5c2lzKSBhbmQKK2ZvcmNlcyBhIHJlY2hlY2ssIHNvIEJp dG1hcEhlYXBTY2FuIHJlc29sdmVzIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQtCithdHRy aWJ1dGUgdGVzdCBhYm92ZSBtYWtlcyB0aGUgZmluYWwgY2FsbC4gIEJlY2F1c2UgdGhpcyBs aXZlcyBpbgordGJtX2FkZF90dXBsZXMsIG5vIGluZGV4IGFjY2VzcyBtZXRob2QgbmVlZHMg YW55IEhPVC1pbmRleGVkLXNwZWNpZmljIGNvZGU6CitidHJlZSwgaGFzaCwgR0lOLCBHaVNU LCBTUC1HaVNULCBjb250cmliL2Jsb29tLCBhbmQgb3V0LW9mLXRyZWUgQU1zIGFyZSBhbGwK K2NvcnJlY3QsIGFuZCBhIFRJRCB0aGF0IG5ldmVyIGNhcnJpZXMgdGhlIGZsYWcgdGFrZXMg dGhlIGlkZW50aWNhbCBvbGQgcGF0aC4KK0dJTidzIHVucmVsYXRlZCBwYWdlLWxldmVsIGxv c3N5IHNlbnRpbmVsIChJdGVtUG9pbnRlcklzTG9zc3lQYWdlKSBpcyBub3QKK2FmZmVjdGVk LgorCitUaGUgY29zdCBpcyBwcmVjaXNpb24sIG5vdCBjb3JyZWN0bmVzczogYSBoZWFwIHBh Z2UgY2FycnlpbmcgYSBsaXZlIGZyZXNoCitlbnRyeSBjb250cmlidXRlcyBsb3NzeSAoYSB3 aG9sZS1wYWdlIHJlY2hlY2sgb24gdGhhdCBiaXRtYXAgc2NhbikgdW50aWwgdGhlCitjaGFp biBjb2xsYXBzZXM7IGl0IGlzIGJvdW5kZWQgYW5kIHNlbGYtaGVhbGluZyB2aWEgcHJ1bmUv VkFDVVVNLiAgcGFnZWluc3BlY3QKKzEuMTQncyBidF9wYWdlX2l0ZW1zIHJlcG9ydHMgdGhl IHJlYWwgb2Zmc2V0IChlYXJsaWVyIHZlcnNpb25zIHNob3dlZCB0aGUKK21hcmtlciBhcyBh biBpbmZsYXRlZCBvZmZzZXQpIGFuZCBhZGRzIGEgaG90X2luZGV4ZWQgYm9vbGVhbiBjb2x1 bW4uCisKKworUHJ1bmUgYW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK0JlY2F1c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4 IGVudHJ5IHBvaW50aW5nIGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24g VElELCBjbGFzc2ljIEhPVCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9p bnRlcnMgaGF2ZSBubyBleHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBy dW5pbmcgdGhlcmVmb3JlIG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIg d2hpbGUgYSBub3QteWV0LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0 IGl0LgorCitoZWFwX3BydW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWlu IG1lbWJlcnMgdG8gYSBzaW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhl IGZpcnN0IGxpdmUgdHVwbGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2Yg YSBsaXZlIEhPVC1pbmRleGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19o b3RfaW5kZXhlZCkKK3NvIGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0 aWxsIGZpbmRzIGEgd2Fsa2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1Qg bWF5IGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZl Y3ljbGUKK3JldXNlcyB0aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlz IG5vIG5ldyBvbi1kaXNrIGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0t LS0tLS0tLS0tLS0tLQorCitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3Rh bGUgaW5kZXggZW50cmllcy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBp cyBkcml2ZW4gYnkgcHJ1bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBh IGNoYWluIGlzCitmdWxseSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWlu IC8gaGVhcF9wcnVuZV9jaGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBh bmQgcmUtcG9pbnRzIHRoZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUu CitSZS1wb2ludGluZyBhIHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5 IHdhbGtlciBzdGlsbCByZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRl ciB0aGUgZXhjbHVzaXZlIGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mg c2Vjb25kIHBhc3MgKGxhenlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJl LXBvaW50CityZWRpcmVjdHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVz dWFsIExQX0RFQUQgLT4gTFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhP VC1pbmRleGVkIGNvbGxhcHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJy aWVzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZp dm9yCitzdHViIGlzIGRlbGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhh dCBhbiBpbmRleC1vbmx5IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBh bmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRy aWVzIChlbmZvcmNlZCBpbiBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIg cmVjb3JkZXJzLCBhbmQKK2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwor YW1jaGVjayBhbmQgc3RhdGlzdGljcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2ZXJp ZnlfaGVhcGFtIHRyZWF0cyB0aGUgSE9ULWluZGV4ZWQgYXJ0aWZhY3RzIGFzIGxlZ2l0aW1h dGU6IGEgbGl2ZQorSEVBUF9JTkRFWEVEX1VQREFURUQgaGVhcC1vbmx5IHR1cGxlIHdob3Nl IGxpbmUgcG9pbnRlciBpcyBwcmVzZXJ2ZWQsIGFuZAorbXVsdGlwbGUgTFBfUkVESVJFQ1Rz IGZvcndhcmRpbmcgdG8gb25lIGxpdmUgdHVwbGUuCisKK1N0YXRpc3RpY3M6IHBnX3N0YXRf YWxsX3RhYmxlcy5uX3R1cF9ob3RfaW5kZXhlZF91cGQgY291bnRzIEhPVC1pbmRleGVkCit1 cGRhdGVzOyBwZ19zdGF0X2FsbF9pbmRleGVzLm5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRj aGVkIC8gX3NraXBwZWQgY291bnQKK3Blci1pbmRleCByZWNoZWNrIG91dGNvbWVzOyBhbmQg cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSByZXBvcnRzCitwZXItcmVsYXRpb24g SE9ULWluZGV4ZWQgY2hhaW4gY291bnRzLgorCisKK0xvZ2ljYWwgcmVwbGljYXRpb24KKy0t LS0tLS0tLS0tLS0tLS0tLS0KKworQSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgYSByZXBsaWNh LWlkZW50aXR5IGF0dHJpYnV0ZSBvbiBhIHN1YnNjcmliZXIgbGVhdmVzIGEKK3N0YWxlIGlu ZGV4IGxlYWY7IHRoZSBhcHBseSB3b3JrZXIncyByZXBsaWNhLWlkZW50aXR5IGxvb2t1cHMg dG9sZXJhdGUgdGhhdAorb25seSB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJlIGNv dmVyZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkuICBUaGUKK3Blci1zdWJzY3JpcHRpb24g aG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uIChwZ19zdWJzY3JpcHRpb24uc3ViaG90aW5k ZXhlZG9uYXBwbHksCitvZmYgLyBzdWJzZXRfb25seSAvIGFsd2F5czsgc3Vic2V0X29ubHkg aXMgdGhlIGRlZmF1bHQpIGNvbnRyb2xzIHRoaXM6CitIZWFwVXBkYXRlSG90QWxsb3dhYmxl IGNvbnN1bHRzIEdldEhvdEluZGV4ZWRBcHBseU1vZGUgb24gdGhlIGFwcGx5IHBhdGggYW5k CitmYWxscyBiYWNrIHRvIG5vbi1IT1Qgd2hlbiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIGFy ZSBub3QgZXhhY3RseSB0aGUgcHJpbWFyeQora2V5IChvZmYpIG9yIG5vdCBhIHN1YnNldCBv ZiBpdCAoc3Vic2V0X29ubHkpLgorCisKK1JlY292ZXJ5CistLS0tLS0tLQorCitIT1QtaW5k ZXhlZCB1cGRhdGVzIGFuZCB0aGUgcHJ1bmUvY29sbGFwc2UgdXNlIHRoZSBleGlzdGluZyBo ZWFwIFVQREFURSBhbmQKK3BydW5lL2ZyZWV6ZSBXQUwgcmVjb3Jkcywgc28gY3Jhc2ggcmVj b3ZlcnkgcmVwbGF5cyB0aGVtIHdpdGggbm8gbmV3IHJlY29yZAordHlwZXMuICBzcmMvdGVz dC9yZWNvdmVyeS90LzA1NF9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbCBidWlsZHMgYSBjaGFp biwKK2NyYXNoZXMgd2l0aG91dCBhIGNoZWNrcG9pbnQgKGZvcmNpbmcgV0FMIHJlZG8pLCBh bmQgdmVyaWZpZXMgdGhlIGNoYWluIHdhbGssCit2ZXJpZnlfaGVhcGFtLCBhbmQgdmFjdXVt IHJlY2xhbWF0aW9uIGFmdGVyIHJlc3RhcnQsIHdpdGgKK3dhbF9jb25zaXN0ZW5jeV9jaGVj a2luZyA9ICdhbGwnIGNvbXBhcmluZyBlYWNoIHJlcGxheWVkIHBhZ2UgdG8gaXRzIEZQSS4K KworCitBZHZlcnNhcmlhbCB0ZXN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgZXhlcmNpc2Vz IHRoZSBjYXNlcyB0aGUKK2ludmFyaWFudCBtdXN0IHNhdGlzZnkgdW5kZXIgY29uY3VycmVu Y3k6IGtleSBjeWNsaW5nIChYLT5ZLT5YKSwgYWJvcnRlZAorSE9ULWluZGV4ZWQgdXBkYXRl cywgY29uY3VycmVudCB1bmlxdWUgaW5zZXJ0cyBhZ2FpbnN0IGEgZnJlZWQvdGFrZW4ga2V5 LAorc25hcHNob3Qtc2FmZSByZWNsYWltIG9mIHN0YWxlIGxlYXZlcywgYW5kIHJlYWRlciBj b25zaXN0ZW5jeSBhY3Jvc3MgYQorY29uY3VycmVudCBwcnVuZS9jb2xsYXBzZS4KKworCiBB cHBlbmRpY2VzCiAtLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMKaW5kZXggYTIzMTQ0NTkyZWEuLmU1ZmFkNTlmZGNjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtNDYxLDE1ICs0NjEsNDkgQEAgRXhlY0luc2VydEluZGV4 VHVwbGVzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWluZGV4VW5jaGFuZ2Vk ID0gKGZsYWdzICYgRUlJVF9JU19VUERBVEUpID8KIAkJCWluZGV4SW5mby0+aWlfSW5kZXhV bmNoYW5nZWQgOiBmYWxzZTsKIAotCQlzYXRpc2ZpZXNDb25zdHJhaW50ID0KLQkJCWluZGV4 X2luc2VydChpbmRleFJlbGF0aW9uLCAvKiBpbmRleCByZWxhdGlvbiAqLwotCQkJCQkJIHZh bHVlcywJLyogYXJyYXkgb2YgaW5kZXggRGF0dW1zICovCi0JCQkJCQkgaXNudWxsLAkvKiBu dWxsIGZsYWdzICovCi0JCQkJCQkgdHVwbGVpZCwJLyogdGlkIG9mIGhlYXAgdHVwbGUgKi8K LQkJCQkJCSBoZWFwUmVsYXRpb24sCS8qIGhlYXAgcmVsYXRpb24gKi8KLQkJCQkJCSBjaGVj a1VuaXF1ZSwJLyogdHlwZSBvZiB1bmlxdWVuZXNzIGNoZWNrIHRvIGRvICovCi0JCQkJCQkg aW5kZXhVbmNoYW5nZWQsCS8qIFVQREFURSB3aXRob3V0IGxvZ2ljYWwgY2hhbmdlPyAqLwot CQkJCQkJIGluZGV4SW5mbyk7CS8qIGluZGV4IEFNIG1heSBuZWVkIHRoaXMgKi8KKwkJLyoK KwkJICogQSBmcmVzaCBlbnRyeSBwbGFudGVkIGhlcmUgdW5kZXIgYSBIT1QtaW5kZXhlZCB1 cGRhdGUgcG9pbnRzIGF0IHRoZQorCQkgKiBuZXcgaGVhcC1vbmx5IHR1cGxlIGl0c2VsZiAo dHVwbGVpZCksIG5vdCBhdCB0aGUgY2hhaW4ncyByb290IHRoZQorCQkgKiB3YXkgZXZlcnkg b3RoZXIgaW5kZXggZW50cnkgZG9lcyAtLSB0aGF0IHBvc2l0aW9uYWwgZGlzdGluY3Rpb24g aXMKKwkJICogd2hhdCBsZXRzIHRoZSByZWFkIHNpZGUganVkZ2Ugc3RhbGVuZXNzIGZyb20g dGhlIGNyb3NzZWQtYXR0cmlidXRlCisJCSAqIGJpdG1hcCB3aXRob3V0IGEgdmFsdWUgcmVj aGVjayAoc2VlIGhvdF9pbmRleGVkLmgpLiAgQSBiaXRtYXAgc2NhbgorCQkgKiBjb21iaW5l cyB0d28gaW5kZXhlcycgVElEIHNldHMgYXQgcmF3IGJsb2NrK29mZnNldCBncmFudWxhcml0 eQorCQkgKiBiZWZvcmUgZWl0aGVyIHNpZGUgdG91Y2hlcyB0aGUgaGVhcCwgc28gYW4gdW5y ZWxhdGVkLCB1bmNoYW5nZWQKKwkJICogaW5kZXgncyByb290LXBvaW50aW5nIGVudHJ5IGZv ciB0aGlzIHNhbWUgcm93IHdpbGwgbm90IGFncmVlIHdpdGgKKwkJICogdGhpcyBlbnRyeSdz IG9mZnNldCwgYW5kIEJpdG1hcEFuZC9CaXRtYXBPciBjYW4gc2lsZW50bHkgZHJvcCBhCisJ CSAqIG1hdGNoaW5nIHJvdy4gIEZsYWcgdGhlIGNvcHkgb2YgdHVwbGVpZCBoYW5kZWQgdG8g dGhpcyBpbmRleCdzCisJCSAqIGluc2VydCAobmV2ZXIgdGhlIHNsb3QncyBvd24gdHRzX3Rp ZCwgd2hpY2ggb3RoZXIgaW5kZXhlcyBpbiB0aGlzCisJCSAqIHNhbWUgbG9vcCAtLSBhbmQg dGhlIGNhbGxlciAtLSBzdGlsbCBuZWVkIHVuZmxhZ2dlZCkgc28gZXZlcnkKKwkJICogYW1n ZXRiaXRtYXAgaW1wbGVtZW50YXRpb24gY2FuIHJlY29nbml6ZSB0aGUgaGF6YXJkIGZyb20g dGhlIFRJRAorCQkgKiBhbG9uZSBhbmQgZmFsbCBiYWNrIHRvIGEgcGFnZS1sZXZlbCBiaXRt YXAgY29udHJpYnV0aW9uIGluc3RlYWQgb2YKKwkJICogYW4gZXhhY3Qgb25lOyBzZWUgSXRl bVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZyBpbiBpdGVtcHRyLmguCisJCSAqLworCQlpZiAo KGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFy aXppbmcpCisJCXsKKwkJCUl0ZW1Qb2ludGVyRGF0YSBzaXVfdGlkID0gKnR1cGxlaWQ7CisK KwkJCUl0ZW1Qb2ludGVyU2V0U0lVTWF5YmVTdGFsZSgmc2l1X3RpZCk7CisKKwkJCXNhdGlz Zmllc0NvbnN0cmFpbnQgPQorCQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLCAvKiBp bmRleCByZWxhdGlvbiAqLworCQkJCQkJCSB2YWx1ZXMsCS8qIGFycmF5IG9mIGluZGV4IERh dHVtcyAqLworCQkJCQkJCSBpc251bGwsCS8qIG51bGwgZmxhZ3MgKi8KKwkJCQkJCQkgJnNp dV90aWQsCS8qIHRpZCBvZiBoZWFwIHR1cGxlLCBTSVUtZmxhZ2dlZCAqLworCQkJCQkJCSBo ZWFwUmVsYXRpb24sCS8qIGhlYXAgcmVsYXRpb24gKi8KKwkJCQkJCQkgY2hlY2tVbmlxdWUs CS8qIHR5cGUgb2YgdW5pcXVlbmVzcyBjaGVjayB0byBkbyAqLworCQkJCQkJCSBpbmRleFVu Y2hhbmdlZCwJLyogVVBEQVRFIHdpdGhvdXQgbG9naWNhbCBjaGFuZ2U/ICovCisJCQkJCQkJ IGluZGV4SW5mbyk7CS8qIGluZGV4IEFNIG1heSBuZWVkIHRoaXMgKi8KKwkJfQorCQllbHNl CisJCQlzYXRpc2ZpZXNDb25zdHJhaW50ID0KKwkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxh dGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KKwkJCQkJCQkgdmFsdWVzLAkvKiBhcnJheSBv ZiBpbmRleCBEYXR1bXMgKi8KKwkJCQkJCQkgaXNudWxsLAkvKiBudWxsIGZsYWdzICovCisJ CQkJCQkJIHR1cGxlaWQsCS8qIHRpZCBvZiBoZWFwIHR1cGxlICovCisJCQkJCQkJIGhlYXBS ZWxhdGlvbiwJLyogaGVhcCByZWxhdGlvbiAqLworCQkJCQkJCSBjaGVja1VuaXF1ZSwJLyog dHlwZSBvZiB1bmlxdWVuZXNzIGNoZWNrIHRvIGRvICovCisJCQkJCQkJIGluZGV4VW5jaGFu Z2VkLAkvKiBVUERBVEUgd2l0aG91dCBsb2dpY2FsIGNoYW5nZT8gKi8KKwkJCQkJCQkgaW5k ZXhJbmZvKTsJLyogaW5kZXggQU0gbWF5IG5lZWQgdGhpcyAqLwogCiAJCS8qCiAJCSAqIElm IHRoZSBpbmRleCBoYXMgYW4gYXNzb2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludCwgY2hl Y2sgdGhhdC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3RpZGJpdG1hcC5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvdGlkYml0bWFwLmMKaW5kZXggZjFmOTI1Y2IxM2IuLmYzZmFm NTFlNGI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRtYXAuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy90aWRiaXRtYXAuYwpAQCAtMzYyLDYgKzM2MiwyNSBAQCB0 Ym1fZnJlZV9zaGFyZWRfYXJlYShkc2FfYXJlYSAqZHNhLCBkc2FfcG9pbnRlciBkcCkKICAq CiAgKiBJZiByZWNoZWNrIGlzIHRydWUsIHRoZW4gdGhlIHJlY2hlY2sgZmxhZyB3aWxsIGJl IHNldCBpbiB0aGUKICAqIFRCTUl0ZXJhdGVSZXN1bHQgd2hlbiBhbnkgb2YgdGhlc2UgdHVw bGVzIGFyZSByZXBvcnRlZCBvdXQuCisgKgorICogQSBUSUQgbWF5IGNhcnJ5IHRoZSBTSVUg Im1heS1iZS1zdGFsZSIgbWFya2VyIChJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFnLAor ICogc2VlIHN0b3JhZ2UvaXRlbXB0ci5oKTogYSBIT1QtaW5kZXhlZCAoc2VsZWN0aXZlIGlu ZGV4IHVwZGF0ZSkgZnJlc2ggZW50cnkKKyAqIHBvaW50cyBhdCBhIG1pZC1jaGFpbiBoZWFw LW9ubHkgdHVwbGUgcmF0aGVyIHRoYW4gYXQgdGhlIGNoYWluIHJvb3QgdGhlIHdheQorICog ZXZlcnkgb3RoZXIgaW5kZXggZW50cnkgZm9yIHRoYXQgcm93IGRvZXMuICBCZWNhdXNlIEJp dG1hcEFuZC9CaXRtYXBPcgorICogaW50ZXJzZWN0L3VuaW9uIFRJRCBzZXRzIGhlcmUgYXQg YmxvY2srb2Zmc2V0IGdyYW51bGFyaXR5IGJlZm9yZSB0aGUgaGVhcAorICogaXMgZXZlciBj b25zdWx0ZWQsIGFuIHVucmVsYXRlZCB1bmNoYW5nZWQgaW5kZXgncyByb290LXBvaW50aW5n IGVudHJ5IGZvcgorICogdGhlIHNhbWUgcm93IHdvdWxkIG5vdCBhZ3JlZSB3aXRoIHN1Y2gg YW4gZW50cnkncyBvZmZzZXQsIGFuZCBhbiBleGFjdC1tb2RlCisgKiBpbnRlcnNlY3Rpb24g Y291bGQgc2lsZW50bHkgZHJvcCBhIG1hdGNoaW5nIHJvdy4gIFdoZW5ldmVyIHdlIHNlZSB0 aGUgZmxhZworICogd2UgdGhlcmVmb3JlIGFkZCB0aGUgd2hvbGUgcGFnZSBhcyBsb3NzeSBp bnN0ZWFkIG9mIHRoZSBleGFjdCBvZmZzZXQ6IGEKKyAqIGxvc3N5IHBhZ2Ugc3Vydml2ZXMg YW55IEFORC9PUiBhZ2FpbnN0IGFuIGV4YWN0LW1vZGUgcGFnZSAoc2VlCisgKiB0Ym1faW50 ZXJzZWN0X3BhZ2UpIGFuZCBmb3JjZXMgYSByZWNoZWNrLCBzbyBCaXRtYXBIZWFwU2NhbiBy ZXNvbHZlcyB0aGUKKyAqIGNoYWluIGFuZCB0aGUgdGFibGUgQU0ncyBoZWFwLXNpZGUgc3Rh bGVuZXNzIHRlc3QgbWFrZXMgdGhlIGZpbmFsIGNhbGwuCisgKgorICogSGFuZGxpbmcgdGhp cyBoZXJlIC0tIGF0IHRoZSBzaW5nbGUgY2hva2UgcG9pbnQgZXZlcnkgYW1nZXRiaXRtYXAg ZnVubmVscworICogZXhhY3QgaGVhcCBUSURzIHRocm91Z2ggLS0gbWVhbnMgbm8gaW5kZXgg YWNjZXNzIG1ldGhvZCBuZWVkcyB0byBrbm93IGFib3V0CisgKiBIT1QtaW5kZXhlZCBjaGFp bnM6IGNvcmUgQU1zLCBjb250cmliIEFNcyAoYmxvb20pLCBhbmQgb3V0LW9mLXRyZWUgQU1z IGFyZQorICogYWxsIGNvcnJlY3QgYXV0b21hdGljYWxseSwgYW5kIGEgVElEIHRoYXQgbmV2 ZXIgY2FycmllcyB0aGUgZmxhZyB0YWtlcyB0aGUKKyAqIGlkZW50aWNhbCBwYXRoIGl0IGFs d2F5cyBkaWQuCiAgKi8KIHZvaWQKIHRibV9hZGRfdHVwbGVzKFRJREJpdG1hcCAqdGJtLCBj b25zdCBJdGVtUG9pbnRlckRhdGEgKnRpZHMsIGludCBudGlkcywKQEAgLTM3NCwxMCArMzkz LDI2IEBAIHRibV9hZGRfdHVwbGVzKFRJREJpdG1hcCAqdGJtLCBjb25zdCBJdGVtUG9pbnRl ckRhdGEgKnRpZHMsIGludCBudGlkcywKIAlmb3IgKGludCBpID0gMDsgaSA8IG50aWRzOyBp KyspCiAJewogCQlCbG9ja051bWJlciBibGsgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KHRpZHMgKyBpKTsKLQkJT2Zmc2V0TnVtYmVyIG9mZiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKHRpZHMgKyBpKTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKIAkJaW50CQkJd29yZG51 bSwKIAkJCQkJYml0bnVtOwogCisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgZnJlc2ggZW50 cnkncyBUSUQgbXVzdCBub3QgYmUgdHJ1c3RlZCBhdCBleGFjdAorCQkgKiBvZmZzZXQgZ3Jh bnVsYXJpdHkgaGVyZSAoc2VlIHRoZSBmdW5jdGlvbiBoZWFkZXIpLiAgVGVzdCB0aGUgcmF3 CisJCSAqIFRJRCAtLSBiZWZvcmUgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIgc3RyaXBz IHRoZSBtYXJrZXIgLS0gYW5kCisJCSAqIGlmIHNldCwgZGVncmFkZSB0aGUgd2hvbGUgcGFn ZSB0byBsb3NzeSBhbmQgbW92ZSBvbi4KKwkJICovCisJCWlmICh1bmxpa2VseShJdGVtUG9p bnRlcklzU0lVTWF5YmVTdGFsZSh0aWRzICsgaSkpKQorCQl7CisJCQl0Ym1fYWRkX3BhZ2Uo dGJtLCBibGspOworCQkJLyogdGJtX2FkZF9wYWdlIG1heSBoYXZlIGxvc3NpZmllZCBwYWdl czsgZm9yY2UgYSBmcmVzaCBsb29rdXAgKi8KKwkJCWN1cnJibGsgPSBJbnZhbGlkQmxvY2tO dW1iZXI7CisJCQljb250aW51ZTsKKwkJfQorCisJCW9mZiA9IEl0ZW1Qb2ludGVyR2V0T2Zm c2V0TnVtYmVyKHRpZHMgKyBpKTsKKwogCQkvKiBzYWZldHkgY2hlY2sgdG8gZW5zdXJlIHdl IGRvbid0IG92ZXJydW4gYml0IGFycmF5IGJvdW5kcyAqLwogCQlpZiAob2ZmIDwgMSB8fCBv ZmYgPiBUQk1fTUFYX1RVUExFU19QRVJfUEFHRSkKIAkJCWVsb2coRVJST1IsICJ0dXBsZSBv ZmZzZXQgb3V0IG9mIHJhbmdlOiAldSIsIG9mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL3BhZ2UvaXRlbXB0ci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9wYWdlL2l0 ZW1wdHIuYwppbmRleCA1NDY4NzRlYmM1Zi4uM2M1NzUwMmI5MTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvcGFnZS9pdGVtcHRyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9wYWdlL2l0ZW1wdHIuYwpAQCAtNTIsMjAgKzUyLDI4IEBAIEl0ZW1Qb2ludGVyQ29t cGFyZShjb25zdCBJdGVtUG9pbnRlckRhdGEgKmFyZzEsIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqYXJnMikKIHsKIAkvKgogCSAqIFVzZSBJdGVtUG9pbnRlckdldHtPZmZzZXQsQmxvY2t9 TnVtYmVyTm9DaGVjayB0byBhdm9pZCBhc3NlcnRpbmcKLQkgKiBpcF9wb3NpZCAhPSAwLCB3 aGljaCBtYXkgbm90IGJlIHRydWUgZm9yIGEgdXNlci1zdXBwbGllZCBUSUQuCisJICogaXBf cG9zaWQgIT0gMCwgd2hpY2ggbWF5IG5vdCBiZSB0cnVlIGZvciBhIHVzZXItc3VwcGxpZWQg VElELiAgU3RyaXAKKwkgKiB0aGUgU0lVIG1heS1iZS1zdGFsZSBiaXQgKHNlZSBJdGVtUG9p bnRlclNJVU1heWJlU3RhbGVGbGFnIGluCisJICogaXRlbXB0ci5oKSBzbyB0d28gVElEcyBu YW1pbmcgdGhlIHNhbWUgKGJsb2NrLCBvZmZzZXQpIGFsd2F5cyBjb21wYXJlCisJICogZXF1 YWwgcmVnYXJkbGVzcyBvZiB3aGljaCBvbmUsIGlmIGVpdGhlciwgaGFwcGVucyB0byBjYXJy eSBpdCAtLSB0aGUKKwkgKiBiaXQgaXMgYSBoaW50IHRvIGEgaGFuZGZ1bCBvZiBiaXRtYXAt c2NhbiBjYWxsIHNpdGVzLCBub3QgcGFydCBvZiBhCisJICogVElEJ3MgaWRlbnRpdHkgZm9y IG9yZGVyaW5nL2VxdWFsaXR5IHB1cnBvc2VzLiAgSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJT dHJpcAorCSAqIGxlYXZlcyB0aGUgcmVzZXJ2ZWQgc2VudGluZWwgdmFsdWVzIChTcGVjVG9r ZW5PZmZzZXROdW1iZXIsCisJICogTW92ZWRQYXJ0aXRpb25zT2Zmc2V0TnVtYmVyKSB1bnRv dWNoZWQsIHNpbmNlIHRob3NlIGFscmVhZHkgaGF2ZSB0aGUKKwkgKiBzYW1lIGJpdCBzZXQg YXMgcGFydCBvZiB0aGVpciBvd24gZW5jb2RpbmcuCiAJICovCiAJQmxvY2tOdW1iZXIgYjEg PSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyTm9DaGVjayhhcmcxKTsKIAlCbG9ja051bWJl ciBiMiA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXJOb0NoZWNrKGFyZzIpOworCU9mZnNl dE51bWJlciBvMSA9IEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyU3RyaXAoSXRlbVBvaW50ZXJH ZXRPZmZzZXROdW1iZXJOb0NoZWNrKGFyZzEpKTsKKwlPZmZzZXROdW1iZXIgbzIgPSBJdGVt UG9pbnRlck9mZnNldE51bWJlclN0cmlwKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9D aGVjayhhcmcyKSk7CiAKIAlpZiAoYjEgPCBiMikKIAkJcmV0dXJuIC0xOwogCWVsc2UgaWYg KGIxID4gYjIpCiAJCXJldHVybiAxOwotCWVsc2UgaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyTm9DaGVjayhhcmcxKSA8Ci0JCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJO b0NoZWNrKGFyZzIpKQorCWVsc2UgaWYgKG8xIDwgbzIpCiAJCXJldHVybiAtMTsKLQllbHNl IGlmIChJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soYXJnMSkgPgotCQkJIEl0 ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhhcmcyKSkKKwllbHNlIGlmIChvMSA+ IG8yKQogCQlyZXR1cm4gMTsKIAllbHNlCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9pdGVtcHRyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2l0ZW1w dHIuaAppbmRleCA4YjMzOTJkYmVmZS4uN2I3NDY5OTg5NjIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvaXRlbXB0ci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaXRl bXB0ci5oCkBAIC02OSw2ICs2OSw2NSBAQCB0eXBlZGVmIEl0ZW1Qb2ludGVyRGF0YSAqSXRl bVBvaW50ZXI7CiAjZGVmaW5lIE1vdmVkUGFydGl0aW9uc09mZnNldE51bWJlciAweGZmZmQK ICNkZWZpbmUgTW92ZWRQYXJ0aXRpb25zQmxvY2tOdW1iZXIJSW52YWxpZEJsb2NrTnVtYmVy CiAKKy8qCisgKiBTSVUgKHNlbGVjdGl2ZSBpbmRleCB1cGRhdGUgLyBIT1QtaW5kZXhlZCkg Im1heS1iZS1zdGFsZSIgbWFya2VyIGJpdC4KKyAqCisgKiBTZXQgT05MWSBvbiBhIFRJRCBz dG9yZWQgaW5zaWRlIGFuIElOREVYIFRVUExFIGJ5IGEgSE9ULWluZGV4ZWQgdXBkYXRlJ3MK KyAqIGZyZXNoIGVudHJ5IC0tIG5ldmVyIG9uIGEgaGVhcCB0dXBsZSdzIG93biB0X2N0aWQs IGFuZCBuZXZlciBvbiBhIHBsYWluCisgKiBJdGVtUG9pbnRlciB2YWx1ZSBwYXNzZWQgYXJv dW5kIHRoZSBleGVjdXRvci90YWJsZSBBTSAodGhvc2Ugc3RpbGwgbWVhbgorICogZXhhY3Rs eSB3aGF0IHRoZXkgYWx3YXlzIGhhdmUpLiAgU3VjaCBhbiBlbnRyeSBwb2ludHMgYXQgYSBu b24tcm9vdCwKKyAqIGhlYXAtb25seSBjaGFpbiBtZW1iZXIgcmF0aGVyIHRoYW4gYXQgdGhl IGNoYWluJ3Mgcm9vdCB0aGUgd2F5IGV2ZXJ5CisgKiBvdGhlciBpbmRleCBlbnRyeSBkb2Vz LCBzbyBhIGJpdG1hcCBzY2FuIG11c3Qgbm90IHRydXN0IGEgcmF3IG9mZnNldC0KKyAqIGxl dmVsIG1hdGNoIGFnYWluc3QgaXQ6IEJpdG1hcEFuZC9CaXRtYXBPciBpbnRlcnNlY3QgdHdv IGluZGV4ZXMnIFRJRAorICogc2V0cyBhdCBibG9jaytvZmZzZXQgZ3JhbnVsYXJpdHksIGFu ZCB0aGlzIGVudHJ5J3Mgb2Zmc2V0IHdpbGwgbm90IGFncmVlCisgKiB3aXRoIGFuIHVucmVs YXRlZCwgdW5jaGFuZ2VkIGluZGV4J3MgZW50cnkgZm9yIHRoZSBzYW1lIGxvZ2ljYWwgcm93 IChzZWUKKyAqIHRoZSBIT1QtaW5kZXhlZCBkZXNpZ24gbm90ZXMgZm9yIHRoZSBmdWxsIGZh bHNlLW5lZ2F0aXZlIHNjZW5hcmlvKS4gIEEKKyAqIGNhbGxlciB0aGF0IGZpbmRzIHRoaXMg Yml0IHNldCBvbiBhIGhlYXAtaXRlbSBUSUQgbXVzdCBmYWxsIGJhY2sgdG8gYQorICogcGFn ZS1sZXZlbCAobG9zc3kpIGJpdG1hcCBjb250cmlidXRpb24gaW5zdGVhZCBvZiBhbiBleGFj dCBvbmUsIGZvcmNpbmcKKyAqIHRoZSBleGlzdGluZyBoZWFwLXNpZGUgY3Jvc3NlZC1hdHRy aWJ1dGUgcmVjaGVjayB0byBtYWtlIHRoZSBmaW5hbCBjYWxsLgorICoKKyAqIEJpdCAxNCBp cyBmcmVlIGF0IGV2ZXJ5IHN1cHBvcnRlZCBCTENLU1o6IE1heE9mZnNldE51bWJlciBuZWVk cyBhdCBtb3N0CisgKiAxNCBiaXRzIChCTENLU1o9MzJLQiwgdGhlIGxhcmdlc3QgY29uZmln dXJhYmxlIGJsb2NrIHNpemUpIHRvIHJlcHJlc2VudAorICogZXZlcnkgbGVnYWwgb2Zmc2V0 LCBsZWF2aW5nIGJpdHMgMTQtMTUgdW51c2VkIGJ5IHRoZSByZWFsIG9mZnNldCB2YWx1ZTsK KyAqIGJpdCAxNSBpcyBsZWZ0IGFsb25lIGJlY2F1c2UgaXQgaXMgc2V0IGluIGJvdGggb2Yg dGhlIHNlbnRpbmVscyBhYm92ZQorICogKFNwZWNUb2tlbk9mZnNldE51bWJlciwgTW92ZWRQ YXJ0aXRpb25zT2Zmc2V0TnVtYmVyKSwgYW5kIHN0YXlpbmcgY2xlYXIKKyAqIG9mIHRoYXQg bmVpZ2hib3Job29kIGF2b2lkcyBldmVyIGhhdmluZyB0byByZWFzb24gYWJvdXQgdGhlIGlu dGVyYWN0aW9uLgorICogbmJ0cmVlIHNlcGFyYXRlbHkgb3ZlcmxvYWRzIHRoZSB0b3AgNCBi aXRzIG9mIGEgKnBpdm90IG9yIHBvc3RpbmcqIHR1cGxlJ3MKKyAqIG93biB0X3RpZCAoQlRf U1RBVFVTX09GRlNFVF9NQVNLLCBnYXRlZCBieSBJTkRFWF9BTFRfVElEX01BU0sgaW4gdF9p bmZvKQorICogdG8gbWVhbiBzb21ldGhpbmcgZWxzZSBlbnRpcmVseSAtLSB0aGlzIGJpdCBp cyBuZXZlciByZWFkIG9yIHNldCBvbiB0aGF0CisgKiBmaWVsZDsgaXQgb25seSBldmVyIGFw cGxpZXMgdG8gYSBnZW51aW5lIGhlYXAtcm93IFRJRCAoaW5jbHVkaW5nIGVhY2gKKyAqIGlu ZGl2aWR1YWwgZW50cnkgb2YgYSBwb3N0aW5nIGxpc3QncyBoZWFwLVRJRCBhcnJheSwgd2hp Y2ggYXJlIG9yZGluYXJ5CisgKiBUSURzIGRlc3BpdGUgbGl2aW5nIGluc2lkZSBhIHBvc3Rp bmcgdHVwbGUpLgorICoKKyAqIElNUE9SVEFOVDogbmV2ZXIgbWFzayB0aGlzIGJpdCBvZmYg dW5jb25kaXRpb25hbGx5LiAgQm90aCBzZW50aW5lbHMgYWJvdmUKKyAqIChTcGVjVG9rZW5P ZmZzZXROdW1iZXIgPSAweGZmZmUsIE1vdmVkUGFydGl0aW9uc09mZnNldE51bWJlciA9IDB4 ZmZmZCkKKyAqIGFscmVhZHkgaGF2ZSBiaXQgMTQgc2V0IGFzIHBhcnQgb2YgdGhlaXIgb3du IHZhbHVlOyBibGluZGx5IGNsZWFyaW5nIGl0CisgKiB3b3VsZCBjb3JydXB0IHRoZW0gaW50 byBhbiB1bnJlY29nbml6ZWQgb2Zmc2V0ICh0aGlzIHdhcyBjYXVnaHQgYnkgdGhlCisgKiBp c29sYXRpb24gc3VpdGU6IHBhcnRpdGlvbi1rZXktdXBkYXRlIC8gTUVSR0UgdGVzdHMgc2ls ZW50bHkgc3RvcHBlZAorICogZGV0ZWN0aW5nIGEgY29uY3VycmVudGx5LW1vdmVkIHR1cGxl KS4gIEEgZmxhZ2dlZCByZWFsIG9mZnNldCBpcyBhbHdheXMKKyAqIHdlbGwgYmVsb3cgdGhl IHNlbnRpbmVsIHJhbmdlIGV2ZW4gYXQgdGhlIGxhcmdlc3QgY29uZmlndXJhYmxlIEJMQ0tT WgorICogKHdvcnN0IGNhc2UgMHg2MDAwIGF0IEJMQ0tTWj0zMktCLCB2cy4gc2VudGluZWxz IGF0IDB4ZmZmZC8weGZmZmUpLCBzbworICogSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJTdHJp cCBvbmx5IGNsZWFycyB0aGUgYml0IHdoZW4gdGhlIHJhdyB2YWx1ZSBpcworICogYmVsb3cg dGhhdCByYW5nZTsgYSBzZW50aW5lbCBwYXNzZXMgdGhyb3VnaCB1bmNoYW5nZWQuCisgKi8K KyNkZWZpbmUgSXRlbVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZwkoKE9mZnNldE51bWJlcikg KDEgPDwgMTQpKQorCisjZGVmaW5lIEl0ZW1Qb2ludGVyT2Zmc2V0TnVtYmVyTWFzawkoKE9m ZnNldE51bWJlcikgfkl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcpCisKKy8qCisgKiBJ dGVtUG9pbnRlck9mZnNldE51bWJlclN0cmlwCisgKgkJU3RyaXAgdGhlIFNJVSBtYXktYmUt c3RhbGUgYml0IGZyb20gYSByYXcgaXBfcG9zaWQgdmFsdWUsIFVOTEVTUyB0aGF0CisgKgkJ dmFsdWUgaXMgb25lIG9mIHRoZSByZXNlcnZlZCBzZW50aW5lbHMgKFNwZWNUb2tlbk9mZnNl dE51bWJlciwKKyAqCQlNb3ZlZFBhcnRpdGlvbnNPZmZzZXROdW1iZXIpLCB3aGljaCBtdXN0 IHBhc3MgdGhyb3VnaCB1bnRvdWNoZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgT2Zmc2V0TnVt YmVyCitJdGVtUG9pbnRlck9mZnNldE51bWJlclN0cmlwKE9mZnNldE51bWJlciByYXcpCit7 CisJaWYgKHJhdyA+PSBNb3ZlZFBhcnRpdGlvbnNPZmZzZXROdW1iZXIpCS8qIGNvdmVycyBi b3RoIHNlbnRpbmVscyAqLworCQlyZXR1cm4gcmF3OworCXJldHVybiAoT2Zmc2V0TnVtYmVy KSAocmF3ICYgSXRlbVBvaW50ZXJPZmZzZXROdW1iZXJNYXNrKTsKK30KKwogCiAvKiAtLS0t LS0tLS0tLS0tLS0tCiAgKgkJc3VwcG9ydCBmdW5jdGlvbnMKQEAgLTEwOCw3ICsxNjcsMTEg QEAgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihjb25zdCBJdGVtUG9pbnRlckRhdGEgKnBv aW50ZXIpCiAKIC8qCiAgKiBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2sKLSAq CQlSZXR1cm5zIHRoZSBvZmZzZXQgbnVtYmVyIG9mIGEgZGlzayBpdGVtIHBvaW50ZXIuCisg KgkJUmV0dXJucyB0aGUgb2Zmc2V0IG51bWJlciBvZiBhIGRpc2sgaXRlbSBwb2ludGVyLCBJ TkNMVURJTkcgdGhlIFNJVQorICoJCW1heS1iZS1zdGFsZSBiaXQgaWYgc2V0LiAgT25seSBh cHByb3ByaWF0ZSBmb3IgY29kZSB0aGF0IGV4cGxpY2l0bHkKKyAqCQl3YW50cyB0aGUgcmF3 IHN0b3JlZCB2YWx1ZSAoZS5nLiBiaXRtYXAtc2NhbiBjb2RlIGRlY2lkaW5nIHdoZXRoZXIg dG8KKyAqCQl0cnVzdCBhbiBleGFjdCBtYXRjaCk7IGFueXRoaW5nIHRoYXQgd2lsbCB1c2Ug dGhlIHJlc3VsdCB0byBsb2NhdGUgYQorICoJCWxpbmUgcG9pbnRlciBvbiBhIHBhZ2UgbXVz dCB1c2UgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIgaW5zdGVhZC4KICAqLwogc3RhdGlj IGlubGluZSBPZmZzZXROdW1iZXIKIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVj ayhjb25zdCBJdGVtUG9pbnRlckRhdGEgKnBvaW50ZXIpCkBAIC0xMTgsMTMgKzE4MSw0NSBA QCBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soY29uc3QgSXRlbVBvaW50ZXJE YXRhICpwb2ludGVyKQogCiAvKgogICogSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIKLSAq CQlBcyBhYm92ZSwgYnV0IHZlcmlmaWVzIHRoYXQgdGhlIGl0ZW0gcG9pbnRlciBsb29rcyB2 YWxpZC4KKyAqCQlBcyBhYm92ZSwgYnV0IHZlcmlmaWVzIHRoYXQgdGhlIGl0ZW0gcG9pbnRl ciBsb29rcyB2YWxpZCwgQU5EIHN0cmlwcworICoJCXRoZSBTSVUgbWF5LWJlLXN0YWxlIGJp dCAoc2VlIEl0ZW1Qb2ludGVyU0lVTWF5YmVTdGFsZUZsYWcpIHNvIGV2ZXJ5CisgKgkJb3Jk aW5hcnkgY29uc3VtZXIgLS0gYW55dGhpbmcgdGhhdCB0dXJucyB0aGlzIGludG8gYSBwYWdl IGxvb2t1cCwgYQorICoJCWNvbXBhcmlzb24gYWdhaW5zdCBhbm90aGVyIFRJRCwgb3IgYSB2 YWx1ZSBoYW5kZWQgYmFjayB0byBhIGNhbGxlcgorICoJCXRoYXQgcHJlZGF0ZXMgdGhpcyBi aXQncyBleGlzdGVuY2UgLS0ga2VlcHMgc2VlaW5nIGV4YWN0bHkgdGhlIHJlYWwKKyAqCQlv ZmZzZXQgaXQgYWx3YXlzIGhhcy4gIE9ubHkgdGhlIGhhbmRmdWwgb2YgY2FsbCBzaXRlcyB0 aGF0IG5lZWQgdG8KKyAqCQlub3RpY2UgdGhlIGZsYWcgKGN1cnJlbnRseTogZWFjaCBhbWdl dGJpdG1hcCBpbXBsZW1lbnRhdGlvbikgdXNlCisgKgkJSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXJOb0NoZWNrIC8gSXRlbVBvaW50ZXJJc1NJVU1heWJlU3RhbGUgaW5zdGVhZC4KICAq Lwogc3RhdGljIGlubGluZSBPZmZzZXROdW1iZXIKIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqcG9pbnRlcikKIHsKIAlBc3NlcnQoSXRlbVBv aW50ZXJJc1ZhbGlkKHBvaW50ZXIpKTsKLQlyZXR1cm4gSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXJOb0NoZWNrKHBvaW50ZXIpOworCXJldHVybiBJdGVtUG9pbnRlck9mZnNldE51bWJl clN0cmlwKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyTm9DaGVjayhwb2ludGVyKSk7Cit9 CisKKy8qCisgKiBJdGVtUG9pbnRlcklzU0lVTWF5YmVTdGFsZQorICoJCVRydWUgaWZmIHRo aXMgaGVhcC1yb3cgVElEIChhcyBzdG9yZWQgaW4gYW4gaW5kZXggdHVwbGUpIHdhcworICoJ CWZsYWdnZWQgYnkgYSBIT1QtaW5kZXhlZCBmcmVzaC1lbnRyeSBpbnNlcnQgYXMgcG9pbnRp bmcgYXQgYQorICoJCW5vbi1yb290IGNoYWluIG1lbWJlcjsgc2VlIEl0ZW1Qb2ludGVyU0lV TWF5YmVTdGFsZUZsYWcuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSXRlbVBvaW50ZXJJ c1NJVU1heWJlU3RhbGUoY29uc3QgSXRlbVBvaW50ZXJEYXRhICpwb2ludGVyKQoreworCXJl dHVybiAocG9pbnRlci0+aXBfcG9zaWQgJiBJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFn KSAhPSAwOworfQorCisvKgorICogSXRlbVBvaW50ZXJTZXRTSVVNYXliZVN0YWxlCisgKgkJ U2V0IHRoZSBTSVUgbWF5LWJlLXN0YWxlIGJpdCBvbiBhIGhlYXAtcm93IFRJRCB0aGF0IHdp bGwgYmUgc3RvcmVkCisgKgkJaW4gYW4gaW5kZXggdHVwbGUuICBNdXN0IG9ubHkgYmUgY2Fs bGVkIG9uIGEgZ2VudWluZSBoZWFwIFRJRCwgbm90CisgKgkJb24gYSByZXB1cnBvc2VkIG5i dHJlZSBwaXZvdC9wb3N0aW5nIHRfdGlkLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0l0 ZW1Qb2ludGVyU2V0U0lVTWF5YmVTdGFsZShJdGVtUG9pbnRlckRhdGEgKnBvaW50ZXIpCit7 CisJQXNzZXJ0KHBvaW50ZXIpOworCXBvaW50ZXItPmlwX3Bvc2lkIHw9IEl0ZW1Qb2ludGVy U0lVTWF5YmVTdGFsZUZsYWc7CiB9CiAKIC8qCi0tIAoyLjUwLjEKCg== --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0006-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0006-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiYTgzY2FkNzlkNjQyZDlmNmRlN2I5MmJiOWE4YzA4YzYyN2YyNGRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA2 LzEwXSBDb2xsYXBzZSBkZWFkIEhPVC1pbmRleGVkIGNoYWlucyB0byB4aWQtZnJlZSBzdHVi cwogb24gcHJ1bmUvdmFjdXVtCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBwbGFudHMgaW5kZXgg ZW50cmllcyB0aGF0IHBvaW50IGF0IG1pZC1jaGFpbiBoZWFwLW9ubHkKdHVwbGVzLCBzbyBh IGRlYWQgY2hhaW4gbWVtYmVyIGNhbm5vdCBzaW1wbHkgYmUgcmVtb3ZlZDogYSBub3QteWV0 LXN3ZXB0IGluZGV4CmVudHJ5IG1heSBzdGlsbCBhcnJpdmUgYXQgaXQsIGFuZCB0aGUgcGVy LWhvcCBtb2RpZmllZC1hdHRycyBiaXRtYXAgb24gaXQgaXMKd2hhdCBhIHJlYWRlciB1bmlv bnMgdG8ganVkZ2Ugc3RhbGVuZXNzLgoKVGVhY2ggcHJ1bmUgdG8gY29sbGFwc2UgYSBkZWFk IGNoYWluIHByZWZpeCBpbnRvIHhpZC1mcmVlIGZvcndhcmRpbmcgc3R1YnM6CmVhY2ggcHJl c2VydmVkIGRlYWQga2V5IHR1cGxlIGlzIHJld3JpdHRlbiBpbiBwbGFjZSB0byBhIHN0dWIg KGZyb3plbiwKbmF0dHMgPT0gMCwgSEVBUF9JTkRFWEVEX1VQREFURUQsIGZvcndhcmRpbmcg dmlhIHRfY3RpZC5vZmZudW0pIHRoYXQga2VlcHMgaXRzCnNlZ21lbnQncyBtb2RpZmllZC1h dHRycyBiaXRtYXAsIGFuZCBhIG1lbWJlciB3aG9zZSBhdHRyaWJ1dGVzIGFyZSB3aG9sbHkK c3Vic3VtZWQgYnkgbGF0ZXIgaG9wcyBpcyByZWNsYWltZWQgaW5zdGVhZC4gIFJlYWRlcnMg c3RlcCB0aHJvdWdoIHN0dWJzCnRyYW5zcGFyZW50bHkgYW5kIHN0aWxsIGNyb3NzIGV2ZXJ5 IHN1cnZpdmluZyBob3AncyBiaXRtYXAuICBUaGUgY29sbGFwc2UgYmFjawp0byBjbGFzc2lj IEhPVCBpcyBkcml2ZW4gYnkgcHJ1bmU6IG9uY2UgYSBjaGFpbiBpcyBmdWxseSBkZWFkLCBh IGxhdGVyIHBydW5lCihoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9jaGFpbl9maW5k X2xpdmUpIHJlY2xhaW1zIGl0cyBtZW1iZXJzIGFuZApyZS1wb2ludHMgdGhlIHJvb3QgcmVk aXJlY3Qgc3RyYWlnaHQgYXQgdGhlIGZpcnN0IGxpdmUgdHVwbGUuICBWQUNVVU0ncyBpbmRl eApjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgbGVhdmVzOyBpdHMgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcwp0aGUgdXN1YWwgTFBfREVBRCAtPiBMUF9VTlVT RUQgY29udmVyc2lvbiBhbmQgbGVhdmVzIHRoZSBIT1QtaW5kZXhlZCBjb2xsYXBzZQp0byBw cnVuZS4KClRoZSBjb2xsYXBzZSByZXVzZXMgdGhlIGV4aXN0aW5nIHBydW5lL2ZyZWV6ZSBX QUwgdmlhIGFuIHhsaHBfcHJ1bmVfaXRlbXMKc3ViLXJlY29yZCBjYXJyeWluZyB0aGUgKG9m ZnNldCwgZm9yd2FyZCkgc3R1YiBwYWlyczsgbm8gbmV3IHJlY29yZCB0eXBlIGlzCmludHJv ZHVjZWQuICBBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVkIHN0dWIgKG9y IGEgcmVkaXJlY3QgdGhhdApmb3J3YXJkcyBpbnRvIGEgbGl2ZSBIT1QtaW5kZXhlZCBtZW1i ZXIpIGlzIGtlcHQgbm9uLWFsbC12aXNpYmxlIHNvIGluZGV4LW9ubHkKc2NhbnMgaGVhcC1m ZXRjaCB0aHJvdWdoIHRoZSBjaGFpbjsgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxl IHJlY29nbml6ZXMKYm90aCB0aGUgcmVkaXJlY3QtdG8tU0lVIGFuZCB0aGUgc3R1YiBjYXNl IGV4cGxpY2l0bHkuCgpDby1hdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+ CkNvLWF1dGhvcmVkLWJ5OiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuZGJvc3NhcnRAZ21haWwu Y29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgIDEw ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICB8IDY2OCArKysr KysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgICB8ICA5MiArKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYyB8ICAzNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAg fCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgIHwgIDE5 ICstCiA2IGZpbGVzIGNoYW5nZWQsIDc3MSBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5ZWQ3MDI0 ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJlZXplX3Bs YW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZzZXROdW1i ZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9n UmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlkb19wcnVu ZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxhbnMsICZm cnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJlY3RlZCwK IAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAgJm51bnVz ZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCwK KwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9IG5yZWRp cmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3BydW5lID0g bnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBuc3R1YnMg PiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICovCiAJCUFz c2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxhZ3MgJiBY TEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5yZWRpcmVj dGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVzZWQsIG51 bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJc3R1YnMs IG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBwID0gMDsg cCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRl eCBmZGRkZDIzMDM1Yi4uZWUzYjM0MGM1YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFt LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAiYWNjZXNz L2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5o IgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJlZGlyZWN0 ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlpbnQJCQlu ZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQluZnJvemVu OwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0byBiZSBj aGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxlc1BlclBh Z2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisKKwkv KgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJz OiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMgcmV3cml0 dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJzIHRoYXQg cHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4KKwkgKi8K KwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsKKwogCUhl YXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJLyoKQEAg LTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfcHJ1bmFi bGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0aWMgdm9p ZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJ CQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2ZmbnVtLAog CQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBfcHJ1bmVf cmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJ CQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVt LAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVt YmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNl dE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1h bChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0YXRpYyB2 b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNl dE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZl c19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwogCiBzdGF0 aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAtNDM5LDYg KzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlw cnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlw cnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+bnVudXNl ZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVuID0gMDsK IAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5X2l0ZW1z ID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhlIHR1cGxl J3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNzaW5nLgog CQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0 ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIExQ X05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVBUF9JTkRF WEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2libGUKKwkJ ICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsgYW5kIHRo ZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdtZW50IGl0 IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgpIHdv dWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5nIHdvdWxk IHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMuCisJCSAq IFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2ZWQ7IHRo ZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFyZW50bHkg dG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhlZEhlYWRl cklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJdHVwLnRf ZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwog CQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsKQEAgLTY3 NywxOCArNzEwLDM4IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAoSGVhcFR1 cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAobGlrZWx5 KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJCUhlYXBU dXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkg ICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOworCQkJLyoKKwkJCSAqIEEgZGVhZCBo ZWFwLW9ubHkgdHVwbGUgdGhhdCBjYXJyaWVzIGEgc3RhbGUgYnRyZWUgbGVhZiBvZiBpdHMK KwkJCSAqIG93biAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzID4gMCkgaXMgYSBIT1Qt aW5kZXhlZCBjaGFpbgorCQkJICogbWVtYmVyIG5vdCByZWFjaGVkIGJ5IGFueSBjaGFpbiB3 YWxrIChhbiBhYm9ydGVkCisJCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBzdWItY2hh aW4sIG9yIGEgbWVtYmVyIHdob3NlIGxpdmUgcm9vdAorCQkJICogc3RvcHBlZCB0aGUgd2Fs aykuICBNYXJrIGl0IExQX0RFQUQgaW5zdGVhZCBvZiByZWNsYWltaW5nIGl0CisJCQkgKiBv dXRyaWdodDogdGhhdCBwaW5zIHRoZSBzbG90IGFnYWluc3QgcmV1c2UgYW5kIGFkZHMgaXQg dG8gdGhlCisJCQkgKiBkZWFkLWl0ZW1zIGFycmF5IHNvIGFtYnVsa2RlbGV0ZSBzd2VlcHMg dGhlIHN0YWxlIGxlYWYgYW5kIGEKKwkJCSAqIGxhdGVyIHZhY3V1bSByZWNsYWltcyB0aGUg TFAuCisJCQkgKgorCQkJICogT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBjbGFzc2ljLUhPVCBj YXNlIHVwc3RyZWFtIGhhcyBhbHdheXMKKwkJCSAqIGhhbmRsZWQgaGVyZTogYSBkZWFkIGhl YXAtb25seSB0dXBsZSB3aXRoIG5vIGxlYWYgb2YgaXRzIG93bgorCQkJICogc2hvdWxkIGhh dmUgYmVlbiByZWFjaGVkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgcHJ1bmluZyBpdHMKKwkJ CSAqIEhPVCBjaGFpbi4gIElmIGl0IGlzIG5vdCBIb3RVcGRhdGVkLCBpdCBpcyBhIGxlZ2l0 aW1hdGUKKwkJCSAqIHN0YW5kYWxvbmUgZGVhZCBoZWFwLW9ubHkgdHVwbGUgKGUuZy4gYW4g YWJvcnRlZCB1cGRhdGUpIGFuZAorCQkJICogY2FuIGJlIHJlY2xhaW1lZDsgaWYgaXQgKmlz KiBIb3RVcGRhdGVkLCBzb21ldGhpbmcgaXMgd3JvbmcgLS0KKwkJCSAqIHByZXNlcnZlIGl0 IGFuZCBlcnJvciBvdXQgcmF0aGVyIHRoYW4gc2lsZW50bHkgZGVzdHJveSB0aGUKKwkJCSAq IGV2aWRlbmNlLgorCQkJICovCisJCQlIZWFwVHVwbGVIZWFkZXJBZHZhbmNlQ29uZmxpY3RI b3Jpem9uKGh0dXAsCisJCQkJCQkJCQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92 ZWQpOworCQkJaWYgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVE KSAhPSAwICYmCisJCQkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMoaHR1cCkgPiAwKQorCQkJ CWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1 ZSk7CisJCQllbHNlIGlmIChsaWtlbHkoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZCho dHVwKSkpCiAJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwg dHJ1ZSk7Ci0JCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBUaGlzIHR1cGxl IHNob3VsZCd2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBhcyBwYXJ0IG9mCi0JCQkJ ICogYSBIT1QgY2hhaW4sIHNvIHNvbWV0aGluZydzIHdyb25nLiAgVG8gcHJlc2VydmUgZXZp ZGVuY2UsCi0JCQkJICogd2UgZG9uJ3QgZGFyZSB0byByZW1vdmUgaXQuICBXZSBjYW5ub3Qg bGVhdmUgYmVoaW5kIGEgREVBRAorCQkJCSAqIFRoaXMgdHVwbGUgc2hvdWxkJ3ZlIGJlZW4g cHJvY2Vzc2VkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgYQorCQkJCSAqIEhPVCBjaGFpbiwg c28gc29tZXRoaW5nJ3Mgd3JvbmcuICBUbyBwcmVzZXJ2ZSBldmlkZW5jZSwgd2UKKwkJCQkg KiBkb24ndCBkYXJlIHRvIHJlbW92ZSBpdC4gIFdlIGNhbm5vdCBsZWF2ZSBiZWhpbmQgYSBE RUFECiAJCQkJICogdHVwbGUgZWl0aGVyLCBiZWNhdXNlIHRoYXQgd2lsbCBjYXVzZSBWQUNV VU0gdG8gZXJyb3Igb3V0LgogCQkJCSAqIFRocm93aW5nIGFuIGVycm9yIHdpdGggYSBkaXN0 aW5jdCBlcnJvciBtZXNzYWdlIHNlZW1zIGxpa2UKIAkJCQkgKiB0aGUgbGVhc3QgYmFkIG9w dGlvbi4KQEAgLTExNjMsNyArMTIxNiw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJl ZGlyZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3RhdGUubnVu dXNlZCA+IDA7CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uc3R1YnMg PiAwOwogCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3 ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEzMTgsOCBAQCBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJ aGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAogCQkJCQkJ CQkJcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJ cHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0ZS5ub3d1 bnVzZWQsIHByc3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNlZCwg cHJzdGF0ZS5udW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1 YnMpOwogCQl9CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM2Miw4IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkg IHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAg cHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0YXRlLm5v d3VudXNlZCwgcHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVz ZWQsIHByc3RhdGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywgcHJzdGF0 ZS5uc3R1YnMpOwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE1MDQsMTAxIEBAIGh0c3ZfZ2V0 X3ZhbGlkX3N0YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQpIHN0YXR1 czsKIH0KIAorLyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJRm9sbG93 IGEgSE9UIGNoYWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5nIG1lbWJl ci4KKyAqCisgKiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4gdGhhdCB3 YXMgY29sbGFwc2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBhbmQgYW55 IGVudHJ5LWJlYXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBfUkVESVJF Q1RzIHRvCisgKiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgSWYgdGhh dCB0dXBsZSBoYXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5kIGRpZWQs IHRoZSByZWRpcmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50IGZpcnN0 IGxpdmUKKyAqIHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5nIHRvIG9u ZSBsaXZlIHR1cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5lZWQgdGhl IGNoYWluJ3MgY3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAqIFdhbGtz IHRfY3RpZCBvbiB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBpbmcgREVB RCBtZW1iZXJzLCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgbm9u LURFQUQgKHN1cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9mZnNldE51 bWJlciBpZiB0aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3IgcnVucyBv ZmYgdGhlCisgKiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVjdXRlIHN0 YXRlLCBzbyBpdCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRlciBpbiB3 aGljaCBzaWJsaW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0aWMgT2Zm c2V0TnVtYmVyCitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRlICpwcnN0 YXRlLCBPZmZzZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBh Z2U7CisJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFn ZSk7CisJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJlciBzdXJ2 aXZvciA9IHN0YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1iZXIgKi8K KwlpbnQJCQlsb29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVt YmVyICYmIG9mZm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFnZUdldEl0 ZW1JZChwYWdlLCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhlYXBUdXBs ZUhlYWRlciBodHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRlbSBjYW5u b3QgYmUgYSBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1JZElzTm9y bWFsKGxwKSkKKwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoKKwkJICog QSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgbm9k ZSwgbm90IGEKKwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29yZHMgaXQg dW5jaGFuZ2VkIHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNvIGl0cyBo dHN2IHNsb3QgaXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAqIGZvcndh cmQgbGluayByYXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRyaXAgdGhl CisJCSAqIHZhbGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVkSGVhZGVy SXNTdHViKGh0dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndh cmQoaHR1cCk7CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4gSW52YWxp ZE9mZnNldE51bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0gaHRzdl9n ZXRfdmFsaWRfc3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0YXR1cyA9 PSBIRUFQVFVQTEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1iZXIgaXMg cmVjbGFpbWVkL3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJICogc3Rh cnRzIGF0IGl0cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2ZSBzdWNj ZXNzb3IKKwkJCSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJICovCisJ CQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJCUl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+YmxvY2sp CisJCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJdGVtUG9p bnRlckdldE9mZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9yID0gb2Zm bnVtOworCQl9CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVB RCkKKwkJeworCQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxvbmcgdG8g dGhlIHN1cnZpdmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBmb2xsb3dz IHRoZW0gKHdoaWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICogZGVhZCBw cmVmaXgpLiAgS2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFkdmFuY2Ug dGhlCisJCQkgKiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUg bGFzdCBERUFEIG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hv dFVwZGF0ZWQoaHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVw LT50X2N0aWQpICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZvcjsKKwkJ CW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0aGUgc3Vy dml2aW5nIHRhaWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsKKwkJfQor CisJCWlmICgrK2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1i ZXI7IC8qIGRlZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKworCXJldHVy biBJbnZhbGlkT2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lmaWVkIGxp bmUgcG9pbnRlciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBvaW50ZXIu CiAgKgpAQCAtMTUxOCw2ICsxNjY5LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVt YmVyIG1heG9mZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZudW0gPiBt YXhvZmYpCiAJCQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50bHkgdGhy b3VnaCBhIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJCSAqIGFu IGVhcmxpZXIgc3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxhY2VkIGEg ZGVhZAorCQkgKiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFkeSByZWNv cmRlZCAoYXMgdW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBpcyBub3Qg aXRzZWxmIGEgY2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndhcmQgbGlu ayByYXRoZXIgdGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJlbG93Lgor CQkgKi8KKwkJeworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51 bSk7CisKKwkJCWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhlYXBUdXBs ZUhlYWRlciBzaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHNs cCk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJCQkJewor CQkJCQkvKgorCQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWluL3htYXgg bGlua2FnZSBjYW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAgVHJ1c3Qg dGhlIHN0dWIncyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHByaW9yLXht YXggY2hlY2sgZm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAob3RoZXJ3 aXNlIHRoZSBjaGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZworCQkJCQkg KiBpdHMgdGFpbCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoc2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYgaXRlbSBp cyBhbHJlYWR5IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2FtZSBjaGFp biAqLwogCQlpZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVhazsKQEAg LTE2MjQsMTMgKzE4MDUsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4 b2ZmLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRpcmVjdGVk KHJvb3RscCkgJiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5kIGEgcmVk aXJlY3QgaXRlbSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ctb24KLQkJ ICogaXRlbS4gIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVhZCBzdWNj ZXNzb3Igb2YgYSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0aGUgcmVk aXJlY3QgaXRlbS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkgKiByZWRp cmVjdCBpdGVtIHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIK LQkJICogaW5kaWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBhc3QgdGhl IHJlZGlyZWN0OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBwcm9jZXNz ZWQgYnkgYSBzaWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVjdHMKKwkJ ICogb2YgYSBjb2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxp dmUgdHVwbGUpIG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxhcHNlZCBm dXJ0aGVyLiAgUmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hhaW4ncyBj dXJyZW50IGZpcnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhhdAorCQkg KiByZXNvbHZlcyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVwbGUuICBJ ZiBubyBzdXJ2aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFuZ2xpbmcg YW5kIGlzIHJlY2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlmIHRoZSBj YWxsZXIgYWxsb3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQgPSBJdGVt SWRHZXRSZWRpcmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhlYXBfcHJ1 bmVfY2hhaW5fZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9mZnNldE51 bWJlcklzVmFsaWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkKKwkJCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSk7CisJCQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0 ZSwgcm9vdG9mZm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisKIAkJaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSwgZmFs c2UpOwogCQlyZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTg1MSwxNDMgQEAgcHJvY2Vzc19j aGFpbjoKIAllbHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8qCi0JCSAq IFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBwb2ludGVy IExQX0RFQUQsIGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxlcyBpbiB0 aGUgY2hhaW4uCisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxpdmUgdHVw bGUgcmVtYWlucyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290IExQX0RF QUQgKG9yIExQX1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJCSAqIHJl Y2xhaW0gZWFjaCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbWVt YmVyIG1heQorCQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2ludGluZyBh dCBpdDogbWFyayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5lZCBhZ2Fp bnN0IHJldXNlIGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJICogbGV0 dGluZyBhbWJ1bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFjdXVtIHJl Y2xhaW0gdGhlCisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fy cnkgbm8gbGVhZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRvIExQX1VO VVNFRC4KIAkJICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3Rh dGUsIHJvb3RvZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3IgKGludCBp ID0gMTsgaSA8IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHBy c3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9p dGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCQlo ZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ld LCB0cnVlKTsKKwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0 ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyoKLQkJ ICogV2UgZm91bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0IHRoZSBy b290IGxpbmUgcG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVwbGUsIGFu ZCBtYXJrIGFzIHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRoYXQgd2Ug YXJlIGFibGUgdG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hhaW4gaGFz IGEgZGVhZCBwcmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENvbGxhcHNl CisJCSAqIGl0IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUgYml0bWFw LW92ZXJsYXAgcmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1lbWJlcnMg ZnJvbSB0aGUgbGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJICogbGF0 ZXJhdHRycyB0aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgb2YgdGhl IG1lbWJlcnMKKwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAgQSBkZWFk IGtleSB0dXBsZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5kZXggZW50 cmllcyBiZWNhdXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1dGUgYXQg aXRzIGhvcCAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkgLS0gaXMK KwkJICogZGlzcG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBldmVyeSBh dHRyaWJ1dGUgaXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVyIGhvcAor CQkgKiAoaXRzIGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZlcnkgaW5k ZXggZW50cnkgcG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28gbm8gbGl2 ZSBlbnRyeSByZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFEKSwgd2hp Y2ggbGV0cyB0aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1zdGFsZQor CQkgKiBsZWF2ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50ZXIuICBU aGlzIGxvc2VzIG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRlcnMgLS0g aXRzIGF0dHJpYnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUgc3Vydml2 aW5nIGxhdGVyIG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkgKgorCQkg KiAtIE90aGVyd2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hhbmdlZCBh Z2Fpbiwgc28gYSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDoga2VlcCBp dCBhcyBhbiB4aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5leHQgc3Vy dml2b3IsIHByZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFkIHBhdGgu CisJCSAqCisJCSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkgb2YgdGhl aXIgb3duIGFuZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vydml2b3Jz IGZvcndhcmQgcGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkgKiB0byB0 aGUgZmlyc3Qgc3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUgcGFnZSBz dGF5cworCQkgKiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRvIHRoZSBu ZXh0IHN1cnZpdm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRlciBjcm9z c2luZyB0aGUgY29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZpdmluZyBo b3AncyBiaXRtYXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxhdGVyCisJ CSAqIGNvbGxhcHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGluZyBleGlz dGluZyBzdHVicy4KIAkJICovCi0JCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0KHByc3Rh dGUsIHJvb3RvZmZudW0sIGNoYWluaXRlbXNbbmRlYWRjaGFpbl0sCi0JCQkJCQkJCSAgIEl0 ZW1JZElzTm9ybWFsKHJvb3RscCkpOwotCQlmb3IgKGludCBpID0gMTsgaSA8IG5kZWFkY2hh aW47IGkrKykKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZChwcnN0YXRlLCBjaGFpbml0 ZW1zW2ldLCB0cnVlKTsKKwkJT2Zmc2V0TnVtYmVyIGZpcnN0X2xpdmUgPSBjaGFpbml0ZW1z W25kZWFkY2hhaW5dOworCQlPZmZzZXROdW1iZXIgbmV4dF9zdXJ2aXZvciA9IGZpcnN0X2xp dmU7CisJCU9mZnNldE51bWJlciByb290X3RhcmdldDsKKwkJaW50CQkJcmVsbmF0dHMgPSBS ZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhwcnN0YXRlLT5yZWxhdGlvbik7CisJCXVp bnQ4CQlsYXRlcmF0dHJzWyhNYXhIZWFwQXR0cmlidXRlTnVtYmVyICsgNykgLyA4XTsKKwor CQkvKgorCQkgKiBsYXRlcmF0dHJzIGFjY3VtdWxhdGVzIGV2ZXJ5IHN1cnZpdmluZyBob3An cyBtb2RpZmllZCBhdHRyaWJ1dGVzLgorCQkgKiBTaXplIGl0IGZvciB0aGUgcmVsYXRpb24n cyBjdXJyZW50IG5hdHRzICh0aGUgbWF4aW11bSk7IGVhY2gKKwkJICogY29udHJpYnV0aW5n IHR1cGxlJ3MgYml0bWFwIGlzIGxvY2F0ZWQgYW5kIE9SLWVkIHVzaW5nIHRoYXQgdHVwbGUn cworCQkgKiB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyks IHNpbmNlIEFERCBDT0xVTU4gbWF5CisJCSAqIGhhdmUgZ3Jvd24gdGhlIHJlbGF0aW9uIHNp bmNlIHNvbWUgaG9wcyB3ZXJlIHdyaXR0ZW4uCisJCSAqLworCQltZW1zZXQobGF0ZXJhdHRy cywgMCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAoaW50IGkg PSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQ YWdlR2V0SXRlbUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxlSGVhZGVy IGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJ CWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkK KwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMo aHR1cCk7CisKKwkJCQkvKgorCQkJCSAqIEEgaG9wJ3Mgd3JpdGUtdGltZSBuYXR0cyBjYW4g bmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2VlZCB0aGUKKwkJCQkgKiByZWxhdGlvbidzIGN1cnJl bnQgbmF0dHMgKG5hdHRzIG9ubHkgZ3Jvd3MgdmlhIEFERCBDT0xVTU4pLgorCQkJCSAqIE9u IGEgY29ycnVwdCBwYWdlIGEgc3R1YidzIHVuYm91bmRlZCBzdGFzaGVkIG5hdHRzIChvciBh CisJCQkJICogY29ycnVwdCBsaXZlIHR1cGxlJ3MgbmF0dHMgZmllbGQpIGNvdWxkIG90aGVy d2lzZSBvdmVyZmxvdworCQkJCSAqIGxhdGVyYXR0cnMsIHdoaWNoIGlzIHNpemVkIGZvciBy ZWxuYXR0czsgY2xhbXAgZGVmZW5zaXZlbHkuCisJCQkJICovCisJCQkJQXNzZXJ0KGJtbmF0 dHMgPD0gcmVsbmF0dHMpOworCQkJCWlmIChibW5hdHRzID4gcmVsbmF0dHMpCisJCQkJCWJt bmF0dHMgPSByZWxuYXR0czsKKworCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihsYXRlcmF0 dHJzLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1cCwKKwkJ CQkJCQkJCQkJCQkJCSAgSXRlbUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJCQkJCSAg Ym1uYXR0cyksCisJCQkJCQkJCQkgIGJtbmF0dHMpOworCQkJfQorCQl9CisKKwkJLyogZGVh ZCBwcmVmaXg6IHJlY2xhaW0gc3VwZXJzZWRlZCBtZW1iZXJzLCBzdHViIHRoZSByZXN0ICov CisJCWZvciAoaW50IGkgPSBuZGVhZGNoYWluIC0gMTsgaSA+PSAxOyBpLS0pCisJCXsKKwkJ CWlmIChoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkKHBhZ2UsIGNoYWlu aXRlbXNbaV0pKQorCQkJeworCQkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IGNoYWluaXRlbXNbaV0pOworCQkJCUhlYXBUdXBsZUhlYWRlciBodHVwID0gKEhlYXBUdXBs ZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCQkJCWludAkJCWJtbmF0dHMgPSBI b3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyhodHVwKTsKKwkJCQljb25zdCB1aW50OCAqYXR0 cnM7CisKKwkJCQkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUgbGF0ZXJhdHRycycgZmlyc3Qg dXNlLiAqLworCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQlpZiAoYm1u YXR0cyA+IHJlbG5hdHRzKQorCQkJCQlibW5hdHRzID0gcmVsbmF0dHM7CisJCQkJYXR0cnMg PSBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1cCwKKwkJCQkJCQkJCQkJCQkgSXRl bUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJCQlpZiAo SG90SW5kZXhlZEJpdG1hcElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5hdHRzKSkK KwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgY2hhaW5p dGVtc1tpXSwgdHJ1ZSk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVuZV9yZWNv cmRfc3R1YihwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsKKwkJCQkJ bmV4dF9zdXJ2aXZvciA9IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdEluZGV4ZWRC aXRtYXBVbmlvbihsYXRlcmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJCQllbHNl CisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0s IHRydWUpOworCQl9CisKKwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOworCisJCS8q CisJCSAqIHJvb3QgLT4gZmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQgbm8tb3Ag cmVkaXJlY3Qgb24KKwkJICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlkSXNSZWRp cmVjdGVkKHJvb3RscCkgJiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkgPT0gcm9v dF90YXJnZXQpCisJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3Qo cHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3Jl ZGlyZWN0KHByc3RhdGUsIHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJCQkJICAg SXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVwbGVzIGlu IHRoZSBjaGFpbiBhcmUgbm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZvciAoaW50 IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzIwMzIsMzQg QEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkg KiBzZXBhcmF0ZWx5IGFzIGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8qCisJICog SWYgdGhlIHJlZGlyZWN0IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGxp dmUgdHVwbGUsIHRoZQorCSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0cmVlIGVu dHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRvIGEgdHVw bGUgd2l0aCBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5 CisJICogdGhlIHJlYWQgcGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2gg cmVxdWlyZXMgZmV0Y2hpbmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4gaW5kZXgt b25seSBzY2FuIHRydXN0cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJICogdGhh dCBmZXRjaC4gIFNvCisJICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYWxsLXZp c2libGUvYWxsLWZyb3plbiB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlzdHM7IGl0 IGJlY29tZXMgZWxpZ2libGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dlcHQKKwkg KiB0aGUgc3RhbGUgbGVhdmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0LgorCSAqLwor CWlmIChyZG9mZm51bSA+PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51bSA8PSBQ YWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRlbUlkCQl0 bHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKworCQlpZiAo SXRlbUlkSXNOb3JtYWwodGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRodHVwID0g KEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxwKTsKKwor CQkJaWYgKCh0aHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0g MCkKKwkJCXsKKwkJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQlw cnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQorCiAJQXNz ZXJ0KHByc3RhdGUtPm5yZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwogCXBy c3RhdGUtPnJlZGlyZWN0ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9mZm51bTsK IAlwcnN0YXRlLT5yZWRpcmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiArIDFdID0g cmRvZmZudW07CkBAIC0xNzM1LDYgKzIwNzcsNjUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVk aXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwog fQogCisvKgorICogUmVjb3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRlbiBpbiBw bGFjZSBhcyBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZv ciBzdHViIGZvcndhcmRpbmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3VyY2UgbXVz dCBiZSBhIGRlYWQgaGVhcC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3duIGJ0cmVl CisgKiBlbnRyaWVzIChhIGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNsYWltZWQg b3V0cmlnaHQ6IGEgc3RhbGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRocm91Z2gg aXQuICBSZXdyaXRpbmcgaXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRoZQorICog Zm9yd2FyZCBsaW5rIGFuZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0 bWFwIChzbyB0aGUgcmVhZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3aGlsZSBk cm9wcGluZyBpdHMgWElEcywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6ZS1zYWZl LgorICovCitzdGF0aWMgdm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVuZVN0YXRl ICpwcnN0YXRlLAorCQkJCQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXROdW1iZXIg Zm9yd2FyZCkKK3sKKwlBc3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKTsKKwlw cnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFzIHdpdGgg YSByZWRpcmVjdCB0byBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0aGUgcGFn ZSBtdXN0CisJICogbm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gd2hp bGUgYSBzdHViIGV4aXN0czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQgb3RoZXJ3 aXNlIHRydXN0IHRoZSBWTSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICogZmlsdGVy cyBhIG5vdy1zdGFsZSBlbnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4gIEEgc3R1 YidzCisJICogSEVBUF9YTUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2libGUgdG8g ZXZlcnkgc25hcHNob3QsIHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBtdXN0IG5l dmVyIGNvbnRhaW4uICBFbGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJICogcmVj bGFpbXMgdGhlIHN0dWIuCisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFs c2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2VydChwcnN0 YXRlLT5uc3R1YnMgPCBNYXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+c3R1YnNb cHJzdGF0ZS0+bnN0dWJzICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0 ZS0+bnN0dWJzICogMiArIDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMrKzsKKwor CS8qIFRoZSBkZWFkIGtleSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2FyZGVkOyBj b3VudCBpdCByZW1vdmVkLiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlwcnN0YXRl LT5oYXN0dXAgPSB0cnVlOworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5nIGNvbGxh cHNlLXN1cnZpdm9yIHN0dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4KKyAqCisg KiBFbmNvdW50ZXJlZCB3aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFkeSBob2xk cyBzdHVicyBmcm9tIGFuIGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIgaXMgcHJl c2VydmVkIChpdHMgYml0bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBhcworICog YSByZWFzb24gdGhlIHBhZ2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1m cm96ZW4uCisgKi8KK3N0YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRf bHBfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQorewor CUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUtPnByb2Nl c3NlZFtvZmZudW1dID0gdHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOworCisJcHJz dGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96 ZW4gPSBmYWxzZTsKK30KKwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBtYXJrZWQg ZGVhZCAqLwogc3RhdGljIHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjIxNyw1MiBA QCBoZWFwX3BydW5lX3JlY29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYmVyIG9mZm51bSwgYm9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRlZCsrOwog fQogCisKKy8qCisgKiBoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkCisg KgkJVHJ1ZSBpZmYgdGhlIExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxpdmUgSE9U LWluZGV4ZWQgKEhPVC9TSVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQIG11c3Qg YmUgcHJlc2VydmVkIHJhdGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VOVVNFRCwg YmVjYXVzZSBhIG5vdC15ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBvaW50IGF0 IGl0LgorICoKKyAqIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBpbmRleCBl bnRyeSBwb2ludGluZyBhdCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBUSUQuICBD bGFzc2ljIEhPVCdzIGludmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBubworICog ZXh0ZXJuYWwgcmVmZXJlbmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Igc3VjaCB0 dXBsZXM6IHVudGlsCisgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBpbmRleCBl bnRyeSwgYSByZWFkZXIgYXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZpbmQgYSB3 YWxrYWJsZSBob3AgYXQgdGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMgZGVhZCBt ZW1iZXJzCisgKiB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5IHRoaXMg cmVhc29uOyBhIGxpdmUgbWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2ltcGx5IG5v dCBiZSByZWNsYWltZWQgb3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAqCisgKiBF eGNsdWRlZCBmcm9tIHByZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFyZSBub3Qg TFBfTk9STUFMIChSRURJUkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBsZXMgd2l0 aG91dCBIRUFQX0lOREVYRURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVtYmVycyBu ZXZlcgorICogICAgIGhhZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVkKTsKKyAq ICAgLSB0dXBsZXMgd2l0aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBhIHJlYWwg Y2hhaW4gbWVtYmVyKTsKKyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMgKEhFQVBf WE1JTl9JTlZBTElEKTogbmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAgIGluZGV4 IGVudHJ5LCBzbyByZWNsYWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGljIGJvb2wK K2hlYXBfcHJ1bmVfaXRlbV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdlLCBPZmZz ZXROdW1iZXIgb2ZmbnVtKQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IG9mZm51bSk7CisJSGVhcFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1JZElzTm9y bWFsKGxwKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBI RUFQX0lOREVYRURfVVBEQVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJaWYg KChodHVwLT50X2luZm9tYXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJCXJldHVy biBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29yZCBhbiB1 bnVzZWQgbGluZSBwb2ludGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8KQEAgLTIw NDksOCArMjQ5Niw0NCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJl Y3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAqLwogCUFz c2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnByb2Nlc3Nl ZFtvZmZudW1dID0gdHJ1ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9yZWNvcmRf cmVkaXJlY3Q6IGlmIHRoaXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhPVC1zZWxl Y3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBzdGFsZSBi dHJlZQorCSAqIGVudHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0IG11c3Qg bm90IGJlIHJlcG9ydGVkCisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4gaW5kZXgt b25seSBzY2FuIHdvdWxkIG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQtYXR0cmli dXRlIGJpdG1hcCBjaGVjaykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBub3Qgb25s eSB3aGVuIHRoZQorCSAqIHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1c2UgYSBy ZS1wcnVuZSByZWNvcmRzIGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFzIHVuY2hh bmdlZC4KKwkgKi8KKwl7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUt PnBhZ2UsIG9mZm51bSk7CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCXsK KwkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKKwor CQkJaWYgKHJkb2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRvZmZudW0g PD0gUGFnZUdldE1heE9mZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsKKwkJCQlJ dGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZudW0pOwor CisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVI ZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0YXRlLT5w YWdlLCB0bHApOworCisJCQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRF WEVEX1VQREFURUQpICE9IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9hbGxfdmlz aWJsZSA9IGZhbHNlOworCQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsK KwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVyZm9ybSB0 aGUgYWN0dWFsIHBhZ2UgY2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoKS4KICAqCkBAIC0yMDY1LDE2ICsyNTQ4LDI3IEBAIHZvaWQKIGhlYXBfcGFnZV9w cnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJ CQkJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJ T2Zmc2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXROdW1iZXIg Km5vd3VudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNl ZCwgaW50IG51bnVzZWQsCisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJz KQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVt YmVyICpvZmZudW07CiAJSGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1JfQVNTRVJU U19PTkxZOwogCiAJLyogU2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUncyBzb21l dGhpbmcgdG8gZG8gKi8KLQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8 fCBudW51c2VkID4gMCk7CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAg fHwgbnVudXNlZCA+IDAgfHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1bmNhdGVf b25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2ludGVycyAq LworCS8qCisJICogSWYgJ2xwX3RydW5jYXRlX29ubHknLCB3ZSBjYW4gb25seSByZW1vdmUg YWxyZWFkeS1kZWFkIGxpbmUgcG9pbnRlcnMKKwkgKiBhbmQgY2Fubm90IHJlLXBvaW50IHJl ZGlyZWN0czogcmVwb2ludGluZyBtb3ZlcyB0aGUgdHVwbGUgYW4gaW5kZXgtb25seQorCSAq IHNjYW4gb3IgYSBjb25jdXJyZW50IGNoYWluIHdhbGsgZXhwZWN0cyB0byBmaW5kLCB3aGlj aCBuZWVkcyBhIGNsZWFudXAKKwkgKiBsb2NrIChzZWUgdGhlIGZpbGUgaGVhZGVyIGNvbW1l bnQpLiAgTm8gcHJvZHVjZXIgaW4gdGhpcyBzZXJpZXMgY2FsbHMKKwkgKiB3aXRoIGxwX3Ry dW5jYXRlX29ubHkgc2V0IGFuZCBhIG5vbnplcm8gbnJlZGlyZWN0ZWQgLS0gdmFjdXVtJ3Mg c2Vjb25kCisJICogcGFzcyAodGhlIGxwX3RydW5jYXRlX29ubHkgY2FsbGVyKSBuZXZlciBy ZS1wb2ludHMgYSByZWRpcmVjdCBpdHNlbGYsCisJICogbGVhdmluZyB0aGF0IHRvIGEgbGF0 ZXIgcHJ1bmUgdGhhdCBob2xkcyBhIGNsZWFudXAgbG9jayAtLSBzbyBrZWVwCisJICogdXBz dHJlYW0ncyBzdHJpY3RlciBhc3NlcnRpb24gcmF0aGVyIHRoYW4gdGhlIHdlYWtlciBvbmUg dGhpcyB3b3VsZAorCSAqIG90aGVyd2lzZSBuZWVkIHRvIGp1c3RpZnkuCisJICovCiAJQXNz ZXJ0KCFscF90cnVuY2F0ZV9vbmx5IHx8IChucmVkaXJlY3RlZCA9PSAwICYmIG5kZWFkID09 IDApKTsKIAogCS8qIFVwZGF0ZSBhbGwgcmVkaXJlY3RlZCBsaW5lIHBvaW50ZXJzICovCkBA IC0yMDg2LDYgKzI1ODAsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1 ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZyb21scCA9IFBhZ2VH ZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVkaXJlY3QgKHRoZSBM UCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBoYXJtbGVzcyBuby1v cC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0aGF0IHdhcworCQkg KiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSByb290IHN0aWxsIHJl c29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBzbyB0aGUgYXBwbHkg c3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5kIHJlcGxheS4KKwkJ ICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJdGVtSWRHZXRSZWRp cmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNpZmRlZiBVU0VfQVNT RVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjYwNCwxNiBAQCBoZWFwX3BhZ2Vf cHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJ CQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1JZElzTm9ybWFsKGZy b21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFn ZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVw KSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlzIG5vcm1hbGx5IHRo ZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9TSVUgY2hhaW4gY29s bGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25seQorCQkJICogbWVt YmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRvIHRoZSBsaXZlIHR1 cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNlIGlzIGFsbG93ZWQg d2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhFQVBfSU5ERVhF RF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBP bmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVE X1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEyOCwxMiArMjY0MSw1 NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3Ry dW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvb2ZmKTsKIAkJ QXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNOb3JtYWwodG9scCkp OwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgdG9scCk7 CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2aW5nIG1lbWJlcjog YSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBP bmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0KGZyb21scCwgdG9v ZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2aXZvciBzdHVicyBp biBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAqIG5hbWVzIGEgZGVh ZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUgZm9yd2FyZGluZyBz dHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlOX0lOVkFMSUR8SEVB UF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVEX1VQREFURUQgd2l0 aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMgYQorCSAqIHN0dWIg cmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBzbyBpdCByZW1haW5z IGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5kIHRfY3RpZC5vZmZu dW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRlbSdzIHN0b3JhZ2Ug KGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpbiB0aGUKKwkg KiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhlIGJpdG1hcCBzdXJ2 aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4KKwkgKi8KKwlvZmZu dW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsgaSsrKQorCXsKKwkJ T2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVtYmVyIGZvcndhcmQg PSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZik7 CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9uYXR0czsKKworCQlB c3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBUdXBsZUhlYWRlcikg UGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNlcnZlIHRoZSB0dXBs ZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0aGUgbmF0dHMKKwkJ ICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0cmFpbGluZyBtb2Rp ZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQsIGFuZCByZWFkZXJz IG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJICogcmVsYXRpb24n cyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVNTikuICBUaGUgc3R1 YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZCBsaW5rOyB0 aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwgc28gc3Rhc2ggdGhl IG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRoZQorCQkgKiBwcmlt YXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24gYm90aCBwYWdlcyks IHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8KKwkJYml0bWFwX25h dHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0dXAtPnRfaW5mb21h c2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElEOworCQl0dXAtPnRf aW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVEX1VQREFURUQ7CisJ CUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Qb2ludGVyU2V0T2Zm c2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdEluZGV4ZWRTdHViU2V0 Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8qIFVwZGF0ZSBhbGwg bm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2RlYWQ7CiAJZm9yIChp bnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjcwNSwyMyBAQCBoZWFw X3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29u bHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUgbmVjZXNzYXJ5IHdp dGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0ZW0sIHRob3VnaC4g KEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkgKiB0aGF0IHdvdWxk IGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikKKwkJICoKKwkJICog RXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdob3NlIGNoYWluIHJv b3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGludGVudGlvbmFsbHkg bWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBsZXMgbG9vcCBpbiBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBoZWFwX3BydW5lX3Jl Y29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAtb25seSAoaXQgd2Fz CisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBIRUFQX0lOREVYRURf VVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMgc3RpbGwgbGl2ZSwg c28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RFQUQgdW50aWwgYW1i dWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0gcmVjbGFpbXMKKwkJ ICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVtSWRIYXNTdG9yYWdl KGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7CiAJCQlodHVwID0g KEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwotCQkJQXNzZXJ0KCFI ZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2VydCghSGVhcFR1cGxl SGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+dF9pbmZvbWFzazIg JiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTIxNzcsNyArMjc0 NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBf dHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkKIAkJewotCQkJLyog U2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBzZWNvbmQgcGFzcyAq LworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBzZWNv bmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYmICFJdGVtSWRIYXNT dG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzU1LDggQEAgaGVhcF9w YWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5 LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVhZC4gIFRoaXMgaXMg b25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLiAg SWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBtYXJrX3VudXNlZF9u b3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtlZAotCQkJICogTFBf VU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJCQkgKiBMUF9VTlVT RUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBjaGFpbiBoYXMgYmVl bgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAwKQogCQkJewpAQCAt MjI2NCw2ICsyODMyLDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSkKIAkJ QXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2VydChJdGVtSWRIYXNT dG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0 SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0YXJnZXRzIHRoZSBm aXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICovCiAJCUFzc2VydChI ZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5kaWYKQEAgLTI1NjYs NyArMzEzNiw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBp bnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJl ZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFkLAotCQkJ CQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQkgIE9mZnNl dE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zmc2V0TnVtYmVyICpz dHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVjOwogCVhMb2dSZWNQ dHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTUyLDEwIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9wcnVuZV9p dGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRlYWRfaXRlbXM7CiAJ eGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVuZV9pdGVtcyBzdHVi X2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFn ZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8 IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5k ZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwogCWJvb2wJCWRvX3Nl dF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAJYm9vbAkJaGVh cF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzI0MywxNiBAQCBsb2dfaGVh cF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlzaXplb2YoT2Zmc2V0 TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkKKwl7CisJCXhscmVj LmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJCXN0dWJfaXRlbXMu bnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnN0dWJfaXRl bXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOworCQlYTG9n UmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXJb Ml0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlYTG9nUmVnaXN0ZXJC dWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZzZXROdW1iZXIpICog bmZyb3plbik7CkBAIC0yNjkyLDggKzMyNzUsMTcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0KG5yZWRpcmVjdGVk ID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVtcyBpbiAndW51c2Vk JyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8qCisJCSAqIFdpdGhv dXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVhZHktZGVhZCBsaW5l CisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBUaGUgbGF0dGVyIGhh cHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNsYWltcyBhIGNvbGxh cHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAqIHRoZSByb290IHJl ZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUgdW5kZXIgYW4KKwkJ ICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4ncyByZWFjaGFiaWxp dHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0X2xpdmUpLCBzbyBu byBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAqIGJhc2lzIG9uIHdo aWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBwb2ludGVycyB0bwor CQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0gMCk7CiAJfQogCVhM b2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwogCWlmIChUcmFuc2Fj dGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li5kYWI0YjViMWY4MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3IEBACiAKICNpbmNs dWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5j bHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nl c3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMgYm9vbCBsYXp5X3Zh Y3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgbGF6 eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGxh enlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJs a25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqZGVhZG9mZnNl dHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1idWZmZXIpOworCQkJ CQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIGJv b2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2NoZWNrX3dyYXBhcm91 bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGxhenlfY2xl YW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwK QEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJCQkJCQkg IE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJCSAgTlVMTCwgMCwK KwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwKTsKIAogCQkJRU5E X0NSSVRfU0VDVElPTigpOwpAQCAtMjY4Niw2ICsyNjg5LDcgQEAgbGF6eV92YWN1dW1faGVh cF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlTaXplCQlmcmVlc3BhY2U7CiAJCU9mZnNl dE51bWJlciBvZmZzZXRzW01heE9mZnNldE51bWJlcl07CiAJCWludAkJCW51bV9vZmZzZXRz OworCQlib29sCQlnb3RfY2xlYW51cF9sb2NrOwogCiAJCXZhY3V1bV9kZWxheV9wb2ludChm YWxzZSk7CiAKQEAgLTI3MDgsMTAgKzI3MTIsMjAgQEAgbGF6eV92YWN1dW1faGVhcF9yZWwo TFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKi8KIAkJdmlzaWJpbGl0eW1hcF9waW4odmFjcmVs LT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCi0JCS8qIFdlIG5lZWQgYSBub24tY2xlYW51 cCBleGNsdXNpdmUgbG9jayB0byBtYXJrIGRlYWRfaXRlbXMgdW51c2VkICovCi0JCUxvY2tC dWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkvKgorCQkgKiBTZXR0aW5n IGRlYWQgaXRlbXMgdW51c2VkIG5lZWRzIG9ubHkgYW4gZXhjbHVzaXZlIGxvY2suICBXZSBz dGlsbAorCQkgKiBwcmVmZXIgYSBjbGVhbnVwIGxvY2sgaGVyZSwgYXMgdGhlIGZpcnN0IHBh c3MgZG9lcywgYW5kIGZhbGwgYmFjayB0bworCQkgKiBhbiBleGNsdXNpdmUgbG9jayBpZiBv bmUgaXMgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gIFRoaXMgcGFzcworCQkgKiBvbmx5 IHR1cm5zIExQX0RFQUQgaXRlbXMgaW50byBMUF9VTlVTRUQ7IGl0IGRvZXMgTk9UIHJlY2xh aW0gYQorCQkgKiBjb2xsYXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4ncyBzdHVicyBvciByZS1w b2ludCBpdHMgcmVkaXJlY3RzIC0tCisJCSAqIHRoYXQgY2hhaW4tc3RydWN0dXJlIHJld3Jp dGUgKHdoaWNoIG1vdmVzIFRJRHMgY29uY3VycmVudCBzY2FucworCQkgKiBmb2xsb3csIGFu ZCBzbyBuZWVkcyBhIGNsZWFudXAgbG9jaykgaXMgbGVmdCB0byBhIGxhdGVyIHBydW5lLgor CQkgKi8KKwkJZ290X2NsZWFudXBfbG9jayA9IENvbmRpdGlvbmFsTG9ja0J1ZmZlckZvckNs ZWFudXAoYnVmKTsKKwkJaWYgKCFnb3RfY2xlYW51cF9sb2NrKQorCQkJTG9ja0J1ZmZlcihi dWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCWxhenlfdmFjdXVtX2hlYXBfcGFnZSh2 YWNyZWwsIGJsa25vLCBidWYsIG9mZnNldHMsCi0JCQkJCQkJICBudW1fb2Zmc2V0cywgdm1i dWZmZXIpOworCQkJCQkJCSAgbnVtX29mZnNldHMsIHZtYnVmZmVyLCBnb3RfY2xlYW51cF9s b2NrKTsKIAogCQkvKiBOb3cgdGhhdCB3ZSd2ZSB2YWN1dW1lZCB0aGUgcGFnZSwgcmVjb3Jk IGl0cyBhdmFpbGFibGUgc3BhY2UgKi8KIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsK QEAgLTI3NTcsNyArMjc3MSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcmVsKExWUmVsU3RhdGUg KnZhY3JlbCkKIHN0YXRpYyB2b2lkCiBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICBP ZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLCBpbnQgbnVtX29mZnNldHMsCi0JCQkJCSAgQnVm ZmVyIHZtYnVmZmVyKQorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgYm9vbCBnb3RfY2xlYW51 cF9sb2NrKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zm c2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CkBAIC0yNzgzLDcgKzI3 OTcsOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9j a051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBhbmQgbWFyayB0aGUgcGFnZSBh bGwtdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgY3JpdGljYWwgc2VjdGlvbiwKIAkgKiBlbmFi bGluZyBib3RoIGNoYW5nZXMgdG8gYmUgZW1pdHRlZCBpbiBhIHNpbmdsZSBXQUwgcmVjb3Jk LiBTaW5jZSB0aGUKIAkgKiB2aXNpYmlsaXR5IGNoZWNrcyBtYXkgcGVyZm9ybSBJL08gYW5k IGFsbG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0IGJlCi0JICogZG9uZSBvdXRzaWRlIHRoZSBj cml0aWNhbCBzZWN0aW9uLgorCSAqIGRvbmUgb3V0c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlv bi4gIEEgZGVmZXJyZWQgcmVjbGFpbSBsZWF2ZXMgYQorCSAqIG5vdC15ZXQtcmVtb3ZlZCBt ZW1iZXIgb24gdGhlIHBhZ2UsIHNvIHNraXAgdGhlIGNoZWNrIHdoZW4gYW55dGhpbmcgd2Fz CisJICogZGVmZXJyZWQuCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlz aWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAogCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0 LCB0cnVlLApAQCAtMjgxNSwxMyArMjgzMSwxMiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2Uo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvZmYpOwogCisJCS8qIEEgcmVj bGFpbWFibGUgaXRlbSBpcyBhIGNsYXNzaWMgTFBfREVBRCBsaW5lIHBvaW50ZXIuICovCiAJ CUFzc2VydChJdGVtSWRJc0RlYWQoaXRlbWlkKSAmJiAhSXRlbUlkSGFzU3RvcmFnZShpdGVt aWQpKTsKIAkJSXRlbUlkU2V0VW51c2VkKGl0ZW1pZCk7CiAJCXVudXNlZFtudW51c2VkKytd ID0gdG9mZjsKIAl9CiAKLQlBc3NlcnQobnVudXNlZCA+IDApOwotCiAJLyogQXR0ZW1wdCB0 byB0cnVuY2F0ZSBsaW5lIHBvaW50ZXIgYXJyYXkgbm93ICovCiAJUGFnZVRydW5jYXRlTGlu ZVBvaW50ZXJBcnJheShwYWdlKTsKIApAQCAtMjg1MSwxMiArMjg2NiwxMyBAQCBsYXp5X3Zh Y3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywg QnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB2bWZsYWdzICE9IDAgPyB2bWJ1ZmZlciA6IElu dmFsaWRCdWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncywKIAkJCQkJCQkJICBjb25mbGljdF94 aWQsCi0JCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJlZCAqLwor CQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVxdWlyZWQ6IHNlZSBiZWxv dyAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5VTEws IDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0ZWQgKi8K IAkJCQkJCQkJICBOVUxMLCAwLAkvKiBkZWFkICovCi0JCQkJCQkJCSAgdW51c2VkLCBudW51 c2VkKTsKKwkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQsCisJCQkJCQkJCSAgTlVMTCwgMCk7 IC8qIHN0dWJzICovCiAJfQogCiAJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMzY0NywxMCAr MzY2Myw0NCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAogCQkqbG9nZ2luZ19vZmZudW0gPSBvZmZudW07CiAJCWl0ZW1pZCA9 IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAotCQkvKiBVbnVzZWQgb3IgcmVkaXJl Y3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QgKi8KLQkJaWYgKCFJdGVtSWRJ c1VzZWQoaXRlbWlkKSB8fCBJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJLyogVW51 c2VkIGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0LiAqLworCQlpZiAoIUl0ZW1J ZElzVXNlZChpdGVtaWQpKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogUGxhaW4gcmVk aXJlY3RzIGFyZSBvZiBubyBpbnRlcmVzdCAodGhlIGNoYWluIG1lbWJlciB0aGV5IHBvaW50 IGF0CisJCSAqIGlzIGluc3BlY3RlZCBzZXBhcmF0ZWx5KSAtLSBleGNlcHQgYSByZWRpcmVj dCB0aGF0IGZvcndhcmRzIHRvIGEKKwkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbGl2 ZSB0dXBsZS4gIFN1Y2ggYSByZWRpcmVjdCBtYXkgc3RpbGwgYmUKKwkJICogcmVhY2hlZCBi eSBhIHN0YWxlIGluZGV4IGVudHJ5IHdob3NlIGtleSB0aGUgbGl2ZSB0dXBsZSBubyBsb25n ZXIKKwkJICogaG9sZHM7IGlmIHRoZSBwYWdlIHdlcmUgbWFya2VkIGFsbC12aXNpYmxlIGFu IGluZGV4LW9ubHkgc2NhbiB3b3VsZAorCQkgKiB0cnVzdCB0aGUgVk0sIHNraXAgdGhlIGhl YXAgZmV0Y2gsIGFuZCBzdXJmYWNlIHRoYXQgc3RhbGUga2V5LgorCQkgKiBLZWVwIHRoZSBw YWdlIG5vdC1hbGwtdmlzaWJsZSB1bnRpbCB0aGUgc3RhbGUgbGVhdmVzIGFyZSBzd2VwdCBh bmQKKwkJICogdGhlIHJlZGlyZWN0IHJlY2xhaW1lZC4gIFRoaXMgbWlycm9ycyB0aGUgZ3Vh cmQgaW4KKwkJICogaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QsIGFwcGxpZWQgaGVyZSBi ZWNhdXNlIFZBQ1VVTSdzIHNlY29uZAorCQkgKiBwYXNzIGNhbiBzZXQgYWxsLXZpc2libGUg YWZ0ZXIgcmVjbGFpbWluZyBvdGhlciBpdGVtcyBvbiB0aGUgcGFnZS4KKwkJICovCisJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJeworCQkJT2Zmc2V0TnVtYmVyIHJk b2ZmID0gSXRlbUlkR2V0UmVkaXJlY3QoaXRlbWlkKTsKKworCQkJaWYgKHJkb2ZmID49IEZp cnN0T2Zmc2V0TnVtYmVyICYmIHJkb2ZmIDw9IG1heG9mZikKKwkJCXsKKwkJCQlJdGVtSWQJ CXRscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgcmRvZmYpOworCisJCQkJaWYgKEl0ZW1JZElz Tm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0bHApOworCisJCQkJCWlmICgodGh0 dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCQkJCXsK KwkJCQkJCSphbGxfZnJvemVuID0gYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJCWJyZWFr OworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJY29udGludWU7CisJCX0KKwogCQlJdGVtUG9p bnRlclNldCgmKHR1cGxlLnRfc2VsZiksIGJsb2Nrbm8sIG9mZm51bSk7CiAKIAkJLyoKQEAg LTM2NzYsNiArMzcyNiwyNCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0 aChpdGVtaWQpOwogCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwp OwogCisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBp cyBhbiBMUF9OT1JNQUwgaXRlbSB0aGF0IGlzCisJCSAqIG5vdCBhIHJlYWwgdHVwbGU6IGl0 IGZvcndhcmRzIHRocm91Z2ggdGhlIGNoYWluIGFuZCBjYXJyaWVzIGEKKwkJICogcHJlc2Vy dmVkIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0aGF0IGEgcmVhZGVyIGFycml2aW5nIHZpYSBh IHN0YWxlCisJCSAqIGxlYWYgbXVzdCBzdGlsbCBjcm9zcy4gIEEgcGFnZSBob2xkaW5nIG9u ZSBtdXN0IHN0YXkgbm90LWFsbC12aXNpYmxlCisJCSAqIHNvIGluZGV4LW9ubHkgc2NhbnMg aGVhcC1mZXRjaCB0aHJvdWdoIHRoZSBjaGFpbiwgZXhhY3RseSBsaWtlIHRoZQorCQkgKiBy ZWRpcmVjdC10by1TSVUgY2FzZSBhYm92ZS4gIEEgc3R1YidzIGhlYWRlciBpcyBmcm96ZW4t aW52YWxpZAorCQkgKiAoSEVBUF9YTUlOX0lOVkFMSUQpLCBzbyB0aGUgdmlzaWJpbGl0eSBj aGVjayBiZWxvdyB3b3VsZCBhbHNvIGNsYXNzCisJCSAqIGl0IG5vdC1hbGwtdmlzaWJsZSAt LSBidXQgcmVjb2duaXplIGl0IGV4cGxpY2l0bHkgaGVyZSByYXRoZXIgdGhhbgorCQkgKiBy ZWx5aW5nIG9uIHRoYXQgc2lkZSBlZmZlY3QsIHNvIHRoZSBndWFyZCBjYW5ub3Qgc2lsZW50 bHkgbGFwc2UgaWYKKwkJICogdGhlIHN0dWIgZW5jb2RpbmcgZXZlciBjaGFuZ2VzLgorCQkg Ki8KKwkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIodHVwbGUudF9kYXRhKSkKKwkJewor CQkJKmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0K KwogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVtb3J5 ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwogCQlzd2l0Y2ggKEhlYXBU dXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oJnR1cGxlLCBidWYsICZkZWFkX2FmdGVyKSkK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggNzVhZTZmOWQz NzUuLjk3ZjkyNWRmMTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYwpAQCAtMTA4LDcgKzEwOCw4IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9h bmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVk LCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpuZGVhZCwg T2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zm c2V0TnVtYmVyICoqbm93dW51c2VkKQorCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZz ZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0 TnVtYmVyICoqc3R1YnMpCiB7CiAJaWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpFX1BMQU5T KQogCXsKQEAgLTE3OCw2ICsxNzksMjMgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5l X2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCSpub3d1bnVzZWQg PSBOVUxMOwogCX0KIAorCWlmIChmbGFncyAmIFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJT KQorCXsKKwkJeGxocF9wcnVuZV9pdGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRl bXMgKikgY3Vyc29yOworCisJCSpuc3R1YnMgPSBzdWJyZWNvcmQtPm50YXJnZXRzOworCQlB c3NlcnQoKm5zdHVicyA+IDApOworCQkqc3R1YnMgPSAmc3VicmVjb3JkLT5kYXRhWzBdOwor CisJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKKwkJY3Vy c29yICs9IHNpemVvZihPZmZzZXROdW1iZXJbMl0pICogKm5zdHViczsKKwl9CisJZWxzZQor CXsKKwkJKm5zdHVicyA9IDA7CisJCSpzdHVicyA9IE5VTEw7CisJfQorCiAJKmZyel9vZmZz ZXRzID0gKE9mZnNldE51bWJlciAqKSBjdXJzb3I7CiB9CiAKQEAgLTMwNSw2ICszMjMsOCBA QCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJCWludAkJCW5yZWRpcmVjdGVkOwogCQkJaW50CQkJbnVudXNlZDsKIAkJCWludAkJCW5k ZWFkOworCQkJaW50CQkJbnN0dWJzOworCQkJT2Zmc2V0TnVtYmVyICpzdHViczsKIAkJCWlu dAkJCW5wbGFuczsKIAkJCXhsaHBfZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVt YmVyICpmcnpfb2Zmc2V0czsKQEAgLTMxNSwxMCArMzM1LDExIEBAIGhlYXAyX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkJICAg Jm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGly ZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwK LQkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAg ICZudW51c2VkLCAmbm93dW51c2VkLAorCQkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJz KTsKIAotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5yZWRpcmVj dGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSIsCi0JCQkJCQkJIG5wbGFucywgbnJl ZGlyZWN0ZWQsIG5kZWFkLCBudW51c2VkKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAi LCBucGxhbnM6ICV1LCBucmVkaXJlY3RlZDogJXUsIG5kZWFkOiAldSwgbnVudXNlZDogJXUs IG5zdHViczogJXUiLAorCQkJCQkJCSBucGxhbnMsIG5yZWRpcmVjdGVkLCBuZGVhZCwgbnVu dXNlZCwgbnN0dWJzKTsKIAogCQkJaWYgKG5wbGFucyA+IDApCiAJCQl7CkBAIC0zNDcsNiAr MzY4LDEzIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCQkJCWFycmF5X2Rlc2MoYnVmLCBub3d1bnVzZWQsIHNpemVvZihPZmZzZXRO dW1iZXIpLCBudW51c2VkLAogCQkJCQkJICAgJm9mZnNldF9lbGVtX2Rlc2MsIE5VTEwpOwog CQkJfQorCisJCQlpZiAobnN0dWJzID4gMCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGJ1ZiwgIiwgc3R1YnM6Iik7CisJCQkJYXJyYXlfZGVzYyhidWYsIHN0dWJzLCBz aXplb2YoT2Zmc2V0TnVtYmVyKSAqIDIsCisJCQkJCQkgICBuc3R1YnMsICZyZWRpcmVjdF9l bGVtX2Rlc2MsIE5VTEwpOworCQkJfQogCQl9CiAJfQogCWVsc2UgaWYgKGluZm8gPT0gWExP R19IRUFQMl9NVUxUSV9JTlNFUlQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMjM2NzZhZTcx ZTkuLjY0YWU5NzMzMTAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00OTAsNyArNDkwLDgg QEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51 bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJT2Zmc2V0TnVt YmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3Vu dXNlZCwgaW50IG51bnVzZWQpOworCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQs IGludCBudW51c2VkLAorCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVi cyk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNl dE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkg IEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKQEAgLTUwMCw3ICs1MDEsOCBAQCBl eHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwg aW50IG5mcm96ZW4sCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50 IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGludCBuZGVh ZCwKLQkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKKwkJ CQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJCQkJ ICBPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKTsKIAogLyogaW4gaGVhcC9oZWFw YW0uYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4 Li44OTk3YTUwNTAwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94 bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI3Myw2 ICsyNzMsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqCQl1aW50MTYJ CQkJbnVudXNlZAogICoJCU9mZnNldE51bWJlcgkJbm93dW51c2VkW251bnVzZWRdCiAgKgor ICoJeGxocF9wcnVuZV9pdGVtcworICoJCXVpbnQxNgkJCQluc3R1YnMKKyAqCQlPZmZzZXRO dW1iZXIJCXN0dWJzWzIgKiBuc3R1YnNdCisgKgogICoJT2Zmc2V0TnVtYmVyCQkJZnJ6X29m ZnNldHNbc3VtKFtwbGFuLm50dXBsZXMgZm9yIHBsYW4gaW4gcGxhbnNdKV0KICAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCkBAIC0zNDEsNiArMzQ1LDE4IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hlYXBfcHJ1bmUKICNkZWZpbmUJCVhMSFBfVk1fQUxMX1ZJU0lCTEUJCQkoMSA8 PCA4KQogI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVOCQkJKDEgPDwgOSkKIAorLyoKKyAq IEluZGljYXRlcyB0aGF0IGFuIHhsaHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZCB3aXRoIEhP VC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHVicyBpcyBw cmVzZW50LiAgRWFjaCBwYWlyIChvZmZzZXQsIGZvcndhcmQpIG5hbWVzIGEKKyAqIGxpbmUg cG9pbnRlciB0byBiZSByZXdyaXR0ZW4gaW4gcGxhY2UgaW50byBhbiB4aWQtZnJlZSBmb3J3 YXJkaW5nIHN0dWIKKyAqIChIRUFQX1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5WQUxJRCwg SEVBUF9PTkxZX1RVUExFfEhFQVBfSU5ERVhFRF9VUERBVEVELAorICogbmF0dHM9PTApIHdo b3NlIHRfY3RpZC5vZmZudW0gaXMgc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4gIFRoZSBz dHViJ3MKKyAqIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpcyBhbHJlYWR5IHByZXNlbnQgaW4g dGhlIGl0ZW0gb24gdGhlIHBhZ2UgKGl0IGlzIHRoZQorICogcHJlLXBydW5lIHR1cGxlJ3Mg aW5saW5lIGJpdG1hcCwgbGVmdCB1bmRpc3R1cmJlZCksIHNvIGl0IGlzIG5vdCBjYXJyaWVk IGluCisgKiB0aGUgV0FMLgorICovCisjZGVmaW5lCQlYTEhQX0hBU19IT1RfSU5ERVhFRF9T VFVCUwkoMSA8PCAxMCkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhv dyB0byBmcmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwogICogKGFw cGVhcnMgaW4geGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQp CkBAIC00OTQsNiArNTEwLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXpl X3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJ CQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGlu dCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJ CQkgICBpbnQgKm5kZWFkLCBPZmZzZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJCQkJ ICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQpOworCQkJCQkJCQkJ CQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJ CQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0TnVtYmVyICoqc3R1YnMpOwogCiAjZW5kaWYJ CQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwotLSAKMi41MC4xCgo= --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0007-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0007-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4NDIxZmEwNGVmMTFkMzc1YTNmNDYyNGMyMmU5N2Y5ZmJiODE3NjI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA3 LzEwXSBUZWFjaCBhbWNoZWNrIHRvIHJlY29nbml6ZSBIT1QtaW5kZXhlZCBjaGFpbnMgYW5k CiBjb2xsYXBzZSBzdHVicwoKdmVyaWZ5X2hlYXBhbSBtdXN0IG5vdCBmbGFnIHRoZSBIT1Qt aW5kZXhlZCBhcnRpZmFjdHMgYXMgY29ycnVwdGlvbjogYSBsaXZlCkhFQVBfSU5ERVhFRF9V UERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBtaWQtY2hhaW4gbGluZSBwb2ludGVyIGlz IHByZXNlcnZlZApiZWNhdXNlIGFuIGluZGV4IGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdCwg YW4geGlkLWZyZWUgY29sbGFwc2Utc3Vydml2b3Igc3R1YiwKYW5kIG1vcmUgdGhhbiBvbmUg TFBfUkVESVJFQ1QgZm9yd2FyZGluZyB0byB0aGUgc2FtZSBsaXZlIHR1cGxlIGFyZSBhbGwK bGVnaXRpbWF0ZS4gIFJlY29nbml6ZSB0aGVtIGFuZCBjb250aW51ZSBjaGVja2luZyB0aGUg cmVzdCBvZiB0aGUgY2hhaW4uCgpDb3ZlciB0aGlzIHdpdGggYW4gYW1jaGVjayByZWdyZXNz aW9uIHRlc3QsIGFuZCBhZGQgYSBwZ191cGdyYWRlIHRlc3QgdGhhdApjYXJyaWVzIGEgcmVs YXRpb24gd2l0aCBIT1QtaW5kZXhlZCBjaGFpbnMsIGFuIEFCQS1jeWNsZWQgaW5kZXhlZCBj b2x1bW4sIGFuCm91dC1vZi1saW5lIGluZGV4ZWQgY29sdW1uLCBhbmQgVkFDVVVNLWNvbGxh cHNlZCBzdHVicyBhY3Jvc3MgYW4gdXBncmFkZSwKdmVyaWZ5aW5nIHRoZSBkYXRhLCB2ZXJp ZnlfaGVhcGFtLCBidF9pbmRleF9jaGVjaywgYW5kIHRoZSBjaGFpbiBzY2FucyBvbiB0aGUK bmV3IGNsdXN0ZXIuCgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0t LQogY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0IHwgIDQwICsrKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgfCAgMzcgKysr KysrKysKIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgICAgICAgICB8ICA4OSAr KysrKysrKysrKysrKysrLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAg ICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwg fCAxMTggKysrKysrKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDI3NSBp bnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKCmRpZmYgLS1naXQgYS9jb250 cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hlY2sv ZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5ZTVlODRlNzIuLmI4ZGVlMmJiNzFi IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQK KysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CkBAIC0yMzEs NiArMjMxLDQ2IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVzdF9mb3JlaWdu X3RhYmxlJywKIAkJCQkJCQllbmRibG9jayA6PSBOVUxMKTsKIEVSUk9SOiAgY2Fubm90IGNo ZWNrIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiCiBERVRBSUw6ICBUaGlzIG9wZXJh dGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBmb3JlaWduIHRhYmxlcy4KKy0tIEhPVC1pbmRl eGVkIChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRleGVk IFVQREFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFw LW9ubHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxhbnRz IGluZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmluZyBh IGNoYWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCistLSBM UF9SRURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2ZSBI T1QtaW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5ZXQg YmUgc3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVzZSBh cyBsZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNzZXJ0 cyB0aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFnYWlu c3QgbGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFCTEUg aG90X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBpbnQs IGMzIGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhvdF9p bmRleGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUgSU5E RVggaG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsKK0lO U0VSVCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczogZWFj aCByb3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vzc2Z1 bCBIT1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFuZCBp bnNlcnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJpYnV0 ZSBjaGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsgMTAw MDsKKy0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZlIEhP VC1pbmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVuZSBz ZWVzIGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0tIHRo ZW0gdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBydW5z IHRoZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgorVVBE QVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsK K1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0g NTA7CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlk IDw9IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hlY2s7 CistLSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBhZ2Fp bnN0IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3Rpbmcg dGhlIGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5taXN0 YWthYmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwgYXR0 bnVtLCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywKKwkJ CQkJICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxMKTsK KyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaG90X2luZGV4ZWRfY2hlY2s7 CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNx bAppbmRleCAxNzQ1YmFlNjM0ZS4uYzBiYTI2MzUxODAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv YW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL3NxbC9j aGVja19oZWFwLnNxbApAQCAtMTM4LDYgKzEzOCw0MyBAQCBTRUxFQ1QgKiBGUk9NIHZlcmlm eV9oZWFwYW0oJ3Rlc3RfZm9yZWlnbl90YWJsZScsCiAJCQkJCQkJc3RhcnRibG9jayA6PSBO VUxMLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogCistLSBIT1QtaW5kZXhlZCAoSE9U L1NJVSkgb24tcGFnZSBhcnRpZmFjdHM6CistLQorLS0gQSBIT1QtaW5kZXhlZCBVUERBVEUg a2VlcHMgdGhlIG5ldyB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5Cist LSB0dXBsZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQgYW5kIHBsYW50cyBpbmRleCBl bnRyaWVzIHBvaW50aW5nIGF0IGl0cworLS0gb3duIFRJRC4gIFBydW5pbmcgYSBjaGFpbiBv ZiBzdWNoIHVwZGF0ZXMgY29sbGFwc2VzIGRlYWQgbWVtYmVycyB0bworLS0gTFBfUkVESVJF Q1QgZm9yd2FyZGVycyBhbmQgcHJlc2VydmVzIHRoZSBMUCBvZiBhIGxpdmUgSE9ULWluZGV4 ZWQgbWVtYmVyCistLSB3aG9zZSBpbmRleCBlbnRyaWVzIG1heSBub3QgeWV0IGJlIHN3ZXB0 LiAgdmVyaWZ5X2hlYXBhbSBtdXN0IHRyZWF0IGFsbCBvZgorLS0gdGhlc2UgYXMgbGVnaXRp bWF0ZS4gIFRoaXMgc2NlbmFyaW8gZXhlcmNpc2VzIHRoZW0gYW5kIGFzc2VydHMgdGhhdAor LS0gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gY29ycnVwdGlvbiBhZ2FpbnN0IGxlZ2l0 aW1hdGUgSE9ULWluZGV4ZWQKKy0tIGFjdGl2aXR5LgorQ1JFQVRFIFRBQkxFIGhvdF9pbmRl eGVkX2NoZWNrIChpZCBpbnQgUFJJTUFSWSBLRVksIGMxIGludCwgYzIgaW50LCBjMyBpbnQp CisJV0lUSCAoZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCBob3RfaW5kZXhlZF9j aGVja19jMSBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzEpOworQ1JFQVRFIElOREVYIGhvdF9p bmRleGVkX2NoZWNrX2MyIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMik7CitJTlNFUlQgSU5U TyBob3RfaW5kZXhlZF9jaGVjaworCVNFTEVDVCBnLCBnLCBnLCBnIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwMCkgZzsKKy0tIFNpbmdsZS1zdGVwIFVQREFURXM6IGVhY2ggcm93IGdl dHMgb25lIEhPVC1pbmRleGVkIHVwZGF0ZS4gIEVhY2gKKy0tIHN1Y2Nlc3NmdWwgSE9ULWlu ZGV4ZWQgdXBkYXRlIGtlZXBzIGl0cyBuZXcgdHVwbGUgb24tcGFnZSBhbmQgaW5zZXJ0cyBh bgorLS0gZW50cnkgb25seSBpbnRvIHRoZSBpbmRleCB3aG9zZSBhdHRyaWJ1dGUgY2hhbmdl ZC4KK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzEgPSBjMSArIDEwMDA7CistLSBN dWx0aS1zdGVwIFVQREFURXM6IGRyaXZlIHNldmVyYWwgc3VjY2Vzc2l2ZSBIT1QtaW5kZXhl ZCB1cGRhdGVzIGFnYWluc3QKKy0tIHRoZSBzYW1lIHJvd3Mgc28gcHJ1bmUgc2VlcyBhIGNo YWluIG9mIGRlYWQgaW50ZXJtZWRpYXRlcyBhbmQgY29sbGFwc2VzCistLSB0aGVtIHRvIExQ X1JFRElSRUNUIGZvcndhcmRlcnMuICBBbiBleHBsaWNpdCBWQUNVVU0gcnVucyB0aGUgcHJ1 bmUgcGF0aAorLS0gYW5kIGV4ZXJjaXNlcyBjaGFpbiBjb2xsYXBzZS4KK1VQREFURSBob3Rf aW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7CitVUERBVEUg aG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9IDUwOworVVBE QVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsK K1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhvdF9pbmRleGVkX2NoZWNrOworLS0gdmVy aWZ5X2hlYXBhbSBtdXN0IG5vdCByZXBvcnQgYW55IGNvcnJ1cHRpb24gYWdhaW5zdCBsZWdp dGltYXRlIEhPVC0KKy0tIGluZGV4ZWQgYXJ0aWZhY3RzLiAgU2VsZWN0aW5nIHRoZSBjb3Jy dXB0aW5nIG1lc3NhZ2UgbWFrZXMgYW55CistLSByZWdyZXNzaW9uIHVubWlzdGFrYWJsZSBp biB0aGUgcmVncmVzcyBkaWZmLgorU0VMRUNUIGJsa25vLCBvZmZudW0sIGF0dG51bSwgbXNn CisJRlJPTSB2ZXJpZnlfaGVhcGFtKCdob3RfaW5kZXhlZF9jaGVjaycsCisJCQkJCSAgIHN0 YXJ0YmxvY2sgOj0gTlVMTCwKKwkJCQkJICAgZW5kYmxvY2sgOj0gTlVMTCk7CitEUk9QIFRB QkxFIGhvdF9pbmRleGVkX2NoZWNrOworCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0 ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jIGIvY29udHJpYi9hbWNo ZWNrL3ZlcmlmeV9oZWFwYW0uYwppbmRleCAyMGZmNThhYTc4Mi4uOTNhM2JjMzE4YTIgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy9kZXRvYXN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3RfaW5kZXhlZC5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs YXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKQEAgLTUyMiw5ICs1MjMsMTIg QEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJICovCiAJCQlpZiAoSXRl bUlkSXNSZWRpcmVjdGVkKGN0eC5pdGVtaWQpKQogCQkJewotCQkJCU9mZnNldE51bWJlciBy ZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCQkJCU9mZnNldE51 bWJlciByZG9mZm51bTsKIAkJCQlJdGVtSWQJCXJkaXRlbTsKIAorCQkJCS8qIFJlc29sdmUg dGhlIHJlZGlyZWN0J3MgdGFyZ2V0IG9mZnNldC4gKi8KKwkJCQlyZG9mZm51bSA9IEl0ZW1J ZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCiAJCQkJaWYgKHJkb2ZmbnVtIDwgRmlyc3RP ZmZzZXROdW1iZXIpCiAJCQkJewogCQkJCQlyZXBvcnRfY29ycnVwdGlvbigmY3R4LApAQCAt NjE1LDE4ICs2MTksNDcgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJ Y3R4LnR1cGhkciA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBj dHguaXRlbWlkKTsKIAkJCWN0eC5uYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGN0 eC50dXBoZHIpOwogCi0JCQkvKiBPaywgcmVhZHkgdG8gY2hlY2sgdGhpcyBuZXh0IHR1cGxl ICovCi0JCQljaGVja190dXBsZSgmY3R4LAotCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c19v a1tjdHgub2ZmbnVtXSwKLQkJCQkJCSZ4bWluX2NvbW1pdF9zdGF0dXNbY3R4Lm9mZm51bV0p OworCQkJLyoKKwkJCSAqIEEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgY29sbGFwc2Utc3Vy dml2b3Igc3R1YiBpcyBhbgorCQkJICogTFBfTk9STUFMIGl0ZW0gdGhhdCBpcyBub3QgYSBy ZWFsIHR1cGxlOiBIRUFQX0lOREVYRURfVVBEQVRFRAorCQkJICogd2l0aCBuYXR0cyA9PSAw LCBwZXJtYW5lbnRseSBpbnZpc2libGUgKEhFQVBfWE1JTl9JTlZBTElEKSwKKwkJCSAqIGNh cnJ5aW5nIGEgZm9yd2FyZCBsaW5rIGFuZCBhIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4gIFRo ZQorCQkJICogcGVyLXR1cGxlIGNoZWNrcyBhc3N1bWUgYSByZWFsIHR1cGxlIGFuZCB3b3Vs ZCBtaXNyZXBvcnQgaXQsIHNvCisJCQkgKiBza2lwIHRoZW07IHRoZSB1cGRhdGUtY2hhaW4g cGFzcyBiZWxvdyBzdGlsbCByZWNvcmRzIGl0cworCQkJICogZm9yd2FyZCBlZGdlIGFuZCB0 cmVhdHMgaXQgbGlrZSBhIHJlZGlyZWN0IChhIGZvcndhcmRpbmcgbm9kZSkuCisJCQkgKi8K KwkJCWlmICghSG90SW5kZXhlZEhlYWRlcklzU3R1YihjdHgudHVwaGRyKSkKKwkJCQljaGVj a190dXBsZSgmY3R4LAorCQkJCQkJCSZ4bWluX2NvbW1pdF9zdGF0dXNfb2tbY3R4Lm9mZm51 bV0sCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c1tjdHgub2ZmbnVtXSk7CiAKIAkJCS8q CiAJCQkgKiBJZiB0aGUgQ1RJRCBmaWVsZCBvZiB0aGlzIHR1cGxlIHNlZW1zIHRvIHBvaW50 IHRvIGFub3RoZXIgdHVwbGUKIAkJCSAqIG9uIHRoZSBzYW1lIHBhZ2UsIHJlY29yZCB0aGF0 IHR1cGxlIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhpcwotCQkJICogb25lLgorCQkJICogb25l LiAgQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIHN0b3JlcyBpdHMgZm9yd2FyZCBsaW5rIGlu IHRoZQorCQkJICogdF9jdGlkIG9mZnNldCBvbmx5ICh0aGUgYmxvY2sgaGFsZiBpcyByZXB1 cnBvc2VkIHRvIGhvbGQgdGhlCisJCQkgKiBzdHViJ3Mgd3JpdGUtdGltZSBuYXR0cyksIHNv IHJlc29sdmUgaXRzIHN1Y2Nlc3NvciB2aWEgdGhlIHN0dWIKKwkJCSAqIGFjY2Vzc29yOyB0 aGUgZm9yd2FyZCB0YXJnZXQgaXMgYWx3YXlzIG9uIHRoZSBzYW1lIHBhZ2UuCiAJCQkgKi8K LQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJihjdHgudHVwaGRy KS0+dF9jdGlkKTsKLQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJl cigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0 dWIoY3R4LnR1cGhkcikpCisJCQl7CisJCQkJbmV4dGJsa25vID0gY3R4LmJsa25vOworCQkJ CW5leHRvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoY3R4LnR1cGhkcik7CisJ CQkJaWYgKG5leHRvZmZudW0gPT0gY3R4Lm9mZm51bSB8fAorCQkJCQluZXh0b2ZmbnVtIDwg Rmlyc3RPZmZzZXROdW1iZXIgfHwgbmV4dG9mZm51bSA+IG1heG9mZikKKwkJCQl7CisJCQkJ CXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCisJCQkJCQkJCQkgIHBzcHJpbnRmKCJIT1QtaW5k ZXhlZCBzdHViIGZvcndhcmQgbGluayB0byBpdGVtIGF0IG9mZnNldCAlZCBpcyBvdXQgb2Yg cmFuZ2Ugb3Igc2VsZi1yZWZlcmVudGlhbCAodmFsaWQgcmFuZ2UgJWQuLiVkKSIsCisJCQkJ CQkJCQkJCSAgIG5leHRvZmZudW0sCisJCQkJCQkJCQkJCSAgIEZpcnN0T2Zmc2V0TnVtYmVy LCBtYXhvZmYpKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJihjdHgudHVw aGRyKS0+dF9jdGlkKTsKKwkJCQluZXh0b2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJihjdHgudHVwaGRyKS0+dF9jdGlkKTsKKwkJCX0KIAkJCWlmIChuZXh0Ymxrbm8g PT0gY3R4LmJsa25vICYmIG5leHRvZmZudW0gIT0gY3R4Lm9mZm51bSAmJgogCQkJCW5leHRv ZmZudW0gPj0gRmlyc3RPZmZzZXROdW1iZXIgJiYgbmV4dG9mZm51bSA8PSBtYXhvZmYpCiAJ CQkJc3VjY2Vzc29yW2N0eC5vZmZudW1dID0gbmV4dG9mZm51bTsKQEAgLTY3NSw3ICs3MDgs NyBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJICovCiAJCQkJQXNz ZXJ0KEl0ZW1JZElzTm9ybWFsKG5leHRfbHApKTsKIAotCQkJCS8qIENhbiBvbmx5IHJlZGly ZWN0IHRvIGEgSE9UIHR1cGxlLiAqLworCQkJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUg Zmlyc3Qgc3Vydml2aW5nIGNoYWluIG1lbWJlci4gKi8KIAkJCQluZXh0X2h0dXAgPSAoSGVh cFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CiAJCQkJaWYg KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KG5leHRfaHR1cCkpCiAJCQkJewpAQCAtNjg3 LDYgKzcyMCwxOSBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJLyog SE9UIGNoYWlucyBzaG91bGQgbm90IGludGVyc2VjdC4gKi8KIAkJCQlpZiAocHJlZGVjZXNz b3JbbmV4dG9mZm51bV0gIT0gSW52YWxpZE9mZnNldE51bWJlcikKIAkJCQl7CisJCQkJCS8q CisJCQkJCSAqIEluIHRoZSBIT1QvU0lVIG1vZGVsIHNldmVyYWwgcmVkaXJlY3RzIGxlZ2l0 aW1hdGVseQorCQkJCQkgKiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGU6IHdoZW4g YSBjaGFpbiBjb2xsYXBzZXMsCisJCQkJCSAqIHRoZSByb290IGFuZCBlYWNoIGVudHJ5LWJl YXJpbmcgZGVhZCBtZW1iZXIgYmVjb21lIGEKKwkJCQkJICogcmVkaXJlY3QgdG8gZmlyc3Rf bGl2ZSBzbyBldmVyeSBzdGFsZSBidHJlZSBlbnRyeSBzdGlsbAorCQkJCQkgKiByZXNvbHZl cyB0aGVyZSAodGhlIHJlYWQgcGF0aCB0aGVuIHJlY2hlY2tzIHRoZSBsZWFmCisJCQkJCSAq IGtleSkuICBNdWx0aXBsZSBwcmVkZWNlc3NvcnMgYXJlIHRoZXJlZm9yZSBleHBlY3RlZAor CQkJCQkgKiB3aGVuIHRoZSB0YXJnZXQgaXMgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQ7IGtl ZXAgdGhlCisJCQkJCSAqIGZpcnN0IHByZWRlY2Vzc29yIGFuZCBkbyBub3QgcmVwb3J0IGl0 IGFzIGNvcnJ1cHRpb24uCisJCQkJCSAqLworCQkJCQlpZiAoKG5leHRfaHR1cC0+dF9pbmZv bWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJCWNvbnRpbnVlOwor CiAJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCiAJCQkJCQkJCQkgIHBzcHJpbnRmKCJy ZWRpcmVjdCBsaW5lIHBvaW50ZXIgcG9pbnRzIHRvIG9mZnNldCAlZCwgYnV0IG9mZnNldCAl ZCBhbHNvIHBvaW50cyB0aGVyZSIsCiAJCQkJCQkJCQkJCSAgIG5leHRvZmZudW0sIHByZWRl Y2Vzc29yW25leHRvZmZudW1dKSk7CkBAIC03MDEsNiArNzQ3LDMwIEBAIHZlcmlmeV9oZWFw YW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQljb250aW51ZTsKIAkJCX0KIAorCQkJLyoKKwkJ CSAqIEEgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBmb3J3YXJkcyBsaWtlIGEgcmVkaXJlY3Q6 IGl0IGlzIG5vdCBhCisJCQkgKiByZWFsIHR1cGxlLCBzbyBkb24ndCBhcHBseSB0aGUgdHVw bGUtdG8tdHVwbGUgdXBkYXRlLWNoYWluCisJCQkgKiBjaGVja3MsIGJ1dCBkbyByZWNvcmQg dGhlIHByZWRlY2Vzc29yIGVkZ2UgdG8gaXRzIHRhcmdldCBzbyB0aGUKKwkJCSAqIGxpdmUg dHVwbGUgaXQgdWx0aW1hdGVseSBmb3J3YXJkcyB0byBpcyBub3QgbWlzdGFrZW4gZm9yIGEK KwkJCSAqIGNoYWluIHJvb3QuICBJdHMgdGFyZ2V0IG11c3QgYmUgaGVhcC1vbmx5IChhbm90 aGVyIHN0dWIgb3IgdGhlCisJCQkgKiBsaXZlIGhlYXAtb25seSB0dXBsZSkuCisJCQkgKi8K KwkJCWN1cnJfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdl LCBjdXJyX2xwKTsKKwkJCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKGN1cnJfaHR1cCkp CisJCQl7CisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKG5leHRfbHApKQorCQkJCXsKKwkJCQkJ bmV4dF9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBhZ2UsIG5l eHRfbHApOworCQkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkobmV4dF9odHVw KSkKKwkJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgsCisJCQkJCQkJCQkJICBwc3ByaW50 ZigiSE9ULWluZGV4ZWQgc3R1YiBmb3J3YXJkcyB0byBhIG5vbi1oZWFwLW9ubHkgdHVwbGUg YXQgb2Zmc2V0ICVkIiwKKwkJCQkJCQkJCQkJCSAgIG5leHRvZmZudW0pKTsKKwkJCQkJZWxz ZSBpZiAocHJlZGVjZXNzb3JbbmV4dG9mZm51bV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikK KwkJCQkJCXByZWRlY2Vzc29yW25leHRvZmZudW1dID0gY3R4Lm9mZm51bTsKKwkJCQl9CisJ CQkJY29udGludWU7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBJZiB0aGUgbmV4dCBsaW5lIHBv aW50ZXIgaXMgYSByZWRpcmVjdCwgb3IgaWYgaXQncyBhIHR1cGxlIGJ1dAogCQkJICogdGhl IFhNQVggb2YgdGhpcyB0dXBsZSBkb2Vzbid0IG1hdGNoIHRoZSBYTUlOIG9mIHRoZSBuZXh0 CkBAIC03MDksNyArNzc5LDYgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQog CQkJICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKG5leHRfbHApKQogCQkJCWNvbnRp bnVlOwotCQkJY3Vycl9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4 LnBhZ2UsIGN1cnJfbHApOwogCQkJY3Vycl94bWF4ID0gSGVhcFR1cGxlSGVhZGVyR2V0VXBk YXRlWGlkKGN1cnJfaHR1cCk7CiAJCQluZXh0X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CiAJCQluZXh0X3htaW4gPSBIZWFwVHVw bGVIZWFkZXJHZXRYbWluKG5leHRfaHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQKaW5k ZXggZmZiZjZhZThkNzUuLjBhNmZhMGRjZmYyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Vw Z3JhZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxk CkBAIC02OSw2ICs2OSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwNl90cmFuc2Zlcl9t b2Rlcy5wbCcsCiAgICAgICAndC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwnLAogICAg ICAgJ3QvMDA4X2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwnLAorICAgICAgJ3QvMDA5X2hv dF9pbmRleGVkLnBsJywKICAgICBdLAogICAgICdkZXBzJzogW3Rlc3RfZXh0XSwKICAgICAn dGVzdF9rd2FyZ3MnOiB7J3ByaW9yaXR5JzogNDB9LCAjIHBnX3VwZ3JhZGUgdGVzdHMgYXJl IHNsb3cKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhl ZC5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhlZC5wbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjcxMTI5YWUwM2QKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKQEAg LTAsMCArMSwxMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCisjIHBnX3VwZ3JhZGUgbXVzdCBwcmVzZXJ2ZSBIT1Qt aW5kZXhlZCBvbi1kaXNrIHN0YXRlLiAgQSByZWxhdGlvbiB0aGF0IGhhcworIyBhY2N1bXVs YXRlZCBIT1QtaW5kZXhlZCBjaGFpbnMgLS0gaW5jbHVkaW5nIGEgdmFsdWUgY3ljbGVkIGF3 YXkgYW5kIGJhY2sKKyMgKEFCQSksIGFuIG91dC1vZi1saW5lIChUT0FTVCkgaW5kZXhlZCBj b2x1bW4sIGFuZCBjaGFpbnMgY29sbGFwc2VkIHRvCisjIHhpZC1mcmVlIGZvcndhcmRpbmcg c3R1YnMgYnkgVkFDVVVNIC0tIG11c3QgY29tZSB0aHJvdWdoIGFuIHVwZ3JhZGUgd2l0aCBp dHMKKyMgZGF0YSBpbnRhY3QsIGl0cyBpbmRleGVzIHN0cnVjdHVyYWxseSBzb3VuZCwgYW5k IGl0cyBjaGFpbnMgc3RpbGwgc2Nhbm5pbmcKKyMgY29ycmVjdGx5LiAgcGdfdXBncmFkZSB0 cmFuc2ZlcnMgaGVhcCBhbmQgaW5kZXggZmlsZXMgdmVyYmF0aW0sIHNvIHRoaXMgaXMKKyMg cmVhbGx5IGEgY2hlY2sgdGhhdCB0aGUgbmV3LXN0YXRlIGJpdHMgKEhFQVBfSU5ERVhFRF9V UERBVEVELCBjb2xsYXBzZSBzdHVicykKKyMgYXJlIG5vdCByZWplY3RlZCBieSBwZ191cGdy YWRlJ3MgY2hlY2tzIGFuZCBzdGF5IGNvcnJlY3Qgb24gdGhlIG5ldyBjbHVzdGVyLgorCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2Ug VGVzdDo6TW9yZTsKKworbXkgJG1vZGUgPSAkRU5We1BHX1RFU1RfUEdfVVBHUkFERV9NT0RF fSB8fCAnLS1jb3B5JzsKKworbXkgJG9sZG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ29sZF9ub2RlJyk7Ciskb2xkbm9kZS0+aW5pdDsKKyRvbGRub2RlLT5zdGFy dDsKKworIyBCdWlsZCBhIHJlbGF0aW9uIHdpdGggc2V2ZXJhbCBzZWNvbmRhcnkgaW5kZXhl cyBzbyBzaW5nbGUtY29sdW1uIHVwZGF0ZXMKKyMgc3RheSBIT1QtaW5kZXhlZCwgdGhlbiBl eGVyY2lzZSB0aGUgY2FzZXMgdGhhdCBwcm9kdWNlIGludGVyZXN0aW5nIG9uLWRpc2sKKyMg c3RhdGUuCiskb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIEVY VEVOU0lPTiBhbWNoZWNrOworCUNSRUFURSBUQUJMRSBoaSAoaWQgaW50IFBSSU1BUlkgS0VZ LCBrIGludCwgdiBpbnQsIGJpZyB0ZXh0KQorCSAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK KwlBTFRFUiBUQUJMRSBoaSBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFM OworCUNSRUFURSBJTkRFWCBoaV9rIE9OIGhpIChrKTsKKwlDUkVBVEUgSU5ERVggaGlfdiBP TiBoaSAodik7CisJQ1JFQVRFIElOREVYIGhpX2JpZyBPTiBoaSAoYmlnKTsKKwlJTlNFUlQg SU5UTyBoaSBTRUxFQ1QgZywgZywgZyAqIDEwLCByZXBlYXQoY2hyKDY0ICsgZyksIDIwMDAp CisJICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgZzsKK30pOworCisjIEludGVybGVh dmUgdXBkYXRlcyBvZiBkaWZmZXJlbnQgaW5kZXhlZCBjb2x1bW5zIG9uIHRoZSBzYW1lIHJv d3MuICBBIG1lbWJlcgorIyB0aGF0IGNoYW5nZWQgYSBjb2x1bW4gbm90IGNoYW5nZWQgYWdh aW4gYnkgYSBsYXRlciBob3Agc3Vydml2ZXMgVkFDVVVNIGFzIGEKKyMgY29sbGFwc2Ugc3R1 YjsgdGhlIHJlc3QgYXJlIHJlY2xhaW1lZC4gIFJvdyAxIGFkZGl0aW9uYWxseSBjeWNsZXMg ayBhd2F5IGFuZAorIyBiYWNrIChBQkEpLCBhbmQgcm93IDIgcmV3cml0ZXMgaXRzIHRvYXN0 ZWQgaW5kZXhlZCBjb2x1bW4uCiskb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 CisJVVBEQVRFIGhpIFNFVCBrID0gayArIDEwMCBXSEVSRSBpZCA8PSAxMDsgICAtLSBjaGFu Z2VzIGsKKwlVUERBVEUgaGkgU0VUIHYgPSB2ICsgMSAgIFdIRVJFIGlkIDw9IDEwOyAgICAt LSBjaGFuZ2VzIHYgKHN1cnZpdmVzIGFzIHN0dWIpCisJVVBEQVRFIGhpIFNFVCBrID0gayAt IDEwMCBXSEVSRSBpZCA8PSAxMDsgICAgLS0gayBiYWNrIHRvIG9yaWdpbmFsIChBQkEpCisJ VVBEQVRFIGhpIFNFVCBiaWcgPSByZXBlYXQoJ1onLCAyMDAwKSBXSEVSRSBpZCA9IDI7Cit9 KTsKKyMgQ29sbGFwc2UgZGVhZCBjaGFpbiBtZW1iZXJzIHRvIHN0dWJzLgorJG9sZG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGkn KTsKKworIyBUaGUgcHJlLXVwZ3JhZGUgc3RhdGUgbXVzdCBhbHJlYWR5IGJlIHNlbGYtY29u c2lzdGVudC4KK2lzKCAkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VM RUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGknKX0pLAorCScwJywgJ3ByZS11 cGdyYWRlIGhlYXAgaXMgY29uc2lzdGVudCcpOworCisjIFNuYXBzaG90IHRoZSBkYXRhIHdl IHdpbGwgY29tcGFyZSBhZnRlciB0aGUgdXBncmFkZS4KK215ICRleHBlY3QgPSAkb2xkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaWQsIGssIHYsIGxlbmd0aChi aWcpIEZST00gaGkgT1JERVIgQlkgaWR9KTsKKworJG9sZG5vZGUtPnN0b3A7CisKKyMgTmV3 IGNsdXN0ZXIsIHNhbWUgdmVyc2lvbi4KK215ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCduZXdfbm9kZScpOworJG5ld25vZGUtPmluaXQ7CisKK215ICRv bGRiaW5kaXIgPSAkb2xkbm9kZS0+Y29uZmlnX2RhdGEoJy0tYmluZGlyJyk7CitteSAkbmV3 YmluZGlyID0gJG5ld25vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpOworCisjIFJ1biBw Z191cGdyYWRlIGZyb20gYSB3cml0YWJsZSBkaXJlY3RvcnkgKG1hdGNoZXMgMDAyX3BnX3Vw Z3JhZGUpLgorY2hkaXIgJHtQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dG1wX2NoZWNrfTsK KworY29tbWFuZF9vaygKKwlbCisJCSdwZ191cGdyYWRlJywgJy0tbm8tc3luYycsCisJCSct LW9sZC1kYXRhZGlyJyA9PiAkb2xkbm9kZS0+ZGF0YV9kaXIsCisJCSctLW5ldy1kYXRhZGly JyA9PiAkbmV3bm9kZS0+ZGF0YV9kaXIsCisJCSctLW9sZC1iaW5kaXInID0+ICRvbGRiaW5k aXIsCisJCSctLW5ldy1iaW5kaXInID0+ICRuZXdiaW5kaXIsCisJCSctLXNvY2tldGRpcicg PT4gJG5ld25vZGUtPmhvc3QsCisJCSctLW9sZC1wb3J0JyA9PiAkb2xkbm9kZS0+cG9ydCwK KwkJJy0tbmV3LXBvcnQnID0+ICRuZXdub2RlLT5wb3J0LAorCQkkbW9kZSwKKwldLAorCSdy dW4gb2YgcGdfdXBncmFkZSBmb3IgSE9ULWluZGV4ZWQgcmVsYXRpb24nKTsKKworJG5ld25v ZGUtPnN0YXJ0OworCisjIERhdGEgc3Vydml2ZWQgaW50YWN0LgorbXkgJGdvdCA9ICRuZXdu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBpZCwgaywgdiwgbGVuZ3Ro KGJpZykgRlJPTSBoaSBPUkRFUiBCWSBpZH0pOworaXMoJGdvdCwgJGV4cGVjdCwgJ0hPVC1p bmRleGVkIHRhYmxlIGRhdGEgcHJlc2VydmVkIGFjcm9zcyBwZ191cGdyYWRlJyk7CisKKyMg SGVhcCBhbmQgaW5kZXhlcyBhcmUgc3RydWN0dXJhbGx5IHNvdW5kIG9uIHRoZSBuZXcgY2x1 c3Rlci4KK2lzKCAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNU IGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGknKX0pLAorCScwJywgJ3Bvc3QtdXBn cmFkZSBoZWFwIGlzIGNvbnNpc3RlbnQgKGNvbGxhcHNlIHN0dWJzIHJlY29nbmlzZWQpJyk7 CitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCQlTRUxFQ1QgY291 bnQoKikgRlJPTSAoCisJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soYy5vaWQpCisJCQlGUk9N IHBnX2NsYXNzIGMgSk9JTiBwZ19pbmRleCBpIE9OIGkuaW5kZXhyZWxpZCA9IGMub2lkCisJ CQlXSEVSRSBpLmluZHJlbGlkID0gJ2hpJzo6cmVnY2xhc3MpIHN9KSwKKwknNCcsICdwb3N0 LXVwZ3JhZGUgaW5kZXhlcyBwYXNzIGJ0X2luZGV4X2NoZWNrJyk7CisKKyMgVGhlIEFCQSBj aGFpbiBvbiByb3cgMSBzdGlsbCBzY2FucyBjb3JyZWN0bHkgdGhyb3VnaCBhIGZvcmNlZCBp bmRleCBzY2FuOgorIyBrPTEgcmV0dXJucyBleGFjdGx5IHRoZSBvbmUgbGl2ZSByb3csIGFu ZCBpdHMgc3VwZXJzZWRlZCB2YWx1ZSBpcyBnb25lLgoraXMoICRuZXdub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgqKSBGUk9NIGhpIFdIRVJF IGsgPSAxfSksCisJJzEnLCAncG9zdC11cGdyYWRlIGluZGV4IHNjYW4gcmV0dXJucyB0aGUg QUJBIHJvdyBvbmNlJyk7CitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx eworCQlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7IFNFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKKwkJU0VMRUNUIGNvdW50KCopIEZST00gaGkgV0hFUkUgayA9IDEwMX0pLAorCScw JywgJ3Bvc3QtdXBncmFkZSBpbmRleCBzY2FuIGRyb3BzIHRoZSBzdXBlcnNlZGVkIHZhbHVl Jyk7CisKKyRuZXdub2RlLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTAuMQoK --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0008-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0008-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhM2Y5NTE2NTNkNTYxMjZiNzdmMDhjMGRmZTFlN2YzYzQ3ZDkwNDRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA4 LzEwXSBBZGQgSE9ULWluZGV4ZWQgc3RhdGlzdGljcyBhbmQgdGhlIGNvbXByZWhlbnNpdmUK IHRlc3Qgc3VpdGUKCkV4cG9zZSB0aGUgSE9ULWluZGV4ZWQgYWN0aXZpdHkgY291bnRlcnMg bWFpbnRhaW5lZCBieSB0aGUgd3JpdGUgcGF0aDoKcGdfc3RhdF9hbGxfdGFibGVzLm5fdHVw X2hvdF9pbmRleGVkX3VwZCwgdGhlIHBlci1pbmRleApuX3R1cF9ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZCAvIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIGNvdW50ZXJzIGluCnBn X3N0YXRfYWxsX2luZGV4ZXMsIGFuZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygp IHJlcG9ydGluZyBwZXItcmVsYXRpb24KSE9ULWluZGV4ZWQgY2hhaW4gY29tcG9zaXRpb24u ICBEb2N1bWVudCB0aGVtIGluIG1vbml0b3Jpbmcuc2dtbCBhbmQgdGhlClJFQURNRS4KCldp dGggc3RhdGlzdGljcywgcHJ1bmUvY29sbGFwc2UsIGFuZCBhbWNoZWNrIHJlY29nbml0aW9u IGFsbCBpbiBwbGFjZSwgYWRkIHRoZQpmdWxsIGZlYXR1cmUgdGVzdCBzdWl0ZSwgd2hpY2gg dXNlcyB0aG9zZSBmYWNpbGl0aWVzIHRvIHZlcmlmeSBiZWhhdmlvcjoKCi0gaG90X2luZGV4 ZWRfdXBkYXRlcyAocmVncmVzc2lvbik6IGVsaWdpYmlsaXR5IGFuZCBjbGFzc2lmaWNhdGlv bjsgc2VsZWN0aXZlCiAgbWFpbnRlbmFuY2UgYWNyb3NzIG11bHRpcGxlL2NvbXBvc2l0ZSBp bmRleGVzOyB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgcmVhZAogIHBhdGggZm9yIGVxdWFsaXR5 LCByYW5nZSwgYW5kIGluZXF1YWxpdHkgc2NhbnM7IGEga2V5IGN5Y2xlZCBhd2F5IGFuZCBi YWNrCiAgKEFCQSksIGluY2x1ZGluZyBhY3Jvc3MgdHdvIGRpc3RpbmN0IGxpdmUgcm93czsg VE9BU1RlZCBpbmRleGVkIGNvbHVtbnM7CiAgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgZmxp cHMgKGtleSBhbmQgbm9uLWtleSBwcmVkaWNhdGUgY29sdW1ucyk7CiAgdHJpZ2dlci1tb2Rp ZmllZCBpbmRleGVkIGNvbHVtbnM7IGV4Y2x1c2lvbi1jb25zdHJhaW50IHRhYmxlczsgcGFy dGl0aW9uZWQKICB0YWJsZXM7IG5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kcyAoaGFzaCwgR0lO LCBHaVNUKTsgYSBVTklRVUUgaW5kZXggb24gYSB0eXBlCiAgd2hlcmUgaW1hZ2UgZXF1YWxp dHkgZGlmZmVycyBmcm9tIG9wZXJhdG9yIGVxdWFsaXR5OyBDUkVBVEUgSU5ERVggLyBSRUlO REVYCiAgYW5kIERST1AgSU5ERVggb3ZlciBsaXZlIGNoYWluczsgcHJ1bmUgcmVjbGFtYXRp b24sIHN0dWIgbWl4ZXMsIGFuZAogIHJlLWNvbGxhcHNlIGFjcm9zcyBwYXJ0aWFsIFZBQ1VV TXM7IHRoZSBuZXZlci1hbGwtdmlzaWJsZSBndWFyZDsgYW5kIERETAogIGFmdGVyIGEgY2hh aW4gZXhpc3RzIChBREQgQ09MVU1OIGNyb3NzaW5nIGEgYml0bWFwLXNpemUgYm91bmRhcnks IERST1AKICBDT0xVTU4pLgotIGhvdF9pbmRleGVkX2FkdmVyc2FyaWFsIChpc29sYXRpb24p OiBjb25jdXJyZW50IFVQREFURSAvIFZBQ1VVTSAvIHBydW5lIGFuZAogIGluZGV4IHNjYW5z LCBrZXkgY3ljbGluZywgYWJvcnRzLCBhbmQgcmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBh IGNvbmN1cnJlbnQKICBjb2xsYXBzZS4KLSAwNTRfaG90X2luZGV4ZWRfcmVjb3ZlcnkgKHJl Y292ZXJ5KTogV0FMIHJlcGxheSBvZiB0aGUgY2hhaW4gYW5kIGl0cyBjb2xsYXBzZQogIHVu ZGVyIHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZy4KLSBwZ19zdXJnZXJ5IGhhbmRsaW5nIG9m IEhPVC1pbmRleGVkIHR1cGxlcyBhbmQgY29sbGFwc2Utc3Vydml2b3Igc3R1YnMuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi9wZ19zdXJn ZXJ5L01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBjb250cmliL3BnX3N1 cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dCAgfCAgIDgzICsKIGNvbnRyaWIvcGdf c3VyZ2VyeS9oZWFwX3N1cmdlcnkuYyAgICAgICAgICAgICB8ICAgMTYgKwogY29udHJpYi9w Z19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsICAgICAgIHwgICA1MyArCiBkb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgICAgfCAgIDU3ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgIDEgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4ZWRfc3RhdHMuYyAgIHwgIDE4OCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAgMSAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MTIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICAyOCArCiAuLi4vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0ICAgICAg fCAgMTM5ICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAg ICAgfCAgICAxICsKIC4uLi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjICAg ICAgICB8ICAxMjMgKysKIHNyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogLi4uL3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsICAgIHwgIDE0OSArKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQgIHwgMTkxMSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAxMiArCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3FsICB8IDEzMTYgKysrKysrKysr KysrCiAyMSBmaWxlcyBjaGFuZ2VkLCA0MDk5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9ob3RfaW5k ZXhlZF9zdGF0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVj CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4 ZWRfcmVjb3ZlcnkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUgYi9jb250cmliL3BnX3N1cmdlcnkvTWFr ZWZpbGUKaW5kZXggYTY2Nzc2YzRjNDEuLmRhNzUyYTgxMTQ3IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L01ha2Vm aWxlCkBAIC0xMCw2ICsxMCw3IEBAIERBVEEgPSBwZ19zdXJnZXJ5LS0xLjAuc3FsCiBQR0ZJ TEVERVNDID0gInBnX3N1cmdlcnkgLSBwZXJmb3JtIHN1cmdlcnkgb24gYSBkYW1hZ2VkIHJl bGF0aW9uIgogCiBSRUdSRVNTID0gaGVhcF9zdXJnZXJ5CitFWFRSQV9JTlNUQUxMID0gY29u dHJpYi9wYWdlaW5zcGVjdAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29u ZmlnCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJn ZXJ5Lm91dCBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdlcnkub3V0 CmluZGV4IGRmN2QxM2IwOTA4Li4xYTVmZWY1YjJiYiAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19zdXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKKysrIGIvY29udHJpYi9wZ19z dXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKQEAgLTE3NSw2ICsxNzUsODkgQEAg REVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3MuCiBz ZWxlY3QgaGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSkn XTo6dGlkW10pOwogRVJST1I6ICBjYW5ub3Qgb3BlcmF0ZSBvbiByZWxhdGlvbiAidnciCiBE RVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KKy0t IEEgSE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4gcm9vdCBhbmQgZWFj aCBkZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQX1JFRElSRUNUIHRv IHRoZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiByZWFsCistLSB0dXBs ZXMgYW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBhZnRlciBzdWNoIGEg Y29sbGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworY3JlYXRlIHRhYmxl IGh0b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0aCAoZmlsbGZh Y3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21iKGEpOworaW5zZXJ0 IGludG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhPVC1pbmRleGVkIHVw ZGF0ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUgZGVhZCBtaWQtY2hh aW4KKy0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0byB0aGUgbGl2ZSB0 dXBsZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3RhbGUgYnRyZWUgbGVh dmVzIChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1cGRhdGUgaHRvbWIg c2V0IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0IGEgPSAxMiB3aGVy ZSBpZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9tYjsKK3NlbGVjdCBu X2hvdF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZyb20gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0t LS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdGhlIGxpdmUgcm93IGlzIGlu dGFjdCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2VsZWN0IGlkLCBhLCBi IGZyb20gaHRvbWI7CisgaWQgfCBhICB8IGIgIAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEy IHwgMjAKKygxIHJvdykKKworZHJvcCB0YWJsZSBodG9tYjsKKy0tIEEgY29sbGFwc2UgdGhh dCBrZWVwcyBhICpzdHViKiAoYW4geGlkLWZyZWUgZm9yd2FyZGluZyBMUF9OT1JNQUwgaXRl bSB3aXRoCistLSBuYXR0cyA9PSAwKSwgbm90IGp1c3QgcmVkaXJlY3RzOiB1cGRhdGUgdHdv IGRpZmZlcmVudCBpbmRleGVkIGNvbHVtbnMgc28gdGhlCistLSBmaXJzdCBkZWFkIG1lbWJl cidzIGNoYW5nZWQtYXR0ciBiaXRtYXAgaXMgbm90IHN1YnN1bWVkIGJ5IGxhdGVyIGhvcHMg YW5kIGlzCistLSBwcmVzZXJ2ZWQgYXMgYSBzdHViLiAgcGdfc3VyZ2VyeSBtdXN0IHNraXAg c3VjaCBhIHN0dWIgLS0gZm9yY2luZyBhCistLSBmcmVlemUva2lsbCB3b3VsZCBvdmVyd3Jp dGUgaXRzIHRfY3RpZCBmb3J3YXJkIGxpbmsgYW5kIGNvcnJ1cHQgdGhlIGNoYWluLgorY3Jl YXRlIHRhYmxlIGhzdHViIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0 aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9hIG9uIGhzdHViKGEp OworY3JlYXRlIGluZGV4IGhzdHViX2Igb24gaHN0dWIoYik7CitpbnNlcnQgaW50byBoc3R1 YiB2YWx1ZXMgKDEsIDEwLCAxMDApOwordXBkYXRlIGhzdHViIHNldCBhID0gMTEgd2hlcmUg aWQgPSAxOyAgIC0tIGNoYW5nZXMgYQordXBkYXRlIGhzdHViIHNldCBhID0gMTIgd2hlcmUg aWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK3VwZGF0ZSBoc3R1 YiBzZXQgYiA9IDEwMSB3aGVyZSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIgLT4gZmlyc3QgaG9w J3Mge2F9IGtlcHQgYXMgc3R1YgordmFjdXVtIChpbmRleF9jbGVhbnVwIG9mZikgaHN0dWI7 CistLSBMb2NhdGUgdGhlIHN0dWI6IGFuIExQX05PUk1BTCBpdGVtIGNhcnJ5aW5nIEhFQVBf SU5ERVhFRF9VUERBVEVEICgweDA4MDAgaW4KKy0tIHRfaW5mb21hc2syKSB3aXRoIHplcm8g bGl2ZSBhdHRyaWJ1dGVzICh0X2luZm9tYXNrMiBuYXR0cyBiaXRzID09IDApLgorc2VsZWN0 IGxwIGFzIHN0dWJfb2ZmCisgIGZyb20gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn aHN0dWInLCAwKSkKKyAgd2hlcmUgbHBfZmxhZ3MgPSAxICAgICAgICAgICAgICAgICAgICAg ICAtLSBMUF9OT1JNQUwKKyAgICBhbmQgKHRfaW5mb21hc2syICYgMjA0OCkgPD4gMCAgICAg ICAgICAtLSBIRUFQX0lOREVYRURfVVBEQVRFRAorICAgIGFuZCAodF9pbmZvbWFzazIgJiAy MDQ3KSA9IDAgICAgICAgICAgIC0tIG5hdHRzID09IDAgKHN0dWIgc2VudGluZWwpCisgIFxn c2V0CistLSBGb3JjZSBraWxsL2ZyZWV6ZSBvbiB0aGUgc3R1YidzIHRpZDogYm90aCBtdXN0 IGJlIHJlZnVzZWQgd2l0aCBhIE5PVElDRS4KK3NlbGVjdCBoZWFwX2ZvcmNlX2tpbGwoJ2hz dHViJzo6cmVnY2xhc3MsIEFSUkFZWygnKDAsJyB8fCA6J3N0dWJfb2ZmJyB8fCAnKScpXTo6 dGlkW10pOworTk9USUNFOiAgc2tpcHBpbmcgdGlkICgwLCAzKSBmb3IgcmVsYXRpb24gImhz dHViIiBiZWNhdXNlIGl0IGlzIGEgSE9ULWluZGV4ZWQgY29sbGFwc2Ugc3R1YgorIGhlYXBf Zm9yY2Vfa2lsbCAKKy0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBo ZWFwX2ZvcmNlX2ZyZWV6ZSgnaHN0dWInOjpyZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDon c3R1Yl9vZmYnIHx8ICcpJyldOjp0aWRbXSk7CitOT1RJQ0U6ICBza2lwcGluZyB0aWQgKDAs IDMpIGZvciByZWxhdGlvbiAiaHN0dWIiIGJlY2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBj b2xsYXBzZSBzdHViCisgaGVhcF9mb3JjZV9mcmVlemUgCistLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKKy0tIFRoZSBjaGFpbiBpcyB1bnRvdWNoZWQ6IHRoZSBsaXZlIHJv dyBpcyBzdGlsbCByZWFjaGFibGUgdGhyb3VnaCBlYWNoIGluZGV4Lgorc2V0IGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworc2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworc2VsZWN0IGlk LCBhLCBiIGZyb20gaHN0dWIgd2hlcmUgYSA9IDEyOworIGlkIHwgYSAgfCAgYiAgCistLS0t Ky0tLS0rLS0tLS0KKyAgMSB8IDEyIHwgMTAxCisoMSByb3cpCisKK3NlbGVjdCBpZCwgYSwg YiBmcm9tIGhzdHViIHdoZXJlIGIgPSAxMDE7CisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0t LSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworcmVzZXQgZW5hYmxlX2JpdG1h cHNjYW47CityZXNldCBlbmFibGVfc2Vxc2NhbjsKK2Ryb3AgdGFibGUgaHN0dWI7Citkcm9w IGV4dGVuc2lvbiBwYWdlaW5zcGVjdDsKIC0tIGNsZWFudXAuCiBkcm9wIHZpZXcgdnc7CiBk cm9wIGV4dGVuc2lvbiBwZ19zdXJnZXJ5OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdXJn ZXJ5L2hlYXBfc3VyZ2VyeS5jIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBfc3VyZ2VyeS5j CmluZGV4IGI4Y2UxMDk1NzgyLi43ZmM2NTNjYzMzNCAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19zdXJnZXJ5L2hlYXBfc3VyZ2VyeS5jCisrKyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9oZWFw X3N1cmdlcnkuYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK ICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hv dF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5o IgpAQCAtMjI2LDYgKzIyNywyMSBAQCBoZWFwX2ZvcmNlX2NvbW1vbihGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywgSGVhcFR1cGxlRm9yY2VPcHRpb24gaGVhcF9mb3JjZV9vcHQpCiAJCQkJ CQkJCWJsa25vLCBvZmZubywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJ CQljb250aW51ZTsKIAkJCX0KKwkJCWVsc2UgaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIo KEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKSkpCisJCQl7CisJ CQkJLyoKKwkJCQkgKiBBIEhPVC1pbmRleGVkIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgaXMg YW4geGlkLWZyZWUKKwkJCQkgKiBmb3J3YXJkaW5nIG5vZGUsIG5vdCBhIHJlYWwgdHVwbGU6 IGl0cyB0X2N0aWQgY2FycmllcyB0aGUKKwkJCQkgKiBjaGFpbiBmb3J3YXJkIGxpbmsgYW5k IHRoZSB3cml0ZS10aW1lIG5hdHRzLCBhbmQgaXQgaGFzIG5vCisJCQkJICogYXR0cmlidXRl IGRhdGEuICBGb3JjaW5nIGEga2lsbCBvciBmcmVlemUgd291bGQgb3ZlcndyaXRlCisJCQkJ ICogdF9jdGlkIGFuZCBjbGVhciBpdHMgeGFjdCBiaXRzLCBicmVha2luZyB0aGUgY2hhaW4g d2FsayBhbmQKKwkJCQkgKiBjb3JydXB0aW5nIHRoZSBoZWFwLiAgU2tpcCBpdCwgYXMgd2Ug ZG8gZm9yIHJlZGlyZWN0cy4KKwkJCQkgKi8KKwkJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJ CShlcnJtc2coInNraXBwaW5nIHRpZCAoJXUsICV1KSBmb3IgcmVsYXRpb24gXCIlc1wiIGJl Y2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xsYXBzZSBzdHViIiwKKwkJCQkJCQkJYmxr bm8sIG9mZm5vLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCWNvbnRp bnVlOworCQkJfQogCiAJCQkvKiBNYXJrIGl0IGZvciBwcm9jZXNzaW5nLiAqLwogCQkJQXNz ZXJ0KG9mZm5vIDw9IE1heEhlYXBUdXBsZXNQZXJQYWdlKTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbCBiL2NvbnRyaWIvcGdfc3VyZ2Vy eS9zcWwvaGVhcF9zdXJnZXJ5LnNxbAppbmRleCA2NTI2YjI3NTM1ZC4uYmU0ZmVkMmFmNjUg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbAor KysgYi9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKQEAgLTgzLDYg KzgzLDU5IEBAIGNyZWF0ZSB2aWV3IHZ3IGFzIHNlbGVjdCAxOwogc2VsZWN0IGhlYXBfZm9y Y2Vfa2lsbCgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSddOjp0aWRbXSk7CiBzZWxl Y3QgaGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSknXTo6 dGlkW10pOwogCistLSBBIEhPVC9TSVUgY2hhaW4gY29sbGFwc2UgdHVybnMgdGhlIGNoYWlu IHJvb3QgYW5kIGVhY2ggZGVhZCBlbnRyeS1iZWFyaW5nCistLSBtZW1iZXIgaW50byBhbiBM UF9SRURJUkVDVCB0byB0aGUgbGl2ZSB0dXBsZS4gIHBnX3N1cmdlcnkgb3BlcmF0ZXMgb24g cmVhbAorLS0gdHVwbGVzIGFuZCBtdXN0IGxlYXZlIHRoZSBsaXZlIHJvdyByZWFjaGFibGUg YWZ0ZXIgc3VjaCBhIGNvbGxhcHNlLgorY3JlYXRlIGV4dGVuc2lvbiBwYWdlaW5zcGVjdDsK K2NyZWF0ZSB0YWJsZSBodG9tYiAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwgYiBpbnQp IHdpdGggKGZpbGxmYWN0b3IgPSA1MCk7CitjcmVhdGUgaW5kZXggaHRvbWJfYSBvbiBodG9t YihhKTsKK2luc2VydCBpbnRvIGh0b21iIHZhbHVlcyAoMSwgMTAsIDIwKTsKKy0tIFR3byBI T1QtaW5kZXhlZCB1cGRhdGVzIG9uIGFuIGluZGV4ZWQgYXR0ciwgdGhlbiBwcnVuZTogdGhl IGRlYWQgbWlkLWNoYWluCistLSB2ZXJzaW9ucyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVHMg dG8gdGhlIGxpdmUgdHVwbGUuICBJTkRFWF9DTEVBTlVQIG9mZiBrZWVwcworLS0gdGhlIHN0 YWxlIGJ0cmVlIGxlYXZlcyAoYW5kIGhlbmNlIHRoZSByZWRpcmVjdHMpIGluIHBsYWNlLgor dXBkYXRlIGh0b21iIHNldCBhID0gMTEgd2hlcmUgaWQgPSAxOwordXBkYXRlIGh0b21iIHNl dCBhID0gMTIgd2hlcmUgaWQgPSAxOwordmFjdXVtIChpbmRleF9jbGVhbnVwIG9mZikgaHRv bWI7CitzZWxlY3Qgbl9ob3RfaW5kZXhlZCA+IDAgYXMgbWFkZV9ob3RfaW5kZXhlZAorICBm cm9tIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdodG9tYicpOworLS0gdGhlIGxp dmUgcm93IGlzIGludGFjdCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2Vs ZWN0IGlkLCBhLCBiIGZyb20gaHRvbWI7Citkcm9wIHRhYmxlIGh0b21iOworCistLSBBIGNv bGxhcHNlIHRoYXQga2VlcHMgYSAqc3R1YiogKGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgTFBf Tk9STUFMIGl0ZW0gd2l0aAorLS0gbmF0dHMgPT0gMCksIG5vdCBqdXN0IHJlZGlyZWN0czog dXBkYXRlIHR3byBkaWZmZXJlbnQgaW5kZXhlZCBjb2x1bW5zIHNvIHRoZQorLS0gZmlyc3Qg ZGVhZCBtZW1iZXIncyBjaGFuZ2VkLWF0dHIgYml0bWFwIGlzIG5vdCBzdWJzdW1lZCBieSBs YXRlciBob3BzIGFuZCBpcworLS0gcHJlc2VydmVkIGFzIGEgc3R1Yi4gIHBnX3N1cmdlcnkg bXVzdCBza2lwIHN1Y2ggYSBzdHViIC0tIGZvcmNpbmcgYQorLS0gZnJlZXplL2tpbGwgd291 bGQgb3ZlcndyaXRlIGl0cyB0X2N0aWQgZm9yd2FyZCBsaW5rIGFuZCBjb3JydXB0IHRoZSBj aGFpbi4KK2NyZWF0ZSB0YWJsZSBoc3R1YiAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwg YiBpbnQpIHdpdGggKGZpbGxmYWN0b3IgPSA1MCk7CitjcmVhdGUgaW5kZXggaHN0dWJfYSBv biBoc3R1YihhKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9iIG9uIGhzdHViKGIpOworaW5zZXJ0 IGludG8gaHN0dWIgdmFsdWVzICgxLCAxMCwgMTAwKTsKK3VwZGF0ZSBoc3R1YiBzZXQgYSA9 IDExIHdoZXJlIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEKK3VwZGF0ZSBoc3R1YiBzZXQgYSA9 IDEyIHdoZXJlIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1cGVyc2VkZXMpCit1 cGRhdGUgaHN0dWIgc2V0IGIgPSAxMDEgd2hlcmUgaWQgPSAxOyAgLS0gY2hhbmdlcyBiIC0+ IGZpcnN0IGhvcCdzIHthfSBrZXB0IGFzIHN0dWIKK3ZhY3V1bSAoaW5kZXhfY2xlYW51cCBv ZmYpIGhzdHViOworLS0gTG9jYXRlIHRoZSBzdHViOiBhbiBMUF9OT1JNQUwgaXRlbSBjYXJy eWluZyBIRUFQX0lOREVYRURfVVBEQVRFRCAoMHgwODAwIGluCistLSB0X2luZm9tYXNrMikg d2l0aCB6ZXJvIGxpdmUgYXR0cmlidXRlcyAodF9pbmZvbWFzazIgbmF0dHMgYml0cyA9PSAw KS4KK3NlbGVjdCBscCBhcyBzdHViX29mZgorICBmcm9tIGhlYXBfcGFnZV9pdGVtcyhnZXRf cmF3X3BhZ2UoJ2hzdHViJywgMCkpCisgIHdoZXJlIGxwX2ZsYWdzID0gMSAgICAgICAgICAg ICAgICAgICAgICAgLS0gTFBfTk9STUFMCisgICAgYW5kICh0X2luZm9tYXNrMiAmIDIwNDgp IDw+IDAgICAgICAgICAgLS0gSEVBUF9JTkRFWEVEX1VQREFURUQKKyAgICBhbmQgKHRfaW5m b21hc2syICYgMjA0NykgPSAwICAgICAgICAgICAtLSBuYXR0cyA9PSAwIChzdHViIHNlbnRp bmVsKQorICBcZ3NldAorLS0gRm9yY2Uga2lsbC9mcmVlemUgb24gdGhlIHN0dWIncyB0aWQ6 IGJvdGggbXVzdCBiZSByZWZ1c2VkIHdpdGggYSBOT1RJQ0UuCitzZWxlY3QgaGVhcF9mb3Jj ZV9raWxsKCdoc3R1Yic6OnJlZ2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidzdHViX29mZicg fHwgJyknKV06OnRpZFtdKTsKK3NlbGVjdCBoZWFwX2ZvcmNlX2ZyZWV6ZSgnaHN0dWInOjpy ZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1Yl9vZmYnIHx8ICcpJyldOjp0aWRbXSk7 CistLSBUaGUgY2hhaW4gaXMgdW50b3VjaGVkOiB0aGUgbGl2ZSByb3cgaXMgc3RpbGwgcmVh Y2hhYmxlIHRocm91Z2ggZWFjaCBpbmRleC4KK3NldCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K3NldCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGhz dHViIHdoZXJlIGEgPSAxMjsKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGhzdHViIHdoZXJlIGIg PSAxMDE7CityZXNldCBlbmFibGVfYml0bWFwc2NhbjsKK3Jlc2V0IGVuYWJsZV9zZXFzY2Fu OworZHJvcCB0YWJsZSBoc3R1YjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworCiAt LSBjbGVhbnVwLgogZHJvcCB2aWV3IHZ3OwogZHJvcCBleHRlbnNpb24gcGdfc3VyZ2VyeTsK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDg1ODc4OGIyMjdjLi44N2M4MDI1N2U2YyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCkBAIC00NDY3LDYgKzQ0NjcsMTkgQEAgZGVzY3JpcHRpb24g fCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1 cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1 cF9ob3RfaW5kZXhlZF91cGQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Ygcm93cyB1cGRh dGVkIHVzaW5nIHRoZSBIT1QtaW5kZXhlZCBwYXRoOiB0aGUgc3VjY2Vzc29yCisgICAgICAg dmVyc2lvbiBzdGF5cyBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIGV2 ZW4gdGhvdWdoIGl0CisgICAgICAgY2hhbmdlZCBvbmUgb3IgbW9yZSBpbmRleGVkIGNvbHVt bnMsIGFuZCBvbmx5IHRoZSBhZmZlY3RlZCBpbmRleGVzCisgICAgICAgcmVjZWl2ZSBhIG5l dyBlbnRyeS4gIEV2ZXJ5IHN1Y2ggdXBkYXRlIGlzIGFsc28gY291bnRlZCBpbgorICAgICAg IDxzdHJ1Y3RmaWVsZD5uX3R1cF9ob3RfdXBkPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CiAgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVwX25ld3BhZ2VfdXBkPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+YmlnaW50PC90eXBlPgpAQCAtNDkzNyw2ICs0OTUwLDI3IEBAIGRlc2NyaXB0 aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFj aCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4K IAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ bl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdp bnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIg b2YgSE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IGluc2VydGVkIGEgbmV3IGVudHJ5IGludG8g dGhpcworICAgICAgIGluZGV4ICh0aGUgdXBkYXRlIGNoYW5nZWQgb25lIG9mIHRoaXMgaW5k ZXgncyBhdHRyaWJ1dGVzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5u X3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgc2tpcHBlZCB0aGlzIGluZGV4ICh0aGUgdXBk YXRlCisgICAgICAgY2hhbmdlZCBubyBhdHRyaWJ1dGUgb2YgdGhpcyBpbmRleCwgc28gaXRz IGV4aXN0aW5nIGVudHJ5IGNvbnRpbnVlcworICAgICAgIHRvIHJlc29sdmUgdGhlIEhPVCBj aGFpbikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93 PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICAgPHN0cnVjdGZpZWxkPnN0YXRzX3Jlc2V0 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgpA QCAtNTYxOCw2ICs1NjUyLDI5IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXds eSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAg PC90aGVhZD4KIAogICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBp ZD0icGctcmVsYXRpb24taG90LWluZGV4ZWQtc3RhdHMiIHJvbGU9ImZ1bmNfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4K KyAgICAgICAgIDxwcmltYXJ5PnBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzPC9wcmlt YXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnJlbGF0aW9u PC9wYXJhbWV0ZXI+IDx0eXBlPnJlZ2NsYXNzPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52 YWx1ZT5yZWNvcmQ8L3JldHVybnZhbHVlPgorICAgICAgICAoIDxwYXJhbWV0ZXI+bl9ob3Rf aW5kZXhlZDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICA8cGFy YW1ldGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAg ICAgIDxwYXJhbWV0ZXI+YXZnX2NoYWluX2xlbjwvcGFyYW1ldGVyPiA8dHlwZT5kb3VibGUg cHJlY2lzaW9uPC90eXBlPiwKKyAgICAgICAgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVuPC9w YXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4gKQorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgUmVwb3J0cyBIT1QtaW5kZXhlZCBzdHJ1Y3R1cmFsIHN0YXRp c3RpY3MgZm9yIGEgdGFibGUgYnkgc2Nhbm5pbmcKKyAgICAgICAgZXZlcnkgcGFnZSB1bmRl ciA8bGl0ZXJhbD5BY2Nlc3NTaGFyZUxvY2s8L2xpdGVyYWw+OgorICAgICAgICA8cGFyYW1l dGVyPm5faG90X2luZGV4ZWQ8L3BhcmFtZXRlcj4gaXMgdGhlIG51bWJlciBvZiBsaXZlCisg ICAgICAgIEhPVC1pbmRleGVkIHR1cGxlIHZlcnNpb25zIHByZXNlbnQsIGFuZAorICAgICAg ICA8cGFyYW1ldGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPmF2Z19jaGFp bl9sZW48L3BhcmFtZXRlcj4KKyAgICAgICAgYW5kIDxwYXJhbWV0ZXI+bWF4X2NoYWluX2xl bjwvcGFyYW1ldGVyPiBkZXNjcmliZSB0aGUgSE9ULWluZGV4ZWQKKyAgICAgICAgY2hhaW5z LiAgSW50ZW5kZWQgZm9yIGRpYWdub3N0aWNzLgorICAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPCEtLSBTZWUgYWxzbyB0aGUg ZW50cnkgZm9yIHRoaXMgaW4gZnVuYy5zZ21sIC0tPgogICAgICAgIDxlbnRyeSByb2xlPSJm dW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL01ha2VmaWxlCmluZGV4IDFkMjdjY2I5MTZlLi5kZmFmMzM1MDczNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKQEAgLTIwLDYgKzIwLDcgQEAgT0JKUyA9IFwK IAloZWFwYW1feGxvZy5vIFwKIAloZWFwdG9hc3QubyBcCiAJaGlvLm8gXAorCWhvdF9pbmRl eGVkX3N0YXRzLm8gXAogCXBydW5laGVhcC5vIFwKIAlyZXdyaXRlaGVhcC5vIFwKIAl2YWN1 dW1sYXp5Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2lu ZGV4ZWRfc3RhdHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0 YXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg5NWEyOTY1 NGI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2lu ZGV4ZWRfc3RhdHMuYwpAQCAtMCwwICsxLDE4OCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogaG90X2luZGV4ZWRfc3RhdHMuYworICoJICBTUUwtY2FsbGFibGUgZGlhZ25v c3RpYyB0aGF0IHdhbGtzIGV2ZXJ5IHBhZ2Ugb2YgYSBoZWFwIHJlbGF0aW9uIGFuZAorICoJ ICByZXBvcnRzIGhvdC1pbmRleGVkLXJlbGF0ZWQgc3RydWN0dXJhbCBzdGF0aXN0aWNzLgor ICoKKyAqIFRoZXNlIG51bWJlcnMgY29tcGxlbWVudCB0aGUgcnVubmluZyBwZ3N0YXQgY291 bnRlcnMKKyAqIChuX3R1cF9ob3RfaW5kZXhlZF91cGQgaW4gcGdfc3RhdF9hbGxfdGFibGVz KTogdGhleSBhbnN3ZXIgIndoYXQgaXMgb24gZGlzaworICogcmlnaHQgbm93PyIgcmF0aGVy IHRoYW4gImhvdyBvZnRlbiBkaWQgaG90LWluZGV4ZWQgZmlyZSBkdXJpbmcgdGhlIHN0YXRz CisgKiB3aW5kb3c/Ii4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0 cy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jl cy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9o b3RfaW5kZXhlZC5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5 cGUuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9idWZwYWdlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pdGVtcHRyLmgiCisj aW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNp bmNsdWRlICJ1dGlscy9yZWwuaCIKKworLyoKKyAqIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVk X3N0YXRzKHJlZ2NsYXNzKSAtPiByZWNvcmQKKyAqCisgKiBXYWxrcyBldmVyeSBibG9jayBv ZiB0aGUgcmVsYXRpb24ncyBtYWluIGZvcmsgYW5kIGNvdW50czoKKyAqICAgbl9ob3RfaW5k ZXhlZCAgIC0tIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgKEhFQVBfSU5ERVhFRF9VUERB VEVELCBuYXR0cz4wLAorICogICAgICAgICAgICAgICAgICAgICAgY2FycnlpbmcgYW4gaW5s aW5lLXRyYWlsaW5nIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCkKKyAqICAgbl9jaGFpbnMgICAg ICAgIC0tIExQX1JFRElSRUNUIGl0ZW1zLCBpLmUuIEhPVCBjaGFpbiByb290cy4gIE1hdGNo ZXMKKyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZGlzdGluY3QgSE9U IGNoYWlucyB0aGF0IGhhdmUgc3Vydml2ZWQKKyAqICAgICAgICAgICAgICAgICAgICAgIHRo ZSBtb3N0IHJlY2VudCBwcnVuZS4gIFJvb3Qtbm90LXJlZGlyZWN0IGNoYWlucworICogICAg ICAgICAgICAgICAgICAgICAgKGxlbmd0aCAxKSBhcmUgbm90IGNvdW50ZWQgaGVyZSBiZWNh dXNlIHRoZXkgYXJlCisgKiAgICAgICAgICAgICAgICAgICAgICBpbmRpc3Rpbmd1aXNoYWJs ZSBmcm9tIGEgbm9uLWNoYWluIHR1cGxlLgorICogICBhdmdfY2hhaW5fbGVuICAgLS0gbWVh biBsZW5ndGggYWNyb3NzIGNoYWlucyByb290ZWQgYXQgYW4gTFBfUkVESVJFQ1QsCisgKiAg ICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGJ5IHdhbGtpbmcgZWFjaCByZWRpcmVjdCB0 YXJnZXQgdG8gdGhlIGVuZAorICogICAgICAgICAgICAgICAgICAgICAgb2YgaXRzIEhFQVBf SE9UX1VQREFURUQgY2hhaW4uCisgKiAgIG1heF9jaGFpbl9sZW4gICAtLSBsb25nZXN0IGNo YWluIG9ic2VydmVkLgorICoKKyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIFNFTEVDVCBwcml2 aWxlZ2Ugb24gdGhlIHJlbGF0aW9uLCBsaWtlIG90aGVyCisgKiByZWxhdGlvbi1pbnNwZWN0 aW9uIGZ1bmN0aW9uczsgaXQgdGFrZXMgb25seSBBY2Nlc3NTaGFyZUxvY2sgYW5kIHNob3J0 LXRlcm0KKyAqIGJ1ZmZlciBzaGFyZSBsb2NrcyB3aGlsZSBzY2FubmluZy4KKyAqLworRGF0 dW0KK3BnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJT2lkCQkJcmVsaWQgPSBQR19HRVRBUkdfT0lEKDApOworCVJlbGF0aW9uCXJlbDsKKwlB Y2xSZXN1bHQJYWNscmVzdWx0OworCUJsb2NrTnVtYmVyIG5ibG9ja3M7CisJQmxvY2tOdW1i ZXIgYmxrOworCWludDY0CQluX2hvdF9pbmRleGVkID0gMDsKKwlpbnQ2NAkJbl9jaGFpbnMg PSAwOworCWludDY0CQlzdW1fY2hhaW5fbGVuID0gMDsKKwlpbnQ2NAkJbWF4X2NoYWluX2xl biA9IDA7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZhbHVlc1s0XTsKKwlib29s CQludWxsc1s0XSA9IHswfTsKKwlIZWFwVHVwbGUJcmVzdWx0dHVwOworCisJcmVsID0gcmVs YXRpb25fb3BlbihyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlpZiAocmVsLT5yZF9yZWwt PnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgorCQlyZWwtPnJkX3JlbC0+cmVsa2lu ZCAhPSBSRUxLSU5EX01BVFZJRVcgJiYKKwkJcmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVM S0lORF9UT0FTVFZBTFVFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0 YWJsZSwgbWF0ZXJpYWxpemVkIHZpZXcsIG9yIFRPQVNUIHRhYmxlIiwKKwkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwkvKiBDYWxsZXIgbXVzdCBiZSBhYmxl IHRvIHJlYWQgdGhlIHJlbGF0aW9uLiAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNo ZWNrKHJlbGlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LAorCQkJCQkgICBn ZXRfcmVsa2luZF9vYmp0eXBlKHJlbC0+cmRfcmVsLT5yZWxraW5kKSwKKwkJCQkJICAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisKKwluYmxvY2tzID0gUmVsYXRpb25HZXRO dW1iZXJPZkJsb2NrcyhyZWwpOworCisJZm9yIChibGsgPSAwOyBibGsgPCBuYmxvY2tzOyBi bGsrKykKKwl7CisJCUJ1ZmZlcgkJYnVmOworCQlQYWdlCQlwYWdlOworCQlPZmZzZXROdW1i ZXIgb2ZmOworCQlPZmZzZXROdW1iZXIgbWF4b2ZmOworCisJCUNIRUNLX0ZPUl9JTlRFUlJV UFRTKCk7CisKKwkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVN LCBibGssIFJCTV9OT1JNQUwsIE5VTEwpOworCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xP Q0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCisJCWlmIChQYWdl SXNOZXcocGFnZSkgfHwgUGFnZUlzRW1wdHkocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVh c2VCdWZmZXIoYnVmKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJbWF4b2ZmID0gUGFnZUdl dE1heE9mZnNldE51bWJlcihwYWdlKTsKKwkJZm9yIChvZmYgPSBGaXJzdE9mZnNldE51bWJl cjsgb2ZmIDw9IG1heG9mZjsgb2ZmID0gT2Zmc2V0TnVtYmVyTmV4dChvZmYpKQorCQl7CisJ CQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmYpOworCisJCQlpZiAoIUl0 ZW1JZElzVXNlZChscCkpCisJCQkJY29udGludWU7CisKKwkJCWlmIChJdGVtSWRJc1JlZGly ZWN0ZWQobHApKQorCQkJeworCQkJCS8qIFdhbGsgdGhlIGNoYWluIHN0YXJ0aW5nIGF0IHRo ZSByZWRpcmVjdCB0YXJnZXQuICovCisJCQkJT2Zmc2V0TnVtYmVyIGN1ciA9IEl0ZW1JZEdl dFJlZGlyZWN0KGxwKTsKKwkJCQlpbnQ2NAkJbGVuID0gMDsKKworCQkJCS8qCisJCQkJICog V2FsayB0aGUgc2FtZS1wYWdlIEhPVCBjaGFpbi4gIEJvdW5kIHRoZSBsb29wIGJ5IHRoZSBw YWdlJ3MKKwkJCQkgKiBpdGVtIGNvdW50IHNvIGEgY29ycnVwdCBjeWNsaWMgdF9jdGlkIGNh bm5vdCBzcGluIGZvcmV2ZXIKKwkJCQkgKiB1bmRlciB0aGUgYnVmZmVyIGxvY2ssIGFuZCBj aGVjayBmb3IgaW50ZXJydXB0cyBlYWNoIHN0ZXAuCisJCQkJICovCisJCQkJd2hpbGUgKGN1 ciA+PSBGaXJzdE9mZnNldE51bWJlciAmJiBjdXIgPD0gbWF4b2ZmICYmIGxlbiA8IG1heG9m ZikKKwkJCQl7CisJCQkJCUl0ZW1JZAkJY2hhaW5fbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IGN1cik7CisJCQkJCUhlYXBUdXBsZUhlYWRlciB0aGRyOworCisJCQkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKKwkJCQkJaWYgKCFJdGVtSWRJc05vcm1hbChjaGFpbl9scCkpCisJ CQkJCQlicmVhazsKKwkJCQkJdGhkciA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVt KHBhZ2UsIGNoYWluX2xwKTsKKwkJCQkJbGVuKys7CisJCQkJCWlmICghKHRoZHItPnRfaW5m b21hc2syICYgSEVBUF9IT1RfVVBEQVRFRCkpCisJCQkJCQlicmVhazsKKwkJCQkJLyogSE9U IGNoYWlucyBzdGF5IG9uIG9uZSBwYWdlOyBzdG9wIGlmIHRoZSBsaW5rIGxlYXZlcyBpdC4g Ki8KKwkJCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnRoZHItPnRfY3RpZCkg IT0gYmxrKQorCQkJCQkJYnJlYWs7CisJCQkJCWN1ciA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKCZ0aGRyLT50X2N0aWQpOworCQkJCX0KKwkJCQlpZiAobGVuID4gMCkKKwkJCQl7 CisJCQkJCW5fY2hhaW5zKys7CisJCQkJCXN1bV9jaGFpbl9sZW4gKz0gbGVuOworCQkJCQlp ZiAobGVuID4gbWF4X2NoYWluX2xlbikKKwkJCQkJCW1heF9jaGFpbl9sZW4gPSBsZW47CisJ CQkJfQorCQkJfQorCQkJZWxzZSBpZiAoSXRlbUlkSXNOb3JtYWwobHApKQorCQkJeworCQkJ CUhlYXBUdXBsZUhlYWRlciB0aGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0o cGFnZSwgbHApOworCisJCQkJaWYgKCFIb3RJbmRleGVkSGVhZGVySXNTdHViKHRoZHIpICYm CisJCQkJCSh0aGRyLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAw KQorCQkJCQluX2hvdF9pbmRleGVkKys7CisJCQl9CisJCX0KKworCQlVbmxvY2tSZWxlYXNl QnVmZmVyKGJ1Zik7CisJfQorCisJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKDQpOworCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMSwgIm5faG90X2luZGV4ZWQi LCBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRy TnVtYmVyKSAyLCAibl9jaGFpbnMiLCBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAiYXZnX2NoYWluX2xlbiIsIEZMT0FU OE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJl cikgNCwgIm1heF9jaGFpbl9sZW4iLCBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjRmlu YWxpemUodHVwZGVzYyk7CisJdHVwZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwor CisJdmFsdWVzWzBdID0gSW50NjRHZXREYXR1bShuX2hvdF9pbmRleGVkKTsKKwl2YWx1ZXNb MV0gPSBJbnQ2NEdldERhdHVtKG5fY2hhaW5zKTsKKwlpZiAobl9jaGFpbnMgPiAwKQorCQl2 YWx1ZXNbMl0gPSBGbG9hdDhHZXREYXR1bSgoKGRvdWJsZSkgc3VtX2NoYWluX2xlbikgLyAo ZG91YmxlKSBuX2NoYWlucyk7CisJZWxzZQorCQl2YWx1ZXNbMl0gPSBGbG9hdDhHZXREYXR1 bSgwLjApOworCXZhbHVlc1szXSA9IEludDY0R2V0RGF0dW0obWF4X2NoYWluX2xlbik7CisK KwlyZXN1bHR0dXAgPSBoZWFwX2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7 CisJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERhdHVtKHJlc3VsdHR1cCkpOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWlsZAppbmRleCAwMGVjMDdkN2YzMC4uYjVj MmE4ZDVjYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1 aWxkCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkCkBAIC04LDYg KzgsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdoZWFwYW1feGxvZy5jJywK ICAgJ2hlYXB0b2FzdC5jJywKICAgJ2hpby5jJywKKyAgJ2hvdF9pbmRleGVkX3N0YXRzLmMn LAogICAncHJ1bmVoZWFwLmMnLAogICAncmV3cml0ZWhlYXAuYycsCiAgICd2YWN1dW1sYXp5 LmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDZjMWM1NTQ1 Y2I1Li4wMmM4YTA0OWEzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bApAQCAtNzMwLDYgKzczMCw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxsX3RhYmxlcyBB UwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQoQy5vaWQpIEFTIG5f dHVwX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKEMub2lk KSBBUyBuX3R1cF9kZWwsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X3Vw ZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisgICAgICAgICAgICBwZ19zdGF0X2dl dF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90X2luZGV4 ZWRfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRl ZChDLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dl dF9saXZlX3R1cGxlcyhDLm9pZCkgQVMgbl9saXZlX3R1cCwKICAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X2RlYWRfdHVwbGVzKEMub2lkKSBBUyBuX2RlYWRfdHVwLApAQCAtNzY4LDYgKzc2 OSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfeGFjdF9hbGxfdGFibGVzIEFTCiAgICAgICAg ICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKEMub2lkKSBBUyBuX3R1cF91 cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKEMub2lk KSBBUyBuX3R1cF9kZWwsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19o b3RfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICAgICAgICAgIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVw X2hvdF9pbmRleGVkX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVz X25ld3BhZ2VfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQKICAgICBGUk9N IHBnX2NsYXNzIEMgTEVGVCBKT0lOCiAgICAgICAgICBwZ19pbmRleCBJIE9OIEMub2lkID0g SS5pbmRyZWxpZApAQCAtODY5LDYgKzg3MSw4IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfYWxs X2luZGV4ZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xhc3RzY2FuKEkub2lkKSBB UyBsYXN0X2lkeF9zY2FuLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX3JldHVy bmVkKEkub2lkKSBBUyBpZHhfdHVwX3JlYWQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90 dXBsZXNfZmV0Y2hlZChJLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKKyAgICAgICAgICAgIHBn X3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQoSS5vaWQpIEFT IG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgICAgICAgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfbWF0Y2hlZChJLm9pZCkgQVMgbl90dXBf aG90X2luZGV4ZWRfdXBkX21hdGNoZWQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9zdGF0 X3Jlc2V0X3RpbWUoSS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAgICAgRlJPTSBwZ19jbGFzcyBD IEpPSU4KICAgICAgICAgICAgIHBnX2luZGV4IFggT04gQy5vaWQgPSBYLmluZHJlbGlkIEpP SU4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggNTY1ZDBlNzA3Njgu LjU1MmYzNTQwY2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0 ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAt OTMsNiArOTMsMTUgQEAgUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5UNjQodHVwbGVzX2ZldGNo ZWQpCiAvKiBwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VU X1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfdXBkYXRlZCkKIAorLyogcGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKQorCisvKiBwZ19zdGF0X2dldF90dXBs ZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkICovCitQR19TVEFUX0dFVF9SRUxFTlRS WV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQpCisKKy8qIHBnX3N0YXRf Z2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQgKi8KK1BHX1NUQVRfR0VU X1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCkKKwogLyog cGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRfUkVM RU5UUllfSU5UNjQodHVwbGVzX25ld3BhZ2VfdXBkYXRlZCkKIApAQCAtMTg4OCw2ICsxODk3 LDkgQEAgUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfZmV0Y2hlZCkK IC8qIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkICovCiBQR19TVEFUX0dF VF9YQUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfdXBkYXRlZCkKIAorLyogcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCAqLworUEdfU1RBVF9HRVRf WEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCkKKwogLyog cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3cGFnZV91cGRhdGVkICovCiBQR19TVEFUX0dF VF9YQUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQpCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDNjYjg0MzU5YWRmLi4xNzVmYTg4ZWI1NyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NTk0LDYgKzU1OTQsMjkgQEAKICAgcHJv bmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkJywgcHJvdm9sYXRpbGUg PT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBw cm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90dXBsZXNf aG90X3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1MycsCisgIGRlc2NyID0+ICdzdGF0aXN0 aWNzOiBudW1iZXIgb2YgdHVwbGVzIHVwZGF0ZWQgdmlhIEhPVC1pbmRleGVkIChTZWxlY3Rp dmUgSW5kZXggVXBkYXRlKScsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19o b3RfaW5kZXhlZF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxl bCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywK KyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcg fSwKK3sgb2lkID0+ICc5OTU2JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBv ZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgc2tpcHBlZCB0aGlzIGluZGV4JywKKyAgcHJv bmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBl ZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdf c3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkJyB9LAoreyBvaWQgPT4g Jzk5NTcnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIEhPVC1pbmRleGVk IHVwZGF0ZXMgdGhhdCBpbnNlcnRlZCBpbnRvIHRoaXMgaW5kZXgnLAorICBwcm9uYW1lID0+ ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkJywgcHJv dm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4g J2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0X2dl dF90dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQnIH0sCit7IG9pZCA9PiAnOTk1NScs CisgIGRlc2NyID0+ICdIT1QtaW5kZXhlZCBzdHJ1Y3R1cmFsIHN0YXRzOiBIT1QtaW5kZXhl ZCB2ZXJzaW9ucyBhbmQgY2hhaW4gbGVuZ3RocycsCisgIHByb25hbWUgPT4gJ3BnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJh bGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdy ZWdjbGFzcycsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7cmVnY2xhc3MsaW50OCxpbnQ4LGZs b2F0OCxpbnQ4fScsCisgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7cmVsYXRpb24sbl9ob3RfaW5kZXhlZCxuX2NoYWlucyxhdmdfY2hhaW5f bGVuLG1heF9jaGFpbl9sZW59JywKKyAgcHJvc3JjID0+ICdwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cycgfSwKIHsgb2lkID0+ICc2MjE3JywKICAgZGVzY3IgPT4gJ3N0YXRpc3Rp Y3M6IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCBvbnRvIGEgbmV3IHBhZ2UnLAogICBwcm9u YW1lID0+ICdwZ19zdGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkJywgcHJvdm9sYXRp bGUgPT4gJ3MnLApAQCAtNjE3OSw2ICs2MjAyLDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAog ICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBl cyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZCcgfSwKK3sgb2lkID0+ICc5OTU0JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiBIT1QtaW5kZXhlZCB0dXBsZSB1cGRhdGVzIGluIGN1cnJlbnQgdHJhbnNh Y3Rpb24nLAorICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5k ZXhlZF91cGRhdGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJv c3JjID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkJyB9 LAogeyBvaWQgPT4gJzYyMTgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9m IHR1cGxlcyB1cGRhdGVkIG9udG8gYSBuZXcgcGFnZSBpbiBjdXJyZW50IHRyYW5zYWN0aW9u JywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3cGFnZV91cGRh dGVkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dCBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyZjYyODAxNTEzCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVy c2FyaWFsLm91dApAQCAtMCwwICsxLDEzOSBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDYg c2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyX25vc2VxIHMxX2N5Y2xlIHMy X2VxMTAgczJfZXEyMAorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm Oworc3RlcCBzMV9jeWNsZTogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsg VVBEQVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczJfZXExMDogU0VM RUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8MTAK KygxIHJvdykKKworc3RlcCBzMl9lcTIwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUg ayA9IDIwOworaWR8aworLS0rLQorKDAgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczJfbm9zZXEgczFfY3ljbGUgczJfcmFuZ2UKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczFfY3ljbGU6IFVQREFURSBoaWEgU0VUIGsgPSAy MCBXSEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7Citz dGVwIHMyX3JhbmdlOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA+PSA1IE9SREVS IEJZIGs7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMyX25vc2VxIHMxX2JlZ2luIHMxX3VwZDIwIHMxX2Fib3J0IHMyX2VxMjAg czJfZXExMAorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworc3Rl cCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3VwZDIwOiBVUERBVEUgaGlhIFNFVCBrID0g MjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMV9hYm9ydDogUk9MTEJBQ0s7CitzdGVwIHMyX2Vx MjA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMjA7CitpZHxrCistLSstCiso MCByb3dzKQorCitzdGVwIHMyX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBr ID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMl9pbnMxMCBzMV9jb21taXQKK3N0ZXAg czFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6IFVQREFURSBoaXUgU0VUIGsgPSAy MCBXSEVSRSBpZCA9IDE7CitzdGVwIHMyX2luczEwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVT ICgyLCAxMCwgcmVwZWF0KCd5JywgNDApKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMV9jb21t aXQ6IENPTU1JVDsKK3N0ZXAgczJfaW5zMTA6IDwuLi4gY29tcGxldGVkPgorCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMxMAor c3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRFIGhpdSBTRVQg ayA9IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMy X2luczEwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgyLCAxMCwgcmVwZWF0KCd5JywgNDAp KTsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21t aXQgczJfaW5zMjAKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6IFVQ REFURSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMxX2NvbW1pdDogQ09N TUlUOworc3RlcCBzMl9pbnMyMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMywgMjAsIHJl cGVhdCgneicsIDQwKSk7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMg dW5pcXVlIGNvbnN0cmFpbnQgImhpdV9rIgorCitzdGFydGluZyBwZXJtdXRhdGlvbjogczNf YmVnaW4gczNfZXExMCBzMl90bzMwIHMyX3NjYW4zMCBzM19lcTEwIHMzX2NvbW1pdAorc3Rl cCBzM19iZWdpbjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworc3RlcCBzM19lcTEwOiBTRUxFQ1QgaWQsIGsgRlJP TSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQorCitz dGVwIHMyX3RvMzA6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IFVQREFU RSBoaWEgU0VUIGsgPSAzMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMyX3NjYW4zMDogU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDMw OworaWR8IGsKKy0tKy0tCisgMXwzMAorKDEgcm93KQorCitzdGVwIHMzX2VxMTA6IFNFTEVD VCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCiso MSByb3cpCisKK3N0ZXAgczNfY29tbWl0OiBDT01NSVQ7CisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBiMV9iZWdpbiBiMV9zbmFwIGIyX3VwZGF0ZSBiMl92YWN1dW0gYjFfc25hcCBiMV9j b21taXQgYjNfc2VxCitzdGVwIGIxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgYjFfc25hcDogU0VM RUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHwgIHYKKy0tKy0tLQorIDF8 NDAwCisoMSByb3cpCisKK3N0ZXAgYjJfdXBkYXRlOiBVUERBVEUgaGliIFNFVCB2ID0gNTAw IFdIRVJFIGlkID0gMTsKK3N0ZXAgYjJfdmFjdXVtOiBWQUNVVU0gKElOREVYX0NMRUFOVVAg b2ZmKSBoaWI7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2 ID0gNDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKworc3RlcCBiMV9jb21taXQ6IENPTU1J VDsKK3N0ZXAgYjNfc2VxOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgT1JERVIgQlkgaWQ7Citp ZHwgIHYKKy0tKy0tLQorIDF8NTAwCisgMnwgMjAKKyAzfCAzMAorIDR8IDQwCisgNXwgNTAK Kyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGIxX2JlZ2luIGIyX3VwZGF0 ZSBiMV9zbmFwIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1pdCBiM19zZXEKK3N0ZXAgYjFf YmVnaW46IEJFR0lOOworc3RlcCBiMl91cGRhdGU6IFVQREFURSBoaWIgU0VUIHYgPSA1MDAg V0hFUkUgaWQgPSAxOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hF UkUgdiA9IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0ZXAgYjJfdmFjdXVtOiBW QUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaWI7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBp ZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKwor c3RlcCBiMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgYjNfc2VxOiBTRUxFQ1QgaWQsIHYgRlJP TSBoaWIgT1JERVIgQlkgaWQ7CitpZHwgIHYKKy0tKy0tLQorIDF8NTAwCisgMnwgMjAKKyAz fCAzMAorIDR8IDQwCisgNXwgNTAKKyg1IHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNv bGF0aW9uX3NjaGVkdWxlCmluZGV4IGI4ZWJlOTI1NTNjLi5lOWFmYjQ4MTk5ZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMjgsMyArMTI4LDQgQEAg dGVzdDogbWF0dmlldy13cml0ZS1za2V3CiB0ZXN0OiBsb2NrLW5vd2FpdAogdGVzdDogZm9y LXBvcnRpb24tb2YKIHRlc3Q6IGRkbC1kZXBlbmRlbmN5LWxvY2tpbmcKK3Rlc3Q6IGhvdF9p bmRleGVkX2FkdmVyc2FyaWFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9z cGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi42NDcwNWJmMzdlMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCkBA IC0wLDAgKzEsMTIzIEBACisjIEFkdmVyc2FyaWFsIGNvcnJlY3RuZXNzIHRlc3RzIGZvciBI T1QtaW5kZXhlZCAoU0lVKSB1cGRhdGVzLgorIworIyBFYWNoIHBlcm11dGF0aW9uIHBpbnMg YSBjYXNlIHRoYXQgdGhlIG1pZC1jaGFpbi1wb2ludGluZyBpbnZhcmlhbnQgbXVzdAorIyBz YXRpc2Z5OiBhbiBpbmRleCBlbnRyeSBwb2ludHMgYXQgdGhlIGhlYXAtb25seSB2ZXJzaW9u IHdob3NlIGtleSBpdAorIyBtYXRjaGVkLCBhbmQgYSBjaGFpbiB3YWxrIHRoYXQgY3Jvc3Nl cyBhIEhPVC1pbmRleGVkIGhvcCBkcm9wcyB0aGUgYXJyaXZpbmcKKyMgZW50cnkgd2hlbiB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG92ZXJsYXBzIHRoZSBpbmRleCdzIGtleSBj b2x1bW5zCisjIChubyBrZXkgY29tcGFyaXNvbikuICBUaGVzZSBhcmUKKyMgZXhhY3RseSB0 aGUgY2FzZXMgdGhhdCBoaXN0b3JpY2FsbHkgYnJva2Ugd3JpdGUtYW1wbGlmaWNhdGlvbi1y ZWR1Y3Rpb24KKyMgZGVzaWducy4KKworc2V0dXAKK3sKKyAgICBDUkVBVEUgVEFCTEUgaGlh IChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDQwKTsKKyAgICBDUkVBVEUgSU5ERVggaGlhX2sgT04gaGlhKGspOworICAgIENSRUFU RSBUQUJMRSBoaXUgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHBhZCB0ZXh0KSBXSVRI IChmaWxsZmFjdG9yID0gNDApOworICAgIENSRUFURSBVTklRVUUgSU5ERVggaGl1X2sgT04g aGl1KGspOworICAgIElOU0VSVCBJTlRPIGhpYSBWQUxVRVMgKDEsIDEwLCByZXBlYXQoJ3gn LCA0MCkpOworICAgIElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDEsIDEwLCByZXBlYXQoJ3gn LCA0MCkpOworCisgICAgLS0gVGFibGUgZm9yIHRoZSBjb25jdXJyZW50LWNvbGxhcHNlIHJl YWRlci1jb25zaXN0ZW5jeSBjYXNlICg3KS4KKyAgICBDUkVBVEUgVEFCTEUgaGliIChpZCBp bnQgUFJJTUFSWSBLRVksIHYgaW50LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKKyAgICBDUkVBVEUgSU5ERVggaGliX3ZfaWR4IE9OIGhpYih2KTsKKyAgICBJTlNFUlQg SU5UTyBoaWIgU0VMRUNUIGcsIGcgKiAxMCwgcmVwZWF0KCd4JywgNTApIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUpIGc7CisgICAgVVBEQVRFIGhpYiBTRVQgdiA9IDEwMCBXSEVSRSBp ZCA9IDE7CisgICAgVVBEQVRFIGhpYiBTRVQgdiA9IDIwMCBXSEVSRSBpZCA9IDE7CisgICAg VVBEQVRFIGhpYiBTRVQgdiA9IDMwMCBXSEVSRSBpZCA9IDE7CisgICAgVVBEQVRFIGhpYiBT RVQgdiA9IDQwMCBXSEVSRSBpZCA9IDE7Cit9CisKK3RlYXJkb3duCit7CisgICAgRFJPUCBU QUJMRSBoaWE7CisgICAgRFJPUCBUQUJMRSBoaXU7CisgICAgRFJPUCBUQUJMRSBoaWI7Cit9 CisKK3Nlc3Npb24gczEKK3N0ZXAgczFfYmVnaW4gICB7IEJFR0lOOyB9CisjIEN5Y2xlIHRo ZSBpbmRleGVkIGtleSBhd2F5IGFuZCBiYWNrOiAxMCAtPiAyMCAtPiAxMC4gIFRoZSBvcmln aW5hbCAxMCBsZWFmCisjIGFuZCB0aGUgZnJlc2hseS1pbnNlcnRlZCAxMCBsZWFmIGJvdGgg cmVzb2x2ZSB0byB0aGUgbGl2ZSB0dXBsZTsgdGhlIGNoYWluCisjIHdhbGsgbXVzdCBkcm9w IHRoZSBzdGFsZSBvbmUgc28gYSBsb29rdXAgcmV0dXJucyB0aGUgcm93IGV4YWN0bHkgb25j ZS4KK3N0ZXAgczFfY3ljbGUgICB7IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9 IDE7IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7IH0KKyMgQSBzaW5nbGUg SE9ULWluZGV4ZWQgdXBkYXRlIG9uIGhpYSwgdXNlZCBieSB0aGUgYWJvcnQgYW5kIHJlYWRl ciBjYXNlcy4KK3N0ZXAgczFfdXBkMjAgICB7IFVQREFURSBoaWEgU0VUIGsgPSAyMCBXSEVS RSBpZCA9IDE7IH0KKyMgQSBIT1QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIFVOSVFVRS1pbmRl eGVkIHRhYmxlLCBmcmVlaW5nIGtleSAxMCBmb3Igaz0yMC4KK3N0ZXAgczFfdXVwZDIwICB7 IFVQREFURSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IH0KK3N0ZXAgczFfY29tbWl0 ICB7IENPTU1JVDsgfQorc3RlcCBzMV9hYm9ydCAgIHsgUk9MTEJBQ0s7IH0KKworc2Vzc2lv biBzMgorIyBJbmRleC1vbmx5IGxvb2t1cHMgKGZvcmNlZCkgdGhhdCBleGVyY2lzZSB0aGUg c3RhbGUtbGVhZiByZWNoZWNrLgorc3RlcCBzMl9ub3NlcSAgIHsgU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOyB9CitzdGVwIHMyX2VxMTAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEg V0hFUkUgayA9IDEwOyB9CitzdGVwIHMyX2VxMjAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBo aWEgV0hFUkUgayA9IDIwOyB9CitzdGVwIHMyX3JhbmdlICAgeyBTRUxFQ1QgaWQsIGsgRlJP TSBoaWEgV0hFUkUgayA+PSA1IE9SREVSIEJZIGs7IH0KKyMgQ29uY3VycmVudCB1bmlxdWUg aW5zZXJ0IG9mIHRoZSBrZXkgczEgaXMgZnJlZWluZyAoMTApIGFuZCBvZiB0aGUga2V5IHMx IGlzCisjIHRha2luZyAoMjApOyBfYnRfY2hlY2tfdW5pcXVlIG11c3QgZmlsdGVyIHRoZSBz dGFsZSAxMCBsZWFmIGJ1dCBzdGlsbAorIyBjb25mbGljdCBvbiB0aGUgbGl2ZSBrZXkuCitz dGVwIHMyX2luczEwICAgeyBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgyLCAxMCwgcmVwZWF0 KCd5JywgNDApKTsgfQorc3RlcCBzMl9pbnMyMCAgIHsgSU5TRVJUIElOVE8gaGl1IFZBTFVF UyAoMywgMjAsIHJlcGVhdCgneicsIDQwKSk7IH0KKyMgTW92ZSB0aGUgaW5kZXhlZCBrZXkg d2VsbCBhd2F5IGZyb20gMTAgKHR3byBIT1QtaW5kZXhlZCBob3BzKSBhbmQgZm9yY2UgYW4K KyMgaW5kZXggc2NhbiBvbiB0aGUgbmV3IGtleS4gIFRoYXQgc2NhbiByZWFjaGVzIHRoZSBs aXZlIHR1cGxlIHRocm91Z2ggdGhlCisjIHN0YWxlIDEwIGxlYWYgYW5kIG1heSB0cnkgdG8g a2lsbCBpdCBmb3IgYmxvYXQgcmVjbGFpbS4KK3N0ZXAgczJfdG8zMCAgICB7IFVQREFURSBo aWEgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAzMCBXSEVS RSBpZCA9IDE7IH0KK3N0ZXAgczJfc2NhbjMwICB7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9m ZjsgU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAzMDsgfQorCisjIFJlYWRlciBo b2xkaW5nIGFuIG9sZGVyIFJFUEVBVEFCTEUgUkVBRCBzbmFwc2hvdCB0aGF0IHN0aWxsIHNl ZXMgaz0xMC4KK3Nlc3Npb24gczMKK3N0ZXAgczNfYmVnaW4gICB7IEJFR0lOIElTT0xBVElP TiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgfQor c3RlcCBzM19lcTEwICAgIHsgU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsg fQorc3RlcCBzM19jb21taXQgIHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gYjEKK3N0ZXAgYjFf YmVnaW4gICB7IEJFR0lOOyB9CisjIFJlYWRlciB0YWtlcyBhIHNuYXBzaG90IGFuZCByZWFk cyB0aGUgY2hhaW4gdmlhIHRoZSBzZWNvbmRhcnkgaW5kZXguCitzdGVwIGIxX3NuYXAgICAg eyBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsgfQorc3RlcCBiMV9jb21t aXQgIHsgQ09NTUlUOyB9CisKK3Nlc3Npb24gYjIKKyMgRm9yY2UgcHJ1bmUvY29sbGFwc2U6 IGFub3RoZXIgSE9ULWluZGV4ZWQgdXBkYXRlIHBsdXMgYSBWQUNVVU0gdGhhdAorIyBjb2xs YXBzZXMgdGhlIGRlYWQgY2hhaW4gbWVtYmVycyB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJz Lgorc3RlcCBiMl91cGRhdGUgIHsgVVBEQVRFIGhpYiBTRVQgdiA9IDUwMCBXSEVSRSBpZCA9 IDE7IH0KK3N0ZXAgYjJfdmFjdXVtICB7IFZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhp YjsgfQorCitzZXNzaW9uIGIzCitzdGVwIGIzX3NlcSAgICAgeyBTRUxFQ1QgaWQsIHYgRlJP TSBoaWIgT1JERVIgQlkgaWQ7IH0KKworIyAxLiBhLT5iLT5hIGN5Y2xlOiBleGFjdGx5IG9u ZSByb3cgZm9yIHRoZSBjeWNsZWQtYmFjayBrZXksIG5vbmUgZm9yIHRoZQorIyAgICB0cmFu c2llbnQga2V5LgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfY3ljbGUgczJfZXExMCBzMl9l cTIwCisKKyMgMi4gUmFuZ2Ugc2NhbiByZXR1cm5zIHRoZSBsaXZlIHJvdyBleGFjdGx5IG9u Y2UgYWNyb3NzIHRoZSBzdGFsZStmcmVzaAorIyAgICBsZWF2ZXMgbGVmdCBieSB0aGUgY3lj bGUuCitwZXJtdXRhdGlvbiBzMl9ub3NlcSBzMV9jeWNsZSBzMl9yYW5nZQorCisjIDMuIEFi b3J0IG9mIGEgSE9ULWluZGV4ZWQgdXBkYXRlOiB0aGUgbmV3IGtleSBtdXN0IG5vdCBzdXJm YWNlIGFuZCB0aGUgb2xkCisjICAgIGtleSBtdXN0IHN0aWxsIHJlc29sdmUgdG8gdGhlIChy ZXN0b3JlZCkgbGl2ZSB0dXBsZS4KK3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2JlZ2luIHMx X3VwZDIwIHMxX2Fib3J0IHMyX2VxMjAgczJfZXExMAorCisjIDQuIENvbmN1cnJlbnQgdW5p cXVlIGluc2VydCB3aGlsZSBhIEhPVC1pbmRleGVkIHVwZGF0ZSBpcyBpbiBmbGlnaHQuICBB bgorIyAgICBpbnNlcnQgb2YgdGhlIGtleSBzMSBpcyBmcmVlaW5nICgxMCkgbXVzdCB3YWl0 IG9uIHRoZSB1bmNvbW1pdHRlZCB1cGRhdGVyLAorIyAgICB0aGVuIHN1Y2NlZWQgb25jZSBp dCBjb21taXRzICh0aGUgc3RhbGUgMTAgbGVhZiBpcyBmaWx0ZXJlZCkuCitwZXJtdXRhdGlv biBzMV9iZWdpbiBzMV91dXBkMjAgczJfaW5zMTAgczFfY29tbWl0CisKKyMgNS4gQWZ0ZXIg dGhlIHVwZGF0ZSBjb21taXRzLCB0aGUgZnJlZWQga2V5ICgxMCkgaW5zZXJ0cyBjbGVhbmx5 IGFuZCB0aGUKKyMgICAgdGFrZW4ga2V5ICgyMCkgY29uZmxpY3RzIC0tIHRoZSBsaXZlIGxl YWYgaXMgaG9ub3VyZWQsIHRoZSBzdGFsZSBvbmUgaXMgbm90LgorcGVybXV0YXRpb24gczFf YmVnaW4gczFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMxMAorcGVybXV0YXRpb24gczFfYmVn aW4gczFfdXVwZDIwIHMxX2NvbW1pdCBzMl9pbnMyMAorCisjIDYuIFNuYXBzaG90IHNhZmV0 eSBvZiBzdGFsZS1sZWFmIHJlY2xhaW0uICBBbiBvbGRlciBSRVBFQVRBQkxFIFJFQUQgcmVh ZGVyCisjICAgIHN0aWxsIHNlZXMgaz0xMDsgYSBjb25jdXJyZW50IHNlc3Npb24gdGhlbiBt b3ZlcyB0aGUga2V5IHRvIDMwIGFuZCBydW5zIGFuCisjICAgIGluZGV4IHNjYW4gdGhhdCBy ZWFjaGVzIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIHN0YWxlIDEwIGxlYWYgYW5kIG1h eQorIyAgICB0cnkgdG8gcmVjbGFpbSBpdC4gIFRoZSByZWNsYWltIGlzIGdhdGVkIG9uIHRo ZSBza2lwcGVkIHZlcnNpb25zIGJlaW5nCisjICAgIGRlYWQgdG8gYWxsIHRyYW5zYWN0aW9u cywgd2hpY2ggczMncyBoZWxkIHNuYXBzaG90IHByZXZlbnRzLCBzbyBzMyBtdXN0CisjICAg IHN0aWxsIGZpbmQgdGhlIHJvdyBieSBrPTEwIGFmdGVyIHRoZSBzY2FuLgorcGVybXV0YXRp b24gczNfYmVnaW4gczNfZXExMCBzMl90bzMwIHMyX3NjYW4zMCBzM19lcTEwIHMzX2NvbW1p dAorCisjIDcuIFJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBjb25jdXJyZW50IHBydW5l L2NvbGxhcHNlLiAgczEncyBpbmRleCBzY2FuLAorIyAgICBjcm9zc2luZyB0aGUgY29sbGFw c2VkIGNoYWluIGFmdGVyIHRoZSBWQUNVVU0sIG11c3Qgc3RpbGwgcmV0dXJuIHRoZSByb3cK KyMgICAgdmlhIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXA7IHRoZSBxdWVyeSBtdXN0 IG5vdCBlcnJvciBhbmQgdGhlIHJvdyBjb3VudAorIyAgICBtdXN0IGJlIGNvbnNpc3RlbnQu CitwZXJtdXRhdGlvbiBiMV9iZWdpbiBiMV9zbmFwIGIyX3VwZGF0ZSBiMl92YWN1dW0gYjFf c25hcCBiMV9jb21taXQgYjNfc2VxCitwZXJtdXRhdGlvbiBiMV9iZWdpbiBiMl91cGRhdGUg YjFfc25hcCBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21taXQgYjNfc2VxCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSBiL3NyYy90ZXN0L3JlY292ZXJ5L01ha2Vm aWxlCmluZGV4IGQ0MWFhYWY4YWUxLi4yNzM2Y2FhMWExYiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVjb3ZlcnkvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUK QEAgLTksNyArOSw4IEBACiAjCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FWFRSQV9JTlNU QUxMPWNvbnRyaWIvcGdfcHJld2FybSBcCitFWFRSQV9JTlNUQUxMPWNvbnRyaWIvYW1jaGVj ayBcCisJY29udHJpYi9wZ19wcmV3YXJtIFwKIAljb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cyBcCiAJY29udHJpYi90ZXN0X2RlY29kaW5nIFwKIAlzcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYWQwZDg1ZjQxODkuLjhk YmNkYTM1Nzc1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAor KysgYi9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZApAQCAtNjMsNiArNjMsNyBAQCB0 ZXN0cyArPSB7CiAgICAgICAndC8wNTJfY2hlY2twb2ludF9zZWdtZW50X21pc3NpbmcucGwn LAogICAgICAgJ3QvMDUzX3N0YW5kYnlfbG9naW5fZXZlbnRfdHJpZ2dlci5wbCcsCiAgICAg ICAndC8wNTRfdW5sb2dnZWRfc2VxdWVuY2VfcHJvbW90aW9uLnBsJywKKyAgICAgICd0LzA1 NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3JlY292ZXJ5LnBsIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI2ZjA3N2IzMTU5Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3Zl cnkucGwKQEAgLTAsMCArMSwxNDkgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgQ3Jhc2gtcmVjb3ZlcnkgY292 ZXJhZ2UgZm9yIEhPVC1pbmRleGVkIChIT1QvU0lVKSBjaGFpbnMuCisjCisjIEJ1aWxkIGEg SE9ULWluZGV4ZWQgY2hhaW4gYnkgcmVwZWF0ZWRseSBVUERBVEVpbmcgYSBzaW5nbGUgcm93 LAorIyBjaGFuZ2luZyBvbmUgaW5kZXhlZCAobm9uLVBLKSBjb2x1bW4gZWFjaCB0aW1lLiAg Rm9yY2UgYSBwcnVuZSBzbyB0aGUKKyMgZGVhZCBjaGFpbiBtZW1iZXJzIGNvbGxhcHNlIHRv IExQX1JFRElSRUNUIGZvcndhcmRlcnMgKHdpdGggdGhlIGxpdmUKKyMgSE9ULWluZGV4ZWQg dmVyc2lvbiB2aXNpYmxlIHZpYSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyBhcwor IyBuX2hvdF9pbmRleGVkID4gMCkuICBDcmFzaC1yZWNvdmVyIHRoZSBwcmltYXJ5IHdpdGgg c3RvcCgnaW1tZWRpYXRlJykKKyMgc28gdGhlIGNvbGxhcHNlZCBjaGFpbiBjb21lcyBiYWNr IGZyb20gV0FMIG9yIGZyb20gdGhlIEZQSS4gIEFmdGVyCisjIHJlc3RhcnQsIHZlcmlmeToK KyMKKyMgICAxLiBhbiBpbmRleCBsb29rdXAgd2Fsa2luZyB0aGUgY2hhaW4gcmV0dXJucyB0 aGUgbGl2ZSB0dXBsZSwKKyMgICAyLiBwZ19hbWNoZWNrICh2ZXJpZnlfaGVhcGFtKSByZXBv cnRzIG5vIGVycm9ycyBvbiB0aGUgcmVsYXRpb24sCisjICAgMy4gVkFDVVVNIHJlY2xhaW1z IHRoZSBjb2xsYXBzZWQgY2hhaW4gKG5faG90X2luZGV4ZWQgZHJvcHMgdG8gMCkuCisjCit1 c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2Ug VGVzdDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3ByaW1hcnknKTsKKyRub2RlLT5pbml0OworIyBEaXNhYmxlIGF1dG92YWN1dW0gdG8g a2VlcCB0aGUgY2hhaW4gc2hhcGUgc3RhYmxlIHVwIHRvIHRoZSBleHBsaWNpdAorIyBwcnVu ZSB3ZSB0cmlnZ2VyIGJlbG93LgorJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCBxe2F1dG92YWN1dW0gPSBvZmYKK3dhbF9jb25zaXN0ZW5jeV9jaGVja2luZyA9ICdh bGwnfSk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgYW1jaGVjayAodmVyaWZ5X2hlYXBhbSkgaXMg c2hpcHBlZCBhcyBhIGNvbnRyaWIgZXh0ZW5zaW9uOyB3ZSB1c2UgaXQKKyMgZnJvbSBTUUwg YWZ0ZXIgdGhlIGNyYXNoLXJlc3RhcnQgY3ljbGUuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHF7Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrfSk7CisKKyMgV2lkZS1pc2ggdGFi bGU6IFBLICsgZm91ciBpbmRleGVkIGNvbHVtbnMgcGx1cyBhIG5vbi1pbmRleGVkIHBheWxv YWQKKyMgc28gSE9ULWluZGV4ZWQgdXBkYXRlcyBoYXZlIHdpZHRoIHRvIGFtb3J0aXNlLiAg ZmlsbGZhY3RvciA9IDUwIGtlZXBzCisjIGZyZWUgc3BhY2Ugb24tcGFnZSBmb3IgSE9ULWlu ZGV4ZWQgY29udGludWF0aW9ucy4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KwlDUkVBVEUgVEFCTEUgaGlfcmVjb3YgKAorCQlpZCAgICAgIGludCBQUklNQVJZIEtFWSwK KwkJYzEgICAgICBpbnQsCisJCWMyICAgICAgaW50LAorCQljMyAgICAgIGludCwKKwkJYzQg ICAgICBpbnQsCisJCXBheWxvYWQgdGV4dAorCSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsK KwlDUkVBVEUgSU5ERVggaGlfcmVjb3ZfYzEgT04gaGlfcmVjb3YoYzEpOworCUNSRUFURSBJ TkRFWCBoaV9yZWNvdl9jMiBPTiBoaV9yZWNvdihjMik7CisJQ1JFQVRFIElOREVYIGhpX3Jl Y292X2MzIE9OIGhpX3JlY292KGMzKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3ZfYzQgT04g aGlfcmVjb3YoYzQpOworCUlOU0VSVCBJTlRPIGhpX3JlY292IFZBTFVFUyAoMSwgMTAwLCAy MDAsIDMwMCwgNDAwLCAncGF5bG9hZCcpOworfSk7CisKKyMgQnVpbGQgYSBIT1QtaW5kZXhl ZCBjaGFpbjogZml2ZSBVUERBVEVzLCBlYWNoIHRvdWNoaW5nIG9uZSBpbmRleGVkCisjIGNv bHVtbi4gIEV2ZXJ5IFVQREFURSBrZWVwcyB0aGUgbmV3IHZlcnNpb24gb24tcGFnZSBhbmQg cGxhbnRzIGEgZnJlc2gKKyMgaW5kZXggZW50cnkgYmVjYXVzZSBjMSBpcyBpbmRleGVkIGFu ZCBjaGFuZ2VkLiAgVXNlIGEgU1FMIHRyYW5zYWN0aW9uLQorIyByYW5nZSBsb29wIHNvIGVh Y2ggVVBEQVRFIGlzIGl0cyBvd24geGFjdCAoeG1pbi94bWF4IGRpc3RpbmN0KS4KK2ZvciBt eSAkaSAoMSAuLiA1KQoreworCW15ICRuZXd2YWwgPSAxMDAgKyAkaTsKKwkkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgaGlfcmVjb3YgU0VUIGMxID0gJG5ld3Zh bCBXSEVSRSBpZCA9IDEiKTsKK30KKworbXkgJHByZV9wcnVuZSA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292Jyl9KTsKK2NtcF9vaygkcHJlX3BydW5l LCAnPicsIDAsCisJJ0hPVC1pbmRleGVkIGNoYWluIGhhcyBhdCBsZWFzdCBvbmUgbGl2ZSBI T1QtaW5kZXhlZCB2ZXJzaW9uIGJlZm9yZSBwcnVuZScpOworCisjIEZvcmNlIGEgcHJ1bmUu ICBUaGUgY2hhaW4gaGFzIGRlYWQgaGVhcC1vbmx5IG1lbWJlcnMgZnJvbSB0aGUgZWFybHkK KyMgVVBEQVRFcyAodGhlaXIgeG1pbnMgYXJlIG5vdyBjb21taXR0ZWQgYW5kIGJlbG93IHRo ZSBzbmFwc2hvdCBob3Jpem9uKS4KKyMgQSBTRUxFQ1QgdW5kZXIgZGVmYXVsdCBpc29sYXRp b24gdmlzaXRzIHRoZSBwYWdlOyB1bmRlcgorIyBkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0 IGV0Yy4gdGhhdCdzIG5vdCBlbm91Z2ggb24gaXRzIG93biB0byB0cmlnZ2VyCisjIHBydW5l LiAgVGhlIHJlbGlhYmxlIHdheSB0byBkcml2ZSBvcHBvcnR1bmlzdGljIHBydW5lIGlzIGEg cXVlcnkgdGhhdAorIyBleGVyY2lzZXMgdGhlIGhlYXBfcGFnZV9wcnVuZV9vcHQgcGF0aCwg d2hpY2ggZmlyZXMgZnJvbSBhbiBpbmRleHNjYW4KKyMgdGhhdCBmaW5kcyB0aGUgcGFnZSBu b24tYWxsLXZpc2libGUuICBVc2UgYSBzZXF1ZW50aWFsIHNjYW4gcGx1cyBhCisjIHN1YnNl cXVlbnQgVVBEQVRFIHRoYXQgaXRzZWxmIGxvb2tzIGZvciBmcmVlIHNwYWNlIChoZWFwX3Vw ZGF0ZSBjYWxscworIyBoZWFwX3BhZ2VfcHJ1bmVfb3B0KS4KKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwlTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsKKwlTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yZWNvdjsKKwlVUERBVEUgaGlfcmVjb3YgU0VUIHBheWxvYWQg PSAncHJ1bmVkJyBXSEVSRSBpZCA9IDE7Cit9KTsKKworIyBSZWFkIHRoZSBjaGFpbiBzdGF0 ZSBhZnRlciB0aGUgcHJ1bmU6IHRoZSBsaXZlIEhPVC1pbmRleGVkIHZlcnNpb24KKyMgcmVt YWlucyB3aGlsZSBkZWFkIG1lbWJlcnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1QgZm9yd2Fy ZGVycy4KK215ICRwb3N0X3BydW5lID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CXF7U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9z dGF0cygnaGlfcmVjb3YnKX0pOworY21wX29rKCRwb3N0X3BydW5lLCAnPicsIDAsCisJJ2xp dmUgSE9ULWluZGV4ZWQgdmVyc2lvbiBzdXJ2aXZlcyBvcHBvcnR1bmlzdGljIHBydW5lJyk7 CisKKyMgQ3Jhc2gtcmVzdGFydC4gIHN0b3AoJ2ltbWVkaWF0ZScpIGlzIHRoZSBzdGFuZGFy ZCAia2lsbCAtOSIgc2ltdWxhdGlvbgorIyB1c2VkIGVsc2V3aGVyZSBpbiBzcmMvdGVzdC9y ZWNvdmVyeS8uICBXZSBpbnRlbnRpb25hbGx5IGRvIE5PVCBpc3N1ZSBhCisjIENIRUNLUE9J TlQgZmlyc3Q6IHRoYXQgd291bGQgYWR2YW5jZSB0aGUgcmVkbyBwb2ludCBwYXN0IHRoZSBI T1QtaW5kZXhlZAorIyBVUERBVEUvcHJ1bmUgcmVjb3JkcyBhbmQgbGVhdmUgbm90aGluZyBm b3IgcmVjb3ZlcnkgdG8gcmVwbGF5LiAgQ3Jhc2hpbmcKKyMgd2l0aG91dCBhIGNoZWNrcG9p bnQgZm9yY2VzIHN0YXJ0dXAgcmVkbyB0byByZWNvbnN0cnVjdCB0aGUgY29sbGFwc2VkCisj IGNoYWluIGZyb20gV0FMLCBhbmQgd2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCcg KHNldCBhYm92ZSkgY29tcGFyZXMKKyMgZWFjaCByZXBsYXllZCBwYWdlIGFnYWluc3QgaXRz IGZ1bGwtcGFnZSBpbWFnZSwgY2F0Y2hpbmcgYW55IGRpdmVyZ2VuY2UKKyMgYmV0d2VlbiB0 aGUgd3JpdGUgcGF0aCBhbmQgdGhlIHJlZG8gcGF0aC4KKyRub2RlLT5zdG9wKCdpbW1lZGlh dGUnKTsKKyRub2RlLT5zdGFydDsKKworIyAxLiBDaGFpbiB3YWxrIHZpYSB0aGUgaW5kZXhl ZCBjb2x1bW4gb24gdGhlIGxpdmUgcm93IHJldHVybnMgdGhlCisjICAgIGNvcnJlY3QgKGFu ZCBvbmx5IHRoZSBjb3JyZWN0KSB0dXBsZS4gIGMxID0gMTA1IHdhcyB0aGUgbGFzdAorIyAg ICBVUERBVEUsIHNvIHRoZSBsaXZlIHR1cGxlIGhhcyBjMSA9IDEwNSBhbmQgYzIuLmM0IHVu Y2hhbmdlZC4KK215ICRsaXZlID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor CVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKwlTRUxFQ1QgaWQsIGMxLCBjMiwgYzMsIGM0 LCBwYXlsb2FkIEZST00gaGlfcmVjb3YgV0hFUkUgYzEgPSAxMDU7Cit9KTsKK2lzKCRsaXZl LCAiMXwxMDV8MjAwfDMwMHw0MDB8cHJ1bmVkIiwKKwknaW5kZXggbG9va3VwIG9uIGNoYWlu IHJldHVybnMgdGhlIHBvc3QtcHJ1bmUgbGl2ZSB0dXBsZScpOworCisjIE9sZGVyIGMxIHZh bHVlcyBhcmUgbm90IHJlYWNoYWJsZTogZXZlcnkgc3RhbGUgYnRyZWUgZW50cnkgdGhhdAor IyBjaGFpbi1yZXNvbHZlcyBhY3Jvc3MgYSBIT1QvU0lVIGhvcCBtdXN0IGJlIGRyb3BwZWQg YnkgdGhlIHJlYWQtc2lkZQorIyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAuCitteSAkc3Rh bGVfY291bnQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgY291 bnQoKikgRlJPTSBoaV9yZWNvdiBXSEVSRSBjMSA9IDEwMH0pOworaXMoJHN0YWxlX2NvdW50 LCAnMCcsCisJJ3N0YWxlIGJ0cmVlIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5IHRoZSBjcm9z c2VkLWF0dHJpYnV0ZSBiaXRtYXAnKTsKKworIyAyLiB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMg bm8gZXJyb3JzIG9uIHRoZSByZWxhdGlvbiAoc2tpcF9vcHRpb24gPQorIyAgICAnYWxsLWZy b3plbicgaXMgdGhlIGRlZmF1bHQ7IHdlIHdhbnQgdG8gc2NhbiBldmVyeXRoaW5nKS4KK215 ICRoZWFwY2hlY2sgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VMRUNU IGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVjb3YnLAorCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCA6PSAnbm9uZScsCisJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjaGVja190b2FzdCA6PSBmYWxzZSk7Cit9KTsKK2lz KCRoZWFwY2hlY2ssICcwJywKKwkndmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gZXJyb3Jz IGFmdGVyIGNyYXNoIHJlY292ZXJ5Jyk7CisKKyMgMy4gUmVjbGFtYXRpb246IGFmdGVyIHRo ZSBsaXZlIHJvdyBpcyBkZWxldGVkLCB0d28gVkFDVVVNIChGUkVFWkUpCisjICAgIHBhc3Nl cyBkcml2ZSBwcnVuZSB0byByZXZpc2l0IHRoZSBwYWdlIGFuZCByZWNsYWltIHRoZSBub3ct ZnVsbHktZGVhZAorIyAgICBjb2xsYXBzZWQgY2hhaW4gKHRoZSBmaXJzdCByZW1vdmVzIHRo ZSBkZWFkIHJvdydzIGluZGV4IGVudHJpZXMgYW5kCisjICAgIHJlZHVjZXMgaXRzIExQOyB0 aGUgc2Vjb25kIHJlY2xhaW1zIHRoZSB1bnJlZmVyZW5jZWQgbWVtYmVycyBhbmQKKyMgICAg cmUtcG9pbnRzIHRoZSByZWRpcmVjdCkuICBBZnRlciB0aGF0LCBuX2hvdF9pbmRleGVkIG11 c3QgYmUgemVyby4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtERUxFVEUgRlJP TSBoaV9yZWNvdiBXSEVSRSBpZCA9IDF9KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3JlY292 fSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtWQUNVVU0gKEZSRUVaRSwg RElTQUJMRV9QQUdFX1NLSVBQSU5HKSBoaV9yZWNvdn0pOworbXkgJGZpbmFsID0gJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBw Z19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjb3YnKX0pOworaXMoJGZpbmFs LCAnMCcsCisJJ3R3byBWQUNVVU0gKEZSRUVaRSkgcGFzc2VzIGFmdGVyIERFTEVURSByZWNs YWltIHRoZSBjaGFpbiBwb3N0LXJlY292ZXJ5Jyk7CisKKyRub2RlLT5zdG9wOworCitkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90 X2luZGV4ZWRfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF9p bmRleGVkX3VwZGF0ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi41NmQ5YWIwYjE3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaG90X2luZGV4ZWRfdXBkYXRlcy5vdXQKQEAgLTAsMCArMSwxOTExIEBACist LQorLS0gSE9UX0lOREVYRURfVVBEQVRFUworLS0gVGVzdCBIT1QtaW5kZXhlZCB1cGRhdGUg KGhvdC1pbmRleGVkKSwgYWthIEhPVC1pbmRleGVkLCBiZWhhdmlvdXIKKy0tCistLSBFdmVy eSBVUERBVEUgaW4gdGhpcyBmaWxlIG1vZGlmaWVzIGF0IGxlYXN0IG9uZSBub24tc3VtbWFy aXppbmcKKy0tIGluZGV4ZWQgYXR0cmlidXRlLiAgT24gYSBwcmUtaG90LWluZGV4ZWQgc2Vy dmVyIGFsbCBvZiB0aGVzZSB3b3VsZCBiZQorLS0gbm9uLUhPVDsgb24gdGhlIGhvdC1pbmRl eGVkIGJyYW5jaCBlYWNoIGVsaWdpYmxlIHVwZGF0ZSBzdGF5cyBvbi1wYWdlIGFuZAorLS0g aW5zZXJ0cyBpbnRvIG9ubHkgdGhlIGluZGV4ZXMgd2hvc2UgYXR0cmlidXRlcyBhY3R1YWxs eSBjaGFuZ2VkLgorLS0KKy0tIFdlIHZlcmlmeSBmb3VyIHRoaW5nczoKKy0tICAgKEEpIHBn X3N0YXQgY291bnRlcnM6IEhPVCBhbmQgaG90LWluZGV4ZWQgY291bnRzIGluY3JlbWVudCBh cyBleHBlY3RlZAorLS0gICAoQikgaW5kZXggbG9va3VwcyByZXR1cm4gdGhlIG5ldyB2YWx1 ZSBhbmQgbm90IHRoZSBzdGFsZSB2YWx1ZQorLS0gICAgICAgZm9yIEVRVUFMSVRZIHF1ZXJp ZXMgKHRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIHRlc3QgZHJvcHMgYQorLS0gICAgICAgbGVh ZiB3aG9zZSBjb3ZlcmVkIGF0dHJpYnV0ZSBjaGFuZ2VkIG9uIHRoZSB3YXkgdG8gdGhlIGxp dmUgdHVwbGUpCistLSAgIChDKSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyByZXBv cnRzIHRoZSBIT1QtaW5kZXhlZCB2ZXJzaW9ucyB3ZSBleHBlY3QKKy0tICAgKEQpICoqUkFO R0UvSU5FUVVBTElUWSoqIHF1ZXJpZXMgcmV0dXJuIHRoZSBjb3JyZWN0IG51bWJlciBvZgor LS0gICAgICAgdHVwbGVzIC0tIHRoaXMgaXMgdGhlIGNsYXNzIG9mIGJ1Z3Mgd2hlcmUgYSBz dGFsZSBidHJlZQorLS0gICAgICAgZW50cnkncyBrZXkgaXMgc3RpbGwgcmVhY2hhYmxlIHZp YSBhIGxvb3NlciBzY2FuIGtleTsgdGhlCistLSAgICAgICBjcm9zc2VkLWF0dHJpYnV0ZSBi aXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFycml2YWwgYmVjYXVzZSB0aGUgaW5kZXgncworLS0g ICAgICAgYXR0cmlidXRlIGNoYW5nZWQgYmV0d2VlbiB0aGF0IGxlYWYncyB0YXJnZXQgYW5k IHRoZSBsaXZlIHR1cGxlCistLQorQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBh Z2VpbnNwZWN0OworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudChy ZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRlcyBCSUdJTlQsIGhvdCBCSUdJ TlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxfb2lkIDo9 IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQo cmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhUOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdl dF9oaV9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRlcyBCSUdJ TlQsIGhvdCBCSUdJTlQsIGhvdF9pZHggQklHSU5UKSBBUyAkJAorREVDTEFSRSByZWxfb2lk IG9pZDsKK0JFR0lOCisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsK KyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0 X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQp LCAwKTsKKyAgICBob3RfaWR4IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDAp OworICAgIFJFVFVSTiBORVhUOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4gQmFzaWMgaG90LWluZGV4ZWQ6IG1vZGlmeWlu ZyBhbiBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QgYW5kIGNvdW50cyBhcyBob3QtaW5kZXhl ZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfYmFzaWMgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbm9u X2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9iYXNpY19pZHggT04gaGlfYmFzaWMoaW5kZXhlZF9jb2wpOworSU5TRVJUIElO VE8gaGlfYmFzaWMgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CistLSBQcmUtaG90LWlu ZGV4ZWQgdGhpcyB3b3VsZCBiZSBub24tSE9ULiAgVW5kZXIgaG90LWluZGV4ZWQgaXQncyBI T1QtaW5kZXhlZDsgYm90aCB0aGUKKy0tIEhPVCBjb3VudGVyIGFuZCB0aGUgaG90LWluZGV4 ZWQgY291bnRlciBhZHZhbmNlLgorVVBEQVRFIGhpX2Jhc2ljIFNFVCBpbmRleGVkX2NvbCA9 IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2Jhc2lj Jyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0t LS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworLS0gVGhlIG5ldyB2 YWx1ZSBpcyByZWFjaGFibGUgdmlhIHRoZSBpbmRleC4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9N IGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBoaV9iYXNpYworICAgUmVjaGVj ayBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCisgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gaGlfYmFzaWNfaWR4CisgICAgICAgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAx NTApCisoNCByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaGlfYmFzaWMg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0t LS0tLS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVGhlIG9sZCB2 YWx1ZSBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2ggdGhpcyBpbmRleDogdGhlIHN0YWxlIGJ0 cmVlCistLSBlbnRyeSAoaW5kZXhlZF9jb2w9MTAwKSB3YWxrcyB0byB0aGUgY3VycmVudCB0 dXBsZSB2aWEgdGhlIGhvdC1pbmRleGVkIGhvcCwKKy0tIG5vZGVJbmRleHNjYW4gcmUtZXZh bHVhdGVzIGBpbmRleGVkX2NvbCA9IDEwMGAgYWdhaW5zdCB0aGUgY3VycmVudAorLS0gdHVw bGUgKGluZGV4ZWRfY29sPTE1MCksIGFuZCB0aGUgcm93IGlzIGNvcnJlY3RseSBkcm9wcGVk LiAgVGhpcyBpcworLS0gdGhlIGVxdWFsaXR5LWxvb2t1cCBjYXNlIHRoZSBjcm9zc2VkLWF0 dHJpYnV0ZSBiaXRtYXAgaGFuZGxlcy4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaGlfYmFzaWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIGhpX2Jhc2ljCisgICBS ZWNoZWNrIENvbmQ6IChpbmRleGVkX2NvbCA9IDEwMCkKKyAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBoaV9iYXNpY19pZHgKKyAgICAgICAgIEluZGV4IENvbmQ6IChpbmRleGVkX2Nv bCA9IDEwMCkKKyg0IHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGlu ZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CistLSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyBzZWVzIG9uZSBI T1QtaW5kZXhlZCB2ZXJzaW9uLCB6ZXJvIEhPVCByZWRpcmVjdHMgKHRoZQorLS0gY2hhaW4g aGFzIG5vdCB5ZXQgYmVlbiBwcnVuZWQgc28gbm8gTFBfUkVESVJFQ1QgZXhpc3RzKS4KK1NF TEVDVCBuX2hvdF9pbmRleGVkLCBuX2NoYWlucywgYXZnX2NoYWluX2xlbiwgbWF4X2NoYWlu X2xlbgorRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfYmFzaWMnKTsK KyBuX2hvdF9pbmRleGVkIHwgbl9jaGFpbnMgfCBhdmdfY2hhaW5fbGVuIHwgbWF4X2NoYWlu X2xlbiAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxIHwgICAgICAgIDAgfCAgICAgICAgICAgICAw IHwgICAgICAgICAgICAgMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2Jhc2ljOworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBSQU5HRS9JTkVRVUFMSVRZIGNvcnJlY3Ru ZXNzIGFmdGVyIGhvdC1pbmRleGVkIG9uIGFuIGluZGV4ZWQgY29sdW1uCistLQorLS0gVGhp cyBpcyB0aGUgdGVzdCBjbGFzcyB0aGF0IGNhdGNoZXMgdGhlIGhvdC1pbmRleGVkIGZhbHNl LWR1cCBidWc6IGEgc3RhbGUKKy0tIGJ0cmVlIGVudHJ5IHdob3NlIGtleSB2YWx1ZSBzdGls bCBzYXRpc2ZpZXMgdGhlIHJhbmdlIHByZWRpY2F0ZSwKKy0tIHJlYWNoYWJsZSB2aWEgdGhl IGhvdC1pbmRleGVkIGNoYWluIGhvcC4KKy0tCistLSBUbyBleGVyY2lzZSB0aGUgYnVnIHdl IG11c3QgZm9yY2UgYW4gSW5kZXhTY2FuIHBsYW4gKHRoZQorLS0gSW5kZXhPbmx5U2NhbiBw YXRoIHBlcm1pc3NpdmVseSBkcm9wcyBldmVyeSBob3QtaW5kZXhlZC1yZWFjaGFibGUgaW5k ZXgtb25seQorLS0gaGl0OyB0aGUgQml0bWFwSGVhcFNjYW4gcGF0aCBkZWR1cHMgYnkgVElE KS4gIFdlIGluY2x1ZGUgYSBwYXlsb2FkCistLSBjb2x1bW4gbm90IHByZXNlbnQgaW4gdGhl IFBLIHNvIHRoZSBwbGFubmVyIG11c3QgaGVhcC1mZXRjaC4KKy0tCistLSBUaGUgcmVhZC1z aWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBtYWtlcyB0aGUgSW5kZXhTY2FuIHJldHVy biB0aGUgY29ycmVjdAorLS0gY291bnQgb2YgMTogdGhlIHN0YWxlIGVudHJ5ICgnMScsJzUn KSBjaGFpbi13YWxrcyB0byB0aGUgbGl2ZSB0dXBsZSBhY3Jvc3MKKy0tIHRoZSBiLWNoYW5n aW5nIGhvcCwgYW5kIGJlY2F1c2UgdGhlIFBLIGNvdmVycyBiIHRoZSBvdmVybGFwIGlzIG5v bi1lbXB0eSwgc28KKy0tIHRoZSBzdGFsZSBsZWFmIGlzIGRyb3BwZWQuICBUaGUgZnJlc2gg ZW50cnkgKCcxJywnMTUnKSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlCistLSBsaXZlIHR1cGxl IChubyBob3AgYWZ0ZXIgaXQpIGFuZCBpcyBrZXB0LiAgVGhlIE9SREVSIEJZIGxpa2V3aXNl IHJldHVybnMgdGhlCistLSBzaW5nbGUgbGl2ZSByb3cuCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yYW5nZSAoCisgICAgYSBpbnQsCisgICAgYiBpbnQs CisgICAgcGF5bG9hZCB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChhLCBiKQorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaGlfcmFuZ2UgVkFMVUVTICgxLCA1LCAn aGknKTsKKy0tIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiB0aGUgc2Vjb25kIFBLIGNvbHVtbjog c3RhbGUgYnRyZWUgZW50cnkgKCcxJywnNScpCistLSByZW1haW5zLCBuZXcgZW50cnkgKCcx JywnMTUnKSBpbnNlcnRlZC4gIFRoZSBzdGFsZSBlbnRyeSBwb2ludHMgYXQKKy0tIHRoZSBj aGFpbiByb290OyB0aGUgZnJlc2ggZW50cnkgcG9pbnRzIGRpcmVjdGx5IGF0IHRoZSBuZXcK Ky0tIGhlYXAtb25seSB0dXBsZS4KK1VQREFURSBoaV9yYW5nZSBTRVQgYiA9IDE1IFdIRVJF IGEgPSAxIEFORCBiID0gNTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFi bGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2NhbjogcGF5bG9hZCBJUyBOT1QgTlVM TCBmb3JjZXMgaGVhcCBmZXRjaCwgbm8gSW5kZXhPbmx5U2Nhbi4KKy0tIFRoZSBzdGFsZSAo JzEnLCc1JykgbGVhZiBpcyBkcm9wcGVkIGJ5IHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRt YXAsIHNvIHRoaXMKKy0tIHJldHVybnMgMS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBo aV9yYW5nZV9wa2V5IG9uIGhpX3JhbmdlCisgICAgICAgICBJbmRleCBDb25kOiAoKGEgPSAx KSBBTkQgKGIgPCAxMDApKQorICAgICAgICAgRmlsdGVyOiAocGF5bG9hZCBJUyBOT1QgTlVM TCkKKyg0IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEg PSAxIEFORCBiIDwgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGNvdW50IAorLS0t LS0tLQorICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBhLCBiIEZST00gaGlfcmFuZ2UgV0hF UkUgYSA9IDEgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEwgT1JERVIgQlkgYjsKKyBhIHwgYiAg CistLS0rLS0tLQorIDEgfCAxNQorKDEgcm93KQorCistLSBJbmRleE9ubHlTY2FuOiB0aGUg cGFnZSBob2xkcyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgc28gaXQgaXMgbmV2 ZXIgYWxsLXZpc2libGU7IElPUworLS0gcGVyZm9ybXMgdGhlIGhlYXAgZmV0Y2ggYW5kIHRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlICgnMScsJzUnKQor LS0gbGVhZiwgc28gY291bnQgPSAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291 bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBB Z2dyZWdhdGUKKyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgaGlfcmFuZ2VfcGtleSBv biBoaV9yYW5nZQorICAgICAgICAgSW5kZXggQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAw KSkKKygzIHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEg PSAxIEFORCBiIDwgMTAwOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisK Ky0tIEJpdG1hcEhlYXBTY2FuOiBUSUQgZGVkdXAgY29sbGFwc2VzIHRoZSBzdGFsZSBhbmQg ZnJlc2ggaGl0cy4KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9p bmRleG9ubHlzY2FuID0gb2ZmOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAx IEFORCBiIDwgMTAwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGhp X3JhbmdlCisgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IDEpIEFORCAoYiA8IDEwMCkp CisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gaGlfcmFuZ2VfcGtleQorICAg ICAgICAgICAgICAgSW5kZXggQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAwKSkKKyg1IHJv d3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBi IDwgMTAwOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVu YWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKKy0tIFNlcVNj YW46IHJlYWRzIHRoZSBoZWFwIGRpcmVjdGx5LCBzZWVzIGV4YWN0bHkgb25lIGxpdmUgdHVw bGUuCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2Zm OworU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBz Y2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBTY2FuIG9uIGhpX3JhbmdlCisg ICAgICAgICBGaWx0ZXI6ICgoYiA8IDEwMCkgQU5EIChhID0gMSkpCisoMyByb3dzKQorCitT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfaW5k ZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CitSRVNFVCBlbmFibGVfYml0 bWFwc2NhbjsKKy0tIFNhbWUgc2hhcGUgb24gYSBzZWNvbmRhcnkgKG5vbi1QSykgYnRyZWU6 IGFub3RoZXIgaG90LWluZGV4ZWQgdXBkYXRlIG9uIGIuCitDUkVBVEUgSU5ERVggaGlfcmFu Z2VfYl9pZHggT04gaGlfcmFuZ2UoYik7CitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAyNSBX SEVSRSBhID0gMSBBTkQgYiA9IDE1OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworLS0gSW5kZXhTY2FuIHBhdGggb24gdGhlIHNl Y29uZGFyeSBpbmRleDsgc2FtZSBmaXggYXBwbGllcy4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IGhpX3JhbmdlIFdIRVJFIGIgQkVUV0VFTiAwIEFORCAxMDAgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEw7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0RST1AgVEFCTEUgaGlf cmFuZ2U7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMuIEFsbC1vci1ub25lIG9u IGEgbXVsdGktaW5kZXhlZCB0YWJsZTogaG90LWluZGV4ZWQgb25seSB0b3VjaGVzIGluZGV4 ZXMKKy0tICAgIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbXVsdGkgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGNvbF9jIGludCwKKyAg ICBub25faW5kZXhlZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggaGlfbXVsdGlfYV9pZHggT04gaGlfbXVsdGkoY29sX2EpOworQ1JFQVRFIElOREVY IGhpX211bHRpX2JfaWR4IE9OIGhpX211bHRpKGNvbF9iKTsKK0NSRUFURSBJTkRFWCBoaV9t dWx0aV9jX2lkeCBPTiBoaV9tdWx0aShjb2xfYyk7CitJTlNFUlQgSU5UTyBoaV9tdWx0aSBW QUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7CistLSBjb2xfYSBvbmx5OiB1bmRl ciBob3QtaW5kZXhlZCB0aGlzIGlzIEhPVC1pbmRleGVkLCBhbmQgb25seSBoaV9tdWx0aV9h X2lkeAorLS0gZ2V0cyBhIG5ldyBlbnRyeS4gIGhpX211bHRpX2JfaWR4IC8gaGlfbXVsdGlf Y19pZHgga2VlcCBwb2ludGluZworLS0gYXQgdGhlIGNoYWluIHJvb3QuCitVUERBVEUgaGlf bXVsdGkgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9tdWx0aScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0t LS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cp CisKKy0tIExvb2t1cHMgb24gYWxsIHRocmVlIGluZGV4ZXMgcmV0dXJuIHRoZSByb3cuCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVS RSBjb2xfYSA9IDE1OworIGlkIAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBG Uk9NIGhpX211bHRpIFdIRVJFIGNvbF9iID0gMjA7CisgaWQgCistLS0tCisgIDEKKygxIHJv dykKKworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2MgPSAzMDsKKyBpZCAK Ky0tLS0KKyAgMQorKDEgcm93KQorCistLSBPbGQgY29sX2EgdmFsdWUgaXMgdW5yZWFjaGFi bGUgYnkgZXF1YWxpdHkgKHN0YWxlIGVudHJ5IGRyb3BwZWQgYnkgdGhlCistLSByZWFkLXNp ZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwKS4KK1NFTEVDVCBpZCBGUk9NIGhpX211bHRp IFdIRVJFIGNvbF9hID0gMTA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfbXVsdGk7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDQuIE11bHRpLWNvbHVtbiBidHJlZTogaG90LWluZGV4ZWQgb24gcGFydCBv ZiBhIGNvbXBvc2l0ZSBrZXkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2NvbXBvc2l0ZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9h IGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY29tcG9zaXRlX2FiX2lkeCBPTiBoaV9jb21w b3NpdGUoY29sX2EsIGNvbF9iKTsKK0lOU0VSVCBJTlRPIGhpX2NvbXBvc2l0ZSBWQUxVRVMg KDEsIDEwLCAyMCwgJ2RhdGEnKTsKKy0tIGNvbF9hIGlzIHBhcnQgb2YgdGhlIGNvbXBvc2l0 ZSBrZXk6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAx NTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfY29tcG9zaXRlJyk7CisgdXBkYXRl cyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAg MSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworLS0gUmVzZXQgYW5kIHRoZW4gdXBkYXRl IGNvbF9iIChhbHNvIHBhcnQgb2YgdGhlIGtleSkuCitVUERBVEUgaGlfY29tcG9zaXRlIFNF VCBjb2xfYSA9IDEwOworVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2IgPSAyNTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfY29tcG9zaXRlJyk7CisgdXBkYXRlcyB8IGhv dCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMyB8ICAg MyB8ICAgICAgIDMKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9jb21wb3NpdGU7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDUuIFBhcnRpYWwgaW5kZXg6IHN0YXR1cyB0cmFu c2l0aW9uIG91dC1vZi1wcmVkaWNhdGUKKy0tCistLSAnc3RhdHVzJyBpcyBhIHBhcnRpYWwt aW5kZXggcHJlZGljYXRlIGNvbHVtbi4gIEEgY2hhbmdlIHRvIGEgcHJlZGljYXRlCistLSBj b2x1bW4gY2FuIGZsaXAgYSByb3cgaW4gb3Igb3V0IG9mIHRoZSBpbmRleCwgd2hpY2ggdGhl IHJlYWQtc2lkZSBrZXkKKy0tIHJlY2hlY2sgY2Fubm90IGRldGVjdCwgc28gSGVhcFVwZGF0 ZUhvdEFsbG93YWJsZSBjb25zZXJ2YXRpdmVseSBkaXNxdWFsaWZpZXMKKy0tIEhPVC1pbmRl eGVkIGZvciBhbnkgcHJlZGljYXRlLWNvbHVtbiBjaGFuZ2UgKGV2ZW4gdGhpcyBvdXQtb2Yt cHJlZGljYXRlIC0+CistLSBvdXQtb2YtcHJlZGljYXRlIGNhc2UpLiAgVGhlIHVwZGF0ZSBp cyB0aGVyZWZvcmUgbm9uLUhPVCwgYW5kIHRoZSBwYXJ0aWFsCistLSBpbmRleCBjb3JyZWN0 bHkgc3RheXMgZW1wdHkgZm9yIHRoZXNlIG5vbi0nYWN0aXZlJyByb3dzLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydGlhbCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRpYWxfYWN0aXZlX2lk eCBPTiBoaV9wYXJ0aWFsKHN0YXR1cykgV0hFUkUgc3RhdHVzID0gJ2FjdGl2ZSc7CitJTlNF UlQgSU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5T RVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicpOwor SU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7 CistLSBvdXQgLT4gb3V0IHRyYW5zaXRpb24gb24gdGhlIHByZWRpY2F0ZSBjb2x1bW46IEhP VC1pbmRleGVkIGtlZXBzIGl0IG9uLXBhZ2UsCistLSBhbmQgdGhlIHBhcnRpYWwgaW5kZXgg Z2V0cyBubyBlbnRyeSAodGhlIHJvdyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSBuZWl0aGVy CistLSBiZWZvcmUgbm9yIGFmdGVyIHRoZSB1cGRhdGUpLgorVVBEQVRFIGhpX3BhcnRpYWwg U0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRf aGlfY291bnQoJ2hpX3BhcnRpYWwnKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0t LS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEg cm93KQorCistLSBUaGUgcGFydGlhbCBpbmRleCBzdGlsbCBjb3JyZWN0bHkgYW5zd2VycyAi YWN0aXZlIiBxdWVyaWVzLgorU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBoaV9wYXJ0aWFsIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQor ICAxIHwgYWN0aXZlCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfcGFydGlhbDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gUGFydGl0aW9uOiBob3QtaW5kZXhlZCBpbnNp ZGUgb25lIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFC TEUgaGlfcGFydCAoCisgICAgaWQgaW50LAorICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAg IGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlk LCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkp OworQ1JFQVRFIFRBQkxFIGhpX3BhcnRfMSBQQVJUSVRJT04gT0YgaGlfcGFydAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBoaV9wYXJ0X2lkeCBPTiBoaV9wYXJ0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhpX3BhcnQgVkFMVUVTICgxLCA1MCwgMTAwLCAnZGF0YScpOworVVBEQVRFIGhp X3BhcnQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IGdldF9oaV9jb3VudCgnaGlfcGFydF8xJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHgg CistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEK KygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00g aGlfcGFydCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCAKKy0tLS0KKyAgMQorKDEg cm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAw OworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIGhpX3BhcnQgQ0FTQ0FERTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0g Ny4gVHJpZ2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbjogaG90LWluZGV4ZWQsIG5vdCBu b24tSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90cmln Z2VyICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHJpZ2dlcmVkX2NvbCBpbnQs CisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfdHJpZ2dlcl9pZHggT04gaGlfdHJpZ2dlcih0cmlnZ2VyZWRfY29sKTsKK0NSRUFU RSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhpX3RyaWdnZXJfYnVtcCgpCitSRVRVUk5TIFRSSUdH RVIgQVMgJCQKK0JFR0lOCisgICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVk X2NvbCArIDE7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7 CitDUkVBVEUgVFJJR0dFUiBiZWZvcmVfdXBkYXRlX2J1bXAKKyAgICBCRUZPUkUgVVBEQVRF IE9OIGhpX3RyaWdnZXIKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9O IGhpX3RyaWdnZXJfYnVtcCgpOworSU5TRVJUIElOVE8gaGlfdHJpZ2dlciBWQUxVRVMgKDEs IDEwMCwgJ2luaXRpYWwnKTsKKy0tIFVQREFURSdzIFNFVCBjbGF1c2UgZG9lc24ndCB0b3Vj aCB0aGUgaW5kZXhlZCBjb2x1bW4sIGJ1dCB0aGUKKy0tIHRyaWdnZXIgbW9kaWZpZXMgaXQg dmlhIGhlYXBfbW9kaWZ5X3R1cGxlLiAgaG90LWluZGV4ZWQgbXVzdCBkZXRlY3QgdGhpcwor LS0gYW5kIGtlZXAgdGhlIHR1cGxlIG9uLXBhZ2UgKEhFQVBfSU5ERVhFRF9VUERBVEVEKSBw bHVzIGEgbmV3IGJ0cmVlIGVudHJ5LgorVVBEQVRFIGhpX3RyaWdnZXIgU0VUIGRhdGEgPSAn dXBkYXRlZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV90 cmlnZ2VyJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0r LS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworU0VMRUNU IHRyaWdnZXJlZF9jb2wgRlJPTSBoaV90cmlnZ2VyIFdIRVJFIGlkID0gMTsKKyB0cmlnZ2Vy ZWRfY29sIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEwMQorKDEgcm93KQorCist LSBOZXcgdmFsdWUgcmVhY2hhYmxlLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VM RUNUIGlkIEZST00gaGlfdHJpZ2dlciBXSEVSRSB0cmlnZ2VyZWRfY29sID0gMTAxOworIGlk IAorLS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hF UkUgdHJpZ2dlcmVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV90cmlnZ2VyIENBU0NBREU7CitEUk9Q IEZVTkNUSU9OIGhpX3RyaWdnZXJfYnVtcCgpOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBIT1QtaW5kZXhlZCBpcyBub3QgeWV0 IHN1cHBvcnRlZCBvbiBleHByZXNzaW9uCistLSAgICBpbmRleGVzLCBzbyB0aGUgdXBkYXRl IGZhbGxzIGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZSAoaG90X2lkeCA9IDApLgorLS0gICAg UmVhZHMgc3RheSBjb3JyZWN0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfanNvbmIgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBkYXRhIGpz b25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfanNvbmJf bmFtZV9pZHggT04gaGlfanNvbmIgKChkYXRhLT4+J25hbWUnKSk7CitJTlNFUlQgSU5UTyBo aV9qc29uYiBWQUxVRVMgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzB9Jyk7CistLSBD aGFuZ2luZyB0aGUgaW5kZXhlZCBleHByZXNzaW9uJ3MgdmFsdWUgKG5hbWUpOiBleHByZXNz aW9uIGluZGV4ZXMgYXJlIG5vdAorLS0geWV0IHN1cHBvcnRlZCwgc28gdGhpcyBpcyBhIG5v bi1IT1QgdXBkYXRlLgorVVBEQVRFIGhpX2pzb25iIFNFVCBkYXRhID0ganNvbmJfc2V0KGRh dGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBn ZXRfaGlfY291bnQoJ2hpX2pzb25iJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCist LS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMCB8ICAgICAgIDAKKygx IHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlf anNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworIGlkIAorLS0tLQorICAx CisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRhdGEtPj4nbmFt ZScgPSAnQWxpY2UnOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitEUk9QIFRBQkxFIGhpX2pzb25iOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA5LiBHSU4gaW5kZXggd2l0aCBjaGFuZ2VkIGV4dHJhY3RlZCBrZXlzOiBob3QtaW5k ZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZ2luICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10KKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9naW5fdGFnc19pZHggT04gaGlfZ2lu IFVTSU5HIGdpbiAodGFncyk7CitJTlNFUlQgSU5UTyBoaV9naW4gVkFMVUVTICgxLCBBUlJB WVsndGFnMScsICd0YWcyJ10pOworLS0gQWRkaW5nIGEgdGFnIHlpZWxkcyBhIGRpZmZlcmVu dCBleHRyYWN0ZWQta2V5IHNldDogaG90LWluZGV4ZWQuCitVUERBVEUgaGlfZ2luIFNFVCB0 YWdzID0gQVJSQVlbJ3RhZzEnLCAndGFnMicsICd0YWc1J10gV0hFUkUgaWQgPSAxOworU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9naW4nKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90 X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAg ICAgMQorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQg RlJPTSBoaV9naW4gV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9n aW47CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEwLiBQZXItaW5kZXggSE9ULWlu ZGV4ZWQgY291bnRlcnM6IHNraXBwZWQgdnMgbWF0Y2hlZAorLS0KKy0tIEEgdGFibGUgd2l0 aCB0d28gaW5kZXBlbmRlbnQgc2Vjb25kYXJ5IGluZGV4ZXMuICBBbiBVUERBVEUgdG91Y2hl cyBhCistLSBjb2x1bW4gY292ZXJlZCBieSBvbmx5IG9uZSBvZiB0aGVtOyB0aGUgSE9ULWlu ZGV4ZWQgcGF0aCBtdXN0IGluc2VydAorLS0gaW50byB0aGF0IG9uZSBpbmRleCBhbmQgc2tp cCB0aGUgb3RoZXIuICBwZ19zdGF0X2FsbF9pbmRleGVzIHJlcG9ydHMKKy0tIG1hdGNoZWQ+ MCBvbiB0aGUgdXBkYXRlZCBpbmRleCBhbmQgc2tpcHBlZD4wIG9uIHRoZSB1bnRvdWNoZWQg aW5kZXguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBob3RpZHhf cGVyaW5kZXggKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludCwKKyAgICBi IGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdGlkeF9w ZXJpbmRleF9hIE9OIGhvdGlkeF9wZXJpbmRleChhKTsKK0NSRUFURSBJTkRFWCBob3RpZHhf cGVyaW5kZXhfYiBPTiBob3RpZHhfcGVyaW5kZXgoYik7CitJTlNFUlQgSU5UTyBob3RpZHhf cGVyaW5kZXggVkFMVUVTICgxLCAxMDAsIDIwMCk7CistLSBNb2RpZnkgb25seSBjb2x1bW4g YS4gIEhPVC1pbmRleGVkIGluc2VydHMgaW50byBob3RpZHhfcGVyaW5kZXhfYSBhbmQKKy0t IHNraXBzIGhvdGlkeF9wZXJpbmRleF9iIChwcmltYXJ5IGtleSBpbmRyZWxpZCBpcyB0aGUg dGFibGUgaXRzZWxmIGFuZAorLS0gYWxzbyB1bmNoYW5nZWQsIHNvIGl0IGNvdW50cyBhcyBz a2lwcGVkIHRvbykuCitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBhID0gMTAxIFdIRVJF IGlkID0gMTsKKy0tIEZvcmNlIGZsdXNoIG9mIHBlbmRpbmcgc3RhdHMgdG8gdGhlIHNoYXJl ZCBlbnRyeS4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEg cm93KQorCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVk X3VwZF9tYXRjaGVkIEFTIG1hdGNoZWQsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X3NraXBwZWQgQVMgc2tpcHBlZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVS RSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7 CisgICAgIGluZGV4cmVsbmFtZSAgICAgfCBtYXRjaGVkIHwgc2tpcHBlZCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorIGhvdGlkeF9wZXJpbmRleF9h ICAgIHwgICAgICAgMSB8ICAgICAgIDAKKyBob3RpZHhfcGVyaW5kZXhfYiAgICB8ICAgICAg IDAgfCAgICAgICAxCisgaG90aWR4X3BlcmluZGV4X3BrZXkgfCAgICAgICAwIHwgICAgICAg MQorKDMgcm93cykKKworLS0gQSBzZWNvbmQgVVBEQVRFIHRvdWNoaW5nIG9ubHkgYiBpbnZl cnRzIHRoZSBhc3NpZ25tZW50LgorVVBEQVRFIGhvdGlkeF9wZXJpbmRleCBTRVQgYiA9IDIw MSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3Rf aW5kZXhlZF91cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hvdF9pbmRl eGVkX3VwZF9za2lwcGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVz CisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhy ZWxuYW1lOworICAgICBpbmRleHJlbG5hbWUgICAgIHwgbWF0Y2hlZCB8IHNraXBwZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0KKyBob3RpZHhfcGVy aW5kZXhfYSAgICB8ICAgICAgIDEgfCAgICAgICAxCisgaG90aWR4X3BlcmluZGV4X2IgICAg fCAgICAgICAxIHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9wa2V5IHwgICAgICAgMCB8 ICAgICAgIDIKKygzIHJvd3MpCisKKy0tIEludmFyaWFudDogbWF0Y2hlZCArIHNraXBwZWQg PT0gb3duaW5nIHRhYmxlJ3Mgbl90dXBfaG90X2luZGV4ZWRfdXBkLgorU0VMRUNUIGluZGV4 cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCArIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHRvdGFsLAorICAgICAgIChTRUxFQ1Qgbl90 dXBfaG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCisgICAgICAgICBX SEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcpIEFTIHRhYmxlX2hvdF9pZHhfdXBk CisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4 X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAgICAgaW5kZXhyZWxuYW1l ICAgICB8IHRvdGFsIHwgdGFibGVfaG90X2lkeF91cGQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIGhvdGlkeF9wZXJpbmRleF9hICAg IHwgICAgIDIgfCAgICAgICAgICAgICAgICAgMgorIGhvdGlkeF9wZXJpbmRleF9iICAgIHwg ICAgIDIgfCAgICAgICAgICAgICAgICAgMgorIGhvdGlkeF9wZXJpbmRleF9wa2V5IHwgICAg IDIgfCAgICAgICAgICAgICAgICAgMgorKDMgcm93cykKKworLS0gQm9vbGVhbiBhc3NlcnRp b24gb2YgdGhlIHNhbWUgaW52YXJpYW50LiAgVGhpcyBpcyB0aGUgY2Fub25pY2FsIGZvcm0K Ky0tIHJldmlld2VycyBhc2tlZCBmb3I6IGV2ZXJ5IGluZGV4IGVudHJ5IGlzIGVpdGhlciBt YXRjaGVkICh0aGUgaW5kZXgKKy0tIGdvdCBhIGZyZXNoIGluc2VydCB0aGlzIFVQREFURSkg b3Igc2tpcHBlZCAoSE9ULWluZGV4ZWQgY29ycmVjdGx5CistLSBhdm9pZGVkIGFuIGluc2Vy dCBiZWNhdXNlIHRoZSBpbmRleCdzIGF0dHJzIGRpZCBub3QgY2hhbmdlKS4gIElmIHRoZQor LS0gdHdvIGNvdW50ZXJzIGRyaWZ0IGFwYXJ0IGZyb20gdGhlIHRhYmxlLWxldmVsIG5fdHVw X2hvdF9pbmRleGVkX3VwZCB3ZQorLS0gaGF2ZSBlaXRoZXIgbG9zdCBhIHBlci1pbmRleCBp bmNyZW1lbnQgb3IgZG91YmxlLWNvdW50ZWQgb25lLgorU0VMRUNUIGJvb2xfYW5kKChuX3R1 cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCArIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lw cGVkKSA9CisgICAgICAgICAgICAgICAgKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGQg RlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAgICAgICAgICAgIFdIRVJFIHJlbG5h bWUgPSAnaG90aWR4X3BlcmluZGV4JykpCisgICAgICAgICBBUyBwZXJpbmRleF9pbnZhcmlh bnRfaG9sZHMKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9 ICdob3RpZHhfcGVyaW5kZXgnOworIHBlcmluZGV4X2ludmFyaWFudF9ob2xkcyAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhvdGlk eF9wZXJpbmRleDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTEuIExvbmcgaG90 LWxvb3AgVVBEQVRFIHN0YXlzIGNvbXBhY3QgYW5kIEhPVC1pbmRleGVkCistLQorLS0gQSBs b25nIHJ1biBvZiBIT1QtaW5kZXhlZCBVUERBVEVzIHRvIGEgc2luZ2xlIHJvdyBzdGF5cyBj b21wYWN0OiBwcnVuZQorLS0gY29sbGFwc2VzIGVhY2ggZGVhZCB2ZXJzaW9uIHRvIGEgcmVk aXJlY3QgdG8gdGhlIGxpdmUgdHVwbGUgYW5kIHJldXNlcyBpdHMKKy0tIHNsb3QsIHNvIHRo ZSBoZWFwIHN0YXlzIGJvdW5kZWQgYW5kIHRoZSBjaGFpbiBkb2VzIG5vdCBncm93IHVuYm91 bmRlZC4KKy0tIEV2ZXJ5IFVQREFURSB0aGF0IGNoYW5nZXMgdGhlIGluZGV4ZWQgY29sdW1u IChhbmQgbGVhdmVzIGFub3RoZXIgaW5kZXgsCistLSBoZXJlIHRoZSBQSywgdW5jaGFuZ2Vk KSB0YWtlcyB0aGUgSE9ULWluZGV4ZWQgcGF0aC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX2NoYWluY2FwICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBo aV9jaGFpbmNhcF9hX2lkeCBPTiBoaV9jaGFpbmNhcChhKTsKK0lOU0VSVCBJTlRPIGhpX2No YWluY2FwIFZBTFVFUyAoMSwgMCk7CitETyAkJAorREVDTEFSRQorICAgIGkgaW50OworQkVH SU4KKyAgICBGT1IgaSBJTiAxIC4uIDIwMCBMT09QCisgICAgICAgIFVQREFURSBoaV9jaGFp bmNhcCBTRVQgYSA9IGkgV0hFUkUgaWQgPSAxOworICAgIEVORCBMT09QOworRU5EICQkOwor LS0gQWZ0ZXIgMjAwIFVQREFURXMgdGhlIHJvdydzIHZhbHVlIGlzIDIwMC4KK1NFTEVDVCBh IEZST00gaGlfY2hhaW5jYXAgV0hFUkUgaWQgPSAxOworICBhICAKKy0tLS0tCisgMjAwCiso MSByb3cpCisKKy0tIEV2ZXJ5IFVQREFURSB0b29rIHRoZSBIT1QtaW5kZXhlZCBwYXRoICh0 aGUgUEsgaW5kZXggaXMgdW5jaGFuZ2VkLCBzbyBpdCBpcworLS0gc2tpcHBlZCksIHNvIG5f dHVwX2hvdF9pbmRleGVkX3VwZCBhZHZhbmNlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgaG90 X2luZGV4ZWRfZmlyZWQKKyAgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NoYWluY2FwJyk7Cisg aG90X2luZGV4ZWRfZmlyZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQor CistLSBUaGUgaGVhcCBzdGF5ZWQgY29tcGFjdDogcHJ1bmUrY29sbGFwc2UgcmVjbGFpbWVk IHRoZSBkZWFkIHZlcnNpb25zLCBzbyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdyBzdGF5cyB3 aXRoaW4gYSBjb3VwbGUgb2YgcGFnZXMuICBwZ19yZWxhdGlvbl9zaXplIHJlZmxlY3RzCist LSB0aGUgdGFibGUncyBhY3R1YWwgY3VycmVudCBzaXplIHJlZ2FyZGxlc3Mgb2YgdmFjdXVt L2FuYWx5emUgc3RhdHMsIHVubGlrZQorLS0gcGdfY2xhc3MucmVscGFnZXMgKHdoaWNoIGlz IG9ubHkgdXBkYXRlZCBieSBWQUNVVU0vQU5BTFlaRSBhbmQgd291bGQgYmUKKy0tIHRyaXZp YWxseSA8PSAxIG9uIHRoaXMgbmV2ZXItdmFjdXVtZWQgdGFibGUgZXZlbiBpZiBwcnVuaW5n IGhhZCBmYWlsZWQgYW5kCistLSB0aGUgaGVhcCBoYWQgYmFsbG9vbmVkKS4KK1NFTEVDVCBw Z19yZWxhdGlvbl9zaXplKCdoaV9jaGFpbmNhcCcpIDw9IDgxOTIgKiAyIEFTIGhlYXBfc3Rh eWVkX2NvbXBhY3Q7CisgaGVhcF9zdGF5ZWRfY29tcGFjdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9jaGFpbmNhcDsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gMTIuIEEgSE9ULWluZGV4ZWQgY2hhaW4gZm9ybXMgYW5k IHJlYWRzIHRocm91Z2ggaXQgc3RheSBjb3JyZWN0CistLQorLS0gU2V2ZXJhbCBIT1QtaW5k ZXhlZCB1cGRhdGVzIG9mIHRoZSBzYW1lIGxpdmUgcm93IGJ1aWxkIGEgbXVsdGktaG9wIGNo YWluIG9mCistLSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVycywgZWFjaCBjYXJyeWlu ZyBpdHMgb3duIGNyb3NzZWQtYXR0cmlidXRlCistLSBiaXRtYXAuICBXZSBhc3NlcnQgb25s eSBob3Jpem9uLWluZGVwZW5kZW50IGZhY3RzOiBhdCBsZWFzdCBvbmUgSE9ULWluZGV4ZWQK Ky0tIG1lbWJlciBpcyBwcmVzZW50ICh0aGUgbGl2ZSB2ZXJzaW9uIGFsd2F5cyBpcywgYW5k IGNhbm5vdCBiZSBwcnVuZWQpLCBhIHNjYW4KKy0tIHRocm91Z2ggdGhlIHNlY29uZGFyeSBp bmRleCByZXR1cm5zIHRoZSBvbmUgbGl2ZSByb3cgYnkgaXRzIGN1cnJlbnQga2V5LCBhbmQK Ky0tIG5vbmUgb2YgdGhlIHN1cGVyc2VkZWQga2V5cyBzdXJmYWNlICh0aGUgY3Jvc3NlZC1h dHRyaWJ1dGUgYml0bWFwIGZpbHRlcnMKKy0tIHRoZWlyIHN0YWxlIGxlYXZlcykuCistLQor LS0gV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCBhc3NlcnQgYW4gZXhhY3QgbWVtYmVyIGNvdW50 IG9yIGFueSBwb3N0LVZBQ1VVTQorLS0gY29sbGFwc2UvcmVjbGFpbSBzdGF0ZTogb3Bwb3J0 dW5pc3RpYyBIT1QgcHJ1bmluZyBhbmQgVkFDVVVNIGNvbGxhcHNlIGFyZQorLS0gYm90aCBn YXRlZCBvbiB0aGUgc3VwZXJzZWRlZCB2ZXJzaW9ucyBmYWxsaW5nIGJlbG93IHRoZSBnbG9i YWwgeG1pbiBob3Jpem9uLAorLS0gd2hpY2ggYSBzbmFwc2hvdCBoZWxkIGVsc2V3aGVyZSBp biB0aGUgcnVubmluZyByZWdyZXNzaW9uIGNsdXN0ZXIgY2FuIHBpbgorLS0gYmFjayBpbmRl ZmluaXRlbHkgLS0gc28gdGhlIHBoeXNpY2FsIGxheW91dCAobl9ob3RfaW5kZXhlZCdzIGV4 YWN0IHZhbHVlLAorLS0gd2hldGhlciB0aGUgY2hhaW4gaGFzIGNvbGxhcHNlZCB0byBhbiBM UF9SRURJUkVDVCkgaXMgbm90IGRldGVybWluaXN0aWMKKy0tIGhlcmUuICBQcnVuZS9jb2xs YXBzZSBhbmQgc25hcHNob3QtZ2F0ZWQgc3RhbGUtbGVhZiByZWNsYWltIGFyZSBjb3ZlcmVk CistLSBkZXRlcm1pbmlzdGljYWxseSBieSB0aGUgaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwg aXNvbGF0aW9uIHNwZWMsIHdoZXJlCistLSB0cmFuc2FjdGlvbiBvcmRlcmluZyAtLSBoZW5j ZSB0aGUgaG9yaXpvbiAtLSBpcyBjb250cm9sbGVkIGFuZCB0aGUgY29sbGFwc2UKKy0tIGlz IHZhbGlkYXRlZCBieSByZWFkZXIgY29uc2lzdGVuY3kgYWNyb3NzIGl0IChwZXJtdXRhdGlv biA3KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xh aW0gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRF WCBoaV9yZWNsYWltX2FfaWR4IE9OIGhpX3JlY2xhaW0oYSk7CitJTlNFUlQgSU5UTyBoaV9y ZWNsYWltIFZBTFVFUyAoMSwgMTAwKTsKKy0tIEJ1aWxkIGEgbXVsdGktaG9wIGNoYWluIHZp YSBzZXZlcmFsIEhPVC1pbmRleGVkIHVwZGF0ZXM7IHRoZSByb3cgc3RheXMgbGl2ZS4KK1VQ REFURSBoaV9yZWNsYWltIFNFVCBhID0gMjAwIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9y ZWNsYWltIFNFVCBhID0gMzAwIFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNsYWltIFNF VCBhID0gNDAwIFdIRVJFIGlkID0gMTsKKy0tIFRoZSBsaXZlIHZlcnNpb24gaXMgYSBIT1Qt aW5kZXhlZCBtZW1iZXIgYW5kIGNhbm5vdCBiZSBwcnVuZWQsIHNvIHRoaXMgaG9sZHMKKy0t IHJlZ2FyZGxlc3Mgb2YgaG93IG11Y2ggb3Bwb3J0dW5pc3RpYyBwcnVuaW5nIGhhcyBoYXBw ZW5lZC4KK1NFTEVDVCBuX2hvdF9pbmRleGVkID49IDEgQVMgaG90X2luZGV4ZWRfbWVtYmVy X3ByZXNlbnQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVj bGFpbScpOworIGhvdF9pbmRleGVkX21lbWJlcl9wcmVzZW50IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gVGhlIGxpdmUgcm93IHJlc29sdmVz IHRocm91Z2ggdGhlIHNlY29uZGFyeSBpbmRleCBieSBpdHMgY3VycmVudCBrZXksIGFuZAor LS0gbm9uZSBvZiB0aGUgc3VwZXJzZWRlZCBrZXlzIHN1cmZhY2UgdGhyb3VnaCB0aGVpciBz dGFsZSBsZWF2ZXMuCitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNsYWltIFdIRVJFIGEgPSA0 MDA7CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDEgfCA0MDAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopID0gMCBBUyBub19zdGFsZV9rZXlfc3VyZmFjZXMKKyAgRlJPTSBoaV9y ZWNsYWltIFdIRVJFIGEgSU4gKDEwMCwgMjAwLCAzMDApOworIG5vX3N0YWxlX2tleV9zdXJm YWNlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRB QkxFIGhpX3JlY2xhaW07CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEzLiBQYWdl IHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIGlzIG5ldmVyIG1hcmtlZCBh bGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxpYmVyYXRlbHkgbGVhdmVzIFBEX0FM TF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQgc3RpbGwKKy0tIGNhcnJpZXMgYSBw cmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBpbmRleC1vbmx5IHNjYW4gbXVzdCBo ZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBzbyB0aGUgcmVhZC1zaWRlIGNyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0YWxlIGJ0cmVlCistLSBlbnRyaWVz LgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0aCB3aXRoIFZBQ1VVTSAoRlJFRVpF LCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0gdGhlbiByZWFkIHBkX2ZsYWdzIHZp YSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBwYWdlIG11c3Qgc3RpbGwgY2FycnkK Ky0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9pbmRleGVkID4gMCkgQU5EIG11c3Qg bm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAwMDQpLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5h YmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV92bV9hX2lkeCBPTiBoaV92bShhKTsK K0lOU0VSVCBJTlRPIGhpX3ZtIFZBTFVFUyAoMSwgMSk7CistLSBUd28gSE9ULWluZGV4ZWQg dXBkYXRlcyBsZWF2ZSBhIG11bHRpLWhvcCBjaGFpbiwgc28gYSBwcmVzZXJ2ZWQgSE9ULWlu ZGV4ZWQKKy0tIG1lbWJlciByZW1haW5zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5lLCB3aGlj aCBpcyB3aGF0IHRoaXMgdGVzdCBuZWVkcy4KK1VQREFURSBoaV92bSBTRVQgYSA9IDIgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhpX3ZtIFNFVCBhID0gMyBXSEVSRSBpZCA9IDE7CistLSBG b3JjZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxF X1BBR0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVz IGhpbnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBw cmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNp YmxlID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3Zt OworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5kZXhlZF9wcmVzZW50Cisg IEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3ZtJyk7CisgaG90X2lu ZGV4ZWRfcHJlc2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor LS0gUERfQUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGgg YSBwcmVzZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFy a2VkX2FsbF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92 bScsIDApKTsKKyBub3RfbWFya2VkX2FsbF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3ZtOworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEg LT4gYiAtPiBhIHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdy aXRlIGhlYXAgb3IgaW5kZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0 YWxvZy4gIFRoZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2gg YXR0cmlidXRlCistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVz dCBjb21wYXJlIGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1l cyouICBBZnRlciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0t IHN1YnNlcXVlbnQgVVBEQVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRl eGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9j eWNsZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3lj bGUoYSk7CitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEsIDEwMCk7CistLSBDeWNs ZSB0aGUgY29sdW1uIG5hbWUgYW5kIGNvbmZpcm0gYm90aCBpbnRlcm1lZGlhdGUgZm9ybXMg ZHJpdmUgSE9ULWluZGV4ZWQuCitBTFRFUiBUQUJMRSBoaV9jeWNsZSBSRU5BTUUgQ09MVU1O IGEgVE8gYjsKK1VQREFURSBoaV9jeWNsZSBTRVQgYiA9IDIwMCBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBG Uk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUnKTsKKyBob3RfaW5kZXhlZF9hZnRlcl9maXJz dF9yZW5hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERB VEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0 aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0t IHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKKyBpZCB8ICBhICAKKy0tLS0r LS0tLS0KKyAgMSB8IDMwMAorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBX SEVSRSBhID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkIEZST00g aGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9jeWNsZTsKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkgY29sdW1uIFVQREFURSBwcm9k dWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhlYXBVcGRhdGVIb3RBbGxvd2Fi bGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hlbiBldmVyeQorLS0gbW9kaWZp ZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGlu ZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhlIGNhbm9uaWNhbCBjYXNlOiB0 aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5IGVudHJ5IHZpYSBhbWluc2Vy dCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMKKy0tIG5lZWRlZCBhbmQgSE9U LWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwgaXMKKy0tIG5fdHVwX2hvdF91 cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVuY2hhbmdlZC4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2JyaW4gKAorICAgIGlkIGludCBQ UklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4gVVNJTkcgYnJpbihiY29sKTsK K0lOU0VSVCBJTlRPIGhpX2JyaW4gVkFMVUVTICgxLCAxMDApOworLS0gQ2FwdHVyZSB0aGUg SE9ULWluZGV4ZWQgY291bnRlciBiZWZvcmUsIGRyaXZlIGEgQlJJTi1vbmx5IHVwZGF0ZSwK Ky0tIGFuZCBhc3NlcnQgdGhhdCBjbGFzc2ljIEhPVCBhZHZhbmNlZCB3aGlsZSBIT1QtaW5k ZXhlZCBkaWQgbm90LgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg CisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBiY29sID0g MjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgKGhvdCAtIDApID4gMCBBUyBjbGFzc2ljX2hvdF9m aXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVmb3JlIEFTIGhvdF9pbmRleGVk X2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpOworIGNsYXNz aWNfaG90X2ZpcmVkIHwgaG90X2luZGV4ZWRfZGlkX25vdF9maXJlIAorLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAg IHwgdAorKDEgcm93KQorCistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUg dmlhIGFtaW5zZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsK KyBiY29sIAorLS0tLS0tCisgIDIwMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2JyaW47 CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBVTklRVUUgaW5kZXggb24gYSB0 eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9yIGVxdWFsaXR5CistLQorLS0g bnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVyIHRoZSBidHJlZSBvcGNsYXNz IGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFnZXMuICBBIEhPVC1pbmRleGVk IHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZyZXNoIGxlYWYgY2Fycnlpbmcg dGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxlYWYgZm9yIDEuMAorLS0gKHRo ZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3MgayBjaGFuZ2VkLCBzaW5jZSBt b2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFnZS1iYXNlZCkuICBBIGxhdGVy IElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQorLS0gb3BjbGFzcyBtdXN0IHN0 aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUgdW5pcXVlIGNoZWNrIHJlYWNo ZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZyZXNoIGxlYWYsIHdoaWNoIHBv aW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRlciBpdCwgc28gdGhlIG92ZXJs YXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWluZSBjb25mbGljdCk7IHRoZQor LS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNlIHRoZSBrLWNoYW5naW5nIGhv cCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0dHJpYnV0ZS4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3VudW0gKGsgbnVtZXJpYyBVTklR VUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3Vu dW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAybmQgaW5kZXhlZCBhdHRyLCBr ZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4wLCAxMDApOworVVBE QVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAxMDA7ICAgICAgICAtLSBIT1Qt aW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9pbmRleGVkID4gMCBBUyBtYWRl X2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hp X3VudW0nKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCistLSBBIG51bWVyaWNhbGx5LWVxdWFsIGluc2VydCBtdXN0IGNvbmZsaWN0 ICh0aGUgZnJlc2ggbGVhZiBjYXRjaGVzIGl0KToKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFM VUVTICgxLjAsIDEpOyAgICAgICAgICAgICAgLS0gZXhwZWN0IGR1cGxpY2F0ZSBrZXkgZXJy b3IKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3Ry YWludCAiaGlfdW51bV9rX2tleSIKK0RFVEFJTDogIEtleSAoayk9KDEuMCkgYWxyZWFkeSBl eGlzdHMuCistLSBBIGdlbnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJ TlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00g aGlfdW51bSBPUkRFUiBCWSBqOworICBrICAgfCAgaiAgCistLS0tLS0rLS0tLS0KKyAgMi4w IHwgICAyCisgMS4wMCB8IDEwMAorKDIgcm93cykKKworRFJPUCBUQUJMRSBoaV91bnVtOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBSRUlO REVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkgYnVp bHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5ldmVy IGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVwbGVz IG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3MgZW50 cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBob3Ag YWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0aGVt LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRleCAo aWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJTlNF UlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAg ICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VM RUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworIG1hZGVfaG90X2lu ZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEJ1aWxkIGEg TkVXIGluZGV4IGFuZCBSRUlOREVYIHRoZSBleGlzdGluZyBvbmUgb3ZlciB0aGUgbGl2ZSBj aGFpbnMuCitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9iIE9OIGhpX3JlaW5kZXgoYik7CitS RUlOREVYIElOREVYIGhpX3JlaW5kZXhfYTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlaW5kZXggV0hFUkUgYSA9IDIwNDsgICAgICAgLS0g Y3VycmVudCB2YWx1ZSAtPiBpZCA0CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDQgfCAy MDQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBh ID0gNDsgICAgICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291bnQgCistLS0tLS0tCisg ICAgIDAKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfcmVpbmRleCBXSEVSRSBiID0g MjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hseSBidWlsdCBpbmRleCAtPiAyCisgaWQgCist LS0tCisgIDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IGhpX3JlaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2 ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCist LQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMgYXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0 aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0gSE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVh cmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBvZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9u IG11c3QgY29tcGxldGUgd2l0aG91dCBlcnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3Jy ZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVks IGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZh bHNlKTsKK0NSRUFURSBJTkRFWCBoaV9kcm9waWR4X2EgT04gaGlfZHJvcGlkeChhKTsKK0lO U0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VMRUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNikgZzsKK1VQREFURSBoaV9kcm9waWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAg ICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBh ICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxF Q1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3Jl bGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9kcm9waWR4Jyk7CisgbWFkZV9ob3RfaW5k ZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gRHJvcCBldmVy eSBpbmRleCwgbGVhdmluZyBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVycyB3aXRoIG5v IGluZGV4IHRvIHN3ZWVwLgorRFJPUCBJTkRFWCBoaV9kcm9waWR4X2E7CitBTFRFUiBUQUJM RSBoaV9kcm9waWR4IERST1AgQ09OU1RSQUlOVCBoaV9kcm9waWR4X3BrZXk7CistLSBNdXN0 IG5vdCBjcmFzaCBvbiB0aGUgbm8taW5kZXggcGF0aDsgdHdvIHBhc3NlcyBleGVyY2lzZSB0 aGUgc2Vjb25kLXBhc3MKKy0tIHJlY2xhaW0gZ3VhcmQgYXMgd2VsbC4KK1ZBQ1VVTSBoaV9k cm9waWR4OworVkFDVVVNIGhpX2Ryb3BpZHg7CistLSBSZWFkcyByZW1haW4gY29ycmVjdCBh ZnRlciB0aGUgaW5kZXhlcyBhcmUgZ29uZS4KK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2Ryb3Bp ZHggT1JERVIgQlkgaWQ7CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDEgfCAyMDEKKyAg MiB8IDIwMgorICAzIHwgMjAzCisgIDQgfCAyMDQKKyAgNSB8IDIwNQorICA2IHwgMjA2Ciso NiByb3dzKQorCitEUk9QIFRBQkxFIGhpX2Ryb3BpZHg7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDE5LiBSZS1jb2xsYXBzZSBvZiBhIGRhdGEtcmVkaXJlY3QgY2hhaW4gYWNy b3NzIHBhcnRpYWwgVkFDVVVNcworLS0KKy0tIEEgY2hhaW4gdGhhdCBjb2xsYXBzZXMgdG8g YSBIT1QtaW5kZXhlZCBkYXRhIHJlZGlyZWN0LCBpcyB2YWN1dW1lZCB3aXRoCistLSBJTkRF WF9DTEVBTlVQIG9mZiAoc28gdGhlIHN0YWxlIGxlYXZlcyBhbmQgdGhlIHJlZGlyZWN0IHN1 cnZpdmUpLCB0aGVuCistLSByZWNlaXZlcyBmdXJ0aGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMg dGhhdCByZS1jb2xsYXBzZSB0aGUgY2hhaW4gYW5kCistLSByZS1wb2ludCB0aGUgcmVkaXJl Y3QgYXQgYSBuZXcgbGl2ZSB0dXBsZSwgbXVzdCBub3QgbGVhdmUgdGhlIHJlZGlyZWN0Cist LSBkYW5nbGluZy4gIEEgc3Vic2VxdWVudCBmdWxsIFZBQ1VVTSBtdXN0IGNvbXBsZXRlIHdp dGhvdXQgZXJyb3IsIGxlYXZlIHRoZQorLS0gaGVhcCBjb25zaXN0ZW50ICh2ZXJpZnlfaGVh cGFtIHJlcG9ydHMgbm90aGluZyksIGFuZCByZWFkcyBtdXN0IHN0YXkKKy0tIGNvcnJlY3Qu ICAoUmVncmVzc2lvbjogYW4gZWFybGllciByZXZpc2lvbiBjcmFzaGVkIHJlY2xhaW1pbmcg YSBtaWQtY2hhaW4KKy0tIG1lbWJlciB3aGlsZSBhIGRhdGEgcmVkaXJlY3Qgc3RpbGwgcG9p bnRlZCBwYXN0IGl0LikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIEVYVEVO U0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hlY2s7CitDUkVBVEUgVEFCTEUgaGlfcmVjb2xsYXBz ZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBh dXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfcmVjb2xsYXBz ZV9hIE9OIGhpX3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWNvbGxhcHNlIFZB TFVFUyAoMSwgMSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhPVC1pbmRleGVkIHVwZGF0ZXMs IHRoZW4gcHJ1bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBsZWF2aW5nIHRoZSBz dGFsZSBidHJlZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NMRUFOVVAgb2ZmKS4KK1VQREFU RSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVj b2xsYXBzZSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFDVVVNIChJTkRFWF9DTEVBTlVQ IG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNlOiBtb3JlIEhPVC1pbmRleGVk IHVwZGF0ZXMgZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSByZWRpcmVjdAorLS0gdGFyZ2V0 OyB0aGUgbmV4dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEgcmVkaXJlY3QgYXQgdGhlIG5l dyBmaXJzdCBsaXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBpdHMgdW5pb24uCitVUERBVEUg aGlfcmVjb2xsYXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29s bGFwc2UgU0VUIGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBv ZmYpIGhpX3JlY29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBub3cgcmVjbGFpbXMgdGhlIGRl YWQgY2hhaW47IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11c3Qgbm90CistLSBkYW5nbGUu ICBUd28gcGFzc2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGlyZWN0IHJlLXBvaW50IHNlY29u ZCBwYXNzLgorVkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNVVU0gaGlfcmVjb2xsYXBzZTsK Ky0tIEhlYXAgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAobm8gcm93cyA9PSBu byBjb3JydXB0aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVjb2xs YXBzZScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gNTsgICAg IC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgMQorIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCA1 CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUg YSA9IDM7ICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291bnQgCistLS0tLS0tCisgICAg IDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgaWQsIGEgRlJP TSBoaV9yZWNvbGxhcHNlIE9SREVSIEJZIGlkOworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEg fCA1CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfcmVjb2xsYXBzZTsKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9uIG92ZXIgYW4gZW50cnkgdGhh dCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0tCistLSBBIGRhdGEgcmVkaXJl Y3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEgYml0bWFwLCBzbyBpdCByZXBv cnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdlIHRydWUpIGV2ZW4gdGhvdWdo IGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4X2RlbGV0ZV9jaGVja19odGlk IG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJlYWQgaXRzIGJsb2IgYXMgYQor LS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xsYXBzZSBhIGNoYWluIHJvb3Qg dG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5nIHRoZSBzdGFsZSBsZWFmIHRo YXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiksIHRoZW4gaW5zZXJ0CistLSBt YW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBidHJlZSBib3R0b20tdXAgZGVs ZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzIG92ZXIgdGhhdCBzdGFs ZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2lk ZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1f ZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9hIE9OIGhpX2lkZGVs KGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsKK1VQREFURSBoaV9p ZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAgLS0gSE9ULWluZGV4 ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAg ICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9p ZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRpcmVjdCwga2VlcCBz dGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBzdGFsZSBrZXkgZmls bCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0aW9uLCB3aGljaCBm ZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRhLXJlZGlyZWN0IHJv b3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0IG5vdCBjcmFzaCBv ciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwgU0VMRUNUIGcsIDEg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBoaV9pZGRlbDsKK1NF TEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKKyBibGtubyB8IG9mZm51 bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygw IHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9N IGhpX2lkZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAgLS0gY3VycmVudCB2YWx1ZSAt PiBhID0gMworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCAzCisoMSByb3cpCisKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9pZGRlbDsKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMjEuIEEgY2hhbmdlIHRvIGEgY29sdW1uIGNvdmVyZWQgYnkgYSBu b24tYnRyZWUgaW5kZXggQU0gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBBIEhPVC1pbmRleGVk IHVwZGF0ZSBsZWF2ZXMgYSBzdGFsZSBwcmUtdXBkYXRlIGxlYWYgdGhhdCB0aGUgcmVhZCBz aWRlCistLSBmaWx0ZXJzIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGlj aCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljLgorLS0gQSBjb2x1bW4gY292ZXJlZCBieSBh IG5vbi1idHJlZSBpbmRleCAoaGVyZSBhIEdpU1QgaW5kZXggb24gYSBwb2ludCBjb2x1bW4p CistLSBpcyB0aGVyZWZvcmUgSE9ULWluZGV4ZWQgbGlrZSBhbnkgb3RoZXIsIGFuZCB0aGUg R2lTVCBpbmRleCBzdGlsbCByZXR1cm5zCistLSBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRo ZSBjaGFpbi4gIEEgY2hhbmdlIHRvIGEgYnRyZWUtb25seSBjb2x1bW4gb24gdGhlCistLSBz YW1lIHRhYmxlIGlzIGxpa2V3aXNlIEhPVC1pbmRleGVkLgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbm9uYnRyZWUgKGlkIGludCBQUklNQVJZIEtFWSwg dGFnIGludCwgcCBwb2ludCkKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gMTApOworQ1JFQVRF IElOREVYIGhpX25vbmJ0cmVlX3RhZyBPTiBoaV9ub25idHJlZSAodGFnKTsgICAgICAgICAg LS0gYnRyZWUgaW5kZXgKK0NSRUFURSBJTkRFWCBoaV9ub25idHJlZV9wIE9OIGhpX25vbmJ0 cmVlIFVTSU5HIGdpc3QgKHApOyAgIC0tIEdpU1QsIG5vbi1idHJlZQorSU5TRVJUIElOVE8g aGlfbm9uYnRyZWUgU0VMRUNUIGcsIGcsIHBvaW50KGcsIGcpCisgICAgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVyZWQgY29sdW1u IGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUgaGlfbm9uYnRy ZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOworU0VMRUNUIGhv dF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX25v bmJ0cmVlJyk7CisgZ2lzdF9jb2xfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgICAyMDAKKygxIHJvdykKKworLS0gVGhlIEdpU1QgaW5k ZXggbXVzdCByZXR1cm4gY29ycmVjdCByZXN1bHRzOiB0aGUgb2xkIHBvc2l0aW9ucyBhcmUg Z29uZSBhbmQKKy0tIGV2ZXJ5IHJvdyBpcyBmb3VuZCBhdCBpdHMgbmV3IHBvc2l0aW9uIChu byBzdGFsZSBsZWFmIHN1cmZhY2VzIGFuIG9sZCBrZXkpLgorU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGF0X29sZF9wb3NpdGlvbnMKKyAgICBGUk9N IGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAgYm94KHBvaW50KDAsIDApLCBwb2ludCgzMDAsIDMw MCkpOworIGF0X29sZF9wb3NpdGlvbnMgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhdF9uZXdfcG9zaXRp b25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJveChwb2ludCgxMDAwLCAx MDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworIGF0X25ld19wb3NpdGlvbnMgCistLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMjAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworLS0gQ2hhbmdpbmcgdGhlIGJ0cmVlLW9ubHkgY29sdW1uIChwIHVuY2hh bmdlZCkgc3RheXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaGlfbm9uYnRyZWUgU0VUIHRhZyA9 IHRhZyArIDEwMDA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgYnRyZWVfY29sX2lzX2hvdF9p bmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScpOworIGJ0cmVlX2NvbF9p c19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93 KQorCitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSAyMi4gQUJBIG9uIGEgdW5pcXVlIGtleSBhY3Jvc3MgdHdvIGRpc3RpbmN0IGxpdmUg cm93czogYSBrZXkgY3ljbGVkIGF3YXkKKy0tIGFuZCBiYWNrIG11c3Qgc3RpbGwgY29sbGlk ZSB3aXRoIGFub3RoZXIgcm93IHRoYXQgaG9sZHMgaXQuICBUaGUgc3RhbGUKKy0tIGxlYXZl cyBsZWZ0IGJ5IHRoZSBjeWNsZSBtdXN0IG5vdCBsZXQgYSBnZW51aW5lIGR1cGxpY2F0ZSBz bGlwIHBhc3QgdGhlCistLSB1bmlxdWVuZXNzIGNoZWNrIC0tIHRoZSByZWFkLXNpZGUgcmVj aGVjayBjb21wYXJlcyB0aGUgbGl2ZSBrZXksIG5vdCBqdXN0CistLSBhIGNoYW5nZWQtYXR0 cmlidXRlIGJpdG1hcC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX2FiYSAoayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IFVOSVFVRSBJTkRFWCBoaV9hYmFfayBPTiBoaV9hYmEgKGspOworQ1JFQVRFIElOREVYIGhp X2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQgSU5UTyBoaV9hYmEgVkFMVUVTICgxLCAx MCksICgyLCAyMCk7CistLSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+IDMgLT4gMSAo diB1bmNoYW5nZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQgYW5kIGxlYXZl cyBzdGFsZSBlbnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAz IFdIRVJFIHYgPSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAxMDsK K1NFTEVDVCBob3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlf Y291bnQoJ2hpX2FiYScpOworIGN5Y2xlZF9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCistLSByb3cxIGlzIGxpdmUgYXQgayA9IDEgYWdhaW4u ICBNb3Zpbmcgcm93MiBvbnRvIGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUKKy0tIHZpb2xh dGlvbiBkZXNwaXRlIHRoZSBzdGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5Y2xlLgorVVBE QVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDIwOworRVJST1I6ICBkdXBsaWNhdGUg a2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJoaV9hYmFfayIKK0RFVEFJ TDogIEtleSAoayk9KDEpIGFscmVhZHkgZXhpc3RzLgorRFJPUCBUQUJMRSBoaV9hYmE7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0aWFsIGluZGV4IHdob3NlIHBy ZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4uICBGbGlwcGluZyB0aGUKKy0t IHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2aW5nIHRoZSBpbmRleGVkIGtl eSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUgcHJlZGljYXRlIGNvbHVtbiBp cyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQsIHNvCistLSB0aGUgY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3RhbGUgcGFydGlhbC1pbmRleCBl bnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBpcyBpbnZvbHZlZCkuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0cHJlZCAoaWQgaW50 IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4pCisgICAgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJlZF9rIE9OIGhpX3BhcnRwcmVk IChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9wYXJ0cHJlZCBWQUxVRVMgKDEs IDEwMCwgdHJ1ZSk7CistLSBGbGlwIHRoZSBwcmVkaWNhdGUgY29sdW1uICdhY3RpdmUnIHRy dWUgLT4gZmFsc2U7IHRoZSBpbmRleCBrZXkgayBpcworLS0gdW5jaGFuZ2VkLiAgVGhlIHJv dyBubyBsb25nZXIgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIHNvIGl0cyBwYXJ0aWFsLWlu ZGV4CistLSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQsIG5vdCBsZWZ0IHBvaW50aW5nIGludG8g dGhlIGNoYWluLgorVVBEQVRFIGhpX3BhcnRwcmVkIFNFVCBhY3RpdmUgPSBmYWxzZSBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIGhvdCwgaG90X2lkeCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFy dHByZWQnKTsKKyBob3QgfCBob3RfaWR4IAorLS0tLS0rLS0tLS0tLS0tCisgICAxIHwgICAg ICAgMQorKDEgcm93KQorCistLSBUaGUgcGFydGlhbCBpbmRleCBtdXN0IG5vdCBzdXJmYWNl IHRoZSByb3cgbm93IHRoYXQgYWN0aXZlID0gZmFsc2UuCistLSBBIHF1ZXJ5IHdob3NlIHF1 YWwgZXhhY3RseSBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRpY2F0ZSB1c2VzIHRoZSBpbmRl eAorLS0gd2l0aG91dCByZS1maWx0ZXJpbmcgJ2FjdGl2ZScgb24gdGhlIGhlYXAsIHNvIGEg c3RhbGUgZW50cnkgd291bGQgc3VyZmFjZS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgYWN0aXZlOworICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBoaV9wYXJ0 cHJlZF9rIG9uIGhpX3BhcnRwcmVkCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3Bh cnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFjdGl2ZTsKKyBpZCAKKy0tLS0KKygwIHJvd3Mp CisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsKKyBpZCAKKy0t LS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRwcmVkOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAgUmVwZWF0ZWQgdXBkYXRlcyBv ZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0tIG9mIGNvbHVtbiBiIGJ1aWxk IGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1lbWJlcnMgd2hvc2UgY2hhbmdl IHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWluKSBhbmQga2VlcHMgc3R1YnMg Zm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJvb3QgcmVkaXJlY3QgZW5kcyB1 cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2FsayBjcm9zc2VzIG1pZC1jaGFp bgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5kZXggYW5kIGFtY2hlY2sgbXVz dCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFwc2UsIGFuZCBhIHNlY29uZCBy b3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdpdGhvdXQgc2V2ZXJpbmcKKy0t IHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhp X3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxs ZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRF WCBoaV9zdHVibWl4X2EgT04gaGlfc3R1Ym1peCAoYSk7CitDUkVBVEUgSU5ERVggaGlfc3R1 Ym1peF9iIE9OIGhpX3N0dWJtaXggKGIpOworSU5TRVJUIElOVE8gaGlfc3R1Ym1peCBWQUxV RVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX3N0dWJtaXggU0VUIGEgPSAxMSBXSEVSRSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDEyIFdI RVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1cGVyc2VkZXMpCitVUERBVEUg aGlfc3R1Ym1peCBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIKK1ZB Q1VVTSBoaV9zdHVibWl4OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBX SEVSRSBhID0gMTI7ICAgLS0gY3VycmVudCBhCisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0t LSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworU0VMRUNUIGlkLCBhLCBiIEZS T00gaGlfc3R1Ym1peCBXSEVSRSBiID0gMTAxOyAgLS0gY3VycmVudCBiCisgaWQgfCBhICB8 ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworU0VM RUNUIGlkIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTA7ICAgICAgICAgLS0gc3RhbGUg YTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVh cGFtKCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVwdGlvbiBhY3Jvc3Mgc3R1YnMK KyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0KKygwIHJvd3MpCisKKy0tIEEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0 aGUgZXhpc3Rpbmcgc3R1YnMgKG5vIHByaW9yWG1heCBzZXZlcikuCitVUERBVEUgaGlfc3R1 Ym1peCBTRVQgYSA9IDEzIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VM RUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTM7CisgaWQgfCBhICB8 ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTMgfCAxMDEKKygxIHJvdykKKworU0VM RUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7CisgYmxrbm8gfCBvZmZu dW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tCiso MCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3N0dWJtaXg7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDI1LiBFeGNsdXNpb24tY29uc3RyYWludCB0YWJsZXMgYXJlIEhPVC1pbmRl eGVkLWVsaWdpYmxlLgorLS0KKy0tIEFuIGV4Y2x1c2lvbiBjb25zdHJhaW50IGlzIGVuZm9y Y2VkIGJ5IGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCwKKy0tIHdoaWNo IHJlY2hlY2tzIGVhY2ggY2FuZGlkYXRlIGFnYWluc3QgdGhlIGxpdmUgdHVwbGUncyBjdXJy ZW50IGluZGV4LWZvcm0KKy0tIHdpdGggdGhlIGNvbnN0cmFpbnQncyBvd24gb3BlcmF0b3Jz LCBzbyBhIHN0YWxlIGVudHJ5IGxlZnQgYnkgYSBIT1QtaW5kZXhlZAorLS0gdXBkYXRlIGlz IHNraXBwZWQgd2hpbGUgdGhlIGxpdmUga2V5IGFsd2F5cyBoYXMgaXRzIG93biBlbnRyeS4g IFVwZGF0aW5nIGEKKy0tIG5vbi1jb25zdHJhaW5lZCBpbmRleGVkIGNvbHVtbiBpcyBIT1Qt aW5kZXhlZCAodGhlIEdpU1QgZXhjbHVzaW9uIGluZGV4IGlzCistLSBza2lwcGVkKSwgYW5k IHRoZSBjb25zdHJhaW50IHN0YXlzIGNvcnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9leGNsICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgdGFnIGludCwKKyAgICBkdXJpbmcgaW50NHJhbmdlLAorICAgIEVYQ0xVREUgVVNJTkcg Z2lzdCAoZHVyaW5nIFdJVEggJiYpCispIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitDUkVB VEUgSU5ERVggaGlfZXhjbF90YWcgT04gaGlfZXhjbCh0YWcpOworSU5TRVJUIElOVE8gaGlf ZXhjbCBWQUxVRVMgKDEsIDEwMCwgaW50NHJhbmdlKDEsIDEwKSksICgyLCAyMDAsIGludDRy YW5nZSgyMCwgMzApKTsKKy0tIFVwZGF0ZSBhIG5vbi1jb25zdHJhaW5lZCBpbmRleGVkIGNv bHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGluZGV4CistLSBhbmQgUEsgc2tp cHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgc3RpbGwgZW5mb3JjZWQu CitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfZXhjbCcpOworIHRhZ191cGRhdGVfaG90X2luZGV4ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFM VUVTICgzLCAzMDAsIGludDRyYW5nZSg1LCAxNSkpOyAgLS0gb3ZlcmxhcHMgaWQ9MSdzICgx LDEwKQorRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9u IGNvbnN0cmFpbnQgImhpX2V4Y2xfZHVyaW5nX2V4Y2wiCitERVRBSUw6ICBLZXkgKGR1cmlu Zyk9KFs1LDE1KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChkdXJpbmcpPShbMSwx MCkpLgorLS0gTW92ZSBpZD0xJ3MgcmFuZ2UgYXdheSAodGhpcyB1cGRhdGVzIHRoZSBHaVNU IGluZGV4LCBsZWF2aW5nIGEgc3RhbGUgZW50cnkKKy0tIGZvciB0aGUgb2xkICgxLDEwKSBy YW5nZSkuICBBIHJhbmdlIG92ZXJsYXBwaW5nIG9ubHkgdGhlIE9MRCByYW5nZSBub3cKKy0t IGluc2VydHMgY2xlYW5seSAodGhlIHN0YWxlIGVudHJ5IGlzIHNraXBwZWQpOyBvbmUgb3Zl cmxhcHBpbmcgdGhlIE5FVyByYW5nZQorLS0gc3RpbGwgY29uZmxpY3RzLgorVVBEQVRFIGhp X2V4Y2wgU0VUIGR1cmluZyA9IGludDRyYW5nZSgxMDAsIDExMCkgV0hFUkUgaWQgPSAxOwor SU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDQsIDQwMCwgaW50NHJhbmdlKDUsIDE1KSk7 ICAgLS0gb25seSBvdmVybGFwcGVkIG9sZCByYW5nZTogT0sKK0lOU0VSVCBJTlRPIGhpX2V4 Y2wgVkFMVUVTICg1LCA1MDAsIGludDRyYW5nZSgxMDUsIDExNSkpOy0tIG92ZXJsYXBzIG5l dyAoMTAwLDExMCk6IGNvbmZsaWN0CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2 aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhjbF9kdXJpbmdfZXhjbCIKK0RF VEFJTDogIEtleSAoZHVyaW5nKT0oWzEwNSwxMTUpKSBjb25mbGljdHMgd2l0aCBleGlzdGlu ZyBrZXkgKGR1cmluZyk9KFsxMDAsMTEwKSkuCitEUk9QIFRBQkxFIGhpX2V4Y2w7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBUT0FTVCBpbnRlcmFjdGlvbi4gIEFuIGlu ZGV4ZWQgY29sdW1uIHN0b3JlZCBvdXQtb2YtbGluZSBtdXN0IGJlaGF2ZQorLS0gY29ycmVj dGx5IGFjcm9zcyBIT1QtaW5kZXhlZCB1cGRhdGVzOiBhbiBlbnRyeSBrZXB0IGFjcm9zcyBh biB1cGRhdGUgb2YgYQorLS0gZGlmZmVyZW50IGNvbHVtbiBzdGlsbCByZXNvbHZlcyB0byB0 aGUgKHVuY2hhbmdlZCkgdG9hc3RlZCB2YWx1ZSwgYW5kIGFmdGVyCistLSB0aGUgdG9hc3Rl ZCBjb2x1bW4gaXRzZWxmIGlzIGNoYW5nZWQgdGhlIHN0YWxlIGVudHJ5IGlzIGRyb3BwZWQg YnkgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZhbHVlIGNvbXBhcmlz b24gb3IgZGV0b2FzdGluZyBpcyBuZWVkZWQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfdG9hc3QgKGlkIGludCBQUklNQVJZIEtFWSwgYmlnIHRleHQs IHRhZyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitBTFRFUiBUQUJMRSBoaV90b2Fz dCBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFMOyAgLS0gbm8gY29tcHJl c3Npb24KK0NSRUFURSBJTkRFWCBoaV90b2FzdF9iaWcgT04gaGlfdG9hc3QgKGJpZyk7CitD UkVBVEUgSU5ERVggaGlfdG9hc3RfdGFnIE9OIGhpX3RvYXN0ICh0YWcpOworSU5TRVJUIElO VE8gaGlfdG9hc3QgVkFMVUVTICgxLCByZXBlYXQoJ0EnLCAyMDAwKSwgMTApOworLS0gVGhl IGJpZyB2YWx1ZSBpcyBzdG9yZWQgb3V0LW9mLWxpbmUuCitTRUxFQ1QgcGdfY29sdW1uX3Np emUoYmlnKSA+IDE1MDAgQVMgYmlnX2lzX2V4dGVybmFsIEZST00gaGlfdG9hc3QgV0hFUkUg aWQgPSAxOworIGJpZ19pc19leHRlcm5hbCAKKy0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGFnIGxlYXZlcyBiaWcgKGFuZCBp dHMgaW5kZXggZW50cnkpIHVuY2hhbmdlZC4KK1VQREFURSBoaV90b2FzdCBTRVQgdGFnID0g MTEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHRhZ191cGRhdGVfaG90 X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RvYXN0Jyk7CisgdGFnX3VwZGF0ZV9o b3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OworU0VMRUNUIGlkLCB0YWcsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmln ID0gcmVwZWF0KCdBJywgMjAwMCk7CisgaWQgfCB0YWcgfCBsZW5ndGggCistLS0tKy0tLS0t Ky0tLS0tLS0tCisgIDEgfCAgMTEgfCAgIDIwMDAKKygxIHJvdykKKworLS0gSE9ULWluZGV4 ZWQgdXBkYXRlIG9mIHRoZSB0b2FzdGVkIGluZGV4ZWQgY29sdW1uIGl0c2VsZjogdGhlIG9s ZCBlbnRyeSBpcworLS0gbm93IHN0YWxlIGJlY2F1c2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBzaG93cyBiaWcgY2hhbmdlZC4KK1VQREFURSBoaV90b2FzdCBTRVQgYmlnID0g cmVwZWF0KCdCJywgMjAwMCkgV0hFUkUgaWQgPSAxOworU0VMRUNUIGlkIEZST00gaGlfdG9h c3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7ICAgLS0gc3RhbGU6IDAgcm93cwor IGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkLCBsZW5ndGgoYmlnKSBGUk9NIGhp X3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgnQicsIDIwMDApOyAgLS0gY3VycmVudAorIGlk IHwgbGVuZ3RoIAorLS0tLSstLS0tLS0tLQorICAxIHwgICAyMDAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1Qg KiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3RvYXN0Jyk7CisgYmxrbm8gfCBvZmZudW0gfCBh dHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisoMCByb3dz KQorCitEUk9QIFRBQkxFIGhpX3RvYXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSAyNy4gQUJBIG9uIGFuIGluZGV4ZWQgY29sdW1uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg dGhhdCBzZXRzIGFuIGluZGV4ZWQKKy0tIGNvbHVtbiB0byBhIHZhbHVlIGFuIGVhcmxpZXIg Y2hhaW4gbWVtYmVyIGFscmVhZHkgaGVsZCBsZWF2ZXMgdHdvIGxlYXZlcworLS0gd2l0aCB0 aGF0IHNhbWUga2V5LCBib3RoIGNoYWluLXJlc29sdmluZyB0byB0aGUgbGl2ZSB0dXBsZS4g IEEgdmFsdWUtYmFzZWQKKy0tIHJlY2hlY2sgY2Fubm90IHRlbGwgdGhlbSBhcGFydCBhbmQg d291bGQgcmV0dXJuIHRoZSByb3cgdHdpY2U7IHRoZQorLS0gY3Jvc3NlZC1hdHRyaWJ1dGUg Yml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBsZWFmIChpdHMgd2FsayBjcm9zc2Vz IHRoZQorLS0ga2V5LWNoYW5naW5nIGhvcHMpIGFuZCBrZWVwcyBvbmx5IHRoZSBmcmVzaCBl bnRyeSwgc28gYSBmb3JjZWQgaW5kZXggc2NhbgorLS0gcmV0dXJucyB0aGUgcm93IGV4YWN0 bHkgb25jZS4gIFJFSU5ERVggbXVzdCBub3QgY2hhbmdlIHRoYXQuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGlkIGludCBQUklNQVJZIEtFWSwg ayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhp X2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJh ICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEsIDEwMCk7CitVUERBVEUg aGlfYWJhIFNFVCBrID0gMyBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY2hh bmdlZCwgdiBrZXB0CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBXSEVSRSBpZCA9IDE7ICAg LS0gSE9ULWluZGV4ZWQ6IGsgY3ljbGVkIGJhY2sgKEFCQSkKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgq KSBBUyBrMV9vbmNlIEZST00gaGlfYWJhIFdIRVJFIGsgPSAxOyAgICAgLS0gZXhhY3RseSAx CisgazFfb25jZSAKKy0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNv dW50KCopIEFTIGszX2dvbmUgRlJPTSBoaV9hYmEgV0hFUkUgayA9IDM7ICAgICAtLSAwIChz dGFsZSBkcm9wcGVkKQorIGszX2dvbmUgCistLS0tLS0tLS0KKyAgICAgICAwCisoMSByb3cp CisKK1JFSU5ERVggSU5ERVggaGlfYWJhX2s7CitTRUxFQ1QgY291bnQoKikgQVMgazFfYWZ0 ZXJfcmVpbmRleCBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsgIC0tIHN0aWxsIDEKKyBrMV9h ZnRlcl9yZWluZGV4IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMQor KDEgcm93KQorCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9hYmEnKTsKKyBibGtubyB8 IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfYWJhOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSAyOC4gUGFydGlhbCBpbmRleCwgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2Vk IGJ1dCB0aGUgcm93IFNUQVlTIGluIHRoZSBpbmRleAorLS0gKHByZWRpY2F0ZSBzdGlsbCB0 cnVlLCBrZXkgdW5jaGFuZ2VkKS4gIFRoZSB1cGRhdGUgaXMgSE9ULWluZGV4ZWQ7IHNlbGVj dGl2ZQorLS0gbWFpbnRlbmFuY2UgcmUtaW5zZXJ0cyBhIGZyZXNoIGVudHJ5ICh0aGUgcHJl ZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGFuZCBzdGlsbAorLS0gaG9sZHMpLCBzbyB0aGUgcm93 IGlzIHN0aWxsIHJldHVybmVkIC0tIHRoZSBiaXRtYXAgZHJvcHMgdGhlIG9sZGVyIGVudHJ5 IGFuZAorLS0gdGhlIGZyZXNoIG9uZSByZS1zdXBwbGllcyBpdC4gIEd1YXJkcyBhZ2FpbnN0 IGEgImxvc3Qgcm93IiBmcm9tIG92ZXItZWFnZXIKKy0tIGRyb3BwaW5nLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydHN0YXkgKGlkIGludCBQUklN QVJZIEtFWSwgayBpbnQsIG4gaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhpX3BhcnRzdGF5X2sgT04gaGlfcGFydHN0YXkgKGspIFdIRVJFIG4gPiAwOwor Q1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2lkMiBPTiBoaV9wYXJ0c3RheSAoaWQpOworSU5T RVJUIElOVE8gaGlfcGFydHN0YXkgVkFMVUVTICgxLCA1LCAzKTsKK1VQREFURSBoaV9wYXJ0 c3RheSBTRVQgbiA9IDcgV0hFUkUgaWQgPSAxOyAgIC0tIG4gMy0+Nywgc3RpbGwgPiAwLCBr IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBzdGF5X2lzX2hvdF9pbmRleGVkIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0c3RheScpOworIHN0YXlfaXNfaG90X2luZGV4ZWQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBzdGF5X3Jvd3MgRlJPTSBoaV9wYXJ0c3RheSBXSEVSRSBrID0gNSBBTkQgbiA+ IDA7ICAgLS0gd2FudCAxCisgc3RheV9yb3dzIAorLS0tLS0tLS0tLS0KKyAgICAgICAgIDEK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHN0YXk7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDI5LiBQYXJ0aXRpb25lZCB0YWJsZS4gIEEgd2l0aGluLXBhcnRpdGlvbiBVUERB VEUgb2Ygb25lIGluZGV4ZWQgY29sdW1uIGlzCistLSBIT1QtaW5kZXhlZCBvbiB0aGUgbGVh ZiBwYXJ0aXRpb24ncyBoZWFwIGV4YWN0bHkgYXMgZm9yIGEgbm9uLXBhcnRpdGlvbmVkCist LSB0YWJsZTsgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIGlzIGEgZGVsZXRlK2luc2VydCBh bmQgbmV2ZXIgSE9ULgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfcGFydCAoaWQgaW50LCBhIGludCwgYiBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQp OworQ1JFQVRFIFRBQkxFIGhpX3BhcnQxIFBBUlRJVElPTiBPRiBoaV9wYXJ0IEZPUiBWQUxV RVMgRlJPTSAoMCkgVE8gKDEwMCkKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGhpX3BhcnRfYSBPTiBoaV9wYXJ0IChhKTsKK0NSRUFURSBJTkRFWCBoaV9w YXJ0X2IgT04gaGlfcGFydCAoYik7CitJTlNFUlQgSU5UTyBoaV9wYXJ0IFZBTFVFUyAoMSwg MTAsIDIwKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOyAgIC0t IG9uZSBpbmRleGVkIGNvbCwgd2l0aGluIHBhcnRpdGlvbgorU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBB UyBwYXJ0X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0MScpOwor IHBhcnRfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTEgRlJPTSBoaV9wYXJ0IFdIRVJFIGEg PSAxMTsgICAtLSB3YW50IDEKKyBhMTEgCistLS0tLQorICAgMQorKDEgcm93KQorCitTRUxF Q1QgY291bnQoKikgQVMgYTEwIEZST00gaGlfcGFydCBXSEVSRSBhID0gMTA7ICAgLS0gd2Fu dCAwIChzdGFsZSBkcm9wcGVkKQorIGExMCAKKy0tLS0tCisgICAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1Qg KiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQxJyk7CisgYmxrbm8gfCBvZmZudW0gfCBh dHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisoMCByb3dz KQorCitEUk9QIFRBQkxFIGhpX3BhcnQ7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDMwLiBOb24tYnRyZWUgYWNjZXNzIG1ldGhvZCAoaGFzaCkuICBSZWFkLXNpZGUgc3RhbGVu ZXNzIGlzIGFjY2Vzcy1tZXRob2QKKy0tIGFnbm9zdGljICh0aGUgY3Jvc3NlZC1hdHRyaWJ1 dGUgYml0bWFwKSwgc28gYW55IGluZGV4IEFNJ3MgY29sdW1uIGlzCistLSBIT1QtaW5kZXhl ZC4gIEhhc2ggaXMgdGhlIHNoYXJwZXN0IGNhc2U6IGl0cyBzY2FucyByZWNoZWNrIHRoZSBo ZWFwIHZhbHVlLAorLS0gd2hpY2ggYWxvbmUgY2Fubm90IGRpc2FtYmlndWF0ZSBhIHZhbHVl IGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpIC0tIHRoZQorLS0gYml0bWFwIGRyb3BzIHRo ZSBzdGFsZSBhbmNlc3RvciBzbyB0aGUgcm93IGlzIHJldHVybmVkIGV4YWN0bHkgb25jZS4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2hhc2ggKGlkIGlu dCBQUklNQVJZIEtFWSwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2hhc2hfdiBPTiBoaV9oYXNoIFVTSU5HIGhhc2ggKHYpOworQ1JF QVRFIElOREVYIGhpX2hhc2hfdyBPTiBoaV9oYXNoICh3KTsKK0lOU0VSVCBJTlRPIGhpX2hh c2ggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9oYXNoIFNFVCB2ID0gOTkgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSAxMCBXSEVSRSBpZCA9IDE7ICAg LS0gQUJBOiAxMCAtPiA5OSAtPiAxMCwgdyB1bmNoYW5nZWQKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaG90X2lkeCA+IDAg QVMgaGFzaF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfaGFzaCcpOwor IGhhc2hfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3YxMCBGUk9NIGhpX2hhc2ggV0hF UkUgdiA9IDEwOyAgIC0tIHdhbnQgMSAobm8gZHVwbGljYXRlKQorIGhhc2hfdjEwIAorLS0t LS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNo X3Y5OSBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDk5OyAgIC0tIHdhbnQgMCAoc3RhbGUgZHJv cHBlZCkKKyBoYXNoX3Y5OSAKKy0tLS0tLS0tLS0KKyAgICAgICAgMAorKDEgcm93KQorCitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBU QUJMRSBoaV9oYXNoOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzMS4gRERMIGFm dGVyIGEgSE9ULWluZGV4ZWQgY2hhaW4gZXhpc3RzLiAgVGhlIHBlci1ob3AgbW9kaWZpZWQt YXR0cnMKKy0tIGJpdG1hcCBvbiB0aGUgcGFnZSBpcyBrZXllZCBieSBwaHlzaWNhbCBhdHRy aWJ1dGUgbnVtYmVyIGFuZCBzaXplZCBieSB0aGUKKy0tIHJlbGF0aW9uJ3MgbmF0dHMgQVQg V1JJVEUgVElNRS4gIEluZGV4ZXMgYWRkZWQvZHJvcHBlZCBhZnRlciB0aGUgY2hhaW4KKy0t IGZvcm1zLCBhbmQgQUREL0RST1AgQ09MVU1OLCBtdXN0IG5vdCBjb3JydXB0IHRoZSByZWFk LXNpZGUgc3RhbGVuZXNzIHRlc3QuCistLSBUaGUgc2hhcnAgY2FzZSBpcyBBREQgQ09MVU1O IGNyb3NzaW5nIGFuIDgtYXR0cmlidXRlIGJvdW5kYXJ5LCB3aGljaCBncm93cworLS0gY2Vp bChuYXR0cy84KTogcmVhZGVycyBtdXN0IGxvY2F0ZSBlYWNoIGhvcCdzIGJpdG1hcCBmcm9t IHRoYXQgaG9wJ3Mgb3duCistLSB3cml0ZS10aW1lIG5hdHRzIChIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cyAvIHRoZSBzdHViJ3Mgc3Rhc2hlZCBuYXR0cyksIG5vdAorLS0gdGhlIHJlbGF0 aW9uJ3MgY3VycmVudCBuYXR0cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRXhh Y3RseSA4IGF0dHJpYnV0ZXMgKGMxLi5jNyArIHBheWxvYWQpIHNvIGFkZGluZyB0aGUgOXRo IGZsaXBzIHRoZSBiaXRtYXAKKy0tIGZyb20gMSBieXRlIHRvIDIuICBjNyBpcyB0aGUgY29s dW1uIHdlIGNodXJuOyBjMiBpcyBhbiB1bmNoYW5nZWQgaW5kZXhlZAorLS0gY29sdW1uIHdo b3NlIGxlYWYgbXVzdCBzdGF5IGN1cnJlbnQuCitDUkVBVEUgVEFCTEUgaGlfZGRsICgKKyAg ICBjMSBpbnQgUFJJTUFSWSBLRVksIGMyIGludCwgYzMgaW50LCBjNCBpbnQsCisgICAgYzUg aW50LCBjNiBpbnQsIGM3IGludCwgcGF5bG9hZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX2Rk bF9jMiBPTiBoaV9kZGwoYzIpOworQ1JFQVRFIElOREVYIGhpX2RkbF9jNyBPTiBoaV9kZGwo YzcpOworSU5TRVJUIElOVE8gaGlfZGRsIFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgNDAsIDUw LCA3MCwgJ3AnKTsKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBjaGFpbiBvbiBjNyBCRUZPUkUg YW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MSBXSEVSRSBjMSA9 IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJFIGMxID0gMTsKKy0tIChhKSBD UkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWluIGV4aXN0czogdGhlIG5ldyBpbmRleCBpcyBi dWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0dXBsZSB1bmRlciBpdHMgb3duIFRJRCwgc28g aXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgorQ1JFQVRFIElOREVYIGhpX2RkbF9jMyBPTiBo aV9kZGwoYzMpOworLS0gKGIpIEFERCBDT0xVTU4gY3Jvc3NpbmcgdGhlIDgtYXR0cmlidXRl IGJvdW5kYXJ5IChuYXR0cyA4IC0+IDkpLiAgRXhpc3RpbmcKKy0tIGhvcHMga2VlcCB0aGVp ciAxLWJ5dGUgYml0bWFwczsgdGhlIHJlbGF0aW9uIG5vdyB3YW50cyAyLiAgUmVhZHMgdGhy b3VnaCB0aGUKKy0tIG9sZCBjaGFpbiBtdXN0IHN0aWxsIGJlIGNvcnJlY3QuCitBTFRFUiBU QUJMRSBoaV9kZGwgQUREIENPTFVNTiBjOSBpbnQ7CitDUkVBVEUgSU5ERVggaGlfZGRsX2M5 IE9OIGhpX2RkbChjOSk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7Cist LSBMaXZlIGM3IGlzIDcyLiAgVGhlIGM3IGluZGV4IG11c3QgcmV0dXJuIHRoZSBsaXZlIHJv dyBmb3IgNzIgYW5kIGRyb3AgdGhlCistLSBzdGFsZSBsZWF2ZXMgZm9yIDcwIGFuZCA3MSAo b2Zmc2V0cyBtaXNyZWFkIHdvdWxkIGNvcnJ1cHQgdGhpcykuCitTRUxFQ1QgY291bnQoKikg QVMgYzdfZXFfNzIgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MiBBTkQgcGF5bG9hZCBJUyBO T1QgTlVMTDsKKyBjN19lcV83MiAKKy0tLS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQor CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUg YzcgPSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MF9zdGFsZSAKKy0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MSBBTkQg cGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MV9zdGFsZSAKKy0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBjMiBuZXZlciBjaGFuZ2VkIGFj cm9zcyB0aGUgY2hhaW46IGl0cyBsZWFmIG11c3QgTk9UIGJlIGp1ZGdlZCBzdGFsZSBldmVu CistLSB0aG91Z2ggYSBjcm9zc2VkIGhvcCBjaGFuZ2VkIGM3LiAgQSBtaXNyZWFkIGJpdG1h cCBjb3VsZCBzcHVyaW91c2x5IGZsYWcgaXQuCitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFf MTBfY3VycmVudCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5P VCBOVUxMOworIGMyX2VxXzEwX2N1cnJlbnQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChjKSBDb250aW51ZSBjaHVybmluZyBjNyBB RlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBiaXRtYXAgaXMgc2l6ZWQKKy0t IGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3BzIGFyZSAxIGJ5dGUuICBBIGNo YWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0IHN0aWxsIHJlc29sdmUgY29y cmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBXSEVSRSBjMSA9IDE7CitTRUxF Q1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MyBBTkQg cGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MyAKKy0tLS0tLS0tLS0KKyAgICAgICAg MQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzJfbm93X3N0YWxlIEZS T00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdf ZXFfNzJfbm93X3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgIDAKKygxIHJvdykKKworLS0gKGQpIENvbGxhcHNlIHRoZSBjaGFpbiB0byBzdHVicyB2 aWEgVkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHViIG11c3QKKy0tIHByZXNlcnZl IGl0cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIHBv c3QtQUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzQgV0hFUkUgYzEgPSAx OworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRsOworU0VMRUNUIGNvdW50KCop IEFTIGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDc0IEFO RCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwg V0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9lcV8xMF9hZnRl cl92YWN1dW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgMQorKDEgcm93KQorCistLSAoZSkgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bSBz bG90IChubyByZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBhbGlnbmVkLgorQUxURVIgVEFC TEUgaGlfZGRsIERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2FmdGVy X2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjN19hZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMQor KDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcCBGUk9NIGhpX2Rk bCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGMyX2FmdGVyX2Ry b3AgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChm KSBEUk9QIElOREVYIG9uIHRoZSBjaHVybmVkIGNvbHVtbjogcmVtYWluaW5nIGluZGV4ZXMg c3RpbGwgcmVzb2x2ZS4KK0RST1AgSU5ERVggaGlfZGRsX2M3OworU0VMRUNUIGNvdW50KCop IEFTIGMyX2FmdGVyX2Ryb3BpZHggRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5 bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9hZnRlcl9kcm9waWR4IAorLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNj YW47CistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJtcyB0aGUgbGl2ZSByb3c7IHRoZSBj b3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0aHJvdWdoIHRoZSBwb3N0LURETCBp bmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3b3VsZCBicmVhayBpZiBhCistLSBt aXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3RhbGVuZXNzIHZlcmRpY3QuCitTRUxF Q1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBjMSA9IDE7CisgYzEgfCBjMiB8IGM3 IAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEwIHwgNzQKKygxIHJvdykKKworRFJPUCBUQUJM RSBoaV9kZGw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMyLiBCaXRtYXBBbmQv Qml0bWFwT3IgYWNyb3NzIGEgY2hhbmdlZCBhbmQgYW4gdW5jaGFuZ2VkIGluZGV4CistLQor LS0gUmVwb3J0ZWQgYnkgQWxleGFuZGVyIEtvcm90a292LCAyMDI2LTA3LTA5LiAgQSBIT1Qt aW5kZXhlZCB1cGRhdGUgcG9pbnRzCistLSB0aGUgQ0hBTkdFRCBpbmRleCdzIGZyZXNoIGVu dHJ5IGF0IHRoZSBuZXcgaGVhcC1vbmx5IHR1cGxlLCB3aGlsZSB0aGUKKy0tIFVOQ0hBTkdF RCBpbmRleCdzIGVudHJ5IHN0aWxsIHBvaW50cyBhdCB0aGUgY2hhaW4gcm9vdC4gIEJpdG1h cEFuZC9CaXRtYXBPcgorLS0gaW50ZXJzZWN0L3VuaW9uIHR3byBpbmRleGVzJyByYXcgVElE IHNldHMgaW4gdGhlIFRJRC1iaXRtYXAgbGF5ZXIgQkVGT1JFCistLSBlaXRoZXIgc2lkZSB0 b3VjaGVzIHRoZSBoZWFwOiBhbiBleGFjdC1tb2RlIGludGVyc2VjdGlvbiBzZWVzIHtyb290 fSBvbiBvbmUKKy0tIHNpZGUgYW5kIHtuZXctdHVwbGV9IG9uIHRoZSBvdGhlciBhbmQgZHJv cHMgdGhlIHJvdywgZXZlbiB0aG91Z2ggYm90aAorLS0gcmVzb2x2ZSwgdGhyb3VnaCB0aGUg Y2hhaW4sIHRvIHRoZSBvbmUgbGl2ZSB0dXBsZS4gIEJpdG1hcCBzY2FucyB0b2xlcmF0ZQor LS0gZmFsc2UgcG9zaXRpdmVzIGJ1dCBub3QgZmFsc2UgbmVnYXRpdmVzLCBzbyB0aGlzIHdh cyBhIGNvcnJlY3RuZXNzIGJ1Zy4KKy0tCistLSBGaXhlZCBieSBhIG9uZS1iaXQgbWFya2Vy IGluIHRoZSBzdG9yZWQgVElEJ3Mgb3RoZXJ3aXNlLXVudXNlZCBvZmZzZXQgYml0CistLSAx NCAoSXRlbVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZywgc3RvcmFnZS9pdGVtcHRyLmgpLCBz ZXQgb25seSBvbiBhCistLSBIT1QtaW5kZXhlZCBmcmVzaCBlbnRyeSdzIG93biBUSUQgKG5l dmVyIG9uIHR0c190aWQgaXRzZWxmLCBuZXZlciBvbiBhCistLSBjbGFzc2ljLUhPVCBvciBw bGFpbi1pbnNlcnQgZW50cnkpLiAgdGJtX2FkZF90dXBsZXMoKSAtLSB0aGUgc2luZ2xlIGNo b2tlCistLSBwb2ludCBldmVyeSBhbWdldGJpdG1hcCBmdW5uZWxzIGV4YWN0IGhlYXAgVElE cyB0aHJvdWdoIC0tIGNoZWNrcyB0aGUgZmxhZworLS0gYW5kLCB3aGVuIHNldCwgYWRkcyB0 aGUgd2hvbGUgcGFnZSBhcyBsb3NzeSAodGJtX2FkZF9wYWdlKSBpbnN0ZWFkIG9mIHRoZQor LS0gc2luZ2xlIGV4YWN0IG9mZnNldC4gIEEgbG9zc3kgcGFnZSBzdXJ2aXZlcyBhbnkgQU5E L09SIGFnYWluc3QgYW4gZXhhY3QtbW9kZQorLS0gcGFnZSAocGVyIHRibV9pbnRlcnNlY3Rf cGFnZSdzIG93biBjYXNlIGFuYWx5c2lzKSBhbmQgZm9yY2VzIHRoZSBleGlzdGluZworLS0g aGVhcC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIHJlY2hlY2sgdG8gbWFrZSB0aGUgZmluYWwg Y2FsbC4gIEhhbmRsaW5nIGl0CistLSB0aGVyZSBtZWFucyBOTyBpbmRleCBhY2Nlc3MgbWV0 aG9kIG5lZWRzIHRvIGtub3cgYWJvdXQgSE9ULWluZGV4ZWQgY2hhaW5zOgorLS0gYnRyZWUs IGhhc2gsIEdJTiwgR2lTVCwgU1AtR2lTVCwgY29udHJpYi9ibG9vbSwgYW5kIGFueSBvdXQt b2YtdHJlZSBBTSBhcmUKKy0tIGFsbCBjb3JyZWN0IHdpdGggbm8gQU0tc3BlY2lmaWMgY29k ZS4gIE9uZSB0YWJsZSBwZXIgbm9uLWJ0cmVlIGFjY2VzcyBtZXRob2QKKy0tIGJlbG93LCBl YWNoIHBhaXJlZCB3aXRoIGEgYnRyZWUgaW5kZXggb24gdGhlIGNoYW5nZWQgY29sdW1uLCBl eGVyY2lzZXMgdGhlCistLSBjaGFuZ2VkK3VuY2hhbmdlZCBCaXRtYXBBbmQvQml0bWFwT3Ig c2hhcGUgZm9yIGV2ZXJ5IEFNIFNJVSB1c2VzIGVsc2V3aGVyZQorLS0gaW4gdGhpcyBmaWxl OyBibG9vbSdzIGVxdWl2YWxlbnQgY2FzZSBsaXZlcyBpbiBjb250cmliL2Jsb29tJ3Mgb3du IHRlc3QKKy0tICh3aGVyZSB0aGUgZXh0ZW5zaW9uIGlzIGd1YXJhbnRlZWQgcHJlc2VudCku CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0g b247CistLSAoYSkgYnRyZWUgKyBidHJlZQorQ1JFQVRFIFRBQkxFIGhpX2JtYW5kX2J0ICgK KyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYzEgaW50LAorICAgIGMyIGludAorKSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2J0X2MxIE9O IGhpX2JtYW5kX2J0KGMxKTsgICAtLSB1bmNoYW5nZWQKK0NSRUFURSBJTkRFWCBoaV9ibWFu ZF9idF9jMiBPTiBoaV9ibWFuZF9idChjMik7ICAgLS0gY2hhbmdlZAorSU5TRVJUIElOVE8g aGlfYm1hbmRfYnQgVkFMVUVTICgxLCAxMSwgMjEpOworVVBEQVRFIGhpX2JtYW5kX2J0IFNF VCBjMiA9IDIyIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBidF9idF9iaXRt YXBhbmQgRlJPTSBoaV9ibWFuZF9idCBXSEVSRSBjMSA9IDExIEFORCBjMiA9IDIyOworIGJ0 X2J0X2JpdG1hcGFuZCAKKy0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAxCiso MSByb3cpCisKKy0tIFRoZSBmcmVzaCBlbnRyeSBpbiB0aGUgY2hhbmdlZCBpbmRleCAoaGlf Ym1hbmRfYnRfYzIpIGlzIGZsYWdnZWQ6IHBhZ2VpbnNwZWN0CistLSByZXBvcnRzIGl0cyBy ZWFsIGhlYXAgb2Zmc2V0ICh0aGUgbWFya2VyIGlzIHN0cmlwcGVkIGZyb20gY3RpZC9odGlk KSBhbmQKKy0tIHN1cmZhY2VzIHRoZSBtYXJrZXIgaW4gdGhlIGhvdF9pbmRleGVkIGNvbHVt bi4gIFRoZSB1bmNoYW5nZWQgaW5kZXgncyBlbnRyeQorLS0gaXMgbm90IGZsYWdnZWQuICAo YnRfcGFnZV9pdGVtcyBibG9jayAxIGlzIHRoZSBzb2xlIGxlYWYgZm9yIGEgc2luZ2xlIHJv dy4pCitTRUxFQ1QgaG90X2luZGV4ZWQsIGNvdW50KCopCisgIEZST00gYnRfcGFnZV9pdGVt cygnaGlfYm1hbmRfYnRfYzInLCAxKSBHUk9VUCBCWSBob3RfaW5kZXhlZCBPUkRFUiBCWSBo b3RfaW5kZXhlZDsKKyBob3RfaW5kZXhlZCB8IGNvdW50IAorLS0tLS0tLS0tLS0tLSstLS0t LS0tCisgZiAgICAgICAgICAgfCAgICAgMQorIHQgICAgICAgICAgIHwgICAgIDEKKygyIHJv d3MpCisKK1NFTEVDVCBib29sX2FuZChOT1QgaG90X2luZGV4ZWQpIEFTIHVuY2hhbmdlZF9p bmRleF9uZXZlcl9mbGFnZ2VkCisgIEZST00gYnRfcGFnZV9pdGVtcygnaGlfYm1hbmRfYnRf YzEnLCAxKTsKKyB1bmNoYW5nZWRfaW5kZXhfbmV2ZXJfZmxhZ2dlZCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIGFtY2hlY2sncyBoZWFw YWxsaW5kZXhlZCB2ZXJpZmljYXRpb24gcmUtZGVyaXZlcyBlYWNoIGxpdmUgaGVhcCB0dXBs ZSdzCistLSBleHBlY3RlZCBpbmRleCBlbnRyeSBhbmQgY2hlY2tzIHRoZSBpbmRleCBjb250 YWlucyBpdC4gIEZvciB0aGUgQ0hBTkdFRAorLS0gaW5kZXgsIGEgSE9ULWluZGV4ZWQgZnJl c2ggZW50cnkgc3RvcmVzIHRoYXQgVElEIHdpdGggdGhlIFNJVSBtYXktYmUtc3RhbGUKKy0t IG1hcmtlciBzZXQgaW4gdGhlIG9mZnNldDsgYW1jaGVjayBtdXN0IHN0cmlwIGl0IHdoZW4g ZmluZ2VycHJpbnRpbmcgb3IgaXQKKy0tIHdvdWxkIHNwdXJpb3VzbHkgcmVwb3J0ICJsYWNr cyBtYXRjaGluZyBpbmRleCB0dXBsZSIuICBObyBWQUNVVU0gaGFzIHJ1biwgc28KKy0tIHRo ZSBmcmVzaCBlbnRyeSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlIGxpdmUgaGVhcC1vbmx5IHR1 cGxlIChubyBzdHViCistLSBmb3J3YXJkaW5nKSwgaXNvbGF0aW5nIHRoZSBtYXJrZXItc3Ry aXAgcGF0aCB0aGlzIGNvbW1pdCBhZGRzLgorLS0KKy0tIChPbmx5IHRoZSBjaGFuZ2VkIGlu ZGV4IGlzIGNoZWNrZWQgaGVyZS4gIGhlYXBhbGxpbmRleGVkIG9uIGFuIGluZGV4IE5PVAor LS0gbWFpbnRhaW5lZCBieSBhIEhPVC1pbmRleGVkIHVwZGF0ZSAtLSB3aGljaCBieSBkZXNp Z24gaGFzIG5vIGVudHJ5IGZvciB0aGUKKy0tIG5ldyBoZWFwLW9ubHkgdHVwbGUgLS0gaXMg YSBzZXBhcmF0ZSwgcHJlLWV4aXN0aW5nIFNJVS9hbWNoZWNrLWludGVncmF0aW9uCistLSBx dWVzdGlvbiwgdW5yZWxhdGVkIHRvIHRoZSBiaXQtMTQgbWFya2VyLCBhbmQgb3V0IG9mIHNj b3BlIGZvciB0aGlzIGNvbW1pdC4pCitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2hpX2JtYW5k X2J0X2MyJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSk7CisgYnRfaW5kZXhfY2hlY2sgCist LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfYm1hbmRfYnQ7 CistLSAoYikgaGFzaCAodW5jaGFuZ2VkKSArIGJ0cmVlIChjaGFuZ2VkKQorQ1JFQVRFIFRB QkxFIGhpX2JtYW5kX2hhc2ggKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjMSBp bnQsCisgICAgYzIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfYm1hbmRfaGFzaF9jMSBPTiBoaV9ibWFuZF9oYXNoIFVTSU5HIGhhc2ggKGMxKTsK K0NSRUFURSBJTkRFWCBoaV9ibWFuZF9oYXNoX2MyIE9OIGhpX2JtYW5kX2hhc2goYzIpOwor SU5TRVJUIElOVE8gaGlfYm1hbmRfaGFzaCBWQUxVRVMgKDEsIDExLCAyMSk7CitVUERBVEUg aGlfYm1hbmRfaGFzaCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQo KikgQVMgaGFzaF9idF9iaXRtYXBhbmQgRlJPTSBoaV9ibWFuZF9oYXNoIFdIRVJFIGMxID0g MTEgQU5EIGMyID0gMjI7CisgaGFzaF9idF9iaXRtYXBhbmQgCistLS0tLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9ibWFu ZF9oYXNoOworLS0gKGMpIEdJTiAodW5jaGFuZ2VkKSArIGJ0cmVlIChjaGFuZ2VkKQorQ1JF QVRFIFRBQkxFIGhpX2JtYW5kX2dpbiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHRhZ3MgaW50W10sCisgICAgYzIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitD UkVBVEUgSU5ERVggaGlfYm1hbmRfZ2luX3RhZ3MgT04gaGlfYm1hbmRfZ2luIFVTSU5HIGdp biAodGFncyk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfZ2luX2MyIE9OIGhpX2JtYW5kX2dp bihjMik7CitJTlNFUlQgSU5UTyBoaV9ibWFuZF9naW4gVkFMVUVTICgxLCBBUlJBWVsxLDIs M10sIDIxKTsKK1VQREFURSBoaV9ibWFuZF9naW4gU0VUIGMyID0gMjIgV0hFUkUgaWQgPSAx OworU0VMRUNUIGNvdW50KCopIEFTIGdpbl9idF9iaXRtYXBhbmQKKyAgRlJPTSBoaV9ibWFu ZF9naW4gV0hFUkUgdGFncyBAPiBBUlJBWVsyXSBBTkQgYzIgPSAyMjsKKyBnaW5fYnRfYml0 bWFwYW5kIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMQorKDEgcm93 KQorCitEUk9QIFRBQkxFIGhpX2JtYW5kX2dpbjsKKy0tIChkKSBHaVNUICh1bmNoYW5nZWQp ICsgYnRyZWUgKGNoYW5nZWQpCitDUkVBVEUgVEFCTEUgaGlfYm1hbmRfZ2lzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHAgcG9pbnQsCisgICAgYzIgaW50CispIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfZ2lzdF9wIE9OIGhp X2JtYW5kX2dpc3QgVVNJTkcgZ2lzdCAocCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfZ2lz dF9jMiBPTiBoaV9ibWFuZF9naXN0KGMyKTsKK0lOU0VSVCBJTlRPIGhpX2JtYW5kX2dpc3Qg VkFMVUVTICgxLCBwb2ludCg1LCA1KSwgMjEpOworVVBEQVRFIGhpX2JtYW5kX2dpc3QgU0VU IGMyID0gMjIgV0hFUkUgaWQgPSAxOworU0VMRUNUIGNvdW50KCopIEFTIGdpc3RfYnRfYml0 bWFwYW5kCisgIEZST00gaGlfYm1hbmRfZ2lzdCBXSEVSRSBwIDxAIGJveChwb2ludCgwLCAw KSwgcG9pbnQoMTAsIDEwKSkgQU5EIGMyID0gMjI7CisgZ2lzdF9idF9iaXRtYXBhbmQgCist LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworRFJP UCBUQUJMRSBoaV9ibWFuZF9naXN0OworLS0gKGUpIFNQLUdpU1QgKHVuY2hhbmdlZCkgKyBi dHJlZSAoY2hhbmdlZCkKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9zcGdpc3QgKAorICAgIGlk IGludCBQUklNQVJZIEtFWSwKKyAgICB0IHRleHQsCisgICAgYzIgaW50CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfc3BnaXN0X3QgT04gaGlf Ym1hbmRfc3BnaXN0IFVTSU5HIHNwZ2lzdCAodCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRf c3BnaXN0X2MyIE9OIGhpX2JtYW5kX3NwZ2lzdChjMik7CitJTlNFUlQgSU5UTyBoaV9ibWFu ZF9zcGdpc3QgVkFMVUVTICgxLCAnaGVsbG8nLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfc3Bn aXN0IFNFVCBjMiA9IDIyIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBzcGdp c3RfYnRfYml0bWFwYW5kCisgIEZST00gaGlfYm1hbmRfc3BnaXN0IFdIRVJFIHQgPSAnaGVs bG8nIEFORCBjMiA9IDIyOworIHNwZ2lzdF9idF9iaXRtYXBhbmQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUg aGlfYm1hbmRfc3BnaXN0OworLS0gKGYpIEJpdG1hcE9yOiBhIEhPVC1pbmRleGVkIGZyZXNo IGVudHJ5IChidHJlZSwgY2hhbmdlZCkgdW5pb25lZCB3aXRoIGFuCistLSB1bnJlbGF0ZWQg dW5jaGFuZ2VkIGluZGV4J3MgZW50cnkgZm9yIGEgRElGRkVSRU5UIHJvdyBtdXN0IG5vdCBh ZmZlY3QgdGhhdAorLS0gb3RoZXIgcm93J3MgY291bnQsIGFuZCB0aGUgU0lVIHJvdyBpdHNl bGYgbXVzdCBzdGlsbCBiZSBmb3VuZCB0aHJvdWdoCistLSBlaXRoZXIgYXJtIG9mIHRoZSBP Ui4KK0NSRUFURSBUQUJMRSBoaV9ibW9yX2J0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgYzEgaW50LAorICAgIGMyIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2Jtb3JfYnRfYzEgT04gaGlfYm1vcl9idChjMSk7CitDUkVBVEUg SU5ERVggaGlfYm1vcl9idF9jMiBPTiBoaV9ibW9yX2J0KGMyKTsKK0lOU0VSVCBJTlRPIGhp X2Jtb3JfYnQgVkFMVUVTICgxLCAxMSwgMjEpLCAoMiwgMTIsIDMyKTsKK1VQREFURSBoaV9i bW9yX2J0IFNFVCBjMiA9IDIyIFdIRVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZCBvbiBy b3cgMSBvbmx5CitTRUxFQ1QgY291bnQoKikgQVMgYnRfYnRfYml0bWFwb3IKKyAgRlJPTSBo aV9ibW9yX2J0IFdIRVJFIGMxID0gMTEgT1IgYzIgPSAzMjsgICAgLS0gcm93IDEgdmlhIGMx LCByb3cgMiB2aWEgYzIKKyBidF9idF9iaXRtYXBvciAKKy0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgMgorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2Jtb3JfYnQ7CitSRVNF VCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFi bGVfYml0bWFwc2NhbjsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gQ2xlYW51cAor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEUk9QIEZVTkNUSU9OIGdldF9oaV9jb3VudCh0 ZXh0KTsKK0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKKy0tIHBhZ2VpbnNw ZWN0IGFuZCBhbWNoZWNrIHdlcmUgYm90aCBjcmVhdGVkIGFib3ZlIHdpdGggSUYgTk9UIEVY SVNUUyBhbmQgbWF5CistLSBoYXZlIHByZS1leGlzdGVkIHRoaXMgdGVzdDsgbGVhdmUgdGhl bSwgbWF0Y2hpbmcgYW1jaGVjaydzIHRyZWF0bWVudCwKKy0tIHJhdGhlciB0aGFuIHJpc2sg ZHJvcHBpbmcgYW4gZXh0ZW5zaW9uIHRoaXMgdGVzdCBkaWQgbm90IGNyZWF0ZS4KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMzk5MDVjMmRlMTQuLmQ4Mjg1NDIz MjIwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTgxMCw2ICsx ODEwLDggQEAgcGdfc3RhdF9hbGxfaW5kZXhlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAog ICAgIHBnX3N0YXRfZ2V0X2xhc3RzY2FuKGkub2lkKSBBUyBsYXN0X2lkeF9zY2FuLAogICAg IHBnX3N0YXRfZ2V0X3R1cGxlc19yZXR1cm5lZChpLm9pZCkgQVMgaWR4X3R1cF9yZWFkLAog ICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19mZXRjaGVkKGkub2lkKSBBUyBpZHhfdHVwX2ZldGNo LAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQo aS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgIHBnX3N0YXRf Z2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQoaS5vaWQpIEFTIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHBnX3N0YXRfZ2V0X3N0YXRfcmVzZXRf dGltZShpLm9pZCkgQVMgc3RhdHNfcmVzZXQKICAgIEZST00gKCgocGdfY2xhc3MgYwogICAg ICBKT0lOIHBnX2luZGV4IHggT04gKChjLm9pZCA9IHguaW5kcmVsaWQpKSkKQEAgLTE4Mjks NiArMTgzMSw3IEBAIHBnX3N0YXRfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlk LAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKGMub2lkKSBBUyBuX3R1cF91cGQs CiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQoYy5vaWQpIEFTIG5fdHVwX2RlbCwK ICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hv dF91cGQsCisgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoYy5v aWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNf bmV3cGFnZV91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICBwZ19z dGF0X2dldF9saXZlX3R1cGxlcyhjLm9pZCkgQVMgbl9saXZlX3R1cCwKICAgICBwZ19zdGF0 X2dldF9kZWFkX3R1cGxlcyhjLm9pZCkgQVMgbl9kZWFkX3R1cCwKQEAgLTIzMzIsNiArMjMz NSw4IEBAIHBnX3N0YXRfc3lzX2luZGV4ZXN8IFNFTEVDVCByZWxpZCwKICAgICBsYXN0X2lk eF9zY2FuLAogICAgIGlkeF90dXBfcmVhZCwKICAgICBpZHhfdHVwX2ZldGNoLAorICAgIG5f dHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3Vw ZF9tYXRjaGVkLAogICAgIHN0YXRzX3Jlc2V0CiAgICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4 ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5h bWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15w Z190b2FzdCc6OnRleHQpKTsKQEAgLTIzNDgsNiArMjM1Myw3IEBAIHBnX3N0YXRfc3lzX3Rh Ymxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAgICBuX3R1cF9kZWwsCiAg ICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgbl90 dXBfbmV3cGFnZV91cGQsCiAgICAgbl9saXZlX3R1cCwKICAgICBuX2RlYWRfdHVwLApAQCAt MjM4Nyw2ICsyMzkzLDggQEAgcGdfc3RhdF91c2VyX2luZGV4ZXN8IFNFTEVDVCByZWxpZCwK ICAgICBsYXN0X2lkeF9zY2FuLAogICAgIGlkeF90dXBfcmVhZCwKICAgICBpZHhfdHVwX2Zl dGNoLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkLAorICAgIG5fdHVwX2hv dF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgIHN0YXRzX3Jlc2V0CiAgICBGUk9NIHBnX3N0 YXRfYWxsX2luZGV4ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3Bn X2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNj aGVtYW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAgLTI0MDMsNiArMjQxMSw3IEBA IHBnX3N0YXRfdXNlcl90YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX3R1cF91cGQsCiAg ICAgbl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAgbl90dXBfaG90X2luZGV4 ZWRfdXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90dXAsCiAgICAg bl9kZWFkX3R1cCwKQEAgLTI0NTgsNiArMjQ2Nyw3IEBAIHBnX3N0YXRfeGFjdF9hbGxfdGFi bGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2RlbGV0ZWQoYy5vaWQpIEFTIG5fdHVwX2RlbCwKICAgICBwZ19zdGF0X2dldF94 YWN0X3R1cGxlc19ob3RfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKGMub2lkKSBBUyBu X3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3 cGFnZV91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZAogICAgRlJPTSAoKHBn X2NsYXNzIGMKICAgICAgTEVGVCBKT0lOIHBnX2luZGV4IGkgT04gKChjLm9pZCA9IGkuaW5k cmVsaWQpKSkKQEAgLTI0NzUsNiArMjQ4NSw3IEBAIHBnX3N0YXRfeGFjdF9zeXNfdGFibGVz fCBTRUxFQ1QgcmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBu X3R1cF9ob3RfdXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9u ZXdwYWdlX3VwZAogICAgRlJPTSBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlcwogICBXSEVSRSAo KHNjaGVtYW5hbWUgPSBBTlkgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0 aW9uX3NjaGVtYSc6Om5hbWVdKSkgT1IgKHNjaGVtYW5hbWUgfiAnXnBnX3RvYXN0Jzo6dGV4 dCkpOwpAQCAtMjQ5OCw2ICsyNTA5LDcgQEAgcGdfc3RhdF94YWN0X3VzZXJfdGFibGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1 cF9ob3RfdXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdw YWdlX3VwZAogICAgRlJPTSBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlcwogICBXSEVSRSAoKHNj aGVtYW5hbWUgPD4gQUxMIChBUlJBWVsncGdfY2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlv bl9zY2hlbWEnOjpuYW1lXSkpIEFORCAoc2NoZW1hbmFtZSAhfiAnXnBnX3RvYXN0Jzo6dGV4 dCkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBi L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggYmQ5NWNjMjQ5Nzcu LjRmZGU1YjZiMGM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTE0 Nyw2ICsxNDcsNyBAQCB0ZXN0OiBmYXN0X2RlZmF1bHQKICMgSE9UIHVwZGF0ZXMgdGVzdHMK ICMgLS0tLS0tLS0tLQogdGVzdDogaG90X3VwZGF0ZXMKK3Rlc3Q6IGhvdF9pbmRleGVkX3Vw ZGF0ZXMKIAogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRoZSBlbmQgYmVjYXVzZSBpdCBk cm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwogIyBzZXR1cCB0aGF0IG90aGVy IHRlc3RzIG1heSB1c2UuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3Rf aW5kZXhlZF91cGRhdGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVk X3VwZGF0ZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45 M2UxYTJiNjA5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hv dF9pbmRleGVkX3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsMTMxNiBAQAorLS0KKy0tIEhPVF9J TkRFWEVEX1VQREFURVMKKy0tIFRlc3QgSE9ULWluZGV4ZWQgdXBkYXRlIChob3QtaW5kZXhl ZCksIGFrYSBIT1QtaW5kZXhlZCwgYmVoYXZpb3VyCistLQorLS0gRXZlcnkgVVBEQVRFIGlu IHRoaXMgZmlsZSBtb2RpZmllcyBhdCBsZWFzdCBvbmUgbm9uLXN1bW1hcml6aW5nCistLSBp bmRleGVkIGF0dHJpYnV0ZS4gIE9uIGEgcHJlLWhvdC1pbmRleGVkIHNlcnZlciBhbGwgb2Yg dGhlc2Ugd291bGQgYmUKKy0tIG5vbi1IT1Q7IG9uIHRoZSBob3QtaW5kZXhlZCBicmFuY2gg ZWFjaCBlbGlnaWJsZSB1cGRhdGUgc3RheXMgb24tcGFnZSBhbmQKKy0tIGluc2VydHMgaW50 byBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZC4K Ky0tCistLSBXZSB2ZXJpZnkgZm91ciB0aGluZ3M6CistLSAgIChBKSBwZ19zdGF0IGNvdW50 ZXJzOiBIT1QgYW5kIGhvdC1pbmRleGVkIGNvdW50cyBpbmNyZW1lbnQgYXMgZXhwZWN0ZWQK Ky0tICAgKEIpIGluZGV4IGxvb2t1cHMgcmV0dXJuIHRoZSBuZXcgdmFsdWUgYW5kIG5vdCB0 aGUgc3RhbGUgdmFsdWUKKy0tICAgICAgIGZvciBFUVVBTElUWSBxdWVyaWVzICh0aGUgcmVh ZC1zaWRlIHN0YWxlbmVzcyB0ZXN0IGRyb3BzIGEKKy0tICAgICAgIGxlYWYgd2hvc2UgY292 ZXJlZCBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlKQor LS0gICAoQykgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMgcmVwb3J0cyB0aGUgSE9U LWluZGV4ZWQgdmVyc2lvbnMgd2UgZXhwZWN0CistLSAgIChEKSAqKlJBTkdFL0lORVFVQUxJ VFkqKiBxdWVyaWVzIHJldHVybiB0aGUgY29ycmVjdCBudW1iZXIgb2YKKy0tICAgICAgIHR1 cGxlcyAtLSB0aGlzIGlzIHRoZSBjbGFzcyBvZiBidWdzIHdoZXJlIGEgc3RhbGUgYnRyZWUK Ky0tICAgICAgIGVudHJ5J3Mga2V5IGlzIHN0aWxsIHJlYWNoYWJsZSB2aWEgYSBsb29zZXIg c2NhbiBrZXk7IHRoZQorLS0gICAgICAgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3Bz IHRoZSBzdGFsZSBhcnJpdmFsIGJlY2F1c2UgdGhlIGluZGV4J3MKKy0tICAgICAgIGF0dHJp YnV0ZSBjaGFuZ2VkIGJldHdlZW4gdGhhdCBsZWFmJ3MgdGFyZ2V0IGFuZCB0aGUgbGl2ZSB0 dXBsZQorLS0KKworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0 OworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1l IHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCkgQVMg JCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25h bWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dl dF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVT Q0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAg aG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lk KSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19o b3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaGlf Y291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMgQklHSU5ULCBo b3QgQklHSU5ULCBob3RfaWR4IEJJR0lOVCkgQVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7 CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAg dXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lk KSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRf Z2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisgICAgaG90X2lkeCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4 ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAg ICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBob3QtaW5kZXhlZDogbW9kaWZ5aW5n IGFuIGluZGV4ZWQgY29sdW1uIHN0YXlzIEhPVCBhbmQgY291bnRzIGFzIGhvdC1pbmRleGVk CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9iYXNpYyAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25f aW5kZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX2Jhc2ljX2lkeCBPTiBoaV9iYXNpYyhpbmRleGVkX2NvbCk7CisKK0lOU0VSVCBJ TlRPIGhpX2Jhc2ljIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworCistLSBQcmUtaG90 LWluZGV4ZWQgdGhpcyB3b3VsZCBiZSBub24tSE9ULiAgVW5kZXIgaG90LWluZGV4ZWQgaXQn cyBIT1QtaW5kZXhlZDsgYm90aCB0aGUKKy0tIEhPVCBjb3VudGVyIGFuZCB0aGUgaG90LWlu ZGV4ZWQgY291bnRlciBhZHZhbmNlLgorVVBEQVRFIGhpX2Jhc2ljIFNFVCBpbmRleGVkX2Nv bCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfYmFzaWMnKTsKKworLS0gVGhl IG5ldyB2YWx1ZSBpcyByZWFjaGFibGUgdmlhIHRoZSBpbmRleC4KK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2Nv bCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworCist LSBUaGUgb2xkIHZhbHVlIGlzIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGlzIGluZGV4OiB0 aGUgc3RhbGUgYnRyZWUKKy0tIGVudHJ5IChpbmRleGVkX2NvbD0xMDApIHdhbGtzIHRvIHRo ZSBjdXJyZW50IHR1cGxlIHZpYSB0aGUgaG90LWluZGV4ZWQgaG9wLAorLS0gbm9kZUluZGV4 c2NhbiByZS1ldmFsdWF0ZXMgYGluZGV4ZWRfY29sID0gMTAwYCBhZ2FpbnN0IHRoZSBjdXJy ZW50CistLSB0dXBsZSAoaW5kZXhlZF9jb2w9MTUwKSwgYW5kIHRoZSByb3cgaXMgY29ycmVj dGx5IGRyb3BwZWQuICBUaGlzIGlzCistLSB0aGUgZXF1YWxpdHktbG9va3VwIGNhc2UgdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBoYW5kbGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKK1NF TEVDVCBpZCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CisKKy0tIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHNl ZXMgb25lIEhPVC1pbmRleGVkIHZlcnNpb24sIHplcm8gSE9UIHJlZGlyZWN0cyAodGhlCist LSBjaGFpbiBoYXMgbm90IHlldCBiZWVuIHBydW5lZCBzbyBubyBMUF9SRURJUkVDVCBleGlz dHMpLgorU0VMRUNUIG5faG90X2luZGV4ZWQsIG5fY2hhaW5zLCBhdmdfY2hhaW5fbGVuLCBt YXhfY2hhaW5fbGVuCitGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9i YXNpYycpOworCitEUk9QIFRBQkxFIGhpX2Jhc2ljOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDIuIFJBTkdFL0lORVFVQUxJVFkgY29ycmVjdG5lc3MgYWZ0ZXIgaG90LWlu ZGV4ZWQgb24gYW4gaW5kZXhlZCBjb2x1bW4KKy0tCistLSBUaGlzIGlzIHRoZSB0ZXN0IGNs YXNzIHRoYXQgY2F0Y2hlcyB0aGUgaG90LWluZGV4ZWQgZmFsc2UtZHVwIGJ1ZzogYSBzdGFs ZQorLS0gYnRyZWUgZW50cnkgd2hvc2Uga2V5IHZhbHVlIHN0aWxsIHNhdGlzZmllcyB0aGUg cmFuZ2UgcHJlZGljYXRlLAorLS0gcmVhY2hhYmxlIHZpYSB0aGUgaG90LWluZGV4ZWQgY2hh aW4gaG9wLgorLS0KKy0tIFRvIGV4ZXJjaXNlIHRoZSBidWcgd2UgbXVzdCBmb3JjZSBhbiBJ bmRleFNjYW4gcGxhbiAodGhlCistLSBJbmRleE9ubHlTY2FuIHBhdGggcGVybWlzc2l2ZWx5 IGRyb3BzIGV2ZXJ5IGhvdC1pbmRleGVkLXJlYWNoYWJsZSBpbmRleC1vbmx5CistLSBoaXQ7 IHRoZSBCaXRtYXBIZWFwU2NhbiBwYXRoIGRlZHVwcyBieSBUSUQpLiAgV2UgaW5jbHVkZSBh IHBheWxvYWQKKy0tIGNvbHVtbiBub3QgcHJlc2VudCBpbiB0aGUgUEsgc28gdGhlIHBsYW5u ZXIgbXVzdCBoZWFwLWZldGNoLgorLS0KKy0tIFRoZSByZWFkLXNpZGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIG1ha2VzIHRoZSBJbmRleFNjYW4gcmV0dXJuIHRoZSBjb3JyZWN0Cist LSBjb3VudCBvZiAxOiB0aGUgc3RhbGUgZW50cnkgKCcxJywnNScpIGNoYWluLXdhbGtzIHRv IHRoZSBsaXZlIHR1cGxlIGFjcm9zcworLS0gdGhlIGItY2hhbmdpbmcgaG9wLCBhbmQgYmVj YXVzZSB0aGUgUEsgY292ZXJzIGIgdGhlIG92ZXJsYXAgaXMgbm9uLWVtcHR5LCBzbworLS0g dGhlIHN0YWxlIGxlYWYgaXMgZHJvcHBlZC4gIFRoZSBmcmVzaCBlbnRyeSAoJzEnLCcxNScp IHBvaW50cyBkaXJlY3RseSBhdCB0aGUKKy0tIGxpdmUgdHVwbGUgKG5vIGhvcCBhZnRlciBp dCkgYW5kIGlzIGtlcHQuICBUaGUgT1JERVIgQlkgbGlrZXdpc2UgcmV0dXJucyB0aGUKKy0t IHNpbmdsZSBsaXZlIHJvdy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX3JhbmdlICgKKyAgICBhIGludCwKKyAgICBiIGludCwKKyAgICBwYXlsb2FkIHRl eHQsCisgICAgUFJJTUFSWSBLRVkgKGEsIGIpCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisKK0lOU0VSVCBJTlRPIGhpX3JhbmdlIFZBTFVFUyAoMSwgNSwgJ2hpJyk7CisKKy0tIGhv dC1pbmRleGVkIHVwZGF0ZSBvbiB0aGUgc2Vjb25kIFBLIGNvbHVtbjogc3RhbGUgYnRyZWUg ZW50cnkgKCcxJywnNScpCistLSByZW1haW5zLCBuZXcgZW50cnkgKCcxJywnMTUnKSBpbnNl cnRlZC4gIFRoZSBzdGFsZSBlbnRyeSBwb2ludHMgYXQKKy0tIHRoZSBjaGFpbiByb290OyB0 aGUgZnJlc2ggZW50cnkgcG9pbnRzIGRpcmVjdGx5IGF0IHRoZSBuZXcKKy0tIGhlYXAtb25s eSB0dXBsZS4KK1VQREFURSBoaV9yYW5nZSBTRVQgYiA9IDE1IFdIRVJFIGEgPSAxIEFORCBi ID0gNTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBz Y2FuID0gb2ZmOworCistLSBJbmRleFNjYW46IHBheWxvYWQgSVMgTk9UIE5VTEwgZm9yY2Vz IGhlYXAgZmV0Y2gsIG5vIEluZGV4T25seVNjYW4uCistLSBUaGUgc3RhbGUgKCcxJywnNScp IGxlYWYgaXMgZHJvcHBlZCBieSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCBzbyB0 aGlzCistLSByZXR1cm5zIDEuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQo KikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJ UyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAx IEFORCBiIDwgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGEsIGIgRlJP TSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTCBPUkRFUiBC WSBiOworCistLSBJbmRleE9ubHlTY2FuOiB0aGUgcGFnZSBob2xkcyBhIHByZXNlcnZlZCBI T1QtaW5kZXhlZCBtZW1iZXIgc28gaXQgaXMgbmV2ZXIgYWxsLXZpc2libGU7IElPUworLS0g cGVyZm9ybXMgdGhlIGhlYXAgZmV0Y2ggYW5kIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRt YXAgZHJvcHMgdGhlIHN0YWxlICgnMScsJzUnKQorLS0gbGVhZiwgc28gY291bnQgPSAxLgor RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVS RSBhID0gMSBBTkQgYiA8IDEwMDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdI RVJFIGEgPSAxIEFORCBiIDwgMTAwOworCistLSBCaXRtYXBIZWFwU2NhbjogVElEIGRlZHVw IGNvbGxhcHNlcyB0aGUgc3RhbGUgYW5kIGZyZXNoIGhpdHMuCitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1JFU0VUIGVu YWJsZV9iaXRtYXBzY2FuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikg RlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworUkVTRVQgZW5hYmxl X2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOworCistLSBTZXFTY2Fu OiByZWFkcyB0aGUgaGVhcCBkaXJlY3RseSwgc2VlcyBleGFjdGx5IG9uZSBsaXZlIHR1cGxl LgorUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9mZjsK K1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2Nh biA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlf cmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKK1JFU0VUIGVuYWJsZV9pbmRleHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworCistLSBTYW1lIHNoYXBlIG9uIGEgc2Vjb25kYXJ5IChub24tUEspIGJ0cmVlOiBh bm90aGVyIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiBiLgorQ1JFQVRFIElOREVYIGhpX3Jhbmdl X2JfaWR4IE9OIGhpX3JhbmdlKGIpOworVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMjUgV0hF UkUgYSA9IDEgQU5EIGIgPSAxNTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworLS0gSW5kZXhTY2FuIHBhdGggb24gdGhlIHNl Y29uZGFyeSBpbmRleDsgc2FtZSBmaXggYXBwbGllcy4KK1NFTEVDVCBjb3VudCgqKSBGUk9N IGhpX3JhbmdlIFdIRVJFIGIgQkVUV0VFTiAwIEFORCAxMDAgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEw7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2Fu OworCitEUk9QIFRBQkxFIGhpX3JhbmdlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDMuIEFsbC1vci1ub25lIG9uIGEgbXVsdGktaW5kZXhlZCB0YWJsZTogaG90LWluZGV4 ZWQgb25seSB0b3VjaGVzIGluZGV4ZXMKKy0tICAgIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdl ZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbXVsdGkgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50 LAorICAgIGNvbF9jIGludCwKKyAgICBub25faW5kZXhlZCB0ZXh0CispIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfYV9pZHggT04gaGlfbXVsdGko Y29sX2EpOworQ1JFQVRFIElOREVYIGhpX211bHRpX2JfaWR4IE9OIGhpX211bHRpKGNvbF9i KTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9jX2lkeCBPTiBoaV9tdWx0aShjb2xfYyk7CisK K0lOU0VSVCBJTlRPIGhpX211bHRpIFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwn KTsKKworLS0gY29sX2Egb25seTogdW5kZXIgaG90LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5k ZXhlZCwgYW5kIG9ubHkgaGlfbXVsdGlfYV9pZHgKKy0tIGdldHMgYSBuZXcgZW50cnkuICBo aV9tdWx0aV9iX2lkeCAvIGhpX211bHRpX2NfaWR4IGtlZXAgcG9pbnRpbmcKKy0tIGF0IHRo ZSBjaGFpbiByb290LgorVVBEQVRFIGhpX211bHRpIFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlk ID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9tdWx0aScpOworCistLSBMb29rdXBzIG9uIGFsbCB0aHJl ZSBpbmRleGVzIHJldHVybiB0aGUgcm93LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2EgPSAxNTsKK1NFTEVDVCBpZCBG Uk9NIGhpX211bHRpIFdIRVJFIGNvbF9iID0gMjA7CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0 aSBXSEVSRSBjb2xfYyA9IDMwOworCistLSBPbGQgY29sX2EgdmFsdWUgaXMgdW5yZWFjaGFi bGUgYnkgZXF1YWxpdHkgKHN0YWxlIGVudHJ5IGRyb3BwZWQgYnkgdGhlCistLSByZWFkLXNp ZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwKS4KK1NFTEVDVCBpZCBGUk9NIGhpX211bHRp IFdIRVJFIGNvbF9hID0gMTA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKworRFJPUCBUQUJM RSBoaV9tdWx0aTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBNdWx0aS1j b2x1bW4gYnRyZWU6IGhvdC1pbmRleGVkIG9uIHBhcnQgb2YgYSBjb21wb3NpdGUga2V5Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jb21wb3NpdGUgKAor ICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50 LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElO REVYIGhpX2NvbXBvc2l0ZV9hYl9pZHggT04gaGlfY29tcG9zaXRlKGNvbF9hLCBjb2xfYik7 CisKK0lOU0VSVCBJTlRPIGhpX2NvbXBvc2l0ZSBWQUxVRVMgKDEsIDEwLCAyMCwgJ2RhdGEn KTsKKworLS0gY29sX2EgaXMgcGFydCBvZiB0aGUgY29tcG9zaXRlIGtleTogaG90LWluZGV4 ZWQuCitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYSA9IDE1OworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hp X2NvbXBvc2l0ZScpOworCistLSBSZXNldCBhbmQgdGhlbiB1cGRhdGUgY29sX2IgKGFsc28g cGFydCBvZiB0aGUga2V5KS4KK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNvbF9hID0gMTA7 CitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYiA9IDI1OworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2Nv bXBvc2l0ZScpOworCitEUk9QIFRBQkxFIGhpX2NvbXBvc2l0ZTsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA1LiBQYXJ0aWFsIGluZGV4OiBzdGF0dXMgdHJhbnNpdGlvbiBv dXQtb2YtcHJlZGljYXRlCistLQorLS0gJ3N0YXR1cycgaXMgYSBwYXJ0aWFsLWluZGV4IHBy ZWRpY2F0ZSBjb2x1bW4uICBBIGNoYW5nZSB0byBhIHByZWRpY2F0ZQorLS0gY29sdW1uIGNh biBmbGlwIGEgcm93IGluIG9yIG91dCBvZiB0aGUgaW5kZXgsIHdoaWNoIHRoZSByZWFkLXNp ZGUga2V5CistLSByZWNoZWNrIGNhbm5vdCBkZXRlY3QsIHNvIEhlYXBVcGRhdGVIb3RBbGxv d2FibGUgY29uc2VydmF0aXZlbHkgZGlzcXVhbGlmaWVzCistLSBIT1QtaW5kZXhlZCBmb3Ig YW55IHByZWRpY2F0ZS1jb2x1bW4gY2hhbmdlIChldmVuIHRoaXMgb3V0LW9mLXByZWRpY2F0 ZSAtPgorLS0gb3V0LW9mLXByZWRpY2F0ZSBjYXNlKS4gIFRoZSB1cGRhdGUgaXMgdGhlcmVm b3JlIG5vbi1IT1QsIGFuZCB0aGUgcGFydGlhbAorLS0gaW5kZXggY29ycmVjdGx5IHN0YXlz IGVtcHR5IGZvciB0aGVzZSBub24tJ2FjdGl2ZScgcm93cy4KKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRpYWwgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0aWFsX2FjdGl2ZV9pZHggT04gaGlf cGFydGlhbChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5U TyBoaV9wYXJ0aWFsIFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOworSU5TRVJUIElO VE8gaGlfcGFydGlhbCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicpOworSU5TRVJU IElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0t IG91dCAtPiBvdXQgdHJhbnNpdGlvbiBvbiB0aGUgcHJlZGljYXRlIGNvbHVtbjogSE9ULWlu ZGV4ZWQga2VlcHMgaXQgb24tcGFnZSwKKy0tIGFuZCB0aGUgcGFydGlhbCBpbmRleCBnZXRz IG5vIGVudHJ5ICh0aGUgcm93IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlIG5laXRoZXIKKy0t IGJlZm9yZSBub3IgYWZ0ZXIgdGhlIHVwZGF0ZSkuCitVUERBVEUgaGlfcGFydGlhbCBTRVQg c3RhdHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0aWFs Jyk7CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IHN0aWxsIGNvcnJlY3RseSBhbnN3ZXJzICJh Y3RpdmUiIHF1ZXJpZXMuCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhpX3BhcnRpYWwgV0hF UkUgc3RhdHVzID0gJ2FjdGl2ZSc7CisKK0RST1AgVEFCTEUgaGlfcGFydGlhbDsKKworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA2LiBQYXJ0aXRpb246IGhvdC1pbmRleGVkIGlu c2lkZSBvbmUgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBU QUJMRSBoaV9wYXJ0ICgKKyAgICBpZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisg ICAgaW5kZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAo aWQsIHBhcnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tl eSk7CitDUkVBVEUgVEFCTEUgaGlfcGFydF8xIFBBUlRJVElPTiBPRiBoaV9wYXJ0CisgICAg Rk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3BhcnRfaWR4IE9OIGhpX3BhcnQoaW5kZXhlZF9jb2wpOworCitJ TlNFUlQgSU5UTyBoaV9wYXJ0IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2RhdGEnKTsKKworVVBE QVRFIGhpX3BhcnQgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hpX2Nv dW50KCdoaV9wYXJ0XzEnKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkIEZST00gaGlfcGFydCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKK1NFTEVDVCBpZCBG Uk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKKworRFJPUCBUQUJMRSBoaV9wYXJ0IENBU0NBREU7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gNy4gVHJpZ2dlciBtb2RpZmllcyBpbmRleGVkIGNvbHVtbjogaG90 LWluZGV4ZWQsIG5vdCBub24tSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFU RSBUQUJMRSBoaV90cmlnZ2VyICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdHJp Z2dlcmVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfdHJpZ2dlcl9pZHggT04gaGlfdHJpZ2dlcih0cmlnZ2Vy ZWRfY29sKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1w KCkKK1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2Nv bCA9IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQg TEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9idW1w CisgICAgQkVGT1JFIFVQREFURSBPTiBoaV90cmlnZ2VyCisgICAgRk9SIEVBQ0ggUk9XCisg ICAgRVhFQ1VURSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKKworSU5TRVJUIElOVE8g aGlfdHJpZ2dlciBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKKworLS0gVVBEQVRFJ3Mg U0VUIGNsYXVzZSBkb2Vzbid0IHRvdWNoIHRoZSBpbmRleGVkIGNvbHVtbiwgYnV0IHRoZQor LS0gdHJpZ2dlciBtb2RpZmllcyBpdCB2aWEgaGVhcF9tb2RpZnlfdHVwbGUuICBob3QtaW5k ZXhlZCBtdXN0IGRldGVjdCB0aGlzCistLSBhbmQga2VlcCB0aGUgdHVwbGUgb24tcGFnZSAo SEVBUF9JTkRFWEVEX1VQREFURUQpIHBsdXMgYSBuZXcgYnRyZWUgZW50cnkuCitVUERBVEUg aGlfdHJpZ2dlciBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfdHJpZ2dlcicpOworU0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBoaV90cmlnZ2Vy IFdIRVJFIGlkID0gMTsKKworLS0gTmV3IHZhbHVlIHJlYWNoYWJsZS4KK1NFVCBlbmFibGVf c2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dl cmVkX2NvbCA9IDEwMTsKK1NFTEVDVCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dl cmVkX2NvbCA9IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhp X3RyaWdnZXIgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRl eDogSE9ULWluZGV4ZWQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gZXhwcmVzc2lvbgorLS0g ICAgaW5kZXhlcywgc28gdGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCB1cGRh dGUgKGhvdF9pZHggPSAwKS4KKy0tICAgIFJlYWRzIHN0YXkgY29ycmVjdC4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2pzb25iICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhpX2pzb25iX25hbWVfaWR4IE9OIGhpX2pzb25iICgoZGF0YS0+ PiduYW1lJykpOworCitJTlNFUlQgSU5UTyBoaV9qc29uYiBWQUxVRVMgKDEsICd7Im5hbWUi OiJBbGljZSIsImFnZSI6MzB9Jyk7CisKKy0tIENoYW5naW5nIHRoZSBpbmRleGVkIGV4cHJl c3Npb24ncyB2YWx1ZSAobmFtZSk6IGV4cHJlc3Npb24gaW5kZXhlcyBhcmUgbm90CistLSB5 ZXQgc3VwcG9ydGVkLCBzbyB0aGlzIGlzIGEgbm9uLUhPVCB1cGRhdGUuCitVUERBVEUgaGlf anNvbmIgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tuYW1lfScsICciQWxpY2UyIicp IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NF TEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9qc29uYicpOworCitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+J25h bWUnID0gJ0FsaWNlMic7CitTRUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBXSEVSRSBkYXRhLT4+ J25hbWUnID0gJ0FsaWNlJzsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxF IGhpX2pzb25iOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDkuIEdJTiBpbmRl eCB3aXRoIGNoYW5nZWQgZXh0cmFjdGVkIGtleXM6IGhvdC1pbmRleGVkCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9naW4gKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0YWdzIHRleHRbXQorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2dpbl90YWdzX2lkeCBPTiBoaV9naW4gVVNJTkcgZ2luICh0YWdz KTsKKworSU5TRVJUIElOVE8gaGlfZ2luIFZBTFVFUyAoMSwgQVJSQVlbJ3RhZzEnLCAndGFn MiddKTsKKworLS0gQWRkaW5nIGEgdGFnIHlpZWxkcyBhIGRpZmZlcmVudCBleHRyYWN0ZWQt a2V5IHNldDogaG90LWluZGV4ZWQuCitVUERBVEUgaGlfZ2luIFNFVCB0YWdzID0gQVJSQVlb J3RhZzEnLCAndGFnMicsICd0YWc1J10gV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2dp bicpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9n aW4gV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CisKK0RST1AgVEFCTEUgaGlfZ2luOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDEwLiBQZXItaW5kZXggSE9ULWluZGV4ZWQgY291bnRlcnM6IHNraXBwZWQgdnMgbWF0Y2hl ZAorLS0KKy0tIEEgdGFibGUgd2l0aCB0d28gaW5kZXBlbmRlbnQgc2Vjb25kYXJ5IGluZGV4 ZXMuICBBbiBVUERBVEUgdG91Y2hlcyBhCistLSBjb2x1bW4gY292ZXJlZCBieSBvbmx5IG9u ZSBvZiB0aGVtOyB0aGUgSE9ULWluZGV4ZWQgcGF0aCBtdXN0IGluc2VydAorLS0gaW50byB0 aGF0IG9uZSBpbmRleCBhbmQgc2tpcCB0aGUgb3RoZXIuICBwZ19zdGF0X2FsbF9pbmRleGVz IHJlcG9ydHMKKy0tIG1hdGNoZWQ+MCBvbiB0aGUgdXBkYXRlZCBpbmRleCBhbmQgc2tpcHBl ZD4wIG9uIHRoZSB1bnRvdWNoZWQgaW5kZXguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBob3RpZHhfcGVyaW5kZXggKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBhIGludCwKKyAgICBiIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdGlkeF9wZXJpbmRleF9hIE9OIGhvdGlkeF9wZXJpbmRleChhKTsK K0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYiBPTiBob3RpZHhfcGVyaW5kZXgoYik7 CisKK0lOU0VSVCBJTlRPIGhvdGlkeF9wZXJpbmRleCBWQUxVRVMgKDEsIDEwMCwgMjAwKTsK KworLS0gTW9kaWZ5IG9ubHkgY29sdW1uIGEuICBIT1QtaW5kZXhlZCBpbnNlcnRzIGludG8g aG90aWR4X3BlcmluZGV4X2EgYW5kCistLSBza2lwcyBob3RpZHhfcGVyaW5kZXhfYiAocHJp bWFyeSBrZXkgaW5kcmVsaWQgaXMgdGhlIHRhYmxlIGl0c2VsZiBhbmQKKy0tIGFsc28gdW5j aGFuZ2VkLCBzbyBpdCBjb3VudHMgYXMgc2tpcHBlZCB0b28pLgorVVBEQVRFIGhvdGlkeF9w ZXJpbmRleCBTRVQgYSA9IDEwMSBXSEVSRSBpZCA9IDE7CisKKy0tIEZvcmNlIGZsdXNoIG9m IHBlbmRpbmcgc3RhdHMgdG8gdGhlIHNoYXJlZCBlbnRyeS4KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1 cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hv dF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9p bmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkg aW5kZXhyZWxuYW1lOworCistLSBBIHNlY29uZCBVUERBVEUgdG91Y2hpbmcgb25seSBiIGlu dmVydHMgdGhlIGFzc2lnbm1lbnQuCitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBiID0g MjAxIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lw cGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVs bmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCist LSBJbnZhcmlhbnQ6IG1hdGNoZWQgKyBza2lwcGVkID09IG93bmluZyB0YWJsZSdzIG5fdHVw X2hvdF9pbmRleGVkX3VwZC4KK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBf aG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBl ZCBBUyB0b3RhbCwKKyAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9N IHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhf cGVyaW5kZXgnKSBBUyB0YWJsZV9ob3RfaWR4X3VwZAorICBGUk9NIHBnX3N0YXRfYWxsX2lu ZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBp bmRleHJlbG5hbWU7CisKKy0tIEJvb2xlYW4gYXNzZXJ0aW9uIG9mIHRoZSBzYW1lIGludmFy aWFudC4gIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBmb3JtCistLSByZXZpZXdlcnMgYXNrZWQg Zm9yOiBldmVyeSBpbmRleCBlbnRyeSBpcyBlaXRoZXIgbWF0Y2hlZCAodGhlIGluZGV4Cist LSBnb3QgYSBmcmVzaCBpbnNlcnQgdGhpcyBVUERBVEUpIG9yIHNraXBwZWQgKEhPVC1pbmRl eGVkIGNvcnJlY3RseQorLS0gYXZvaWRlZCBhbiBpbnNlcnQgYmVjYXVzZSB0aGUgaW5kZXgn cyBhdHRycyBkaWQgbm90IGNoYW5nZSkuICBJZiB0aGUKKy0tIHR3byBjb3VudGVycyBkcmlm dCBhcGFydCBmcm9tIHRoZSB0YWJsZS1sZXZlbCBuX3R1cF9ob3RfaW5kZXhlZF91cGQgd2UK Ky0tIGhhdmUgZWl0aGVyIGxvc3QgYSBwZXItaW5kZXggaW5jcmVtZW50IG9yIGRvdWJsZS1j b3VudGVkIG9uZS4KK1NFTEVDVCBib29sX2FuZCgobl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCkgPQorICAgICAgICAgICAg ICAgIChTRUxFQ1Qgbl90dXBfaG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxfdGFi bGVzCisgICAgICAgICAgICAgICAgICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRl eCcpKQorICAgICAgICAgQVMgcGVyaW5kZXhfaW52YXJpYW50X2hvbGRzCisgIEZST00gcGdf c3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JzsK KworRFJPUCBUQUJMRSBob3RpZHhfcGVyaW5kZXg7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gMTEuIExvbmcgaG90LWxvb3AgVVBEQVRFIHN0YXlzIGNvbXBhY3QgYW5kIEhP VC1pbmRleGVkCistLQorLS0gQSBsb25nIHJ1biBvZiBIT1QtaW5kZXhlZCBVUERBVEVzIHRv IGEgc2luZ2xlIHJvdyBzdGF5cyBjb21wYWN0OiBwcnVuZQorLS0gY29sbGFwc2VzIGVhY2gg ZGVhZCB2ZXJzaW9uIHRvIGEgcmVkaXJlY3QgdG8gdGhlIGxpdmUgdHVwbGUgYW5kIHJldXNl cyBpdHMKKy0tIHNsb3QsIHNvIHRoZSBoZWFwIHN0YXlzIGJvdW5kZWQgYW5kIHRoZSBjaGFp biBkb2VzIG5vdCBncm93IHVuYm91bmRlZC4KKy0tIEV2ZXJ5IFVQREFURSB0aGF0IGNoYW5n ZXMgdGhlIGluZGV4ZWQgY29sdW1uIChhbmQgbGVhdmVzIGFub3RoZXIgaW5kZXgsCistLSBo ZXJlIHRoZSBQSywgdW5jaGFuZ2VkKSB0YWtlcyB0aGUgSE9ULWluZGV4ZWQgcGF0aC4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2NoYWluY2FwICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9jaGFpbmNhcF9hX2lkeCBPTiBoaV9jaGFpbmNhcChh KTsKKworSU5TRVJUIElOVE8gaGlfY2hhaW5jYXAgVkFMVUVTICgxLCAwKTsKKworRE8gJCQK K0RFQ0xBUkUKKyAgICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9P UAorICAgICAgICBVUERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsK KyAgICBFTkQgTE9PUDsKK0VORCAkJDsKKworLS0gQWZ0ZXIgMjAwIFVQREFURXMgdGhlIHJv dydzIHZhbHVlIGlzIDIwMC4KK1NFTEVDVCBhIEZST00gaGlfY2hhaW5jYXAgV0hFUkUgaWQg PSAxOworCistLSBFdmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWluZGV4ZWQgcGF0aCAodGhl IFBLIGluZGV4IGlzIHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNraXBwZWQpLCBzbyBuX3R1 cF9ob3RfaW5kZXhlZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgaG90X2luZGV4ZWRfZmlyZWQKKyAg RlJPTSBnZXRfaGlfY291bnQoJ2hpX2NoYWluY2FwJyk7CisKKy0tIFRoZSBoZWFwIHN0YXll ZCBjb21wYWN0OiBwcnVuZStjb2xsYXBzZSByZWNsYWltZWQgdGhlIGRlYWQgdmVyc2lvbnMs IHNvIHRoZQorLS0gc2luZ2xlIGxpdmUgcm93IHN0YXlzIHdpdGhpbiBhIGNvdXBsZSBvZiBw YWdlcy4gIHBnX3JlbGF0aW9uX3NpemUgcmVmbGVjdHMKKy0tIHRoZSB0YWJsZSdzIGFjdHVh bCBjdXJyZW50IHNpemUgcmVnYXJkbGVzcyBvZiB2YWN1dW0vYW5hbHl6ZSBzdGF0cywgdW5s aWtlCistLSBwZ19jbGFzcy5yZWxwYWdlcyAod2hpY2ggaXMgb25seSB1cGRhdGVkIGJ5IFZB Q1VVTS9BTkFMWVpFIGFuZCB3b3VsZCBiZQorLS0gdHJpdmlhbGx5IDw9IDEgb24gdGhpcyBu ZXZlci12YWN1dW1lZCB0YWJsZSBldmVuIGlmIHBydW5pbmcgaGFkIGZhaWxlZCBhbmQKKy0t IHRoZSBoZWFwIGhhZCBiYWxsb29uZWQpLgorU0VMRUNUIHBnX3JlbGF0aW9uX3NpemUoJ2hp X2NoYWluY2FwJykgPD0gODE5MiAqIDIgQVMgaGVhcF9zdGF5ZWRfY29tcGFjdDsKKworRFJP UCBUQUJMRSBoaV9jaGFpbmNhcDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAx Mi4gQSBIT1QtaW5kZXhlZCBjaGFpbiBmb3JtcyBhbmQgcmVhZHMgdGhyb3VnaCBpdCBzdGF5 IGNvcnJlY3QKKy0tCistLSBTZXZlcmFsIEhPVC1pbmRleGVkIHVwZGF0ZXMgb2YgdGhlIHNh bWUgbGl2ZSByb3cgYnVpbGQgYSBtdWx0aS1ob3AgY2hhaW4gb2YKKy0tIHByZXNlcnZlZCBI T1QtaW5kZXhlZCBtZW1iZXJzLCBlYWNoIGNhcnJ5aW5nIGl0cyBvd24gY3Jvc3NlZC1hdHRy aWJ1dGUKKy0tIGJpdG1hcC4gIFdlIGFzc2VydCBvbmx5IGhvcml6b24taW5kZXBlbmRlbnQg ZmFjdHM6IGF0IGxlYXN0IG9uZSBIT1QtaW5kZXhlZAorLS0gbWVtYmVyIGlzIHByZXNlbnQg KHRoZSBsaXZlIHZlcnNpb24gYWx3YXlzIGlzLCBhbmQgY2Fubm90IGJlIHBydW5lZCksIGEg c2NhbgorLS0gdGhyb3VnaCB0aGUgc2Vjb25kYXJ5IGluZGV4IHJldHVybnMgdGhlIG9uZSBs aXZlIHJvdyBieSBpdHMgY3VycmVudCBrZXksIGFuZAorLS0gbm9uZSBvZiB0aGUgc3VwZXJz ZWRlZCBrZXlzIHN1cmZhY2UgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZmlsdGVy cworLS0gdGhlaXIgc3RhbGUgbGVhdmVzKS4KKy0tCistLSBXZSBkZWxpYmVyYXRlbHkgZG8g Tk9UIGFzc2VydCBhbiBleGFjdCBtZW1iZXIgY291bnQgb3IgYW55IHBvc3QtVkFDVVVNCist LSBjb2xsYXBzZS9yZWNsYWltIHN0YXRlOiBvcHBvcnR1bmlzdGljIEhPVCBwcnVuaW5nIGFu ZCBWQUNVVU0gY29sbGFwc2UgYXJlCistLSBib3RoIGdhdGVkIG9uIHRoZSBzdXBlcnNlZGVk IHZlcnNpb25zIGZhbGxpbmcgYmVsb3cgdGhlIGdsb2JhbCB4bWluIGhvcml6b24sCistLSB3 aGljaCBhIHNuYXBzaG90IGhlbGQgZWxzZXdoZXJlIGluIHRoZSBydW5uaW5nIHJlZ3Jlc3Np b24gY2x1c3RlciBjYW4gcGluCistLSBiYWNrIGluZGVmaW5pdGVseSAtLSBzbyB0aGUgcGh5 c2ljYWwgbGF5b3V0IChuX2hvdF9pbmRleGVkJ3MgZXhhY3QgdmFsdWUsCistLSB3aGV0aGVy IHRoZSBjaGFpbiBoYXMgY29sbGFwc2VkIHRvIGFuIExQX1JFRElSRUNUKSBpcyBub3QgZGV0 ZXJtaW5pc3RpYworLS0gaGVyZS4gIFBydW5lL2NvbGxhcHNlIGFuZCBzbmFwc2hvdC1nYXRl ZCBzdGFsZS1sZWFmIHJlY2xhaW0gYXJlIGNvdmVyZWQKKy0tIGRldGVybWluaXN0aWNhbGx5 IGJ5IHRoZSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCBpc29sYXRpb24gc3BlYywgd2hlcmUK Ky0tIHRyYW5zYWN0aW9uIG9yZGVyaW5nIC0tIGhlbmNlIHRoZSBob3Jpem9uIC0tIGlzIGNv bnRyb2xsZWQgYW5kIHRoZSBjb2xsYXBzZQorLS0gaXMgdmFsaWRhdGVkIGJ5IHJlYWRlciBj b25zaXN0ZW5jeSBhY3Jvc3MgaXQgKHBlcm11dGF0aW9uIDcpLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVjbGFpbSAoCisgICAgaWQgaW50IFBSSU1B UlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1 bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3JlY2xhaW1fYV9pZHggT04g aGlfcmVjbGFpbShhKTsKKworSU5TRVJUIElOVE8gaGlfcmVjbGFpbSBWQUxVRVMgKDEsIDEw MCk7CistLSBCdWlsZCBhIG11bHRpLWhvcCBjaGFpbiB2aWEgc2V2ZXJhbCBIT1QtaW5kZXhl ZCB1cGRhdGVzOyB0aGUgcm93IHN0YXlzIGxpdmUuCitVUERBVEUgaGlfcmVjbGFpbSBTRVQg YSA9IDIwMCBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVjbGFpbSBTRVQgYSA9IDMwMCBX SEVSRSBpZCA9IDE7CitVUERBVEUgaGlfcmVjbGFpbSBTRVQgYSA9IDQwMCBXSEVSRSBpZCA9 IDE7CisKKy0tIFRoZSBsaXZlIHZlcnNpb24gaXMgYSBIT1QtaW5kZXhlZCBtZW1iZXIgYW5k IGNhbm5vdCBiZSBwcnVuZWQsIHNvIHRoaXMgaG9sZHMKKy0tIHJlZ2FyZGxlc3Mgb2YgaG93 IG11Y2ggb3Bwb3J0dW5pc3RpYyBwcnVuaW5nIGhhcyBoYXBwZW5lZC4KK1NFTEVDVCBuX2hv dF9pbmRleGVkID49IDEgQVMgaG90X2luZGV4ZWRfbWVtYmVyX3ByZXNlbnQKKyAgRlJPTSBw Z19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworCistLSBUaGUg bGl2ZSByb3cgcmVzb2x2ZXMgdGhyb3VnaCB0aGUgc2Vjb25kYXJ5IGluZGV4IGJ5IGl0cyBj dXJyZW50IGtleSwgYW5kCistLSBub25lIG9mIHRoZSBzdXBlcnNlZGVkIGtleXMgc3VyZmFj ZSB0aHJvdWdoIHRoZWlyIHN0YWxlIGxlYXZlcy4KK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3Jl Y2xhaW0gV0hFUkUgYSA9IDQwMDsKK1NFTEVDVCBjb3VudCgqKSA9IDAgQVMgbm9fc3RhbGVf a2V5X3N1cmZhY2VzCisgIEZST00gaGlfcmVjbGFpbSBXSEVSRSBhIElOICgxMDAsIDIwMCwg MzAwKTsKKworRFJPUCBUQUJMRSBoaV9yZWNsYWltOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDEzLiBQYWdlIHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVy IGlzIG5ldmVyIG1hcmtlZCBhbGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxpYmVy YXRlbHkgbGVhdmVzIFBEX0FMTF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQgc3Rp bGwKKy0tIGNhcnJpZXMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBpbmRl eC1vbmx5IHNjYW4gbXVzdCBoZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBzbyB0 aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0YWxl IGJ0cmVlCistLSBlbnRyaWVzLgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0aCB3 aXRoIFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0gdGhl biByZWFkIHBkX2ZsYWdzIHZpYSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBwYWdl IG11c3Qgc3RpbGwgY2FycnkKKy0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9pbmRl eGVkID4gMCkgQU5EIG11c3Qgbm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAwMDQp LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0g NTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV92bV9h X2lkeCBPTiBoaV92bShhKTsKKworSU5TRVJUIElOVE8gaGlfdm0gVkFMVUVTICgxLCAxKTsK Ky0tIFR3byBIT1QtaW5kZXhlZCB1cGRhdGVzIGxlYXZlIGEgbXVsdGktaG9wIGNoYWluLCBz byBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZAorLS0gbWVtYmVyIHJlbWFpbnMgb24gdGhlIHBh Z2UgYWZ0ZXIgcHJ1bmUsIHdoaWNoIGlzIHdoYXQgdGhpcyB0ZXN0IG5lZWRzLgorVVBEQVRF IGhpX3ZtIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfdm0gU0VUIGEgPSAz IFdIRVJFIGlkID0gMTsKKworLS0gRm9yY2UgdGhlIGFsbC12aXNpYmxlIGJpdCBkZWNpc2lv bjogVkFDVVVNIHdpdGggRElTQUJMRV9QQUdFX1NLSVBQSU5HCistLSBjb25zaWRlcnMgZXZl cnkgcGFnZTsgRlJFRVpFIHB1c2hlcyBoaW50IGJpdHMgaGFyZC4gIEFmdGVyIHRoaXMsIGFu eQorLS0gcGFnZSBiZWFyaW5nIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBtdXN0 IHN0aWxsIHJlcG9ydCBhbGxfdmlzaWJsZSA9IDAuCitWQUNVVU0gKEZSRUVaRSwgRElTQUJM RV9QQUdFX1NLSVBQSU5HKSBoaV92bTsKKworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBB UyBob3RfaW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRf c3RhdHMoJ2hpX3ZtJyk7CisKKy0tIFBEX0FMTF9WSVNJQkxFID0gMHgwMDA0LiAgTXVzdCBi ZSAwIG9uIGEgcGFnZSB3aXRoIGEgcHJlc2VydmVkIG1lbWJlci4KK1NFTEVDVCAoZmxhZ3Mg JiA0KSA9IDAgQVMgbm90X21hcmtlZF9hbGxfdmlzaWJsZQorICBGUk9NIHBhZ2VfaGVhZGVy KGdldF9yYXdfcGFnZSgnaGlfdm0nLCAwKSk7CisKK0RST1AgVEFCTEUgaGlfdm07CisKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTQuIEN5Y2xlLWtleSBkZWR1cDogY29sdW1u IHJlbmFtZSBhIC0+IGIgLT4gYSBzdGF5cyBjb3JyZWN0CistLQorLS0gQSByZW5hbWUgZG9l cyBub3QgcmV3cml0ZSBoZWFwIG9yIGluZGV4IGVudHJpZXM7IGl0IG9ubHkgdXBkYXRlcyB0 aGUKKy0tIGNhdGFsb2cuICBUaGUgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG11c3QgdHJpZ2dl ciBhIGZyZXNoIGF0dHJpYnV0ZQorLS0gYml0bWFwIGFuZCB0aGUgSE9ULWluZGV4ZWQgcHJl ZGljYXRlIG11c3QgY29tcGFyZSBhdHRyaWJ1dGUgKm51bWJlcnMqLAorLS0gbm90IGF0dHJp YnV0ZSAqbmFtZXMqLiAgQWZ0ZXIgdHdvIHJlbmFtZXMgdGhhdCBuZXQgdG8gaWRlbnRpdHks IGV2ZXJ5CistLSBzdWJzZXF1ZW50IFVQREFURSBtdXN0IGNvbnRpbnVlIHRvIGRyaXZlIHRo ZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfY3ljbGUgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2N5Y2xlX2FfaWR4 IE9OIGhpX2N5Y2xlKGEpOworCitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEsIDEw MCk7CisKKy0tIEN5Y2xlIHRoZSBjb2x1bW4gbmFtZSBhbmQgY29uZmlybSBib3RoIGludGVy bWVkaWF0ZSBmb3JtcyBkcml2ZSBIT1QtaW5kZXhlZC4KK0FMVEVSIFRBQkxFIGhpX2N5Y2xl IFJFTkFNRSBDT0xVTU4gYSBUTyBiOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBiID0gMjAwIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVD VCBob3RfaWR4ID4gMCBBUyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUKKyAgRlJP TSBnZXRfaGlfY291bnQoJ2hpX2N5Y2xlJyk7CisKK0FMVEVSIFRBQkxFIGhpX2N5Y2xlIFJF TkFNRSBDT0xVTU4gYiBUTyBhOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBhID0gMzAwIFdIRVJF IGlkID0gMTsKKy0tIExvb2t1cCB2aWEgdGhlIGluZGV4IHJldHVybnMgdGhlIGN1cnJlbnQg dmFsdWUsIG5vdCBhbnkgb2YgdGhlCistLSBwcmUtcmVuYW1lIHZhbHVlcy4KK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2N5Y2xlIFdIRVJFIGEg PSAzMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMTAwOworU0VMRUNU IGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2Fu OworCitEUk9QIFRBQkxFIGhpX2N5Y2xlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDE1LiBTdW1tYXJpemluZy1vbmx5IGNvbHVtbiBVUERBVEUgcHJvZHVjZXMgQ0xBU1NJ Qywgbm90IElOREVYRUQKKy0tCistLSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVybnMg SEVBUF9IRUFQX09OTFlfVVBEQVRFIHdoZW4gZXZlcnkKKy0tIG1vZGlmaWVkIGluZGV4ZWQg YXR0cmlidXRlIGlzIGNvdmVyZWQgb25seSBieSBzdW1tYXJpemluZyBpbmRleGVzLgorLS0g QSBCUklOLW9ubHkgY29sdW1uIGlzIHRoZSBjYW5vbmljYWwgY2FzZTogdGhlIEJSSU4gaW5k ZXggZ2V0cyBhCistLSBuZXcgc3VtbWFyeSBlbnRyeSB2aWEgYW1pbnNlcnQsIGJ1dCBubyBw ZXItdXBkYXRlIGJ0cmVlIGVudHJ5IGlzCistLSBuZWVkZWQgYW5kIEhPVC1pbmRleGVkIGRv ZXMgbm90IGZpcmUuICBUaGUgc2lnbmFsIGlzCistLSBuX3R1cF9ob3RfdXBkID4gMCB3aXRo IG5fdHVwX2hvdF9pbmRleGVkX3VwZCB1bmNoYW5nZWQuCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9icmluICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVks CisgICAgYmNvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9icmluX2lkeCBPTiBoaV9icmluIFVTSU5HIGJyaW4oYmNvbCk7CisKK0lOU0VSVCBJ TlRPIGhpX2JyaW4gVkFMVUVTICgxLCAxMDApOworCistLSBDYXB0dXJlIHRoZSBIT1QtaW5k ZXhlZCBjb3VudGVyIGJlZm9yZSwgZHJpdmUgYSBCUklOLW9ubHkgdXBkYXRlLAorLS0gYW5k IGFzc2VydCB0aGF0IGNsYXNzaWMgSE9UIGFkdmFuY2VkIHdoaWxlIEhPVC1pbmRleGVkIGRp ZCBub3QuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90 X2lkeCBBUyBob3RfaWR4X2JlZm9yZSBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpIFxn c2V0CitVUERBVEUgaGlfYnJpbiBTRVQgYmNvbCA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKGhvdCAtIDApID4gMCBB UyBjbGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVmb3Jl IEFTIGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlf YnJpbicpOworCistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFt aW5zZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsKKworRFJP UCBUQUJMRSBoaV9icmluOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBV TklRVUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9y IGVxdWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVy IHRoZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFn ZXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZy ZXNoIGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxl YWYgZm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3Mg ayBjaGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFn ZS1iYXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQor LS0gb3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUg dW5pcXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZy ZXNoIGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRl ciBpdCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWlu ZSBjb25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNl IHRoZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0 dHJpYnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3Vu dW0gKGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAy bmQgaW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVF UyAoMS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAx MDA7ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9p bmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKy0tIEEgbnVtZXJpY2FsbHktZXF1YWwgaW5z ZXJ0IG11c3QgY29uZmxpY3QgKHRoZSBmcmVzaCBsZWFmIGNhdGNoZXMgaXQpOgorSU5TRVJU IElOVE8gaGlfdW51bSBWQUxVRVMgKDEuMCwgMSk7ICAgICAgICAgICAgICAtLSBleHBlY3Qg ZHVwbGljYXRlIGtleSBlcnJvcgorLS0gQSBnZW51aW5lbHkgZGlmZmVyZW50IHZhbHVlIGlz IGFjY2VwdGVkOgorSU5TRVJUIElOVE8gaGlfdW51bSBWQUxVRVMgKDIuMCwgMik7CitTRUxF Q1QgaywgaiBGUk9NIGhpX3VudW0gT1JERVIgQlkgajsKK0RST1AgVEFCTEUgaGlfdW51bTsK KworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBS RUlOREVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkg YnVpbHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5l dmVyIGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVw bGVzIG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3Mg ZW50cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBo b3AgYWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0 aGVtLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRl eCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJ TlNFUlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAg ICAgICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBh ID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucwor U0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBw Z19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworLS0gQnVpbGQg YSBORVcgaW5kZXggYW5kIFJFSU5ERVggdGhlIGV4aXN0aW5nIG9uZSBvdmVyIHRoZSBsaXZl IGNoYWlucy4KK0NSRUFURSBJTkRFWCBoaV9yZWluZGV4X2IgT04gaGlfcmVpbmRleChiKTsK K1JFSU5ERVggSU5ERVggaGlfcmVpbmRleF9hOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gMjA0OyAgICAgICAt LSBjdXJyZW50IHZhbHVlIC0+IGlkIDQKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlaW5k ZXggV0hFUkUgYSA9IDQ7ICAgICAgLS0gb2Jzb2xldGUgdmFsdWUgLT4gMAorU0VMRUNUIGlk IEZST00gaGlfcmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hs eSBidWlsdCBpbmRleCAtPiAyCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUg aGlfcmVpbmRleDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOC4gRFJPUCBl dmVyeSBpbmRleCBvdmVyIGxpdmUgSE9ULWluZGV4ZWQgY2hhaW5zLCB0aGVuIFZBQ1VVTQor LS0KKy0tIEFmdGVyIGFsbCBpbmRleGVzIGFyZSBkcm9wcGVkLCBoZWFwIHBhZ2VzIG1heSBz dGlsbCBjYXJyeSBwcmVzZXJ2ZWQKKy0tIEhPVC1pbmRleGVkIG1lbWJlcnMgbGVmdCBieSBl YXJsaWVyIHVwZGF0ZXMuICBWQUNVVU0gb2Ygc3VjaCBhIG5vLWluZGV4CistLSByZWxhdGlv biBtdXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJyb3IsIGFuZCByZWFkcyBtdXN0IHN0YXkgY29y cmVjdCB2aWEgdGhlCistLSByZWRpcmVjdCBmb3J3YXJkZXJzLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZHJvcGlkeCAoaWQgaW50IFBSSU1BUlkgS0VZ LCBhIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBm YWxzZSk7CitDUkVBVEUgSU5ERVggaGlfZHJvcGlkeF9hIE9OIGhpX2Ryb3BpZHgoYSk7CitJ TlNFUlQgSU5UTyBoaV9kcm9waWR4IFNFTEVDVCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYpIGc7CitVUERBVEUgaGlfZHJvcGlkeCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAg ICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9kcm9waWR4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VM RUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfZHJvcGlkeCcpOworLS0gRHJvcCBldmVy eSBpbmRleCwgbGVhdmluZyBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVycyB3aXRoIG5v IGluZGV4IHRvIHN3ZWVwLgorRFJPUCBJTkRFWCBoaV9kcm9waWR4X2E7CitBTFRFUiBUQUJM RSBoaV9kcm9waWR4IERST1AgQ09OU1RSQUlOVCBoaV9kcm9waWR4X3BrZXk7CistLSBNdXN0 IG5vdCBjcmFzaCBvbiB0aGUgbm8taW5kZXggcGF0aDsgdHdvIHBhc3NlcyBleGVyY2lzZSB0 aGUgc2Vjb25kLXBhc3MKKy0tIHJlY2xhaW0gZ3VhcmQgYXMgd2VsbC4KK1ZBQ1VVTSBoaV9k cm9waWR4OworVkFDVVVNIGhpX2Ryb3BpZHg7CistLSBSZWFkcyByZW1haW4gY29ycmVjdCBh ZnRlciB0aGUgaW5kZXhlcyBhcmUgZ29uZS4KK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2Ryb3Bp ZHggT1JERVIgQlkgaWQ7CitEUk9QIFRBQkxFIGhpX2Ryb3BpZHg7CisKKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorLS0gMTkuIFJlLWNvbGxhcHNlIG9mIGEgZGF0YS1yZWRpcmVjdCBj aGFpbiBhY3Jvc3MgcGFydGlhbCBWQUNVVU1zCistLQorLS0gQSBjaGFpbiB0aGF0IGNvbGxh cHNlcyB0byBhIEhPVC1pbmRleGVkIGRhdGEgcmVkaXJlY3QsIGlzIHZhY3V1bWVkIHdpdGgK Ky0tIElOREVYX0NMRUFOVVAgb2ZmIChzbyB0aGUgc3RhbGUgbGVhdmVzIGFuZCB0aGUgcmVk aXJlY3Qgc3Vydml2ZSksIHRoZW4KKy0tIHJlY2VpdmVzIGZ1cnRoZXIgSE9ULWluZGV4ZWQg dXBkYXRlcyB0aGF0IHJlLWNvbGxhcHNlIHRoZSBjaGFpbiBhbmQKKy0tIHJlLXBvaW50IHRo ZSByZWRpcmVjdCBhdCBhIG5ldyBsaXZlIHR1cGxlLCBtdXN0IG5vdCBsZWF2ZSB0aGUgcmVk aXJlY3QKKy0tIGRhbmdsaW5nLiAgQSBzdWJzZXF1ZW50IGZ1bGwgVkFDVVVNIG11c3QgY29t cGxldGUgd2l0aG91dCBlcnJvciwgbGVhdmUgdGhlCistLSBoZWFwIGNvbnNpc3RlbnQgKHZl cmlmeV9oZWFwYW0gcmVwb3J0cyBub3RoaW5nKSwgYW5kIHJlYWRzIG11c3Qgc3RheQorLS0g Y29ycmVjdC4gIChSZWdyZXNzaW9uOiBhbiBlYXJsaWVyIHJldmlzaW9uIGNyYXNoZWQgcmVj bGFpbWluZyBhIG1pZC1jaGFpbgorLS0gbWVtYmVyIHdoaWxlIGEgZGF0YSByZWRpcmVjdCBz dGlsbCBwb2ludGVkIHBhc3QgaXQuKQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjazsKK0NSRUFURSBUQUJMRSBoaV9y ZWNvbGxhcHNlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9y ZWNvbGxhcHNlX2EgT04gaGlfcmVjb2xsYXBzZShhKTsKK0lOU0VSVCBJTlRPIGhpX3JlY29s bGFwc2UgVkFMVUVTICgxLCAxKTsKKy0tIEZpcnN0IGNoYWluOiB0d28gSE9ULWluZGV4ZWQg dXBkYXRlcywgdGhlbiBwcnVuZSB0byBhIGRhdGEgcmVkaXJlY3Qgd2hpbGUKKy0tIGxlYXZp bmcgdGhlIHN0YWxlIGJ0cmVlIGxlYXZlcyBpbiBwbGFjZSAoSU5ERVhfQ0xFQU5VUCBvZmYp LgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAyIFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMyBXSEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNlOworLS0gUmUtY29sbGFwc2U6IG1vcmUgSE9U LWluZGV4ZWQgdXBkYXRlcyBleHRlbmQgdGhlIGNoYWluIHBhc3QgdGhlIHJlZGlyZWN0Cist LSB0YXJnZXQ7IHRoZSBuZXh0IHBydW5lIHJlLXBvaW50cyB0aGUgZGF0YSByZWRpcmVjdCBh dCB0aGUgbmV3IGZpcnN0IGxpdmUKKy0tIHR1cGxlIGFuZCBleHRlbmRzIGl0cyB1bmlvbi4K K1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNCBXSEVSRSBpZCA9IDE7CitVUERBVEUg aGlfcmVjb2xsYXBzZSBTRVQgYSA9IDUgV0hFUkUgaWQgPSAxOworVkFDVVVNIChJTkRFWF9D TEVBTlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIEZ1bGwgdmFjdXVtIG5vdyByZWNsYWlt cyB0aGUgZGVhZCBjaGFpbjsgdGhlIHJlLXBvaW50ZWQgcmVkaXJlY3QgbXVzdCBub3QKKy0t IGRhbmdsZS4gIFR3byBwYXNzZXMgYWxzbyBleGVyY2lzZSB0aGUgcmVkaXJlY3QgcmUtcG9p bnQgc2Vjb25kIHBhc3MuCitWQUNVVU0gaGlfcmVjb2xsYXBzZTsKK1ZBQ1VVTSBoaV9yZWNv bGxhcHNlOworLS0gSGVhcCBtdXN0IGJlIHN0cnVjdHVyYWxseSBjb25zaXN0ZW50IChubyBy b3dzID09IG5vIGNvcnJ1cHRpb24pLgorU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdo aV9yZWNvbGxhcHNlJyk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQs IGEgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEgPSA1OyAgICAgLS0gY3VycmVudCB2YWx1 ZSAtPiBpZCAxCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEg PSAzOyAgLS0gb2Jzb2xldGUgdmFsdWUgLT4gMAorUkVTRVQgZW5hYmxlX3NlcXNjYW47CitT RUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNvbGxhcHNlIE9SREVSIEJZIGlkOworRFJPUCBUQUJM RSBoaV9yZWNvbGxhcHNlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIwLiBJ bmRleCBkZWxldGlvbiBvdmVyIGFuIGVudHJ5IHRoYXQgcG9pbnRzIGF0IGEgZGF0YS1yZWRp cmVjdCByb290CistLQorLS0gQSBkYXRhIHJlZGlyZWN0IGlzIGFuIExQX1JFRElSRUNUIHRo YXQgY2FycmllcyBhIGJpdG1hcCwgc28gaXQgcmVwb3J0cworLS0gbHBfbGVuID4gMCAoSXRl bUlkSGFzU3RvcmFnZSB0cnVlKSBldmVuIHRob3VnaCBpdCBpcyBub3QgYSBub3JtYWwgdHVw bGUuCistLSBpbmRleF9kZWxldGVfY2hlY2tfaHRpZCBtdXN0IHRyZWF0IGl0IGFzIGEgcmVk aXJlY3QsIG5vdCByZWFkIGl0cyBibG9iIGFzIGEKKy0tIEhlYXBUdXBsZUhlYWRlci4gIFJl cHJvZHVjZTogY29sbGFwc2UgYSBjaGFpbiByb290IHRvIGEgZGF0YSByZWRpcmVjdCB3aGls ZQorLS0ga2VlcGluZyB0aGUgc3RhbGUgbGVhZiB0aGF0IHBvaW50cyBhdCBpdCAoSU5ERVhf Q0xFQU5VUCBvZmYpLCB0aGVuIGluc2VydAorLS0gbWFueSBkdXBsaWNhdGVzIG9mIHRoZSBz dGFsZSBrZXkgc28gYnRyZWUgYm90dG9tLXVwIGRlbGV0aW9uIHJ1bnMKKy0tIGhlYXBfaW5k ZXhfZGVsZXRlX3R1cGxlcyBvdmVyIHRoYXQgc3RhbGUgZW50cnkuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9pZGRlbCAoaWQgaW50LCBhIGludCkgV0lU SCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVB VEUgSU5ERVggaGlfaWRkZWxfYSBPTiBoaV9pZGRlbChhKTsKK0lOU0VSVCBJTlRPIGhpX2lk ZGVsIFZBTFVFUyAoMSwgMSk7CitVUERBVEUgaGlfaWRkZWwgU0VUIGEgPSBhICsgMSBXSEVS RSBpZCA9IDE7ICAgICAgICAgIC0tIEhPVC1pbmRleGVkCitVUERBVEUgaGlfaWRkZWwgU0VU IGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAgIC0tIG11bHRpLWhvcCBjaGFpbgor VkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfaWRkZWw7ICAgICAgICAgICAgICAgICAt LSByb290IC0+IGRhdGEgcmVkaXJlY3QsIGtlZXAgc3RhbGUgYT0xIGxlYWYKKy0tIE1hbnkg ZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUga2V5IGZpbGwgdGhlIGxlYWYgYW5kIHRyaWdnZXIg Ym90dG9tLXVwCistLSBkZWxldGlvbiwgd2hpY2ggZmVlZHMgdGhlIHN0YWxlIGE9MSBlbnRy eSAoaHRpZCAtPiB0aGUgZGF0YS1yZWRpcmVjdCByb290KQorLS0gdG8gaGVhcF9pbmRleF9k ZWxldGVfdHVwbGVzLiAgTXVzdCBub3QgY3Jhc2ggb3IgbWlzcmVhZCB0aGUgYmxvYi4KK0lO U0VSVCBJTlRPIGhpX2lkZGVsIFNFTEVDVCBnLCAxIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIs IDMwMDApIGc7CitWQUNVVU0gaGlfaWRkZWw7CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFw YW0oJ2hpX2lkZGVsJyk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQs IGEgRlJPTSBoaV9pZGRlbCBXSEVSRSBpZCA9IDE7ICAgICAgICAgICAgIC0tIGN1cnJlbnQg dmFsdWUgLT4gYSA9IDMKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9p ZGRlbDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMS4gQSBjaGFuZ2UgdG8g YSBjb2x1bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCBBTSBpcyBIT1QtaW5kZXhl ZAorLS0KKy0tIEEgSE9ULWluZGV4ZWQgdXBkYXRlIGxlYXZlcyBhIHN0YWxlIHByZS11cGRh dGUgbGVhZiB0aGF0IHRoZSByZWFkIHNpZGUKKy0tIGZpbHRlcnMgdmlhIHRoZSBjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vzcy1tZXRob2QgYWdub3N0aWMuCist LSBBIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9uLWJ0cmVlIGluZGV4IChoZXJlIGEgR2lTVCBp bmRleCBvbiBhIHBvaW50IGNvbHVtbikKKy0tIGlzIHRoZXJlZm9yZSBIT1QtaW5kZXhlZCBs aWtlIGFueSBvdGhlciwgYW5kIHRoZSBHaVNUIGluZGV4IHN0aWxsIHJldHVybnMKKy0tIGNv cnJlY3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLiAgQSBjaGFuZ2UgdG8gYSBidHJlZS1v bmx5IGNvbHVtbiBvbiB0aGUKKy0tIHNhbWUgdGFibGUgaXMgbGlrZXdpc2UgSE9ULWluZGV4 ZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9ub25idHJl ZSAoaWQgaW50IFBSSU1BUlkgS0VZLCB0YWcgaW50LCBwIHBvaW50KQorICAgIFdJVEggKGZp bGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfdGFnIE9OIGhpX25v bmJ0cmVlICh0YWcpOyAgICAgICAgICAtLSBidHJlZSBpbmRleAorQ1JFQVRFIElOREVYIGhp X25vbmJ0cmVlX3AgT04gaGlfbm9uYnRyZWUgVVNJTkcgZ2lzdCAocCk7ICAgLS0gR2lTVCwg bm9uLWJ0cmVlCitJTlNFUlQgSU5UTyBoaV9ub25idHJlZSBTRUxFQ1QgZywgZywgcG9pbnQo ZywgZykKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGc7CisKKy0tIENoYW5n ZSB0aGUgR2lTVC1jb3ZlcmVkIGNvbHVtbiBmaXJzdDogSE9ULWluZGV4ZWQgKGhvdF9pZHgg PSAyMDApLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCBwID0gcG9pbnQocFswXSArIDEwMDAs IHBbMV0gKyAxMDAwKTsKK1NFTEVDVCBob3RfaWR4IEFTIGdpc3RfY29sX2hvdF9pbmRleGVk IEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScpOworCistLSBUaGUgR2lTVCBpbmRl eCBtdXN0IHJldHVybiBjb3JyZWN0IHJlc3VsdHM6IHRoZSBvbGQgcG9zaXRpb25zIGFyZSBn b25lIGFuZAorLS0gZXZlcnkgcm93IGlzIGZvdW5kIGF0IGl0cyBuZXcgcG9zaXRpb24gKG5v IHN0YWxlIGxlYWYgc3VyZmFjZXMgYW4gb2xkIGtleSkuCitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfb2xkX3Bvc2l0aW9ucworICAgIEZST00g aGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMCwgMCksIHBvaW50KDMwMCwgMzAw KSk7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfbmV3X3Bvc2l0aW9ucworICAgIEZST00gaGlf bm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMTAwMCwgMTAwMCksIHBvaW50KDEzMDAs IDEzMDApKTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBDaGFuZ2luZyB0aGUgYnRy ZWUtb25seSBjb2x1bW4gKHAgdW5jaGFuZ2VkKSBzdGF5cyBIT1QtaW5kZXhlZC4KK1VQREFU RSBoaV9ub25idHJlZSBTRVQgdGFnID0gdGFnICsgMTAwMDsKK1NFTEVDVCBob3RfaWR4ID4g MCBBUyBidHJlZV9jb2xfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX25v bmJ0cmVlJyk7CitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUga2V5IGFjcm9zcyB0d28gZGlzdGlu Y3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQorLS0gYW5kIGJhY2sgbXVzdCBzdGls bCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBob2xkcyBpdC4gIFRoZSBzdGFsZQor LS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qgbm90IGxldCBhIGdlbnVpbmUgZHVw bGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5lc3MgY2hlY2sgLS0gdGhlIHJlYWQt c2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtleSwgbm90IGp1c3QKKy0tIGEgY2hh bmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUg SU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxV RVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gQ3ljbGUgcm93MSdzIHVuaXF1ZSBrZXkgMSAt PiAzIC0+IDEgKHYgdW5jaGFuZ2VkLCBzbyBlYWNoIHN0ZXAgaXMKKy0tIEhPVC1pbmRleGVk IGFuZCBsZWF2ZXMgc3RhbGUgZW50cmllcyBpbiBoaV9hYmFfaykuCitVUERBVEUgaGlfYWJh IFNFVCBrID0gMyBXSEVSRSB2ID0gMTA7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBXSEVS RSB2ID0gMTA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgY3ljbGVkX2hvdF9pbmRleGVkIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9hYmEnKTsKKworLS0gcm93MSBpcyBsaXZlIGF0IGsgPSAx IGFnYWluLiAgTW92aW5nIHJvdzIgb250byBrID0gMSBtdXN0IHJhaXNlIGEgdW5pcXVlCist LSB2aW9sYXRpb24gZGVzcGl0ZSB0aGUgc3RhbGUgJzEnIGxlYXZlcyBmcm9tIHRoZSBjeWNs ZS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAyMDsKK0RST1AgVEFCTEUg aGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0aWFsIGlu ZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4uICBGbGlw cGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2aW5nIHRo ZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUgcHJlZGlj YXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQsIHNvCist LSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3RhbGUgcGFy dGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBpcyBpbnZv bHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0 cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4pCisgICAg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJlZF9rIE9O IGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9wYXJ0cHJl ZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CisKKy0tIEZsaXAgdGhlIHByZWRpY2F0ZSBjb2x1 bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGluZGV4IGtleSBrIGlzCistLSB1bmNo YW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZSwgc28g aXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3QgYmUgcmVtb3ZlZCwgbm90IGxlZnQg cG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUgaGlfcGFydHByZWQgU0VUIGFjdGl2 ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKK1NFTEVDVCBob3QsIGhvdF9pZHggRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRw cmVkJyk7CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IG11c3Qgbm90IHN1cmZhY2UgdGhlIHJv dyBub3cgdGhhdCBhY3RpdmUgPSBmYWxzZS4KKy0tIEEgcXVlcnkgd2hvc2UgcXVhbCBleGFj dGx5IG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlIHVzZXMgdGhlIGluZGV4CistLSB3 aXRob3V0IHJlLWZpbHRlcmluZyAnYWN0aXZlJyBvbiB0aGUgaGVhcCwgc28gYSBzdGFsZSBl bnRyeSB3b3VsZCBzdXJmYWNlLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQg RlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0 cHJlZCBXSEVSRSBrID0gMTAwIEFORCBhY3RpdmU7CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0 cHJlZCBXSEVSRSBhY3RpdmU7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0cHJlZDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAgUmVwZWF0ZWQgdXBk YXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0tIG9mIGNvbHVtbiBi IGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1lbWJlcnMgd2hvc2Ug Y2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWluKSBhbmQga2VlcHMg c3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJvb3QgcmVkaXJlY3Qg ZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2FsayBjcm9zc2VzIG1p ZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5kZXggYW5kIGFtY2hl Y2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFwc2UsIGFuZCBhIHNl Y29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdpdGhvdXQgc2V2ZXJp bmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFU RSBJTkRFWCBoaV9zdHVibWl4X2EgT04gaGlfc3R1Ym1peCAoYSk7CitDUkVBVEUgSU5ERVgg aGlfc3R1Ym1peF9iIE9OIGhpX3N0dWJtaXggKGIpOworSU5TRVJUIElOVE8gaGlfc3R1Ym1p eCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX3N0dWJtaXggU0VUIGEgPSAxMSBX SEVSRSBpZCA9IDE7ICAgLS0gY2hhbmdlcyBhCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9 IDEyIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1cGVyc2VkZXMpCitV UERBVEUgaGlfc3R1Ym1peCBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7ICAtLSBjaGFuZ2Vz IGIKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1 Ym1peCBXSEVSRSBhID0gMTI7ICAgLS0gY3VycmVudCBhCitTRUxFQ1QgaWQsIGEsIGIgRlJP TSBoaV9zdHVibWl4IFdIRVJFIGIgPSAxMDE7ICAtLSBjdXJyZW50IGIKK1NFTEVDVCBpZCBG Uk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEwOyAgICAgICAgIC0tIHN0YWxlIGE6IDAgcm93 cworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NF TEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfc3R1Ym1peCcpOyAgICAgIC0tIG5vIGNv cnJ1cHRpb24gYWNyb3NzIHN0dWJzCistLSBBIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhl IGV4aXN0aW5nIHN0dWJzIChubyBwcmlvclhtYXggc2V2ZXIpLgorVVBEQVRFIGhpX3N0dWJt aXggU0VUIGEgPSAxMyBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfc3R1Ym1peDsKK1NFTEVD VCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYSA9IDEzOworU0VMRUNUICogRlJP TSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7CitEUk9QIFRBQkxFIGhpX3N0dWJtaXg7 CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjUuIEV4Y2x1c2lvbi1jb25zdHJh aW50IHRhYmxlcyBhcmUgSE9ULWluZGV4ZWQtZWxpZ2libGUuCistLQorLS0gQW4gZXhjbHVz aW9uIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgYnkgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1 ZV9jb25zdHJhaW50LAorLS0gd2hpY2ggcmVjaGVja3MgZWFjaCBjYW5kaWRhdGUgYWdhaW5z dCB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybQorLS0gd2l0aCB0aGUgY29u c3RyYWludCdzIG93biBvcGVyYXRvcnMsIHNvIGEgc3RhbGUgZW50cnkgbGVmdCBieSBhIEhP VC1pbmRleGVkCistLSB1cGRhdGUgaXMgc2tpcHBlZCB3aGlsZSB0aGUgbGl2ZSBrZXkgYWx3 YXlzIGhhcyBpdHMgb3duIGVudHJ5LiAgVXBkYXRpbmcgYQorLS0gbm9uLWNvbnN0cmFpbmVk IGluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkICh0aGUgR2lTVCBleGNsdXNpb24gaW5k ZXggaXMKKy0tIHNraXBwZWQpLCBhbmQgdGhlIGNvbnN0cmFpbnQgc3RheXMgY29ycmVjdC4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2V4Y2wgKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWcgaW50LAorICAgIGR1cmluZyBpbnQ0cmFu Z2UsCisgICAgRVhDTFVERSBVU0lORyBnaXN0IChkdXJpbmcgV0lUSCAmJikKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9leGNsX3RhZyBPTiBoaV9leGNs KHRhZyk7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMSwgMTAwLCBpbnQ0cmFuZ2Uo MSwgMTApKSwgKDIsIDIwMCwgaW50NHJhbmdlKDIwLCAzMCkpOworCistLSBVcGRhdGUgYSBu b24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW46IEhPVC1pbmRleGVkIChHaVNUIGV4Y2x1 c2lvbiBpbmRleAorLS0gYW5kIFBLIHNraXBwZWQpLCBhbmQgdGhlIGV4Y2x1c2lvbiBjb25z dHJhaW50IGlzIHN0aWxsIGVuZm9yY2VkLgorVVBEQVRFIGhpX2V4Y2wgU0VUIHRhZyA9IHRh ZyArIDEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHRhZ191cGRhdGVf aG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2V4Y2wnKTsKK0lOU0VSVCBJTlRP IGhpX2V4Y2wgVkFMVUVTICgzLCAzMDAsIGludDRyYW5nZSg1LCAxNSkpOyAgLS0gb3Zlcmxh cHMgaWQ9MSdzICgxLDEwKQorCistLSBNb3ZlIGlkPTEncyByYW5nZSBhd2F5ICh0aGlzIHVw ZGF0ZXMgdGhlIEdpU1QgaW5kZXgsIGxlYXZpbmcgYSBzdGFsZSBlbnRyeQorLS0gZm9yIHRo ZSBvbGQgKDEsMTApIHJhbmdlKS4gIEEgcmFuZ2Ugb3ZlcmxhcHBpbmcgb25seSB0aGUgT0xE IHJhbmdlIG5vdworLS0gaW5zZXJ0cyBjbGVhbmx5ICh0aGUgc3RhbGUgZW50cnkgaXMgc2tp cHBlZCk7IG9uZSBvdmVybGFwcGluZyB0aGUgTkVXIHJhbmdlCistLSBzdGlsbCBjb25mbGlj dHMuCitVUERBVEUgaGlfZXhjbCBTRVQgZHVyaW5nID0gaW50NHJhbmdlKDEwMCwgMTEwKSBX SEVSRSBpZCA9IDE7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoNCwgNDAwLCBpbnQ0 cmFuZ2UoNSwgMTUpKTsgICAtLSBvbmx5IG92ZXJsYXBwZWQgb2xkIHJhbmdlOiBPSworSU5T RVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDUsIDUwMCwgaW50NHJhbmdlKDEwNSwgMTE1KSk7 LS0gb3ZlcmxhcHMgbmV3ICgxMDAsMTEwKTogY29uZmxpY3QKK0RST1AgVEFCTEUgaGlfZXhj bDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNi4gVE9BU1QgaW50ZXJhY3Rp b24uICBBbiBpbmRleGVkIGNvbHVtbiBzdG9yZWQgb3V0LW9mLWxpbmUgbXVzdCBiZWhhdmUK Ky0tIGNvcnJlY3RseSBhY3Jvc3MgSE9ULWluZGV4ZWQgdXBkYXRlczogYW4gZW50cnkga2Vw dCBhY3Jvc3MgYW4gdXBkYXRlIG9mIGEKKy0tIGRpZmZlcmVudCBjb2x1bW4gc3RpbGwgcmVz b2x2ZXMgdG8gdGhlICh1bmNoYW5nZWQpIHRvYXN0ZWQgdmFsdWUsIGFuZCBhZnRlcgorLS0g dGhlIHRvYXN0ZWQgY29sdW1uIGl0c2VsZiBpcyBjaGFuZ2VkIHRoZSBzdGFsZSBlbnRyeSBp cyBkcm9wcGVkIGJ5IHRoZQorLS0gY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIChubyB2YWx1 ZSBjb21wYXJpc29uIG9yIGRldG9hc3RpbmcgaXMgbmVlZGVkKS4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3RvYXN0IChpZCBpbnQgUFJJTUFSWSBLRVks IGJpZyB0ZXh0LCB0YWcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQUxURVIgVEFC TEUgaGlfdG9hc3QgQUxURVIgQ09MVU1OIGJpZyBTRVQgU1RPUkFHRSBFWFRFUk5BTDsgIC0t IG5vIGNvbXByZXNzaW9uCitDUkVBVEUgSU5ERVggaGlfdG9hc3RfYmlnIE9OIGhpX3RvYXN0 IChiaWcpOworQ1JFQVRFIElOREVYIGhpX3RvYXN0X3RhZyBPTiBoaV90b2FzdCAodGFnKTsK K0lOU0VSVCBJTlRPIGhpX3RvYXN0IFZBTFVFUyAoMSwgcmVwZWF0KCdBJywgMjAwMCksIDEw KTsKKy0tIFRoZSBiaWcgdmFsdWUgaXMgc3RvcmVkIG91dC1vZi1saW5lLgorU0VMRUNUIHBn X2NvbHVtbl9zaXplKGJpZykgPiAxNTAwIEFTIGJpZ19pc19leHRlcm5hbCBGUk9NIGhpX3Rv YXN0IFdIRVJFIGlkID0gMTsKKy0tIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiB0YWcgbGVhdmVz IGJpZyAoYW5kIGl0cyBpbmRleCBlbnRyeSkgdW5jaGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0 IFNFVCB0YWcgPSAxMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFn X3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfdG9hc3QnKTsKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCwgdGFnLCBsZW5ndGgoYmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9 IHJlcGVhdCgnQScsIDIwMDApOworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRoZSB0b2Fz dGVkIGluZGV4ZWQgY29sdW1uIGl0c2VsZjogdGhlIG9sZCBlbnRyeSBpcworLS0gbm93IHN0 YWxlIGJlY2F1c2UgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBzaG93cyBiaWcgY2hh bmdlZC4KK1VQREFURSBoaV90b2FzdCBTRVQgYmlnID0gcmVwZWF0KCdCJywgMjAwMCkgV0hF UkUgaWQgPSAxOworU0VMRUNUIGlkIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0 KCdBJywgMjAwMCk7ICAgLS0gc3RhbGU6IDAgcm93cworU0VMRUNUIGlkLCBsZW5ndGgoYmln KSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgnQicsIDIwMDApOyAgLS0gY3Vy cmVudAorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfdG9hc3QnKTsKK0RST1AgVEFCTEUg aGlfdG9hc3Q7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjcuIEFCQSBvbiBh biBpbmRleGVkIGNvbHVtbi4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHRoYXQgc2V0cyBhbiBp bmRleGVkCistLSBjb2x1bW4gdG8gYSB2YWx1ZSBhbiBlYXJsaWVyIGNoYWluIG1lbWJlciBh bHJlYWR5IGhlbGQgbGVhdmVzIHR3byBsZWF2ZXMKKy0tIHdpdGggdGhhdCBzYW1lIGtleSwg Ym90aCBjaGFpbi1yZXNvbHZpbmcgdG8gdGhlIGxpdmUgdHVwbGUuICBBIHZhbHVlLWJhc2Vk CistLSByZWNoZWNrIGNhbm5vdCB0ZWxsIHRoZW0gYXBhcnQgYW5kIHdvdWxkIHJldHVybiB0 aGUgcm93IHR3aWNlOyB0aGUKKy0tIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0 aGUgc3RhbGUgYW5jZXN0b3IgbGVhZiAoaXRzIHdhbGsgY3Jvc3NlcyB0aGUKKy0tIGtleS1j aGFuZ2luZyBob3BzKSBhbmQga2VlcHMgb25seSB0aGUgZnJlc2ggZW50cnksIHNvIGEgZm9y Y2VkIGluZGV4IHNjYW4KKy0tIHJldHVybnMgdGhlIHJvdyBleGFjdGx5IG9uY2UuICBSRUlO REVYIG11c3Qgbm90IGNoYW5nZSB0aGF0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgVEFCTEUgaGlfYWJhIChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50LCB2IGludCkg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfayBPTiBoaV9h YmEgKGspOworQ1JFQVRFIElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQg SU5UTyBoaV9hYmEgVkFMVUVTICgxLCAxLCAxMDApOworVVBEQVRFIGhpX2FiYSBTRVQgayA9 IDMgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVkOiBrIGNoYW5nZWQsIHYga2VwdAor VVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgaWQgPSAxOyAgIC0tIEhPVC1pbmRleGVk OiBrIGN5Y2xlZCBiYWNrIChBQkEpCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQg ZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgazFfb25jZSBG Uk9NIGhpX2FiYSBXSEVSRSBrID0gMTsgICAgIC0tIGV4YWN0bHkgMQorU0VMRUNUIGNvdW50 KCopIEFTIGszX2dvbmUgRlJPTSBoaV9hYmEgV0hFUkUgayA9IDM7ICAgICAtLSAwIChzdGFs ZSBkcm9wcGVkKQorUkVJTkRFWCBJTkRFWCBoaV9hYmFfazsKK1NFTEVDVCBjb3VudCgqKSBB UyBrMV9hZnRlcl9yZWluZGV4IEZST00gaGlfYWJhIFdIRVJFIGsgPSAxOyAgLS0gc3RpbGwg MQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NF TEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfYWJhJyk7CitEUk9QIFRBQkxFIGhpX2Fi YTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOC4gUGFydGlhbCBpbmRleCwg cHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGJ1dCB0aGUgcm93IFNUQVlTIGluIHRoZSBpbmRl eAorLS0gKHByZWRpY2F0ZSBzdGlsbCB0cnVlLCBrZXkgdW5jaGFuZ2VkKS4gIFRoZSB1cGRh dGUgaXMgSE9ULWluZGV4ZWQ7IHNlbGVjdGl2ZQorLS0gbWFpbnRlbmFuY2UgcmUtaW5zZXJ0 cyBhIGZyZXNoIGVudHJ5ICh0aGUgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGFuZCBzdGls bAorLS0gaG9sZHMpLCBzbyB0aGUgcm93IGlzIHN0aWxsIHJldHVybmVkIC0tIHRoZSBiaXRt YXAgZHJvcHMgdGhlIG9sZGVyIGVudHJ5IGFuZAorLS0gdGhlIGZyZXNoIG9uZSByZS1zdXBw bGllcyBpdC4gIEd1YXJkcyBhZ2FpbnN0IGEgImxvc3Qgcm93IiBmcm9tIG92ZXItZWFnZXIK Ky0tIGRyb3BwaW5nLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfcGFydHN0YXkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIG4gaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2sgT04gaGlfcGFy dHN0YXkgKGspIFdIRVJFIG4gPiAwOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2lkMiBP TiBoaV9wYXJ0c3RheSAoaWQpOworSU5TRVJUIElOVE8gaGlfcGFydHN0YXkgVkFMVUVTICgx LCA1LCAzKTsKK1VQREFURSBoaV9wYXJ0c3RheSBTRVQgbiA9IDcgV0hFUkUgaWQgPSAxOyAg IC0tIG4gMy0+Nywgc3RpbGwgPiAwLCBrIHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHN0YXlfaXNfaG90X2lu ZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRzdGF5Jyk7CitTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgY291 bnQoKikgQVMgc3RheV9yb3dzIEZST00gaGlfcGFydHN0YXkgV0hFUkUgayA9IDUgQU5EIG4g PiAwOyAgIC0tIHdhbnQgMQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHN0YXk7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMjkuIFBhcnRpdGlvbmVkIHRhYmxlLiAgQSB3aXRoaW4tcGFydGl0 aW9uIFVQREFURSBvZiBvbmUgaW5kZXhlZCBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkIG9u IHRoZSBsZWFmIHBhcnRpdGlvbidzIGhlYXAgZXhhY3RseSBhcyBmb3IgYSBub24tcGFydGl0 aW9uZWQKKy0tIHRhYmxlOyBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGUgaXMgYSBkZWxldGUr aW5zZXJ0IGFuZCBuZXZlciBIT1QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFU RSBUQUJMRSBoaV9wYXJ0IChpZCBpbnQsIGEgaW50LCBiIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpZCk7CitDUkVBVEUgVEFCTEUgaGlfcGFydDEgUEFSVElUSU9OIE9GIGhpX3BhcnQg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAwKQorICAgIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9hIE9OIGhpX3BhcnQgKGEpOworQ1JFQVRFIElO REVYIGhpX3BhcnRfYiBPTiBoaV9wYXJ0IChiKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnQgVkFM VUVTICgxLCAxMCwgMjApOworVVBEQVRFIGhpX3BhcnQgU0VUIGEgPSAxMSBXSEVSRSBpZCA9 IDE7ICAgLS0gb25lIGluZGV4ZWQgY29sLCB3aXRoaW4gcGFydGl0aW9uCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgcGFydF9p c19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydDEnKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVD VCBjb3VudCgqKSBBUyBhMTEgRlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAxMTsgICAtLSB3YW50 IDEKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTAgRlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAxMDsg ICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQpCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdo aV9wYXJ0MScpOworRFJPUCBUQUJMRSBoaV9wYXJ0OworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDMwLiBOb24tYnRyZWUgYWNjZXNzIG1ldGhvZCAoaGFzaCkuICBSZWFkLXNp ZGUgc3RhbGVuZXNzIGlzIGFjY2Vzcy1tZXRob2QKKy0tIGFnbm9zdGljICh0aGUgY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwKSwgc28gYW55IGluZGV4IEFNJ3MgY29sdW1uIGlzCistLSBI T1QtaW5kZXhlZC4gIEhhc2ggaXMgdGhlIHNoYXJwZXN0IGNhc2U6IGl0cyBzY2FucyByZWNo ZWNrIHRoZSBoZWFwIHZhbHVlLAorLS0gd2hpY2ggYWxvbmUgY2Fubm90IGRpc2FtYmlndWF0 ZSBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpIC0tIHRoZQorLS0gYml0bWFw IGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBzbyB0aGUgcm93IGlzIHJldHVybmVkIGV4YWN0 bHkgb25jZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2hh c2ggKGlkIGludCBQUklNQVJZIEtFWSwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdiBPTiBoaV9oYXNoIFVTSU5HIGhhc2gg KHYpOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdyBPTiBoaV9oYXNoICh3KTsKK0lOU0VSVCBJ TlRPIGhpX2hhc2ggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9oYXNoIFNFVCB2 ID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSAxMCBXSEVSRSBp ZCA9IDE7ICAgLS0gQUJBOiAxMCAtPiA5OSAtPiAxMCwgdyB1bmNoYW5nZWQKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBoYXNo X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9oYXNoJyk7CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxF Q1QgY291bnQoKikgQVMgaGFzaF92MTAgRlJPTSBoaV9oYXNoIFdIRVJFIHYgPSAxMDsgICAt LSB3YW50IDEgKG5vIGR1cGxpY2F0ZSkKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3Y5OSBG Uk9NIGhpX2hhc2ggV0hFUkUgdiA9IDk5OyAgIC0tIHdhbnQgMCAoc3RhbGUgZHJvcHBlZCkK K1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9Q IFRBQkxFIGhpX2hhc2g7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzEuIERE TCBhZnRlciBhIEhPVC1pbmRleGVkIGNoYWluIGV4aXN0cy4gIFRoZSBwZXItaG9wIG1vZGlm aWVkLWF0dHJzCistLSBiaXRtYXAgb24gdGhlIHBhZ2UgaXMga2V5ZWQgYnkgcGh5c2ljYWwg YXR0cmlidXRlIG51bWJlciBhbmQgc2l6ZWQgYnkgdGhlCistLSByZWxhdGlvbidzIG5hdHRz IEFUIFdSSVRFIFRJTUUuICBJbmRleGVzIGFkZGVkL2Ryb3BwZWQgYWZ0ZXIgdGhlIGNoYWlu CistLSBmb3JtcywgYW5kIEFERC9EUk9QIENPTFVNTiwgbXVzdCBub3QgY29ycnVwdCB0aGUg cmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0LgorLS0gVGhlIHNoYXJwIGNhc2UgaXMgQUREIENP TFVNTiBjcm9zc2luZyBhbiA4LWF0dHJpYnV0ZSBib3VuZGFyeSwgd2hpY2ggZ3Jvd3MKKy0t IGNlaWwobmF0dHMvOCk6IHJlYWRlcnMgbXVzdCBsb2NhdGUgZWFjaCBob3AncyBiaXRtYXAg ZnJvbSB0aGF0IGhvcCdzIG93bgorLS0gd3JpdGUtdGltZSBuYXR0cyAoSGVhcFR1cGxlSGVh ZGVyR2V0TmF0dHMgLyB0aGUgc3R1YidzIHN0YXNoZWQgbmF0dHMpLCBub3QKKy0tIHRoZSBy ZWxhdGlvbidzIGN1cnJlbnQgbmF0dHMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IEV4YWN0bHkgOCBhdHRyaWJ1dGVzIChjMS4uYzcgKyBwYXlsb2FkKSBzbyBhZGRpbmcgdGhl IDl0aCBmbGlwcyB0aGUgYml0bWFwCistLSBmcm9tIDEgYnl0ZSB0byAyLiAgYzcgaXMgdGhl IGNvbHVtbiB3ZSBjaHVybjsgYzIgaXMgYW4gdW5jaGFuZ2VkIGluZGV4ZWQKKy0tIGNvbHVt biB3aG9zZSBsZWFmIG11c3Qgc3RheSBjdXJyZW50LgorQ1JFQVRFIFRBQkxFIGhpX2RkbCAo CisgICAgYzEgaW50IFBSSU1BUlkgS0VZLCBjMiBpbnQsIGMzIGludCwgYzQgaW50LAorICAg IGM1IGludCwgYzYgaW50LCBjNyBpbnQsIHBheWxvYWQgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBo aV9kZGxfYzIgT04gaGlfZGRsKGMyKTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzcgT04gaGlf ZGRsKGM3KTsKK0lOU0VSVCBJTlRPIGhpX2RkbCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQw LCA1MCwgNzAsICdwJyk7CisKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBjaGFpbiBvbiBjNyBC RUZPUkUgYW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MSBXSEVS RSBjMSA9IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJFIGMxID0gMTsKKwor LS0gKGEpIENSRUFURSBJTkRFWCBhZnRlciB0aGUgY2hhaW4gZXhpc3RzOiB0aGUgbmV3IGlu ZGV4IGlzIGJ1aWx0IGFnYWluc3QgdGhlCistLSBsaXZlIHR1cGxlIHVuZGVyIGl0cyBvd24g VElELCBzbyBpdHMgZW50cnkgaXMgbmV2ZXIgc3RhbGUuCitDUkVBVEUgSU5ERVggaGlfZGRs X2MzIE9OIGhpX2RkbChjMyk7CisKKy0tIChiKSBBREQgQ09MVU1OIGNyb3NzaW5nIHRoZSA4 LWF0dHJpYnV0ZSBib3VuZGFyeSAobmF0dHMgOCAtPiA5KS4gIEV4aXN0aW5nCistLSBob3Bz IGtlZXAgdGhlaXIgMS1ieXRlIGJpdG1hcHM7IHRoZSByZWxhdGlvbiBub3cgd2FudHMgMi4g IFJlYWRzIHRocm91Z2ggdGhlCistLSBvbGQgY2hhaW4gbXVzdCBzdGlsbCBiZSBjb3JyZWN0 LgorQUxURVIgVEFCTEUgaGlfZGRsIEFERCBDT0xVTU4gYzkgaW50OworQ1JFQVRFIElOREVY IGhpX2RkbF9jOSBPTiBoaV9kZGwoYzkpOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNj YW4gPSBvZmY7CisKKy0tIExpdmUgYzcgaXMgNzIuICBUaGUgYzcgaW5kZXggbXVzdCByZXR1 cm4gdGhlIGxpdmUgcm93IGZvciA3MiBhbmQgZHJvcCB0aGUKKy0tIHN0YWxlIGxlYXZlcyBm b3IgNzAgYW5kIDcxIChvZmZzZXRzIG1pc3JlYWQgd291bGQgY29ycnVwdCB0aGlzKS4KK1NF TEVDVCBjb3VudCgqKSBBUyBjN19lcV83MiBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFO RCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcwX3N0 YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7 CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUg YzcgPSA3MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKworLS0gYzIgbmV2ZXIgY2hhbmdl ZCBhY3Jvc3MgdGhlIGNoYWluOiBpdHMgbGVhZiBtdXN0IE5PVCBiZSBqdWRnZWQgc3RhbGUg ZXZlbgorLS0gdGhvdWdoIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBjNy4gIEEgbWlzcmVhZCBi aXRtYXAgY291bGQgc3B1cmlvdXNseSBmbGFnIGl0LgorU0VMRUNUIGNvdW50KCopIEFTIGMy X2VxXzEwX2N1cnJlbnQgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJ UyBOT1QgTlVMTDsKKworLS0gKGMpIENvbnRpbnVlIGNodXJuaW5nIGM3IEFGVEVSIHRoZSBB REQgQ09MVU1OOiB0aGUgbmV3IGhvcCdzIGJpdG1hcCBpcyBzaXplZAorLS0gZm9yIG5hdHRz IDkgKDIgYnl0ZXMpOyB0aGUgb2xkIGhvcHMgYXJlIDEgYnl0ZS4gIEEgY2hhaW4gd2l0aCBt aXhlZC1zaXplCistLSBiaXRtYXBzIG11c3Qgc3RpbGwgcmVzb2x2ZSBjb3JyZWN0bHkuCitV UERBVEUgaGlfZGRsIFNFVCBjNyA9IDczIFdIRVJFIGMxID0gMTsKK1NFTEVDVCBjb3VudCgq KSBBUyBjN19lcV83MyBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDczIEFORCBwYXlsb2FkIElT IE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcyX25vd19zdGFsZSBGUk9N IGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAo ZCkgQ29sbGFwc2UgdGhlIGNoYWluIHRvIHN0dWJzIHZpYSBWQUNVVU0sIHRoZW4gcmVhZCBh Z2FpbjogdGhlIHN0dWIgbXVzdAorLS0gcHJlc2VydmUgaXRzIHdyaXRlLXRpbWUgbmF0dHMg c28gaXRzIGJpdG1hcCBzdGF5cyBsb2NhdGFibGUgcG9zdC1BREQgQ09MVU1OLgorVVBEQVRF IGhpX2RkbCBTRVQgYzcgPSA3NCBXSEVSRSBjMSA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFO VVAgb2ZmKSBoaV9kZGw7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzRfYWZ0ZXJfdmFj dXVtIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7 CitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfYWZ0ZXJfdmFjdXVtIEZST00gaGlfZGRs IFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChlKSBEUk9Q IENPTFVNTiBrZWVwcyB0aGUgYXR0bnVtIHNsb3QgKG5vIHJlbnVtYmVyKSwgc28gYml0bWFw cyBzdGF5IGFsaWduZWQuCitBTFRFUiBUQUJMRSBoaV9kZGwgRFJPUCBDT0xVTU4gYzQ7CitT RUxFQ1QgY291bnQoKikgQVMgYzdfYWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9 IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGMyX2Fm dGVyX2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1Qg TlVMTDsKKworLS0gKGYpIERST1AgSU5ERVggb24gdGhlIGNodXJuZWQgY29sdW1uOiByZW1h aW5pbmcgaW5kZXhlcyBzdGlsbCByZXNvbHZlLgorRFJPUCBJTkRFWCBoaV9kZGxfYzc7CitT RUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcGlkeCBGUk9NIGhpX2RkbCBXSEVSRSBj MiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNj YW47CisKKy0tIFRoZSBzZXFzY2FuIHRydXRoIGNvbmZpcm1zIHRoZSBsaXZlIHJvdzsgdGhl IGNvdW50IGFzc2VydGlvbnMgYWJvdmUgKHJlYWQKKy0tIHRocm91Z2ggdGhlIHBvc3QtRERM IGluZGV4ZXMpIG1hdGNoIGl0LCB3aGljaCBpcyB3aGF0IHdvdWxkIGJyZWFrIGlmIGEKKy0t IG1pcy1zaXplZCBiaXRtYXAgY29ycnVwdGVkIHRoZSBzdGFsZW5lc3MgdmVyZGljdC4KK1NF TEVDVCBjMSwgYzIsIGM3IEZST00gaGlfZGRsIFdIRVJFIGMxID0gMTsKKworRFJPUCBUQUJM RSBoaV9kZGw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzIuIEJpdG1hcEFu ZC9CaXRtYXBPciBhY3Jvc3MgYSBjaGFuZ2VkIGFuZCBhbiB1bmNoYW5nZWQgaW5kZXgKKy0t CistLSBSZXBvcnRlZCBieSBBbGV4YW5kZXIgS29yb3Rrb3YsIDIwMjYtMDctMDkuICBBIEhP VC1pbmRleGVkIHVwZGF0ZSBwb2ludHMKKy0tIHRoZSBDSEFOR0VEIGluZGV4J3MgZnJlc2gg ZW50cnkgYXQgdGhlIG5ldyBoZWFwLW9ubHkgdHVwbGUsIHdoaWxlIHRoZQorLS0gVU5DSEFO R0VEIGluZGV4J3MgZW50cnkgc3RpbGwgcG9pbnRzIGF0IHRoZSBjaGFpbiByb290LiAgQml0 bWFwQW5kL0JpdG1hcE9yCistLSBpbnRlcnNlY3QvdW5pb24gdHdvIGluZGV4ZXMnIHJhdyBU SUQgc2V0cyBpbiB0aGUgVElELWJpdG1hcCBsYXllciBCRUZPUkUKKy0tIGVpdGhlciBzaWRl IHRvdWNoZXMgdGhlIGhlYXA6IGFuIGV4YWN0LW1vZGUgaW50ZXJzZWN0aW9uIHNlZXMge3Jv b3R9IG9uIG9uZQorLS0gc2lkZSBhbmQge25ldy10dXBsZX0gb24gdGhlIG90aGVyIGFuZCBk cm9wcyB0aGUgcm93LCBldmVuIHRob3VnaCBib3RoCistLSByZXNvbHZlLCB0aHJvdWdoIHRo ZSBjaGFpbiwgdG8gdGhlIG9uZSBsaXZlIHR1cGxlLiAgQml0bWFwIHNjYW5zIHRvbGVyYXRl CistLSBmYWxzZSBwb3NpdGl2ZXMgYnV0IG5vdCBmYWxzZSBuZWdhdGl2ZXMsIHNvIHRoaXMg d2FzIGEgY29ycmVjdG5lc3MgYnVnLgorLS0KKy0tIEZpeGVkIGJ5IGEgb25lLWJpdCBtYXJr ZXIgaW4gdGhlIHN0b3JlZCBUSUQncyBvdGhlcndpc2UtdW51c2VkIG9mZnNldCBiaXQKKy0t IDE0IChJdGVtUG9pbnRlclNJVU1heWJlU3RhbGVGbGFnLCBzdG9yYWdlL2l0ZW1wdHIuaCks IHNldCBvbmx5IG9uIGEKKy0tIEhPVC1pbmRleGVkIGZyZXNoIGVudHJ5J3Mgb3duIFRJRCAo bmV2ZXIgb24gdHRzX3RpZCBpdHNlbGYsIG5ldmVyIG9uIGEKKy0tIGNsYXNzaWMtSE9UIG9y IHBsYWluLWluc2VydCBlbnRyeSkuICB0Ym1fYWRkX3R1cGxlcygpIC0tIHRoZSBzaW5nbGUg Y2hva2UKKy0tIHBvaW50IGV2ZXJ5IGFtZ2V0Yml0bWFwIGZ1bm5lbHMgZXhhY3QgaGVhcCBU SURzIHRocm91Z2ggLS0gY2hlY2tzIHRoZSBmbGFnCistLSBhbmQsIHdoZW4gc2V0LCBhZGRz IHRoZSB3aG9sZSBwYWdlIGFzIGxvc3N5ICh0Ym1fYWRkX3BhZ2UpIGluc3RlYWQgb2YgdGhl CistLSBzaW5nbGUgZXhhY3Qgb2Zmc2V0LiAgQSBsb3NzeSBwYWdlIHN1cnZpdmVzIGFueSBB TkQvT1IgYWdhaW5zdCBhbiBleGFjdC1tb2RlCistLSBwYWdlIChwZXIgdGJtX2ludGVyc2Vj dF9wYWdlJ3Mgb3duIGNhc2UgYW5hbHlzaXMpIGFuZCBmb3JjZXMgdGhlIGV4aXN0aW5nCist LSBoZWFwLXNpZGUgY3Jvc3NlZC1hdHRyaWJ1dGUgcmVjaGVjayB0byBtYWtlIHRoZSBmaW5h bCBjYWxsLiAgSGFuZGxpbmcgaXQKKy0tIHRoZXJlIG1lYW5zIE5PIGluZGV4IGFjY2VzcyBt ZXRob2QgbmVlZHMgdG8ga25vdyBhYm91dCBIT1QtaW5kZXhlZCBjaGFpbnM6CistLSBidHJl ZSwgaGFzaCwgR0lOLCBHaVNULCBTUC1HaVNULCBjb250cmliL2Jsb29tLCBhbmQgYW55IG91 dC1vZi10cmVlIEFNIGFyZQorLS0gYWxsIGNvcnJlY3Qgd2l0aCBubyBBTS1zcGVjaWZpYyBj b2RlLiAgT25lIHRhYmxlIHBlciBub24tYnRyZWUgYWNjZXNzIG1ldGhvZAorLS0gYmVsb3cs IGVhY2ggcGFpcmVkIHdpdGggYSBidHJlZSBpbmRleCBvbiB0aGUgY2hhbmdlZCBjb2x1bW4s IGV4ZXJjaXNlcyB0aGUKKy0tIGNoYW5nZWQrdW5jaGFuZ2VkIEJpdG1hcEFuZC9CaXRtYXBP ciBzaGFwZSBmb3IgZXZlcnkgQU0gU0lVIHVzZXMgZWxzZXdoZXJlCistLSBpbiB0aGlzIGZp bGU7IGJsb29tJ3MgZXF1aXZhbGVudCBjYXNlIGxpdmVzIGluIGNvbnRyaWIvYmxvb20ncyBv d24gdGVzdAorLS0gKHdoZXJlIHRoZSBleHRlbnNpb24gaXMgZ3VhcmFudGVlZCBwcmVzZW50 KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvbjsKKworLS0gKGEpIGJ0cmVlICsgYnRyZWUKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9i dCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGMxIGludCwKKyAgICBjMiBpbnQK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9idF9j MSBPTiBoaV9ibWFuZF9idChjMSk7ICAgLS0gdW5jaGFuZ2VkCitDUkVBVEUgSU5ERVggaGlf Ym1hbmRfYnRfYzIgT04gaGlfYm1hbmRfYnQoYzIpOyAgIC0tIGNoYW5nZWQKK0lOU0VSVCBJ TlRPIGhpX2JtYW5kX2J0IFZBTFVFUyAoMSwgMTEsIDIxKTsKK1VQREFURSBoaV9ibWFuZF9i dCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYnRfYnRf Yml0bWFwYW5kIEZST00gaGlfYm1hbmRfYnQgV0hFUkUgYzEgPSAxMSBBTkQgYzIgPSAyMjsK Ky0tIFRoZSBmcmVzaCBlbnRyeSBpbiB0aGUgY2hhbmdlZCBpbmRleCAoaGlfYm1hbmRfYnRf YzIpIGlzIGZsYWdnZWQ6IHBhZ2VpbnNwZWN0CistLSByZXBvcnRzIGl0cyByZWFsIGhlYXAg b2Zmc2V0ICh0aGUgbWFya2VyIGlzIHN0cmlwcGVkIGZyb20gY3RpZC9odGlkKSBhbmQKKy0t IHN1cmZhY2VzIHRoZSBtYXJrZXIgaW4gdGhlIGhvdF9pbmRleGVkIGNvbHVtbi4gIFRoZSB1 bmNoYW5nZWQgaW5kZXgncyBlbnRyeQorLS0gaXMgbm90IGZsYWdnZWQuICAoYnRfcGFnZV9p dGVtcyBibG9jayAxIGlzIHRoZSBzb2xlIGxlYWYgZm9yIGEgc2luZ2xlIHJvdy4pCitTRUxF Q1QgaG90X2luZGV4ZWQsIGNvdW50KCopCisgIEZST00gYnRfcGFnZV9pdGVtcygnaGlfYm1h bmRfYnRfYzInLCAxKSBHUk9VUCBCWSBob3RfaW5kZXhlZCBPUkRFUiBCWSBob3RfaW5kZXhl ZDsKK1NFTEVDVCBib29sX2FuZChOT1QgaG90X2luZGV4ZWQpIEFTIHVuY2hhbmdlZF9pbmRl eF9uZXZlcl9mbGFnZ2VkCisgIEZST00gYnRfcGFnZV9pdGVtcygnaGlfYm1hbmRfYnRfYzEn LCAxKTsKKy0tIGFtY2hlY2sncyBoZWFwYWxsaW5kZXhlZCB2ZXJpZmljYXRpb24gcmUtZGVy aXZlcyBlYWNoIGxpdmUgaGVhcCB0dXBsZSdzCistLSBleHBlY3RlZCBpbmRleCBlbnRyeSBh bmQgY2hlY2tzIHRoZSBpbmRleCBjb250YWlucyBpdC4gIEZvciB0aGUgQ0hBTkdFRAorLS0g aW5kZXgsIGEgSE9ULWluZGV4ZWQgZnJlc2ggZW50cnkgc3RvcmVzIHRoYXQgVElEIHdpdGgg dGhlIFNJVSBtYXktYmUtc3RhbGUKKy0tIG1hcmtlciBzZXQgaW4gdGhlIG9mZnNldDsgYW1j aGVjayBtdXN0IHN0cmlwIGl0IHdoZW4gZmluZ2VycHJpbnRpbmcgb3IgaXQKKy0tIHdvdWxk IHNwdXJpb3VzbHkgcmVwb3J0ICJsYWNrcyBtYXRjaGluZyBpbmRleCB0dXBsZSIuICBObyBW QUNVVU0gaGFzIHJ1biwgc28KKy0tIHRoZSBmcmVzaCBlbnRyeSBwb2ludHMgZGlyZWN0bHkg YXQgdGhlIGxpdmUgaGVhcC1vbmx5IHR1cGxlIChubyBzdHViCistLSBmb3J3YXJkaW5nKSwg aXNvbGF0aW5nIHRoZSBtYXJrZXItc3RyaXAgcGF0aCB0aGlzIGNvbW1pdCBhZGRzLgorLS0K Ky0tIChPbmx5IHRoZSBjaGFuZ2VkIGluZGV4IGlzIGNoZWNrZWQgaGVyZS4gIGhlYXBhbGxp bmRleGVkIG9uIGFuIGluZGV4IE5PVAorLS0gbWFpbnRhaW5lZCBieSBhIEhPVC1pbmRleGVk IHVwZGF0ZSAtLSB3aGljaCBieSBkZXNpZ24gaGFzIG5vIGVudHJ5IGZvciB0aGUKKy0tIG5l dyBoZWFwLW9ubHkgdHVwbGUgLS0gaXMgYSBzZXBhcmF0ZSwgcHJlLWV4aXN0aW5nIFNJVS9h bWNoZWNrLWludGVncmF0aW9uCistLSBxdWVzdGlvbiwgdW5yZWxhdGVkIHRvIHRoZSBiaXQt MTQgbWFya2VyLCBhbmQgb3V0IG9mIHNjb3BlIGZvciB0aGlzIGNvbW1pdC4pCitTRUxFQ1Qg YnRfaW5kZXhfY2hlY2soJ2hpX2JtYW5kX2J0X2MyJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1 ZSk7CitEUk9QIFRBQkxFIGhpX2JtYW5kX2J0OworCistLSAoYikgaGFzaCAodW5jaGFuZ2Vk KSArIGJ0cmVlIChjaGFuZ2VkKQorQ1JFQVRFIFRBQkxFIGhpX2JtYW5kX2hhc2ggKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjMSBpbnQsCisgICAgYzIgaW50CispIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfaGFzaF9jMSBPTiBo aV9ibWFuZF9oYXNoIFVTSU5HIGhhc2ggKGMxKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9o YXNoX2MyIE9OIGhpX2JtYW5kX2hhc2goYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRfaGFz aCBWQUxVRVMgKDEsIDExLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfaGFzaCBTRVQgYzIgPSAy MiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgaGFzaF9idF9iaXRtYXBhbmQg RlJPTSBoaV9ibWFuZF9oYXNoIFdIRVJFIGMxID0gMTEgQU5EIGMyID0gMjI7CitEUk9QIFRB QkxFIGhpX2JtYW5kX2hhc2g7CisKKy0tIChjKSBHSU4gKHVuY2hhbmdlZCkgKyBidHJlZSAo Y2hhbmdlZCkKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9naW4gKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0YWdzIGludFtdLAorICAgIGMyIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2dpbl90YWdzIE9OIGhpX2JtYW5k X2dpbiBVU0lORyBnaW4gKHRhZ3MpOworQ1JFQVRFIElOREVYIGhpX2JtYW5kX2dpbl9jMiBP TiBoaV9ibWFuZF9naW4oYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRfZ2luIFZBTFVFUyAo MSwgQVJSQVlbMSwyLDNdLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfZ2luIFNFVCBjMiA9IDIy IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBnaW5fYnRfYml0bWFwYW5kCisg IEZST00gaGlfYm1hbmRfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbMl0gQU5EIGMyID0gMjI7 CitEUk9QIFRBQkxFIGhpX2JtYW5kX2dpbjsKKworLS0gKGQpIEdpU1QgKHVuY2hhbmdlZCkg KyBidHJlZSAoY2hhbmdlZCkKK0NSRUFURSBUQUJMRSBoaV9ibWFuZF9naXN0ICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgcCBwb2ludCwKKyAgICBjMiBpbnQKKykgV0lUSCAo ZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9naXN0X3AgT04gaGlf Ym1hbmRfZ2lzdCBVU0lORyBnaXN0IChwKTsKK0NSRUFURSBJTkRFWCBoaV9ibWFuZF9naXN0 X2MyIE9OIGhpX2JtYW5kX2dpc3QoYzIpOworSU5TRVJUIElOVE8gaGlfYm1hbmRfZ2lzdCBW QUxVRVMgKDEsIHBvaW50KDUsIDUpLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfZ2lzdCBTRVQg YzIgPSAyMiBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgZ2lzdF9idF9iaXRt YXBhbmQKKyAgRlJPTSBoaV9ibWFuZF9naXN0IFdIRVJFIHAgPEAgYm94KHBvaW50KDAsIDAp LCBwb2ludCgxMCwgMTApKSBBTkQgYzIgPSAyMjsKK0RST1AgVEFCTEUgaGlfYm1hbmRfZ2lz dDsKKworLS0gKGUpIFNQLUdpU1QgKHVuY2hhbmdlZCkgKyBidHJlZSAoY2hhbmdlZCkKK0NS RUFURSBUQUJMRSBoaV9ibWFuZF9zcGdpc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB0IHRleHQsCisgICAgYzIgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitD UkVBVEUgSU5ERVggaGlfYm1hbmRfc3BnaXN0X3QgT04gaGlfYm1hbmRfc3BnaXN0IFVTSU5H IHNwZ2lzdCAodCk7CitDUkVBVEUgSU5ERVggaGlfYm1hbmRfc3BnaXN0X2MyIE9OIGhpX2Jt YW5kX3NwZ2lzdChjMik7CitJTlNFUlQgSU5UTyBoaV9ibWFuZF9zcGdpc3QgVkFMVUVTICgx LCAnaGVsbG8nLCAyMSk7CitVUERBVEUgaGlfYm1hbmRfc3BnaXN0IFNFVCBjMiA9IDIyIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBjb3VudCgqKSBBUyBzcGdpc3RfYnRfYml0bWFwYW5kCisg IEZST00gaGlfYm1hbmRfc3BnaXN0IFdIRVJFIHQgPSAnaGVsbG8nIEFORCBjMiA9IDIyOwor RFJPUCBUQUJMRSBoaV9ibWFuZF9zcGdpc3Q7CisKKy0tIChmKSBCaXRtYXBPcjogYSBIT1Qt aW5kZXhlZCBmcmVzaCBlbnRyeSAoYnRyZWUsIGNoYW5nZWQpIHVuaW9uZWQgd2l0aCBhbgor LS0gdW5yZWxhdGVkIHVuY2hhbmdlZCBpbmRleCdzIGVudHJ5IGZvciBhIERJRkZFUkVOVCBy b3cgbXVzdCBub3QgYWZmZWN0IHRoYXQKKy0tIG90aGVyIHJvdydzIGNvdW50LCBhbmQgdGhl IFNJVSByb3cgaXRzZWxmIG11c3Qgc3RpbGwgYmUgZm91bmQgdGhyb3VnaAorLS0gZWl0aGVy IGFybSBvZiB0aGUgT1IuCitDUkVBVEUgVEFCTEUgaGlfYm1vcl9idCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIGMxIGludCwKKyAgICBjMiBpbnQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9ibW9yX2J0X2MxIE9OIGhpX2Jtb3JfYnQo YzEpOworQ1JFQVRFIElOREVYIGhpX2Jtb3JfYnRfYzIgT04gaGlfYm1vcl9idChjMik7CitJ TlNFUlQgSU5UTyBoaV9ibW9yX2J0IFZBTFVFUyAoMSwgMTEsIDIxKSwgKDIsIDEyLCAzMik7 CitVUERBVEUgaGlfYm1vcl9idCBTRVQgYzIgPSAyMiBXSEVSRSBpZCA9IDE7ICAgLS0gSE9U LWluZGV4ZWQgb24gcm93IDEgb25seQorU0VMRUNUIGNvdW50KCopIEFTIGJ0X2J0X2JpdG1h cG9yCisgIEZST00gaGlfYm1vcl9idCBXSEVSRSBjMSA9IDExIE9SIGMyID0gMzI7ICAgIC0t IHJvdyAxIHZpYSBjMSwgcm93IDIgdmlhIGMyCitEUk9QIFRBQkxFIGhpX2Jtb3JfYnQ7CisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VU IGVuYWJsZV9iaXRtYXBzY2FuOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIENs ZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBnZXRfaGlf Y291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7CistLSBw YWdlaW5zcGVjdCBhbmQgYW1jaGVjayB3ZXJlIGJvdGggY3JlYXRlZCBhYm92ZSB3aXRoIElG IE5PVCBFWElTVFMgYW5kIG1heQorLS0gaGF2ZSBwcmUtZXhpc3RlZCB0aGlzIHRlc3Q7IGxl YXZlIHRoZW0sIG1hdGNoaW5nIGFtY2hlY2sncyB0cmVhdG1lbnQsCistLSByYXRoZXIgdGhh biByaXNrIGRyb3BwaW5nIGFuIGV4dGVuc2lvbiB0aGlzIHRlc3QgZGlkIG5vdCBjcmVhdGUu Ci0tIAoyLjUwLjEKCg== --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0009-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0009-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA5NTQ2OTQ1ZWFlOGE4N2U1NzA5MmU4YThkMTkwZThmNjVhY2E0MDQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDA5 LzEwXSBHYXRlIEhPVC1pbmRleGVkIHVwZGF0ZXMgb24gdGhlIGxvZ2ljYWwtcmVwbGljYXRp b24KIGFwcGx5IHBhdGgKCkEgSE9ULWluZGV4ZWQgdXBkYXRlIG9mIGEgcmVwbGljYS1pZGVu dGl0eSBhdHRyaWJ1dGUgb24gYSBzdWJzY3JpYmVyIGxlYXZlcyBhCnN0YWxlIGluZGV4IGxl YWYgdGhhdCB0aGUgYXBwbHkgd29ya2VyJ3MgcmVwbGljYS1pZGVudGl0eSBsb29rdXBzIG11 c3QgdG9sZXJhdGUKLS0gd2hpY2ggdGhleSBkbywgYnV0IG9ubHkgd2hlbiB0aGUgc3Vic2Ny aWJlcidzIGluZGV4ZWQgYXR0cmlidXRlcyBkbyBub3QKZXh0ZW5kIHBhc3QgdGhlIGNvbHVt bnMgdGhvc2UgbG9va3VwcyBrZXkgb24uICBBZGQgdGhlIHBlci1zdWJzY3JpcHRpb24KaG90 X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uIChzdWJob3RpbmRleGVkb25hcHBseTogb2ZmIC8g c3Vic2V0X29ubHkgKGRlZmF1bHQpCi8gYWx3YXlzKSBhbmQgaGF2ZSBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGNvbnN1bHQgaXQgd2hlbiBydW5uaW5nIGluIGFuIGFwcGx5Cndvcmtlciwg Y29tcGFyaW5nIHRoZSByZWxhdGlvbidzIGluZGV4ZWQtYXR0cmlidXRlIHNldCBhZ2FpbnN0 IGl0cyBwcmltYXJ5LWtleQphdHRyaWJ1dGVzOiAib2ZmIiBkaXNxdWFsaWZpZXMgSE9ULWlu ZGV4ZWQgd2hlbmV2ZXIgYW55IGluZGV4ZWQgYXR0cmlidXRlIGxpZXMKb3V0c2lkZSB0aGUg cHJpbWFyeSBrZXksICJzdWJzZXRfb25seSIgcmVxdWlyZXMgdGhlIGluZGV4ZWQgYXR0cmli dXRlcyB0byBiZSBhCnN1YnNldCBvZiB0aGUgcHJpbWFyeSBrZXksIGFuZCAiYWx3YXlzIiBh cHBsaWVzIG5vIGFwcGx5LXBhdGggZ2F0aW5nLgoKV2lyZSB0aGUgb3B0aW9uIHRocm91Z2gg Q1JFQVRFL0FMVEVSIFNVQlNDUklQVElPTiwgcGdfc3Vic2NyaXB0aW9uLCBwZ19kdW1wLAph bmQgcHNxbCdzIFxkUnMrLCBhbmQgZG9jdW1lbnQgaXQgKGNyZWF0ZV9zdWJzY3JpcHRpb24s IGFsdGVyX3N1YnNjcmlwdGlvbiwKY2F0YWxvZ3MpLiAgQ292ZXIgYXBwbHkgdW5kZXIgZWFj aCBtb2RlICgwMzkpLCBhcHBseSB1bmRlciBSRVBMSUNBIElERU5USVRZCkZVTEwgYW5kIGEg bm9uLVBLIFVTSU5HIElOREVYIHdob3NlIGtleSBpcyBjeWNsZWQgKDA0MCksIGFuZCBkZWNv ZGluZyBvZgpIT1QtaW5kZXhlZCB1cGRhdGUgY2hhaW5zICh0ZXN0X2RlY29kaW5nKS4KCkF1 dGhvcmVkLWJ5OiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KLS0tCiBjb250cmliL3Rlc3Rf ZGVjb2RpbmcvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi90ZXN0X2Rl Y29kaW5nL2V4cGVjdGVkL2hvdF9pbmRleGVkLm91dCAgICB8ICA1OSArKysKIGNvbnRyaWIv dGVzdF9kZWNvZGluZy9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBjb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbCAgICAgfCAgMjkgKysKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAxNiArCiBkb2Mv c3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgIDcgKy0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICA1NSArKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMCAr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg NDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAzMyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgIDE3ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgfCAxNzYgKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCAgICAgICAgICAgICB8ICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsICAgfCA0MTYgKysrKysrKysrKysrKysrKysrCiAuLi4vdC8wNDBf aG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbCAgICAgfCAxMTAgKysrKysKIDIyIGZp bGVzIGNoYW5nZWQsIDk1MyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90X2luZGV4 ZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9o b3RfaW5kZXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5w bAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQppbmRleCAwMTExMTI0Mzk5YS4uODAwMjE2YjJh ZTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXJlcGFjayBzcGlsbCBzbG90 IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlyZXBh Y2sgc3BpbGwgc2xvdCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vf c3RyZWFtIGhvdF9pbmRleGVkCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAg b25kaXNrX3N0YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFw c2hvdF90cmFuc2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwK IAl0d29waGFzZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdl X3NuYXBzaG90IFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9ob3RfaW5kZXhlZC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90 X2luZGV4ZWQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x ZTIxODZmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9l eHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQKQEAgLTAsMCArMSw1OSBAQAorLS0gTG9naWNhbCBk ZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwgbGV2ZWwgKHRoZSBu ZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBtdXN0IGRlY29kZSBl eGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEgY2hhaW4gb2YKKy0t IEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElUWSBGVUxMIHNvIHRo ZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4gYm90aCBiZSBjaGVj a2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9N IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcs ICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEg cm93KQorCitDUkVBVEUgVEFCTEUgaGlfZGVjb2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9k ZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9O IGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJMRSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElU WSBGVUxMOworSU5TRVJUIElOVE8gaGlfZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7Cist LSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9uZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5 cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBh bmQgYmFjayAoQUJBKSBhbmQgdGhlbiBkZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEg PSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUg aWQgPSAxOworREVMRVRFIEZST00gaGlfZGVjb2RlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVUxMLAorICAgICAgICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9k ZWNvZGU6IElOU0VSVDogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06 MTAwCisgQ09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJdOjEwMCBu ZXctdHVwbGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMAor IENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQt a2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAgbmV3LXR1 cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEKKyBDT01N SVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisg QkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lO CisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJTgorIHRh YmxlIHB1YmxpYy5oaV9kZWNvZGU6IERFTEVURTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJd OjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisoMjEgcm93cykKKworU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworRFJPUCBUQUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvbWVzb24uYnVpbGQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVzb24uYnVpbGQK aW5kZXggYWM2NTU4NTNkMjYuLjkxNzY1Y2EwZTcyIDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21l c29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICdzdGF0cycs CiAgICAgICAndHdvcGhhc2UnLAogICAgICAgJ3R3b3BoYXNlX3N0cmVhbScsCisgICAgICAn aG90X2luZGV4ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsKICAgICAgICct LXRlbXAtY29uZmlnJywgZmlsZXMoJ2xvZ2ljYWwuY29uZicpLApkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgYi9jb250cmliL3Rlc3Rf ZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDVkN2QwOTFiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApAQCAtMCwwICsxLDI5IEBACist LSBMb2dpY2FsIGRlY29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRl eGVkIHVwZGF0ZSBpcyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBs ZXZlbCAodGhlIG5ldyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11 c3QgZGVjb2RlIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBj aGFpbiBvZgorLS0gSE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZ IEZVTEwgc28gdGhlIGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBi b3RoIGJlIGNoZWNrZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CisKK1NFTEVD VCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgVEFCTEUgaGlfZGVj b2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOwor Q1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9OIGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJM RSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyBoaV9k ZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0tIGVhY2ggdXBkYXRlIGNoYW5nZXMgb25l IGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlzIEhPVC1pbmRleGVkCitVUERBVEUgaGlf ZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQg YiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFuZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRl bGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJPTSBoaV9k ZWNvZGUgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwKKyAgICAgICAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKK1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworRFJPUCBU QUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEzOTE3Li40Yzlh YmE3MmJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTg3MjcsNiArODcyNywyMiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJob3RpbmRleGVkb25hcHBseTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBHYXRpbmcgbW9kZSBm b3IgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBDb3JyZXNwb25kcyB0byB0aGUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBseTwv bGl0ZXJhbD48L2xpbms+CisgICAgICAgc3Vic2NyaXB0aW9uIG9wdGlvbjoKKyAgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+bzwvbGl0 ZXJhbD4gPSBvZmY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJh PjxsaXRlcmFsPnM8L2xpdGVyYWw+ID0gc3Vic2V0X29ubHkgKGRlZmF1bHQpPC9wYXJhPjwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5hPC9saXRlcmFs PiA9IGFsd2F5czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzZXJ2ZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCA4ZDY0NzQ0Mzc1YS4uY2NjZTVjNzNhNDQgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjk2LDggKzI5NiwxMSBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC10d28tcGhhc2UiPjxsaXRlcmFsPnR3 b19waGFzZTwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxsaXRl cmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsg bGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50 aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFs PjwvbGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9u LXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2 ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LCBhbmQKLSAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3Rp bmF0aW9uIj48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9s aW5rPi4KKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFy YW1zLXdpdGgtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjxsaXRlcmFsPndhbF9yZWNlaXZlcl90 aW1lb3V0PC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+ PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4sIGFu ZAorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMt d2l0aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBw bHk8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIEZvciA8bGl0ZXJhbD5ob3RfaW5kZXhlZF9v bl9hcHBseTwvbGl0ZXJhbD4sIHRoZSBuZXcgdmFsdWUgdGFrZXMgZWZmZWN0CisgICAgICBh dCB0aGUgYXBwbHkgd29ya2VyJ3MgbmV4dCBjYXRhbG9nIHJlbG9hZC4KICAgICAgIE9ubHkg YSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNl PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDgxZmJmMzQ4N2E0Li4wZDU5Zjg1N2JiMyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTY1MSw2 ICs2NTEsNjEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgIDwvcGFy YT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0 aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmhvdF9p bmRleGVkX29uX2FwcGx5PC9saXRlcmFsPiAoPHR5cGU+dGV4dDwvdHlwZT4pPC90ZXJtPgor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDb250cm9s cyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24ncyBhcHBseSB3b3JrZXIgbWF5IHRha2UgdGhl CisgICAgICAgICAgSE9ULWluZGV4ZWQgdXBkYXRlIHBhdGggd2hlbiBhbiA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+IHJlcGxpY2F0ZWQKKyAgICAgICAgICBmcm9tIHRoZSBwdWJsaXNo ZXIgdG91Y2hlcyBhbiBpbmRleGVkIGF0dHJpYnV0ZS4gIEJlY2F1c2UgdGhlCisgICAgICAg ICAgc3Vic2NyaWJlcidzIGluZGV4IHNldCBtYXkgZGlmZmVyIGZyb20gdGhlIHB1Ymxpc2hl cidzLCBhbgorICAgICAgICAgIHVuY29uc3RyYWluZWQgSE9ULWluZGV4ZWQgZGVjaXNpb24g b24gdGhlIGFwcGx5IHBhdGggY2FuIHByb2R1Y2UgYQorICAgICAgICAgIGhlYXAgY2hhaW4g d2hvc2UgaW5kZXggc3RhdGUgZGlzYWdyZWVzIHdpdGggdGhlIHVwc3RyZWFtIHJvdy4gIFRo ZQorICAgICAgICAgIG9wdGlvbiByZXN0cmljdHMgd2hlbiB0aGUgYXBwbHkgd29ya2VyIGlz IGFsbG93ZWQgdG8gdGFrZSB0aGF0IHBhdGguCisgICAgICAgICA8L3BhcmE+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBBY2NlcHRlZCB2YWx1ZXMgYXJlOgorICAgICAgICAgIDx2 YXJpYWJsZWxpc3Q+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8 dGVybT48bGl0ZXJhbD5vZmY8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBGb3JjZSBub24tSE9U IG9uIGFwcGx5IHdoZW5ldmVyIHRoZSBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZAorICAg ICAgICAgICAgICBhdHRyaWJ1dGUgYmV5b25kIHRoZSBwcmltYXJ5IGtleS4gIFRoaXMgbWF0 Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgICAgICAgICAgICAgIHByZS1leGlzdGluZyBiZWhh dmlvdXIuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5zdWJzZXRfb25seTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICAgIEFsbG93IHRoZSBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhlIHN1 YnNjcmliZXIncworICAgICAgICAgICAgICBpbmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0 IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2gKKyAgICAgICAgICAgICAgaW5jbHVk ZXMgdGhlIG5vLXNlY29uZGFyeS1pbmRleCBjYXNlKS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQg YW5kCisgICAgICAgICAgICAgIGNhcHR1cmVzIHRoZSBjb21tb24gcmVwbGljYXRpb24tcmVh ZHkgc2NoZW1hIHNoYXBlIHdoaWxlIHN0YXlpbmcKKyAgICAgICAgICAgICAgc2FmZSB3aGVu IHRoZSBzdWJzY3JpYmVyIGFkZHMgaW5kZXhlcyB0aGUgcHVibGlzaGVyIGRvZXMgbm90Cisg ICAgICAgICAgICAgIGhhdmUuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5hbHdheXM8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5 IG9uIGFwcGx5LiAgVGhlIG9wZXJhdG9yCisgICAgICAgICAgICAgIHRha2VzIHJlc3BvbnNp YmlsaXR5IGZvciBrZWVwaW5nIHRoZSBzdWJzY3JpYmVyJ3MgaW5kZXhlZC1hdHRyCisgICAg ICAgICAgICAgIHNldCBjb21wYXRpYmxlIHdpdGggdGhlIHB1Ymxpc2hlcidzOyBkaXZlcmdl bnQgc2NoZW1hcyBjYW4KKyAgICAgICAgICAgICAgcHJvZHVjZSBzcHVyaW91cyBkdXBsaWNh dGUta2V5IGNvbmZsaWN0cyBmb3Igc3Vic2VxdWVudAorICAgICAgICAgICAgICBpbnNlcnRz IG9uIHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDwv dmFyaWFibGVsaXN0PgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKaW5kZXggM2JmYWM4YzBiMTguLjNkZmM2MTljYzQ4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtNDUwNCw2ICs0NTA0LDM2IEBAIEhlYXBVcGRhdGVIb3RB bGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzKQogCWFsbF9pZHhfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1h cE5vQ29weShyZWxhdGlvbiwKIAkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSU5E RVhFRCk7CiAKKwkvKgorCSAqIFRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFwcGx5IHBhdGgg Z2F0ZXMgSE9ULWluZGV4ZWQgdXBkYXRlcyBvbiB0aGUKKwkgKiBwZXItc3Vic2NyaXB0aW9u IGhvdF9pbmRleGVkX29uX2FwcGx5IG9wdGlvbi4gIEEgSE9ULWluZGV4ZWQgdXBkYXRlIG9m CisJICogYSByZXBsaWNhLWlkZW50aXR5IGF0dHJpYnV0ZSBsZWF2ZXMgYSBzdGFsZSBpbmRl eCBsZWFmOyB0aGUgYXBwbHkKKwkgKiB3b3JrZXIncyByZXBsaWNhLWlkZW50aXR5IGxvb2t1 cHMgY29wZSB3aXRoIHRoYXQgKHNlZQorCSAqIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5k ZXgpLCBidXQgb25seSB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJlCisJICogYSBz dWJzZXQgb2YgdGhlIHJlcGxpY2EgaWRlbnRpdHkuICAib2ZmIiBkaXNxdWFsaWZpZXMgd2hl bmV2ZXIgdGhlCisJICogc3Vic2NyaWJlciBoYXMgYW55IGluZGV4ZWQgYXR0cmlidXRlIGJl eW9uZCBpdHMgUEs7ICJzdWJzZXRfb25seSIgKHRoZQorCSAqIGRlZmF1bHQpIHJlcXVpcmVz IHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdG8gYmUgYSBzdWJzZXQgb2YgdGhlIFBLOworCSAq ICJhbHdheXMiIGFwcGxpZXMgbm8gYXBwbHktcGF0aCBnYXRpbmcuCisJICovCisJaWYgKElz TG9naWNhbFdvcmtlcigpKQorCXsKKwkJY2hhcgkJbW9kZSA9IEdldEhvdEluZGV4ZWRBcHBs eU1vZGUoKTsKKwkJY29uc3QgQml0bWFwc2V0ICAqcGtfYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJICBJTkRFWF9BVFRS X0JJVE1BUF9QUklNQVJZX0tFWSk7CisKKwkJaWYgKG1vZGUgPT0gTE9HSUNBTFJFUF9IT1Rf SU5ERVhFRF9PRkYpCisJCXsKKwkJCWlmICghYm1zX2VxdWFsKGFsbF9pZHhfYXR0cnMsIHBr X2F0dHJzKSkKKwkJCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CisJCX0KKwkJ ZWxzZSBpZiAobW9kZSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZKQor CQl7CisJCQlpZiAoIWJtc19pc19zdWJzZXQoYWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQor CQkJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKwkJfQorCQkvKiBMT0dJQ0FM UkVQX0hPVF9JTkRFWEVEX0FMV0FZUzogbm8gYXBwbHktcGF0aCBnYXRpbmcuICovCisJfQor CiAJLyoKIAkgKiBTeXN0ZW0gY2F0YWxvZ3Mga2VlcCBjbGFzc2ljIEhPVCAoYW4gVVBEQVRF IHRvdWNoaW5nIG5vIG5vbi1zdW1tYXJpemluZwogCSAqIGluZGV4ZWQgYXR0cmlidXRlIGFs cmVhZHkgcmV0dXJuZWQgSEVBUF9IRUFQX09OTFlfVVBEQVRFIGFib3ZlKSwgYnV0IGRvCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCAyMDY4ZTAzYzU3MS4u YjA2NWE3YmUyNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpA QCAtMTMzLDYgKzEzMyw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wgbWlz c2luZ19vaywgYm9vbCBjb25uaW5mb19uZWVkZWQsCiAJc3ViLT5tYXhyZXRlbnRpb24gPSBz dWJmb3JtLT5zdWJtYXhyZXRlbnRpb247CiAJc3ViLT5yZXRlbnRpb25hY3RpdmUgPSBzdWJm b3JtLT5zdWJyZXRlbnRpb25hY3RpdmU7CiAJc3ViLT5jb25mbGljdGxvZ3JlbGlkID0gc3Vi Zm9ybS0+c3ViY29uZmxpY3Rsb2dyZWxpZDsKKwlzdWItPmhvdGluZGV4ZWRvbmFwcGx5ID0g c3ViZm9ybS0+c3ViaG90aW5kZXhlZG9uYXBwbHk7CiAKIAlpZiAoY29ubmluZm9fbmVlZGVk KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAwMmM4YTA0 OWEzMi4uOWY1NDVmZDI2NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKQEAgLTE1NDIsNiArMTU0Miw3IEBAIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBz dWJza2lwbHNuLCBzdWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAg ICAgc3ViYmluYXJ5LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVv bmVyciwKIAkJCSAgc3VicGFzc3dvcmRyZXF1aXJlZCwgc3VicnVuYXNvd25lciwgc3ViZmFp bG92ZXIsCiAgICAgICAgICAgICAgIHN1YnJldGFpbmRlYWR0dXBsZXMsIHN1Ym1heHJldGVu dGlvbiwgc3VicmV0ZW50aW9uYWN0aXZlLAorICAgICAgICAgICAgICBzdWJob3RpbmRleGVk b25hcHBseSwKICAgICAgICAgICAgICAgc3Vic2VydmVyLCBzdWJjb25mbGljdGxvZ3JlbGlk LCBzdWJjb25mbGljdGxvZ2Rlc3QsIHN1YnNsb3RuYW1lLAogICAgICAgICAgICAgICBzdWJz eW5jY29tbWl0LCBzdWJ3YWxyY3Z0aW1lb3V0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdp bikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDQyOTJlN2ZiOGY0Li5iZjlkYmEzZjRl NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODIs NiArODIsNyBAQAogI2RlZmluZSBTVUJPUFRfTFNOCQkJCQkweDAwMDIwMDAwCiAjZGVmaW5l IFNVQk9QVF9PUklHSU4JCQkJMHgwMDA0MDAwMAogI2RlZmluZSBTVUJPUFRfQ09ORkxJQ1Rf TE9HX0RFU1QJMHgwMDA4MDAwMAorI2RlZmluZSBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQ TFkJMHgwMDEwMDAwMAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcgaGFzICdiaXRzJyBzZXQg Ki8KICNkZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChiaXRzKSkgPT0gKGJp dHMpKQpAQCAtMTEzLDYgKzExNCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlDb25m bGljdExvZ0Rlc3QgY29uZmxpY3Rsb2dkZXN0OwogCVhMb2dSZWNQdHIJbHNuOwogCWNoYXIJ ICAgKndhbF9yZWNlaXZlcl90aW1lb3V0OworCWNoYXIJCWhvdGluZGV4ZWRvbmFwcGx5Owog fSBTdWJPcHRzOwogCiAvKgpAQCAtMjA3LDYgKzIwOSw4IEBAIHBhcnNlX3N1YnNjcmlwdGlv bl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQlv cHRzLT5vcmlnaW4gPSBwc3RyZHVwKExPR0lDQUxSRVBfT1JJR0lOX0FOWSk7CiAJaWYgKElz U2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpKQogCQlvcHRz LT5jb25mbGljdGxvZ2Rlc3QgPSBDT05GTElDVF9MT0dfREVTVF9MT0c7CisJaWYgKElzU2V0 KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkpKQorCQlvcHRz LT5ob3RpbmRleGVkb25hcHBseSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09O TFk7CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25z KQpAQCAtNDU5LDYgKzQ2MywzMCBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCW9wdHMtPmNvbmZsaWN0 bG9nZGVzdCA9IEdldENvbmZsaWN0TG9nRGVzdCh2YWwpOwogCQkJb3B0cy0+c3BlY2lmaWVk X29wdHMgfD0gU1VCT1BUX0NPTkZMSUNUX0xPR19ERVNUOwogCQl9CisJCWVsc2UgaWYgKElz U2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkpICYmCisJ CQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImhvdF9pbmRleGVkX29uX2FwcGx5IikgPT0g MCkKKwkJeworCQkJY2hhcgkgICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lm aWVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCQkJZXJyb3JDb25m bGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNpZmllZF9v cHRzIHw9IFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWTsKKwkJCXZhbCA9IGRlZkdldFN0 cmluZyhkZWZlbCk7CisKKwkJCWlmIChwZ19zdHJjYXNlY21wKHZhbCwgIm9mZiIpID09IDAp CisJCQkJb3B0cy0+aG90aW5kZXhlZG9uYXBwbHkgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVE X09GRjsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAic3Vic2V0X29ubHkiKSA9 PSAwKQorCQkJCW9wdHMtPmhvdGluZGV4ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5E RVhFRF9TVUJTRVRfT05MWTsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAiYWx3 YXlzIikgPT0gMCkKKwkJCQlvcHRzLT5ob3RpbmRleGVkb25hcHBseSA9IExPR0lDQUxSRVBf SE9UX0lOREVYRURfQUxXQVlTOworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBl cnJtc2coInVucmVjb2duaXplZCB2YWx1ZSBmb3Igc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBc IiVzXCI6IFwiJXNcIiIsCisJCQkJCQkJCSJob3RfaW5kZXhlZF9vbl9hcHBseSIsIHZhbCks CisJCQkJCQkgZXJyaGludCgiVmFsaWQgdmFsdWVzIGFyZSBcIm9mZlwiLCBcInN1YnNldF9v bmx5XCIsIGFuZCBcImFsd2F5c1wiLiIpKSk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNjk5LDcg KzcyNyw4IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RV UExFUyB8CiAJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAogCQkJCQkg IFNVQk9QVF9XQUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4gfAotCQkJCQkg IFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCk7CisJCQkJCSAgU1VCT1BUX0NPTkZMSUNUX0xP R19ERVNUIHwKKwkJCQkJICBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkpOwogCXBhcnNl X3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVk X29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC04NTMsNiArODgyLDggQEAgQ3JlYXRlU3Vic2Ny aXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJSW50MzJHZXREYXR1bShvcHRzLm1heHJldGVudGlvbik7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnJldGVudGlvbmFjdGl2ZSAtIDFdID0KIAkJQm9vbEdldERh dHVtKG9wdHMucmV0YWluZGVhZHR1cGxlcyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YmhvdGluZGV4ZWRvbmFwcGx5IC0gMV0gPQorCQlDaGFyR2V0RGF0dW0ob3B0cy5o b3RpbmRleGVkb25hcHBseSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNl cnZlciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShzZXJ2ZXJpZCk7CiAJaWYgKCFPaWRJc1Zh bGlkKHNlcnZlcmlkKSkKIAkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5p bmZvIC0gMV0gPQpAQCAtMTYyNCw3ICsxNjU1LDggQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJ ICBTVUJPUFRfTUFYX1JFVEVOVElPTl9EVVJBVElPTiB8CiAJCQkJCQkJICBTVUJPUFRfV0FM X1JFQ0VJVkVSX1RJTUVPVVQgfAogCQkJCQkJCSAgU1VCT1BUX09SSUdJTiB8Ci0JCQkJCQkJ ICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QpOworCQkJCQkJCSAgU1VCT1BUX0NPTkZMSUNU X0xPR19ERVNUIHwKKwkJCQkJCQkgIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJ CQlicmVhazsKIAogCQljYXNlIEFMVEVSX1NVQlNDUklQVElPTl9FTkFCTEVEOgpAQCAtMjAx MSw2ICsyMDQzLDEzIEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwg QWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQl9CiAJCQkJfQogCisJCQkJaWYg KElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBM WSkpCisJCQkJeworCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5k ZXhlZG9uYXBwbHkgLSAxXSA9CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5ob3RpbmRleGVk b25hcHBseSk7CisJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmhvdGlu ZGV4ZWRvbmFwcGx5IC0gMV0gPSB0cnVlOworCQkJCX0KKwogCQkJCXVwZGF0ZV90dXBsZSA9 IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwppbmRleCA3Nzk5MjY2YzYxNC4uNGUyYTJhYzk4ZWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtNDg0LDYgKzQ4NCwx NCBAQCBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwog U3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlvbiA9IE5VTEw7CiBzdGF0aWMgYm9vbCBNeVN1 YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CiAKKy8qCisgKiBDYWNoZSBvZiB0aGUgcGVyLXN1 YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBtb2RlLiAgVGhlIGFwcGx5IHdvcmtl cgorICogcmVmcmVzaGVzIHRoaXMgYWZ0ZXIgZXZlcnkgc3VjY2Vzc2Z1bCBsb2FkIG9mIE15 U3Vic2NyaXB0aW9uOyByZWFkZXJzCisgKiBvdXRzaWRlIHdvcmtlci5jIGdvIHRocm91Z2gg R2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpIHNvIHRoZXkgZG9uJ3QgbmVlZAorICogdmlzaWJp bGl0eSBpbnRvIHRoZSBTdWJzY3JpcHRpb24gc3RydWN0IG9yIHRoZSBhcHBseSB3b3JrZXIn cyBnbG9iYWxzLgorICovCitzdGF0aWMgY2hhciBob3RfaW5kZXhlZF9hcHBseV9tb2RlID0g TE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkY7CisKIHN0YXRpYyBMaXN0ICpvbl9jb21taXRf d2FrZXVwX3dvcmtlcnNfc3ViaWRzID0gTklMOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKQEAgLTUxNzEsNiArNTE3OSw5IEBAIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCkKIAlNZW1vcnlDb250ZXh0RGVsZXRlKE15U3Vic2NyaXB0aW9uLT5j eHQpOwogCU15U3Vic2NyaXB0aW9uID0gbmV3c3ViOwogCisJLyogUmVmcmVzaCB0aGUgY2Fj aGVkIEhPVC1pbmRleGVkIGFwcGx5IG1vZGUgZnJvbSB0aGUgbmV3IHR1cGxlLiAqLworCWhv dF9pbmRleGVkX2FwcGx5X21vZGUgPSBNeVN1YnNjcmlwdGlvbi0+aG90aW5kZXhlZG9uYXBw bHk7CisKIAkvKiBDaGFuZ2Ugc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUg dXNlcidzIHdpc2hlcyAqLwogCVNldENvbmZpZ09wdGlvbigic3luY2hyb25vdXNfY29tbWl0 IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsCiAJCQkJCVBHQ19CQUNLRU5ELCBQR0Nf U19PVkVSUklERSk7CkBAIC01ODQ0LDYgKzU4NTUsMTIgQEAgSW5pdGlhbGl6ZUxvZ1JlcFdv cmtlcih2b2lkKQogCiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CiAKKwkvKgorCSAq IENhY2hlIHRoZSBzdWJzY3JpcHRpb24ncyBIT1QtaW5kZXhlZCBhcHBseSBtb2RlIHNvIGl0 IGlzIGNoZWFwIHRvCisJICogY29uc3VsdCBmcm9tIHRoZSBoZWFwIGFjY2VzcyBtZXRob2Qg KHZpYSBHZXRIb3RJbmRleGVkQXBwbHlNb2RlKCkpLgorCSAqLworCWhvdF9pbmRleGVkX2Fw cGx5X21vZGUgPSBNeVN1YnNjcmlwdGlvbi0+aG90aW5kZXhlZG9uYXBwbHk7CisKIAlpZiAo IU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCkBAIC02MDgz LDYgKzYxMDAsMjIgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiAJcmV0dXJuIE15TG9naWNh bFJlcFdvcmtlciAhPSBOVUxMOwogfQogCisvKgorICogUmV0dXJuIHRoZSBjYWNoZWQgSE9U LWluZGV4ZWQgYXBwbHkgbW9kZSBvZiB0aGUgY3VycmVudCBsb2dpY2FsIHJlcGxpY2F0aW9u CisgKiB3b3JrZXIncyBzdWJzY3JpcHRpb24uCisgKgorICogQ2FsbGVycyBvdXRzaWRlIHdv cmtlci5jIChub3RhYmx5IGhlYXBhbS5jJ3MgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZSkgdXNl CisgKiB0aGlzIGFjY2Vzc29yIHRvIGF2b2lkIHB1bGxpbmcgaW4gd29ya2VyX2ludGVybmFs Lmggb3IgdGhlIFN1YnNjcmlwdGlvbgorICogc3RydWN0LiAgTm9uLWFwcGx5IHByb2Nlc3Nl cyBnZXQgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYsIHdoaWNoIGlzIHRoZQorICogY29u c2VydmF0aXZlIHZhbHVlOyBjYWxsZXJzIGFyZSBleHBlY3RlZCB0byBndWFyZCB3aXRoIElz TG9naWNhbFdvcmtlcigpCisgKiBmaXJzdCBmb3IgY2xhcml0eSwgYnV0IHRoZSBhY2Nlc3Nv ciBpcyBzYWZlIGVpdGhlciB3YXkuCisgKi8KK2NoYXIKK0dldEhvdEluZGV4ZWRBcHBseU1v ZGUodm9pZCkKK3sKKwlyZXR1cm4gaG90X2luZGV4ZWRfYXBwbHlfbW9kZTsKK30KKwogLyoK ICAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyPwogICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0ZDY2MGQxNGI0Yy4uYjc1 NGFmMTdjZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNTEzOCw2ICs1MTM4LDcgQEAgZ2V0U3Vi c2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3ViZmFpbG92ZXI7CiAJaW50 CQkJaV9zdWJyZXRhaW5kZWFkdHVwbGVzOwogCWludAkJCWlfc3VibWF4cmV0ZW50aW9uOwor CWludAkJCWlfc3ViaG90aW5kZXhlZG9uYXBwbHk7CiAJaW50CQkJaSwKIAkJCQludHVwczsK IApAQCAtNTIzNSw2ICs1MjM2LDE0IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICIgJy0xJyBBUyBz dWJ3YWxyY3Z0aW1lb3V0LFxuIik7CiAKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx OTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiIHMuc3Vi aG90aW5kZXhlZG9uYXBwbHksXG4iKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1 ZXJ5LAorCQkJCQkJICAiICclYycgQVMgc3ViaG90aW5kZXhlZG9uYXBwbHksXG4iLAorCQkJ CQkJICBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZKTsKKwogCWlmIChmb3V0 LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgZnMuc3J2bmFtZSBBUyBzdWJzZXJ2ZXJuYW1lXG4iKTsKIAllbHNlCkBAIC01Mjc5 LDYgKzUyODgsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaV9zdWJm YWlsb3ZlciA9IFBRZm51bWJlcihyZXMsICJzdWJmYWlsb3ZlciIpOwogCWlfc3VicmV0YWlu ZGVhZHR1cGxlcyA9IFBRZm51bWJlcihyZXMsICJzdWJyZXRhaW5kZWFkdHVwbGVzIik7CiAJ aV9zdWJtYXhyZXRlbnRpb24gPSBQUWZudW1iZXIocmVzLCAic3VibWF4cmV0ZW50aW9uIik7 CisJaV9zdWJob3RpbmRleGVkb25hcHBseSA9IFBRZm51bWJlcihyZXMsICJzdWJob3RpbmRl eGVkb25hcHBseSIpOwogCWlfc3Vic2VydmVybmFtZSA9IFBRZm51bWJlcihyZXMsICJzdWJz ZXJ2ZXJuYW1lIik7CiAJaV9zdWJjb25uaW5mbyA9IFBRZm51bWJlcihyZXMsICJzdWJjb25u aW5mbyIpOwogCWlfc3Vic2xvdG5hbWUgPSBQUWZudW1iZXIocmVzLCAic3Vic2xvdG5hbWUi KTsKQEAgLTUzMjIsNiArNTMzMiw4IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VicmV0YWluZGVhZHR1cGxl cyksICJ0IikgPT0gMCk7CiAJCXN1YmluZm9baV0uc3VibWF4cmV0ZW50aW9uID0KIAkJCWF0 b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfc3VibWF4cmV0ZW50aW9uKSk7CisJCXN1YmluZm9b aV0uc3ViaG90aW5kZXhlZG9uYXBwbHkgPQorCQkJKihQUWdldHZhbHVlKHJlcywgaSwgaV9z dWJob3RpbmRleGVkb25hcHBseSkpOwogCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3N1 YmNvbm5pbmZvKSkKIAkJCXN1YmluZm9baV0uc3ViY29ubmluZm8gPSBOVUxMOwogCQllbHNl CkBAIC01NTk5LDYgKzU2MTEsMTEgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0 LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdWJpbmZvLT5zdWJt YXhyZXRlbnRpb24pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBtYXhfcmV0ZW50 aW9uX2R1cmF0aW9uID0gJWQiLCBzdWJpbmZvLT5zdWJtYXhyZXRlbnRpb24pOwogCisJaWYg KHN1YmluZm8tPnN1YmhvdGluZGV4ZWRvbmFwcGx5ID09IExPR0lDQUxSRVBfSE9UX0lOREVY RURfT0ZGKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgaG90X2luZGV4ZWRf b25fYXBwbHkgPSBvZmYiKTsKKwllbHNlIGlmIChzdWJpbmZvLT5zdWJob3RpbmRleGVkb25h cHBseSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX0FMV0FZUykKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gYWx3YXlzIik7CisK IAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMiLCBm bXRJZChzdWJpbmZvLT5zdWJzeW5jY29tbWl0KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDVh NjcyNmQ4YjEyLi5lM2U3NDAxZGYwOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC03MjIsNiArNzIy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1N1YnNjcmlwdGlvbkluZm8KIAlib29sCQlzdWJmYWls b3ZlcjsKIAlib29sCQlzdWJyZXRhaW5kZWFkdHVwbGVzOwogCWludAkJCXN1Ym1heHJldGVu dGlvbjsKKwljaGFyCQlzdWJob3RpbmRleGVkb25hcHBseTsKIAljaGFyCSAgICpzdWJzZXJ2 ZXJuYW1lOwogCWNoYXIJICAgKnN1YmNvbm5pbmZvOwogCWNoYXIJICAgKnN1YnNsb3RuYW1l OwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYwppbmRleCBmZWY4NmI0Y2NhMy4uYWIzZGE2NGNiY2IgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CkBAIC02ODcwLDcgKzY4NzAsNyBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0 LnBvcHQ7CiAJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0JZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OworCWZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlpbml0 UFFFeHBCdWZmZXIoJmJ1Zik7CiAKQEAgLTY5NDMsNiArNjk0MywxNCBAQCBkZXNjcmliZVN1 YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCQkJCQkJ CSAgIiwgc3VibWF4cmV0ZW50aW9uIEFTIFwiJXNcIlxuIiwKIAkJCQkJCQkgIGdldHRleHRf bm9vcCgiTWF4IHJldGVudGlvbiBkdXJhdGlvbiIpKTsKIAorCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJCQkgICIsIChDQVNFIHN1YmhvdGluZGV4ZWRvbmFwcGx5XG4iCisJ CQkJCQkJICAiICAgIFdIRU4gIiBDcHBBc1N0cmluZzIoTE9HSUNBTFJFUF9IT1RfSU5ERVhF RF9PRkYpICIgVEhFTiAnb2ZmJ1xuIgorCQkJCQkJCSAgIiAgICBXSEVOICIgQ3BwQXNTdHJp bmcyKExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpICIgVEhFTiAnc3Vic2V0 X29ubHknXG4iCisJCQkJCQkJICAiICAgIFdIRU4gIiBDcHBBc1N0cmluZzIoTE9HSUNBTFJF UF9IT1RfSU5ERVhFRF9BTFdBWVMpICIgVEhFTiAnYWx3YXlzJ1xuIgorCQkJCQkJCSAgIiAg IEVORCkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJIT1QtaW5kZXhl ZCBvbiBhcHBseSIpKTsKKwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkg ICIsIHN1YnJldGVudGlvbmFjdGl2ZSBBUyBcIiVzXCJcbiIsCiAJCQkJCQkJICBnZXR0ZXh0 X25vb3AoIlJldGVudGlvbiBhY3RpdmUiKSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL2NhdHZlcnNpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5o CmluZGV4IGJlMzZjYTk3OTAzLi5jMmVhMGFkY2JkNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2 ZXJzaW9uLmgKQEAgLTU3LDYgKzU3LDkgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4g Ki8KKy8qIFhYWCBidW1wIGNhdHZlcnNpb24gLS0gdGhpcyBjb21taXQgYWRkcyBhIGNhdGFs b2cgY29sdW1uCisgKiAoc3ViaG90aW5kZXhlZG9uYXBwbHkpIGFuZCB0b3VjaGVzIHBnX3N1 YnNjcmlwdGlvbjsgdGhlIGNvbW1pdHRlcgorICogc2V0cyB0aGUgcmVhbCB2YWx1ZSBhdCBj b21taXQgdGltZSB0byBhdm9pZCBuZWVkbGVzcyByZWJhc2UgY2h1cm4uICovCiAjZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDcwNzIKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA2NWNlOGUxNDVmYi4uOWJlNTU2Yjg4NGYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtOTIsNiArOTIs MTAgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlv bklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAkJCQkJCQkJCSAqIGV4Y2VlZGVk IG1heF9yZXRlbnRpb25fZHVyYXRpb24sIHdoZW4KIAkJCQkJCQkJCSAqIGRlZmluZWQgKi8K IAorCWNoYXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwkvKiBQZXItc3Vic2NyaXB0aW9uIGdh dGluZyBvZiB0aGUgSE9ULQorCQkJCQkJCQkJCSAqIGluZGV4ZWQgYXBwbHkgcGF0aC4gIFNl ZQorCQkJCQkJCQkJCSAqIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb25zdGFudHMuICov CisKIAlPaWQJCQlzdWJzZXJ2ZXIgQktJX0xPT0tVUF9PUFQocGdfZm9yZWlnbl9zZXJ2ZXIp OwkvKiBJZiBjb25uZWN0aW9uIHVzZXMKIAkJCQkJCQkJCQkJCQkJCQkgKiBzZXJ2ZXIgKi8K IApAQCAtMTczLDYgKzE3Nyw5IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJ CQkJCQkJICogZXhjZWVkZWQgbWF4X3JldGVudGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJ CQkJICogZGVmaW5lZCAqLwogCU9pZAkJCWNvbmZsaWN0bG9ncmVsaWQ7CS8qIGNvbmZsaWN0 IGxvZyB0YWJsZSBPaWQgKi8KKwljaGFyCQlob3RpbmRleGVkb25hcHBseTsgLyogUGVyLXN1 YnNjcmlwdGlvbiBnYXRpbmcgb2YgdGhlCisJCQkJCQkJCQkgKiBIT1QtaW5kZXhlZCBhcHBs eSBwYXRoLiAgU2VlCisJCQkJCQkJCQkgKiBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEXyogY29u c3RhbnRzLiAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcg dG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0 aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5j aHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCkBAIC0yMjAsNiArMjI3LDI2 IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogICovCiAjZGVmaW5lIExPR0lDQUxS RVBfU1RSRUFNX1BBUkFMTEVMICdwJwogCisvKgorICogUGVyLXN1YnNjcmlwdGlvbiBnYXRp bmcgb2YgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBSZWNvcmRlZCBhcyBhCisgKiBz aW5nbGUtY2hhcmFjdGVyIGNvZGUgaW4gcGdfc3Vic2NyaXB0aW9uLnN1YmhvdGluZGV4ZWRv bmFwcGx5LgorICoKKyAqICAgJ28nIC0tIE9GRjogZm9yY2Ugbm9uLUhPVCBvbiBhcHBseSB3 aGVuZXZlciB0aGUgc3Vic2NyaWJlciBjYXJyaWVzIGFueQorICoJCSAgaW5kZXhlZCBhdHRy aWJ1dGUgYmV5b25kIHRoZSBwcmltYXJ5IGtleS4gIE1hdGNoZXMgdGhlIGNvbnNlcnZhdGl2 ZQorICoJCSAgYmVoYXZpb3VyIGJlZm9yZSB0aGlzIG9wdGlvbiB3YXMgaW50cm9kdWNlZC4K KyAqICAgJ3MnIC0tIFNVQlNFVF9PTkxZIChkZWZhdWx0IGZvciBmcmVzaGx5IGNyZWF0ZWQg c3Vic2NyaXB0aW9ucyk6IGFsbG93IHRoZQorICoJCSAgSE9ULWluZGV4ZWQgYXBwbHkgcGF0 aCB3aGVuIHRoZSBzdWJzY3JpYmVyJ3MgZnVsbCBpbmRleGVkLWF0dHIgc2V0IGlzCisgKgkJ ICBhIHN1YnNldCBvZiBpdHMgcHJpbWFyeS1rZXkgYXR0cnMgKHdoaWNoIGNvdmVycyB0aGUg bm8tc2Vjb25kYXJ5LQorICoJCSAgaW5kZXggY2FzZSBhcyB3ZWxsKS4gIFNhZmUgb24gbWF0 Y2hpbmcgc2NoZW1hczsgZmFsbHMgYmFjayB0byBub24tSE9UCisgKgkJICB3aGVuIHRoZSBz dWJzY3JpYmVyIGFkZHMgaW5kZXhlcyBiZXlvbmQgdGhlIHByaW1hcnkga2V5LgorICogICAn YScgLS0gQUxXQVlTOiB1bmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5IG9u IGFwcGx5LiAgVGhlCisgKgkJICBvcGVyYXRvciBhY2NlcHRzIHJlc3BvbnNpYmlsaXR5IGZv ciBrZWVwaW5nIHN1YnNjcmliZXIgYW5kIHB1Ymxpc2hlcgorICoJCSAgaW5kZXhlZC1hdHRy IHNldHMgY29tcGF0aWJsZS4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVE X09GRgkJCSdvJworI2RlZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZ CSdzJworI2RlZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX0FMV0FZUwkJJ2EnCisKICNl bmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAogZXh0ZXJuIFN1YnNj cmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDdkNzQ4YTI4 ZGE4Li5jOWRmN2QzMmYyZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaApAQCAtMjQsNiArMjQsMTQgQEAgZXh0ZXJuIHZvaWQgU2VxdWVuY2VTeW5jV29y a2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIo dm9pZCk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQp OwogCisvKgorICogQWNjZXNzb3IgZm9yIHRoZSBjYWNoZWQgaG90X2luZGV4ZWRfb25fYXBw bHkgbW9kZSBvZiB0aGUgY3VycmVudCBhcHBseQorICogd29ya2VyJ3Mgc3Vic2NyaXB0aW9u LiAgUmV0dXJucyBhIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb2RlIChzZWUKKyAqIGNh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgpLiAgTm9uLWFwcGx5IHByb2Nlc3NlcyBhbHdheXMg c2VlCisgKiBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRi4KKyAqLworZXh0ZXJuIGNoYXIg R2V0SG90SW5kZXhlZEFwcGx5TW9kZSh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgSGFuZGxlUGFy YWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNz UGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggZDIwMWFkNzY0ZjAuLmNjMWQ5YmJiMTQ2 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBA IC0xMzksMTggKzEzOSwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjQgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVQogV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFs dGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKyBy ZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAg ICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24g YXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVs ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBm ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29u bHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAw MDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjQgU0VUIChvcmlnaW4gPSBhbnkpOwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50 aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24g Ci0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAg ICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAg fCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVu dGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2 ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVn cmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIERS T1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0yMzcsMTAgKzIzNywxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jh cic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5n ICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAg IERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAg ICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBT ZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwg SE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91 dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgx IHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElD QVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0y NDksMTAgKzI0OSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNF VCAoc2xvdF9uYW1lID0gJ25ld25hbWUnKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChwYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlKTsKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChydW5fYXNfb3duZXIgPSB0cnVlKTsKIFxk UnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNh dGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IGYgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAg fCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQ YXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8 IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5k ZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICAgICAgfCB0 ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJz Y3JpcHRpb24KICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHBhc3N3b3JkX3JlcXVpcmVkID0gdHJ1ZSk7CkBAIC0yNjgsMTAgKzI2OCwxMCBA QCBFUlJPUjogIHVucmVjb2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRl X3Nsb3QiCiAtLSBvawogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQ IChsc24gPSAnMC8xMjM0NScpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFj dGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAg IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAg ICAgICAgICAgIHwgMC8wMDAxMjM0NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlv biAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVu dGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2 ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFy YWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJz ZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8 IDAvMDAwMTIzNDUgfCB0ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiAtLSBvayAtIHdp dGggbHNuID0gTk9ORQpAQCAtMjgwLDEwICsyODAsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlk IFdBTCBsb2NhdGlvbiAoTFNOKTogMC8wCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQ YXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8 IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRp b24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1Ymxp Y2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMg b3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXgg cmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24g YWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24g ICAgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8 IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIEJFR0lO OwpAQCAtMzE5LDEwICszMTksMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1Yl9mb28gU0VUICh3YWxfcmVjZWl2ZXJfdGltZW91dCA9ICc4MHMnKTsKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWJfZm9vIFNFVCAod2FsX3JlY2VpdmVyX3RpbWVv dXQgPSAnZm9vYmFyJyk7CiBFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAi d2FsX3JlY2VpdmVyX3RpbWVvdXQiOiAiZm9vYmFyIgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAg fCBmICAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVz dCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisg cmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwg dGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0 aGUgcmVzdCBzaW1wbGUKQEAgLTM1MSwxOSArMzUxLDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMg bm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVz dCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vi c2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1Ymxp Y2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVu dGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNr aXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAg ICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAg ICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQg dHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5 IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVz Y3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgcGFyYWxsZWwgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo YmluYXJ5ID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1 YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjsKQEAgLTM3NSwyNyArMzc1LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcg UFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNv bm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0 aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9u cy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZh aWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBk dXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0 ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFt aW5nID0gcGFyYWxsZWwpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQg b24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExT TiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9v bmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwg VHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29y ZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFp biBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0 aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRp b24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAg ICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1Ymxp Y2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC00MTAsMTAgKzQxMCwxMCBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVz dHB1YjIgV0lUSCAocmVmcgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBB REQgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZnJlc2ggPSBmYWxz ZSk7CiBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViMSIgaXMgYWxyZWFkeSBpbiBzdWJz Y3JpcHRpb24gInJlZ3Jlc3NfdGVzdHN1YiIKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERl c2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAg ICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGlj YXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYg ICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0 aW9uIHVzZWQgbW9yZSB0aGFuIG9uY2UKQEAgLTQyOCwxMCArNDI4LDEwIEBAIEVSUk9SOiAg cHVibGljYXRpb24gInRlc3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNz X3Rlc3RzdWIiCiAtLSBvayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1 YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQg dHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNl aXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2Vy dmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhP VC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQg fCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAg fCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWI7CkBAIC00NjcsMTkgKzQ2NywxOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNj cmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNh dGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogLS0gd2UgY2FuIGFsdGVyIHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBl bmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFt aW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8 IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtNDg5LDEwICs0ODksMTAgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQs IGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxl IHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJl c2ggcHVibGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQg b24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExT TiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9v bmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTUwNSwxOCArNTA1LDE4IEBAIENSRUFU RSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVh dGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0 aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVu YWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byBy ZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBh c3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwg UmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRl eGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFy YWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJz ZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwg MC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTUy OSwxMCArNTI5LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIg dGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVu dGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9u IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJl Y2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBA IC01NDksMTAgKzU0OSwxMCBAQCBOT1RJQ0U6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGlz IGluZWZmZWN0aXZlIHdoZW4gcmV0YWluX2RlYWRfdHVwbGVzIGlzIGRpc2FibAogV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFs dGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBS ZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlw dGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgIDEwMDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3Rp dmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAxMDAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0g ZmFpbCAtIG1heF9yZXRlbnRpb25fZHVyYXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUKQEAg LTU2MSwxMCArNTYxLDEwIEBAIEVSUk9SOiAgbWF4X3JldGVudGlvbl9kdXJhdGlvbiBjYW5u b3QgYmUgbmVnYXRpdmUKIC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAobWF4X3JldGVudGlvbl9kdXJhdGlvbiA9IDApOwogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBlNzFlOTVjNjI5Ny4uZjdlZTViODQ0OWEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ4LDYgKzQ4LDggQEAgdGVz dHMgKz0gewogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5wbCcsCiAgICAgICAndC8wMzdfZXhj ZXB0LnBsJywKICAgICAgICd0LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbCcsCisg ICAgICAndC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwnLAorICAgICAgJ3QvMDQwX2hvdF9p bmRleGVkX3JlcGxpY2FfaWRlbnRpdHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAog ICAgIF0sCiAgIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlf aG90X2luZGV4ZWRfYXBwbHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfaG90 X2luZGV4ZWRfYXBwbHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmZlMTA4ZTZmMDgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDM5X2hvdF9pbmRleGVkX2FwcGx5LnBsCkBAIC0wLDAgKzEsNDE2IEBACisKKyMg Q29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorCisjIFBlci1zdWJzY3JpcHRpb24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uOiBw YXJzZXIsIGNhdGFsb2cgcm91bmQtdHJpcCwKKyMgQUxURVIgYmVoYXZpb3VyLCBhbmQgYXBw bHktcGF0aCBnYXRpbmcgdW5kZXIgZWFjaCBvZiB0aGUgdGhyZWUgbW9kZXMuCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitteSAkcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNo ZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJHB1Ymxpc2hlci0+ c3RhcnQ7CisKK215ICRzdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7Ciskc3Vic2NyaWJlci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5z dGFydDsKKworbXkgJHB1Yl9jb25uaW5mbyA9ICRwdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRi bmFtZT1wb3N0Z3Jlcyc7CisKKyMgLS0tIFNjaGVtYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHRhYl9leHRy YSBoYXMgYW4gZXh0cmEgYnRyZWUgaW5kZXggYmV5b25kIHRoZSBwcmltYXJ5IGtleSBvbiB0 aGUKKyMgc3Vic2NyaWJlciBzaWRlOyB0aGF0IGlzIHRoZSBzY2hlbWEgc2hhcGUgdGhhdCBz dWJzZXRfb25seSBtdXN0IGRlbW90ZQorIyB0byBub24tSE9UIG9uIGFwcGx5IGJ1dCBhbHdh eXMgbXVzdCBsZXQgdGhyb3VnaC4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9leHRyYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXls b2FkIGludCwgdGFnIHRleHQpfSk7CisKKyMgdGFiX3BrIGhhcyBvbmx5IHRoZSBwcmltYXJ5 IGtleTsgaW5kZXhlZC1hdHRyIHNldCBpcyBhIHN1YnNldCBvZiB0aGUgUEsKKyMgYXR0cnMs IHNvIHN1YnNldF9vbmx5IGFuZCBhbHdheXMgc2hvdWxkIGJvdGggYWxsb3cgSE9ULWluZGV4 ZWQgb24gYXBwbHkuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NS RUFURSBUQUJMRSB0YWJfcGsgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9hZCBpbnQpfSk7 CisKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YiBGT1IgVEFCTEUgdGFiX2V4dHJhLCB0YWJfcGt9KTsKKworIyBTdWJzY3Jp YmVyIG1pcnJvcnMgYm90aCB0YWJsZXMuICB0YWJfZXh0cmEgaGFzIHRoZSBleHRyYSBzZWNv bmRhcnkgaW5kZXgKKyMgb25seSBvbiB0aGUgc3Vic2NyaWJlciwgd2hpY2ggaXMgdGhlIHNj aGVtYS1kaXZlcmdlbmNlIGNhc2UgdGhlIG9wdGlvbgorIyBnYXRlcy4KKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfZXh0cmEgKGlk IGludCBQUklNQVJZIEtFWSwgcGF5bG9hZCBpbnQsIHRhZyB0ZXh0KX0pOworJHN1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIElOREVYIHRhYl9leHRyYV9w YXlsb2FkX2lkeCBPTiB0YWJfZXh0cmEocGF5bG9hZCl9KTsKKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfcGsgKGlkIGludCBQUklN QVJZIEtFWSwgcGF5bG9hZCBpbnQpfSk7CisKKyMgLS0tIFBhcnNlciAvIGNhdGFsb2cgY2hl Y2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg RGVmYXVsdCBvbiBmcmVzaCBzdWJzY3JpcHRpb24gaXMgJ3MnIChzdWJzZXRfb25seSkuCisk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJ UFRJT04gc3ViX2RlZmF1bHQKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQ VUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0g Tk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3JlYXRlX3Nsb3QgPSBmYWxzZSk7 Cit9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VM RUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hF UkUgc3VibmFtZSA9ICdzdWJfZGVmYXVsdCd9KSwKKwkncycsCisJJ2ZyZXNoIHN1YnNjcmlw dGlvbiBkZWZhdWx0cyB0byBzdWJzZXRfb25seScpOworCisjIEV4cGxpY2l0ICdhbHdheXMn IGlzIHN0b3JlZCBhcyAnYScuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5c19wCisJICBDT05ORUNUSU9O ICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViCisJICBXSVRIIChjb25uZWN0 ID0gZmFsc2UsIHNsb3RfbmFtZSA9IE5PTkUsIGVuYWJsZWQgPSBmYWxzZSwKKwkgICAgICAg IGNyZWF0ZV9zbG90ID0gZmFsc2UsIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycp OworfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NF TEVDVCBzdWJob3RpbmRleGVkb25hcHBseSBGUk9NIHBnX3N1YnNjcmlwdGlvbgorCQkgIFdI RVJFIHN1Ym5hbWUgPSAnc3ViX2Fsd2F5c19wJ30pLAorCSdhJywKKwknQ1JFQVRFIHdpdGgg aG90X2luZGV4ZWRfb25fYXBwbHkgPSBhbHdheXMgc3RvcmVzIGEnKTsKKworIyBBTFRFUiBT VUJTQ1JJUFRJT04gU0VUIHVwZGF0ZXMgdGhlIGNvbHVtbi4KKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe0FMVEVSIFNVQlNDUklQVElPTiBzdWJfZGVmYXVsdCBT RVQgKGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ29mZicpfSk7CitpcyggJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRleGVkb25hcHBs eSBGUk9NIHBnX3N1YnNjcmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAnc3ViX2RlZmF1 bHQnfSksCisJJ28nLAorCSdBTFRFUiBTVUJTQ1JJUFRJT04gU0VUIGhvdF9pbmRleGVkX29u X2FwcGx5ID0gb2ZmIHN0b3JlcyBvJyk7CisKKyMgVW5rbm93biB2YWx1ZXMgYXJlIHJlamVj dGVkLgorbXkgKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJHN1YnNjcmliZXItPnBzcWwo J3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfYm9ndXMKKwkgIENP Tk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEgg KGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAor CSAgICAgICAgY3JlYXRlX3Nsb3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAn Ym9ndXMnKTsKK30pOworaXNudCgkcmV0LCAwLCAnYm9ndXMgaG90X2luZGV4ZWRfb25fYXBw bHkgdmFsdWUgaXMgcmVqZWN0ZWQnKTsKK2xpa2UoJHN0ZGVyciwKKwkgcXIvdW5yZWNvZ25p emVkIHZhbHVlIGZvciBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICJob3RfaW5kZXhlZF9vbl9h cHBseSIvLAorCSAnYm9ndXMgaG90X2luZGV4ZWRfb25fYXBwbHkgdmFsdWUgcmVwb3J0cyB0 aGUgZXhwZWN0ZWQgZXJyb3InKTsKKworIyBEcm9wIHRoZSBwbGFjZWhvbGRlciBzdWJzY3Jp cHRpb25zIHNvIHdlIGNhbiByZWJ1aWxkIHdpdGggcmVhbCBzbG90cy4KKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0 Jyk7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQ VElPTiBzdWJfYWx3YXlzX3AnKTsKKworIyAtLS0gQXBwbHktcGF0aCBiZWhhdmlvdXIgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmUt cG9wdWxhdGUgYm90aCBzaWRlcyBpZGVudGljYWxseSBzbyB3ZSBjYW4gdXNlIGNvcHlfZGF0 YT1mYWxzZSBhbmQKKyMgYXZvaWQgZHVwbGljYXRlLWtleSBjb25mbGljdHMgd2hlbiB3ZSBy ZWNyZWF0ZSBzdWJzY3JpcHRpb25zIGFjcm9zcyB0aGUKKyMgdGhyZWUgdGVzdCBjYXNlcy4g IFdlIHVwZGF0ZSBub24tb3ZlcmxhcHBpbmcgaWQgcmFuZ2VzIHBlciBjYXNlIHNvIHRoZQor IyBwZ19zdGF0IGNvdW50ZXJzIHNlZ21lbnQgY2xlYW5seS4KKyRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJICBTRUxFQ1Qg ZywgMCwgJ3QnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsKKwkgIFNF TEVDVCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHN1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJ ICBTRUxFQ1QgZywgMCwgJ3QnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOwor JHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFi X3BrCisJICBTRUxFQ1QgZywgMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsK KworIyBIZWxwZXI6IHJlYWQgY291bnRlcnMgYW5kIHBvbGwgdXAgdG8gMTAgcyBmb3Igbl90 dXBfdXBkIHRvIHJlYWNoIGEKKyMgbWluaW11bSB0YXJnZXQgdmFsdWUgKHRoZSBhcHBseSB3 b3JrZXIgZmx1c2hlcyBwZ3N0YXQgYXN5bmNocm9ub3VzbHkpLgorc3ViIHBvbGxfY291bnRl cnMKK3sKKwlteSAoJG5vZGUsICR0YWJsZSwgJHVwZF90YXJnZXQpID0gQF87CisKKwlteSAk ZGVhZGxpbmUgPSB0aW1lKCkgKyAxMDsKKwlteSAkcm93ID0gJyc7CisJd2hpbGUgKDEpCisJ eworCQkkcm93ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJcXF7U0VMRUNU IGNvYWxlc2NlKG5fdHVwX3VwZCwgMCksCisJCQkgICAgICAgICAgY29hbGVzY2Uobl90dXBf aG90X3VwZCwgMCksCisJCQkgICAgICAgICAgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRf dXBkLCAwKQorCQkJICAgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUg PSAnJHRhYmxlJ30pOworCQlteSAoJHVwZCkgPSBzcGxpdCAvXHwvLCAkcm93OworCQlsYXN0 IGlmICgkdXBkICsgMCkgPj0gJHVwZF90YXJnZXQgfHwgdGltZSgpID49ICRkZWFkbGluZTsK KwkJdXNsZWVwKDEwMF8wMDApOworCX0KKwlteSAoJHVwZCwgJGhvdCwgJGhvdF9pZHgpID0g c3BsaXQgL1x8LywgJHJvdzsKKwlyZXR1cm4gKCR1cGQgKyAwLCAkaG90ICsgMCwgJGhvdF9p ZHggKyAwKTsKK30KKworIyBIZWxwZXI6IGZpcmUgVVBEQVRFcyB0aGF0IHRvdWNoIHRoZSBp bmRleGVkIHBheWxvYWQgY29sdW1uIG9uIGEgZ2l2ZW4KKyMgaWQgcmFuZ2UgYW5kIHJldHVy biB0aGUgZGVsdGFzIGluIChuX3R1cF91cGQsIG5fdHVwX2hvdF91cGQsCisjIG5fdHVwX2hv dF9pbmRleGVkX3VwZCkgb24gdGhlIHN1YnNjcmliZXIuCitzdWIgYXBwbHlfdXBkYXRlc19h bmRfcmVhZAoreworCW15ICgkdGFibGUsICRzdWJfbmFtZSwgJGlkX2xvLCAkaWRfaGkpID0g QF87CisKKwlteSAoJHVwZDAsICRob3QwLCAkaG90aWR4MCkgPQorCSAgcG9sbF9jb3VudGVy cygkc3Vic2NyaWJlciwgJHRhYmxlLCAwKTsKKworCWZvciBteSAkaSAoJGlkX2xvIC4uICRp ZF9oaSkKKwl7CisJCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJIlVQ REFURSAkdGFibGUgU0VUIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9ICRpIik7 CisJfQorCSRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJHN1Yl9uYW1lKTsKKworCW15 ICRuID0gJGlkX2hpIC0gJGlkX2xvICsgMTsKKwlteSAoJHVwZDEsICRob3QxLCAkaG90aWR4 MSkgPQorCSAgcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwgJHRhYmxlLCAkdXBkMCArICRu KTsKKwlub3RlKCIkdGFibGUgJHN1Yl9uYW1lICRpZF9sby4uJGlkX2hpOiBkbl91cGQ9Igor CQkgLiAoJHVwZDEgLSAkdXBkMCkgLiAiIGRob3Q9IiAuICgkaG90MSAtICRob3QwKQorCQkg LiAiIGRob3RpZHg9IiAuICgkaG90aWR4MSAtICRob3RpZHgwKSk7CisJcmV0dXJuICgkdXBk MSAtICR1cGQwLCAkaG90MSAtICRob3QwLCAkaG90aWR4MSAtICRob3RpZHgwKTsKK30KKwor IyBDYXNlIDE6IG9mZiwgc3Vic2NyaWJlci1vbmx5IHNlY29uZGFyeSBpbmRleC4gIEhPVC1p bmRleGVkIG11c3QgYmUKKyMgc3VwcHJlc3NlZCBvbiB0YWJfZXh0cmEuICBQbGFpbiBIT1Qg dXBkYXRlcyBhbHNvIHN0YXkgemVybyBiZWNhdXNlIGV2ZXJ5CisjIFVQREFURSB0b3VjaGVz IGBwYXlsb2FkYCB3aGljaCBpcyBpbmRleGVkIG9uIHRoZSBzdWJzY3JpYmVyLgorJHN1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9O IHN1Yl9vZmYKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElP TiBwdWIKKwkgIFdJVEggKHNsb3RfbmFtZSA9ICdzdWJfb2ZmX3Nsb3QnLCBjcmVhdGVfc2xv dCA9IHRydWUsCisJICAgICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdvZmYnLCBjb3B5 X2RhdGEgPSBmYWxzZSk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1 Yl9vZmYnKTsKKworbXkgKHVuZGVmLCB1bmRlZiwgJG9mZl9leHRyYV9ob3RpZHgpID0KKyAg YXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9vZmYnLCAxLCAyMCk7 Citpcygkb2ZmX2V4dHJhX2hvdGlkeCwgMCwKKyAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9 IG9mZjogbm8gSE9ULWluZGV4ZWQgdXBkYXRlcyBvbiB0YWJfZXh0cmEnKTsKKworJHN1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX29m ZicpOworCisjIENhc2UgMjogc3Vic2V0X29ubHkuICBPbiB0YWJfcGsgKG5vIHNlY29uZGFy eSBpbmRleCwgaW5kZXhlZC1hdHRyIHNldCBpcworIyBhIHN1YnNldCBvZiBQSyBhdHRycyks IGNsYXNzaWMgSE9UIG11c3QgZmlyZSBiZWNhdXNlIGBwYXlsb2FkYCBpcyBub3QKKyMgaW5k ZXhlZCB0aGVyZS4gIE9uIHRhYl9leHRyYSAoc3Vic2NyaWJlcidzIGBwYXlsb2FkYCBpbmRl eCBpcyBOT1QgY292ZXJlZAorIyBieSB0aGUgUEspLCB0aGUgYXBwbHkgd29ya2VyIG11c3Qg ZGVtb3RlIHRvIG5vbi1IT1QganVzdCBsaWtlICdvZmYnLgorJHN1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQK KwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkg IFdJVEggKHNsb3RfbmFtZSA9ICdzdWJfc3Vic2V0X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRy dWUsCisJICAgICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdzdWJzZXRfb25seScsIGNv cHlfZGF0YSA9IGZhbHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c3ViX3N1YnNldCcpOworCitteSAodW5kZWYsICRzc19wa19ob3QsICRzc19wa19ob3RpZHgp ID0KKyAgYXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX3BrJywgJ3N1Yl9zdWJzZXQnLCAx LCAyMCk7CitjbXBfb2soJHNzX3BrX2hvdCwgJz4nLCAwLAorCSAgICdob3RfaW5kZXhlZF9v bl9hcHBseSA9IHN1YnNldF9vbmx5OiBjbGFzc2ljIEhPVCBmaXJlcyBvbiB0YWJfcGsnKTsK KworbXkgKHVuZGVmLCB1bmRlZiwgJHNzX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRh dGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX3N1YnNldCcsIDIxLCA0MCk7Citpcygk c3NfZXh0cmFfaG90aWR4LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gc3Vic2V0 X29ubHk6IG5vIEhPVC1pbmRleGVkIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfc3Vic2V0Jyk7 CisKKyMgQ2FzZSAzOiBhbHdheXMuICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdp YmlsaXR5LiAgT24gdGFiX2V4dHJhCisjIHVwZGF0ZXMgdG91Y2hpbmcgdGhlIGluZGV4ZWQg cGF5bG9hZCBjb2x1bW4gc2hvdWxkIG5vdyBydW4gb24gdGhlCisjIEhPVC1pbmRleGVkIHBh dGg6IG5fdHVwX2hvdF9pbmRleGVkX3VwZCBtdXN0IGluY3JlYXNlLgorJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9h bHdheXMKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBw dWIKKwkgIFdJVEggKHNsb3RfbmFtZSA9ICdzdWJfYWx3YXlzX3Nsb3QnLCBjcmVhdGVfc2xv dCA9IHRydWUsCisJICAgICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBj b3B5X2RhdGEgPSBmYWxzZSk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J3N1Yl9hbHdheXMnKTsKKworbXkgKHVuZGVmLCB1bmRlZiwgJGFsX2V4dHJhX2hvdGlkeCkg PQorICBhcHBseV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX2Fsd2F5cycs IDQxLCA4MCk7CitjbXBfb2soJGFsX2V4dHJhX2hvdGlkeCwgJz4nLCAwLAorCSAgICdob3Rf aW5kZXhlZF9vbl9hcHBseSA9IGFsd2F5czogSE9ULWluZGV4ZWQgZmlyZXMgb24gdGFiX2V4 dHJhJyk7CisKKyMgQUxURVIgYmFjayB0byBvZmYgYW5kIHZlcmlmeSB0aGUgYXBwbHkgd29y a2VyIHBpY2tzIHVwIHRoZSBuZXcgbW9kZS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwlxe0FMVEVSIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzIFNFVCAoaG90X2lu ZGV4ZWRfb25fYXBwbHkgPSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdf c3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfYWx3YXlzJ30pLAorCSdv JywKKwknQUxURVIgc3ViX2Fsd2F5cyBTRVQgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBvZmYg cGVyc2lzdHMnKTsKKworIyBEcml2ZSBhbm90aGVyIGJhdGNoIG9mIHVwZGF0ZXMgYW5kIGNv bmZpcm0gbl90dXBfaG90X2luZGV4ZWRfdXBkIGRvZXMgTk9UCisjIGFkdmFuY2UgYWZ0ZXIg dGhlIHdvcmtlciByZXJlYWRzIHRoZSBjYXRhbG9nLgorbXkgKHVuZGVmLCB1bmRlZiwgJHBv c3RfYWx0ZXJfaG90aWR4KSA9CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRy YScsICdzdWJfYWx3YXlzJywgODEsIDEwMCk7CitpcygkcG9zdF9hbHRlcl9ob3RpZHgsIDAs CisgICAnQUxURVIgdG8gb2ZmIGZyZWV6ZXMgbl90dXBfaG90X2luZGV4ZWRfdXBkIGFmdGVy IHdvcmtlciByZXJlYWQnKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5cycpOworCisjIC0tLSBTdWJzY3JpYmVy IElOU0VSVC1hZnRlci1yZXBsaWNhdGVkLVVQREFURSBwZXIgbW9kZSAtLS0tLS0tLS0tLS0t LS0tLS0tCisjCisjIFZlcmlmeSB0aGF0IGEgc3Vic2NyaWJlciBJTlNFUlQgdXNpbmcgdGhl IE9MRCB2YWx1ZSBvZiBhIHJlcGxpY2F0ZWQKKyMgVVBEQVRFJ3MgaW5kZXhlZCBjb2x1bW4g c3VjY2VlZHMgd2l0aG91dCBhIHNwdXJpb3VzIHVuaXF1ZS12aW9sYXRpb24KKyMgdW5kZXIg ZWFjaCBhcHBseSBtb2RlLiAgVXNlIGEgZGVkaWNhdGVkIHRhYmxlICh0YWJfdWspIHNvIHRo ZSB1bmlxdWUKKyMgY29uc3RyYWludCBjYW4gYmUgZGVmaW5lZCB1cC1mcm9udCBhbmQgdGhl IHRlc3QgZG9lcyBub3QgY29sbGlkZSB3aXRoCisjIHByZS1wb3B1bGF0ZWQgcm93cyBmcm9t IHRoZSBhcHBseS1wYXRoIHNjZW5hcmlvcyBhYm92ZS4KKyMKKyMgUHVibGlzaGVyIHVwZGF0 ZXMgcm93ICR1cGRfaWQgY2hhbmdpbmcgcGF5bG9hZCBmcm9tIDAgdG8gOTk5LiAgVGhlCisj IHN1YnNjcmliZXIgdGhlbiBpbnNlcnRzIGEgZnJlc2ggcm93IHdpdGggcGF5bG9hZD0wICh0 aGUgcHJlLXVwZGF0ZQorIyB2YWx1ZSkuICBVbmRlciBhbGwgdGhyZWUgbW9kZXMgX2J0X2No ZWNrX3VuaXF1ZSdzIHJlY2hlY2sgb2YgdGhlCisjIGNvbmZsaWN0aW5nIHR1cGxlJ3MgbGl2 ZSBrZXkgbXVzdCByZWNvZ25pemUgdGhlIHN0YWxlIGxlYWYgZW50cnkgcG9pbnRpbmcKKyMg YXQgdGhlIGNoYWluIHJvb3QsIHNvIHRoZSBJTlNFUlQgc3VjY2VlZHMuCisKKyRwdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl91ayAoCisJ ICAgIGlkICAgICAgaW50IFBSSU1BUlkgS0VZLAorCSAgICBwYXlsb2FkIGludCwKKwkgICAg dGFnICAgICB0ZXh0LAorCSAgICBVTklRVUUgKHBheWxvYWQsIHRhZykpfSk7Ciskc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgK KwkgICAgaWQgICAgICBpbnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAg ICB0YWcgICAgIHRleHQsCisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRwdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7QUxURVIgUFVCTElDQVRJT04gcHVi IEFERCBUQUJMRSB0YWJfdWt9KTsKKworZm9yIG15ICRtb2RlICgnb2ZmJywgJ3N1YnNldF9v bmx5JywgJ2Fsd2F5cycpCit7CisJbXkgJGJhc2VfaWQgPSAoJG1vZGUgZXEgJ29mZicpID8g MQorCSAgICAgICAgICAgICAgOiAoJG1vZGUgZXEgJ3N1YnNldF9vbmx5JykgPyAxMDAgOiAy MDA7CisJbXkgJHVwZF9pZCAgPSAkYmFzZV9pZCArIDE7CisJbXkgJGluc19pZCAgPSAkYmFz ZV9pZCArIDI7CisKKwkjIFNlZWQgYSByb3cgdGhhdCB3ZSB3aWxsIFVQREFURSBvbiB0aGUg cHVibGlzaGVyIChwYXlsb2FkIHN0YXJ0cyBhdCAwKSwKKwkjIGFuZCBkcmFpbiB0aGUgYXBw bHkgZm9yIGl0IGJlZm9yZSBjaGFuZ2luZyBwYXlsb2FkLgorCSRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGFiX3VrIFZBTFVFUyAoJHVwZF9p ZCwgMCwgJ21vZGVfJG1vZGUnKSIpOworCisJJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwkJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfdWtfJG1vZGUKKwkJICBD T05ORUNUSU9OICckcHViX2Nvbm5pbmZvJworCQkgIFBVQkxJQ0FUSU9OIHB1YgorCQkgIFdJ VEggKHNsb3RfbmFtZSA9ICdzdWJfdWtfJHttb2RlfV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0 cnVlLAorCQkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJyRtb2RlJywgY29weV9k YXRhID0gdHJ1ZSk7CisJfSk7CisJJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgic3Vi X3VrXyRtb2RlIik7CisKKwkjIFB1Ymxpc2hlciBVUERBVEU6IHBheWxvYWQgMCAtPiA5OTku CisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGFiX3Vr IFNFVCBwYXlsb2FkID0gOTk5IFdIRVJFIGlkID0gJHVwZF9pZCIpOworCSRwdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoInN1Yl91a18kbW9kZSIpOworCisJIyBTdWJzY3JpYmVyIElO U0VSVCB3aXRoIHRoZSBPTEQgcGF5bG9hZCB2YWx1ZSBidXQgYSB1bmlxdWUgdGFnLiAgVGhl CisJIyBleGlzdGluZyBjaGFpbiBsZWFmIHdpdGgga2V5ICgwLCAnbW9kZV8kbW9kZScpIGlz IG5vdyBzdGFsZTogdGhlCisJIyBsaXZlIHR1cGxlIGF0IHRoZSBjaGFpbiByb290IGhhcyBw YXlsb2FkPTk5OS4gIF9idF9jaGVja191bmlxdWUKKwkjIHJlY2hlY2tzIHRoZSBjb25mbGlj dGluZyB0dXBsZSdzIGxpdmUga2V5IGFuZCByZWNvZ25pemVzIHRoZSBzdGFsZQorCSMgbGVh ZiwgYWxsb3dpbmcgdGhpcyBJTlNFUlQgdG8gc3VjY2VlZC4KKwlteSAoJHIsICRvdXQsICRl cnIpID0gJHN1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRh Yl91ayBWQUxVRVMgKCRpbnNfaWQsIDAsICdmcmVzaF8kbW9kZScpIik7CisJaXMoJHIsIDAs CisJICAgImhvdF9pbmRleGVkX29uX2FwcGx5ID0gJG1vZGU6ICIKKwkgICAuICJzdWJzY3Jp YmVyIElOU0VSVCB3aXRoIG9sZCBwYXlsb2FkIHZhbHVlIHN1Y2NlZWRzIik7CisJbGlrZSgk ZXJyLCBxci9eJC8sCisJCSAiaG90X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCQkg LiAiSU5TRVJUIGRpZCBub3QgcmFpc2UgYW4gZXJyb3IiKTsKKworCSRzdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRST1AgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9k ZSIpOworfQorCisjIC0tLSBhbHdheXMtbW9kZSBzYWZldHkgd2l0aCBpbmRleGVkIGF0dHJz IGJleW9uZCB0aGUgcmVwbGljYSBpZGVudGl0eSAtLS0tLQorIworIyBBbWl0J3MgY29ybmVy OiB1bmRlciBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnIHRoZSBhcHBseSB3b3Jr ZXIgbWF5CisjIHJ1biBhIEhPVC1pbmRleGVkIHVwZGF0ZSBldmVuIHdoZW4gdGhlIHRhYmxl IGhhcyBhbiBpbmRleGVkIGF0dHJpYnV0ZSB0aGF0CisjIGlzIE5PVCBjb3ZlcmVkIGJ5IHRo ZSByZXBsaWNhIGlkZW50aXR5LiAgVGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgbWVjaGFuaXNt CisjIG11c3Qgc3RpbGwgbGV0IHRoZSBhcHBseSB3b3JrZXIncyBsYXRlciByZXBsaWNhLWlk ZW50aXR5IGxvb2t1cHMgZmluZCB0aGUKKyMgcm93LCBhbmQgREVMRVRFL1VQREFURSByZXBs aWNhdGlvbiBtdXN0IGNvbnZlcmdlLCBpbmNsdWRpbmcgd2hlbiB0aGUKKyMgcmVwbGljYS1p ZGVudGl0eSBjb2x1bW4gaXRzZWxmIGlzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpLgor IworIyB0YWJfcmk6IHJlcGxpY2EgaWRlbnRpdHkgaXMgYSBVTklRVUUgaW5kZXggb24gcmlk IChub3QgdGhlIFBLKSwgYW5kIHRoZXJlCisjIGlzIGFuIGV4dHJhIHNlY29uZGFyeSBpbmRl eCBvbiBwYXlsb2FkIHRoYXQgaXMgTk9UIHBhcnQgb2YgdGhlIHJlcGxpY2EKKyMgaWRlbnRp dHkuICBTbyBhIHBheWxvYWQgY2hhbmdlIG1ha2VzIHRoZSBwYXlsb2FkIGxlYWYgc3RhbGUs IGFuZCBhbiByaWQKKyMgQUJBIGN5Y2xlIG1ha2VzIHRoZSByaWQgKHJlcGxpY2EtaWRlbnRp dHkpIGxlYWYgc3RhbGUgLS0gYm90aCB3aGlsZQorIyAnYWx3YXlzJyBrZWVwcyB0aGUgdXBk YXRlcyBvbiB0aGUgSE9UIGNoYWluLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1BUlkgS0VZLCByaWQg aW50IE5PVCBOVUxMLCBwYXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJf cmlfcmlkX3VrIE9OIHRhYl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRhYl9yaSBSRVBMSUNB IElERU5USVRZIFVTSU5HIElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1Yl9yaSBGT1IgVEFCTEUgdGFiX3JpOworfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1B UlkgS0VZLCByaWQgaW50IE5PVCBOVUxMLCBwYXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFV RSBJTkRFWCB0YWJfcmlfcmlkX3VrIE9OIHRhYl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRh Yl9yaSBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JF QVRFIElOREVYIHRhYl9yaV9wYXlsb2FkX2lkeCBPTiB0YWJfcmkocGF5bG9hZCk7Cit9KTsK KworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0 YWJfcmkgVkFMVUVTICgxLCAxMCwgMCksICgyLCAyMCwgMCl9KTsKKworJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9y aQorCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1Yl9y aQorCSAgV0lUSCAoc2xvdF9uYW1lID0gJ3N1Yl9yaV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0 cnVlLAorCSAgICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJywgY29weV9k YXRhID0gdHJ1ZSk7Cit9KTsKKyMgV2FpdCBmb3IgdGhlIGluaXRpYWwgdGFibGUgQ09QWSB0 byBmaW5pc2gsIG5vdCBqdXN0IHN0cmVhbWluZyBjYXRjaC11cCwgc28KKyMgdGhlIHNlZWRl ZCByb3dzIGFyZSBwcmVzZW50IGJlZm9yZSB3ZSBzdGFydCB1cGRhdGluZyB0aGVtLgorJHN1 YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWJf cmknKTsKKworIyBDeWNsZSB0aGUgcmVwbGljYS1pZGVudGl0eSBjb2x1bW4gYXdheSBhbmQg YmFjayAoQUJBKSwgYW5kIGFsc28gY2h1cm4gdGhlCisjIGV4dHJhIHBheWxvYWQgaW5kZXgs IGFsbCByZXBsaWNhdGVkIHVuZGVyICdhbHdheXMnLiAgRWFjaCBzdGVwIGlzIGEKKyMgSE9U LWluZGV4ZWQgdXBkYXRlIG9uIHRoZSBzdWJzY3JpYmVyIHRoYXQgbGVhdmVzIGEgc3RhbGUg bGVhZi4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSB0 YWJfcmkgU0VUIHJpZCA9IDExLCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAx OworCVVQREFURSB0YWJfcmkgU0VUIHJpZCA9IDEwLCBwYXlsb2FkID0gcGF5bG9hZCArIDEg V0hFUkUgaWQgPSAxOyAgLS0gcmlkIEFCQQorCVVQREFURSB0YWJfcmkgU0VUIHBheWxvYWQg PSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9IDI7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJ3N1Yl9yaScpOworCisjIENvbmZpcm0gdGhlIGFwcGx5IHdvcmtlciBhY3R1 YWxseSB0b29rIHRoZSBIT1QtaW5kZXhlZCBwYXRoIG9uIHRhYl9yaSAodGhlCisjIHdob2xl IHBvaW50IG9mICdhbHdheXMnIHdpdGggaW5kZXhlZCBhdHRycyBiZXlvbmQgdGhlIHJlcGxp Y2EgaWRlbnRpdHkpLgorIyBXaXRob3V0IHRoaXMgdGhlIGNvbnZlcmdlbmNlL3ZlcmlmeV9o ZWFwYW0gYXNzZXJ0cyBiZWxvdyBjb3VsZCBwYXNzCisjIHZhY3VvdXNseSBpZiBlbGlnaWJp bGl0eSBzaWxlbnRseSByZWdyZXNzZWQgdG8gcGxhaW4gbm9uLUhPVC4KK215ICh1bmRlZiwg dW5kZWYsICRyaV9ob3RpZHgpID0gcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwgJ3RhYl9y aScsIDMpOworY21wX29rKCRyaV9ob3RpZHgsICc+JywgMCwKKwkgICAnYWx3YXlzLW1vZGU6 IEhPVC1pbmRleGVkIHBhdGggZmlyZWQgb24gdGFiX3JpIChyaWQvcGF5bG9hZCBjaHVybikn KTsKKworIyBBIHN1YnNlcXVlbnQgcmVwbGljYXRlZCBVUERBVEUga2V5ZWQgYnkgdGhlIHJl cGxpY2EgaWRlbnRpdHkgKHJpZCkgbXVzdAorIyBmaW5kIHRoZSByb3cgZGVzcGl0ZSB0aGUg c3RhbGUgcmlkL3BheWxvYWQgbGVhdmVzIHRoZSBBQkEgbGVmdCBiZWhpbmQuCiskcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1VQREFURSB0YWJfcmkgU0VUIHBheWxv YWQgPSAxMDAgV0hFUkUgaWQgPSAxfSk7CisjIEFuZCBhIHJlcGxpY2F0ZWQgREVMRVRFIHJl c29sdmVkIHRocm91Z2ggdGhlIHJlcGxpY2EtaWRlbnRpdHkgaW5kZXggbXVzdAorIyBhbHNv IGZpbmQgYW5kIHJlbW92ZSB0aGUgcmlnaHQgcm93LgorJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7REVMRVRFIEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pOworJHB1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX3JpJyk7CisKK2lzKCAkc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHJpZCB8fCAnOicgfHwgcGF5 bG9hZCBGUk9NIHRhYl9yaSBXSEVSRSBpZCA9IDF9KSwKKwknMTA6MTAwJywKKwknYWx3YXlz LW1vZGU6IHJlcGxpY2F0ZWQgVVBEQVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIGFmdGVyIHJp ZCBBQkEnKTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7 U0VMRUNUIGNvdW50KCopIEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pLAorCScwJywKKwkn YWx3YXlzLW1vZGU6IHJlcGxpY2F0ZWQgREVMRVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIHdp dGggc3RhbGUgbGVhdmVzJyk7CisjIEZ1bGwgY29udmVyZ2VuY2UgY3Jvc3MtY2hlY2suCitp cyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdHJp bmdfYWdnKGlkIHx8ICcsJyB8fCByaWQgfHwgJywnIHx8IHBheWxvYWQsICc7JyBPUkRFUiBC WSBpZCkKKwkJICBGUk9NIHRhYl9yaX0pLAorCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQlxe1NFTEVDVCBzdHJpbmdfYWdnKGlkIHx8ICcsJyB8fCByaWQgfHwgJywn IHx8IHBheWxvYWQsICc7JyBPUkRFUiBCWSBpZCkKKwkJICBGUk9NIHRhYl9yaX0pLAorCSdh bHdheXMtbW9kZTogdGFiX3JpIGNvbnZlcmdlcyBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vi c2NyaWJlcicpOworCisjIHZlcmlmeV9oZWFwYW0gZmluZHMgbm8gY29ycnVwdGlvbiBpbiB0 aGUgSE9ULWluZGV4ZWQgY2hhaW5zIGxlZnQgYmVoaW5kLgorJHN1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hl Y2snKTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VM RUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgndGFiX3JpJyl9KSwKKwknMCcsCisJ J2Fsd2F5cy1tb2RlOiB2ZXJpZnlfaGVhcGFtIGNsZWFuIG9uIHRhYl9yaSBhZnRlciBzdGFs ZS1sZWFmIGNodXJuJyk7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9yaScpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MF9ob3RfaW5kZXhlZF9yZXBsaWNh X2lkZW50aXR5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVk X3JlcGxpY2FfaWRlbnRpdHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmY4MDE3ODdiNGMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHkucGwKQEAgLTAsMCAr MSwxMTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorCisjIExpdmUgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBIT1QtaW5k ZXhlZCB1cGRhdGVzIHVuZGVyIG5vbi1kZWZhdWx0IHJlcGxpY2EKKyMgaWRlbnRpdGllcy4g IFRoZSBhcHBseSB3b3JrZXIgbG9jYXRlcyB0aGUgcm93IHRvIHVwZGF0ZSBvciBkZWxldGUg dmlhIHRoZQorIyByZXBsaWNhIGlkZW50aXR5OiBhIHNlcXNjYW4gZm9yIFJFUExJQ0EgSURF TlRJVFkgRlVMTCwgYW5kIHRoZSBub21pbmF0ZWQKKyMgaW5kZXggZm9yIFJFUExJQ0EgSURF TlRJVFkgVVNJTkcgSU5ERVguICBPbiBhIHN1YnNjcmliZXIgd2hvc2UgdGFibGVzIGNhcnJ5 CisjIGV4dHJhIGluZGV4ZXMgKHNvIGFwcGx5IHBlcmZvcm1zIEhPVC1pbmRleGVkIHVwZGF0 ZXMgYW5kIGxlYXZlcyBzdGFsZSBpbmRleAorIyBsZWF2ZXMpLCB0aGF0IGxvb2t1cCBtdXN0 IHN0aWxsIGZpbmQgdGhlIGN1cnJlbnQgcm93IC0tIGluY2x1ZGluZyBhZnRlciB0aGUKKyMg aWRlbnRpdHkgY29sdW1uJ3MgdmFsdWUgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSku Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1 c2UgVGVzdDo6TW9yZTsKKworbXkgJHB1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiskcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRwdWJsaXNoZXItPnN0YXJ0OworCitteSAkc3Vic2Ny aWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwor JHN1YnNjcmliZXItPmluaXQ7Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKK215ICRwdWJfY29u bmluZm8gPSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworCisj IHRhYl9mdWxsOiBSRVBMSUNBIElERU5USVRZIEZVTEwgKGFwcGx5IHVzZXMgYSBzZXF1ZW50 aWFsIHNjYW4pLgorIyB0YWJfaWR4OiAgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBv biBhIG5vbi1QSyB1bmlxdWUgaW5kZXggd2hvc2UKKyMgICAgICAgICAgIGNvbHVtbiBpcyBp dHNlbGYgdXBkYXRlZCwgc28gdGhlIGFwcGx5LXNpZGUgaW5kZXggbG9va3VwIG11c3QKKyMg ICAgICAgICAgIHRvbGVyYXRlIHN0YWxlIGxlYXZlcyBsZWZ0IGJ5IGVhcmxpZXIgSE9ULWlu ZGV4ZWQgdXBkYXRlcy4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor CUNSRUFURSBUQUJMRSB0YWJfZnVsbCAoYSBpbnQsIGIgaW50LCBjIGludCk7CisJQUxURVIg VEFCTEUgdGFiX2Z1bGwgUkVQTElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0 YWJfaWR4IChrIGludCBOT1QgTlVMTCwgdiBpbnQsIHcgaW50KTsKKwlDUkVBVEUgVU5JUVVF IElOREVYIHRhYl9pZHhfayBPTiB0YWJfaWR4IChrKTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4 IFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGFiX2lkeF9rOworCUNSRUFURSBQVUJM SUNBVElPTiBwdWIgRk9SIFRBQkxFIHRhYl9mdWxsLCB0YWJfaWR4OworfSk7CisKKyMgVGhl IHN1YnNjcmliZXIgYWRkcyBleHRyYSBzZWNvbmRhcnkgaW5kZXhlcyBzbyB0aGF0IGFuIFVQ REFURSBjaGFuZ2luZyBvbmUKKyMgaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9ULWluZGV4ZWQg b24gYXBwbHkuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JF QVRFIFRBQkxFIHRhYl9mdWxsIChhIGludCwgYiBpbnQsIGMgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworCUNSRUFURSBJTkRFWCB0YWJfZnVsbF9iIE9OIHRhYl9mdWxsIChiKTsK KwlDUkVBVEUgSU5ERVggdGFiX2Z1bGxfYyBPTiB0YWJfZnVsbCAoYyk7CisJQUxURVIgVEFC TEUgdGFiX2Z1bGwgUkVQTElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0YWJf aWR4IChrIGludCBOT1QgTlVMTCwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0g NTApOworCUNSRUFURSBVTklRVUUgSU5ERVggdGFiX2lkeF9rIE9OIHRhYl9pZHggKGspOwor CUNSRUFURSBJTkRFWCB0YWJfaWR4X3YgT04gdGFiX2lkeCAodik7CisJQ1JFQVRFIElOREVY IHRhYl9pZHhfdyBPTiB0YWJfaWR4ICh3KTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4IFJFUExJ Q0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGFiX2lkeF9rOworfSk7CisKKyMgQWxsb3cgSE9U LWluZGV4ZWQgdXBkYXRlcyBvbiB0aGUgYXBwbHkgcGF0aC4KKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIKKwkgIENP Tk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEgg KGhvdF9pbmRleGVkX29uX2FwcGx5ID0gYWx3YXlzKTsKK30pOworJHN1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWInKTsKKworIyBTZWVk IGJvdGggdGFibGVzLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJ SU5TRVJUIElOVE8gdGFiX2Z1bGwgVkFMVUVTICgxLCAxMCwgMTAwKSwgKDIsIDIwLCAyMDAp OworCUlOU0VSVCBJTlRPIHRhYl9pZHggVkFMVUVTICgxLCAxMCwgMTAwMCksICgyLCAyMCwg MjAwMCk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisj IEEgcnVuIG9mIHNpbmdsZS1jb2x1bW4gdXBkYXRlczogZWFjaCBzdGF5cyBIT1QtaW5kZXhl ZCBvbiB0aGUgc3Vic2NyaWJlciBhbmQKKyMgbGVhdmVzIHN0YWxlIGxlYXZlcywgdGhlbiB0 aGUgaWRlbnRpdHkvUEsgcm93IGlzIG1hdGNoZWQgYWdhaW4gYnkgdGhlIG5leHQKKyMgY2hh bmdlLiAgSW5jbHVkZSBhbiBBQkEgY3ljbGUgb24gdGhlIFVTSU5HIElOREVYIGNvbHVtbiBr ICgxIC0+IDMgLT4gMSkuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KwlVUERBVEUgdGFiX2Z1bGwgU0VUIGIgPSBiICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUg dGFiX2Z1bGwgU0VUIGMgPSBjICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2Z1bGwg U0VUIGIgPSBiICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2lkeCBTRVQgdiA9IHYg KyAxIFdIRVJFIGsgPSAxOworCVVQREFURSB0YWJfaWR4IFNFVCBrID0gMyBXSEVSRSBrID0g MTsKKwlVUERBVEUgdGFiX2lkeCBTRVQgdyA9IHcgKyAxIFdIRVJFIGsgPSAzOworCVVQREFU RSB0YWJfaWR4IFNFVCBrID0gMSBXSEVSRSBrID0gMzsKKwlERUxFVEUgRlJPTSB0YWJfZnVs bCBXSEVSRSBhID0gMjsKKwlERUxFVEUgRlJPTSB0YWJfaWR4IFdIRVJFIGsgPSAyOworfSk7 CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWInKTsKKworIyBUaGUgc3Vic2Ny aWJlciBtdXN0IG1hdGNoIHRoZSBwdWJsaXNoZXIgZXhhY3RseTogdGhlIFJJIGxvb2t1cHMg Zm91bmQgdGhlCisjIHJpZ2h0IHJvd3MgYWNyb3NzIHRoZSBIT1QtaW5kZXhlZCBjaGFpbnMg YW5kIHRoZSBBQkEgY3ljbGUuCitteSAkcHViX2Z1bGwgPSAkcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBhLCBiLCBjIEZST00gdGFiX2Z1bGwgT1JERVIg QlkgYX0pOworbXkgJHN1Yl9mdWxsID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCXF7U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBhfSk7Citp cygkc3ViX2Z1bGwsICRwdWJfZnVsbCwgJ1JFUExJQ0EgSURFTlRJVFkgRlVMTDogc3Vic2Ny aWJlciBtYXRjaGVzIHB1Ymxpc2hlcicpOworCitteSAkcHViX2lkeCA9ICRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4 IE9SREVSIEJZIGt9KTsKK215ICRzdWJfaWR4ID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4IE9SREVSIEJZIGt9 KTsKK2lzKCRzdWJfaWR4LCAkcHViX2lkeCwKKwknUkVQTElDQSBJREVOVElUWSBVU0lORyBJ TkRFWDogc3Vic2NyaWJlciBtYXRjaGVzIHB1Ymxpc2hlciBhY3Jvc3MgQUJBJyk7CisKKyMg VGhlIHN1YnNjcmliZXIncyB0YWJsZXMgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVu dCAoc3R1YnMgcmVjb2duaXNlZCkuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrfSk7CitpcyggJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9o ZWFwYW0oJ3RhYl9pZHgnKX0pLAorCScwJywKKwknc3Vic2NyaWJlciB0YWJfaWR4IGhhcyBu byBoZWFwIGNvcnJ1cHRpb24gYWZ0ZXIgSE9ULWluZGV4ZWQgYXBwbHknKTsKKworJHN1YnNj cmliZXItPnN0b3A7CiskcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0g CjIuNTAuMQoK --83aaa022bd17276b82d029e5f2d2108609246421 Content-Disposition: attachment; filename*0="v59-0010-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v59-0010-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSAyMmIzODRmYTU2NjJmOTRhNzg4OWJjNGZhOGE2Mjk5ODMyOGU4ZWRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU5IDEw LzEwXSBbRE8gTk9UIE1FUkdFXSBBZGQgYSBIT1QvU0lVIGJlbmNobWFyayBoYXJuZXNzCgpB L0IgYW5kIHNpbmdsZS12YXJpYW50IGJlbmNobWFyayBzY3JpcHRzIGZvciBIT1QtaW5kZXhl ZCB1cGRhdGVzOiBidWlsZCB0d28KcG9zdGdyZXMgdmFyaWFudHMsIHJ1biBwZ2JlbmNoIHdv cmtsb2FkcyBleGVyY2lzaW5nIGNsYXNzaWMtSE9ULCBub24tSE9ULCBhbmQKSE9ULWluZGV4 ZWQgcGF0aHMsIGFuZCBhIHNlbGYtY29udGFpbmVkIGJsb2F0IHByb2JlIHRoYXQgcmVwb3J0 cyB0aGUgc2tpcCBjb3VudAooaW5kZXggd3JpdGVzIGF2b2lkZWQgb24gdW5jaGFuZ2VkIGlu ZGV4ZXMpIGFuZCBjaGFuZ2VkLWluZGV4IGJvdW5kaW5nLiAgTm90CmZvciBtZXJnZTsga2Vw dCBmb3IgZXZhbHVhdGluZyB0aGUgZmVhdHVyZS4KLS0tCiBzcmMvdGVzdC9iZW5jaG1hcmtz L3NpdS9SRUFETUUubWQgICAgICAgICAgICAgfCAgODIgKysrKwogc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9iaXQxNF9hYi5zaCAgIHwgMTEwICsrKysrCiAuLi4vc2l1L3Nj cmlwdHMvYml0bWFwX2FuZF9taXhlZC5zcWwgICAgICAgICAgfCAgMjQgKysKIHNyYy90ZXN0 L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMv dGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAu Li4vc2l1L3NjcmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwog Li4uL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsK IC4uLi9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSAr CiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcg KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Nv YWsuc2ggICAgICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93 aWRlX3VwZGF0ZS5zcWwgICAgfCAgIDcgKwogMTEgZmlsZXMgY2hhbmdlZCwgODk0IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9S RUFETUUubWQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL2JpdDE0X2FiLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9iaXRtYXBfYW5kX21peGVkLnNxbAogY3JlYXRlIG1vZGUgMTAw NzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNx bAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUu bWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlhNjJkMjY4YWQ3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvUkVBRE1FLm1k CkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1pbmRleGVkKSBBL0IgYmVu Y2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRzLCBpZGVudGljYWwgcGdk YXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lzaW5nIGNsYXNzaWMgSE9U LCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMjIENvbnRlbnRzCisKKy0g YHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdyZXMgdmFyaWFudHMgKGBt YXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3JpZ2luL21hc3RlcjsgYHRl cGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJlcworICBhIHdyaXRhYmxl IGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAvc2NyYXRjaC90ZXBpZC1i ZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2ZXIuICBSdW5zIGBzaW1w bGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhlZF91cGRhdGVgLCBgaG90 X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQgYHdpZGVfTmAKKyAgZm9y IE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBsYXRlbmN5LCBXQUwgYnl0 ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5kCisgIGluZGV4IHNpemUs IHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBydW4gdG8gYCRCRU5DSC9y ZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmctcnVubmluZyBzaW5nbGUt d29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9UJS9XQUwvYmxvYXQgZXZl cnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAgc2Vjb25kcworICBvZiBj b25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3JpcHRzL2Jsb2F0LnNoYCAt LSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBkYXRlK3ZhY3V1bSBjeWNs ZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBhbmQgYW4gdW5jaGFuZ2Vk IGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0cyAodmlhIHBnc3RhdHR1 cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5kZWQgd2l0aCBwZXJpb2Rp YworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0IGl0LCBwbHVzIHRoZSBz a2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRlcyBhdm9pZGluZyB0aGUg dW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3YXkKKyAgY2x1c3Rlciwg c28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCistIGBzY3JpcHRzL2hvdF9p bmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxlIFNFVCBiID0gcmFuZCBX SEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbGAgIC0t IDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBVUERBVEUuCistIGBzY3Jp cHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0cmVlIGluZGV4IHNjYW5z IG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8gc3RhbGUgZW50cmllcyk7 IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAgYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkZWNpZGVz CisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24gYW5kIHRoZSBzY2FuIHJl cXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWxgIC0t IGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmtsb2FkOworICB0aGUgYFNF VGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRXSURFX1NURVBTYC4KKwor IyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50cyAocnVuIG9uY2UgcGVy IGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCBCRU5DSD0v c2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWlsZC5zaAorCisjIFN0YW5k YXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTggRFVSQVRJT049MTIwIFwK KyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2IFwKKyAgLi9zY3JpcHRz L3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYgVEhSRUFEUz04IERVUkFU SU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5zaAorCisjIEJsb2F0IHBy b2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRlcGlkIGJ1aWxkKQorQkVO Q0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xFUz04IFVQREFURVM9MjAg XAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYgdmFycworCitgYGAKK1JF UE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFzIC5naXQpCitCRU5DSCAg ICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVpbGQgdHJlZXMsIHJlc3Vs dHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2ZXMgc2l1X3RhYmxlIHJv dyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdiZW5jaCAtYworVEhSRUFE UyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRzIHBlciB3b3JrbG9hZAor V0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1bW5zIGluIHdpZGVfdGFi bGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Yg Y29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAgICAgICAgICAgICAoZGVm YXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVzIHBvcnQgZm9yIHRoZSBi ZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNxbC5jb25mIHNldHRpbmcg KGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24gZm9yIHRoZSBtYXN0ZXIg dmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisgICAgICAgICAgICAgd2l0 aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9uIGZvciB0aGUgdGVwaWQg dmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9ubHk6CitCSU5ESVIgICAg ICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0ZXBpZCB2YXJpYW50IHVu ZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAoZGVmYXVsdCA1MDAwKQor Q1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZhdWx0IDgpCitVUERBVEVT ICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVsdCAyMCkKK2BgYAorCitU aGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBhbmQgRnJlZUJTRDsgdGhl IENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNzPSAtLXBwaWQgTEVBREVS IC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Blci1waWQgYHBzYCAoRnJl ZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9iaXQxNF9hYi5zaCBiL3NyYy90ZXN0L2Jl bmNobWFya3Mvc2l1L3NjcmlwdHMvYml0MTRfYWIuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjhjN2NkNjRmYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9iaXQxNF9hYi5zaApAQCAtMCwwICsxLDEx MCBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIyBiaXQxNF9hYi5zaCAtLSBBL0IgcGdiZW5j aCBoYXJuZXNzIGZvciB0aGUgSXRlbVBvaW50ZXJTSVVNYXliZVN0YWxlRmxhZworIyAoImJp dDE0IikgZml4IHNwZWNpZmljYWxseS4gIFVzZXMgdGhlIHNhbWUgdHdvIHZhcmlhbnRzIGJ1 aWxkLnNoIGFscmVhZHkKKyMgcHJvZHVjZWQgdW5kZXIgJEJFTkNIL3ttYXN0ZXIsdGVwaWR9 OiAibWFzdGVyIiA9IGJpdDE0IFJFVkVSVEVEICh0ZXBpZC0KKyMgYml0MTQtb2ZmKSwgInRl cGlkIiA9IGJpdDE0IHByZXNlbnQgKHRlcGlkLWJpdDE0LW9uKS4gIEJvdGggb3RoZXJ3aXNl CisjIGlkZW50aWNhbCAtLSB0aGlzIGlzb2xhdGVzIGV4YWN0bHkgdGhlIGZpeCdzIGNvc3Qv YmVuZWZpdCwgbm90IHRoZSBTSVUKKyMgZmVhdHVyZSdzIG93biB3aW4gKHRoYXQncyB3aGF0 IHJ1bi5zaCdzIG90aGVyIHdvcmtsb2FkcyBhbHJlYWR5IGNvdmVyKS4KKyMKKyMgUnVucyBi aXRtYXBfYW5kX21peGVkLnNxbCAoODAlIEJpdG1hcEFuZCByZWFkcyBhY3Jvc3MgdHdvIHVu dG91Y2hlZAorIyBpbmRleGVzLCAyMCUgSE9ULWluZGV4ZWQgdXBkYXRlcyBvbiBhIHRoaXJk IGluZGV4IG9uIHRoZSBzYW1lIHRhYmxlL3BhZ2VzKQorIyBBL0IgYWx0ZXJuYXRpbmcsIE4g aXRlcmF0aW9ucyBlYWNoLCBhbmQgcmVwb3J0cyBtZWRpYW4gVFBTICsgbGF0ZW5jeS4KK3Nl dCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3JhdGNoL3NpdS1iZW5jaH0K K1NDQUxFPSR7U0NBTEU6LTEwfQorQ0xJRU5UUz0ke0NMSUVOVFM6LTE2fQorVEhSRUFEUz0k e1RIUkVBRFM6LTh9CitEVVJBVElPTj0ke0RVUkFUSU9OOi02MH0KK0lURVJBVElPTlM9JHtJ VEVSQVRJT05TOi01fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorU0hBUkVEX0JVRkZFUlM9JHtT SEFSRURfQlVGRkVSUzotNEdCfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQor T1VUPSRCRU5DSC9yZXN1bHRzL2JpdDE0XyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy9i aXQxNF8kVFMKK21rZGlyIC1wICIkTE9HRElSIiAiJEJFTkNIL3Jlc3VsdHMiCitlY2hvICJp dGVyYXRpb24sdmFyaWFudCx0cHMsbGF0ZW5jeV9hdmdfbXMiID4gIiRPVVQiCitlY2hvICI9 PT0gYml0MTQgQS9CIHJ1biAkVFMgLT4gJE9VVCAoc2NhbGU9JFNDQUxFIGNsaWVudHM9JENM SUVOVFMgdGhyZWFkcz0kVEhSRUFEUyBkdXJhdGlvbj0ke0RVUkFUSU9OfXMgaXRlcmF0aW9u cz0kSVRFUkFUSU9OUykiCisKK2Jpbl9vZigpIHsgZWNobyAiJEJFTkNILyQxL3Vzci9sb2Nh bC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpIHsKKyAgbG9jYWwgYmFzZT0kQkVOQ0gvJDEvdXNy L2xvY2FsL3Bnc3FsCisgIGlmIFsgLWQgIiRiYXNlL2xpYjY0IiBdOyB0aGVuIGVjaG8gIiRi YXNlL2xpYjY0IjsgZWxzZSBlY2hvICIkYmFzZS9saWIiOyBmaQorfQorcHNxbF9hcygpIHsK KyAgbG9jYWwgdj0kMTsgc2hpZnQKKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIp IiAiJChiaW5fb2YgIiR2IikvcHNxbCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVz IC1YICIkQCIKK30KK3BnYmVuY2hfYXMoKSB7CisgIGxvY2FsIHY9JDE7IHNoaWZ0CisgIExE X0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2gi IC1oIC90bXAgLXAgIiRQT1JUIiAtVSBwb3N0Z3JlcyAiJEAiCit9CisKK3N0YXJ0X3BnKCkg eworICBsb2NhbCB2PSQxCisgIGxvY2FsIGRhdGFkaXI9JEJFTkNIL19kYXRhX2JpdDE0XyR2 CisgIHJtIC1yZiAiJGRhdGFkaXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvaW5pdGRiIiAtRCAi JGRhdGFkaXIiIC1VIHBvc3RncmVzID4iJExPR0RJUi9pbml0ZGJfJHYubG9nIiAyPiYxCisg IGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25mIiA8PEVPRgorc2hhcmVkX2J1ZmZl cnMgPSAkU0hBUkVEX0JVRkZFUlMKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dhbF9zaXplID0g NEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1lb3V0ID0gMTBt aW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ2dpbmdfY29sbGVjdG9yID0gb2ZmCitwb3J0 ID0gJFBPUlQKK0VPRgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJp bl9vZiAiJHYiKS9wZ19jdGwiIC1EICIkZGF0YWRpciIgXAorICAgIC1vICItcCAkUE9SVCIg LWwgIiRMT0dESVIvcGdfJHYubG9nIiBzdGFydCA+L2Rldi9udWxsCisgIHNsZWVwIDIKK30K Kworc3RvcF9wZygpIHsKKyAgbG9jYWwgdj0kMQorICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9f ZGF0YV9iaXQxNF8kdgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJp bl9vZiAiJHYiKS9wZ19jdGwiIC1EICIkZGF0YWRpciIgc3RvcCAtbSBmYXN0ID4vZGV2L251 bGwgMj4mMSB8fCB0cnVlCit9CisKK3NlZWQoKSB7CisgIGxvY2FsIHY9JDEKKyAgbG9jYWwg cm93cz0kKChTQ0FMRSAqIDEwMDAwMCkpCisgIHBzcWxfYXMgIiR2IiA8PFNRTAorRFJPUCBU QUJMRSBJRiBFWElTVFMgc2l1X3RhYmxlOworQ1JFQVRFIFRBQkxFIHNpdV90YWJsZShhIGlu dCBQUklNQVJZIEtFWSwgYiBpbnQsIGMgaW50LCBkIGludCwgZSB0ZXh0KTsKK0NSRUFURSBJ TkRFWCBzaXVfYiBPTiBzaXVfdGFibGUoYik7CitDUkVBVEUgSU5ERVggc2l1X2MgT04gc2l1 X3RhYmxlKGMpOworQ1JFQVRFIElOREVYIHNpdV9kIE9OIHNpdV90YWJsZShkKTsKK0lOU0VS VCBJTlRPIHNpdV90YWJsZQorICBTRUxFQ1QgaSwgaSwgaSwgaSwgcmVwZWF0KCd4JywgMjAp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRyb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBB TkFMWVpFKSBzaXVfdGFibGU7CitDSEVDS1BPSU5UOworU1FMCit9CisKK3J1bl9pdGVyKCkg eworICBsb2NhbCBpdGVyPSQxIHY9JDIKKyAgc3RvcF9wZyAiJHYiIHx8IHRydWUKKyAgc3Rh cnRfcGcgIiR2IgorICBzZWVkICIkdiIKKyAgbG9jYWwgbG9nPSIkTE9HRElSL3BnYmVuY2hf JHt2fV9pdGVyJHtpdGVyfS5sb2ciCisgIHBnYmVuY2hfYXMgIiR2IiAtbiAtZiAiJEJFTkNI L3NjcmlwdHMvYml0bWFwX2FuZF9taXhlZC5zcWwiIFwKKyAgICAtYyAiJENMSUVOVFMiIC1q ICIkVEhSRUFEUyIgLVQgIiREVVJBVElPTiIgLU0gcHJlcGFyZWQgXAorICAgIC1EIHNjYWxl PSIkU0NBTEUiIHBvc3RncmVzID4iJGxvZyIgMj4mMSB8fCBlY2hvICIgIGl0ZXIgJGl0ZXIg JHY6IHBnYmVuY2ggZXhpdGVkIG5vbnplcm8sIHNlZSAkbG9nIiA+JjIKKyAgbG9jYWwgdHBz IGxhdAorICB0cHM9JChncmVwIC1vUCAndHBzID0gXEtbMC05Ll0rJyAiJGxvZyIgfCB0YWls IC0xKQorICBsYXQ9JChncmVwIC1vUCAnbGF0ZW5jeSBhdmVyYWdlID0gXEtbMC05Ll0rJyAi JGxvZyIgfCB0YWlsIC0xKQorICBlY2hvICIkaXRlciwkdiwke3RwczotTkF9LCR7bGF0Oi1O QX0iID4+ICIkT1VUIgorICBlY2hvICIgIGl0ZXIgJGl0ZXIgICR2ICB0cHM9JHt0cHM6LU5B fSAgbGF0PSR7bGF0Oi1OQX1tcyIKKyAgc3RvcF9wZyAiJHYiCit9CisKKyMgQS9CIGFsdGVy bmF0ZSwgbm90IGJhdGNoZWQsIHRvIGNhbmNlbCBkcmlmdC4KK2ZvciBpIGluICQoc2VxIDEg IiRJVEVSQVRJT05TIik7IGRvCisgIHJ1bl9pdGVyICIkaSIgbWFzdGVyICAgIyBiaXQxNC1v ZmYKKyAgcnVuX2l0ZXIgIiRpIiB0ZXBpZCAgICAjIGJpdDE0LW9uCitkb25lCisKK2VjaG8g Ij09PSBkb25lIC0+ICRPVVQiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3Np dS9zY3JpcHRzL2JpdG1hcF9hbmRfbWl4ZWQuc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9iaXRtYXBfYW5kX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNTBkOTg4N2Y5ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2JpdG1hcF9hbmRfbWl4ZWQuc3FsCkBAIC0w LDAgKzEsMjQgQEAKKy0tIGJpdG1hcF9hbmRfbWl4ZWQ6IHF1YW50aWZpZXMgdGhlIGNvc3Qg b2YgdGhlIGJpdDE0IFNJVSBtYXktYmUtc3RhbGUgZml4CistLSAoc2VlIHN0b3JhZ2UvaXRl bXB0ci5oKSBzcGVjaWZpY2FsbHkgLS0gbm90IHRoZSBTSVUgd3JpdGUtcGF0aCB3aW4gdGhl CistLSBvdGhlciB3b3JrbG9hZHMgbWVhc3VyZS4KKy0tCistLSA4MCUgb2YgdHJhbnNhY3Rp b25zIGZvcmNlIGEgQml0bWFwQW5kIGFjcm9zcyBzaXVfYiBhbmQgc2l1X2QgKGJvdGggbmV2 ZXIKKy0tIHVwZGF0ZWQgYnkgdGhpcyB3b3JrbG9hZCkgd2l0aCBhIHdpZGUtZW5vdWdoIHBy ZWRpY2F0ZSByYW5nZSB0byBtYWtlIHRoZQorLS0gcGxhbm5lciBwaWNrIGEgYml0bWFwIHBs YW4gb3ZlciBhIHBsYWluIGluZGV4IHNjYW4uICAyMCUgb2YgdHJhbnNhY3Rpb25zCistLSBI T1QtaW5kZXhlZC11cGRhdGUgY29sdW1uIGMgKGEgdGhpcmQsIHNlcGFyYXRlbHktaW5kZXhl ZCBjb2x1bW4pLCB3aGljaCBpcworLS0gd2hhdCBwbGFudHMgYSBtYXktYmUtc3RhbGUtZmxh Z2dlZCBmcmVzaCBlbnRyeSBpbiBzaXVfYy4gIHNpdV9jIGlzIG5vdAorLS0gcGFydCBvZiB0 aGUgQml0bWFwQW5kIHByZWRpY2F0ZSBoZXJlIG9uIHB1cnBvc2U6IHRoZSBiaXQxNCBmaXgn cyBjb3N0CistLSBzaG93cyB1cCBpbiB3aGV0aGVyIGZsYWdnZWQgcGFnZXMgZWxzZXdoZXJl IG9uIHRoZSBTQU1FIGhlYXAgcGFnZSBhcyBhbgorLS0gdXBkYXRlIGFsc28gbG9zZSBleGFj dC1tb2RlIHByZWNpc2lvbiBvbiBPVEhFUiBpbmRleGVzJyBiaXRtYXAKKy0tIGNvbnRyaWJ1 dGlvbnMgZm9yIHVucmVsYXRlZCByb3dzIHNoYXJpbmcgdGhhdCBwYWdlLCB3aGljaCBpcyBl eGFjdGx5IHdoYXQKKy0tIHJlc2V0X3N0YXRlJ3MgZnJlc2hseS1jbHVzdGVyZWQgbGF5b3V0 IChhIGFuZCBiIGJvdGggaW5jcmVhc2luZyB3aXRoIHJvdworLS0gb3JkZXIpIHB1dHMgbXVs dGlwbGUgcm93cyBwZXIgaGVhcCBwYWdlIHVuZGVyLgorXHNldCBhaWQgcmFuZG9tKDEsIDpz Y2FsZSAqIDEwMDAwMCkKK1xzZXQgbG8gcmFuZG9tKDEsIDpzY2FsZSAqIDEwMDAwMCAtIDEw MDApCitcc2V0IGhpX29mZiByYW5kb20oMSwgMTAwMCkKK1xzZXQgd2hpY2ggcmFuZG9tKDEs IDEwMCkKK1xpZiA6d2hpY2ggPiA4MAorICBVUERBVEUgc2l1X3RhYmxlIFNFVCBjID0gOmFp ZCBXSEVSRSBhID0gOmFpZDsKK1xlbHNlCisgIFNFTEVDVCBjb3VudCgqKSBGUk9NIHNpdV90 YWJsZSBXSEVSRSBiIEJFVFdFRU4gOmxvOjppbnQgQU5EIDpsbzo6aW50ICsgOmhpX29mZjo6 aW50IEFORCBkIEJFVFdFRU4gOmxvOjppbnQgQU5EIDpsbzo6aW50ICsgOmhpX29mZjo6aW50 OworXGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L2Jsb2F0LnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uMzQxNzFjNjhmNWIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2Jsb2F0 LnNoCkBAIC0wLDAgKzEsODQgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMgU2luZ2xlLXZh cmlhbnQgYmxvYXQgYmVuY2htYXJrIGZvciBIT1QtaW5kZXhlZCAoU0lVKSB1cGRhdGVzLgor IworIyBUaGUgQS9CIHJ1bi5zaCBtZWFzdXJlcyBUUFMvV0FML2FnZ3JlZ2F0ZSBzaXplOyBp dCBkb2VzIG5vdCBpc29sYXRlIHR3bworIyBibG9hdCBwcm9wZXJ0aWVzIG9mIHRoZSBIT1Qt aW5kZXhlZCBwYXRoLCB3aGljaCB0aGlzIHNjcmlwdCBkZW1vbnN0cmF0ZXM6CisjCisjICAg MS4gU3RhbGUgaW5kZXggZW50cmllcyBvbiB0aGUgQ0hBTkdFRCBpbmRleCBhY2N1bXVsYXRl IGJldHdlZW4gdmFjdXVtcywKKyMgICAgICBidXQgVkFDVVVNIHJlY2xhaW1zIHRoZW0sIHNv IHNpemUgc3RheXMgYm91bmRlZCBhY3Jvc3MgdXBkYXRlK3ZhY3V1bQorIyAgICAgIGN5Y2xl cy4gIFNraXBwaW5nIHZhY3V1bSBsZXRzIHRoZW0gZ3JvdyB1bmJvdW5kZWQgKHRoZSBpbmhl cmVudAorIyAgICAgIGludGVyLXZhY3V1bSBibG9hdDsgcmVhZC1maWx0ZXJlZCBieSB0aGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG1lYW53aGlsZSkuCisjICAgMi4gQW4gaW5kZXgg b24gYW4gVU5DSEFOR0VEIGNvbHVtbiBpcyBza2lwcGVkIGJ5IEhPVC1pbmRleGVkIHVwZGF0 ZXMgKHRoZQorIyAgICAgIHNlbGVjdGl2ZS11cGRhdGUgYmVuZWZpdCkgLS0gdmlzaWJsZSBh cyBhIHNraXAgY291bnQuICBVcGRhdGVzIHRoYXQgZmFsbAorIyAgICAgIGJhY2sgdG8gbm9u LUhPVCAoZS5nLiB3aGVuIHRoZSBwYWdlIGhhcyBubyByb29tIGZvciB0aGUgY2hhaW4pIHN0 aWxsCisjICAgICAgaW5zZXJ0IGludG8gaXQsIHNvIGl0cyBzaXplIHJlZmxlY3RzIG9ubHkg dGhlIG5vbi1IT1QgcmVtYWluZGVyLgorIworIyBVc2VzIHRoZSB0ZXBpZCB2YXJpYW50IGJ1 aWx0IGJ5IGJ1aWxkLnNoIChvdmVycmlkZSBCSU5ESVIgZm9yIGFueSBidWlsZCkgYW5kCisj IGEgdGhyb3dhd2F5IGNsdXN0ZXIgdW5kZXIgJEJFTkNILCBzbyBpdCBuZXZlciB0b3VjaGVz IHRoZSBBL0IgcGdkYXRhLgorIworIyBFbnY6IEJFTkNIIChkZWZhdWx0IC9zY3JhdGNoL3Np dS1iZW5jaCksIEJJTkRJUiAoZGVmYXVsdCB0ZXBpZCB2YXJpYW50IGJpbiksCisjICAgICAg UE9SVCAoZGVmYXVsdCA1NzQ4MSksIFJPV1MgKGRlZmF1bHQgNTAwMCksIENZQ0xFUyAoZGVm YXVsdCA4KSwKKyMgICAgICBVUERBVEVTICh1cGRhdGVzIHBlciByb3cgcGVyIGN5Y2xlLCBk ZWZhdWx0IDIwKS4KK3NldCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3Jh dGNoL3NpdS1iZW5jaH0KK0JJTkRJUj0ke0JJTkRJUjotJEJFTkNIL3RlcGlkL3Vzci9sb2Nh bC9wZ3NxbC9iaW59CitQT1JUPSR7UE9SVDotNTc0ODF9CitST1dTPSR7Uk9XUzotNTAwMH0K K0NZQ0xFUz0ke0NZQ0xFUzotOH0KK1VQREFURVM9JHtVUERBVEVTOi0yMH0KK0RBVEFESVI9 JEJFTkNIL19kYXRhX2Jsb2F0CisKK2Jhc2U9JChkaXJuYW1lICIkQklORElSIikKK2lmIFsg LWQgIiRiYXNlL2xpYjY0IiBdOyB0aGVuCisgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRi YXNlL2xpYjY0JHtMRF9MSUJSQVJZX1BBVEg6KzokTERfTElCUkFSWV9QQVRIfSIKK2Vsc2UK KyAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJGJhc2UvbGliJHtMRF9MSUJSQVJZX1BBVEg6 KzokTERfTElCUkFSWV9QQVRIfSIKK2ZpCisKK1BTUUw9KCIkQklORElSL3BzcWwiIC1oIC90 bXAgLXAgIiRQT1JUIiAtVSBwb3N0Z3JlcyAtWCAtcSkKK1AoKSB7ICIke1BTUUxbQF19IiAt QXQgIiRAIjsgfQorCisiJEJJTkRJUi9wZ19jdGwiIC1EICIkREFUQURJUiIgc3RvcCAtbSBm YXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCitybSAtcmYgIiREQVRBRElSIgorIiRCSU5E SVIvaW5pdGRiIiAtRCAiJERBVEFESVIiIC1VIHBvc3RncmVzIC0tbm8tc3luYyA+L2Rldi9u dWxsCitjYXQgPj4gIiREQVRBRElSL3Bvc3RncmVzcWwuY29uZiIgPDxFT0YKK3BvcnQgPSAk UE9SVAorYXV0b3ZhY3V1bSA9IG9mZgorZnN5bmMgPSBvZmYKK0VPRgorIiRCSU5ESVIvcGdf Y3RsIiAtRCAiJERBVEFESVIiIC1vICItcCAkUE9SVCIgLWwgIiRCRU5DSC9fYmxvYXQubG9n IiAtdyBzdGFydCA+L2Rldi9udWxsCit0cmFwICciJEJJTkRJUi9wZ19jdGwiIC1EICIkREFU QURJUiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlJyBFWElUCisiJHtQ U1FMW0BdfSIgLWMgIkNSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwZ3N0YXR0dXBs ZTsiID4vZGV2L251bGwKKworIyAkMSA9IHRhYmxlIG5hbWUsICQyID0gdmFjdXVtX2VhY2gg KDEvMCkuICBSZXR1cm5zIGZpbmFsIGlkeF9hIGNvbXBvc2l0aW9uLgorcnVuX2FybSgpIHsK KyAgbG9jYWwgdGJsPSQxIHZhYz0kMgorICAiJHtQU1FMW0BdfSIgPDxTUUwgPi9kZXYvbnVs bAorRFJPUCBUQUJMRSBJRiBFWElTVFMgJHRibDsKK0NSRUFURSBUQUJMRSAkdGJsIChpZCBp bnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCwgcGFkIHRleHQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggJHt0Ymx9X2EgT04gJHRibChhKTsgICAtLSBjaGFu Z2VkIGNvbHVtbgorQ1JFQVRFIElOREVYICR7dGJsfV9iIE9OICR0YmwoYik7ICAgLS0gbmV2 ZXIgY2hhbmdlZAorSU5TRVJUIElOVE8gJHRibCBTRUxFQ1QgZywgZywgZywgcmVwZWF0KCd4 JywgNDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICRST1dTKSBnOworVkFDVVVNIChGUkVF WkUsIEFOQUxZWkUpICR0Ymw7CitTUUwKKyAgbG9jYWwgY3ljCisgIGZvciAoKGN5YyA9IDE7 IGN5YyA8PSBDWUNMRVM7IGN5YysrKSk7IGRvCisgICAgIiR7UFNRTFtAXX0iIC1jICJETyBc JFwkIEJFR0lOIEZPUiB1IElOIDEuLiRVUERBVEVTIExPT1AgVVBEQVRFICR0YmwgU0VUIGEg PSBhICsgMTsgRU5EIExPT1A7IEVORCBcJFwkOyIgPi9kZXYvbnVsbAorICAgIFsgIiR2YWMi ID0gMSBdICYmICIke1BTUUxbQF19IiAtYyAiVkFDVVVNICR0Ymw7IiA+L2Rldi9udWxsCisg IGRvbmUKKyAgUCAtYyAiU0VMRUNUICckdGJsKHZhY3V1bV9lYWNoPSR2YWMpOicKKyAgICAg ICAgfHwgJyBpZHhfYV9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUoJyR7dGJsfV9hJykvMTAy NAorICAgICAgICB8fCAnIGlkeF9hX2xpdmU9JyB8fCAoU0VMRUNUIHR1cGxlX2NvdW50IEZS T00gcGdzdGF0dHVwbGUoJyR7dGJsfV9hJykpCisgICAgICAgIHx8ICcgaWR4X2FfZnJlZSU9 JyB8fCByb3VuZCgoU0VMRUNUIGZyZWVfcGVyY2VudCBGUk9NIHBnc3RhdHR1cGxlKCcke3Ri bH1fYScpKTo6bnVtZXJpYywxKQorICAgICAgICB8fCAnIGlkeF9iX2tiPScgfHwgcGdfcmVs YXRpb25fc2l6ZSgnJHt0Ymx9X2InKS8xMDI0CisgICAgICAgIHx8ICcgaWR4X2Jfc2tpcHM9 JyB8fCBjb2FsZXNjZSgoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZ19zdGF0X2Fs bF9pbmRleGVzIFdIRVJFIGluZGV4cmVsbmFtZT0nJHt0Ymx9X2InKSwgMCk7IgorfQorCitl Y2hvICI9PT0gSE9ULWluZGV4ZWQgYmxvYXQ6ICRDWUNMRVMgY3ljbGVzIHggKCRVUERBVEVT IHVwZGF0ZXMvcm93IHggJFJPV1Mgcm93cykgPT09IgorcnVuX2FybSB0X3ZhYyAxCitydW5f YXJtIHRfbm92YWMgMAorZWNobyAiaWR4X2E6IGJvdW5kZWQgd2l0aCB2YWN1dW1fZWFjaD0x LCB1bmJvdW5kZWQgd2l0aCA9MCAoc3RhbGUgZW50cmllcyBhY2N1bXVsYXRlIgorZWNobyAi dW50aWwgcmVjbGFpbWVkKS4gIGlkeF9iX3NraXBzIGNvdW50cyBlbnRyaWVzIHRoZSBIT1Qt aW5kZXhlZCBwYXRoIGF2b2lkZWQgb24iCitlY2hvICJ0aGUgdW5jaGFuZ2VkIGluZGV4OyBp ZHhfYl9rYiBpcyBvbmx5IHRoZSBub24tSE9ULWZhbGxiYWNrIHJlbWFpbmRlci4iCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoIGIvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApuZXcgZmlsZSBtb2RlIDEw MDc1NQppbmRleCAwMDAwMDAwMDAwMC4uYjJmMGVlNTI1ZDQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoCkBAIC0wLDAgKzEs NTQgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMgQnVpbGQgdHdvIHBvc3RncmVzIHZhcmlh bnRzIGZvciB0ZXBpZCAoSE9ULWluZGV4ZWQpIEEvQiBiZW5jaG1hcmtzLgorIworIyBFbnYg dmFycyAoYWxsIG9wdGlvbmFsKToKKyMgICBSRVBPICAgICAgICAgIC0tIHBhdGggdG8gcG9z dGdyZXMgc291cmNlIHJlcG8gKGRlZmF1bHQ6ICRIT01FL3dzL3Bvc3RncmVzL3RlcGlkLCBv ciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVwbykKKyMgICBCRU5DSCAgICAgICAgIC0tIGJlbmNo IHJvb3QgKGRlZmF1bHQ6IC9zY3JhdGNoL3NpdS1iZW5jaCkKKyMgICBNQVNURVJfUkVWICAg IC0tIHJldmlzaW9uIGZvciB0aGUgIm1hc3RlciIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQn cyBtZXJnZS1iYXNlIHdpdGggb3JpZ2luL21hc3RlcikKKyMgICBURVBJRF9SRVYgICAgIC0t IHJldmlzaW9uIGZvciB0aGUgInRlcGlkIiAgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisj ICAgSk9CUyAgICAgICAgICAtLSBwYXJhbGxlbCBjb21waWxlIGpvYnMgKGRlZmF1bHQ6IG5w cm9jIG9yIDgpCitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRj aC9zaXUtYmVuY2h9CitKT0JTPSR7Sk9CUzotJCggKGNvbW1hbmQgLXYgbnByb2MgPi9kZXYv bnVsbCAmJiBucHJvYykgfHwgc3lzY3RsIC1uIGh3Lm5jcHUgMj4vZGV2L251bGwgfHwgZWNo byA4ICl9CitpZiBbIC16ICIke1JFUE86LX0iIF07IHRoZW4KKyAgZm9yIGNhbmRpZGF0ZSBp biAiJEhPTUUvd3MvcG9zdGdyZXMvdGVwaWQiICIkQkVOQ0gvcmVwbyIgL3NjcmF0Y2gvcGc7 IGRvCisgICAgaWYgWyAtZCAiJGNhbmRpZGF0ZS8uZ2l0IiBdOyB0aGVuIFJFUE89JGNhbmRp ZGF0ZTsgYnJlYWs7IGZpCisgIGRvbmUKK2ZpCis6ICIke1JFUE86P1JFUE8gbm90IHNldCBh bmQgbm8gZGVmYXVsdCBmb3VuZH0iCitjZCAiJFJFUE8iCisKK1RFUElEX1JFVj0ke1RFUElE X1JFVjotdGVwaWR9CitNQVNURVJfUkVWPSR7TUFTVEVSX1JFVjotJChnaXQgbWVyZ2UtYmFz ZSAiJFRFUElEX1JFViIgb3JpZ2luL21hc3RlciAyPi9kZXYvbnVsbCB8fCBnaXQgbWVyZ2Ut YmFzZSAiJFRFUElEX1JFViIgbWFzdGVyKX0KKworZWNobyAiUkVQTz0kUkVQTyAgTUFTVEVS PSRNQVNURVJfUkVWICBURVBJRD0kVEVQSURfUkVWICBKT0JTPSRKT0JTICBCRU5DSD0kQkVO Q0giCisKK2RpZSgpIHsgcHJpbnRmICdidWlsZDogJXNcbicgIiQqIiA+JjI7IGV4aXQgMTsg fQoraWYgZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiB8IGdyZXAgLXYgJ14/PycgfCBncmVwIC1x IC47IHRoZW4KKyAgZGllICJyZXBvIGhhcyB1bnN0YWdlZC91bmNvbW1pdHRlZCBjaGFuZ2Vz OyBzdGFzaCBvciBjb21taXQgZmlyc3QiCitmaQorCitidWlsZF92YXJpYW50KCkgeworICBs b2NhbCBuYW1lPSQxCisgIGxvY2FsIHJldj0kMgorICBsb2NhbCBwcmVmaXg9JEJFTkNILyRu YW1lCisgIGVjaG8gIj09PSBidWlsZGluZyAkbmFtZSAoJHJldikgaW50byAkcHJlZml4Igor ICBbIC1kICIkcHJlZml4IiBdICYmIGZpbmQgIiRwcmVmaXgiIC1taW5kZXB0aCAxIC1kZWxl dGUgJiYgcm1kaXIgIiRwcmVmaXgiCisgIG1rZGlyIC1wICIkcHJlZml4IgorICBnaXQgY2hl Y2tvdXQgLS1xdWlldCAtLWRldGFjaCAiJHJldiIKKyAgbG9jYWwgYmxkPSRCRU5DSC9fYnVp bGRfJG5hbWUKKyAgWyAtZCAiJGJsZCIgXSAmJiBmaW5kICIkYmxkIiAtbWluZGVwdGggMSAt ZGVsZXRlICYmIHJtZGlyICIkYmxkIgorICBtZXNvbiBzZXR1cCAiJGJsZCIgLS1wcmVmaXg9 IiRwcmVmaXgvdXNyL2xvY2FsL3Bnc3FsIiBcCisgICAgLURidWlsZHR5cGU9cmVsZWFzZSAt RGNhc3NlcnQ9ZmFsc2UgXAorICAgIC1EZXh0cmFfdmVyc2lvbj0tc2l1YmVuY2gtJG5hbWUg Pi9kZXYvbnVsbAorICBtZXNvbiBjb21waWxlIC1DICIkYmxkIiAtaiAiJEpPQlMiCisgIG1l c29uIGluc3RhbGwgLUMgIiRibGQiIC0tZGVzdGRpcj0vID4vZGV2L251bGwKKyAgIiRwcmVm aXgvdXNyL2xvY2FsL3Bnc3FsL2Jpbi9wb3N0Z3JlcyIgLS12ZXJzaW9uCit9CisKK09SSUc9 JChnaXQgc3ltYm9saWMtcmVmIC0tcXVpZXQgLS1zaG9ydCBIRUFEIHx8IGdpdCByZXYtcGFy c2UgSEVBRCkKK3RyYXAgJ2dpdCBjaGVja291dCAtLXF1aWV0ICIkT1JJRyInIEVYSVQKKwor YnVpbGRfdmFyaWFudCBtYXN0ZXIgIiRNQVNURVJfUkVWIgorYnVpbGRfdmFyaWFudCB0ZXBp ZCAgIiRURVBJRF9SRVYiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1 L3NjcmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zYWIzMjg5ZGYyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsCkBAIC0w LDAgKzEsMTEgQEAKKy0tIE1peGVkIHdvcmtsb2FkOiA4MCUgc2VsZWN0cywgMjAlIGluZGV4 ZWQtY29sdW1uIHVwZGF0ZXMuCistLSBFeGVyY2lzZXMgYm90aCB0aGUgaG90LWluZGV4ZWQg d3JpdGVyIGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUtYml0bWFwIHJlYWRlci4KK1xzZXQg YWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IGJpZCByYW5kb20oMSwgMTAw MDAwMCkKK1xzZXQgd2hpY2ggcmFuZG9tKDEsIDEwMCkKK0JFR0lOOworU0VMRUNUICogRlJP TSBzaXVfdGFibGUgV0hFUkUgYSA9IDphaWQ7CitcaWYgOndoaWNoID4gODAKKyAgVVBEQVRF IHNpdV90YWJsZSBTRVQgYiA9IDpiaWQgV0hFUkUgYSA9IDphaWQ7CitcZW5kaWYKK0NPTU1J VDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90X2lu ZGV4ZWRfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvaG90 X2luZGV4ZWRfdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZjFiY2Y5NTljNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwKQEAgLTAsMCArMSw2IEBA CistLSBob3QtaW5kZXhlZC1mcmllbmRseSB3b3JrbG9hZDogbmFycm93IHRhYmxlIHdpdGgg YSBmZXcgbm9uLVBLIGluZGV4ZXMuCistLSBFYWNoIFVQREFURSBjaGFuZ2VzIGEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgY29sdW1uIG9uIGEgcmFuZG9tIHJvdy4KKy0tIFdpdGggaG90 LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5kZXhlZDsgd2l0aG91dCBob3QtaW5kZXhlZCBpdCBp cyBub24tSE9ULgorXHNldCBhaWQgcmFuZG9tKDEsIDpzY2FsZSAqIDEwMDAwMCkKK1xzZXQg bmV3X2IgcmFuZG9tKDEsIDEwMDAwMDApCitVUERBVEUgc2l1X3RhYmxlIFNFVCBiID0gOm5l d19iIFdIRVJFIGEgPSA6YWlkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3Np dS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNDY1Njg5NzYzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbApAQCAtMCwwICsx LDExIEBACistLSByZWFkX2luZGV4c2NhbjogcmVhZC1vbmx5IGJ0cmVlIGluZGV4LXNjYW4g d29ya2xvYWQgY29uZmlybWluZyB0aGUKKy0tIEhPVC1pbmRleGVkIHJlYWQgcGF0aCBhZGRz IG5vIHBlci1zY2FuIG92ZXJoZWFkIG9uIHRhYmxlcyB3aXRoIG5vIHN0YWxlCistLSBlbnRy aWVzLgorLS0gVGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkZWNpZGVzIHN0YWxlbmVz cyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24gYW5kCistLSB0aGUgc2NhbiBkb2VzIG5vdCBy ZXF1ZXN0IHRoZSBpbmRleCB0dXBsZSwgc28gb24gYSBmcmVzaGx5IHJlc2V0IHNpdV90YWJs ZQorLS0gKG5vIHN0YWxlIEhPVC1pbmRleGVkIGVudHJpZXMpIHRoZXJlIHNob3VsZCBiZSBu byBtYXN0ZXItdnMtdGVwaWQKKy0tIGRpZmZlcmVuY2Ugb24gdGhpcyBjZWxsLiAgVGhlIHBy ZWRpY2F0ZSBpcyBhbiBlcXVhbGl0eSBvbiB0aGUKKy0tIGluZGV4ZWQgY29sdW1uIGIgYW5k IHRoZSB0YXJnZXQgbGlzdCBpbmNsdWRlcyB0aGUgbm9uLWluZGV4ZWQgY29sdW1uIGUsCist LSBmb3JjaW5nIGEgcGxhaW4gKGhlYXAtZmV0Y2hpbmcpIGluZGV4IHNjYW4gcmF0aGVyIHRo YW4gYW4gaW5kZXgtb25seSBzY2FuLgorXHNldCBpZCByYW5kb20oMSwgOnJvd3MpCitTRUxF Q1QgYSwgYiwgYywgZCwgZSBGUk9NIHNpdV90YWJsZSBXSEVSRSBiID0gOmlkOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ydW4uc2ggYi9zcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp bmRleCAwMDAwMDAwMDAwMC4uZTEzMjE5MjZmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaApAQCAtMCwwICsxLDM3NyBAQAor IyEvdXNyL2Jpbi9lbnYgYmFzaAorIyBBL0IgcGdiZW5jaCBoYXJuZXNzIGZvciB0ZXBpZDog bWFzdGVyICh1cHN0cmVhbSkgdnMgdGVwaWQgKEhPVC1pbmRleGVkKS4KKyMKKyMgRW52IHZh cnM6CisjICAgU0NBTEUgICAgICAgLS0gcGdiZW5jaCAtcyAoYWxzbyBtdWx0aXBsaWVyIGZv ciBzaXVfdGFibGUgcm93IGNvdW50ID0gU0NBTEUqMTAwaykKKyMgICBDTElFTlRTICAgICAt LSBwZ2JlbmNoIC1jCisjICAgVEhSRUFEUyAgICAgLS0gcGdiZW5jaCAtagorIyAgIERVUkFU SU9OICAgIC0tIHBnYmVuY2ggLVQgKHNlY29uZHMgcGVyIHdvcmtsb2FkKQorIyAgIFdJREVf Q09MUyAgIC0tICMgb2YgaW5kZXhlZCBjb2x1bW5zIGluIHRoZSB3aWRlX3RhYmxlIChkZWZh dWx0IDE2KQorIyAgIFdJREVfU1RFUFMgIC0tIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJ1 cGRhdGVkIGNvbHVtbnMiIGNvdW50cyBmb3IKKyMgICAgICAgICAgICAgICAgIHRoZSB3aWRl IHdvcmtsb2FkIChkZWZhdWx0ICIwLDEsNCw4LFdJREVfQ09MUyIpCisjICAgUE9SVCAgICAg ICAgLS0gcG9zdGdyZXMgcG9ydCAoZGVmYXVsdCA1NzQ4MCkKKyMKKyMgRm9yIGVhY2ggdmFy aWFudCBpbiB7bWFzdGVyLCB0ZXBpZH06CisjICAgaW5pdGRiIGZyZXNoIHBnZGF0YSwgc3Rh cnQgcG9zdGdyZXMsIGNyZWF0ZSB0ZXN0IG9iamVjdHMsCisjICAgcnVuIHdvcmtsb2FkcyAo cGdiZW5jaCAtTiBzaW1wbGVfdXBkYXRlLCBob3RfaW5kZXhlZF91cGRhdGUsIGhvdF9pbmRl eGVkX21peGVkLAorIyAgIHJlYWRfaW5kZXhzY2FuLCBhbmQgd2lkZV9OIGZvciBlYWNoIHZh bHVlIGluIFdJREVfU1RFUFMpLCBjb2xsZWN0IFRQUyArIEhPVAorIyAgIGNvdW50cyArIFdB TCBkZWx0YSArIHBlYWsgQ1BVL1JTUyBzYW1wbGVkIHZpYSBwaWRzdGF0LgorIyBFbWl0cyBD U1YgKyBNYXJrZG93biBzdW1tYXJ5IHVuZGVyIC9zY3JhdGNoL3NpdS1iZW5jaC9yZXN1bHRz Ly4KK3NldCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9zY3JhdGNoL3NpdS1i ZW5jaH0KK1NDQUxFPSR7U0NBTEU6LTIwfQorQ0xJRU5UUz0ke0NMSUVOVFM6LTE2fQorVEhS RUFEUz0ke1RIUkVBRFM6LTh9CitEVVJBVElPTj0ke0RVUkFUSU9OOi0xMjB9CitXSURFX0NP TFM9JHtXSURFX0NPTFM6LTE2fQorV0lERV9TVEVQUz0ke1dJREVfU1RFUFM6LTAsMSw0LDgs MTZ9CitQT1JUPSR7UE9SVDotNTc0ODB9CisKK1RTPSQoZGF0ZSAtdSArJVklbSVkVCVIJU0l U1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvJFRTLmNzdgorTE9HRElSPSRCRU5DSC9sb2dzLyRU UworbWtkaXIgLXAgIiRMT0dESVIiICIkQkVOQ0gvcmVzdWx0cyIKK2VjaG8gInZhcmlhbnQs d29ya2xvYWQsdHBzLGxhdGVuY3lfYXZnX21zLGNsYXNzaWNfaG90X3VwZGF0ZXMsaG90X2lu ZGV4ZWRfdXBkYXRlcyxub25faG90X3VwZGF0ZXMsdG90YWxfdXBkYXRlcyx3YWxfYnl0ZXMs YmxvYXRfcGFnZXNfYmVmb3JlLGJsb2F0X3BhZ2VzX2FmdGVyLGluZGV4X3NpemVfYmVmb3Jl LGluZGV4X3NpemVfYWZ0ZXIsY3B1X3BjdF9wZWFrLHJzc19taWJfcGVhayxwZXJfaW5kZXhf YmVmb3JlLHBlcl9pbmRleF9hZnRlciIgPiAiJE9VVCIKK2VjaG8gIj09PSBzaXUtYmVuY2gg QS9CIHJ1biAkVFMgLT4gJE9VVCAoc2NhbGU9JFNDQUxFIGNsaWVudHM9JENMSUVOVFMgdGhy ZWFkcz0kVEhSRUFEUyBkdXJhdGlvbj0ke0RVUkFUSU9OfXMpIgorCitiaW5fb2YoKSB7Cisg IGVjaG8gIiRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWwvYmluIgorfQorCitMRF9vZigpIHsK KyAgbG9jYWwgYmFzZT0kQkVOQ0gvJDEvdXNyL2xvY2FsL3Bnc3FsCisgICMgTGludXggZGlz dHJvcyB0aGF0IHNwbGl0IDY0LWJpdCBsaWJzIHVzZSBsaWI2NDsgbW9zdCBvdGhlcnMgdXNl IGxpYi4KKyAgaWYgWyAtZCAiJGJhc2UvbGliNjQiIF07IHRoZW4KKyAgICBlY2hvICIkYmFz ZS9saWI2NCIKKyAgZWxzZQorICAgIGVjaG8gIiRiYXNlL2xpYiIKKyAgZmkKK30KKworcHNx bF9hcygpIHsKKyAgbG9jYWwgdj0kMTsgc2hpZnQKKyAgTERfTElCUkFSWV9QQVRIPSIkKExE X29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcHNxbCIgLWggL3RtcCAtcCAiJFBPUlQiIC1V IHBvc3RncmVzIC1YICIkQCIKK30KKworcGdiZW5jaF9hcygpIHsKKyAgbG9jYWwgdj0kMTsg c2hpZnQKKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2 IikvcGdiZW5jaCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVzICIkQCIKK30KKwor c3RhcnRfcGcoKSB7CisgIGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2Rh dGFfJHYKKyAgWyAtZCAiJGRhdGFkaXIiIF0gJiYgZmluZCAiJGRhdGFkaXIiIC1taW5kZXB0 aCAxIC1kZWxldGUgJiYgcm1kaXIgIiRkYXRhZGlyIgorICBta2RpciAtcCAiJGRhdGFkaXIi CisKKyAgTERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2Iikv aW5pdGRiIiAtRCAiJGRhdGFkaXIiIC1VIHBvc3RncmVzID4iJExPR0RJUi9pbml0ZGJfJHYu bG9nIiAyPiYxCisgIGxvY2FsIHNiPSR7U0hBUkVEX0JVRkZFUlM6LTUxMk1CfQorICBjYXQg Pj4gIiRkYXRhZGlyL3Bvc3RncmVzcWwuY29uZiIgPDxFT0YKK3NoYXJlZF9idWZmZXJzID0g JHNiCit3b3JrX21lbSA9IDMyTUIKK21heF93YWxfc2l6ZSA9IDRHQgorc3luY2hyb25vdXNf Y29tbWl0ID0gb24KK2NoZWNrcG9pbnRfdGltZW91dCA9IDEwbWluCit3YWxfbGV2ZWwgPSBy ZXBsaWNhCitsb2dfZGVzdGluYXRpb24gPSAnc3RkZXJyJworbG9nZ2luZ19jb2xsZWN0b3Ig PSBvZmYKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAi JHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8g Ii1wICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAg c2xlZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIGxvY2FsIGRhdGFk aXI9JEJFTkNIL19kYXRhXyR2CisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIg IiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBzdG9wIC1tIGZhc3QgPi9k ZXYvbnVsbCAyPiYxIHx8IHRydWUKK30KKworcG9zdG1hc3Rlcl9waWQoKSB7CisgIGxvY2Fs IHY9JDEKKyAgaGVhZCAtMSAiJEJFTkNIL19kYXRhXyR2L3Bvc3RtYXN0ZXIucGlkIiAyPi9k ZXYvbnVsbAorfQorCitzZXR1cF9zY2hlbWFzKCkgeworICBsb2NhbCB2PSQxCisgIHNlZWRf c2l1X3RhYmxlICIkdiIKKyAgc2VlZF93aWRlX3RhYmxlICIkdiIKKyAgIyBwZ2JlbmNoIHNj aGVtYSBmb3IgYnVpbHQtaW4gc2ltcGxlX3VwZGF0ZS4KKyAgTERfTElCUkFSWV9QQVRIPSIk KExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdiZW5jaCIgLWggL3RtcCAtcCAiJFBP UlQiIC1VIHBvc3RncmVzIFwKKyAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+IiRM T0dESVIvcGdiZW5jaF9pbml0XyR2LmxvZyIgMj4mMQorfQorCisjIHNlZWRfc2l1X3RhYmxl OiAocmUpY3JlYXRlIHRoZSBuYXJyb3cgdGFibGUgdXNlZCBieSB0aGUgc2l1Xyogd29ya2xv YWRzLgorc2VlZF9zaXVfdGFibGUoKSB7CisgIGxvY2FsIHY9JDEKKyAgbG9jYWwgcm93cz0k KChTQ0FMRSAqIDEwMDAwMCkpCisgIHBzcWxfYXMgIiR2IiA8PFNRTAorRFJPUCBUQUJMRSBJ RiBFWElTVFMgc2l1X3RhYmxlOworQ1JFQVRFIFRBQkxFIHNpdV90YWJsZShhIGludCBQUklN QVJZIEtFWSwgYiBpbnQsIGMgaW50LCBkIGludCwgZSB0ZXh0KTsKK0NSRUFURSBJTkRFWCBz aXVfYiBPTiBzaXVfdGFibGUoYik7CitDUkVBVEUgSU5ERVggc2l1X2MgT04gc2l1X3RhYmxl KGMpOworQ1JFQVRFIElOREVYIHNpdV9kIE9OIHNpdV90YWJsZShkKTsKK0lOU0VSVCBJTlRP IHNpdV90YWJsZQorICBTRUxFQ1QgaSwgaSwgaSwgaSwgcmVwZWF0KCd4JywgMjApIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsICRyb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpF KSBzaXVfdGFibGU7CitDSEVDS1BPSU5UOworU1FMCit9CisKKyMgc2VlZF93aWRlX3RhYmxl OiAocmUpY3JlYXRlIHRoZSB3aWRlIHRhYmxlIHdpdGggV0lERV9DT0xTIGluZGV4ZWQgY29s dW1ucy4KK3NlZWRfd2lkZV90YWJsZSgpIHsKKyAgbG9jYWwgdj0kMQorICBsb2NhbCBjb2xk ZWZzPSIiIGluc2VydGNvbHM9IiIgaW5zZXJ0dmFscz0iIiBpZHhsaXN0PSIiCisgIGZvciBp IGluICQoc2VxIDEgIiRXSURFX0NPTFMiKTsgZG8KKyAgICBjb2xkZWZzKz0iLCBjJGkgaW50 IgorICAgIGluc2VydGNvbHMrPSIsIGMkaSIKKyAgICBpbnNlcnR2YWxzKz0iLCBpIgorICAg IGlkeGxpc3QrPSJDUkVBVEUgSU5ERVggd2lkZV9jJGkgT04gd2lkZV90YWJsZShjJGkpOyAi CisgIGRvbmUKKyAgbG9jYWwgd2lkZV9yb3dzPSQoKFNDQUxFICogMTAwMCkpCisgIHBzcWxf YXMgIiR2IiA8PFNRTAorRFJPUCBUQUJMRSBJRiBFWElTVFMgd2lkZV90YWJsZTsKK0NSRUFU RSBUQUJMRSB3aWRlX3RhYmxlKGlkIGludCBQUklNQVJZIEtFWSAkY29sZGVmcyk7CiskaWR4 bGlzdAorSU5TRVJUIElOVE8gd2lkZV90YWJsZShpZCAkaW5zZXJ0Y29scykgU0VMRUNUIGkg JGluc2VydHZhbHMgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHdpZGVfcm93cykgQVMgaTsK K1ZBQ1VVTSAoRlVMTCwgQU5BTFlaRSkgd2lkZV90YWJsZTsKK0NIRUNLUE9JTlQ7CitTUUwK K30KKworIyByZXNldF9zdGF0ZTogcmVzdG9yZSBhIHdvcmtsb2FkJ3MgdGFyZ2V0IHRhYmxl IHRvIGl0cyBzZWVkZWQgYmFzZWxpbmUuCisjIFVzZWQgYmV0d2VlbiB3b3JrbG9hZHMgc28g cGVyLXdvcmtsb2FkIGJsb2F0L2lkeF9zaXplIGRlbHRhcyBhcmUgbm90CisjIHBvbGx1dGVk IGJ5IGNhcnJ5b3ZlciBmcm9tIGVhcmxpZXIgd29ya2xvYWRzIGluIHRoZSBzYW1lIHZhcmlh bnQgcnVuLgorIyBGb3IgcGdiZW5jaF9hY2NvdW50cyB3ZSByZS1pbml0aWFsaXNlIHZpYSBg cGdiZW5jaCAtaWA7IGZvciBvdXIKKyMgaGFuZC1yb2xsZWQgdGFibGVzIHdlIGRyb3AgKyBy ZWNyZWF0ZSArIHJlc2VlZC4KK3Jlc2V0X3N0YXRlKCkgeworICBsb2NhbCB2PSQxIHRhYmxl PSQyCisgIGNhc2UgIiR0YWJsZSIgaW4KKyAgICBwZ2JlbmNoX2FjY291bnRzKQorICAgICAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdiZW5j aCIgLWggL3RtcCAtcCAiJFBPUlQiIC1VIHBvc3RncmVzIFwKKyAgICAgICAgLWkgLXMgIiRT Q0FMRSIgLXEgcG9zdGdyZXMgPj4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAyPiYx CisgICAgICBwc3FsX2FzICIkdiIgLWMgIkNIRUNLUE9JTlQiID4vZGV2L251bGwKKyAgICAg IDs7CisgICAgc2l1X3RhYmxlKQorICAgICAgc2VlZF9zaXVfdGFibGUgIiR2IgorICAgICAg OzsKKyAgICB3aWRlX3RhYmxlKQorICAgICAgc2VlZF93aWRlX3RhYmxlICIkdiIKKyAgICAg IDs7CisgICAgKikKKyAgICAgIGVjaG8gInJlc2V0X3N0YXRlOiB1bmtub3duIHRhYmxlICR0 YWJsZSIgPiYyCisgICAgICByZXR1cm4gMQorICAgICAgOzsKKyAgZXNhYworICBwc3FsX2Fz ICIkdiIgLWMgIlNFTEVDVCBwZ19zdGF0X3Jlc2V0X3NpbmdsZV90YWJsZV9jb3VudGVycygn JHRhYmxlJzo6cmVnY2xhc3M6Om9pZCkiID4vZGV2L251bGwKK30KKworYmxvYXRfc3RhdHMo KSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgcHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBwZ190YWJsZV9zaXplKCckdGFibGUnKS84MTkyIHx8ICcsJyB8fCBwZ19pbmRleGVzX3Np emUoJyR0YWJsZScpIgorfQorCisjIHNpdV9jb3VudDogbnVtYmVyIG9mIEhPVC1pbmRleGVk IHVwZGF0ZXMgb2JzZXJ2ZWQgb24gJHRhYmxlIHNpbmNlIGl0cworIyBwZ3N0YXQgY291bnRl cnMgd2VyZSBsYXN0IHJlc2V0LiAgUmV0dXJucyAiMCIgb24gbWFzdGVyICh3aGVyZSB0aGUK KyMgY291bnRlciBjb2x1bW4gZG9lcyBub3QgZXhpc3QpIHNvIHRoZSBDU1YgY29sdW1uIHN0 YXlzIG51bWVyaWMuCitzaXVfY291bnQoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAg bG9jYWwgdmFsCisgIHZhbD0kKHBzcWxfYXMgIiR2IiAtQXRjIFwKKyAgICAiU0VMRUNUIGNv YWxlc2NlKG5fdHVwX2hvdF9pbmRleGVkX3VwZCwgMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFi bGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciIDI+L2Rldi9udWxsKQorICBbWyAiJHZhbCIg PX4gXlswLTldKyQgXV0gfHwgdmFsPTAKKyAgZWNobyAiJHZhbCIKK30KKworIyBwZXJfaW5k ZXhfc2l6ZXM6IGVtaXQgImlkeDE9Ynl0ZXM7aWR4Mj1ieXRlczsuLi4iIGZvciB0aGUgaW5k ZXhlcyBvbgorIyAkdGFibGUsIHNvcnRlZCBieSBpbmRleHJlbGlkLiAgVXNlZCBieSB0aGUg d2lkZV8qIHdvcmtsb2FkcyBzbyB3ZSBjYW4KKyMgc2VlIHBlci1jb2x1bW4gaW5kZXggZ3Jv d3RoIHJhdGhlciB0aGFuIGp1c3QgdGhlIGFnZ3JlZ2F0ZS4gIFJldHVybnMKKyMgdGhlIGxp dGVyYWwgIm5vbmUiIHdoZW4gJHRhYmxlIGhhcyBubyBpbmRleGVzLgorcGVyX2luZGV4X3Np emVzKCkgeworICBsb2NhbCB2PSQxIHRhYmxlPSQyCisgIGxvY2FsIG91dAorICBvdXQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHN0cmluZ19hZ2coCisgICAgICAgICAgIGkucmVs bmFtZSB8fCAnPScgfHwgcGdfcmVsYXRpb25fc2l6ZShpLm9pZCk6OnRleHQsCisgICAgICAg ICAgICc7JyBPUkRFUiBCWSBpLm9pZCkKKyAgICAgICAgIEZST00gcGdfY2xhc3MgdAorICAg ICAgICAgSk9JTiBwZ19pbmRleCBpeCBPTiBpeC5pbmRyZWxpZCA9IHQub2lkCisgICAgICAg ICBKT0lOIHBnX2NsYXNzIGkgIE9OIGkub2lkID0gaXguaW5kZXhyZWxpZAorICAgICAgICAg V0hFUkUgdC5yZWxuYW1lID0gJyR0YWJsZSciKQorICBbIC1uICIkb3V0IiBdIHx8IG91dD0i bm9uZSIKKyAgZWNobyAiJG91dCIKK30KKworc2FtcGxlX3BlYWsoKSB7CisgICMgU2FtcGxl IENQVSAvIFJTUyBvZiB0aGUgcG9zdG1hc3RlciB0cmVlIGZvciAkRFVSQVRJT04rNSBzZWNv bmRzLgorICAjIFdyaXRlcyAicGVha19jcHVfcGN0LHBlYWtfcnNzX21pYiIgdG8gdGhlIGdp dmVuIG91dGZpbGUuICBQb3J0YWJsZSBhY3Jvc3MKKyAgIyBMaW51eCAvIEZyZWVCU0QgKGZh bGxzIGJhY2sgdG8gcGdyZXAgKyBwZXItcGlkIHBzIHdoZXJlIC0tcHBpZCBpc24ndAorICAj IGF2YWlsYWJsZSkuICBSZXR1cm5zICdOQSxOQScgaWYgdGhlIHNhbXBsZXIgY2FuJ3QgY29s bGVjdCB1c2VmdWwgZGF0YS4KKyAgbG9jYWwgb3V0ZmlsZT0kMSB2PSQyCisgIGxvY2FsIGxl YWRlcgorICBsZWFkZXI9JChwb3N0bWFzdGVyX3BpZCAiJHYiKQorICBbIC16ICIkbGVhZGVy IiBdICYmIHsgZWNobyAiTkEsTkEiID4gIiRvdXRmaWxlIjsgcmV0dXJuOyB9CisgIGxvY2Fs IGR1cj0kKCggRFVSQVRJT04gKyA1ICkpCisgICgKKyAgICBsb2NhbCBtYXhfY3B1PTAKKyAg ICBsb2NhbCBtYXhfcnNzPTAKKyAgICBsb2NhbCB0MD0kKGRhdGUgKyVzKQorICAgIHdoaWxl IDo7IGRvCisgICAgICAjIENoaWxkcmVuIG9mIHRoZSBsZWFkZXIgKyB0aGUgbGVhZGVyIGl0 c2VsZi4KKyAgICAgIGxvY2FsIHBpZHMKKyAgICAgIHBpZHM9JCggKHBncmVwIC1QICIkbGVh ZGVyIiAyPi9kZXYvbnVsbDsgZWNobyAiJGxlYWRlciIpIHwgdHIgJ1xuJyAnICcpCisgICAg ICBsb2NhbCBzYW1wbGUKKyAgICAgIHNhbXBsZT0kKHBzIC1vIHBjcHU9LHJzcz0gLXAgJHBp ZHMgMj4vZGV2L251bGwgfCBcCisgICAgICAgICAgICAgICBhd2sgJ3tjcHUrPSQxOyByc3Mr PSQyfSBFTkR7cHJpbnRmICIlLjFmICVkXG4iLCBjcHUrMCwgcnNzKzB9JykKKyAgICAgIGxv Y2FsIGMgcgorICAgICAgcmVhZCAtciBjIHIgPDw8IiRzYW1wbGUiCisgICAgICBpZiBbIC1u ICIke2M6LX0iIF0gJiYgWyAtbiAiJHtyOi19IiBdOyB0aGVuCisgICAgICAgIGF3ayAtdiBt PSIkbWF4X2NwdSIgLXYgYz0iJGMiICdCRUdJTntleGl0ICEoYz5tKX0nICYmIG1heF9jcHU9 JGMKKyAgICAgICAgWyAiJHIiIC1ndCAiJG1heF9yc3MiIF0gMj4vZGV2L251bGwgJiYgbWF4 X3Jzcz0kcgorICAgICAgZmkKKyAgICAgIGxvY2FsIG5vdz0kKGRhdGUgKyVzKQorICAgICAg WyAkKChub3cgLSB0MCkpIC1nZSAiJGR1ciIgXSAmJiBicmVhaworICAgICAgc2xlZXAgMQor ICAgIGRvbmUKKyAgICBsb2NhbCByc3NfbWliPSQoKCBtYXhfcnNzIC8gMTAyNCApKQorICAg IGVjaG8gIiRtYXhfY3B1LCRyc3NfbWliIiA+ICIkb3V0ZmlsZSIKKyAgKSAmCisgIGVjaG8g JCEKK30KKworcnVuX29uZSgpIHsKKyAgbG9jYWwgdj0kMSB3b3JrbG9hZD0kMiBzY3JpcHQ9 JDMgdGFibGU9JHs0Oi1zaXVfdGFibGV9IGV4dHJhX3NldD0kezU6LX0KKworICBsb2NhbCB3 YWxfc3RhcnQgd2FsX2VuZCBob3Rfc3RhcnQgaG90X2VuZCB0b3RhbF9zdGFydCB0b3RhbF9l bmQgdHBzIGxhdAorICBsb2NhbCBzaXVfc3RhcnQgc2l1X2VuZAorICBsb2NhbCBibG9hdF9i ZWZvcmUgYmxvYXRfYWZ0ZXIgaWR4X2JlZm9yZSBpZHhfYWZ0ZXIKKyAgbG9jYWwgcGVyX2lk eF9iZWZvcmUgcGVyX2lkeF9hZnRlcgorICByZWFkIC1yIGJsb2F0X2JlZm9yZSBpZHhfYmVm b3JlIDw8PCIkKGJsb2F0X3N0YXRzICIkdiIgIiR0YWJsZSIgfCB0ciAsICcgJykiCisgIHBl cl9pZHhfYmVmb3JlPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJsZSIpCisKKyAgd2Fs X3N0YXJ0PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24o KTo6dGV4dCIpCisgIGhvdF9zdGFydD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29h bGVzY2Uobl90dXBfaG90X3VwZCwwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUg cmVsbmFtZT0nJHRhYmxlJyIpCisgIHNpdV9zdGFydD0kKHNpdV9jb3VudCAiJHYiICIkdGFi bGUiKQorICB0b3RhbF9zdGFydD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVz Y2Uobl90dXBfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1l PSckdGFibGUnIikKKworICBsb2NhbCBvdXQ9IiRMT0dESVIvJHt2fV8ke3dvcmtsb2FkfS5s b2ciCisgIGxvY2FsIGNwdV9yc3NfZmlsZT0kTE9HRElSLyR7dn1fJHt3b3JrbG9hZH0uY3B1 CisgIGxvY2FsIHNhbXBsZXJfcGlkCisgIHNhbXBsZXJfcGlkPSQoc2FtcGxlX3BlYWsgIiRj cHVfcnNzX2ZpbGUiICIkdiIpCisKKyAgc2V0ICtlCisgIGNhc2UgIiR3b3JrbG9hZCIgaW4K KyAgICBzaW1wbGVfdXBkYXRlKQorICAgICAgcGdiZW5jaF9hcyAiJHYiIC1OIC1jICIkQ0xJ RU5UUyIgLWogIiRUSFJFQURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1uIHBvc3Rn cmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICB3aWRlXyopCisgICAgICAjIGJ1aWxk IHRoZSBTRVQgY2xhdXNlIGZyb20gZXh0cmFfc2V0IHdoaWNoIGlzICJjMT06dixjMj06diwu Li4iCisgICAgICBwZ2JlbmNoX2FzICIkdiIgLWYgPChzZWQgInMvOndpZGVfc2V0X2NsYXVz ZS8kZXh0cmFfc2V0LyIgIiRzY3JpcHQiKSBcCisgICAgICAgIC1jICIkQ0xJRU5UUyIgLWog IiRUSFJFQURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJzY2FsZT0kU0NBTEUi IC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICByZWFkX2luZGV4c2Nh bikKKyAgICAgICMgcmVhZC1vbmx5OyBwYXNzIHRoZSByb3cgY291bnQgc28gdGhlIHNjcmlw dCBjYW4gcGljayByYW5kb20ga2V5cworICAgICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2Ny aXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhSRUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAg ICAgICAtRCAicm93cz0kKChTQ0FMRSAqIDEwMDAwMCkpIiAtbiBwb3N0Z3JlcyA+IiRvdXQi IDI+JjEKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAtZiAiJHNj cmlwdCIgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAg ICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7OworICBlc2FjCisgIHNl dCAtZQorCisgIHdhaXQgIiRzYW1wbGVyX3BpZCIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBs b2NhbCBjcHVfcnNzCisgIGNwdV9yc3M9JChjYXQgIiRjcHVfcnNzX2ZpbGUiIDI+L2Rldi9u dWxsIHx8IGVjaG8gIk5BLE5BIikKKworICB0cHM9JChhd2sgJy90cHMgPSAve3ByaW50ICQz OyBleGl0fScgIiRvdXQiKQorICBsYXQ9JChhd2sgJy9sYXRlbmN5IGF2ZXJhZ2UgPSAve3By aW50ICQ0OyBleGl0fScgIiRvdXQiKQorICB0cHM9JHt0cHM6LU5BfQorICBsYXQ9JHtsYXQ6 LU5BfQorCisgIHdhbF9lbmQ9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X2VuZD0kKHBzcWxfYXMgIiR2IiAtQXRjICJT RUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X3VwZCwwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJs ZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisgIHNpdV9lbmQ9JChzaXVfY291bnQgIiR2 IiAiJHRhYmxlIikKKyAgdG90YWxfZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBj b2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJl bG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIHdhbF9ieXRlcworICB3YWxfYnl0ZXM9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3dhbF9sc25fZGlmZignJHdhbF9lbmQnOjpw Z19sc24sICckd2FsX3N0YXJ0Jzo6cGdfbHNuKTo6YmlnaW50IikKKworICAjIENhcHR1cmUg YSBXQUwgcmVjb3JkLXR5cGUgaGlzdG9ncmFtIGZvciB0aGlzIHdvcmtsb2FkLiAgcGdfd2Fs ZHVtcCdzCisgICMgLS1zdGF0cz1yZWNvcmQgb3V0cHV0IGlzIHJpY2ggKH42MCBsaW5lcykg c28gc3Rhc2ggaXQgaW4gTE9HRElSCisgICMgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGZvbGQg aW50byB0aGUgQ1NWLiAgVG9sZXJhdGUgZmFpbHVyZXM6IGlmIHRoZQorICAjIHNlZ21lbnQg Y29udGFpbmluZyB3YWxfc3RhcnQgaGFzIGJlZW4gcmVjeWNsZWQgKHJhcmUgd2l0aAorICAj IG1heF93YWxfc2l6ZT00R0IgYnV0IHBvc3NpYmxlIHVuZGVyIGxvbmcgY2hhaW5lZCBydW5z KSwgd2UgZW1pdCBhCisgICMgbm90ZSBhbmQgbW92ZSBvbiBpbnN0ZWFkIG9mIGFib3J0aW5n IHRoZSB3aG9sZSBydW4uCisgIGxvY2FsIHdhbF9zdGF0c19maWxlPSRMT0dESVIvJHt2fV8k e3dvcmtsb2FkfS53YWxzdGF0cworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2Iiki ICIkKGJpbl9vZiAiJHYiKS9wZ193YWxkdW1wIiBcCisgICAgLS1zdGF0cz1yZWNvcmQgLXAg IiRCRU5DSC9fZGF0YV8kdi9wZ193YWwiIFwKKyAgICAtLXN0YXJ0PSIkd2FsX3N0YXJ0IiAt LWVuZD0iJHdhbF9lbmQiIFwKKyAgICA+ICIkd2FsX3N0YXRzX2ZpbGUiIDI+ICIke3dhbF9z dGF0c19maWxlfS5lcnIiIFwKKyAgICB8fCBlY2hvICJwZ193YWxkdW1wIHVuYXZhaWxhYmxl IGZvciB0aGlzIHJhbmdlOyBzZWUgJHt3YWxfc3RhdHNfZmlsZX0uZXJyIiA+ICIkd2FsX3N0 YXRzX2ZpbGUiCisKKyAgcmVhZCAtciBibG9hdF9hZnRlciBpZHhfYWZ0ZXIgPDw8IiQoYmxv YXRfc3RhdHMgIiR2IiAiJHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9hZnRlcj0k KHBlcl9pbmRleF9zaXplcyAiJHYiICIkdGFibGUiKQorCisgIGxvY2FsIGhvdD0kKChob3Rf ZW5kIC0gaG90X3N0YXJ0KSkKKyAgbG9jYWwgc2l1PSQoKHNpdV9lbmQgLSBzaXVfc3RhcnQp KQorICBsb2NhbCB0b3Q9JCgodG90YWxfZW5kIC0gdG90YWxfc3RhcnQpKQorICBsb2NhbCBj bGFzc2ljX2hvdD0kKChob3QgLSBzaXUpKQorICBsb2NhbCBub25faG90PSQoKHRvdCAtIGhv dCkpCisKKyAgcHJpbnRmICclcywlcywlcywlcywlZCwlZCwlZCwlZCwlcywlcywlcywlcywl cywlcywlcywlc1xuJyBcCisgICAgIiR2IiAiJHdvcmtsb2FkIiAiJHRwcyIgIiRsYXQiICIk Y2xhc3NpY19ob3QiICIkc2l1IiAiJG5vbl9ob3QiICIkdG90IiBcCisgICAgIiR3YWxfYnl0 ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgXAorICAgICIkaWR4 X2JlZm9yZSIgIiRpZHhfYWZ0ZXIiIFwKKyAgICAiJGNwdV9yc3MiICIkcGVyX2lkeF9iZWZv cmUiICIkcGVyX2lkeF9hZnRlciIgPj4gIiRPVVQiCisgIHByaW50ZiAnICAlLThzICUtMTRz IHRwcz0lMTBzIGxhdD0lNnMgY2xhc3NpY19ob3Q9JTdkIGhpPSU3ZCBub25faG90PSU3ZCB0 b3Q9JS03ZCB3YWw9JTEycyBibG9hdD0lcy0+JXMgaWR4PSVzLT4lcyBjcHVfcnNzPSVzXG4n IFwKKyAgICAiJHYiICIkd29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIg IiRzaXUiICIkbm9uX2hvdCIgIiR0b3QiICIkd2FsX2J5dGVzIiBcCisgICAgIiRibG9hdF9i ZWZvcmUiICIkYmxvYXRfYWZ0ZXIiICIkaWR4X2JlZm9yZSIgIiRpZHhfYWZ0ZXIiICIkY3B1 X3JzcyIKK30KKworYnVpbGRfd2lkZV9zZXRfY2xhdXNlKCkgeworICAjIGVtaXQgZS5nLiAi YzE9OnYsYzI9OnYsLi4uLGNOPTp2IiBmb3IgZmlyc3QgTiBjb2xzLgorICBsb2NhbCBuPSQx CisgIGlmIFsgIiRuIiAtZXEgMCBdOyB0aGVuCisgICAgIyBObyBpbmRleGVkLWNvbCB1cGRh dGU7IHRvdWNoIGEgbm9uLWluZGV4ZWQgY29sdW1uIChpZCAlIDEgc28gaXQncyBhIG5vLW9w KQorICAgIGVjaG8gImlkPWlkIgorICAgIHJldHVybgorICBmaQorICBsb2NhbCBjbGF1c2Vz PSIiCisgIGZvciBpIGluICQoc2VxIDEgIiRuIik7IGRvCisgICAgWyAtbiAiJGNsYXVzZXMi IF0gJiYgY2xhdXNlcys9IiwiCisgICAgY2xhdXNlcys9ImMkaT06diIKKyAgZG9uZQorICBl Y2hvICIkY2xhdXNlcyIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBlY2hv ICItLS0gdmFyaWFudDogJHYiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVlCisgIHN0YXJ0X3Bn ICIkdiIKKyAgc2V0dXBfc2NoZW1hcyAiJHYiCisKKyAgcnVuX29uZSAiJHYiIHNpbXBsZV91 cGRhdGUgJycgICAgICAgICAgICAgICAgICAgIHBnYmVuY2hfYWNjb3VudHMKKyAgcmVzZXRf c3RhdGUgIiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIGhvdF9pbmRleGVkX3VwZGF0 ZSAgICAiJEJFTkNIL3NjcmlwdHMvaG90X2luZGV4ZWRfdXBkYXRlLnNxbCIgIHNpdV90YWJs ZQorICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5fb25lICIkdiIgaG90X2lu ZGV4ZWRfbWl4ZWQgICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwi ICAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3RhYmxlCisgIHJ1bl9vbmUg IiR2IiByZWFkX2luZGV4c2NhbiAgICAgICAgIiRCRU5DSC9zY3JpcHRzL3JlYWRfaW5kZXhz Y2FuLnNxbCIgICAgICBzaXVfdGFibGUKKworICBmb3IgbiBpbiAke1dJREVfU1RFUFMvLywv IH07IGRvCisgICAgcmVzZXRfc3RhdGUgIiR2IiB3aWRlX3RhYmxlCisgICAgcnVuX29uZSAi JHYiICJ3aWRlXyR7bn0iICIkQkVOQ0gvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwiIHdpZGVf dGFibGUgXAorICAgICAgICAgICAgIiQoYnVpbGRfd2lkZV9zZXRfY2xhdXNlICIkbiIpIgor ICBkb25lCisKKyAgc3RvcF9wZyAiJHYiCitkb25lCisKK2VjaG8gIj09PSByZXN1bHRzOiAk T1VUIgorY29sdW1uIC10IC1zLCAiJE9VVCIgfCBoZWFkIC01MApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw MDAwMDAwMDAwLi42ZDEyN2YxYzAxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2Jl bmNobWFya3Mvc2l1L3NjcmlwdHMvc29hay5zaApAQCAtMCwwICsxLDEyOCBAQAorIyEvdXNy L2Jpbi9lbnYgYmFzaAorIyB0ZXBpZCBzb2FrOiBydW4gaG90X2luZGV4ZWRfdXBkYXRlIGZv ciAkRFVSQVRJT04gc2Vjb25kcyBvbiBlYWNoIHZhcmlhbnQsIHNhbXBsaW5nCisjIFRQUyAv IEhPVC1yYXRlIC8gV0FMIHZvbHVtZSAvIHRhYmxlK2luZGV4IGJsb2F0IGV2ZXJ5ICRTQU1Q TEUgc2Vjb25kcy4KKyMgRW1pdHMgYSBDU1Ygd2l0aCBvbmUgc2FtcGxlIHJvdyBwZXIgdGlj ayBwZXIgdmFyaWFudC4KK3NldCAtZXVvIHBpcGVmYWlsCisKK0JFTkNIPSR7QkVOQ0g6LS9z Y3JhdGNoL3NpdS1iZW5jaH0KK1NDQUxFPSR7U0NBTEU6LTUwfQorQ0xJRU5UUz0ke0NMSUVO VFM6LTE2fQorVEhSRUFEUz0ke1RIUkVBRFM6LTh9CitEVVJBVElPTj0ke0RVUkFUSU9OOi05 MDB9ICAgICAjIDE1IG1pbnV0ZXMKK1NBTVBMRT0ke1NBTVBMRTotNjB9ICAgICAgICAgICMg ZXZlcnkgNjAgcworUE9SVD0ke1BPUlQ6LTU3NTAzfQorU0hBUkVEX0JVRkZFUlM9JHtTSEFS RURfQlVGRkVSUzotMkdCfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VU PSRCRU5DSC9yZXN1bHRzL3NvYWtfJFRTLmNzdgorTE9HRElSPSRCRU5DSC9sb2dzL3NvYWtf JFRTCitta2RpciAtcCAiJExPR0RJUiIKK2VjaG8gInZhcmlhbnQsdF9zZWNzLHRwc19pbnN0 YW50LGhvdF9wY3RfaW5zdGFudCxoZWFwX3BhZ2VzLGluZGV4X2J5dGVzLHdhbF9ieXRlc19z aW5jZV9zdGFydCxuX2RlYWRfdHVwIiA+ICIkT1VUIgorZWNobyAiPT09IHNvYWsgJFRTIC0+ ICRPVVQiCisKK2Jpbl9vZigpICB7IGVjaG8gIiRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWwv YmluIjsgfQorTERfb2YoKSAgIHsgbG9jYWwgYj0kQkVOQ0gvJDEvdXNyL2xvY2FsL3Bnc3Fs OyBbIC1kICIkYi9saWI2NCIgXSAmJiBlY2hvICIkYi9saWI2NCIgfHwgZWNobyAiJGIvbGli IjsgfQorCitwc3FsX2FzKCkgeyBsb2NhbCB2PSQxOyBzaGlmdDsgTERfTElCUkFSWV9QQVRI PSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcHNxbCIgLWggL3RtcCAtcCAiJFBP UlQiIC1VIHBvc3RncmVzIC1YICIkQCI7IH0KK3BnYmVuY2hfYXMoKSB7IGxvY2FsIHY9JDE7 IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgIiRAIjsgfQorCitz dGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMSBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBb IC1kICIkZGF0YWRpciIgXSAmJiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0 ZSAmJiBybWRpciAiJGRhdGFkaXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvaW5pdGRiIiAtRCAi JGRhdGFkaXIiIC1VIHBvc3RncmVzID4iJExPR0RJUi9pbml0ZGJfJHYubG9nIiAyPiYxCisg IGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25mIiA8PEVPRgorc2hhcmVkX2J1ZmZl cnMgPSAkU0hBUkVEX0JVRkZFUlMKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dhbF9zaXplID0g OEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1lb3V0ID0gMTBt aW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2F1dG92YWN1dW0gPSBvbgorYXV0b3ZhY3V1bV9u YXB0aW1lID0gMTBzCithdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQgPSA1MAorYXV0b3Zh Y3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yID0gMC4xCitwb3J0ID0gJFBPUlQKK0VPRgorICBM RF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ19jdGwi IC1EICIkZGF0YWRpciIgXAorICAgIC1vICItcCAkUE9SVCIgLWwgIiRMT0dESVIvcGdfJHYu bG9nIiBzdGFydCA+L2Rldi9udWxsCisgIHNsZWVwIDIKK30KKworc3RvcF9wZygpIHsKKyAg bG9jYWwgdj0kMQorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9v ZiAiJHYiKS9wZ19jdGwiIC1EICIkQkVOQ0gvX2RhdGFfJHYiIHN0b3AgLW0gZmFzdCA+L2Rl di9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitzZXR1cCgpIHsKKyAgbG9jYWwgdj0kMSByb3dz PSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxF IElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUgVEFCTEUgc2l1X3RhYmxlKGEgaW50IFBS SU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50LCBlIHRleHQpOworQ1JFQVRFIElOREVY IHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFURSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFi bGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04gc2l1X3RhYmxlKGQpOworSU5TRVJUIElO VE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBpLCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFTIGk7CitWQUNVVU0gKEFOQUxZWkUpIHNp dV90YWJsZTsKK1NRTAorfQorCitydW5fc29haygpIHsKKyAgbG9jYWwgdj0kMQorICBlY2hv ICItLS0gc29hayAkdiBmb3IgJHtEVVJBVElPTn1zLCBzYW1wbGluZyBldmVyeSAke1NBTVBM RX1zIgorICBzdG9wX3BnICIkdiIgfHwgdHJ1ZQorICBzdGFydF9wZyAiJHYiCisgIHNldHVw ICIkdiIKKyAgbG9jYWwgd2FsMAorICB3YWwwPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIpCisgIGxvY2FsIGhvdDAgdG90MAorICBo b3QwPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUn IikKKyAgdG90MD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uobl90dXBf dXBkLDApICAgICBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nc2l1 X3RhYmxlJyIpCisgIGxvY2FsIHByZXZfaG90PSRob3QwIHByZXZfdG90PSR0b3QwCisKKyAg IyBEcml2ZSBwZ2JlbmNoIGluIHRoZSBiYWNrZ3JvdW5kOyBzYW1wbGVyIGluIGZvcmVncm91 bmQuCisgIHBnYmVuY2hfYXMgIiR2IiAtZiAiJEJFTkNIL3NjcmlwdHMvaG90X2luZGV4ZWRf dXBkYXRlLnNxbCIgXAorICAgIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJFQURTIiAtVCAiJERV UkFUSU9OIiBcCisgICAgLVAgIiRTQU1QTEUiIC1uIHBvc3RncmVzID4iJExPR0RJUi9wZ2Jl bmNoXyR2LmxvZyIgMj4mMSAmCisgIGxvY2FsIHBnYj0kIQorCisgIGxvY2FsIHQ9MAorICB3 aGlsZSBbICIkdCIgLWx0ICIkRFVSQVRJT04iIF07IGRvCisgICAgc2xlZXAgIiRTQU1QTEUi CisgICAgdD0kKCh0ICsgU0FNUExFKSkKKyAgICBsb2NhbCBub3dfaG90IG5vd190b3Qgd2Fs X25vdyB3YWxfYnl0ZXMgaGVhcF9wYWdlcyBpZHhfYnl0ZXMgbl9kZWFkCisgICAgbm93X2hv dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X3VwZCww KSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nc2l1X3RhYmxlJyIp CisgICAgbm93X3RvdD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgY29hbGVzY2Uobl90 dXBfdXBkLDApICAgICBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0n c2l1X3RhYmxlJyIpCisgICAgd2FsX25vdz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qg cGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICAgIHdhbF9ieXRlcz0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfd2FsX2xzbl9kaWZmKCckd2FsX25vdyc6OnBnX2xzbiwg JyR3YWwwJzo6cGdfbHNuKTo6YmlnaW50IikKKyAgICBoZWFwX3BhZ2VzPSQocHNxbF9hcyAi JHYiIC1BdGMgIlNFTEVDVCBwZ190YWJsZV9zaXplKCdzaXVfdGFibGUnKS84MTkyIikKKyAg ICBpZHhfYnl0ZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2luZGV4ZXNfc2l6 ZSgnc2l1X3RhYmxlJykiKQorICAgIG5fZGVhZD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxF Q1QgY29hbGVzY2Uobl9kZWFkX3R1cCwwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hF UkUgcmVsbmFtZT0nc2l1X3RhYmxlJyIpCisKKyAgICBsb2NhbCBkX2hvdD0kKChub3dfaG90 IC0gcHJldl9ob3QpKQorICAgIGxvY2FsIGRfdG90PSQoKG5vd190b3QgLSBwcmV2X3RvdCkp CisgICAgbG9jYWwgdHBzX2kgaG90X3BjdAorICAgIGlmIFsgIiRkX3RvdCIgLWd0IDAgXTsg dGhlbgorICAgICAgdHBzX2k9JChhd2sgLXYgZD0iJGRfdG90IiAtdiBzPSIkU0FNUExFIiAn QkVHSU57cHJpbnRmICIlLjFmIiwgZC9zfScpCisgICAgICBob3RfcGN0PSQoYXdrIC12IGg9 IiRkX2hvdCIgLXYgdD0iJGRfdG90IiAnQkVHSU57cHJpbnRmICIlLjFmIiwgMTAwKmgvdH0n KQorICAgIGVsc2UKKyAgICAgIHRwc19pPTA7IGhvdF9wY3Q9MAorICAgIGZpCisgICAgcHJp bnRmICclcywlZCwlcywlcywlcywlcywlcywlc1xuJyAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiID4+ICIkT1VUIgorICAgIHByaW50ZiAnICAlLTZzIHQ9JS01ZCB0cHM9JThzIGhvdD0l LTVzJSUgaGVhcF9wZ3M9JS03cyBpZHg9JS0xMnMgd2FsPSUtMTJzIGRlYWQ9JXNcbicgXAor ICAgICAgIiR2IiAiJHQiICIkdHBzX2kiICIkaG90X3BjdCIgIiRoZWFwX3BhZ2VzIiAiJGlk eF9ieXRlcyIgIiR3YWxfYnl0ZXMiICIkbl9kZWFkIgorICAgIHByZXZfaG90PSRub3dfaG90 CisgICAgcHJldl90b3Q9JG5vd190b3QKKyAgZG9uZQorCisgIHdhaXQgIiRwZ2IiIDI+L2Rl di9udWxsIHx8IHRydWUKKyAgc3RvcF9wZyAiJHYiCit9CisKK2ZvciB2IGluIG1hc3RlciB0 ZXBpZDsgZG8KKyAgcnVuX3NvYWsgIiR2IgorZG9uZQorCitlY2hvICI9PT0gc29hayByZXN1 bHRzOiAkT1VUIgorY29sdW1uIC10IC1zLCAiJE9VVCIgfCBoZWFkIC04MApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwgYi9z cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3dpZGVfdXBkYXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzJjMmZmMTRhYzQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3dpZGVfdXBkYXRl LnNxbApAQCAtMCwwICsxLDcgQEAKKy0tIFdpZGUtdGFibGUgd29ya2xvYWQuICBUaGUgc2V0 dXAgc2NyaXB0IGNyZWF0ZXMgYSB0YWJsZSB3aXRoIFdJREVfQ09MUyBpbnRlZ2VyCistLSBj b2x1bW5zLCBlYWNoIHNlcGFyYXRlbHkgYnRyZWUtaW5kZXhlZC4gIFRoZSB3b3JrbG9hZCBV UERBVEVzIGEKKy0tIGNvbmZpZ3VyYWJsZSBudW1iZXIgb2YgdGhvc2UgaW5kZXhlZCBjb2x1 bW5zIHBlciB0cmFuc2FjdGlvbgorLS0gKFdJREVfVVBEQ09MUyBlbnYgdmFyKSBvbiBhIHJh bmRvbSByb3cuCitcc2V0IHJpZCByYW5kb20oMSwgOnNjYWxlICogMTAwMCkKK1xzZXQgdiBy YW5kb20oMSwgMTAwMDAwMDAwMCkKK1VQREFURSB3aWRlX3RhYmxlIFNFVCA6d2lkZV9zZXRf Y2xhdXNlIFdIRVJFIGlkID0gOnJpZDsKLS0gCjIuNTAuMQoK --83aaa022bd17276b82d029e5f2d2108609246421--