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 1w9Mwr-001Ndk-2y for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 12:51:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9Mwq-002nC5-0X for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 12:51:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9Mwo-002n8q-2b for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 12:51:27 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9MwX-00000000gES-2dG6 for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 12:51:25 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-35da01fc0baso2169041a91.2 for ; Sun, 05 Apr 2026 05:51:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775393469; cv=none; d=google.com; s=arc-20240605; b=jjjpZ+QWtDws7J61iLghY+x1PBIhyAzIas4p/ENrwKEvaTnOBYCrfS5A2/NafFWZCV J8w1rug7GFfh7JuthW4JNGJtL+Dij6gKHUhosAFPREAA0JSD/S12iXE2A/Q9JZrCldxV 6yAc53OYKwXkghn2W3dwgVsjrnV3fd+6C6ykNfBvKHF7MvzEYumu7sCJDBnAUbZz9x5e RinxuOBzx5hM/OfA6a+dK3mB4aLJR2kuT9zBV819r2TMA6m1UzYg8e7SLKG8z3TSMh+Y n1sCsvSCthoWXdqFqtocEDPMiGeX3feCJ5F15HHQgadNVNh79qwwUoxeSR6cyIsk2big kQrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=m1H1nYdFkhJel1u+fDc9MR7NNphPNF6IwY/k1LOERZQ=; fh=K2htOnSx73M68GVe7cMWTBnNfbcyWLNGg6ywP7dKXPA=; b=bEhrLbGbxivTihLTyz6zYsPY+H3CWjvLwpmrit6dlkFLFy0+cR4s8CAC6/2yrEqkx8 Z2WTk5OuGi3fnuhrskfrjfzwAdQOjLNb3m/laTFnY+w62o4NmA0afpdRC9mdgYM8lG1b maaq3yBjEgup7hJ0QHTFh17KfK0gcvyHcibZxI8xYrDB3lOrSD94ccMiYtagCPe31rPS JTd5foKYvqlfaNtUdzjofr0pVD2k0x/SsIp7DUqBKyL85GUUJA324R2CtwfVdznpu14n CE4JISNBLxZ0UCQQRd7udIdw3zHVvdLexhDzr5gNbmvBRpZ7AFFgr4VJzQfc4cfn3W0y q6ow==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775393469; x=1775998269; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=m1H1nYdFkhJel1u+fDc9MR7NNphPNF6IwY/k1LOERZQ=; b=NEr37TB1W7EKU6YEowtsyCiJE03vktpOiErlrqxyJFSyHf0zoDIUfCdL6FtAlU7Wj4 ti+LIsl2/EiahdZv7lqPX95C4JLNbk5qhJjO+/3gdlZ2ctEMW5D4YHaMPCnreb9DXWO5 NeKnb1dNQ1rV+TwsZPSqp1LxjA579WuG85v4iw1biwcsHMKMdhoiK2DZ9zT+VZdoHnvD IkR+LkSqt2DGG7OiJU31zYGcznClPRP6nGnp1vvjJjrAozpqB+QdNg8O1hQtVSBHwJVG 5T+qua9DEkk0t0+PGGHhKMvT3s8zuy/E0mW4sI5P62GApEpfmVi6TGCTyQYWoAFJFKiB SoNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775393469; x=1775998269; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=m1H1nYdFkhJel1u+fDc9MR7NNphPNF6IwY/k1LOERZQ=; b=V95NsnkiTZaak2rckmCdiuT4EfAZ+7DmK1uZFKrjR/K9Lnrg89QDMe7d0u9pFHr2Z/ MyJGG6tOnHxo4mecS5KLtbEMjjtS5vO7AA+XlFGBeteyviPgOr7MWg/SK+kPizTMZfxX +Rrdcbf87e+qg5XLRpasqH1iIpm1wdoS0PvC+dMjPKgVqw4ytXmAz40dbF9PwspSKiYT QhMxG5N1y0vkvFXbgJ04/9c411c+mzt74Uj+b7yN0yKdY44a06bbciIdaPya/FdRW305 P5jJUe92e90i/12AI5Cl6yNtyneJQ+/dbw461Cz3+rpIPG4dDqsZURbeiJrRzhf9Lg+P G08w== X-Forwarded-Encrypted: i=1; AJvYcCVZKvotLkC7SlLXw9FRelQTo+xNa0+hM8UCffyo7c/BEYkhsHFp4/fTtH+GOYTvMm7F2OowtP+4JWFIG+FY@postgresql.org X-Gm-Message-State: AOJu0YyV/6+T9agWtDJ8/U472DtKww8NUxj+7Mz/5tgvY7x3EYt/6J/v bcxtYO8CUhVxKObGt3xVX4weKKhXg1gj7PfdGOqcPiYevanmbnGIAJJ5p1JvvgTWosjwyOKGj41 d/cNcUnOs9p2yfRyhbdOrDNRvrnMtW7k= X-Gm-Gg: AeBDieuLaTk+190PoIRxA8RQC/1XIf9u1ykvcvh2CfuM+COXAAzMFpKZkolvwiwxrII MTkr+fuWM0N5E9GZkX0n6N2hswjbzYOxrietnBJcm1JFc8sZlxAdOIqzDRdcMoLNWYb8oLLqigV 6uLUu89bZ4FGdghmyOeI3p7v3uLOC0lmTu3yqwaxHUq2+1aLtX/Zit4dpcTuwDR8stW5Ba4ZRp/ 3NE6oPi9pz+mvdji6I40aT71Q4A1ouBdklyBlmz6G4yQbOrEZ6UcgYvRPzGYDP1MQ79EEOlvLoW IBYMpKDWQZFZYsxd8LXj+yNazx7vM0mgeUgwT6cV X-Received: by 2002:a17:90b:2691:b0:35d:9c39:4dc9 with SMTP id 98e67ed59e1d1-35de69774b6mr8203918a91.23.1775393468556; Sun, 05 Apr 2026 05:51:08 -0700 (PDT) MIME-Version: 1.0 References: <20260322.142326.546998002680149319.ishii@postgresql.org> <20260330.133428.1197197778850463943.ishii@postgresql.org> In-Reply-To: Reply-To: assam258@gmail.com From: Henson Choi Date: Sun, 5 Apr 2026 21:50:53 +0900 X-Gm-Features: AQROBzD0wRPS6rWwCncLJUaYbjWtwV2_7irhSY77NwmMsgblcD0n_kOMr6Iwl-o Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000007da99064eb601a9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000007da99064eb601a9 Content-Type: multipart/alternative; boundary="00000000000007da98064eb601a7" --00000000000007da98064eb601a7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tatsuo, Attached are 15 incremental patches on top of v46 (replacing the previous 8-patch set). Here is a summary of the changes from the previous version: 0001-0005: Unchanged from the previous set. 0006: Fix DEFINE expression handling in RPR window planning (revised) Integration tests in 0007 revealed two crashes: (1) subquery wrapping with outer aggregate causes WindowAgg removal when RPR window function output is unused, (2) RPR and non-RPR windows coexisting causes SIGSEGV from RPRNavExpr propagating to the wrong WindowAgg. This version extends the fix to extract only Var nodes via pull_var_clause() instead of adding the whole DEFINE expression to the targetlist. The allpaths.c guard is extended to also preserve columns referenced by DEFINE clauses. 0007: Add RPR planner integration tests (new) Planner optimization interactions with RPR windows have been revealing crashes, so this is a dedicated test file: window dedup, subquery flattening, DEFINE propagation, LATERAL, recursive CTE, etc. Will be expanded further. 0008: Replace reduced frame map with single match result (new) RPR processes rows sequentially and maintains at most one active match per start position. This replaces the per-row boolean frame map array with four scalar fields (valid, matched, start, length), simplifying nodeWindowAgg.c. 0009: Add fixed-length group absorption for RPR (new) Extends context absorption to accept fixed-length quantifiers (min =3D=3D max) inside unbounded groups. The NFA compiler optimizes (A B B)+ into (A B{2})+, which previously lost absorption eligibility because only {1,1} children qualified. Now (A B{2})+ and ((A{2} B{3}){2})+ also qualify with no runtime changes. Also fixes two NFA bugs: (1) incorrect absorption at non-judgment points -- added ABSORBABLE check in nfa_states_covered and fixed isAbsorbable propagation in advance exit paths, (2) VAR visited bitmap moved to nfa_add_state_unique to prevent false cycle detection on new-iteration loop-back caused by generalized END chain traversal. Design note posted separately [1]. 0010: Rename rpr_explain test views to descriptive names (new) Replaces sequential view names (rpr_ev83, rpr_ev84) with descriptive names (rpr_ev_nav_prev1, etc.) for maintainability when adding new tests. 0011: Implement 1-slot PREV/NEXT navigation for RPR (was 0007, rebased) Context changes only: optimizer.h include moved to 0006, test view names updated by 0010. 0012: Add JIT compilation support for RPR PREV/NEXT (was 0008, unchanged) Note: master recently disabled JIT by default [3]. A quick benchmark with RPR did not show measurable improvement from JIT. This patch is retained for correctness (the new opcodes must be handled when JIT is enabled), but the practical benefit may be limited. 0013: Add tuplestore trim optimization for RPR PREV navigation (new) The planner extracts max_offset from all PREV calls in DEFINE clauses and sets mark =3D currentpos - max_offset at runtime, so only max_offset rows are retained. Constant expressions are folded by the planner; non-constant offsets (parameters, etc.) are evaluated by the executor at init time via RPR_NAV_OFFSET_NEEDS_EVAL. 0014: Update RPR code comments to reflect 1-slot navigation model (new) Updates stale comments in execRPR.c and parse_rpr.c that still referenced the old 3-slot design. 0015: Implement FIRST/LAST navigation for RPR (work in progress) Adds FIRST(column) and LAST(column) navigation functions per SQL standard. Parser, planner, executor, and tests are included. See the design note [2] for the interaction with context absorption. Not yet done: compound navigation (e.g. PREV(FIRST(col))), tests for FIRST/LAST offset variants, tuplestore mark handling for FIRST, and additional edge-case tests. In the FIRST/LAST design note [2], I listed remaining items that can be done within the current architecture. With this patch set, all items except PREFIX pattern absorption are now covered: fixed-length group absorption (0009), JIT proper support (0012), and FIRST/LAST navigation (0015). PREFIX absorption is planned separately, but stabilizing the base patch takes priority. If it is ready in time, would it make sense to decide then whether to include it in this round? Apart from bug fixes, are there any features you consider essential before the patch can be committed? [1] Fixed-length group absorption design note https://www.postgresql.org/message-id/CAAAe_zAKAGKpK9iHx3ZSuG59sP93r5dfootq= v5tCfaMt%3Dw6wzA%40mail.gmail.com [2] FIRST/LAST navigation design note https://www.postgresql.org/message-id/CAAAe_zCUrKGBgZdaazdO_v9QWHsS_1DXuP%3= DrLeNhO3iwsHwwbg%40mail.gmail.com [3] jit: Change the default to off https://github.com/postgres/postgres/commit/7f8c88c2b872 Best regards, Henson 2026=EB=85=84 4=EC=9B=94 2=EC=9D=BC (=EB=AA=A9) =EC=98=A4=ED=9B=84 12:51, H= enson Choi =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > Hi Tatsuo, > > Thank you for the review and the attached patch for 0005. > I appreciate you taking the time to look at each patch > carefully. > > Attached are 8 incremental patches on top of v46 (replacing > the previous 6-patch set). 0001-0003 are unchanged. 0004 and > 0005 incorporate your feedback below. 0006 is a new planner > fix. Previous 0006 becomes 0007. 0008 is new. > > > 0004: Fix in-place modification of defineClause TargetEntry >> >> Probably we want to modify the comment above since it implies an >> in-place modification? What about something like this? (Modifies -> >> Replace) >> >> /* >> * Replace an expression tree in each DEFINE clause so that all >> Var >> * nodes's varno refers to OUTER_VAR. >> */ >> > > Good point, thank you. Applied in the updated 0004. > > >> > 0005: Fix mark handling for last_value() under RPR >> >> I think instead we can set a mark at frameheadpos when seek type is >> SEEK_TAIL and RPR is enabled. See attached patch. >> > > Thank you for the patch. Your approach is cleaner -- setting > the mark at frameheadpos is more direct than suppressing > advancement. I've adopted it in the updated 0005. > > >> > 0006: Implement 1-slot PREV/NEXT navigation for RPR >> >> Excellent! I will take a look at it. (it will take for a while). >> > > No rush at all. In the meantime, while testing the PREV/NEXT > patch in various query patterns, I found a planner issue. > I've also added JIT support. Here is a summary of the new > patches: > > > 0006: Prevent removal of RPR window functions in unused > subquery outputs > > Wrapping an RPR window query in a subquery with an > outer aggregate causes a crash: > > SELECT count(*) FROM ( > SELECT count(*) OVER w FROM ... > WINDOW w AS (... DEFINE A AS i > PREV(i)) > ) t; > > remove_unused_subquery_outputs() replaces unused subquery > target entries with NULL constants. When an RPR window > function's result is not referenced by the outer query, > this replacement eliminates all active window functions > for the WindowClause, causing the planner to omit the > WindowAgg node. DEFINE clause expressions containing > RPRNavExpr (PREV/NEXT) then lose their execution context, > leading to a crash. > > The fix skips the NULL replacement for window functions > whose WindowClause has a defineClause. Even when the > window function result is unused, RPR pattern matching > (frame reduction) must still execute -- the WindowAgg > node must be preserved. > > An alternative would be to let the planner remove the > window function but teach it to still generate the > WindowAgg node when defineClause is present, even with > no active window functions. That would be a more > targeted optimization but requires deeper planner > changes. Do you think the current approach is > sufficient, or would you prefer a different strategy? > > > 0007: Implement 1-slot PREV/NEXT navigation for RPR > (unchanged from previous 0006) > > >> > 2. LLVM JIT fallback (in 0006): The mid-expression slot swap >> >> I am not an expert of JIT, but for me, it sounds reasonable. We can >> enhance it later on. >> > > 0008: Add JIT compilation support for RPR PREV/NEXT navigation > > EEOP_OUTER_VAR normally uses slot pointers cached in the > entry block, but the mid-expression slot swap in > NAV_SET/RESTORE invalidates them. To avoid penalizing > existing expressions, the reload path is only generated > when RPR navigation opcodes are present in the > expression (compile-time decision). Expressions without > PREV/NEXT produce identical machine code as before. > NAV_SET/RESTORE use the standard build_EvalXFunc pattern. > > A 100K-row PREV/NEXT test case that runs under > jit_above_cost=3D0 is included in rpr.sql. > > I would appreciate your thoughts on these when you have time. > > > Best regards, > Henson > > --00000000000007da98064eb601a7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Attached are 15 increme= ntal patches on top of v46 (replacing
the previous 8-patch set). Here is= a summary of the changes
from the previous version:

=C2=A0 0001-= 0005: Unchanged from the previous set.

=C2=A0 0006: Fix DEFINE expre= ssion handling in RPR window
=C2=A0 =C2=A0 =C2=A0 =C2=A0 planning (revis= ed)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Integration tests in 0007 revealed t= wo crashes:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (1) subquery wrapping with outer= aggregate causes
=C2=A0 =C2=A0 =C2=A0 =C2=A0 WindowAgg removal when RPR= window function output
=C2=A0 =C2=A0 =C2=A0 =C2=A0 is unused, (2) RPR a= nd non-RPR windows coexisting
=C2=A0 =C2=A0 =C2=A0 =C2=A0 causes SIGSEGV= from RPRNavExpr propagating to the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 wrong Wi= ndowAgg. This version extends the fix to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 ext= ract only Var nodes via pull_var_clause()
=C2=A0 =C2=A0 =C2=A0 =C2=A0 in= stead of adding the whole DEFINE expression to
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 the targetlist. The allpaths.c guard is extended
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 to also preserve columns referenced by DEFINE
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 clauses.

=C2=A0 0007: Add RPR planner integration test= s (new)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Planner optimization interaction= s with RPR windows
=C2=A0 =C2=A0 =C2=A0 =C2=A0 have been revealing crash= es, so this is a dedicated
=C2=A0 =C2=A0 =C2=A0 =C2=A0 test file: window= dedup, subquery flattening,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 DEFINE propagat= ion, LATERAL, recursive CTE,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 etc. Will be ex= panded further.

=C2=A0 0008: Replace reduced frame map with single m= atch result
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (new)

=C2=A0 =C2=A0 =C2= =A0 =C2=A0 RPR processes rows sequentially and maintains at
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 most one active match per start position. This
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 replaces the per-row boolean frame map array with
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 four scalar fields (valid, matched, start, leng= th),
=C2=A0 =C2=A0 =C2=A0 =C2=A0 simplifying nodeWindowAgg.c.

=C2= =A0 0009: Add fixed-length group absorption for RPR (new)

=C2=A0 =C2= =A0 =C2=A0 =C2=A0 Extends context absorption to accept fixed-length
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 quantifiers (min =3D=3D max) inside unbounded grou= ps.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 The NFA compiler optimizes (A B B)+ into=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (A B{2})+, which previously lost absorption=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 eligibility because only {1,1} children
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 qualified. Now (A B{2})+ and ((A{2} B{3}){2})+<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 also qualify with no runtime changes. Also f= ixes
=C2=A0 =C2=A0 =C2=A0 =C2=A0 two NFA bugs: (1) incorrect absorption = at
=C2=A0 =C2=A0 =C2=A0 =C2=A0 non-judgment points -- added ABSORBABLE c= heck
=C2=A0 =C2=A0 =C2=A0 =C2=A0 in nfa_states_covered and fixed isAbsor= bable
=C2=A0 =C2=A0 =C2=A0 =C2=A0 propagation in advance exit paths, (2)= VAR
=C2=A0 =C2=A0 =C2=A0 =C2=A0 visited bitmap moved to nfa_add_state_u= nique
=C2=A0 =C2=A0 =C2=A0 =C2=A0 to prevent false cycle detection on ne= w-iteration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 loop-back caused by generalized = END chain
=C2=A0 =C2=A0 =C2=A0 =C2=A0 traversal. Design note posted sepa= rately [1].

=C2=A0 0010: Rename rpr_explain test views to descriptiv= e
=C2=A0 =C2=A0 =C2=A0 =C2=A0 names (new)

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 Replaces sequential view names (rpr_ev83, rpr_ev84)
=C2=A0 =C2=A0= =C2=A0 =C2=A0 with descriptive names (rpr_ev_nav_prev1, etc.) for
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 maintainability when adding new tests.

=C2= =A0 0011: Implement 1-slot PREV/NEXT navigation for RPR
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 (was 0007, rebased)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Contex= t changes only: optimizer.h include moved to
=C2=A0 =C2=A0 =C2=A0 =C2=A0= 0006, test view names updated by 0010.

=C2=A0 0012: Add JIT compila= tion support for RPR PREV/NEXT
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (was 0008, un= changed)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Note: master recently disabled = JIT by default
=C2=A0 =C2=A0 =C2=A0 =C2=A0 [3]. A quick benchmark with R= PR did not show
=C2=A0 =C2=A0 =C2=A0 =C2=A0 measurable improvement from = JIT. This patch is
=C2=A0 =C2=A0 =C2=A0 =C2=A0 retained for correctness = (the new opcodes must
=C2=A0 =C2=A0 =C2=A0 =C2=A0 be handled when JIT is= enabled), but the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 practical benefit may be = limited.

=C2=A0 0013: Add tuplestore trim optimization for RPR PREV<= br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 navigation (new)

=C2=A0 =C2=A0 =C2=A0= =C2=A0 The planner extracts max_offset from all PREV
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 calls in DEFINE clauses and sets mark =3D currentpos
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 - max_offset at runtime, so only max_offset rows
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 are retained. Constant expressions are folded b= y
=C2=A0 =C2=A0 =C2=A0 =C2=A0 the planner; non-constant offsets (paramet= ers,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 etc.) are evaluated by the executor at = init time
=C2=A0 =C2=A0 =C2=A0 =C2=A0 via RPR_NAV_OFFSET_NEEDS_EVAL.
=
=C2=A0 0014: Update RPR code comments to reflect 1-slot
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 navigation model (new)

=C2=A0 =C2=A0 =C2=A0 =C2=A0= Updates stale comments in execRPR.c and
=C2=A0 =C2=A0 =C2=A0 =C2=A0 par= se_rpr.c that still referenced the old 3-slot
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 design.

=C2=A0 0015: Implement FIRST/LAST navigation for RPR
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 (work in progress)

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 Adds FIRST(column) and LAST(column) navigation
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 functions per SQL standard. Parser, planner,
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 executor, and tests are included. See the design
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 note [2] for the interaction with context
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 absorption.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 Not yet= done: compound navigation (e.g.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 PREV(FIRST(= col))), tests for FIRST/LAST offset
=C2=A0 =C2=A0 =C2=A0 =C2=A0 variants= , tuplestore mark handling for FIRST,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 and ad= ditional edge-case tests.

In the FIRST/LAST design note [2], I liste= d remaining
items that can be done within the current architecture.
W= ith this patch set, all items except PREFIX pattern
absorption are now c= overed: fixed-length group absorption
(0009), JIT proper support (0012),= and FIRST/LAST
navigation (0015). PREFIX absorption is planned
separ= ately, but stabilizing the base patch takes
priority. If it is ready in = time, would it make sense
to decide then whether to include it in this r= ound?
Apart from bug fixes, are there any features you
consider essen= tial before the patch can be committed?

[1] Fixed-length group absor= ption design note
https://www.postgresql.org/message-id/CAAAe_zAKAGKpK9iHx3ZSuG59= sP93r5dfootqv5tCfaMt%3Dw6wzA%40mail.gmail.com
[2] FIRST/LAST navigat= ion design note
https://www.postgresql.org/message-id/CAAAe_zCUrKGBgZdaazdO_v9QWHsS= _1DXuP%3DrLeNhO3iwsHwwbg%40mail.gmail.com
[3] jit: Change the defaul= t to off
https://github.com/postgres/postgres/commit/7f8c88c= 2b872

Best regards,
Henson

2026=EB=85=84 4=EC=9B=94 2=EC= =9D=BC (=EB=AA=A9) =EC=98=A4=ED=9B=84 12:51, Henson Choi <assam258@gmail.com>=EB=8B= =98=EC=9D=B4 =EC=9E=91=EC=84=B1:
Hi Tats= uo,

Thank you for the review and the attached patch for 0005.
I a= ppreciate you taking the time to look at each patch
carefully.

At= tached are 8 incremental patches on top of v46 (replacing
the previous 6= -patch set). 0001-0003 are unchanged. 0004 and
0005 incorporate your fee= dback below. 0006 is a new planner
fix. Previous 0006 becomes 0007. 0008= is new.

>=C2=A0 =C2=A00004: Fix in-place modification of defineClause TargetEntr= y

Probably we want to modify the comment above since it implies an
in-place modification? What about something like this? (Modifies -> Repl= ace)

=C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Replace an expression tree in each DEFI= NE clause so that all Var
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* nodes's varno refers to OUTER_VAR.<= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/

Go= od point, thank you. Applied in the updated 0004.
=C2=A0
>=C2=A0 =C2=A00005: Fix mark handling for last_value() under RPR

I think instead we can set a mark at frameheadpos when seek type is
SEEK_TAIL and RPR is enabled. See attached patch.

=
Thank you for the patch. Your approach is cleaner -- setting
= the mark at frameheadpos is more direct than suppressing
advancement. I&= #39;ve adopted it in the updated 0005.
=C2=A0
>=C2=A0 =C2=A00006: Implement 1-slot PREV/NEXT navigation for RPR

Excellent! I will take a look at it. (it will take for a while).

No rush at all. In the meantime, while testing th= e PREV/NEXT
patch in various query patterns, I found a planner issue.I've also added JIT support. Here is a summary of the new
patches:<= br>

=C2=A0 0006: Prevent removal of RPR window functions in unused=C2=A0 =C2=A0 =C2=A0 =C2=A0 subquery outputs

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 Wrapping an RPR window query in a subquery with an
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 outer aggregate causes a crash:

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 SELECT count(*) FROM (
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 SELECT count(*) OVER w FROM ...
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 WINDOW w AS (... DEFINE A AS i > PREV(i))
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 ) t;

=C2=A0 =C2=A0 =C2=A0 =C2=A0 remove_unused_= subquery_outputs() replaces unused subquery
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = target entries with NULL constants. When an RPR window
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 function's result is not referenced by the outer query,
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 this replacement eliminates all active window f= unctions
=C2=A0 =C2=A0 =C2=A0 =C2=A0 for the WindowClause, causing the p= lanner to omit the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 WindowAgg node. DEFINE cl= ause expressions containing
=C2=A0 =C2=A0 =C2=A0 =C2=A0 RPRNavExpr (PREV= /NEXT) then lose their execution context,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 le= ading to a crash.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 The fix skips the NULL= replacement for window functions
=C2=A0 =C2=A0 =C2=A0 =C2=A0 whose Wind= owClause has a defineClause. Even when the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 w= indow function result is unused, RPR pattern matching
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 (frame reduction) must still execute -- the WindowAgg
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 node must be preserved.

=C2=A0 =C2=A0 =C2=A0 = =C2=A0 An alternative would be to let the planner remove the
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 window function but teach it to still generate the
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 WindowAgg node when defineClause is present, even = with
=C2=A0 =C2=A0 =C2=A0 =C2=A0 no active window functions. That would = be a more
=C2=A0 =C2=A0 =C2=A0 =C2=A0 targeted optimization but requires= deeper planner
=C2=A0 =C2=A0 =C2=A0 =C2=A0 changes. Do you think the cu= rrent approach is
=C2=A0 =C2=A0 =C2=A0 =C2=A0 sufficient, or would you p= refer a different strategy?


=C2=A0 0007: Implement 1-slot PREV/N= EXT navigation for RPR
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (unchanged from previ= ous 0006)
=C2=A0
> 2. LLVM JIT fallback (in 0006): The mid-expression slot swa= p

I am not an expert of JIT, but for me, it sounds reasonable.=C2=A0 We can enhance it later on.

=C2=A0 0008: Add J= IT compilation support for RPR PREV/NEXT navigation

=C2=A0 =C2=A0 = =C2=A0 =C2=A0 EEOP_OUTER_VAR normally uses slot pointers cached in the
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 entry block, but the mid-expression slot swap i= n
=C2=A0 =C2=A0 =C2=A0 =C2=A0 NAV_SET/RESTORE invalidates them. To avoid= penalizing
=C2=A0 =C2=A0 =C2=A0 =C2=A0 existing expressions, the reload= path is only generated
=C2=A0 =C2=A0 =C2=A0 =C2=A0 when RPR navigation = opcodes are present in the
=C2=A0 =C2=A0 =C2=A0 =C2=A0 expression (compi= le-time decision). Expressions without
=C2=A0 =C2=A0 =C2=A0 =C2=A0 PREV/= NEXT produce identical machine code as before.
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 NAV_SET/RESTORE use the standard build_EvalXFunc pattern.

=C2=A0= =C2=A0 =C2=A0 =C2=A0 A 100K-row PREV/NEXT test case that runs under
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 jit_above_cost=3D0 is included in rpr.sql.

= I would appreciate your thoughts on these when you have time.


Be= st regards,
Henson
=C2=A0
--00000000000007da98064eb601a7-- --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0001-Remove-unused-regex-include.txt" Content-Disposition: attachment; filename="nocfbot-0001-Remove-unused-regex-include.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7on00 RnJvbSBmNzlkNDM1OGJjMDAzM2JjNGZlOGI0ZjhjOWUzMjkwNGQzZGY2YTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IE1hciAyMDI2IDE5OjA0OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gUmVtb3Zl IHVudXNlZCByZWdleC9yZWdleC5oIGluY2x1ZGUgZnJvbSBub2RlV2luZG93QWdnLmMKCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIHwgMSAtCiAxIGZpbGUgY2hhbmdl ZCwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCA0 Zjg4MmI4NzdiMS4uMTg1ZDdhMGQ1YWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdn LmMKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX2FnZy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIK LSNpbmNsdWRlICJyZWdleC9yZWdleC5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKLS0gCjIuNTAu MSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0002-CHECK_FOR_INTERRUPTS-nfa_add_state_unique.txt" Content-Disposition: attachment; filename="nocfbot-0002-CHECK_FOR_INTERRUPTS-nfa_add_state_unique.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7qie1 RnJvbSAzMWUwN2RjYmQ1MzkxYjdmZjllZjgyOTNmY2IwOTBjZjhmODQ1YzcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjI1OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gbmZhX2FkZF9zdGF0ZV91bmlxdWUoKSBmb3IKIHN0YXRl IGV4cGxvc2lvbiBwYXR0ZXJucwoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMg fCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jCmluZGV4IGJhYjUyNTdmNjhmLi5jZjU0ZTBjNzZjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIu YwpAQCAtMTc2Myw2ICsxNzYzLDggQEAgbmZhX2FkZF9zdGF0ZV91bmlxdWUoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIFJQUk5GQVN0YXRlICoKIAkvKiBDaGVj ayBmb3IgZHVwbGljYXRlIGFuZCBmaW5kIHRhaWwgKi8KIAlmb3IgKHMgPSBjdHgtPnN0YXRlczsg cyAhPSBOVUxMOyBzID0gcy0+bmV4dCkKIAl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisK IAkJaWYgKG5mYV9zdGF0ZXNfZXF1YWwod2luc3RhdGUsIHMsIHN0YXRlKSkKIAkJewogCQkJLyoK LS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-CHECK_FOR_INTERRUPTS-nfa_try_absorb_context.txt" Content-Disposition: attachment; filename="nocfbot-0003-CHECK_FOR_INTERRUPTS-nfa_try_absorb_context.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7sjq2 RnJvbSAwZjE1ZmRhYmMwMWZjMTUwM2YyYTEzMjUzZGY2NTg0NGVjZTRjODZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDExOjAzOjM5ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIENI RUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8gbmZhX3RyeV9hYnNvcmJfY29udGV4dCgpIGxvb3AKCi0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS UFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwppbmRleCBjZjU0ZTBjNzZjMy4u NThmOWRhMGI4MTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKQEAgLTIwODQsNiArMjA4NCw4IEBA IG5mYV90cnlfYWJzb3JiX2NvbnRleHQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgpCiAKIAlmb3IgKG9sZGVyID0gY3R4LT5wcmV2OyBvbGRlciAhPSBOVUxMOyBv bGRlciA9IG9sZGVyLT5wcmV2KQogCXsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwogCQkv KgogCQkgKiBCeSBpbnZhcmlhbnQ6IGN0eC0+cHJldiBjaGFpbiBpcyBpbiBjcmVhdGlvbiBvcmRl ciAob2xkZXN0IGZpcnN0KSwKIAkJICogYW5kIGVhY2ggcm93IGNyZWF0ZXMgYXQgbW9zdCBvbmUg Y29udGV4dC4gU28gYWxsIGNvbnRleHRzIGluIHRoaXMKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1 NSkKCg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt" Content-Disposition: attachment; filename="nocfbot-0004-Fix-defineClause-TargetEntry-copy.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7u4c3 RnJvbSA2NjAxZGRhM2QyOTdlZTg5MjhiYmUxYzAzNTEwMmQ2ODNjNzgyNTFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjIwOjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gRml4IGlu LXBsYWNlIG1vZGlmaWNhdGlvbiBvZiBkZWZpbmVDbGF1c2UgVGFyZ2V0RW50cnkgaW4KIHNldHJl ZnMuYwoKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgfCA0ICsrKy0K IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggNjljZDE4NjFlOWIuLjgxM2EzMjZiZDc4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yNjMzLDcgKzI2MzMsNyBAQCBz ZXRfdXBwZXJfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0 b2Zmc2V0KQogCQkJCQkgICBOVU1fRVhFQ19RVUFMKHBsYW4pKTsKIAogCS8qCi0JICogTW9kaWZp ZXMgYW4gZXhwcmVzc2lvbiB0cmVlIGluIGVhY2ggREVGSU5FIGNsYXVzZSBzbyB0aGF0IGFsbCBW YXIKKwkgKiBSZXBsYWNlIGFuIGV4cHJlc3Npb24gdHJlZSBpbiBlYWNoIERFRklORSBjbGF1c2Ug c28gdGhhdCBhbGwgVmFyCiAJICogbm9kZXMncyB2YXJubyByZWZlcnMgdG8gT1VURVJfVkFSLgog CSAqLwogCWlmIChJc0EocGxhbiwgV2luZG93QWdnKSkKQEAgLTI2NDYsNiArMjY0Niw3IEBAIHNl dF91cHBlcl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRv ZmZzZXQpCiAJCQl7CiAJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmly c3QobCk7CiAKKwkJCQl0bGUgPSBmbGF0Q29weVRhcmdldEVudHJ5KHRsZSk7CiAJCQkJdGxlLT5l eHByID0gKEV4cHIgKikKIAkJCQkJZml4X3VwcGVyX2V4cHIocm9vdCwKIAkJCQkJCQkJICAgKE5v ZGUgKikgdGxlLT5leHByLApAQCAtMjY1NCw2ICsyNjU1LDcgQEAgc2V0X3VwcGVyX3JlZmVyZW5j ZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAkJCQkJCQkJ ICAgcnRvZmZzZXQsCiAJCQkJCQkJCSAgIE5STV9FUVVBTCwKIAkJCQkJCQkJICAgTlVNX0VYRUNf UVVBTChwbGFuKSk7CisJCQkJbGZpcnN0KGwpID0gdGxlOwogCQkJfQogCQl9CiAJfQotLSAKMi41 MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-Fix-mark-handling-last_value-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0005-Fix-mark-handling-last_value-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7vz94 RnJvbSAzMWU3ZGFjYjhiMGZhNmVhZDYzZmY5MmMxOWFhNWRmYjBjZGU3NmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjM3OjUwICswOTAwClN1YmplY3Q6IFtQQVRDSF0gRml4IG1h cmsgaGFuZGxpbmcgZm9yIGxhc3RfdmFsdWUoKSB1bmRlciBSUFIKCkVuYWJsZSBtYXJrIGFkdmFu Y2VtZW50IGluIHdpbmRvd19sYXN0X3ZhbHVlKCkgZm9yCmJldHRlciB0dXBsZXN0b3JlIG1lbW9y eSB1c2FnZSBpbiBub24tUlBSIGNhc2VzLCB3aGlsZQphZGRpbmcgYSBndWFyZCBpbiBXaW5HZXRG dW5jQXJnSW5GcmFtZSB0byBzdXBwcmVzcyBpdApmb3IgUlBSIFNFRUtfVEFJTCB0byBwcmV2ZW50 IHBvc2l0aW9uIGludmFsaWRhdGlvbgpmcm9tIHJlZHVjZWQgZnJhbWUgc2hpZnRzLgotLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEwICsrKysrKysrKysKIHNyYy9i YWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQs IDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggMTg1ZDdhMGQ1YWUuLmFlZDdjYmVmOTlhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC00OTMyLDcgKzQ5MzIsMTcgQEAgV2luR2V0U2xvdEluRnJh bWUoV2luZG93T2JqZWN0IHdpbm9iaiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJaWYgKGlzb3V0 KQogCQkqaXNvdXQgPSBmYWxzZTsKIAlpZiAoc2V0X21hcmspCisJeworCQkvKgorCQkgKiBJZiBS UFIgaXMgZW5hYmxlZCBhbmQgc2VlayB0eXBlIGlzIFdJTkRPV19TRUVLX1RBSUwsIHdlIHNldCB0 aGUKKwkJICogbWFyayBwb3NpdGlvbiB1bmNvbmRpdGlvbmFsbHkgdG8gZnJhbWVoZWFkcG9zLiBJ biB0aGlzIGNhc2UgdGhlCisJCSAqIGZyYW1lIGFsd2F5cyBzdGFydHMgYXQgQ1VSUkVOVF9ST1cg YW5kIG5ldmVyIGdvZXMgYmFjaywgdGh1cworCQkgKiBzZXR0aW5nIHRoZSBtYXJrIGF0IHRoZSBw b3NpdGlvbiBpcyBzYWZlLgorCQkgKi8KKwkJaWYgKHdpbnN0YXRlLT5ycFBhdHRlcm4gIT0gTlVM TCAmJiBzZWVrdHlwZSA9PSBXSU5ET1dfU0VFS19UQUlMKQorCQkJbWFya19wb3MgPSB3aW5zdGF0 ZS0+ZnJhbWVoZWFkcG9zOwogCQlXaW5TZXRNYXJrUG9zaXRpb24od2lub2JqLCBtYXJrX3Bvcyk7 CisJfQogCXJldHVybiAwOwogCiBvdXRfb2ZfZnJhbWU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dm dW5jcy5jCmluZGV4IGVmYjYwYzk5MDUyLi43NGVmMTA5ZjcyZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3dpbmRvd2Z1bmNzLmMKQEAgLTY4Miw3ICs2ODIsNyBAQCB3aW5kb3dfbGFzdF92YWx1ZShQR19G VU5DVElPTl9BUkdTKQogCiAJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5v YmosIHRydWUsIGZjaW5mbyk7CiAJcmVzdWx0ID0gV2luR2V0RnVuY0FyZ0luRnJhbWUod2lub2Jq LCAwLAotCQkJCQkJCQkgIDAsIFdJTkRPV19TRUVLX1RBSUwsIGZhbHNlLAorCQkJCQkJCQkgIDAs IFdJTkRPV19TRUVLX1RBSUwsIHRydWUsCiAJCQkJCQkJCSAgJmlzbnVsbCwgTlVMTCk7CiAJaWYg KGlzbnVsbCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkK Cg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Fix-DEFINE-expression-handling-RPR-window-planning.txt" Content-Disposition: attachment; filename="nocfbot-0006-Fix-DEFINE-expression-handling-RPR-window-planning.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr7ypu5 RnJvbSA3ZGQ4OTZhOGIyNzlhMWYwMmU4YTVkOWYyNDFkOWE1OWEzMmVlNTg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTE6NTU6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIXSBGaXggREVG SU5FIGV4cHJlc3Npb24gaGFuZGxpbmcgaW4gUlBSIHdpbmRvdyBwbGFubmluZwoKdHJhbnNmb3Jt RGVmaW5lQ2xhdXNlKCkgYWRkZWQgZnVsbCBERUZJTkUgZXhwcmVzc2lvbnMgaW5jbHVkaW5nClJQ Uk5hdkV4cHIgKFBSRVYvTkVYVCkgbm9kZXMgdG8gdGhlIHF1ZXJ5IHRhcmdldGxpc3QuICBUaGVz ZQpwcm9wYWdhdGVkIHRvIHVwcGVyIFdpbmRvd0FnZyBub2RlcyB0aGF0IGxhY2sgUlBSIG5hdmln YXRpb24gc3RhdGUsCmNhdXNpbmcgYSBTSUdTRUdWIHdoZW4gUlBSIGFuZCBub24tUlBSIHdpbmRv d3MgY29leGlzdCBpbiB0aGUgc2FtZQpxdWVyeS4KCkFkZCBvbmx5IHRoZSBWYXIgbm9kZXMgcmVm ZXJlbmNlZCBieSBERUZJTkUgZXhwcmVzc2lvbnMgdG8gdGhlCnRhcmdldGxpc3QsIGFuZCBwcm90 ZWN0IHRob3NlIFZhcnMgZnJvbSByZW1vdmFsIGJ5CnJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0 cHV0cygpIHNvIHRoZXkgcmVtYWluIGF2YWlsYWJsZSBpbiB0aGUKdHVwbGVzdG9yZSBzbG90IGZv ciBwYXR0ZXJuIG1hdGNoaW5nIGV2YWx1YXRpb24uCgpNb3ZlIHRoZSBzdWJxdWVyeSB3cmFwcGlu ZyB0ZXN0cyBmcm9tIHJwci5zcWwgdG8gcnByX2ludGVncmF0aW9uLnNxbC4KLS0tCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIHwgIDY4ICsrKysrKysrKysrKysrKysrCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgICAgICAgIHwgMTA2ICsrKysrKysrKysrKysr LS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCA0OCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCBmNDJhMmJh ZTE0YS4uZjBlZjRlMjg5YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2FsbHBhdGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpA QCAtNDc1MCw2ICs0NzUwLDc0IEBAIHJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cyhRdWVy eSAqc3VicXVlcnksIFJlbE9wdEluZm8gKnJlbCwKIAkJaWYgKGNvbnRhaW5fdm9sYXRpbGVfZnVu Y3Rpb25zKHRleHByKSkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIElmIGFueSBSUFIgd2lu ZG93IGNsYXVzZSByZWZlcmVuY2VzIHRoaXMgY29sdW1uIGluIGl0cyBERUZJTkUKKwkJICogY2xh dXNlLCBkb24ndCByZW1vdmUgaXQuICBUaGUgREVGSU5FIGV4cHJlc3Npb24gbmVlZHMgdGhlc2Ug Y29sdW1ucworCQkgKiBpbiB0aGUgdHVwbGVzdG9yZSBzbG90IGZvciBwYXR0ZXJuIG1hdGNoaW5n IGV2YWx1YXRpb24sIGV2ZW4gaWYgdGhlCisJCSAqIG91dGVyIHF1ZXJ5IGRvZXNuJ3QgcmVmZXJl bmNlIHRoZW0uCisJCSAqLworCQlpZiAoSXNBKHRleHByLCBWYXIpKQorCQl7CisJCQlWYXIJCSAg ICp2YXIgPSAoVmFyICopIHRleHByOworCQkJTGlzdENlbGwgICAqd2xjOworCQkJYm9vbAkJbmVl ZGVkX2J5X2RlZmluZSA9IGZhbHNlOworCisJCQlmb3JlYWNoKHdsYywgc3VicXVlcnktPndpbmRv d0NsYXVzZSkKKwkJCXsKKwkJCQlXaW5kb3dDbGF1c2UgKndjID0gbGZpcnN0X25vZGUoV2luZG93 Q2xhdXNlLCB3bGMpOworCisJCQkJaWYgKHdjLT5kZWZpbmVDbGF1c2UgIT0gTklMKQorCQkJCXsK KwkJCQkJTGlzdAkgICAqdmFycyA9IHB1bGxfdmFyX2NsYXVzZSgoTm9kZSAqKSB3Yy0+ZGVmaW5l Q2xhdXNlLCAwKTsKKwkJCQkJTGlzdENlbGwgICAqdmxjOworCisJCQkJCWZvcmVhY2godmxjLCB2 YXJzKQorCQkJCQl7CisJCQkJCQlWYXIJCSAgICpkdmFyID0gKFZhciAqKSBsZmlyc3QodmxjKTsK KworCQkJCQkJaWYgKGR2YXItPnZhcmF0dG5vID09IHZhci0+dmFyYXR0bm8pCisJCQkJCQl7CisJ CQkJCQkJbmVlZGVkX2J5X2RlZmluZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJ CQkJCX0KKwkJCQkJbGlzdF9mcmVlKHZhcnMpOworCQkJCQlpZiAobmVlZGVkX2J5X2RlZmluZSkK KwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWlmIChuZWVkZWRfYnlfZGVmaW5lKQorCQkJ CWNvbnRpbnVlOworCQl9CisKKwkJLyoKKwkJICogSWYgaXQncyBhIHdpbmRvdyBmdW5jdGlvbiBy ZWZlcmVuY2luZyBhIHdpbmRvdyBjbGF1c2Ugd2l0aCBSUFIgKFJvdworCQkgKiBQYXR0ZXJuIFJl Y29nbml0aW9uKSwgZG9uJ3QgcmVtb3ZlIGl0LiAgRXZlbiB3aGVuIHRoZSB3aW5kb3cKKwkJICog ZnVuY3Rpb24gcmVzdWx0IGlzIHVudXNlZCBieSB0aGUgb3V0ZXIgcXVlcnksIHRoZSBSUFIgcGF0 dGVybgorCQkgKiBtYXRjaGluZyAoZnJhbWUgcmVkdWN0aW9uIHZpYSBERUZJTkUvUEFUVEVSTikg bXVzdCBzdGlsbCBleGVjdXRlLgorCQkgKiBSZXBsYWNpbmcgdGhpcyB3aXRoIE5VTEwgd291bGQg bGVhdmUgbm8gYWN0aXZlIHdpbmRvdyBmdW5jdGlvbnMgZm9yCisJCSAqIHRoZSBXaW5kb3dDbGF1 c2UsIGNhdXNpbmcgdGhlIHBsYW5uZXIgdG8gb21pdCB0aGUgV2luZG93QWdnIG5vZGUKKwkJICog ZW50aXJlbHkuCisJCSAqLworCQlpZiAoSXNBKHRleHByLCBXaW5kb3dGdW5jKSkKKwkJeworCQkJ V2luZG93RnVuYyAqd2Z1bmMgPSAoV2luZG93RnVuYyAqKSB0ZXhwcjsKKwkJCUxpc3RDZWxsICAg KndsYzsKKworCQkJZm9yZWFjaCh3bGMsIHN1YnF1ZXJ5LT53aW5kb3dDbGF1c2UpCisJCQl7CisJ CQkJV2luZG93Q2xhdXNlICp3YyA9IGxmaXJzdF9ub2RlKFdpbmRvd0NsYXVzZSwgd2xjKTsKKwor CQkJCWlmICh3Yy0+d2lucmVmID09IHdmdW5jLT53aW5yZWYgJiYKKwkJCQkJd2MtPmRlZmluZUNs YXVzZSAhPSBOSUwpCisJCQkJeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCQlpZiAod2xj ICE9IE5VTEwpCisJCQkJY29udGludWU7CisJCX0KKwogCQkvKgogCQkgKiBPSywgd2UgZG9uJ3Qg bmVlZCBpdC4gIFJlcGxhY2UgdGhlIGV4cHJlc3Npb24gd2l0aCBhIE5VTEwgY29uc3RhbnQuCiAJ CSAqIFByZXNlcnZlIHRoZSBleHBvc2VkIHR5cGUgb2YgdGhlIGV4cHJlc3Npb24sIGluIGNhc2Ug c29tZXRoaW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5kZXggNTUyODNhYjRiYmUuLmRiMTMwOWNh MzExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9ycHIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgiCiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKQEAgLTMxMCw5ICszMTEsNyBAQCB0cmFu c2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBX aW5kb3dEZWYgKndpbmRlZiwKIAlyZXN0YXJnZXRzID0gTklMOwogCWZvcmVhY2gobGMsIHdpbmRl Zi0+cnBDb21tb25TeW50YXgtPnJwRGVmcykKIAl7Ci0JCVRhcmdldEVudHJ5ICp0ZSwKLQkJCQkg ICAqdGVEZWZpbmU7Ci0JCWludAkJCWRlZmluZUV4cHJMb2NhdGlvbjsKKwkJVGFyZ2V0RW50cnkg KnRlRGVmaW5lOwogCiAJCXJlc3RhcmdldCA9IChSZXNUYXJnZXQgKikgbGZpcnN0KGxjKTsKIAkJ bmFtZSA9IHJlc3RhcmdldC0+bmFtZTsKQEAgLTMzNSw1NyArMzM0LDY4IEBAIHRyYW5zZm9ybURl ZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0Rl ZiAqd2luZGVmLAogCQlyZXN0YXJnZXRzID0gbGFwcGVuZChyZXN0YXJnZXRzLCByZXN0YXJnZXQp OwogCiAJCS8qCi0JCSAqIFRyYW5zZm9ybSB0aGUgREVGSU5FIGV4cHJlc3Npb24gKHJlc3Rhcmdl dC0+dmFsKSBhbmQgYWRkIGl0IHRvIHRoZQotCQkgKiB0YXJnZXRsaXN0IGFzIGEgVGFyZ2V0RW50 cnkgaWYgbm90IGFscmVhZHkgcHJlc2VudCwgc28gdGhlIHBsYW5uZXIKLQkJICogY2FuIHByb3Bh Z2F0ZSB0aGUgcmVmZXJlbmNlZCBjb2x1bW5zIHRvIHRoZSBvdXRlciBwbGFuJ3MKLQkJICogdGFy Z2V0bGlzdC4KKwkJICogVHJhbnNmb3JtIHRoZSBERUZJTkUgZXhwcmVzc2lvbi4gIFdlIG11c3Qg Tk9UIGFkZCB0aGUgd2hvbGUKKwkJICogZXhwcmVzc2lvbiB0byB0aGUgcXVlcnkgdGFyZ2V0bGlz dCwgYmVjYXVzZSBpdCBtYXkgY29udGFpbgorCQkgKiBSUFJOYXZFeHByIG5vZGVzIChQUkVWL05F WFQpIHRoYXQgY2FuIG9ubHkgYmUgZXZhbHVhdGVkIGluc2lkZSB0aGUKKwkJICogb3duaW5nIFdp bmRvd0FnZy4KIAkJICoKLQkJICogTm90ZTogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IHRyYW5z Zm9ybXMgYW5kIGNsb2JiZXJzCi0JCSAqIHJlc3RhcmdldC0+dmFsLgorCQkgKiBJbnN0ZWFkLCB3 ZSB0cmFuc2Zvcm0gdGhlIGV4cHJlc3Npb24gZGlyZWN0bHkgYW5kIG9ubHkgZW5zdXJlIHRoYXQK KwkJICogdGhlIGluZGl2aWR1YWwgVmFyIG5vZGVzIGl0IHJlZmVyZW5jZXMgYXJlIHByZXNlbnQg aW4gdGhlCisJCSAqIHRhcmdldGxpc3QsIHNvIHRoZSBwbGFubmVyIGNhbiBwcm9wYWdhdGUgdGhl IHJlZmVyZW5jZWQgY29sdW1ucy4KIAkJICovCisJCXsKKwkJCU5vZGUJICAgKmV4cHI7CisJCQlM aXN0CSAgICp2YXJzOworCQkJTGlzdENlbGwgICAqbGMyOwogCi0JCS8qCi0JCSAqIFNhdmUgdGhl IG9yaWdpbmFsIGV4cHJlc3Npb24gbG9jYXRpb24gYmVmb3JlIHRyYW5zZm9ybWF0aW9uLgotCQkg KiBmaW5kVGFyZ2V0bGlzdEVudHJ5U1FMOTkgbWF5IHJldHVybiBhbiBleGlzdGluZyBUYXJnZXRF bnRyeSB3aG9zZQotCQkgKiBsb2NhdGlvbiBwb2ludHMgdG8gd2hlcmUgaXQgd2FzIG9yaWdpbmFs bHkgY3JlYXRlZCAoZS5nLiwgT1JERVIKLQkJICogQlkpLCBub3QgdGhlIERFRklORSBjbGF1c2Uu IFdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIERFRklORSBsb2NhdGlvbgotCQkgKiBmb3IgYWNjdXJh dGUgZXJyb3IgcmVwb3J0aW5nLgotCQkgKi8KLQkJZGVmaW5lRXhwckxvY2F0aW9uID0gZXhwckxv Y2F0aW9uKHJlc3RhcmdldC0+dmFsKTsKKwkJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwg cmVzdGFyZ2V0LT52YWwsCisJCQkJCQkJCSBFWFBSX0tJTkRfUlBSX0RFRklORSk7CisKKwkJCS8q CisJCQkgKiBQdWxsIG91dCBWYXIgbm9kZXMgZnJvbSB0aGUgdHJhbnNmb3JtZWQgZXhwcmVzc2lv biBhbmQgZW5zdXJlCisJCQkgKiBlYWNoIG9uZSBpcyBwcmVzZW50IGluIHRoZSB0YXJnZXRsaXN0 LiAgVGhpcyBpcyBuZWVkZWQgc28gdGhlCisJCQkgKiBwbGFubmVyIHByb3BhZ2F0ZXMgdGhlIHJl ZmVyZW5jZWQgY29sdW1ucyB0aHJvdWdoIHRoZSBwbGFuCisJCQkgKiB0cmVlLCBtYWtpbmcgdGhl bSBhdmFpbGFibGUgdG8gdGhlIFdpbmRvd0FnZydzIERFRklORQorCQkJICogZXZhbHVhdGlvbi4K KwkJCSAqLworCQkJdmFycyA9IHB1bGxfdmFyX2NsYXVzZShleHByLCAwKTsKKwkJCWZvcmVhY2go bGMyLCB2YXJzKQorCQkJeworCQkJCVZhcgkJICAgKnZhciA9IChWYXIgKikgbGZpcnN0KGxjMik7 CisJCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJCQlMaXN0Q2VsbCAgICp0bDsKIAotCQl0ZSA9 IGZpbmRUYXJnZXRsaXN0RW50cnlTUUw5OShwc3RhdGUsIHJlc3RhcmdldC0+dmFsLAotCQkJCQkJ CQkJICB0YXJnZXRsaXN0LCBFWFBSX0tJTkRfUlBSX0RFRklORSk7CisJCQkJZm9yZWFjaCh0bCwg KnRhcmdldGxpc3QpCisJCQkJeworCQkJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5 ICopIGxmaXJzdCh0bCk7CiAKLQkJLyogLS0tLS0tLS0tLS0tLS0tLS0tLQotCQkgKiBDb3B5IHRo ZSBUYXJnZXRFbnRyeSBmb3IgZGVmaW5lQ2xhdXNlIGFuZCBhbHdheXMgc2V0IHRoZSBwYXR0ZXJu Ci0JCSAqIHZhcmlhYmxlIG5hbWUuIFdlIHVzZSBjb3B5T2JqZWN0IHNvIHRoZSBvcmlnaW5hbCB0 YXJnZXRsaXN0IGVudHJ5Ci0JCSAqIGlzIG5vdCBtb2RpZmllZC4KLQkJICoKLQkJICogTm90ZTog V2UgbXVzdCBhbHdheXMgc2V0IHJlc25hbWUgdG8gdGhlIHBhdHRlcm4gdmFyaWFibGUgbmFtZS4K LQkJICogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGNyZWF0ZXMgbmV3IFRFcyB3aXRoIHJlc25h bWUgPSBOVUxMCi0JCSAqIChyZXNqdW5rIGVudHJpZXMpLCBidXQgcmV0dXJucyBleGlzdGluZyBU RXMgdW5jaGFuZ2VkIHdoZW4gdGhlCi0JCSAqIGV4cHJlc3Npb24gYWxyZWFkeSBleGlzdHMgaW4g dGFyZ2V0bGlzdC4KLQkJICoKLQkJICogRXhhbXBsZTogIlNFTEVDVCBpZCwgZmxhZywgLi4uIFdJ TkRPVyB3IEFTICguLi4gREVGSU5FIFQgQVMgZmxhZykiCi0JCSAqCi0JCSAqIDEuIFNFTEVDVCBs aXN0IHByb2Nlc3NpbmcgY3JlYXRlczogVEV7cmVzbmFtZT0iZmxhZyIsIGV4cHI9ZmxhZ30KLQkJ ICogMi4gREVGSU5FIFQgQVMgZmxhZzogZmluZFRhcmdldGxpc3RFbnRyeVNRTDk5IGZpbmRzIGV4 aXN0aW5nIFRFCi0JCSAqIDMuIHRlLT5yZXNuYW1lIGlzICJmbGFnIiAoZnJvbSBTRUxFQ1QpLCBu b3QgTlVMTAotCQkgKiA0LiBXaXRob3V0IHVuY29uZGl0aW9uYWxseSBzZXR0aW5nIHJlc25hbWUs IHRlRGVmaW5lLT5yZXNuYW1lCi0JCSAqICAgIHdvdWxkIHJlbWFpbiAiZmxhZyIgaW5zdGVhZCBv ZiBwYXR0ZXJuIHZhcmlhYmxlIG5hbWUgIlQiCi0JCSAqIDUuIGJ1aWxkUlBSUGF0dGVybiBidWls ZHMgZGVmaW5lVmFyaWFibGVMaXN0IGZyb20gcmVzbmFtZSwgc28KLQkJICogICAgaXQgd291bGQg Y29udGFpbiBbImZsYWciXSBpbnN0ZWFkIG9mIFsiVCJdCi0JCSAqIDYuIFBhdHRlcm4gdmFyaWFi bGUgIlQiIG5vdCBmb3VuZCAtPiBBc3NlcnQgZmFpbHVyZSBjcmFzaAotCQkgKi8KLQkJdGVEZWZp bmUgPSBjb3B5T2JqZWN0KHRlKTsKLQkJdGVEZWZpbmUtPnJlc25hbWUgPSBwc3RyZHVwKG5hbWUp OworCQkJCQlpZiAoSXNBKHRsZS0+ZXhwciwgVmFyKSAmJgorCQkJCQkJKChWYXIgKikgdGxlLT5l eHByKS0+dmFybm8gPT0gdmFyLT52YXJubyAmJgorCQkJCQkJKChWYXIgKikgdGxlLT5leHByKS0+ dmFyYXR0bm8gPT0gdmFyLT52YXJhdHRubykKKwkJCQkJeworCQkJCQkJZm91bmQgPSB0cnVlOwor CQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKCFmb3VuZCkKKwkJCQl7CisJCQkJ CVRhcmdldEVudHJ5ICpuZXd0bGU7CiAKLQkJLyoKLQkJICogVXBkYXRlIHRoZSBleHByZXNzaW9u IGxvY2F0aW9uIHRvIHBvaW50IHRvIHRoZSBERUZJTkUgY2xhdXNlLiBUaGlzCi0JCSAqIGVuc3Vy ZXMgZXJyb3IgbWVzc2FnZXMgcmVmZXJlbmNlIHRoZSBjb3JyZWN0IHNvdXJjZSBsb2NhdGlvbi4K LQkJICovCi0JCWlmIChkZWZpbmVFeHByTG9jYXRpb24gPj0gMCAmJiBJc0EodGVEZWZpbmUtPmV4 cHIsIFZhcikpCi0JCQkoKFZhciAqKSB0ZURlZmluZS0+ZXhwciktPmxvY2F0aW9uID0gZGVmaW5l RXhwckxvY2F0aW9uOworCQkJCQluZXd0bGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgY29w eU9iamVjdCh2YXIpLAorCQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoKnRhcmdldGxpc3QpICsgMSwK KwkJCQkJCQkJCQkJIE5VTEwsCisJCQkJCQkJCQkJCSB0cnVlKTsKKwkJCQkJKnRhcmdldGxpc3Qg PSBsYXBwZW5kKCp0YXJnZXRsaXN0LCBuZXd0bGUpOworCQkJCX0KKwkJCX0KKwkJCWxpc3RfZnJl ZSh2YXJzKTsKKworCQkJLyogQnVpbGQgdGhlIGRlZmluZUNsYXVzZSBlbnRyeSBkaXJlY3RseSBm cm9tIHRoZSB0cmFuc2Zvcm1lZCBleHByICovCisJCQl0ZURlZmluZSA9IG1ha2VUYXJnZXRFbnRy eSgoRXhwciAqKSBleHByLAorCQkJCQkJCQkJICAgbGlzdF9sZW5ndGgoZGVmaW5lQ2xhdXNlKSAr IDEsCisJCQkJCQkJCQkgICBwc3RyZHVwKG5hbWUpLAorCQkJCQkJCQkJICAgdHJ1ZSk7CisJCX0K IAogCQkvKiBidWlsZCB0cmFuc2Zvcm1lZCBERUZJTkUgY2xhdXNlIChsaXN0IG9mIFRhcmdldEVu dHJ5KSAqLwogCQlkZWZpbmVDbGF1c2UgPSBsYXBwZW5kKGRlZmluZUNsYXVzZSwgdGVEZWZpbmUp OwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0007-Add-RPR-planner-integration-tests.txt" Content-Disposition: attachment; filename="nocfbot-0007-Add-RPR-planner-integration-tests.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr80rz6 RnJvbSA0MTQxNjcwY2ZlNDdlOWFhMmNlYWM3MTdkYmEwZDA5MDE1ZmE4OWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTQ6MDk6NTMgKzA5MDAKU3ViamVjdDogW1BBVENIXSBBZGQgUlBS IHBsYW5uZXIgaW50ZWdyYXRpb24gdGVzdHMKCkFkZCBycHJfaW50ZWdyYXRpb24uc3FsIGNvdmVy aW5nIHBsYW5uZXIgb3B0aW1pemF0aW9uIGludGVyYWN0aW9ucwp3aXRoIFJQUiB3aW5kb3dzOiBm cmFtZSBvcHRpbWl6YXRpb24sIHJ1biBjb25kaXRpb24gcHVzaGRvd24sIHdpbmRvdwpkZWR1cGxp Y2F0aW9uLCB1bnVzZWQgd2luZG93IHJlbW92YWwsIGludmVyc2UgdHJhbnNpdGlvbiwgY29zdApl c3RpbWF0aW9uLCBzdWJxdWVyeSBmbGF0dGVuaW5nLCBERUZJTkUgZXhwcmVzc2lvbiBwcm9wYWdh dGlvbiwgYW5kCkxJTUlULiAgQWxzbyBjb3ZlcnMgaW50ZWdyYXRpb24gc2NlbmFyaW9zIHdpdGgg cGFydGl0aW9uZWQgdGFibGVzLApMQVRFUkFMLCByZWN1cnNpdmUgQ1RFcywgaW5jcmVtZW50YWwg c29ydCwgdm9sYXRpbGUgZnVuY3Rpb25zLCBhbmQKY29ycmVsYXRlZCBzdWJxdWVyaWVzLgotLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dCB8IDg4NSArKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAg ICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbCAg ICAgIHwgNTM3ICsrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE0MjMgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlvbi5zcWwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9pbnRlZ3JhdGlvbi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmEyMWFjNWE4NTg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0CkBAIC0wLDAgKzEsODg1IEBACistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFJQUiBJbnRlZ3JhdGlvbiBUZXN0cworLS0gUGxhbm5lciBvcHRpbWl6YXRpb24gaW50ZXJhY3Rp b24gdGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBWZXJp ZmllcyB0aGF0IGVhY2ggcGxhbm5lciBvcHRpbWl6YXRpb24gY29ycmVjdGx5IGhhbmRsZXMgUlBS IHdpbmRvd3MuCistLSBFdmVuIGlmIGluZGl2aWR1YWwgb3B0aW1pemF0aW9ucyBhcmUgdGVzdGVk IGVsc2V3aGVyZSwgdGhpcyBmaWxlCistLSBwcm92aWRlcyBhIHNpbmdsZSBjaGVja3BvaW50IGZv ciBhbGwgcGxhbm5lci9SUFIgaW50ZXJhY3Rpb25zLgorLS0KKy0tIEEuIFBsYW5uZXIgT3B0aW1p emF0aW9uIFByb3RlY3Rpb24gVGVzdHMKKy0tICAgIEExLiBGcmFtZSBvcHRpbWl6YXRpb24gYnlw YXNzCistLSAgICBBMi4gUnVuIGNvbmRpdGlvbiBwdXNoZG93biBieXBhc3MKKy0tICAgIEEzLiBX aW5kb3cgZGVkdXAgcHJldmVudGlvbiAocGxhbm5lcikKKy0tICAgIEE0LiBXaW5kb3cgZGVkdXAg cHJldmVudGlvbiAocGFyc2VyKQorLS0gICAgQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBwcmV2 ZW50aW9uCistLSAgICBBNi4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5cGFzcworLS0gICAgQTcuIENv c3QgZXN0aW1hdGlvbiBSUFIgYXdhcmVuZXNzCistLSAgICBBOC4gU3VicXVlcnkgZmxhdHRlbmlu ZyBwcmV2ZW50aW9uCistLSAgICBBOS4gREVGSU5FIGV4cHJlc3Npb24gbm9uLXByb3BhZ2F0aW9u CistLSAgICBBMTAuIFJQUiArIExJTUlUCistLQorLS0gQi4gSW50ZWdyYXRpb24gU2NlbmFyaW8g VGVzdHMKKy0tICAgIEIxLiBSUFIgKyBDVEUKKy0tICAgIEIyLiBSUFIgKyBKT0lOCistLSAgICBC My4gUlBSICsgU2V0IG9wZXJhdGlvbnMKKy0tICAgIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0ZW1l bnRzCistLSAgICBCNS4gUlBSICsgUGFydGl0aW9uZWQgdGFibGUKKy0tICAgIEI2LiBSUFIgKyBM QVRFUkFMCistLSAgICBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gICAgQjguIFJQUiArIElu Y3JlbWVudGFsIHNvcnQKKy0tICAgIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJ TkUKKy0tICAgIEIxMC4gUlBSICsgQ29ycmVsYXRlZCBzdWJxdWVyeQorLS0KK0NSRUFURSBUQUJM RSBycHJfaW50ZWcgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfaW50ZWcgVkFM VUVTCisgICAgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDE1KSwgKDQsIDI1KSwgKDUsIDUpLAorICAg ICg2LCAzMCksICg3LCAzNSksICg4LCAyMCksICg5LCA0MCksICgxMCwgNDUpOworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBBMS4gRnJhbWUgb3B0aW1pemF0aW9uIGJ5cGFzcworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBvcHRpbWl6ZV93aW5k b3dfY2xhdXNlcygpIG11c3Qgbm90IGFwcGx5IGZyYW1lIG9wdGltaXphdGlvbiB0byBSUFIgd2lu ZG93cy4KKy0tIE5vbi1SUFI6IGZyYW1lIGlzIG9wdGltaXplZCAoUkFOR0UgLT4gUk9XUyBjb252 ZXJzaW9uLCBldGMuKQorLS0gUlBSOiBmcmFtZSBtdXN0IHN0YXkgYXMgc3BlY2lmaWVkIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCistLSBOb24tUlBS IHdpbmRvdyB3aXRoIGRlZmF1bHQgZnJhbWUgLT4gZnJhbWUgb3B0aW1pemF0aW9uIGFwcGxpZWQK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfaW50 ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCk7CisgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQpCisgICAtPiAgU29ydAorICAgICAgICAg U29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoNSByb3dz KQorCistLSBSUFIgd2luZG93IC0+IGZyYW1lIG9wdGltaXphdGlvbiBtdXN0IE5PVCBjaGFuZ2Ug dGhlIGZyYW1lCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGEgYisKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQK KyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcKKyg2IHJvd3MpCisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gQTIuIFJ1biBjb25kaXRpb24gcHVzaGRvd24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIGZpbmRfd2lu ZG93X3J1bl9jb25kaXRpb25zKCkgbXVzdCBub3QgcHVzaCBtb25vdG9uaWMgZmlsdGVycyBhcyBS dW4gQ29uZGl0aW9ucworLS0gZm9yIFJQUiB3aW5kb3dzLCBiZWNhdXNlIFJQUiByZXN1bHRzIGFy ZSBtYXRjaC1kZXBlbmRlbnQsIG5vdCBtb25vdG9uaWMuCistLSBOb24tUlBSOiBjb3VudCgqKSA+ IDAgcHVzaGVkIGRvd24gYXMgUnVuIENvbmRpdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9N IHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCispIHQgV0hFUkUgY250 ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdAorICAgLT4g IFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBycHJfaW50ZWcuaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAg ICAgUnVuIENvbmRpdGlvbjogKGNvdW50KCopIE9WRVIgdyA+IDApCisgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDcgcm93cykKKworLS0gUlBSOiBjb3VudCgqKSA+ IDAgbXVzdCBOT1QgYmUgcHVzaGVkIGRvd24gKGFwcGVhcnMgYXMgRmlsdGVyLCBub3QgUnVuIENv bmRpdGlvbikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAwOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgU3VicXVlcnkgU2NhbiBvbiB0CisgICBGaWx0ZXI6ICh0LmNudCA+IDApCisg ICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9pbnRl Zy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAg U29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9pbnRlZworKDggcm93cykKKworLS0gVmVyaWZ5IHJlc3VsdHMgYXJlIGNvcnJlY3QKK1NFTEVD VCAqIEZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250Cisg ICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg IFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykg dCBXSEVSRSBjbnQgPiAwCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAzIHwgIDE1IHwgICAyCisgIDUgfCAgIDUgfCAg IDMKKyAgOCB8ICAyMCB8ICAgMworKDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBMy4gV2luZG93IGRl ZHVwIHByZXZlbnRpb24gKHBsYW5uZXIpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIG9wdGltaXplX3dpbmRvd19jbGF1 c2VzKCkgbXVzdCBub3QgbWVyZ2UgUlBSIGFuZCBub24tUlBSIHdpbmRvd3MKKy0tIGV2ZW4gaWYg dGhleSBzaGFyZSB0aGUgc2FtZSBiYXNlIGZyYW1lLgorLS0gVHdvIHdpbmRvd3Mgd2l0aCBzYW1l IE9SREVSIEJZOiBvbmUgUlBSLCBvbmUgbm9uLVJQUiAtPiBzZXBhcmF0ZSBXaW5kb3dBZ2cgbm9k ZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIg QVMgcnByX2NudCwKKyAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZS T00gcnByX2ludGVnCitXSU5ET1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg IFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisg ICAgd19ub3JtYWwgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogd19ub3JtYWwgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdp bmRvdzogd19ycHIgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAgICAgIC0+ ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfaW50ZWcKKyg4IHJvd3MpCisKKy0tIFZlcmlmeSBib3RoIHByb2R1Y2Ug ZGlmZmVyZW50IHJlc3VsdHMKK1NFTEVDVAorICAgIGlkLCB2YWwsCisgICAgY291bnQoKikgT1ZF UiB3X3JwciBBUyBycHJfY250LAorICAgIGNvdW50KCopIE9WRVIgd19ub3JtYWwgQVMgbm9ybWFs X2NudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVworICAgIHdfcnByIEFTIChPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKSwKKyAgICB3X25vcm1hbCBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBycHJfY250IHwgbm9ybWFsX2NudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAxIHwgIDEwIHwgICAgICAgMiB8ICAgICAgICAgMTAKKyAgMiB8ICAyMCB8ICAg ICAgIDAgfCAgICAgICAgICA5CisgIDMgfCAgMTUgfCAgICAgICAyIHwgICAgICAgICAgOAorICA0 IHwgIDI1IHwgICAgICAgMCB8ICAgICAgICAgIDcKKyAgNSB8ICAgNSB8ICAgICAgIDMgfCAgICAg ICAgICA2CisgIDYgfCAgMzAgfCAgICAgICAwIHwgICAgICAgICAgNQorICA3IHwgIDM1IHwgICAg ICAgMCB8ICAgICAgICAgIDQKKyAgOCB8ICAyMCB8ICAgICAgIDMgfCAgICAgICAgICAzCisgIDkg fCAgNDAgfCAgICAgICAwIHwgICAgICAgICAgMgorIDEwIHwgIDQ1IHwgICAgICAgMCB8ICAgICAg ICAgIDEKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEE0LiBXaW5kb3cgZGVkdXAgcHJldmVudGlv biAocGFyc2VyKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbCgpIG11c3Qgbm90 IG1lcmdlIHR3byBSUFIgd2luZG93cyB3aXRoIGRpZmZlcmVudCBERUZJTkUuCistLSBUd28gUlBS IHdpbmRvd3M6IHNhbWUgUEFUVEVSTiBzdHJ1Y3R1cmUsIGRpZmZlcmVudCBERUZJTkUgY29uZGl0 aW9ucy4KKy0tIEVYUExBSU46IG11c3Qgc2hvdyB0d28gc2VwYXJhdGUgV2luZG93QWdnIG5vZGVz CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFTIGNu dF91cCwKKyAgICBjb3VudCgqKSBPVkVSIHcyIEFTIGNudF9kb3duCitGUk9NIHJwcl9pbnRlZwor V0lORE9XCisgICAgdzEgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQor ICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHcyIEFTIChPUkRFUiBC WSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDwg UFJFVih2YWwpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MiBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYSBiKworICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3MSBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9p bnRlZworKDkgcm93cykKKworLS0gVmVyaWZ5IHJlc3VsdHMgZGlmZmVyCitTRUxFQ1QKKyAgICBp ZCwgdmFsLAorICAgIGNvdW50KCopIE9WRVIgdzEgQVMgY250X3VwLAorICAgIGNvdW50KCopIE9W RVIgdzIgQVMgY250X2Rvd24KK0ZST00gcnByX2ludGVnCitXSU5ET1cKKyAgICB3MSBBUyAoT1JE RVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZh bCA+IFBSRVYodmFsKSksCisgICAgdzIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPCBQUkVWKHZhbCkpCitPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudF91cCB8IGNudF9kb3duIAorLS0tLSstLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tCisgIDEgfCAgMTAgfCAgICAgIDIgfCAgICAgICAgMAorICAyIHwgIDIwIHwgICAg ICAwIHwgICAgICAgIDIKKyAgMyB8ICAxNSB8ICAgICAgMiB8ICAgICAgICAwCisgIDQgfCAgMjUg fCAgICAgIDAgfCAgICAgICAgMgorICA1IHwgICA1IHwgICAgICAzIHwgICAgICAgIDAKKyAgNiB8 ICAzMCB8ICAgICAgMCB8ICAgICAgICAwCisgIDcgfCAgMzUgfCAgICAgIDAgfCAgICAgICAgMgor ICA4IHwgIDIwIHwgICAgICAzIHwgICAgICAgIDAKKyAgOSB8ICA0MCB8ICAgICAgMCB8ICAgICAg ICAwCisgMTAgfCAgNDUgfCAgICAgIDAgfCAgICAgICAgMAorKDEwIHJvd3MpCisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBwcmV2ZW50aW9uCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIHJlbW92 ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cygpIG11c3Qgbm90IHJlbW92ZSBSUFIgd2luZG93IGZ1 bmN0aW9ucworLS0gZXZlbiB3aGVuIHRoZWlyIG91dHB1dCBjb2x1bW5zIGFyZSBub3QgcmVmZXJl bmNlZCBieSB0aGUgb3V0ZXIgcXVlcnkuCistLSBSUFIgd2luZG93IG91dHB1dCBub3QgZGlyZWN0 bHkgcmVmZXJlbmNlZCwgYnV0IHBhdHRlcm4gbWF0Y2hpbmcgbXVzdCBzdGlsbCBleGVjdXRlCitT RUxFQ1QgY291bnQoKikgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJw cl9pbnRlZworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQ7CisgY291bnQgCistLS0tLS0tCisg ICAgMTAKKygxIHJvdykKKworLS0gV2l0aCBQUkVWIGluIERFRklORTogd2luZG93IG11c3QgYmUg cHJlc2VydmVkCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBGUk9NICgKKyAgICBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2YWwpKQor KSB0OworIGNvdW50IHwgc3VtIAorLS0tLS0tLSstLS0tLQorICAgIDEwIHwgICA2CisoMSByb3cp CisKKy0tIFdpdGhvdXQgUFJFViBidXQgd2l0aCBERUZJTkU6IHdpbmRvdyBtdXN0IHN0aWxsIGJl IHByZXNlcnZlZAorU0VMRUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNv dW50KCopIE9WRVIgdyBBUyBjIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAg ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIFRSVUUpCispIHQ7CisgY291 bnQgfCBzdW0gCistLS0tLS0tKy0tLS0tCisgICAgMTAgfCAgMTAKKygxIHJvdykKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBBNi4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5cGFzcworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgd2luZG93 cyBtdXN0IG5vdCB1c2UgbW92aW5nIGFnZ3JlZ2F0ZSAoaW52ZXJzZSB0cmFuc2l0aW9uKSBvcHRp bWl6YXRpb24uCistLSBNb3ZpbmcgYWdncmVnYXRlcyByZWNhbGN1bGF0ZSBieSBzdWJ0cmFjdGlu ZyBsZWF2aW5nIHJvd3MsIGJ1dCBSUFIncworLS0gcmVkdWNlZCBmcmFtZXMgbWFrZSB0aGlzIGlu dmFsaWQuCistLSBzdW0oKSBzdXBwb3J0cyBpbnZlcnNlIHRyYW5zaXRpb24uIFdpdGggUlBSLCBp dCBtdXN0IG5vdCBiZSB1c2VkLgorLS0gVmVyaWZ5IGNvcnJlY3RuZXNzOiBzdW0gd2l0aCBSUFIg cGF0dGVybiBtYXRjaGluZworU0VMRUNUIGlkLCB2YWwsCisgICAgc3VtKHZhbCkgT1ZFUiB3IEFT IHBhdHRlcm5fc3VtCitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbCB8IHBhdHRlcm5fc3VtIAorLS0tLSstLS0tLSstLS0tLS0tLS0tLS0t CisgIDEgfCAgMTAgfCAgICAgICAgICAzMAorICAyIHwgIDIwIHwgICAgICAgICAgICAKKyAgMyB8 ICAxNSB8ICAgICAgICAgIDQwCisgIDQgfCAgMjUgfCAgICAgICAgICAgIAorICA1IHwgICA1IHwg ICAgICAgICAgNzAKKyAgNiB8ICAzMCB8ICAgICAgICAgICAgCisgIDcgfCAgMzUgfCAgICAgICAg ICAgIAorICA4IHwgIDIwIHwgICAgICAgICAxMDUKKyAgOSB8ICA0MCB8ICAgICAgICAgICAgCisg MTAgfCAgNDUgfCAgICAgICAgICAgIAorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTcuIENvc3Qg ZXN0aW1hdGlvbiBSUFIgYXdhcmVuZXNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIGNvc3Rfd2luZG93YWdnKCkgbXVz dCBhY2NvdW50IGZvciBERUZJTkUgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGNvc3QuCistLSBWZXJp ZnkgUlBSIFdpbmRvd0FnZyBjb3N0ID4gbm9uLVJQUiBXaW5kb3dBZ2cgY29zdC4KK0NSRUFURSBG VU5DVElPTiBnZXRfd2luZG93YWdnX2Nvc3QocXVlcnkgdGV4dCkgUkVUVVJOUyBudW1lcmljIEFT ICQkCitERUNMQVJFCisgICAgcGxhbiBqc29uOworICAgIGNvc3QgbnVtZXJpYzsKK0JFR0lOCisg ICAgRVhFQ1VURSAnRVhQTEFJTiAoRk9STUFUIEpTT04pICcgfHwgcXVlcnkgSU5UTyBwbGFuOwor ICAgIGNvc3QgOj0gKHBsYW4tPjAtPidQbGFuJy0+PidUb3RhbCBDb3N0Jyk6Om51bWVyaWM7Cisg ICAgUkVUVVJOIGNvc3Q7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGdldF93 aW5kb3dhZ2dfY29zdCgKKyAgICAnU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRl ZworICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgICAgICBQQVRURVJOIChBIEIr IEMrKSBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCksIEMgQVMgdmFsIDwgUFJFVih2YWwpKScp CisgICAgPgorICAgIGdldF93aW5kb3dhZ2dfY29zdCgKKyAgICAnU0VMRUNUIGNvdW50KCopIE9W RVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKScpCisgICAgQVMgcnBy X2Nvc3RfaXNfaGlnaGVyOworIHJwcl9jb3N0X2lzX2hpZ2hlciAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9OIGdldF93aW5kb3dhZ2dfY29zdCh0ZXh0 KTsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQTguIFN1YnF1ZXJ5IGZsYXR0ZW5pbmcgcHJldmVudGlvbgorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBpc19zaW1wbGVfc3VicXVlcnkoKSBwcmV2ZW50cyBwdWxsdXAgb2Ygc3VicXVlcmllcyB3 aXRoIHdpbmRvdyBmdW5jdGlvbnMuCistLSBSUFIgc3VicXVlcnkgbXVzdCBub3QgYmUgZmxhdHRl bmVkIGludG8gdGhlIG91dGVyIHF1ZXJ5LgorLS0gRVhQTEFJTiBtdXN0IHNob3cgU3VicXVlcnkg U2NhbiAobm90IGZsYXR0ZW5lZCkuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9N ICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00g cnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHN1YgorV0hF UkUgY250ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gc3Vi CisgICBGaWx0ZXI6IChzdWIuY250ID4gMCkKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAg ICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcnByX2ludGVnLmlkCisgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCisoOCByb3dzKQorCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEE5LiBERUZJTkUgZXhwcmVzc2lvbiBub24tcHJvcGFnYXRpb24KKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gREVG SU5FIGV4cHJlc3Npb25zIG11c3Qgbm90IGFwcGVhciBpbiB1cHBlciBXaW5kb3dBZ2cncyB0YXJn ZXRsaXN0LgorLS0gT25seSBWYXIgbm9kZXMgc2hvdWxkIGJlIHByb3BhZ2F0ZWQsIG5vdCB0aGUg ZnVsbCBERUZJTkUgZXhwcmVzc2lvbi4KKy0tIEVYUExBSU4gVkVSQk9TRTogb3V0ZXIgV2luZG93 QWdnIG91dHB1dCBtdXN0IE5PVCBjb250YWluIERFRklORSBleHByZXNzaW9uLgorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3X3JwciBBUyBy cHJfY250LAorICAgIGNvdW50KCopIE9WRVIgd19ub3JtYWwgQVMgbm9ybWFsX2NudAorRlJPTSBy cHJfaW50ZWcKK1dJTkRPVworICAgIHdfcnByIEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSwKKyAgICB3 X25vcm1hbCBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBPdXRwdXQ6IChjb3VudCgqKSBPVkVSIHdfcnByKSwgY291bnQoKikg T1ZFUiB3X25vcm1hbCwgaWQsIHZhbAorICAgV2luZG93OiB3X25vcm1hbCBBUyAoT1JERVIgQlkg cnByX2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIE91dHB1dDogaWQsIHZhbCwgY291bnQo KikgT1ZFUiB3X3JwcgorICAgICAgICAgV2luZG93OiB3X3JwciBBUyAoT1JERVIgQlkgcnByX2lu dGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAg ICBPdXRwdXQ6IGlkLCB2YWwKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcuaWQK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMucnByX2ludGVnCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IGlkLCB2YWwKKygxMiByb3dzKQorCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEEx MC4gUlBSICsgTElNSVQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gTElNSVQgbXVzdCBub3QgaW50ZXJmZXJlIHdpdGgg UlBSIHBhdHRlcm4gbWF0Y2hpbmcuCistLSBUaGUgcmVzdWx0IHNob3VsZCBiZSBhIHByZWZpeCBv ZiB0aGUgdW5saW1pdGVkIHF1ZXJ5LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkCitM SU1JVCA1OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisg IDUgfCAgIDUgfCAgIDMKKyg1IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjEuIFJQUiArIENURQorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBDVEUgd2l0aCBSUFIsIG91dGVyIHF1ZXJ5IGFnZ3JlZ2F0ZXMKK1dJVEggcnByX3Jl c3VsdCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAg ICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg UEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQor U0VMRUNUIGNvdW50KCopIEFTIHRvdGFsX3Jvd3MsCisgICAgICAgY291bnQoKikgRklMVEVSIChX SEVSRSBjbnQgPiAwKSBBUyBtYXRjaGVkX3Jvd3MsCisgICAgICAgbWF4KGNudCkgQVMgbWF4X21h dGNoX2xlbgorRlJPTSBycHJfcmVzdWx0OworIHRvdGFsX3Jvd3MgfCBtYXRjaGVkX3Jvd3MgfCBt YXhfbWF0Y2hfbGVuIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgMTAgfCAgICAgICAgICAgIDQgfCAgICAgICAgICAgICAzCisoMSByb3cpCisK Ky0tIE11bHRpcGxlIENURSByZWZlcmVuY2VzCitXSVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcK KyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisg ICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykKK1NFTEVDVCByMS5pZCwgcjEu Y250CitGUk9NIHJwcl9yZXN1bHQgcjEKK0pPSU4gcnByX3Jlc3VsdCByMiBPTiByMS5pZCA9IHIy LmlkIEFORCByMS5jbnQgPSByMi5jbnQKK1dIRVJFIHIxLmNudCA+IDAKK09SREVSIEJZIHIxLmlk OworIGlkIHwgY250IAorLS0tLSstLS0tLQorICAxIHwgICAyCisgIDMgfCAgIDIKKyAgNSB8ICAg MworICA4IHwgICAzCisoNCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEIyLiBSUFIgKyBKT0lOCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KK0NSRUFURSBUQUJMRSBycHJfaW50ZWcyIChpZCBJTlQsIGxhYmVsIFRFWFQpOworSU5TRVJU IElOVE8gcnByX2ludGVnMiBWQUxVRVMKKyAgICAoMSwgJ2EnKSwgKDIsICdiJyksICgzLCAnYycp LCAoNCwgJ2QnKSwgKDUsICdlJyksCisgICAgKDYsICdmJyksICg3LCAnZycpLCAoOCwgJ2gnKSwg KDksICdpJyksICgxMCwgJ2onKTsKKy0tIFJQUiBzdWJxdWVyeSBqb2luZWQgd2l0aCBhbm90aGVy IHRhYmxlCitTRUxFQ1Qgci5pZCwgci5jbnQsIGoubGFiZWwKK0ZST00gKAorICAgIFNFTEVDVCBp ZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJ TkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHIKK0pPSU4gcnByX2ludGVnMiBqIE9OIHIuaWQg PSBqLmlkCitXSEVSRSByLmNudCA+IDAKK09SREVSIEJZIHIuaWQ7CisgaWQgfCBjbnQgfCBsYWJl bCAKKy0tLS0rLS0tLS0rLS0tLS0tLQorICAxIHwgICAyIHwgYQorICAzIHwgICAyIHwgYworICA1 IHwgICAzIHwgZQorICA4IHwgICAzIHwgaAorKDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCMy4gUlBS ICsgU2V0IG9wZXJhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVU5JT04gb2YgUlBSIGFuZCBub24tUlBSIHJl c3VsdHMKK1NFTEVDVCBpZCwgY250LCAncnByJyBBUyBzb3VyY2UgRlJPTSAoCisgICAgU0VMRUNU IGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERF RklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAwCitVTklPTiBBTEwK K1NFTEVDVCBpZCwgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQpIEFTIGNudCwgJ25vcm1hbCcg QVMgc291cmNlCitGUk9NIHJwcl9pbnRlZworT1JERVIgQlkgc291cmNlLCBpZDsKKyBpZCB8IGNu dCB8IHNvdXJjZSAKKy0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgMSB8ICAgMSB8IG5vcm1hbAorICAy IHwgICAyIHwgbm9ybWFsCisgIDMgfCAgIDMgfCBub3JtYWwKKyAgNCB8ICAgNCB8IG5vcm1hbAor ICA1IHwgICA1IHwgbm9ybWFsCisgIDYgfCAgIDYgfCBub3JtYWwKKyAgNyB8ICAgNyB8IG5vcm1h bAorICA4IHwgICA4IHwgbm9ybWFsCisgIDkgfCAgIDkgfCBub3JtYWwKKyAxMCB8ICAxMCB8IG5v cm1hbAorICAxIHwgICAyIHwgcnByCisgIDMgfCAgIDIgfCBycHIKKyAgNSB8ICAgMyB8IHJwcgor ICA4IHwgICAzIHwgcnByCisoMTQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCNC4gUlBSICsgUHJlcGFy ZWQgc3RhdGVtZW50cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBQbGFuIGNhY2hpbmcgbXVzdCBjb3JyZWN0bHkgc2Vy aWFsaXplL2Rlc2VyaWFsaXplIFJQUiBmaWVsZHMKK1BSRVBBUkUgcnByX3ByZXAgQVMKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwg PiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKy0tIEZpcnN0IGV4ZWN1dGlvbiAoY3VzdG9tIHBs YW4pCitFWEVDVVRFIHJwcl9wcmVwOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0 IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1 IHwgICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAw CisoMTAgcm93cykKKworLS0gU3Vic2VxdWVudCBleGVjdXRpb25zIChtYXkgdXNlIGNhY2hlZCBw bGFuKQorRVhFQ1VURSBycHJfcHJlcDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAg NCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAz NSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAg MAorKDEwIHJvd3MpCisKK0VYRUNVVEUgcnByX3ByZXA7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1 IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAw CisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAg fCAgNDUgfCAgIDAKKygxMCByb3dzKQorCitFWEVDVVRFIHJwcl9wcmVwOworIGlkIHwgdmFsIHwg Y250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAK KyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8 ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8 ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93cykKKworRVhFQ1VURSBycHJfcHJlcDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwg IDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwg ICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisg IDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKK0VYRUNVVEUgcnBy X3ByZXA7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAg IDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAg NSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAy MCB8ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAgfCAgNDUgfCAgIDAKKygxMCByb3dzKQorCist LSBWZXJpZnkgY2FjaGVkIHBsYW4gcHJvZHVjZXMgc2FtZSByZXN1bHQKK0VYRUNVVEUgcnByX3By ZXA7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIK KyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8 ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAyMCB8 ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAgfCAgNDUgfCAgIDAKKygxMCByb3dzKQorCitERUFM TE9DQVRFIHJwcl9wcmVwOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCNS4gUlBSICsgUGFydGl0aW9uZWQgdGFibGUK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gUlBSIHBhdHRlcm4gbWF0Y2hpbmcgbXVzdCB3b3JrIGNvcnJlY3RseSBhY3Jv c3MgcGFydGl0aW9ucy4KK0NSRUFURSBUQUJMRSBycHJfcGFydCAoaWQgSU5ULCB2YWwgSU5UKSBQ QVJUSVRJT04gQlkgUkFOR0UgKGlkKTsKK0NSRUFURSBUQUJMRSBycHJfcGFydF8xIFBBUlRJVElP TiBPRiBycHJfcGFydCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICg2KTsKK0NSRUFURSBUQUJMRSBy cHJfcGFydF8yIFBBUlRJVElPTiBPRiBycHJfcGFydCBGT1IgVkFMVUVTIEZST00gKDYpIFRPICgx MSk7CitJTlNFUlQgSU5UTyBycHJfcGFydCBTRUxFQ1QgaWQsIHZhbCBGUk9NIHJwcl9pbnRlZzsK Ky0tIFNhbWUgcXVlcnkgb24gcGFydGl0aW9uZWQgdnMgbm9uLXBhcnRpdGlvbmVkIHNob3VsZCBw cm9kdWNlIGlkZW50aWNhbCByZXN1bHRzCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorRlJPTSBycHJfcGFydAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAy IHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1 IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAz CisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEVYUExB SU46IEFwcGVuZCB1bmRlciBTb3J0IHVuZGVyIFdpbmRvd0FnZworRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9wYXJ0CitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFs KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9w YXJ0LmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KyAgIFBhdHRlcm46IGEgYisKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogcnByX3Bh cnQuaWQKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGFydF8xCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BhcnRfMgor KDggcm93cykKKworRFJPUCBUQUJMRSBycHJfcGFydDsKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjYuIFJQUiArIExB VEVSQUwKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gUlBSIGluc2lkZSBhIExBVEVSQUwgc3VicXVlcnkuICBRdWFsaWZp ZWQgY29sdW1uIHJlZmVyZW5jZXMgZnJvbSB0aGUKKy0tIG91dGVyIHF1ZXJ5IGFyZSBub3QgeWV0 IHN1cHBvcnRlZCBpbiBERUZJTkUsIHNvIHRoaXMgdGVzdHMgdGhlIGJhc2ljCistLSBjYXNlIHdo ZXJlIExBVEVSQUwgcHJvdmlkZXMgZmlsdGVyaW5nIGJ1dCBERUZJTkUgdXNlcyBvbmx5IGxvY2Fs IGNvbHVtbnMuCitTRUxFQ1Qgby5pZCBBUyBvdXRlcl9pZCwgci5pZCwgci5jbnQKK0ZST00gcnBy X2ludGVnIG8sCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBj bnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdIRVJFIGlkIDw9IG8uaWQKKyAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgcgorV0hFUkUgci5jbnQgPiAwIEFORCBvLmlkIElO ICg1LCAxMCkKK09SREVSIEJZIG8uaWQsIHIuaWQ7Cisgb3V0ZXJfaWQgfCBpZCB8IGNudCAKKy0t LS0tLS0tLS0rLS0tLSstLS0tLQorICAgICAgICA1IHwgIDEgfCAgIDIKKyAgICAgICAgNSB8ICAz IHwgICAyCisgICAgICAgMTAgfCAgMSB8ICAgMgorICAgICAgIDEwIHwgIDMgfCAgIDIKKyAgICAg ICAxMCB8ICA1IHwgICAzCisgICAgICAgMTAgfCAgOCB8ICAgMworKDYgcm93cykKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgYXBwbGllZCB0byBy ZXN1bHRzIG9mIGEgcmVjdXJzaXZlIENURS4KK1dJVEggUkVDVVJTSVZFIHNlcSBBUyAoCisgICAg U0VMRUNUIDEgQVMgaWQsIDEwIEFTIHZhbAorICAgIFVOSU9OIEFMTAorICAgIFNFTEVDVCBpZCAr IDEsIHZhbCArIChDQVNFIFdIRU4gaWQgJSAzID0gMCBUSEVOIC0xNSBFTFNFIDEwIEVORCkKKyAg ICBGUk9NIHNlcSBXSEVSRSBpZCA8IDEwCispCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBzZXEKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgMTUgfCAgIDMKKyAgNSB8ICAyNSB8 ICAgMAorICA2IHwgIDM1IHwgICAwCisgIDcgfCAgMjAgfCAgIDMKKyAgOCB8ICAzMCB8ICAgMAor ICA5IHwgIDQwIHwgICAwCisgMTAgfCAgMjUgfCAgIDAKKygxMCByb3dzKQorCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEI4LiBSUFIgKyBJbmNyZW1lbnRhbCBzb3J0CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEluY3JlbWVudGFsIHNvcnQg bWF5IGJlIHVzZWQgd2hlbiBkYXRhIGlzIHBhcnRpYWxseSBzb3J0ZWQuCitDUkVBVEUgSU5ERVgg cnByX2ludGVnX2lkX2lkeCBPTiBycHJfaW50ZWcgKGlkKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVS IHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICAtPiAgSW5kZXggU2NhbiB1c2lu ZyBycHJfaW50ZWdfaWRfaWR4IG9uIHJwcl9pbnRlZworKDQgcm93cykKKworU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYo dmFsKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQor ICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwg IDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwg ICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCiso MTAgcm93cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIElOREVYIHJwcl9pbnRlZ19p ZF9pZHg7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJTkUK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gVm9sYXRpbGUgZnVuY3Rpb25zIG11c3QgYmUgZXZhbHVhdGVkIHBlci1yb3cs IG5vdCBvcHRpbWl6ZWQgYXdheS4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIHJhbmRvbSgpID49IDAu MCkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAx IHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1 IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAw CisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAg cm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3VicXVlcnkgaW4gV0hF UkUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gUlBSIHdpbmRvdyBpbiBhIGNvcnJlbGF0ZWQgc3VicXVlcnkuICBERUZJ TkUgcmVmZXJlbmNlcyBvbmx5IGxvY2FsCistLSBjb2x1bW5zIChubyBxdWFsaWZpZWQgcmVmcyks IHdoaWxlIGNvcnJlbGF0aW9uIGlzIGluIFdIRVJFLgorU0VMRUNUIG8uaWQsIG8udmFsLAorICAg IChTRUxFQ1QgY291bnQoKikgT1ZFUiB3CisgICAgIEZST00gcnByX2ludGVnIGkKKyAgICAgV0hF UkUgaS5pZCA8PSBvLmlkCisgICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICBQQVRURVJOIChBIEIrKQorICAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQor ICAgICBPUkRFUiBCWSBpZAorICAgICBMSU1JVCAxKSBBUyBmaXJzdF9jbnQKK0ZST00gcnByX2lu dGVnIG8KK09SREVSIEJZIG8uaWQ7CisgaWQgfCB2YWwgfCBmaXJzdF9jbnQgCistLS0tKy0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCAgMTAgfCAgICAgICAgIDAKKyAgMiB8ICAyMCB8ICAgICAgICAg MgorICAzIHwgIDE1IHwgICAgICAgICAyCisgIDQgfCAgMjUgfCAgICAgICAgIDIKKyAgNSB8ICAg NSB8ICAgICAgICAgMgorICA2IHwgIDMwIHwgICAgICAgICAyCisgIDcgfCAgMzUgfCAgICAgICAg IDIKKyAgOCB8ICAyMCB8ICAgICAgICAgMgorICA5IHwgIDQwIHwgICAgICAgICAyCisgMTAgfCAg NDUgfCAgICAgICAgIDIKKygxMCByb3dzKQorCistLSBDbGVhbnVwCitEUk9QIFRBQkxFIHJwcl9p bnRlZzsKK0RST1AgVEFCTEUgcnByX2ludGVnMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDZhMmQxOWQ0NDEwLi5kYmZhM2U4ZjJjYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xMDcsNyArMTA3LDcgQEAgdGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIg Zm9yZWlnbl9rZXkgY2x1c3RlciBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm8KICMgLS0t LS0tLS0tLQogIyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiB0ZXN0cwogIyAtLS0tLS0tLS0tCi10 ZXN0OiBycHIgcnByX2Jhc2UgcnByX2V4cGxhaW4gcnByX25mYQordGVzdDogcnByIHJwcl9iYXNl IHJwcl9leHBsYWluIHJwcl9uZmEgcnByX2ludGVncmF0aW9uCiAKICMgLS0tLS0tLS0tLQogIyBB bm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzIChKU09OIHJlbGF0ZWQpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMmFlNDJjOTJhMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCkBAIC0wLDAgKzEsNTM3IEBACistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFJQUiBJbnRlZ3JhdGlvbiBUZXN0cworLS0gUGxhbm5lciBvcHRpbWl6YXRpb24gaW50ZXJhY3Rp b24gdGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCistLSBWZXJp ZmllcyB0aGF0IGVhY2ggcGxhbm5lciBvcHRpbWl6YXRpb24gY29ycmVjdGx5IGhhbmRsZXMgUlBS IHdpbmRvd3MuCistLSBFdmVuIGlmIGluZGl2aWR1YWwgb3B0aW1pemF0aW9ucyBhcmUgdGVzdGVk IGVsc2V3aGVyZSwgdGhpcyBmaWxlCistLSBwcm92aWRlcyBhIHNpbmdsZSBjaGVja3BvaW50IGZv ciBhbGwgcGxhbm5lci9SUFIgaW50ZXJhY3Rpb25zLgorLS0KKy0tIEEuIFBsYW5uZXIgT3B0aW1p emF0aW9uIFByb3RlY3Rpb24gVGVzdHMKKy0tICAgIEExLiBGcmFtZSBvcHRpbWl6YXRpb24gYnlw YXNzCistLSAgICBBMi4gUnVuIGNvbmRpdGlvbiBwdXNoZG93biBieXBhc3MKKy0tICAgIEEzLiBX aW5kb3cgZGVkdXAgcHJldmVudGlvbiAocGxhbm5lcikKKy0tICAgIEE0LiBXaW5kb3cgZGVkdXAg cHJldmVudGlvbiAocGFyc2VyKQorLS0gICAgQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBwcmV2 ZW50aW9uCistLSAgICBBNi4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5cGFzcworLS0gICAgQTcuIENv c3QgZXN0aW1hdGlvbiBSUFIgYXdhcmVuZXNzCistLSAgICBBOC4gU3VicXVlcnkgZmxhdHRlbmlu ZyBwcmV2ZW50aW9uCistLSAgICBBOS4gREVGSU5FIGV4cHJlc3Npb24gbm9uLXByb3BhZ2F0aW9u CistLSAgICBBMTAuIFJQUiArIExJTUlUCistLQorLS0gQi4gSW50ZWdyYXRpb24gU2NlbmFyaW8g VGVzdHMKKy0tICAgIEIxLiBSUFIgKyBDVEUKKy0tICAgIEIyLiBSUFIgKyBKT0lOCistLSAgICBC My4gUlBSICsgU2V0IG9wZXJhdGlvbnMKKy0tICAgIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0ZW1l bnRzCistLSAgICBCNS4gUlBSICsgUGFydGl0aW9uZWQgdGFibGUKKy0tICAgIEI2LiBSUFIgKyBM QVRFUkFMCistLSAgICBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gICAgQjguIFJQUiArIElu Y3JlbWVudGFsIHNvcnQKKy0tICAgIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJ TkUKKy0tICAgIEIxMC4gUlBSICsgQ29ycmVsYXRlZCBzdWJxdWVyeQorLS0KKworQ1JFQVRFIFRB QkxFIHJwcl9pbnRlZyAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9pbnRlZyBW QUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgNSksCisg ICAgKDYsIDMwKSwgKDcsIDM1KSwgKDgsIDIwKSwgKDksIDQwKSwgKDEwLCA0NSk7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gQTEuIEZyYW1lIG9wdGltaXphdGlvbiBieXBhc3MKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gb3B0aW1pemVf d2luZG93X2NsYXVzZXMoKSBtdXN0IG5vdCBhcHBseSBmcmFtZSBvcHRpbWl6YXRpb24gdG8gUlBS IHdpbmRvd3MuCistLSBOb24tUlBSOiBmcmFtZSBpcyBvcHRpbWl6ZWQgKFJBTkdFIC0+IFJPV1Mg Y29udmVyc2lvbiwgZXRjLikKKy0tIFJQUjogZnJhbWUgbXVzdCBzdGF5IGFzIHNwZWNpZmllZCAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorCistLSBO b24tUlBSIHdpbmRvdyB3aXRoIGRlZmF1bHQgZnJhbWUgLT4gZnJhbWUgb3B0aW1pemF0aW9uIGFw cGxpZWQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBy cHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCk7CisKKy0tIFJQUiB3aW5kb3cgLT4g ZnJhbWUgb3B0aW1pemF0aW9uIG11c3QgTk9UIGNoYW5nZSB0aGUgZnJhbWUKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4g UFJFVih2YWwpKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBBMi4gUnVuIGNvbmRpdGlvbiBwdXNoZG93biBieXBh c3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gZmluZF93aW5kb3dfcnVuX2NvbmRpdGlvbnMoKSBtdXN0IG5vdCBwdXNo IG1vbm90b25pYyBmaWx0ZXJzIGFzIFJ1biBDb25kaXRpb25zCistLSBmb3IgUlBSIHdpbmRvd3Ms IGJlY2F1c2UgUlBSIHJlc3VsdHMgYXJlIG1hdGNoLWRlcGVuZGVudCwgbm90IG1vbm90b25pYy4K KworLS0gTm9uLVJQUjogY291bnQoKikgPiAwIHB1c2hlZCBkb3duIGFzIFJ1biBDb25kaXRpb24K K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorKSB0IFdIRVJFIGNudCA+IDA7CisKKy0tIFJQUjogY291bnQoKikgPiAwIG11 c3QgTk9UIGJlIHB1c2hlZCBkb3duIChhcHBlYXJzIGFzIEZpbHRlciwgbm90IFJ1biBDb25kaXRp b24pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBB UyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250ID4gMDsKKworLS0gVmVyaWZ5IHJlc3Vs dHMgYXJlIGNvcnJlY3QKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFT IHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAwCitPUkRFUiBCWSBpZDsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBBMy4gV2luZG93IGRlZHVwIHByZXZlbnRpb24gKHBsYW5uZXIpCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IG9wdGltaXplX3dpbmRvd19jbGF1c2VzKCkgbXVzdCBub3QgbWVyZ2UgUlBSIGFuZCBub24tUlBS IHdpbmRvd3MKKy0tIGV2ZW4gaWYgdGhleSBzaGFyZSB0aGUgc2FtZSBiYXNlIGZyYW1lLgorCist LSBUd28gd2luZG93cyB3aXRoIHNhbWUgT1JERVIgQlk6IG9uZSBSUFIsIG9uZSBub24tUlBSIC0+ IHNlcGFyYXRlIFdpbmRvd0FnZyBub2RlcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUCisg ICAgY291bnQoKikgT1ZFUiB3X3JwciBBUyBycHJfY250LAorICAgIGNvdW50KCopIE9WRVIgd19u b3JtYWwgQVMgbm9ybWFsX2NudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVworICAgIHdfcnByIEFT IChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIg QVMgdmFsID4gUFJFVih2YWwpKSwKKyAgICB3X25vcm1hbCBBUyAoT1JERVIgQlkgaWQKKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKTsKKwor LS0gVmVyaWZ5IGJvdGggcHJvZHVjZSBkaWZmZXJlbnQgcmVzdWx0cworU0VMRUNUCisgICAgaWQs IHZhbCwKKyAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJwcl9jbnQsCisgICAgY291bnQoKikg T1ZFUiB3X25vcm1hbCBBUyBub3JtYWxfY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XCisgICAg d19ycHIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBE RUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHdfbm9ybWFsIEFTIChPUkRFUiBCWSBp ZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCitPUkRFUiBCWSBpZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBNC4gV2luZG93IGRlZHVwIHByZXZlbnRp b24gKHBhcnNlcikKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoKSBtdXN0IG5v dCBtZXJnZSB0d28gUlBSIHdpbmRvd3Mgd2l0aCBkaWZmZXJlbnQgREVGSU5FLgorLS0gVHdvIFJQ UiB3aW5kb3dzOiBzYW1lIFBBVFRFUk4gc3RydWN0dXJlLCBkaWZmZXJlbnQgREVGSU5FIGNvbmRp dGlvbnMuCisKKy0tIEVYUExBSU46IG11c3Qgc2hvdyB0d28gc2VwYXJhdGUgV2luZG93QWdnIG5v ZGVzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFT IGNudF91cCwKKyAgICBjb3VudCgqKSBPVkVSIHcyIEFTIGNudF9kb3duCitGUk9NIHJwcl9pbnRl ZworV0lORE9XCisgICAgdzEgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHcyIEFTIChPUkRF UiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFs IDwgUFJFVih2YWwpKTsKKworLS0gVmVyaWZ5IHJlc3VsdHMgZGlmZmVyCitTRUxFQ1QKKyAgICBp ZCwgdmFsLAorICAgIGNvdW50KCopIE9WRVIgdzEgQVMgY250X3VwLAorICAgIGNvdW50KCopIE9W RVIgdzIgQVMgY250X2Rvd24KK0ZST00gcnByX2ludGVnCitXSU5ET1cKKyAgICB3MSBBUyAoT1JE RVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZh bCA+IFBSRVYodmFsKSksCisgICAgdzIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPCBQUkVWKHZhbCkpCitPUkRFUiBCWSBp ZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBBNS4gVW51c2VkIHdpbmRvdyByZW1vdmFsIHByZXZlbnRpb24KKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKCkgbXVzdCBub3QgcmVtb3Zl IFJQUiB3aW5kb3cgZnVuY3Rpb25zCistLSBldmVuIHdoZW4gdGhlaXIgb3V0cHV0IGNvbHVtbnMg YXJlIG5vdCByZWZlcmVuY2VkIGJ5IHRoZSBvdXRlciBxdWVyeS4KKworLS0gUlBSIHdpbmRvdyBv dXRwdXQgbm90IGRpcmVjdGx5IHJlZmVyZW5jZWQsIGJ1dCBwYXR0ZXJuIG1hdGNoaW5nIG11c3Qg c3RpbGwgZXhlY3V0ZQorU0VMRUNUIGNvdW50KCopIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworCist LSBXaXRoIFBSRVYgaW4gREVGSU5FOiB3aW5kb3cgbXVzdCBiZSBwcmVzZXJ2ZWQKK1NFTEVDVCBj b3VudCgqKSwgc3VtKGMpIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgYyBG Uk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQor ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQ7CisKKy0tIFdpdGhvdXQg UFJFViBidXQgd2l0aCBERUZJTkU6IHdpbmRvdyBtdXN0IHN0aWxsIGJlIHByZXNlcnZlZAorU0VM RUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBB UyBjIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSspCisgICAgICAgIERFRklORSBBIEFTIFRSVUUpCispIHQ7CisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTYuIElu dmVyc2UgdHJhbnNpdGlvbiBieXBhc3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIHdpbmRvd3MgbXVzdCBub3Qg dXNlIG1vdmluZyBhZ2dyZWdhdGUgKGludmVyc2UgdHJhbnNpdGlvbikgb3B0aW1pemF0aW9uLgor LS0gTW92aW5nIGFnZ3JlZ2F0ZXMgcmVjYWxjdWxhdGUgYnkgc3VidHJhY3RpbmcgbGVhdmluZyBy b3dzLCBidXQgUlBSJ3MKKy0tIHJlZHVjZWQgZnJhbWVzIG1ha2UgdGhpcyBpbnZhbGlkLgorCist LSBzdW0oKSBzdXBwb3J0cyBpbnZlcnNlIHRyYW5zaXRpb24uIFdpdGggUlBSLCBpdCBtdXN0IG5v dCBiZSB1c2VkLgorLS0gVmVyaWZ5IGNvcnJlY3RuZXNzOiBzdW0gd2l0aCBSUFIgcGF0dGVybiBt YXRjaGluZworU0VMRUNUIGlkLCB2YWwsCisgICAgc3VtKHZhbCkgT1ZFUiB3IEFTIHBhdHRlcm5f c3VtCitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBBNy4gQ29zdCBlc3RpbWF0aW9uIFJQUiBhd2FyZW5lc3MKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g Y29zdF93aW5kb3dhZ2coKSBtdXN0IGFjY291bnQgZm9yIERFRklORSBleHByZXNzaW9uIGV2YWx1 YXRpb24gY29zdC4KKy0tIFZlcmlmeSBSUFIgV2luZG93QWdnIGNvc3QgPiBub24tUlBSIFdpbmRv d0FnZyBjb3N0LgorCitDUkVBVEUgRlVOQ1RJT04gZ2V0X3dpbmRvd2FnZ19jb3N0KHF1ZXJ5IHRl eHQpIFJFVFVSTlMgbnVtZXJpYyBBUyAkJAorREVDTEFSRQorICAgIHBsYW4ganNvbjsKKyAgICBj b3N0IG51bWVyaWM7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEZPUk1BVCBKU09OKSAn IHx8IHF1ZXJ5IElOVE8gcGxhbjsKKyAgICBjb3N0IDo9IChwbGFuLT4wLT4nUGxhbictPj4nVG90 YWwgQ29zdCcpOjpudW1lcmljOworICAgIFJFVFVSTiBjb3N0OworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIGdldF93aW5kb3dhZ2dfY29zdCgKKyAgICAnU0VMRUNUIGNvdW50 KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgICAgICBQQVRURVJOIChBIEIrIEMrKSBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCks IEMgQVMgdmFsIDwgUFJFVih2YWwpKScpCisgICAgPgorICAgIGdldF93aW5kb3dhZ2dfY29zdCgK KyAgICAnU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKScpCisgICAgQVMgcnByX2Nvc3RfaXNfaGlnaGVyOworCitEUk9QIEZVTkNUSU9O IGdldF93aW5kb3dhZ2dfY29zdCh0ZXh0KTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBOC4gU3VicXVlcnkgZmxh dHRlbmluZyBwcmV2ZW50aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIGlzX3NpbXBsZV9zdWJxdWVyeSgpIHByZXZl bnRzIHB1bGx1cCBvZiBzdWJxdWVyaWVzIHdpdGggd2luZG93IGZ1bmN0aW9ucy4KKy0tIFJQUiBz dWJxdWVyeSBtdXN0IG5vdCBiZSBmbGF0dGVuZWQgaW50byB0aGUgb3V0ZXIgcXVlcnkuCistLSBF WFBMQUlOIG11c3Qgc2hvdyBTdWJxdWVyeSBTY2FuIChub3QgZmxhdHRlbmVkKS4KKworRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50 KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMg dmFsID4gUFJFVih2YWwpKQorKSBzdWIKK1dIRVJFIGNudCA+IDA7CisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTku IERFRklORSBleHByZXNzaW9uIG5vbi1wcm9wYWdhdGlvbgorLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBERUZJTkUgZXhw cmVzc2lvbnMgbXVzdCBub3QgYXBwZWFyIGluIHVwcGVyIFdpbmRvd0FnZydzIHRhcmdldGxpc3Qu CistLSBPbmx5IFZhciBub2RlcyBzaG91bGQgYmUgcHJvcGFnYXRlZCwgbm90IHRoZSBmdWxsIERF RklORSBleHByZXNzaW9uLgorLS0gRVhQTEFJTiBWRVJCT1NFOiBvdXRlciBXaW5kb3dBZ2cgb3V0 cHV0IG11c3QgTk9UIGNvbnRhaW4gREVGSU5FIGV4cHJlc3Npb24uCisKK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgd19ycHIgQVMgcnByX2Nu dCwKKyAgICBjb3VudCgqKSBPVkVSIHdfbm9ybWFsIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2lu dGVnCitXSU5ET1cKKyAgICB3X3JwciBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4g KEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSksCisgICAgd19ub3Jt YWwgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTEwLiBSUFIgKyBMSU1JVAorLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBMSU1JVCBtdXN0IG5vdCBpbnRlcmZlcmUgd2l0aCBSUFIgcGF0dGVybiBtYXRjaGlu Zy4KKy0tIFRoZSByZXN1bHQgc2hvdWxkIGJlIGEgcHJlZml4IG9mIHRoZSB1bmxpbWl0ZWQgcXVl cnkuCisKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9p bnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJ TkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZAorTElNSVQgNTsKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBCMS4gUlBSICsgQ1RFCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gQ1RFIHdpdGggUlBSLCBvdXRlciBxdWVy eSBhZ2dyZWdhdGVzCitXSVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBj b3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBC IEFTIHZhbCA+IFBSRVYodmFsKSkKKykKK1NFTEVDVCBjb3VudCgqKSBBUyB0b3RhbF9yb3dzLAor ICAgICAgIGNvdW50KCopIEZJTFRFUiAoV0hFUkUgY250ID4gMCkgQVMgbWF0Y2hlZF9yb3dzLAor ICAgICAgIG1heChjbnQpIEFTIG1heF9tYXRjaF9sZW4KK0ZST00gcnByX3Jlc3VsdDsKKworLS0g TXVsdGlwbGUgQ1RFIHJlZmVyZW5jZXMKK1dJVEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAg IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAg ICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQorU0VMRUNUIHIxLmlkLCByMS5jbnQK K0ZST00gcnByX3Jlc3VsdCByMQorSk9JTiBycHJfcmVzdWx0IHIyIE9OIHIxLmlkID0gcjIuaWQg QU5EIHIxLmNudCA9IHIyLmNudAorV0hFUkUgcjEuY250ID4gMAorT1JERVIgQlkgcjEuaWQ7CisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQjIuIFJQUiArIEpPSU4KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDUkVBVEUgVEFCTEUgcnByX2lu dGVnMiAoaWQgSU5ULCBsYWJlbCBURVhUKTsKK0lOU0VSVCBJTlRPIHJwcl9pbnRlZzIgVkFMVUVT CisgICAgKDEsICdhJyksICgyLCAnYicpLCAoMywgJ2MnKSwgKDQsICdkJyksICg1LCAnZScpLAor ICAgICg2LCAnZicpLCAoNywgJ2cnKSwgKDgsICdoJyksICg5LCAnaScpLCAoMTAsICdqJyk7CisK Ky0tIFJQUiBzdWJxdWVyeSBqb2luZWQgd2l0aCBhbm90aGVyIHRhYmxlCitTRUxFQ1Qgci5pZCwg ci5jbnQsIGoubGFiZWwKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFT IGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZh bCkpCispIHIKK0pPSU4gcnByX2ludGVnMiBqIE9OIHIuaWQgPSBqLmlkCitXSEVSRSByLmNudCA+ IDAKK09SREVSIEJZIHIuaWQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjMuIFJQUiArIFNldCBvcGVyYXRpb25z CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworLS0gVU5JT04gb2YgUlBSIGFuZCBub24tUlBSIHJlc3VsdHMKK1NFTEVDVCBp ZCwgY250LCAncnByJyBBUyBzb3VyY2UgRlJPTSAoCisgICAgU0VMRUNUIGlkLCBjb3VudCgqKSBP VkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+ IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAwCitVTklPTiBBTEwKK1NFTEVDVCBpZCwgY291 bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQpIEFTIGNudCwgJ25vcm1hbCcgQVMgc291cmNlCitGUk9N IHJwcl9pbnRlZworT1JERVIgQlkgc291cmNlLCBpZDsKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCNC4gUlBSICsg UHJlcGFyZWQgc3RhdGVtZW50cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFBsYW4gY2FjaGluZyBtdXN0IGNvcnJl Y3RseSBzZXJpYWxpemUvZGVzZXJpYWxpemUgUlBSIGZpZWxkcworUFJFUEFSRSBycHJfcHJlcCBB UworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVn CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBC IEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworCistLSBGaXJzdCBleGVjdXRpb24g KGN1c3RvbSBwbGFuKQorRVhFQ1VURSBycHJfcHJlcDsKKworLS0gU3Vic2VxdWVudCBleGVjdXRp b25zIChtYXkgdXNlIGNhY2hlZCBwbGFuKQorRVhFQ1VURSBycHJfcHJlcDsKK0VYRUNVVEUgcnBy X3ByZXA7CitFWEVDVVRFIHJwcl9wcmVwOworRVhFQ1VURSBycHJfcHJlcDsKK0VYRUNVVEUgcnBy X3ByZXA7CisKKy0tIFZlcmlmeSBjYWNoZWQgcGxhbiBwcm9kdWNlcyBzYW1lIHJlc3VsdAorRVhF Q1VURSBycHJfcHJlcDsKKworREVBTExPQ0FURSBycHJfcHJlcDsKKworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCNS4g UlBSICsgUGFydGl0aW9uZWQgdGFibGUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIHBhdHRlcm4gbWF0Y2hpbmcg bXVzdCB3b3JrIGNvcnJlY3RseSBhY3Jvc3MgcGFydGl0aW9ucy4KKworQ1JFQVRFIFRBQkxFIHJw cl9wYXJ0IChpZCBJTlQsIHZhbCBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRF IFRBQkxFIHJwcl9wYXJ0XzEgUEFSVElUSU9OIE9GIHJwcl9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDYpOworQ1JFQVRFIFRBQkxFIHJwcl9wYXJ0XzIgUEFSVElUSU9OIE9GIHJwcl9wYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoNikgVE8gKDExKTsKK0lOU0VSVCBJTlRPIHJwcl9wYXJ0IFNFTEVD VCBpZCwgdmFsIEZST00gcnByX2ludGVnOworCistLSBTYW1lIHF1ZXJ5IG9uIHBhcnRpdGlvbmVk IHZzIG5vbi1wYXJ0aXRpb25lZCBzaG91bGQgcHJvZHVjZSBpZGVudGljYWwgcmVzdWx0cworU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX3BhcnQKK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisKKy0tIEVYUExBSU46IEFwcGVuZCB1bmRlciBT b3J0IHVuZGVyIFdpbmRvd0FnZworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIHJwcl9wYXJ0CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisKK0RST1AgVEFCTEUg cnByX3BhcnQ7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQjYuIFJQUiArIExBVEVSQUwKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBS IGluc2lkZSBhIExBVEVSQUwgc3VicXVlcnkuICBRdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZXMg ZnJvbSB0aGUKKy0tIG91dGVyIHF1ZXJ5IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBERUZJTkUs IHNvIHRoaXMgdGVzdHMgdGhlIGJhc2ljCistLSBjYXNlIHdoZXJlIExBVEVSQUwgcHJvdmlkZXMg ZmlsdGVyaW5nIGJ1dCBERUZJTkUgdXNlcyBvbmx5IGxvY2FsIGNvbHVtbnMuCisKK1NFTEVDVCBv LmlkIEFTIG91dGVyX2lkLCByLmlkLCByLmNudAorRlJPTSBycHJfaW50ZWcgbywKK0xBVEVSQUwg KAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2lu dGVnCisgICAgV0hFUkUgaWQgPD0gby5pZAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKQorKSByCitXSEVSRSByLmNudCA+IDAgQU5EIG8uaWQgSU4gKDUsIDEwKQorT1JERVIgQlkg by5pZCwgci5pZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBCNy4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBSUFIgYXBwbGllZCB0byByZXN1bHRzIG9mIGEgcmVjdXJzaXZlIENURS4KKworV0lUSCBS RUNVUlNJVkUgc2VxIEFTICgKKyAgICBTRUxFQ1QgMSBBUyBpZCwgMTAgQVMgdmFsCisgICAgVU5J T04gQUxMCisgICAgU0VMRUNUIGlkICsgMSwgdmFsICsgKENBU0UgV0hFTiBpZCAlIDMgPSAwIFRI RU4gLTE1IEVMU0UgMTAgRU5EKQorICAgIEZST00gc2VxIFdIRVJFIGlkIDwgMTAKKykKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHNlcQorV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpCitPUkRFUiBCWSBpZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCOC4gUlBSICsgSW5jcmVtZW50YWwg c29ydAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBJbmNyZW1lbnRhbCBzb3J0IG1heSBiZSB1c2VkIHdoZW4gZGF0YSBp cyBwYXJ0aWFsbHkgc29ydGVkLgorCitDUkVBVEUgSU5ERVggcnByX2ludGVnX2lkX2lkeCBPTiBy cHJfaW50ZWcgKGlkKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnBy X2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERF RklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBC WSBpZDsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIElOREVYIHJwcl9pbnRlZ19pZF9p ZHg7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQjkuIFJQUiArIFZvbGF0aWxlIGZ1bmN0aW9uIGluIERFRklORQor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBWb2xhdGlsZSBmdW5jdGlvbnMgbXVzdCBiZSBldmFsdWF0ZWQgcGVyLXJvdywg bm90IG9wdGltaXplZCBhd2F5LgorCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFT IGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCByYW5kb20oKSA+PSAw LjApCitPUkRFUiBCWSBpZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3Vi cXVlcnkgaW4gV0hFUkUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIHdpbmRvdyBpbiBhIGNvcnJlbGF0ZWQgc3Vi cXVlcnkuICBERUZJTkUgcmVmZXJlbmNlcyBvbmx5IGxvY2FsCistLSBjb2x1bW5zIChubyBxdWFs aWZpZWQgcmVmcyksIHdoaWxlIGNvcnJlbGF0aW9uIGlzIGluIFdIRVJFLgorCitTRUxFQ1Qgby5p ZCwgby52YWwsCisgICAgKFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKKyAgICAgRlJPTSBycHJfaW50 ZWcgaQorICAgICBXSEVSRSBpLmlkIDw9IG8uaWQKKyAgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkCisgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICBERUZJTkUgQiBBUyB2YWwg PiBQUkVWKHZhbCkpCisgICAgIE9SREVSIEJZIGlkCisgICAgIExJTUlUIDEpIEFTIGZpcnN0X2Nu dAorRlJPTSBycHJfaW50ZWcgbworT1JERVIgQlkgby5pZDsKKworLS0gQ2xlYW51cAorRFJPUCBU QUJMRSBycHJfaW50ZWc7CitEUk9QIFRBQkxFIHJwcl9pbnRlZzI7Ci0tIAoyLjUwLjEgKEFwcGxl IEdpdC0xNTUpCgo= --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0008-Replace-reduced-frame-map-with-single-match-result.txt" Content-Disposition: attachment; filename="nocfbot-0008-Replace-reduced-frame-map-with-single-match-result.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr84a97 RnJvbSAyNGExOTIyNmVmMWZlMTAwZmMxNjgwYjE3ODEwM2U5OTdjMGM0OGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTQ6MDk6MTIgKzA5MDAKU3ViamVjdDogW1BBVENIXSBSZXBsYWNl IHJlZHVjZWQgZnJhbWUgbWFwIHdpdGggc2luZ2xlIG1hdGNoIHJlc3VsdAoKVGhlIHJlZHVjZWQg ZnJhbWUgbWFwIHdhcyBhIHBlci1yb3cgYnl0ZSBhcnJheSB0cmFja2luZyBtYXRjaCBzdGF0dXMu ClNpbmNlIHJvd3MgYXJlIHByb2Nlc3NlZCBzZXF1ZW50aWFsbHkgYW5kIG9ubHkgb25lIG1hdGNo IGlzIGFjdGl2ZQphdCBhIHRpbWUsIHJlcGxhY2UgaXQgd2l0aCBmb3VyIHNjYWxhciBmaWVsZHM6 IHZhbGlkLCBtYXRjaGVkLApzdGFydCwgYW5kIGxlbmd0aC4KCkFsc28gZGlzdGluZ3Vpc2ggZW1w dHkgbWF0Y2hlcyAoRklOIHJlYWNoZWQgd2l0aCB6ZXJvIHJvd3MgY29uc3VtZWQpCmZyb20gdW5t YXRjaGVkIHJvd3MgdmlhIFJGX0VNUFRZX01BVENILCBjb3VudGVkIGFzIG1hdGNoZWQgaW4gTkZB CnN0YXRpc3RpY3MuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jICAgICAgICAg ICAgfCAgNTYgKysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAg ICB8IDIyMSArKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCAgICAgICAgICAgICB8ICAyMSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJf ZXhwbGFpbi5vdXQgfCAgIDggKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyks IDE4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKaW5kZXggNThmOWRhMGI4MTQu LjFjYmU4ZTE0NzgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCkBAIC01NDksNyArNTQ5LDcgQEAK ICAqCiAgKiAgICgxKSBGaW5kIG9yIGNyZWF0ZSBhIGNvbnRleHQgZm9yIHRoZSB0YXJnZXQgcm93 CiAgKiAgICgyKSBFbnRlciB0aGUgcm93IHByb2Nlc3NpbmcgbG9vcAotICogICAoMykgQWZ0ZXIg dGhlIGxvb3AgZW5kcywgcmVjb3JkIHRoZSByZXN1bHQgaW4gcmVkdWNlZF9mcmFtZV9tYXAKKyAq ICAgKDMpIEFmdGVyIHRoZSBsb29wIGVuZHMsIHJlY29yZCB0aGUgbWF0Y2ggcmVzdWx0CiAgKgog ICogUHNldWRvY29kZSBvZiB0aGUgcm93IHByb2Nlc3NpbmcgbG9vcDoKICAqCkBAIC05MjMsMTgg KzkyMywxOSBAQAogICogQ2hhcHRlciBYICBNYXRjaCBSZXN1bHQgUHJvY2Vzc2luZwogICogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogICoKLSAqIFgtMS4gUmVkdWNlZCBGcmFtZSBNYXAKKyAqIFgtMS4g TWF0Y2ggUmVzdWx0CiAgKgotICogUlBSIG1hdGNoIHJlc3VsdHMgYXJlIHJlY29yZGVkIGluIGEg Ynl0ZSBhcnJheSBjYWxsZWQgcmVkdWNlZF9mcmFtZV9tYXAuCi0gKiBPbmUgYnl0ZSBpcyBhbGxv Y2F0ZWQgcGVyIHJvdywgYW5kIHRoZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAq IFJQUiB0cmFja3MgdGhlIGN1cnJlbnQgbWF0Y2ggcmVzdWx0IGFzIGEgc2luZ2xlIGVudHJ5IGlu IFdpbmRvd0FnZ1N0YXRlCisgKiB3aXRoIGZvdXIgZmllbGRzOiBycHJfbWF0Y2hfdmFsaWQsIHJw cl9tYXRjaF9tYXRjaGVkLCBycHJfbWF0Y2hfc3RhcnQsCisgKiBhbmQgcnByX21hdGNoX2xlbmd0 aC4gIFdoZW4gdmFsaWQgaXMgdHJ1ZSwgdGhlIGVudHJ5IGRlc2NyaWJlcyB0aGUKKyAqIG1hdGNo IHJlc3VsdCBmb3IgdGhlIHBvc2l0aW9uIGF0IHJwcl9tYXRjaF9zdGFydDogbWF0Y2hlZCBpbmRp Y2F0ZXMKKyAqIHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgYW5kIGxlbmd0aCBnaXZlcyB0aGUgbnVtYmVy IG9mIHJvd3MgY29uc3VtZWQuCisgKiBBIG1hdGNoIHdpdGggbGVuZ3RoIDAgcmVwcmVzZW50cyBh biBlbXB0eSBtYXRjaCAocGF0dGVybiBtYXRjaGVkIGJ1dAorICogY29uc3VtZWQgbm8gcm93cyku ICBXaGVuIHZhbGlkIGlzIGZhbHNlLCB0aGUgcG9zaXRpb24gaGFzIG5vdCBiZWVuCisgKiBldmFs dWF0ZWQgeWV0IChSRl9OT1RfREVURVJNSU5FRCkuCiAgKgotICogICBSRl9OT1RfREVURVJNSU5F RCAoMCkgIE5vdCB5ZXQgcHJvY2Vzc2VkCi0gKiAgIFJGX0ZSQU1FX0hFQUQgICAgICgxKSAgU3Rh cnQgcm93IG9mIHRoZSBtYXRjaAotICogICBSRl9TS0lQUEVEICAgICAgICAoMikgIEludGVyaW9y IHJvdyBvZiB0aGUgbWF0Y2ggKHNraXBwZWQgaW4gZnJhbWUpCi0gKiAgIFJGX1VOTUFUQ0hFRCAg ICAgICgzKSAgTWF0Y2ggZmFpbHVyZQotICoKLSAqIFRoZSB3aW5kb3cgZnVuY3Rpb24gcmVmZXJl bmNlcyB0aGlzIG1hcCB0byBkZXRlcm1pbmUgZnJhbWUgaW5jbHVzaW9uIGZvcgotICogZWFjaCBy b3cuCisgKiBUaGUgd2luZG93IGZ1bmN0aW9uIGNhbGxzIGdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1 cygpIHRvIGxvb2sgdXAgYQorICogcm93J3Mgc3RhdHVzIGFnYWluc3QgdGhlIGN1cnJlbnQgbWF0 Y2ggcmVzdWx0LgogICoKICAqIFgtMi4gQUZURVIgTUFUQ0ggU0tJUAogICoKQEAgLTEwMjgsOCAr MTAyOSw3IEBACiAgKiAgICAgUGhhc2UgMyAoQWR2YW5jZSk6IHNraXBwZWQgKG5vIHN0YXRlcykK ICAqCiAgKiAgIEMwLnN0YXRlcyBpcyBlbXB0eSwgc28gdGhlIGxvb3AgdGVybWluYXRlcy4KLSAq ICAgbWF0Y2hFbmRSb3cgPCBtYXRjaFN0YXJ0Um93IC0+IFJGX1VOTUFUQ0hFRC4KLSAqICAgcmVn aXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAoMCwgUkZfVU5NQVRDSEVEKS4KKyAqICAgbWF0Y2hFbmRS b3cgPCBtYXRjaFN0YXJ0Um93IC0+IHVubWF0Y2hlZC4KICAqCiAgKiAtLS0gUm93IDEgKHByaWNl PTExMCkgLS0tCiAgKgpAQCAtMTExMyw5ICsxMTEzLDcgQEAKICAqCiAgKiAgIEMxLnN0YXRlcyBp cyBlbXB0eSBhbmQgbWF0Y2hFbmRSb3c9MyA+PSBtYXRjaFN0YXJ0Um93PTEgLT4gbWF0Y2ggc3Vj Y2VlZHMuCiAgKgotICogICByZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCgxLCBSRl9GUkFNRV9I RUFEKQotICogICByZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCgyLCBSRl9TS0lQUEVEKQotICog ICByZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCgzLCBSRl9TS0lQUEVEKQorICogICBycHJfbWF0 Y2hfc3RhcnQgPSAxLCBycHJfbWF0Y2hfbGVuZ3RoID0gMwogICoKICAqIC0tLSBSb3cgNCAocHJp Y2U9MTMwKSAtLS0KICAqCkBAIC0xMTI4LDE1ICsxMTI2LDE1IEBACiAgKiAgICAgQjogMTMwIDwg UFJFVigxMTUpIC0+IGZhbHNlCiAgKgogICogICAuLi4gTm8gc3Vic2VxdWVudCByb3dzLCBzbyBF eGVjUlBSRmluYWxpemVBbGxDb250ZXh0cygpIGlzIGNhbGxlZC4KLSAqICAgTWF0Y2ggaW5jb21w bGV0ZSAtPiBSRl9VTk1BVENIRUQuCisgKiAgIE1hdGNoIGluY29tcGxldGUgLT4gdW5tYXRjaGVk LgogICoKICAqIFhJLTUuIEZpbmFsIFJlc3VsdAogICoKLSAqICAgUm93IDA6IFJGX1VOTUFUQ0hF RCAgLT4gZnJhbWUgPSB0aGUgcm93IGl0c2VsZgotICogICBSb3cgMTogUkZfRlJBTUVfSEVBRCAt PiBmcmFtZSA9IHJvd3MgMSB0aHJvdWdoIDMKLSAqICAgUm93IDI6IFJGX1NLSVBQRUQgICAgLT4g aW5zaWRlIHJvdyAxJ3MgbWF0Y2gKLSAqICAgUm93IDM6IFJGX1NLSVBQRUQgICAgLT4gaW5zaWRl IHJvdyAxJ3MgbWF0Y2gKLSAqICAgUm93IDQ6IFJGX1VOTUFUQ0hFRCAgLT4gZnJhbWUgPSB0aGUg cm93IGl0c2VsZgorICogICBSb3cgMDogdW5tYXRjaGVkICAgICAtPiBmcmFtZSA9IHRoZSByb3cg aXRzZWxmCisgKiAgIFJvdyAxOiBtYXRjaCBoZWFkICAgIC0+IGZyYW1lID0gcm93cyAxIHRocm91 Z2ggMworICogICBSb3cgMjogaW5zaWRlIG1hdGNoICAtPiBza2lwcGVkCisgKiAgIFJvdyAzOiBp bnNpZGUgbWF0Y2ggIC0+IHNraXBwZWQKKyAqICAgUm93IDQ6IHVubWF0Y2hlZCAgICAgLT4gZnJh bWUgPSB0aGUgcm93IGl0c2VsZgogICoKICAqIENoYXB0ZXIgWElJICBTdW1tYXJ5IG9mIEtleSBE ZXNpZ24gRGVjaXNpb25zCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTc5LDEyICsxNTc3 LDE0IEBAIHN0YXRpYyB2b2lkIG5mYV9hZHZhbmNlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg UlBSTkZBQ29udGV4dCAqY3R4LAogICoKICAqIC0gRW1wdHkgbWF0Y2ggaGFuZGxpbmc6IFRoZSBp bml0aWFsIGFkdmFuY2UgdXNlcyBjdXJyZW50UG9zID0KICAqICAgc3RhcnRQb3MgLSAxIChiZWZv cmUgYW55IHJvdyBpcyBjb25zdW1lZCkuIElmIEZJTiBpcyByZWFjaGVkIHZpYQotICogICBlcHNp bG9uIHRyYW5zaXRpb25zIGFsb25lLCBtYXRjaEVuZFJvdyA9IHN0YXJ0UG9zIC0gMSA8IG1hdGNo U3RhcnRSb3csCi0gKiAgIHJlc3VsdGluZyBpbiBVTk1BVENIRUQuIEZvciByZWx1Y3RhbnQgbWlu PTAgcGF0dGVybnMgKEEqPywgQT8/KSwKLSAqICAgdGhlIHNraXAgcGF0aCByZWFjaGVzIEZJTiBm aXJzdCBhbmQgZWFybHkgdGVybWluYXRpb24gcHJ1bmVzIGVudGVyCi0gKiAgIHBhdGhzLCB5aWVs ZGluZyBhbiBpbW1lZGlhdGUgZW1wdHkgKHVubWF0Y2hlZCkgcmVzdWx0LiBGb3IKLSAqICAgZ3Jl ZWR5IHBhdHRlcm5zIChBKiksIHRoZSBlbnRlciBwYXRoIGFkZHMgVkFSIHN0YXRlcyBmaXJzdCwg dGhlbgotICogICB0aGUgc2tpcCBGSU4gaXMgcmVjb3JkZWQgYnV0IFZBUiBzdGF0ZXMgc3Vydml2 ZSBmb3IgbGF0ZXIgbWF0Y2hpbmcuCisgKiAgIGVwc2lsb24gdHJhbnNpdGlvbnMgYWxvbmUsIG1h dGNoRW5kUm93ID0gc3RhcnRQb3MgLSAxIDwgbWF0Y2hTdGFydFJvdy4KKyAqICAgSWYgbWF0Y2hl ZFN0YXRlIGlzIHNldCAoRklOIHdhcyByZWFjaGVkKSwgdGhpcyBpcyBhbiBlbXB0eSBtYXRjaAor ICogICAoUkZfRU1QVFlfTUFUQ0gpOyBvdGhlcndpc2UgaXQgaXMgdW5tYXRjaGVkIChSRl9VTk1B VENIRUQpLgorICogICBGb3IgcmVsdWN0YW50IG1pbj0wIHBhdHRlcm5zIChBKj8sIEE/PyksIHRo ZSBza2lwIHBhdGggcmVhY2hlcworICogICBGSU4gZmlyc3QgYW5kIGVhcmx5IHRlcm1pbmF0aW9u IHBydW5lcyBlbnRlciBwYXRocywgeWllbGRpbmcgYW4KKyAqICAgaW1tZWRpYXRlIGVtcHR5IG1h dGNoIHJlc3VsdC4gRm9yIGdyZWVkeSBwYXR0ZXJucyAoQSopLCB0aGUgZW50ZXIKKyAqICAgcGF0 aCBhZGRzIFZBUiBzdGF0ZXMgZmlyc3QsIHRoZW4gdGhlIHNraXAgRklOIGlzIHJlY29yZGVkIGJ1 dCBWQVIKKyAqICAgc3RhdGVzIHN1cnZpdmUgZm9yIGxhdGVyIG1hdGNoaW5nLgogICoKICAqIENv bnRleHQgQWJzb3JwdGlvbiBSdW50aW1lOgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggYWVkN2NiZWY5OWEuLjFjOTI1 ZTAyMjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0yNDksMTEgKzI0 OSw4IEBAIHN0YXRpYyBib29sIGF0dG5vX21hcF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29u dGV4dCk7CiBzdGF0aWMgYm9vbCBycHJfaXNfZGVmaW5lZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUpOwogc3RhdGljIGludAlyb3dfaXNfaW5fcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lu b2JqLCBpbnQ2NCBwb3MpOwogCi1zdGF0aWMgdm9pZCBjcmVhdGVfcmVkdWNlZF9mcmFtZV9tYXAo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKLXN0YXRpYyB2b2lkIGNsZWFyX3JlZHVjZWRfZnJh bWVfbWFwKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7Ci1zdGF0aWMgaW50CWdldF9yZWR1Y2Vk X2ZyYW1lX21hcChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcyk7Ci1zdGF0aWMg dm9pZCByZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IGludDY0IHBvcywKLQkJCQkJCQkJCSAgIGludCB2YWwpOworc3RhdGljIHZvaWQgY2xlYXJfcmVk dWNlZF9mcmFtZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOworc3RhdGljIGludAlnZXRfcmVk dWNlZF9mcmFtZV9zdGF0dXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpOwog c3RhdGljIHZvaWQgdXBkYXRlX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50 NjQgcG9zKTsKIAogc3RhdGljIHZvaWQgY2hlY2tfcnByX25hdmlnYXRpb24oTm9kZSAqbm9kZSwg Ym9vbCBpc19wcmV2KTsKQEAgLTEwMzcsMTIgKzEwMzQsNiBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0 ZXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCXsKIAkJaW50CQkJcmV0OwogCi0jaWZkZWYg UlBSX0RFQlVHCi0JCXByaW50ZigiPT09PT0gbG9vcCBpbiBmcmFtZSBzdGFydHM6IGFnZ3JlZ2F0 ZWR1cHRvOiAiIElOVDY0X0ZPUk1BVCAiIGFnZ3JlZ2F0ZWRiYXNlOiAiIElOVDY0X0ZPUk1BVCAi XG4iLAotCQkJICAgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvLAotCQkJICAgd2luc3RhdGUtPmFn Z3JlZ2F0ZWRiYXNlKTsKLSNlbmRpZgotCiAJCS8qIEZldGNoIG5leHQgcm93IGlmIHdlIGRpZG4n dCBhbHJlYWR5ICovCiAJCWlmIChUdXBJc051bGwoYWdnX3Jvd19zbG90KSkKIAkJewpAQCAtMTA2 NSwyNyArMTA1NiwxOCBAQCBldmFsX3dpbmRvd2FnZ3JlZ2F0ZXMoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlKQogCiAJCWlmIChycHJfaXNfZGVmaW5lZCh3aW5zdGF0ZSkpCiAJCXsKLSNpZmRlZiBS UFJfREVCVUcKLQkJCXByaW50ZigicmVkdWNlZF9mcmFtZV9tYXA6ICVkIGFnZ3JlZ2F0ZWR1cHRv OiAiIElOVDY0X0ZPUk1BVCAiIGFnZ3JlZ2F0ZWRiYXNlOiAiIElOVDY0X0ZPUk1BVCAiXG4iLAot CQkJCSAgIGdldF9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0ZSwKLQkJCQkJCQkJCQkgd2luc3Rh dGUtPmFnZ3JlZ2F0ZWR1cHRvKSwKLQkJCQkgICB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8sCi0J CQkJICAgd2luc3RhdGUtPmFnZ3JlZ2F0ZWRiYXNlKTsKLSNlbmRpZgotCiAJCQkvKgotCQkJICog SWYgdGhlIHJvdyBzdGF0dXMgYXQgY3VycmVudHBvcyBpcyBhbHJlYWR5IGRlY2lkZWQgYW5kIGN1 cnJlbnQKLQkJCSAqIHJvdyBzdGF0dXMgaXMgbm90IGRlY2lkZWQgeWV0LCBpdCBtZWFucyB3ZSBw YXNzZWQgdGhlIGxhc3QKLQkJCSAqIHJlZHVjZWQgZnJhbWUuIFRpbWUgdG8gYnJlYWsgdGhlIGxv b3AuCisJCQkgKiBJZiBjdXJyZW50cG9zIGlzIGFscmVhZHkgZGVjaWRlZCBidXQgYWdncmVnYXRl ZHVwdG8gaXMgbm90IHlldAorCQkJICogZGV0ZXJtaW5lZCwgd2UndmUgcGFzc2VkIHRoZSBsYXN0 IHJlZHVjZWQgZnJhbWUuCiAJCQkgKi8KLQkJCWlmIChnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2lu c3RhdGUsIHdpbnN0YXRlLT5jdXJyZW50cG9zKQorCQkJaWYgKGdldF9yZWR1Y2VkX2ZyYW1lX3N0 YXR1cyh3aW5zdGF0ZSwgd2luc3RhdGUtPmN1cnJlbnRwb3MpCiAJCQkJIT0gUkZfTk9UX0RFVEVS TUlORUQgJiYKLQkJCQlnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIHdpbnN0YXRlLT5h Z2dyZWdhdGVkdXB0bykKKwkJCQlnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsIHdp bnN0YXRlLT5hZ2dyZWdhdGVkdXB0bykKIAkJCQk9PSBSRl9OT1RfREVURVJNSU5FRCkKIAkJCQli cmVhazsKIAogCQkJLyoKLQkJCSAqIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUg cmVkdWNlZCBmcmFtZS4KKwkJCSAqIENhbGN1bGF0ZSB0aGUgcmVkdWNlZCBmcmFtZSBmb3IgYWdn cmVnYXRlZHVwdG8uCiAJCQkgKi8KIAkJCXJldCA9IHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKHdp bnN0YXRlLT5hZ2dfd2lub2JqLAogCQkJCQkJCQkJCSAgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRv KTsKQEAgLTEwOTMsMTcgKzEwNzUsMTMgQEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVzKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSkKIAkJCQlicmVhazsKIAogCQkJLyoKLQkJCSAqIENoZWNrIGlmIGN1 cnJlbnQgcm93IG5lZWRzIHRvIGJlIHNraXBwZWQgZHVlIHRvIG5vIG1hdGNoLgorCQkJICogQ2hl Y2sgaWYgY3VycmVudCByb3cgaXMgaW5zaWRlIGEgbWF0Y2ggYnV0IG5vdCB0aGUgaGVhZAorCQkJ ICogKHNraXBwZWQpLCBhbmQgaXQncyB0aGUgYmFzZSByb3cgZm9yIGFnZ3JlZ2F0aW9uLgogCQkJ ICovCi0JCQlpZiAoZ2V0X3JlZHVjZWRfZnJhbWVfbWFwKHdpbnN0YXRlLAotCQkJCQkJCQkJICB3 aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8pID09IFJGX1NLSVBQRUQgJiYKKwkJCWlmIChnZXRfcmVk dWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsCisJCQkJCQkJCQkJIHdpbnN0YXRlLT5hZ2dyZWdh dGVkdXB0bykgPT0gUkZfU0tJUFBFRCAmJgogCQkJCXdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0byA9 PSB3aW5zdGF0ZS0+YWdncmVnYXRlZGJhc2UpCi0JCQl7Ci0jaWZkZWYgUlBSX0RFQlVHCi0JCQkJ cHJpbnRmKCJza2lwIGN1cnJlbnQgcm93IGZvciBhZ2dyZWdhdGlvblxuIik7Ci0jZW5kaWYKIAkJ CQlicmVhazsKLQkJCX0KIAkJfQogCiAJCS8qIFNldCB0dXBsZSBjb250ZXh0IGZvciBldmFsdWF0 aW9uIG9mIGFnZ3JlZ2F0ZSBhcmd1bWVudHMgKi8KQEAgLTEzNTgsNyArMTMzNiw4IEBAIGJlZ2lu X3BhcnRpdGlvbihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJd2luc3RhdGUtPmZyYW1laGVh ZF92YWxpZCA9IGZhbHNlOwogCXdpbnN0YXRlLT5mcmFtZXRhaWxfdmFsaWQgPSBmYWxzZTsKIAl3 aW5zdGF0ZS0+Z3JvdXB0YWlsX3ZhbGlkID0gZmFsc2U7Ci0JY3JlYXRlX3JlZHVjZWRfZnJhbWVf bWFwKHdpbnN0YXRlKTsKKwlpZiAocnByX2lzX2RlZmluZWQod2luc3RhdGUpKQorCQljbGVhcl9y ZWR1Y2VkX2ZyYW1lKHdpbnN0YXRlKTsKIAl3aW5zdGF0ZS0+c3Bvb2xlZF9yb3dzID0gMDsKIAl3 aW5zdGF0ZS0+Y3VycmVudHBvcyA9IDA7CiAJd2luc3RhdGUtPmZyYW1laGVhZHBvcyA9IDA7CkBA IC0xNTgxLDkgKzE1NjAsOCBAQCByZWxlYXNlX3BhcnRpdGlvbihXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUpCiAJd2luc3RhdGUtPnBhcnRpdGlvbl9zcG9vbGVkID0gZmFsc2U7CiAJd2luc3RhdGUt Pm5leHRfcGFydGl0aW9uID0gdHJ1ZTsKIAotCS8qIFJlc2V0IFJQUiByZWR1Y2VkIGZyYW1lIG1h cCAqLwotCXdpbnN0YXRlLT5yZWR1Y2VkX2ZyYW1lX21hcCA9IE5VTEw7Ci0Jd2luc3RhdGUtPmFs bG9jX3N6ID0gMDsKKwkvKiBSZXNldCBSUFIgbWF0Y2ggcmVzdWx0cyAqLworCWNsZWFyX3JlZHVj ZWRfZnJhbWUod2luc3RhdGUpOwogCiAJLyogUmVzZXQgTkZBIHN0YXRlIGZvciBuZXcgcGFydGl0 aW9uICovCiAJd2luc3RhdGUtPm5mYUNvbnRleHQgPSBOVUxMOwpAQCAtMjM2NiwxMSArMjM0NCw2 IEBAIEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRlICpwc3RhdGUpCiAKIAlDSEVDS19GT1JfSU5URVJS VVBUUygpOwogCi0jaWZkZWYgUlBSX0RFQlVHCi0JcHJpbnRmKCJFeGVjV2luZG93QWdnIGNhbGxl ZC4gcG9zOiAiIElOVDY0X0ZPUk1BVCAiXG4iLAotCQkgICB3aW5zdGF0ZS0+Y3VycmVudHBvcyk7 Ci0jZW5kaWYKLQogCWlmICh3aW5zdGF0ZS0+c3RhdHVzID09IFdJTkRPV0FHR19ET05FKQogCQly ZXR1cm4gTlVMTDsKIApAQCAtMjQ4MCwxNCArMjQ1MywxMyBAQCBFeGVjV2luZG93QWdnKFBsYW5T dGF0ZSAqcHN0YXRlKQogCQlpZiAod2luc3RhdGUtPnN0YXR1cyA9PSBXSU5ET1dBR0dfUlVOKQog CQl7CiAJCQkvKgotCQkJICogSWYgUlBSIGlzIGRlZmluZWQgYW5kIHNraXAgbW9kZSBpcyBuZXh0 IHJvdywgd2UgbmVlZCB0byBjbGVhcgotCQkJICogZXhpc3RpbmcgcmVkdWNlZCBmcmFtZSBpbmZv IHNvIHRoYXQgd2UgbmV3bHkgY2FsY3VsYXRlIHRoZSBpbmZvCi0JCQkgKiBzdGFydGluZyBmcm9t IGN1cnJlbnQgcm93LgorCQkJICogSWYgUlBSIGlzIGRlZmluZWQgYW5kIHNraXAgbW9kZSBpcyBu ZXh0IHJvdywgY2xlYXIgdGhlIGN1cnJlbnQKKwkJCSAqIG1hdGNoIHNvIHRoZSBuZXh0IHJvdyB0 cmlnZ2VycyByZS1ldmFsdWF0aW9uLgogCQkJICovCiAJCQlpZiAocnByX2lzX2RlZmluZWQod2lu c3RhdGUpKQogCQkJewogCQkJCWlmICh3aW5zdGF0ZS0+cnBTa2lwVG8gPT0gU1RfTkVYVF9ST1cp Ci0JCQkJCWNsZWFyX3JlZHVjZWRfZnJhbWVfbWFwKHdpbnN0YXRlKTsKKwkJCQkJY2xlYXJfcmVk dWNlZF9mcmFtZSh3aW5zdGF0ZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0yOTg2LDkgKzI5NTgsNiBA QCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCQkJbmFtZSA9IHRlLT5yZXNuYW1lOwogCQkJZXhwciA9IHRlLT5leHByOwogCi0j aWZkZWYgUlBSX0RFQlVHCi0JCQlwcmludGYoImRlZmluZVZhcmlhYmxlIG5hbWU6ICVzXG4iLCBu YW1lKTsKLSNlbmRpZgogCQkJd2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9CiAJCQkJbGFw cGVuZCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0LAogCQkJCQkJbWFrZVN0cmluZyhwc3Ry ZHVwKG5hbWUpKSk7CkBAIC0zOTc0LDggKzM5NDMsNiBAQCByb3dfaXNfaW5fcmVkdWNlZF9mcmFt ZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MpCiAJV2luZG93QWdnU3RhdGUgKndpbnN0 YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKIAlpbnQJCQlzdGF0ZTsKIAlpbnQJCQlydG47Ci0JaW50 NjQJCWk7Ci0JaW50CQkJbnVtX3JlZHVjZWRfcm93czsKIAogCWlmICghcnByX2lzX2RlZmluZWQo d2luc3RhdGUpKQogCXsKQEAgLTM5ODQsMTQgKzM5NTEsMTAgQEAgcm93X2lzX2luX3JlZHVjZWRf ZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKQogCQkgKiB3aW5kb3cgZnJhbWUu CiAJCSAqLwogCQlydG4gPSAwOwotI2lmZGVmIFJQUl9ERUJVRwotCQlwcmludGYoInJvd19pc19p bl9yZWR1Y2VkX2ZyYW1lIHJldHVybnMgJWQ6IHBvczogIiBJTlQ2NF9GT1JNQVQgIlxuIiwKLQkJ CSAgIHJ0biwgcG9zKTsKLSNlbmRpZgogCQlyZXR1cm4gcnRuOwogCX0KIAotCXN0YXRlID0gZ2V0 X3JlZHVjZWRfZnJhbWVfbWFwKHdpbnN0YXRlLCBwb3MpOworCXN0YXRlID0gZ2V0X3JlZHVjZWRf ZnJhbWVfc3RhdHVzKHdpbnN0YXRlLCBwb3MpOwogCiAJaWYgKHN0YXRlID09IFJGX05PVF9ERVRF Uk1JTkVEKQogCXsKQEAgLTM5OTksMTYgKzM5NjIsMTIgQEAgcm93X2lzX2luX3JlZHVjZWRfZnJh bWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKQogCQl1cGRhdGVfcmVkdWNlZF9mcmFt ZSh3aW5vYmosIHBvcyk7CiAJfQogCi0Jc3RhdGUgPSBnZXRfcmVkdWNlZF9mcmFtZV9tYXAod2lu c3RhdGUsIHBvcyk7CisJc3RhdGUgPSBnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUs IHBvcyk7CiAKIAlzd2l0Y2ggKHN0YXRlKQogCXsKIAkJY2FzZSBSRl9GUkFNRV9IRUFEOgotCQkJ bnVtX3JlZHVjZWRfcm93cyA9IDE7Ci0JCQlmb3IgKGkgPSBwb3MgKyAxOwotCQkJCSBnZXRfcmVk dWNlZF9mcmFtZV9tYXAod2luc3RhdGUsIGkpID09IFJGX1NLSVBQRUQ7IGkrKykKLQkJCQludW1f cmVkdWNlZF9yb3dzKys7Ci0JCQlydG4gPSBudW1fcmVkdWNlZF9yb3dzOworCQkJcnRuID0gd2lu c3RhdGUtPnJwcl9tYXRjaF9sZW5ndGg7CiAJCQlicmVhazsKIAogCQljYXNlIFJGX1NLSVBQRUQ6 CkBAIC00MDE2LDYgKzM5NzUsNyBAQCByb3dfaXNfaW5fcmVkdWNlZF9mcmFtZShXaW5kb3dPYmpl Y3Qgd2lub2JqLCBpbnQ2NCBwb3MpCiAJCQlicmVhazsKIAogCQljYXNlIFJGX1VOTUFUQ0hFRDoK KwkJY2FzZSBSRl9FTVBUWV9NQVRDSDoKIAkJCXJ0biA9IC0xOwogCQkJYnJlYWs7CiAKQEAgLTQw MjUsOTEgKzM5ODUsNTYgQEAgcm93X2lzX2luX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdp bm9iaiwgaW50NjQgcG9zKQogCQkJYnJlYWs7CiAJfQogCi0jaWZkZWYgUlBSX0RFQlVHCi0JcHJp bnRmKCJyb3dfaXNfaW5fcmVkdWNlZF9mcmFtZSByZXR1cm5zICVkOiBwb3M6ICIgSU5UNjRfRk9S TUFUICJcbiIsCi0JCSAgIHJ0biwgcG9zKTsKLSNlbmRpZgogCXJldHVybiBydG47CiB9CiAKLSNk ZWZpbmUgUkVEVUNFRF9GUkFNRV9NQVBfSU5JVF9TSVpFCTEwMjRMCi0KLS8qCi0gKiBjcmVhdGVf cmVkdWNlZF9mcmFtZV9tYXAKLSAqIENyZWF0ZSByZWR1Y2VkIGZyYW1lIG1hcAotICovCi1zdGF0 aWMgdm9pZAotY3JlYXRlX3JlZHVjZWRfZnJhbWVfbWFwKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSkKLXsKLQl3aW5zdGF0ZS0+cmVkdWNlZF9mcmFtZV9tYXAgPQotCQlNZW1vcnlDb250ZXh0QWxs b2Mod2luc3RhdGUtPnBhcnRjb250ZXh0LAotCQkJCQkJICAgUkVEVUNFRF9GUkFNRV9NQVBfSU5J VF9TSVpFKTsKLQl3aW5zdGF0ZS0+YWxsb2Nfc3ogPSBSRURVQ0VEX0ZSQU1FX01BUF9JTklUX1NJ WkU7Ci0JY2xlYXJfcmVkdWNlZF9mcmFtZV9tYXAod2luc3RhdGUpOwotfQotCiAvKgotICogY2xl YXJfcmVkdWNlZF9mcmFtZV9tYXAKLSAqIENsZWFyIHJlZHVjZWQgZnJhbWUgbWFwCisgKiBjbGVh cl9yZWR1Y2VkX2ZyYW1lCisgKiBDbGVhciByZWR1Y2VkIGZyYW1lIHN0YXR1cwogICovCiBzdGF0 aWMgdm9pZAotY2xlYXJfcmVkdWNlZF9mcmFtZV9tYXAoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl KQorY2xlYXJfcmVkdWNlZF9mcmFtZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiB7Ci0JQXNz ZXJ0KHdpbnN0YXRlLT5yZWR1Y2VkX2ZyYW1lX21hcCAhPSBOVUxMKTsKLQlNZW1TZXQod2luc3Rh dGUtPnJlZHVjZWRfZnJhbWVfbWFwLCBSRl9OT1RfREVURVJNSU5FRCwKLQkJICAgd2luc3RhdGUt PmFsbG9jX3N6KTsKKwl3aW5zdGF0ZS0+cnByX21hdGNoX3ZhbGlkID0gZmFsc2U7CisJd2luc3Rh dGUtPnJwcl9tYXRjaF9tYXRjaGVkID0gZmFsc2U7CisJd2luc3RhdGUtPnJwcl9tYXRjaF9zdGFy dCA9IC0xOworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbGVuZ3RoID0gMDsKIH0KIAogLyoKLSAqIGdl dF9yZWR1Y2VkX2ZyYW1lX21hcAotICogR2V0IHJlZHVjZWQgZnJhbWUgbWFwIHNwZWNpZmllZCBi eSBwb3MKKyAqIGdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cworICoJCUxvb2sgdXAgYSBwb3NpdGlv biBhZ2FpbnN0IHRoZSBjdXJyZW50IG1hdGNoLgorICoKKyAqIFJldHVybnMgb25lIG9mIHRoZSBS Rl8qIGNvbnN0YW50czoKKyAqICAgUkZfTk9UX0RFVEVSTUlORUQgIHBvcyBoYXMgbm90IGJlZW4g cHJvY2Vzc2VkIHlldAorICogICBSRl9GUkFNRV9IRUFEICAgICAgcG9zIGlzIHRoZSBzdGFydCBv ZiB0aGUgY3VycmVudCBtYXRjaAorICogICBSRl9TS0lQUEVEICAgICAgICAgcG9zIGlzIGluc2lk ZSB0aGUgY3VycmVudCBtYXRjaCBidXQgbm90IHRoZSBzdGFydAorICogICBSRl9VTk1BVENIRUQg ICAgICAgcG9zIGlzIHByb2Nlc3NlZCBidXQgbm90IHBhcnQgb2YgYW55IG1hdGNoCiAgKi8KIHN0 YXRpYyBpbnQKLWdldF9yZWR1Y2VkX2ZyYW1lX21hcChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IGludDY0IHBvcykKK2dldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyhXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUsIGludDY0IHBvcykKIHsKLQlBc3NlcnQod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFw ICE9IE5VTEwpOwotCUFzc2VydChwb3MgPj0gMCk7CisJaW50NjQJCXN0YXJ0ID0gd2luc3RhdGUt PnJwcl9tYXRjaF9zdGFydDsKKwlpbnQ2NAkJbGVuZ3RoID0gd2luc3RhdGUtPnJwcl9tYXRjaF9s ZW5ndGg7CiAKLQkvKgotCSAqIElmIHBvcyBpcyBub3QgaW4gdGhlIHJlZHVjZWQgZnJhbWUgbWFw LCBpdCBtZWFucyB0aGF0IGFueSBpbmZvCi0JICogcmVnYXJkaW5nIHRoZSBwb3MgaGFzIG5vdCBi ZWVuIHJlZ2lzdGVyZWQgeWV0LiBTbyB3ZSByZXR1cm4KLQkgKiBSRl9OT1RfREVURVJNSU5FRC4K LQkgKi8KLQlpZiAocG9zID49IHdpbnN0YXRlLT5hbGxvY19zeikKKwlpZiAoIXdpbnN0YXRlLT5y cHJfbWF0Y2hfdmFsaWQpCiAJCXJldHVybiBSRl9OT1RfREVURVJNSU5FRDsKIAotCXJldHVybiB3 aW5zdGF0ZS0+cmVkdWNlZF9mcmFtZV9tYXBbcG9zXTsKLX0KLQotLyoKLSAqIHJlZ2lzdGVyX3Jl ZHVjZWRfZnJhbWVfbWFwCi0gKiBBZGQvcmVwbGFjZSByZWR1Y2VkIGZyYW1lIG1hcCBtZW1iZXIg YXQgcG9zLgotICogSWYgdGhlcmUncyBubyBlbm91Z2ggc3BhY2UsIGV4cGFuZCB0aGUgbWFwLgot ICovCi1zdGF0aWMgdm9pZAotcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MsIGludCB2YWwpCi17Ci0JaW50NjQJCXJlYWxsb2Nfc3o7 Ci0KLQlBc3NlcnQod2luc3RhdGUtPnJlZHVjZWRfZnJhbWVfbWFwICE9IE5VTEwpOworCS8qIEVt cHR5IG1hdGNoOiBjb3ZlcnMgb25seSB0aGUgc3RhcnQgcG9zaXRpb24gKi8KKwlpZiAocG9zID09 IHN0YXJ0ICYmIHdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCAmJiBsZW5ndGggPT0gMCkKKwkJ cmV0dXJuIFJGX0VNUFRZX01BVENIOwogCi0JaWYgKHBvcyA8IDApCi0JCWVsb2coRVJST1IsICJ3 cm9uZyBwb3M6ICIgSU5UNjRfRk9STUFULCBwb3MpOwotCi0Jd2hpbGUgKHBvcyA+IHdpbnN0YXRl LT5hbGxvY19zeiAtIDEpCi0JewotCQlyZWFsbG9jX3N6ID0gd2luc3RhdGUtPmFsbG9jX3N6ICog MjsKLQotCQl3aW5zdGF0ZS0+cmVkdWNlZF9mcmFtZV9tYXAgPQotCQkJcmVwYWxsb2Mod2luc3Rh dGUtPnJlZHVjZWRfZnJhbWVfbWFwLCByZWFsbG9jX3N6KTsKKwkvKiBPdXRzaWRlIHRoZSByZXN1 bHQgcmFuZ2UgKi8KKwlpZiAocG9zIDwgc3RhcnQgfHwgcG9zID49IHN0YXJ0ICsgbGVuZ3RoKQor CQlyZXR1cm4gUkZfTk9UX0RFVEVSTUlORUQ7CiAKLQkJTWVtU2V0KHdpbnN0YXRlLT5yZWR1Y2Vk X2ZyYW1lX21hcCArIHdpbnN0YXRlLT5hbGxvY19zeiwKLQkJCSAgIFJGX05PVF9ERVRFUk1JTkVE LCByZWFsbG9jX3N6IC0gd2luc3RhdGUtPmFsbG9jX3N6KTsKKwlpZiAoIXdpbnN0YXRlLT5ycHJf bWF0Y2hfbWF0Y2hlZCkKKwkJcmV0dXJuIFJGX1VOTUFUQ0hFRDsKIAotCQl3aW5zdGF0ZS0+YWxs b2Nfc3ogPSByZWFsbG9jX3N6OwotCX0KKwlpZiAocG9zID09IHN0YXJ0KQorCQlyZXR1cm4gUkZf RlJBTUVfSEVBRDsKIAotCXdpbnN0YXRlLT5yZWR1Y2VkX2ZyYW1lX21hcFtwb3NdID0gdmFsOwor CXJldHVybiBSRl9TS0lQUEVEOwogfQogCiAvKgpAQCAtNDE1Niw3ICs0MDgxLDExIEBAIHVwZGF0 ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcykKIAlpZiAod2lu c3RhdGUtPm5mYUNvbnRleHQgIT0gTlVMTCAmJgogCQlwb3MgPCB3aW5zdGF0ZS0+bmZhQ29udGV4 dC0+bWF0Y2hTdGFydFJvdykKIAl7Ci0JCXJlZ2lzdGVyX3JlZHVjZWRfZnJhbWVfbWFwKHdpbnN0 YXRlLCBwb3MsIFJGX1VOTUFUQ0hFRCk7CisJCS8qIGFscmVhZHkgcHJvY2Vzc2VkLCB1bm1hdGNo ZWQgKi8KKwkJd2luc3RhdGUtPnJwcl9tYXRjaF92YWxpZCA9IHRydWU7CisJCXdpbnN0YXRlLT5y cHJfbWF0Y2hfbWF0Y2hlZCA9IGZhbHNlOworCQl3aW5zdGF0ZS0+cnByX21hdGNoX3N0YXJ0ID0g cG9zOworCQl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IDE7CiAJCXJldHVybjsKIAl9CiAK QEAgLTQxNzMsNyArNDEwMiwxMSBAQCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qg d2lub2JqLCBpbnQ2NCBwb3MpCiAJCSAqLwogCQlpZiAocG9zIDw9IHdpbnN0YXRlLT5uZmFMYXN0 UHJvY2Vzc2VkUm93KQogCQl7Ci0JCQlyZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0 ZSwgcG9zLCBSRl9VTk1BVENIRUQpOworCQkJLyogYWxyZWFkeSBwcm9jZXNzZWQsIHVubWF0Y2hl ZCAqLworCQkJd2luc3RhdGUtPnJwcl9tYXRjaF92YWxpZCA9IHRydWU7CisJCQl3aW5zdGF0ZS0+ cnByX21hdGNoX21hdGNoZWQgPSBmYWxzZTsKKwkJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfc3RhcnQg PSBwb3M7CisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IDE7CiAJCQlyZXR1cm47CiAJ CX0KIAkJLyogTm90IHlldCBwcm9jZXNzZWQgLSBjcmVhdGUgbmV3IGNvbnRleHQgYW5kIHN0YXJ0 IGZyZXNoICovCkBAIC00MjQ1LDI2ICs0MTc4LDM4IEBAIHJlZ2lzdGVyX3Jlc3VsdDoKIAlBc3Nl cnQocG9zID09IHRhcmdldEN0eC0+bWF0Y2hTdGFydFJvdyk7CiAKIAkvKgotCSAqIFJlZ2lzdGVy IHJlZHVjZWQgZnJhbWUgbWFwIGJhc2VkIG9uIG1hdGNoIHJlc3VsdC4KKwkgKiBSZWNvcmQgbWF0 Y2ggcmVzdWx0LgogCSAqLworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfdmFsaWQgPSB0cnVlOworCXdp bnN0YXRlLT5ycHJfbWF0Y2hfc3RhcnQgPSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRSb3c7CisKIAlp ZiAodGFyZ2V0Q3R4LT5tYXRjaEVuZFJvdyA8IHRhcmdldEN0eC0+bWF0Y2hTdGFydFJvdykKIAl7 CiAJCW1hdGNoTGVuID0gdGFyZ2V0Q3R4LT5sYXN0UHJvY2Vzc2VkUm93IC0gdGFyZ2V0Q3R4LT5t YXRjaFN0YXJ0Um93ICsgMTsKIAotCQlyZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5zdGF0 ZSwgdGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93LCBSRl9VTk1BVENIRUQpOwotCQlFeGVjUlBSUmVj b3JkQ29udGV4dEZhaWx1cmUod2luc3RhdGUsIG1hdGNoTGVuKTsKKwkJaWYgKHRhcmdldEN0eC0+ bWF0Y2hlZFN0YXRlICE9IE5VTEwpCisJCXsKKwkJCS8qIEVtcHR5IG1hdGNoOiBGSU4gcmVhY2hl ZCBidXQgMCByb3dzIGNvbnN1bWVkICovCisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX21hdGNoZWQg PSB0cnVlOworCQkJd2luc3RhdGUtPnJwcl9tYXRjaF9sZW5ndGggPSAwOworCQkJRXhlY1JQUlJl Y29yZENvbnRleHRTdWNjZXNzKHdpbnN0YXRlLCAwKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q IE5vIG1hdGNoICovCisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX21hdGNoZWQgPSBmYWxzZTsKKwkJ CXdpbnN0YXRlLT5ycHJfbWF0Y2hfbGVuZ3RoID0gMTsKKwkJCUV4ZWNSUFJSZWNvcmRDb250ZXh0 RmFpbHVyZSh3aW5zdGF0ZSwgbWF0Y2hMZW4pOworCQl9CiAJCUV4ZWNSUFJGcmVlQ29udGV4dCh3 aW5zdGF0ZSwgdGFyZ2V0Q3R4KTsKIAkJcmV0dXJuOwogCX0KIAotCS8qIE1hdGNoIHN1Y2NlZWRl ZCAtIHJlZ2lzdGVyIGZyYW1lIG1hcCBhbmQgcmVjb3JkIHN0YXRpc3RpY3MgKi8KKwkvKiBNYXRj aCBzdWNjZWVkZWQgKi8KIAltYXRjaExlbiA9IHRhcmdldEN0eC0+bWF0Y2hFbmRSb3cgLSB0YXJn ZXRDdHgtPm1hdGNoU3RhcnRSb3cgKyAxOwogCi0JcmVnaXN0ZXJfcmVkdWNlZF9mcmFtZV9tYXAo d2luc3RhdGUsIHRhcmdldEN0eC0+bWF0Y2hTdGFydFJvdywgUkZfRlJBTUVfSEVBRCk7Ci0JZm9y IChpbnQ2NCBpID0gdGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93ICsgMTsgaSA8PSB0YXJnZXRDdHgt Pm1hdGNoRW5kUm93OyBpKyspCi0JewotCQlyZWdpc3Rlcl9yZWR1Y2VkX2ZyYW1lX21hcCh3aW5z dGF0ZSwgaSwgUkZfU0tJUFBFRCk7Ci0JfQorCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCA9 IHRydWU7CisJd2luc3RhdGUtPnJwcl9tYXRjaF9sZW5ndGggPSBtYXRjaExlbjsKIAlFeGVjUlBS UmVjb3JkQ29udGV4dFN1Y2Nlc3Mod2luc3RhdGUsIG1hdGNoTGVuKTsKIAogCS8qIFJlbW92ZSB0 aGUgbWF0Y2hlZCBjb250ZXh0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDMzMDI4YzNmMTBi Li5jNjcyZDI5ZjM1YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI0OTksMTAgKzI0OTksMTIg QEAgdHlwZWRlZiBlbnVtIFdpbmRvd0FnZ1N0YXR1cwogCQkJCQkJCQkJICogdHVwbGVzIGR1cmlu ZyBzcG9vbCAqLwogfSBXaW5kb3dBZ2dTdGF0dXM7CiAKLSNkZWZpbmUJUkZfTk9UX0RFVEVSTUlO RUQJMAotI2RlZmluZQlSRl9GUkFNRV9IRUFECQkxCi0jZGVmaW5lCVJGX1NLSVBQRUQJCQkyCi0j ZGVmaW5lCVJGX1VOTUFUQ0hFRAkJMworLyogUlBSIHJlZHVjZWQgZnJhbWUgc3RhdGVzIHJldHVy bmVkIGJ5IGdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cygpICovCisjZGVmaW5lCVJGX05PVF9ERVRF Uk1JTkVECTAJLyogbm90IHlldCBwcm9jZXNzZWQgKi8KKyNkZWZpbmUJUkZfRlJBTUVfSEVBRAkJ MQkvKiBzdGFydCByb3cgb2YgYSBtYXRjaCAqLworI2RlZmluZQlSRl9TS0lQUEVECQkJMgkvKiBp bnRlcmlvciByb3cgb2YgYSBtYXRjaCAqLworI2RlZmluZQlSRl9VTk1BVENIRUQJCTMJLyogbm8g bWF0Y2ggYXQgdGhpcyByb3cgKi8KKyNkZWZpbmUJUkZfRU1QVFlfTUFUQ0gJCTQJLyogZW1wdHkg bWF0Y2ggKDAgcm93cyk7IHRyZWF0ZWQgYXMgdW5tYXRjaGVkICovCiAKIC8qCiAgKiBSUFJORkFT dGF0ZSAtIHNpbmdsZSBORkEgc3RhdGUgZm9yIHBhdHRlcm4gbWF0Y2hpbmcKQEAgLTI2OTQsMTIg KzI2OTYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdnU3RhdGUKIAlUdXBsZVRhYmxlU2xv dCAqbmV4dF9zbG90OwkvKiBORVhUIHJvdyBuYXZpZ2F0aW9uIG9wZXJhdG9yICovCiAJVHVwbGVU YWJsZVNsb3QgKm51bGxfc2xvdDsJLyogYWxsIE5VTEwgc2xvdCAqLwogCi0JLyoKLQkgKiBFYWNo IGJ5dGUgY29ycmVzcG9uZHMgdG8gYSByb3cgcG9zaXRpb25lZCBhdCBhYnNvbHV0ZSBpdHMgcG9z IGluCi0JICogcGFydGl0aW9uLiAgU2VlIGFib3ZlIGRlZmluaXRpb24gZm9yIFJGXyouIFVzZWQg Zm9yIFJQUi4KLQkgKi8KLQljaGFyCSAgICpyZWR1Y2VkX2ZyYW1lX21hcDsKLQlpbnQ2NAkJYWxs b2Nfc3o7CQkvKiBzaXplIG9mIHRoZSBtYXAgKi8KKwkvKiBSUFIgY3VycmVudCBtYXRjaCByZXN1 bHQgKi8KKwlib29sCQlycHJfbWF0Y2hfdmFsaWQ7CS8qIHRydWUgaWYgYSBtYXRjaCByZXN1bHQg aXMgc2V0ICovCisJYm9vbAkJcnByX21hdGNoX21hdGNoZWQ7CS8qIHRydWUgaWYgdGhlIHJlc3Vs dCB3YXMgYSBtYXRjaCAqLworCWludDY0CQlycHJfbWF0Y2hfc3RhcnQ7CS8qIHN0YXJ0IHBvc2l0 aW9uIG9mIHRoZSBtYXRjaCByZXN1bHQgKi8KKwlpbnQ2NAkJcnByX21hdGNoX2xlbmd0aDsJLyog bnVtYmVyIG9mIHJvd3MgbWF0Y2hlZCAoMCA9IGVtcHR5KSAqLwogfSBXaW5kb3dBZ2dTdGF0ZTsK IAogLyogLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBs YWluLm91dAppbmRleCBiZDM0NTkwNjEzMy4uNzljYmMyNDYwMzkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CkBAIC0zMzQ4LDggKzMzNDgsOCBAQCBXSU5ET1cg dyBBUyAoCiAgICBQYXR0ZXJuOiAoKGEnIGInKSsiIGMpKgogICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgogICAgTkZBIFN0YXRlczogOSBwZWFrLCAxNzggdG90YWwsIDAg bWVyZ2VkCi0gICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIyIHBydW5lZAotICAg TkZBOiAxIG1hdGNoZWQgKGxlbiA1Ny81Ny81Ny4wKSwgMCBtaXNtYXRjaGVkCisgICBORkEgQ29u dGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIwIHBydW5lZAorICAgTkZBOiAzIG1hdGNoZWQgKGxl biAwLzU3LzE5LjApLCAwIG1pc21hdGNoZWQKICAgIE5GQTogMCBhYnNvcmJlZCwgMzcgc2tpcHBl ZCAobGVuIDEvMy8yLjApCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKICg5IHJvd3MpCkBAIC0zMzg1LDggKzMzODUs OCBAQCBXSU5ET1cgdyBBUyAoCiAgICBQYXR0ZXJuOiAoYSAoYiBjKSspKgogICAgU3RvcmFnZTog TWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgogICAgTkZBIFN0YXRlczogNyBwZWFrLCAxNjAg dG90YWwsIDAgbWVyZ2VkCi0gICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIyIHBy dW5lZAotICAgTkZBOiAxIG1hdGNoZWQgKGxlbiA1Ny81Ny81Ny4wKSwgMCBtaXNtYXRjaGVkCisg ICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIwIHBydW5lZAorICAgTkZBOiAzIG1h dGNoZWQgKGxlbiAwLzU3LzE5LjApLCAwIG1pc21hdGNoZWQKICAgIE5GQTogMCBhYnNvcmJlZCwg Mzcgc2tpcHBlZCAobGVuIDEvMy8yLjApCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKICg5IHJvd3MpCi0tIAoyLjUw LjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0009-Add-fixed-length-group-absorption-for-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0009-Add-fixed-length-group-absorption-for-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr86te8 RnJvbSA4Nzk4NmY5ODQxNmFjMGQxNDVkNjU0YzY1YzVjODUzMGFkYTc4ZjNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTYXQsIDQgQXByIDIwMjYgMjE6NDc6MDEgKzA5MDAKU3ViamVjdDogW1BBVENIXSBBZGQgZml4 ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb24gZm9yIFJQUgoKRXh0ZW5kIGNvbnRleHQgYWJzb3Jw dGlvbiB0byB1bmJvdW5kZWQgZ3JvdXBzIHdpdGggZml4ZWQtbGVuZ3RoCmNoaWxkcmVuIChtaW4g PT0gbWF4LCByZWN1cnNpdmVseSkuICBQYXR0ZXJucyBsaWtlIChBIEJ7Mn0pKyBvcgooKEEgKEIg Qyl7Mn0pezJ9KSsgYXJlIG5vdyBhYnNvcmJhYmxlLCBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0 bwp7MSwxfSBWQVJzIGF0IGNvbXBpbGUgdGltZSB3aXRob3V0IGFjdHVhbGx5IHVucm9sbGluZy4K CmlzRml4ZWRMZW5ndGhDaGlsZHJlbigpIHJlY3Vyc2l2ZWx5IHZlcmlmaWVzIG1pbiA9PSBtYXgg Zm9yIGFsbApjaGlsZHJlbiBpbmNsdWRpbmcgbmVzdGVkIHN1Ymdyb3VwcywgZXh0ZW5kaW5nIHRo ZSBleGlzdGluZyBDYXNlIDIKaW4gaXNVbmJvdW5kZWRTdGFydCgpLgoKQWJzb3JwdGlvbiBjb21w YXJpc29uIGluIG5mYV9zdGF0ZXNfY292ZXJlZCByZXF1aXJlcyBzdGF0ZXMgdG8gYmUgYXQKYW4g QUJTT1JCQUJMRSBqdWRnbWVudCBwb2ludCwgd2hlcmUgY291bnQtZG9taW5hbmNlIGlzIGd1YXJh bnRlZWQuClRoZSBpbmxpbmUgYWR2YW5jZSBpbiBuZmFfbWF0Y2ggaXMgZ2VuZXJhbGl6ZWQgdG8g YWR2YW5jZSBib3VuZGVkClZBUnMgd2l0aGluIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbiB0aHJvdWdo IEVORCBjaGFpbnMgdG8gcmVhY2ggdGhlCmp1ZGdtZW50IHBvaW50LgoKRml4IGlzQWJzb3JiYWJs ZSBwcm9wYWdhdGlvbiBpbiBuZmFfYWR2YW5jZV92YXIgYW5kIG5mYV9hZHZhbmNlX2VuZApleGl0 IHBhdGhzLCB3aGVyZSByZXVzaW5nIGEgc3RhdGUgb2JqZWN0IHNraXBwZWQgcmVjb21wdXRhdGlv bi4KCk1hcmsgVkFSIGVsZW1lbnRzIGluIHRoZSBERlMgdmlzaXRlZCBiaXRtYXAgYXQgbmZhX2Fk ZF9zdGF0ZV91bmlxdWUKaW5zdGVhZCBvZiBhdCBuZmFfYWR2YW5jZV9zdGF0ZSBlbnRyeSwgc28g dGhhdCBsb29wLWJhY2sgdGhyb3VnaCBBTFQKdG8gdGhlIHNhbWUgVkFSIGlzIG5vdCBpbmNvcnJl Y3RseSBibG9ja2VkIGJ5IGN5Y2xlIGRldGVjdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUlBSLmMgICAgICAgICAgICB8IDExMCArKysrKystLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcnByLmMgICAgICAgICAgfCAxMzYgKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwcl9iYXNlLm91dCAgICB8ICA4MyArKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0IHwgMjA2ICsrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0ICAgICB8IDMyMSArKysrKysrKysrKysrKysrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICAgICB8ICAzNiArKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCAgICAgIHwgMTE0ICsrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbCAgICAgICAgICB8IDE2OCArKysrKysr KysrKwogOCBmaWxlcyBjaGFuZ2VkLCAxMTExIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwppbmRleCAxY2JlOGUxNDc4MC4uOGYwNDU3ZTJiM2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUlBSLmMKQEAgLTE3NjAsNiArMTc2MCwxMCBAQCBuZmFfYWRkX3N0YXRl X3VuaXF1ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgUlBS TkZBU3RhdGUgKgogCVJQUk5GQVN0YXRlICpzOwogCVJQUk5GQVN0YXRlICp0YWlsID0gTlVMTDsK IAorCS8qIE1hcmsgVkFSIGluIHZpc2l0ZWQgYmVmb3JlIGR1cGxpY2F0ZSBjaGVjayB0byBwcmV2 ZW50IERGUyBsb29wcyAqLworCXdpbnN0YXRlLT5uZmFWaXNpdGVkRWxlbXNbV09SRE5VTShzdGF0 ZS0+ZWxlbUlkeCldIHw9CisJCSgoYml0bWFwd29yZCkgMSA8PCBCSVROVU0oc3RhdGUtPmVsZW1J ZHgpKTsKKwogCS8qIENoZWNrIGZvciBkdXBsaWNhdGUgYW5kIGZpbmQgdGFpbCAqLwogCWZvciAo cyA9IGN0eC0+c3RhdGVzOyBzICE9IE5VTEw7IHMgPSBzLT5uZXh0KQogCXsKQEAgLTIwMzMsNiAr MjAzNywxNCBAQCBuZmFfc3RhdGVzX2NvdmVyZWQoUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSTkZB Q29udGV4dCAqb2xkZXIsIFJQUk5GQUNvbnRleHQgKm5ldwogCQllbGVtID0gJnBhdHRlcm4tPmVs ZW1lbnRzW25ld2VyU3RhdGUtPmVsZW1JZHhdOwogCQlkZXB0aCA9IGVsZW0tPmRlcHRoOwogCisJ CS8qCisJCSAqIE9ubHkgY29tcGFyZSBhdCBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50cyAoUlBS X0VMRU1fQUJTT1JCQUJMRSkuCisJCSAqIEp1ZGdtZW50IHBvaW50cyBhcmUgd2hlcmUgY291bnQt ZG9taW5hbmNlIGd1YXJhbnRlZXMgdGhlIG5ld2VyCisJCSAqIGNvbnRleHQncyBmdXR1cmUgbWF0 Y2hlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIG9sZGVyJ3MuCisJCSAqLworCQlpZiAoIVJQUkVsZW1J c0Fic29yYmFibGUoZWxlbSkpCisJCQlyZXR1cm4gZmFsc2U7CisKIAkJZm9yIChvbGRlclN0YXRl ID0gb2xkZXItPnN0YXRlczsgb2xkZXJTdGF0ZSAhPSBOVUxMOyBvbGRlclN0YXRlID0gb2xkZXJT dGF0ZS0+bmV4dCkKIAkJewogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKQEAgLTIxNzUsOSAr MjE4NywxMCBAQCBuZmFfZXZhbF92YXJfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBS UFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKICAqICAgLSBub3QgbWF0Y2hlZDogcmVtb3ZlIHN0YXRl IChleGl0IGFsdGVybmF0aXZlcyBhbHJlYWR5IGV4aXN0IGZyb20KICAqICAgICBwcmV2aW91cyBh ZHZhbmNlIHdoZW4gY291bnQgPj0gbWluIHdhcyBzYXRpc2ZpZWQpCiAgKgotICogRm9yIHNpbXBs ZSBWQVJzIChtaW49bWF4PTEpIGZvbGxvd2VkIGJ5IEVORDoKLSAqICAgLSBBZHZhbmNlIHRvIEVO RCBhbmQgdXBkYXRlIGdyb3VwIGNvdW50IGJlZm9yZSBhYnNvcmIgcGhhc2UKLSAqICAgLSBUaGlz IGVuc3VyZXMgYWJzb3JwdGlvbiBjYW4gY29tcGFyZSBzdGF0ZXMgYnkgZ3JvdXAgY29tcGxldGlv bgorICogRm9yIFZBUnMgdGhhdCByZWFjaGVkIG1heCBjb3VudCBmb2xsb3dlZCBieSBFTkQ6Cisg KiAgIC0gQWR2YW5jZSB0aHJvdWdoIEVORCBjaGFpbiB0byByZWFjaCBhYnNvcnB0aW9uIGp1ZGdt ZW50IHBvaW50CisgKiAgIC0gT25seSBkZXRlcm1pbmlzdGljIGV4aXRzIChjb3VudCA+PSBtYXgs IG1heCAhPSBJTkYpIGFyZSBoYW5kbGVkCisgKiAgIC0gQ2hhaW5zIHRocm91Z2ggRU5EIGVsZW1l bnRzIHdoaWxlIGNvdW50ID49IG1heCAobXVzdC1leGl0IHBhdGgpCiAgKgogICogTm9uLVZBUiBl bGVtZW50cyAoQUxULCBFTkQsIEZJTikgYXJlIGtlcHQgYXMtaXMgZm9yIGFkdmFuY2UgcGhhc2Uu CiAgKi8KQEAgLTIxOTEsOSArMjIwNCw5IEBAIG5mYV9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2lu c3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgYm9vbCAqdmFyTWF0Y2hlZCkKIAlSUFJORkFTdGF0 ZSAqbmV4dFN0YXRlOwogCiAJLyoKLQkgKiBFdmFsdWF0ZSBWQVIgZWxlbWVudHMgYWdhaW5zdCBj dXJyZW50IHJvdy4gRm9yIHNpbXBsZSBWQVJzIHdpdGggRU5ECi0JICogbmV4dCwgYWR2YW5jZSB0 byBFTkQgYW5kIHVwZGF0ZSBncm91cCBjb3VudCBpbmxpbmUgc28gYWJzb3JiIHBoYXNlIGNhbgot CSAqIGNvbXBhcmUgc3RhdGVzIHByb3Blcmx5LgorCSAqIEV2YWx1YXRlIFZBUiBlbGVtZW50cyBh Z2FpbnN0IGN1cnJlbnQgcm93LiBGb3IgVkFScyB0aGF0IHJlYWNoIG1heAorCSAqIGNvdW50IHdp dGggRU5EIG5leHQsIGFkdmFuY2UgdGhyb3VnaCBFTkQgY2hhaW4gaW5saW5lIHNvIGFic29yYiBw aGFzZQorCSAqIGNhbiBjb21wYXJlIHN0YXRlcyBhdCBqdWRnbWVudCBwb2ludHMuCiAJICovCiAJ Zm9yIChzdGF0ZSA9IGN0eC0+c3RhdGVzOyBzdGF0ZSAhPSBOVUxMOyBzdGF0ZSA9IG5leHRTdGF0 ZSkKIAl7CkBAIC0yMjIzLDM0ICsyMjM2LDYxIEBAIG5mYV9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgYm9vbCAqdmFyTWF0Y2hlZCkKIAkJCQlzdGF0 ZS0+Y291bnRzW2RlcHRoXSA9IGNvdW50OwogCiAJCQkJLyoKLQkJCQkgKiBGb3Igc2ltcGxlIFZB UiAobWluPW1heD0xKSB3aXRoIEVORCBuZXh0LCBhZHZhbmNlIHRvIEVORAotCQkJCSAqIGFuZCB1 cGRhdGUgZ3JvdXAgY291bnQgaW5saW5lLiBUaGlzIGtlZXBzIHN0YXRlIGluIHBsYWNlLAotCQkJ CSAqIHByZXNlcnZpbmcgbGV4aWNhbCBvcmRlci4KKwkJCQkgKiBGb3IgVkFSIGF0IG1heCBjb3Vu dCB3aXRoIEVORCBuZXh0LCBhZHZhbmNlIHRocm91Z2ggRU5ECisJCQkJICogY2hhaW4gdG8gcmVh Y2ggdGhlIGFic29ycHRpb24ganVkZ21lbnQgcG9pbnQuIE9ubHkKKwkJCQkgKiBkZXRlcm1pbmlz dGljIGV4aXRzIChjb3VudCA+PSBtYXgsIG1heCBmaW5pdGUpIGFyZSBoYW5kbGVkOworCQkJCSAq IHVuYm91bmRlZCBWQVJzIHN0YXkgZm9yIGFkdmFuY2UgcGhhc2UuCiAJCQkJICovCi0JCQkJaWYg KGVsZW0tPm1pbiA9PSAxICYmIGVsZW0tPm1heCA9PSAxICYmCisJCQkJaWYgKFJQUkVsZW1Jc0Fi c29yYmFibGVCcmFuY2goZWxlbSkgJiYKKwkJCQkJIVJQUkVsZW1Jc0Fic29yYmFibGUoZWxlbSkg JiYKKwkJCQkJY291bnQgPj0gZWxlbS0+bWF4ICYmCiAJCQkJCVJQUkVsZW1Jc0VuZCgmZWxlbWVu dHNbZWxlbS0+bmV4dF0pKQogCQkJCXsKIAkJCQkJUlBSUGF0dGVybkVsZW1lbnQgKmVuZEVsZW0g PSAmZWxlbWVudHNbZWxlbS0+bmV4dF07CiAJCQkJCWludAkJCWVuZERlcHRoID0gZW5kRWxlbS0+ ZGVwdGg7CiAJCQkJCWludDMyCQllbmRDb3VudCA9IHN0YXRlLT5jb3VudHNbZW5kRGVwdGhdOwog Ci0JCQkJCUFzc2VydChjb3VudCA9PSAxKTsKLQotCQkJCQkvKiBJbmNyZW1lbnQgZ3JvdXAgY291 bnQgd2l0aCBvdmVyZmxvdyBwcm90ZWN0aW9uICovCisJCQkJCS8qIEluY3JlbWVudCBncm91cCBj b3VudCAqLwogCQkJCQlpZiAoZW5kQ291bnQgPCBSUFJfQ09VTlRfTUFYKQogCQkJCQkJZW5kQ291 bnQrKzsKLQotCQkJCQkvKgotCQkJCQkgKiBFTkQncyBtYXggY2FuIG5ldmVyIGJlIGV4Y2VlZGVk IGhlcmUgYmVjYXVzZQotCQkJCQkgKiBuZmFfYWR2YW5jZV9lbmQgb25seSBsb29wcyB3aGVuIGNv dW50IDwgbWF4LCBzbwotCQkJCQkgKiBlbmRDb3VudCBlbnRlcmluZyBpbmxpbmUgYWR2YW5jZSBp cyBhdCBtb3N0IG1heC0xLCBhbmQKLQkJCQkJICogaW5jcmVtZW50aW5nIHlpZWxkcyBhdCBtb3N0 IG1heC4KLQkJCQkJICovCiAJCQkJCUFzc2VydChlbmRFbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZ X0lORiB8fAogCQkJCQkJICAgZW5kQ291bnQgPD0gZW5kRWxlbS0+bWF4KTsKIAogCQkJCQlzdGF0 ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CiAJCQkJCXN0YXRlLT5jb3VudHNbZW5kRGVwdGhdID0g ZW5kQ291bnQ7CisKKwkJCQkJLyoKKwkJCQkJICogQ2hhaW4gdGhyb3VnaCBFTkQgZWxlbWVudHMg d2l0aGluIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbgorCQkJCQkgKiAoQUJTT1JCQUJMRV9CUkFOQ0gp IHVudGlsIHJlYWNoaW5nIHRoZSBqdWRnbWVudCBwb2ludAorCQkJCQkgKiAoQUJTT1JCQUJMRSku ICBDb250aW51ZSBvbmx5IG9uIG11c3QtZXhpdCBwYXRoIChjb3VudAorCQkJCQkgKiA+PSBtYXgp IHdpdGggRU5EIG5leHQuCisJCQkJCSAqLworCQkJCQl3aGlsZSAoUlBSRWxlbUlzQWJzb3JiYWJs ZUJyYW5jaChlbmRFbGVtKSAmJgorCQkJCQkJICAgIVJQUkVsZW1Jc0Fic29yYmFibGUoZW5kRWxl bSkgJiYKKwkJCQkJCSAgIGVuZENvdW50ID49IGVuZEVsZW0tPm1heCAmJgorCQkJCQkJICAgUlBS RWxlbUlzRW5kKCZlbGVtZW50c1tlbmRFbGVtLT5uZXh0XSkpCisJCQkJCXsKKwkJCQkJCVJQUlBh dHRlcm5FbGVtZW50ICpvdXRlckVuZCA9ICZlbGVtZW50c1tlbmRFbGVtLT5uZXh0XTsKKwkJCQkJ CWludAkJCW91dGVyRGVwdGggPSBvdXRlckVuZC0+ZGVwdGg7CisJCQkJCQlpbnQzMgkJb3V0ZXJD b3VudCA9IHN0YXRlLT5jb3VudHNbb3V0ZXJEZXB0aF07CisKKwkJCQkJCS8qIFJlc2V0IGV4aXRl ZCBncm91cCdzIGNvdW50ICovCisJCQkJCQlzdGF0ZS0+Y291bnRzW2VuZERlcHRoXSA9IDA7CisK KwkJCQkJCS8qIEluY3JlbWVudCBvdXRlciBncm91cCBjb3VudCAqLworCQkJCQkJaWYgKG91dGVy Q291bnQgPCBSUFJfQ09VTlRfTUFYKQorCQkJCQkJCW91dGVyQ291bnQrKzsKKwkJCQkJCUFzc2Vy dChvdXRlckVuZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJCQkJCQkgICBvdXRlckNv dW50IDw9IG91dGVyRW5kLT5tYXgpOworCisJCQkJCQlzdGF0ZS0+ZWxlbUlkeCA9IGVuZEVsZW0t Pm5leHQ7CisJCQkJCQlzdGF0ZS0+Y291bnRzW291dGVyRGVwdGhdID0gb3V0ZXJDb3VudDsKKwor CQkJCQkJLyogQWR2YW5jZSB0byBuZXh0IEVORCBpbiBjaGFpbiAqLworCQkJCQkJZW5kRWxlbSA9 IG91dGVyRW5kOworCQkJCQkJZW5kRGVwdGggPSBvdXRlckRlcHRoOworCQkJCQkJZW5kQ291bnQg PSBvdXRlckNvdW50OworCQkJCQl9CiAJCQkJfQogCQkJCS8qIGVsc2U6IHN0YXkgYXQgVkFSIGZv ciBhZHZhbmNlIHBoYXNlICovCiAJCQl9CkBAIC0yNDY4LDYgKzI1MDgsMTAgQEAgbmZhX2FkdmFu Y2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQlz dGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CiAJCW5leHRFbGVtID0gJmVsZW1lbnRzW3N0YXRl LT5lbGVtSWR4XTsKIAorCQkvKiBVcGRhdGUgaXNBYnNvcmJhYmxlIGZvciB0YXJnZXQgZWxlbWVu dCAobW9ub3RvbmljKSAqLworCQlzdGF0ZS0+aXNBYnNvcmJhYmxlID0gc3RhdGUtPmlzQWJzb3Ji YWJsZSAmJgorCQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0RWxlbSk7CisKIAkJLyog RU5ELT5FTkQ6IGluY3JlbWVudCBvdXRlciBFTkQncyBjb3VudCAqLwogCQlpZiAoUlBSRWxlbUlz RW5kKG5leHRFbGVtKSAmJiBzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09V TlRfTUFYKQogCQkJc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdKys7CkBAIC0yNjIxLDYg KzI2NjUsMTMgQEAgbmZhX2FkdmFuY2VfdmFyKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBS TkZBQ29udGV4dCAqY3R4LAogCQkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5uZXh0OwogCQkJbmV4 dEVsZW0gPSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOwogCisJCQkvKgorCQkJICogVXBkYXRl IGlzQWJzb3JiYWJsZSBmb3IgdGFyZ2V0IGVsZW1lbnQgKG1vbm90b25pYzogQU5ECisJCQkgKiBw cmVzZXJ2ZXMgZmFsc2UpCisJCQkgKi8KKwkJCXN0YXRlLT5pc0Fic29yYmFibGUgPSBzdGF0ZS0+ aXNBYnNvcmJhYmxlICYmCisJCQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0RWxlbSk7 CisKIAkJCS8qCiAJCQkgKiBXaGVuIGV4aXRpbmcgZGlyZWN0bHkgdG8gYW4gb3V0ZXIgRU5ELCBp bmNyZW1lbnQgaXRzIGl0ZXJhdGlvbgogCQkJICogY291bnQuICBTaW1wbGUgVkFScyAobWluPW1h eD0xKSBoYW5kbGUgdGhpcyB2aWEgaW5saW5lIGFkdmFuY2UKQEAgLTI2NTAsNiArMjcwMSwxMyBA QCBuZmFfYWR2YW5jZV92YXIoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0 ICpjdHgsCiAJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKIAkJbmV4dEVsZW0gPSAmZWxl bWVudHNbc3RhdGUtPmVsZW1JZHhdOwogCisJCS8qCisJCSAqIFVwZGF0ZSBpc0Fic29yYmFibGUg Zm9yIHRhcmdldCBlbGVtZW50IChtb25vdG9uaWM6IEFORCBwcmVzZXJ2ZXMKKwkJICogZmFsc2Up CisJCSAqLworCQlzdGF0ZS0+aXNBYnNvcmJhYmxlID0gc3RhdGUtPmlzQWJzb3JiYWJsZSAmJgor CQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0RWxlbSk7CisKIAkJLyogU2VlIGNvbW1l bnQgYWJvdmU6IGluY3JlbWVudCBvdXRlciBFTkQgY291bnQgZm9yIHF1YW50aWZpZWQgVkFScyAq LwogCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSkKIAkJewpAQCAtMjY4NiwxMSArMjc0NCwx OSBAQCBuZmFfYWR2YW5jZV9zdGF0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNv bnRleHQgKmN0eCwKIAkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKIAkJcmV0dXJu OwogCX0KLQl3aW5zdGF0ZS0+bmZhVmlzaXRlZEVsZW1zW1dPUkROVU0oc3RhdGUtPmVsZW1JZHgp XSB8PQotCQkoKGJpdG1hcHdvcmQpIDEgPDwgQklUTlVNKHN0YXRlLT5lbGVtSWR4KSk7CiAKIAll bGVtID0gJnBhdHRlcm4tPmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKIAorCS8qCisJICogTWFy ayBlcHNpbG9uIGVsZW1lbnRzIChFTkQsIEFMVCwgQkVHSU4sIEZJTikgaW4gdmlzaXRlZCB0byBw cmV2ZW50CisJICogaW5maW5pdGUgZXBzaWxvbiBjeWNsZXMuICBWQVIgZWxlbWVudHMgYXJlIG1h cmtlZCBsYXRlciB3aGVuIGFkZGVkIHRvCisJICogdGhlIHN0YXRlIGxpc3QgKG5mYV9hZGRfc3Rh dGVfdW5pcXVlKSwgYWxsb3dpbmcgbGVnaXRpbWF0ZSBsb29wLWJhY2sgdG8KKwkgKiB0aGUgc2Ft ZSBWQVIgaW4gYSBuZXcgaXRlcmF0aW9uLgorCSAqLworCWlmICghUlBSRWxlbUlzVmFyKGVsZW0p KQorCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZEVsZW1zW1dPUkROVU0oc3RhdGUtPmVsZW1JZHgpXSB8 PQorCQkJKChiaXRtYXB3b3JkKSAxIDw8IEJJVE5VTShzdGF0ZS0+ZWxlbUlkeCkpOworCiAJc3dp dGNoIChlbGVtLT52YXJJZCkKIAl7CiAJCWNhc2UgUlBSX1ZBUklEX0ZJTjoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMKaW5kZXggMjcyOGEwYjlmY2EuLmMwZTlkMTM0YWE5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9ycHIuYwpAQCAtOTIsNiArOTIsOCBAQCBzdGF0aWMgYm9vbCBmaWxsUlBSUGF0dGVy bihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LAogc3RhdGljIHZvaWQgZmlu YWxpemVSUFJQYXR0ZXJuKFJQUlBhdHRlcm4gKnJlc3VsdCk7CiAKIC8qIEZvcndhcmQgZGVjbGFy YXRpb25zIC0gY29udGV4dCBhYnNvcnB0aW9uICovCitzdGF0aWMgYm9vbCBpc0ZpeGVkTGVuZ3Ro Q2hpbGRyZW4oUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgsCisJCQkJCQkJCSAg UlBSRGVwdGggc2NvcGVEZXB0aCk7CiBzdGF0aWMgYm9vbCBpc1VuYm91bmRlZFN0YXJ0KFJQUlBh dHRlcm4gKnBhdHRlcm4sIFJQUkVsZW1JZHggaWR4KTsKIHN0YXRpYyB2b2lkIGNvbXB1dGVBYnNv cmJhYmlsaXR5UmVjdXJzaXZlKFJQUlBhdHRlcm4gKnBhdHRlcm4sCiAJCQkJCQkJCQkJICBSUFJF bGVtSWR4IHN0YXJ0SWR4LApAQCAtMTUyNCw2ICsxNTI2LDcwIEBAIGZpbmFsaXplUlBSUGF0dGVy bihSUFJQYXR0ZXJuICpyZXN1bHQpCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCisvKgorICog aXNGaXhlZExlbmd0aENoaWxkcmVuCisgKgkJQ2hlY2sgaWYgYWxsIGNoaWxkcmVuIGF0IHNjb3Bl RGVwdGggaGF2ZSBmaXhlZC1sZW5ndGggcXVhbnRpZmllcnMKKyAqCQkobWluID09IG1heCksIHJl Y3Vyc2l2ZWx5IGZvciBuZXN0ZWQgc3ViZ3JvdXBzLgorICoKKyAqIEEgZml4ZWQtbGVuZ3RoIGdy b3VwIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIHVucm9sbGluZyBlYWNoIGNoaWxkCisg KiB0byB7MSwxfSBjb3BpZXMsIHdoaWNoIGlzIHRoZSBleGlzdGluZyBDYXNlIDIgYWxyZWFkeSBw cm92ZW4gY29ycmVjdAorICogZm9yIGFic29ycHRpb24uICBUaGlzIGNoZWNrIHJlY29nbml6ZXMg Zml4ZWQtbGVuZ3RoIGdyb3VwcyBhdCBjb21waWxlCisgKiB0aW1lIHdpdGhvdXQgYWN0dWFsbHkg dW5yb2xsaW5nIHRoZW0uCisgKgorICogVHJhdmVyc2VzIHRoZSBmbGF0IGVsZW1lbnQgYXJyYXkg c3RhcnRpbmcgYXQgaWR4LiAgRm9yIFZBUiBlbGVtZW50cywKKyAqIGNoZWNrcyBtaW4gPT0gbWF4 LiAgRm9yIEJFR0lOIGVsZW1lbnRzIChuZXN0ZWQgc3ViZ3JvdXBzKSwgcmVjdXJzZXMKKyAqIGlu dG8gdGhlIHN1Ymdyb3VwIGFuZCBhbHNvIGNoZWNrcyB0aGUgc3ViZ3JvdXAncyBFTkQgcXVhbnRp Zmllci4KKyAqIEFMVCBlbGVtZW50cyBhcmUgcmVqZWN0ZWQgKGFsdGVybmF0aW9uIGluc2lkZSBh YnNvcmJhYmxlIGdyb3VwIGlzCisgKiBub3Qgc3VwcG9ydGVkKS4KKyAqCisgKiBSZXR1cm5zIHRy dWUgaWYgYWxsIGNoaWxkcmVuIGFyZSBmaXhlZC1sZW5ndGgsIHN0b3BwaW5nIGF0IHRoZSBFTkQK KyAqIGVsZW1lbnQgYXQgc2NvcGVEZXB0aCAtIDEuCisgKi8KK3N0YXRpYyBib29sCitpc0ZpeGVk TGVuZ3RoQ2hpbGRyZW4oUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgsIFJQUkRl cHRoIHNjb3BlRGVwdGgpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmUgPSAmcGF0dGVybi0+ZWxl bWVudHNbaWR4XTsKKworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwl3aGlsZSAoZS0+ZGVwdGgg PT0gc2NvcGVEZXB0aCkKKwl7CisJCWlmIChSUFJFbGVtSXNWYXIoZSkpCisJCXsKKwkJCWlmIChl LT5taW4gIT0gZS0+bWF4KQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCQllbHNlIGlmIChSUFJF bGVtSXNCZWdpbihlKSkKKwkJeworCQkJUlBSRWxlbUlkeAljaGlsZElkeCA9IGUtPm5leHQ7CisK KwkJCS8qIFJlY3Vyc2UgaW50byBzdWJncm91cCBjaGlsZHJlbiBhdCBzY29wZURlcHRoICsgMSAq LworCQkJaWYgKCFpc0ZpeGVkTGVuZ3RoQ2hpbGRyZW4ocGF0dGVybiwgY2hpbGRJZHgsIHNjb3Bl RGVwdGggKyAxKSkKKwkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCS8qIEFkdmFuY2UgcGFzdCB0aGUg c3ViZ3JvdXAgdG8gaXRzIEVORCBlbGVtZW50ICovCisJCQllID0gJnBhdHRlcm4tPmVsZW1lbnRz W2UtPm5leHRdOworCQkJd2hpbGUgKGUtPmRlcHRoID4gc2NvcGVEZXB0aCkKKwkJCQllID0gJnBh dHRlcm4tPmVsZW1lbnRzW2UtPm5leHRdOworCisJCQkvKiBlIGlzIG5vdyB0aGUgRU5EIGF0IHNj b3BlRGVwdGg7IGNoZWNrIGl0cyBxdWFudGlmaWVyICovCisJCQlBc3NlcnQoUlBSRWxlbUlzRW5k KGUpICYmIGUtPmRlcHRoID09IHNjb3BlRGVwdGgpOworCQkJaWYgKGUtPm1pbiAhPSBlLT5tYXgp CisJCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogQUxUIGluc2lkZSBn cm91cDogbm90IHN1cHBvcnRlZCBmb3IgYWJzb3JwdGlvbiAqLworCQkJcmV0dXJuIGZhbHNlOwor CQl9CisKKwkJQXNzZXJ0KGUtPm5leHQgIT0gUlBSX0VMRU1JRFhfSU5WQUxJRCk7CisJCWUgPSAm cGF0dGVybi0+ZWxlbWVudHNbZS0+bmV4dF07CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIC8q CiAgKiBpc1VuYm91bmRlZFN0YXJ0CiAgKgkJQ2hlY2sgaWYgdGhlIGVsZW1lbnQgYXQgaWR4IHN0 YXJ0cyBhbiB1bmJvdW5kZWQgZ3JlZWR5IHNlcXVlbmNlLgpAQCAtMTUzMywyOSArMTU5OSwzMSBA QCBmaW5hbGl6ZVJQUlBhdHRlcm4oUlBSUGF0dGVybiAqcmVzdWx0KQogICogICAtIEdyZWVkeSAo bm90IHJlbHVjdGFudCkKICAqICAgLSBBdCB0aGUgc3RhcnQgb2YgY3VycmVudCBzY29wZQogICoK LSAqIEFsZ29yaXRobToKLSAqICAgLSBUcmF2ZXJzZSBlbGVtZW50cyB3aXRoaW4gY3VycmVudCBz Y29wZSAocGFyZW50RGVwdGggdG8gc3RhcnREZXB0aCkKLSAqICAgLSBGb3IgR1JPVVA6IG11c3Qg YmUgdW5ib3VuZGVkIGdyZWVkeSBBTkQgY29udGFpbiBvbmx5IHNpbXBsZSB7MSwxfSBWQVJzCi0g KiAgIC0gU2V0cyBBQlNPUkJBQkxFIGFuZCBBQlNPUkJBQkxFX0JSQU5DSCBmbGFncyBvbiBtYXRj aGluZyBlbGVtZW50cwotICoKICAqIFR3byBjYXNlcyBhcmUgaGFuZGxlZDoKICAqICAgMS4gU2lt cGxlIFZBUjogQSsgQiBDIC0gQSBoYXMgbWF4PUlORiwgZ2V0cyBib3RoIGZsYWdzCi0gKiAgIDIu IEdyb3VwOiAoQSBCKSsgQyAtIEVORCBoYXMgbWF4PUlORiwgYWxsIGNoaWxkcmVuIGFyZSB7MSwx fSBWQVJzCi0gKiAgICAgIEEsQixFTkQgZ2V0IEFCU09SQkFCTEVfQlJBTkNILCBvbmx5IEVORCBn ZXRzIEFCU09SQkFCTEUKKyAqICAgMi4gVW5ib3VuZGVkIEdST1VQIHdpdGggZml4ZWQtbGVuZ3Ro IGNoaWxkcmVuOiAoQSBCezJ9KSsgQworICogICAgICBBbGwgY2hpbGRyZW4gbXVzdCBoYXZlIG1p biA9PSBtYXggKHJlY3Vyc2l2ZWx5IGZvciBuZXN0ZWQgc3ViZ3JvdXBzKS4KKyAqICAgICAgVGhp cyBpcyBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0byB7MSwxfSBWQVJzLCBlLmcuLCAoQSBCIEIp KyBDLgorICogICAgICBBbGwgZWxlbWVudHMgd2l0aGluIHRoZSBncm91cCBnZXQgQUJTT1JCQUJM RV9CUkFOQ0guCisgKiAgICAgIE9ubHkgdGhlIHVuYm91bmRlZCBFTkQgZ2V0cyBBQlNPUkJBQkxF IChqdWRnbWVudCBwb2ludCkuCisgKiAgICAgIEV4YW1wbGVzOgorICogICAgICAgIChBIEJ7Mn0p KyBDICAgICAgICAgIC0gQnsyfSBoYXMgbWluPT1tYXgsIHN0ZXA9MworICogICAgICAgIChBIChC IEMpezJ9IEQpKyBFICAgIC0gbmVzdGVkIHsyfSBzdWJncm91cCwgc3RlcD02CisgKiAgICAgICAg KChBIChCIEMpezJ9KXsyfSkrICAgLSBkb3VibHkgbmVzdGVkIHsyfSwgc3RlcD0xMAorICogICAg ICAgIChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRiAgLSBkZWVwIG5lc3RpbmcsIHN0ZXA9MjAK ICAqCiAgKiBSZXR1cm5zIGZhbHNlIGZvciBwYXR0ZXJucyB3aGVyZSBhYnNvcnB0aW9uIGNhbm5v dCB3b3JrOgogICogICAtIEEgQisgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpCiAgKiAgIC0gQSs/ IEIgKHJlbHVjdGFudCBxdWFudGlmaWVyKQogICogICAtIChBIHwgQikrIChBTFQgaW5zaWRlIGdy b3VwKQotICogICAtIChBIEIrKSsgKHVuYm91bmRlZCBlbGVtZW50IGluc2lkZSBncm91cCkKLSAq ICAgLSAoKEEgQikrIEMpKyAobmVzdGVkIHVuYm91bmRlZCBncm91cHMpCisgKiAgIC0gKEEgQisp KyAodmFyaWFibGUtbGVuZ3RoIGVsZW1lbnQgaW5zaWRlIGdyb3VwKQorICogICAtIChBIEJ7Miw1 fSkrIChtaW4gIT0gbWF4IGluc2lkZSBncm91cCkKICAqLwogc3RhdGljIGJvb2wKIGlzVW5ib3Vu ZGVkU3RhcnQoUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgpCiB7CiAJUlBSUGF0 dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0dGVybi0+ZWxlbWVudHNbaWR4XTsKIAlSUFJEZXB0aAlz dGFydERlcHRoID0gZWxlbS0+ZGVwdGg7Ci0JUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtOwog CVJQUlBhdHRlcm5FbGVtZW50ICplOwogCiAJLyogQ2FzZSAxOiBTaW1wbGUgdW5ib3VuZGVkIFZB UiBhdCBzdGFydCAoZ3JlZWR5IG9ubHkpICovCkBAIC0xNTY4LDIxICsxNjM2LDE5IEBAIGlzVW5i b3VuZGVkU3RhcnQoUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgpCiAJfQogCiAJ LyoKLQkgKiBDYXNlIDI6IFVuYm91bmRlZCBHUk9VUCAtIHRyYXZlcnNlIHNpYmxpbmdzIGF0IHN0 YXJ0RGVwdGggYW5kIGNoZWNrIGlmCi0JICogdGhleSdyZSBhbGwgc2ltcGxlIHsxLDF9IFZBUnMs IHRoZW4gY2hlY2sgaWYgRU5EIGF0IHN0YXJ0RGVwdGggLSAxIGlzCi0JICogdW5ib3VuZGVkIGdy ZWVkeS4KKwkgKiBDYXNlIDI6IFVuYm91bmRlZCBHUk9VUCB3aXRoIGZpeGVkLWxlbmd0aCBjaGls ZHJlbi4gIEVhY2ggY2hpbGQgbXVzdAorCSAqIGhhdmUgbWluID09IG1heCAocmVjdXJzaXZlbHkg Zm9yIG5lc3RlZCBzdWJncm91cHMpLCBlbnN1cmluZyBhIGZpeGVkCisJICogc3RlcCBzaXplIHBl ciBpdGVyYXRpb24gc28gdGhhdCBjb3VudC1kb21pbmFuY2UgaG9sZHMuCiAJICovCi0JZm9yIChl ID0gZWxlbTsgZS0+ZGVwdGggPT0gc3RhcnREZXB0aDsgZSA9IG5leHRFbGVtKQotCXsKLQkJLyog TXVzdCBiZSBzaW1wbGUgezEsMX0gVkFSICovCi0JCWlmICghUlBSRWxlbUlzVmFyKGUpIHx8IGUt Pm1pbiAhPSAxIHx8IGUtPm1heCAhPSAxKQotCQkJcmV0dXJuIGZhbHNlOworCWlmICghaXNGaXhl ZExlbmd0aENoaWxkcmVuKHBhdHRlcm4sIGlkeCwgc3RhcnREZXB0aCkpCisJCXJldHVybiBmYWxz ZTsKIAotCQlBc3NlcnQoZS0+bmV4dCAhPSBSUFJfRUxFTUlEWF9JTlZBTElEKTsKLQkJbmV4dEVs ZW0gPSAmcGF0dGVybi0+ZWxlbWVudHNbZS0+bmV4dF07Ci0JfQorCS8qIEZpbmQgdGhlIEVORCBl bGVtZW50IGF0IHN0YXJ0RGVwdGggLSAxICovCisJZSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tpZHhd OworCXdoaWxlIChlLT5kZXB0aCA+PSBzdGFydERlcHRoKQorCQllID0gJnBhdHRlcm4tPmVsZW1l bnRzW2UtPm5leHRdOwogCi0JLyogTm93IGUgc2hvdWxkIGJlIEVORCBhdCBzdGFydERlcHRoIC0g MSAqLworCS8qIEVORCBtdXN0IGJlIHVuYm91bmRlZCBncmVlZHkgKi8KIAlpZiAoZS0+ZGVwdGgg PT0gc3RhcnREZXB0aCAtIDEgJiYKIAkJUlBSRWxlbUlzRW5kKGUpICYmIGUtPm1heCA9PSBSUFJf UVVBTlRJVFlfSU5GICYmCiAJCSFSUFJFbGVtSXNSZWx1Y3RhbnQoZSkpCkBAIC0xNTkwLDcgKzE2 NTYsOCBAQCBpc1VuYm91bmRlZFN0YXJ0KFJQUlBhdHRlcm4gKnBhdHRlcm4sIFJQUkVsZW1JZHgg aWR4KQogCQlBc3NlcnQoZS0+anVtcCA9PSBpZHgpOyAvKiBFTkQgcG9pbnRzIGJhY2sgdG8gZmly c3QgY2hpbGQgKi8KIAogCQkvKiBTZXQgQUJTT1JCQUJMRV9CUkFOQ0ggb24gYWxsIGNoaWxkcmVu LCBBQlNPUkJBQkxFIG9uIEVORCBvbmx5ICovCi0JCWZvciAoZSA9IGVsZW07ICFSUFJFbGVtSXNF bmQoZSk7IGUgPSAmcGF0dGVybi0+ZWxlbWVudHNbZS0+bmV4dF0pCisJCWZvciAoZSA9IGVsZW07 ICFSUFJFbGVtSXNFbmQoZSkgfHwgZS0+ZGVwdGggPj0gc3RhcnREZXB0aDsKKwkJCSBlID0gJnBh dHRlcm4tPmVsZW1lbnRzW2UtPm5leHRdKQogCQkJZS0+ZmxhZ3MgfD0gUlBSX0VMRU1fQUJTT1JC QUJMRV9CUkFOQ0g7CiAJCWUtPmZsYWdzIHw9IFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIIHwg UlBSX0VMRU1fQUJTT1JCQUJMRTsKIAkJcmV0dXJuIHRydWU7CkBAIC0xNjU0LDEyICsxNzIxLDI1 IEBAIGNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZlKFJQUlBhdHRlcm4gKnBhdHRlcm4sIFJQ UkVsZW1JZHggc3RhcnRJZHgsCiAJfQogCWVsc2UgaWYgKFJQUkVsZW1Jc0JlZ2luKGVsZW0pKQog CXsKLQkJLyogQkVHSU46IHNraXAgdG8gZmlyc3QgY2hpbGQgYW5kIGNoZWNrIHRoYXQgKi8KLQkJ Y29tcHV0ZUFic29yYmFiaWxpdHlSZWN1cnNpdmUocGF0dGVybiwgZWxlbS0+bmV4dCwgaGFzQWJz b3JiYWJsZSk7Ci0KLQkJLyogTWFyayBCRUdJTiBlbGVtZW50IGlmIGNvbnRlbnRzIGFyZSBhYnNv cmJhYmxlICovCi0JCWlmICgqaGFzQWJzb3JiYWJsZSkKKwkJLyoKKwkJICogQkVHSU46IGZpcnN0 IHRyeSB0byB0cmVhdCB0aGlzIEJFR0lOJ3MgY2hpbGRyZW4gYXMgYW4gdW5ib3VuZGVkCisJCSAq IGdyb3VwIGRpcmVjdGx5IChoYW5kbGVzIG5lc3RlZCBmaXhlZC1sZW5ndGggZ3JvdXBzIGxpa2Ug KChBezJ9CisJCSAqIEJ7M30pezJ9KSspLiAgSWYgdGhhdCBmYWlscywgc2tpcCB0byBmaXJzdCBj aGlsZCBhbmQgcmVjdXJzZSBhcworCQkgKiBiZWZvcmUuCisJCSAqLworCQlpZiAoaXNVbmJvdW5k ZWRTdGFydChwYXR0ZXJuLCBlbGVtLT5uZXh0KSkKKwkJeworCQkJKmhhc0Fic29yYmFibGUgPSB0 cnVlOwogCQkJZWxlbS0+ZmxhZ3MgfD0gUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0g7CisJCX0K KwkJZWxzZQorCQl7CisJCQljb21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vyc2l2ZShwYXR0ZXJuLCBl bGVtLT5uZXh0LCBoYXNBYnNvcmJhYmxlKTsKKworCQkJLyogTWFyayBCRUdJTiBlbGVtZW50IGlm IGNvbnRlbnRzIGFyZSBhYnNvcmJhYmxlICovCisJCQlpZiAoKmhhc0Fic29yYmFibGUpCisJCQkJ ZWxlbS0+ZmxhZ3MgfD0gUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0g7CisJCX0KIAl9CiAJZWxz ZQogCXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggMzE2ODQ2OGQw YWUuLjc0NTJjZjFiM2FiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jw cl9iYXNlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApA QCAtMzMxMiw3ICszMzEyLDcgQEAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIFdpbmRvd0FnZwogICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCi0gICBQYXR0ZXJuOiAoYXsy fSl7Mix9CisgICBQYXR0ZXJuOiAoYXsyfScpezIsfSIKICAgIC0+ICBTb3J0CiAgICAgICAgICBT b3J0IEtleTogaWQKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgpAQCAtNDA5NSw2 ICs0MDk1LDg3IEBAIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgogKDYgcm93cykKIAorLS0gRml4ZWQtbGVuZ3RoIGdyb3VwIGFic29yYmFibGU6IChB ezJ9IEJ7M30pKyAtPiAoYXsyfScgYnszfScpezIsfSIKKy0tIEFsbCBjaGlsZHJlbiBoYXZlIG1p biA9PSBtYXgsIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIHsxLDF9CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVS TiAoKEF7Mn0gQnszfSkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBB UyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezJ9 JyBiezN9JykrIgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBOZXN0ZWQgZml4ZWQtbGVu Z3RoIGdyb3VwOiAoQSAoQiBDKXsyfSBEKSsgLT4gYWJzb3JiYWJsZQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4g KChBIChCIEMpezJ9IEQpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIg QVMgdmFsIDw9IDQwLCBDIEFTIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2MCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyAoYicgYycpezJ9JyBkJykrIgorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9wbGFuCisoNiByb3dzKQorCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIHdpdGggaW5uZXIgcXVh bnRpZmllcjogKChBezJ9IEJ7M30pezJ9KSsgLT4gYWJzb3JiYWJsZQorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4g KCgoQXsyfSBCezN9KXsyfSkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwg QiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgo YXsyfScgYnszfScpezJ9JykrIgorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBOb24tYWJz b3JiYWJsZSBmaXhlZC1sZW5ndGg6IChBIEJ7Miw1fSkrIC0+IG5vIG1hcmtlcnMgKG1pbiAhPSBt YXgpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgQnsyLDV9KSspCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGEgYnsyLDV9KSsKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTog aWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDYgcm93cykKKworLS0gTm9u LWFic29yYmFibGUgZml4ZWQtbGVuZ3RoOiAoQSBCPykrIC0+IG5vIG1hcmtlcnMgKG1pbiAhPSBt YXgpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgQj8pKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2 YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiAoYSBiPykrCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKIC0tIE5vbi1hYnNvcmJh YmxlICh1bmJvdW5kZWQgbm90IGF0IHN0YXJ0KTogQSBCKyAtPiBhIGIrIChubyBtYXJrZXJzKQog RVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IDc5Y2JjMjQ2 MDM5Li41NjBmMjFmNDRjMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y cHJfZXhwbGFpbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFp bi5vdXQKQEAgLTQ2MiwxMCArNDYyLDEwIEBAIFdJTkRPVyB3IEFTICgKICAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQogICAg UGF0dGVybjogKGEnIGInKSsiCiAgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTog TmtCCi0gICBORkEgU3RhdGVzOiAzIHBlYWssIDkxIHRvdGFsLCAwIG1lcmdlZAotICAgTkZBIENv bnRleHRzOiAyIHBlYWssIDYxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBIFN0YXRlczogNCBwZWFr LCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA2MSB0b3RhbCwg MCBwcnVuZWQKICAgIE5GQTogMSBtYXRjaGVkIChsZW4gNjAvNjAvNjAuMCksIDAgbWlzbWF0Y2hl ZAotICAgTkZBOiAyOSBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAzMCBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIE5GQTogMjkgYWJzb3JiZWQgKGxlbiAyLzIvMi4wKSwgMzAgc2tpcHBlZCAobGVu IDEvMS8xLjApCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0 dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKICg5IHJvd3MpCiAKQEAgLTkwNCw2ICs5MDQsMTg4IEBA IFdJTkRPVyB3IEFTICgKICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKICg5IHJvd3MpCiAKKy0tIEZpeGVkLWxlbmd0 aCBncm91cCBhYnNvcnB0aW9uOiAoQSBCIEIpKyBDCistLSBCIEIgbWVyZ2VkIHRvIEJ7Mn07IGFi c29yYmFibGUgd2l0aCBmaXhlZC1sZW5ndGggY2hlY2sKKy0tIHN0ZXBfc2l6ZT0zIChBICsgQiAr IEIpOyB2ICUgNyBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMgcGVyIG1hdGNoCitDUkVBVEUgVklF VyBycHJfZXYyMGIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDcwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQiBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUg NyBJTiAoMSwgNCksIEIgQVMgdiAlIDcgSU4gKDIsIDMsIDUsIDYpLCBDIEFTIHYgJSA3ID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2MjBiJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoKGEgYiBiKSsgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA3MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAl IDcgSU4gKDEsIDQpLCBCIEFTIHYgJSA3IElOICgyLCAzLCA1LCA2KSwgQyBBUyB2ICUgNyA9IDAK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz03MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYnsyfScpKyIg YworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCA3 MSB0b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA3LzcvNy4wKSwgMCBt aXNtYXRjaGVkCisgICBORkE6IDEwIGFic29yYmVkIChsZW4gMy8zLzMuMCksIDEwIHNraXBwZWQg KGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTcwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBOZXN0ZWQgZml4ZWQt bGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIChCIEMpezJ9IEQpKyBFCistLSBzdGVwX3NpemUg PSAxICsgKDErMSkqMiArIDEgPSA2OyB2ICUgMTMgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zICsg RQorQ1JFQVRFIFZJRVcgcnByX2V2MjBjIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA2NSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKyBFKQor ICAgIERFRklORSBBIEFTIHYgJSAxMyBJTiAoMSwgNyksIEIgQVMgdiAlIDEzIElOICgyLCA0LCA4 LCAxMCksCisgICAgICAgICAgIEMgQVMgdiAlIDEzIElOICgzLCA1LCA5LCAxMSksIEQgQVMgdiAl IDEzIElOICg2LCAxMiksCisgICAgICAgICAgIEUgQVMgdiAlIDEzID0gMAorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjBj JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAg ICBsaW5lICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOICgoYSAoYiBjKXsyfSBkKSsgZSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2NSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKyBFKQorICAg IERFRklORSBBIEFTIHYgJSAxMyBJTiAoMSwgNyksIEIgQVMgdiAlIDEzIElOICgyLCA0LCA4LCAx MCksCisgICAgICAgICAgIEMgQVMgdiAlIDEzIElOICgzLCA1LCA5LCAxMSksIEQgQVMgdiAlIDEz IElOICg2LCAxMiksCisgICAgICAgICAgIEUgQVMgdiAlIDEzID0gMAorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTY1LjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyAoYicgYycpezJ9JyBkJykrIiBlCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBl YWssIDc2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDY2IHRvdGFs LCA1MCBwcnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4gMTMvMTMvMTMuMCksIDAgbWlzbWF0 Y2hlZAorICAgTkZBOiA1IGFic29yYmVkIChsZW4gNi82LzYuMCksIDUgc2tpcHBlZCAobGVuIDEv MS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFs IHJvd3M9NjUuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIERvdWJseSBuZXN0ZWQgZml4ZWQt bGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRgorLS0g c3RlcF9zaXplID0gMSArICgoMSszKSoyKzEpKjIgKyAxID0gMjA7IHYgJSA0MSBjeWNsZSBnaXZl cyAyIGl0ZXJhdGlvbnMgKyBGCitDUkVBVEUgVklFVyBycHJfZXYyMGQgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDgyKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg KChCIEMgQyBDKXsyfSBEKXsyfSBFKSsgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNDEgSU4gKDEs IDIxKSwKKyAgICAgICAgICAgQiBBUyB2ICUgNDEgSU4gKDIsIDYsIDExLCAxNSwgMjIsIDI2LCAz MSwgMzUpLAorICAgICAgICAgICBDIEFTIHYgJSA0MSBJTiAoMyw0LDUsIDcsOCw5LCAxMiwxMywx NCwgMTYsMTcsMTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAyMywyNCwyNSwgMjcsMjgs MjksIDMyLDMzLDM0LCAzNiwzNywzOCksCisgICAgICAgICAgIEQgQVMgdiAlIDQxIElOICgxMCwg MTksIDMwLCAzOSksCisgICAgICAgICAgIEUgQVMgdiAlIDQxIElOICgyMCwgNDApLAorICAgICAg ICAgICBGIEFTIHYgJSA0MSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjIwZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChhICgoYiBjIGMgYyl7Mn0gZCl7Mn0gZSkrIGYpIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoKEIgQyBDIEMp ezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORSBBIEFTIHYgJSA0MSBJTiAoMSwgMjEpLAorICAg ICAgICAgICBCIEFTIHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1LCAyMiwgMjYsIDMxLCAzNSksCisg ICAgICAgICAgIEMgQVMgdiAlIDQxIElOICgzLDQsNSwgNyw4LDksIDEyLDEzLDE0LCAxNiwxNywx OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0LDI1LCAyNywyOCwyOSwgMzIsMzMs MzQsIDM2LDM3LDM4KSwKKyAgICAgICAgICAgRCBBUyB2ICUgNDEgSU4gKDEwLCAxOSwgMzAsIDM5 KSwKKyAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIwLCA0MCksCisgICAgICAgICAgIEYgQVMg diAlIDQxID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5f ZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cgKGFjdHVhbCByb3dzPTgyLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChh JyAoKGInIGN7M30nKXsyfScgZCcpezJ9JyBlJykrIiBmCisgICBTdG9yYWdlOiBNZW1vcnkgIE1h eGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDg3IHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDgzIHRvdGFsLCA3NiBwcnVuZWQKKyAgIE5G QTogMiBtYXRjaGVkIChsZW4gNDEvNDEvNDEuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyIGFi c29yYmVkIChsZW4gMjAvMjAvMjAuMCksIDIgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9ODIuMDAgbG9v cHM9MSkKKyg5IHJvd3MpCisKKy0tIDMtbGV2ZWwgRU5EIGNoYWluIGFic29ycHRpb246ICgoQSAo QiBDKXsyfSl7Mn0pKworLS0gc3RlcF9zaXplID0gKDEgKyAoMSsxKSoyKSAqIDIgPSAxMDsgdiAl IDIxIGN5Y2xlIGdpdmVzIDIgaXRlcmF0aW9ucworLS0gRU5EIGNoYWluOiBFTkQoQkN7Mn0pIC0+ IEVORChBLi57Mn0pIC0+IEVORCgrLCBBQlNPUkJBQkxFKQorQ1JFQVRFIFZJRVcgcnByX2V2MjBl IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0Mikg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKCgoQSAoQiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMjEg SU4gKDEsIDYsIDExLCAxNiksCisgICAgICAgICAgIEIgQVMgdiAlIDIxIElOICgyLCA0LCA3LCA5 LCAxMiwgMTQsIDE3LCAxOSksCisgICAgICAgICAgIEMgQVMgdiAlIDIxIElOICgzLCA1LCA4LCAx MCwgMTMsIDE1LCAxOCwgMjApCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKChhIChiIGMpezJ9 KXsyfSkrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQyKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkrKQorICAgIERFRklORSBBIEFTIHYgJSAyMSBJ TiAoMSwgNiwgMTEsIDE2KSwKKyAgICAgICAgICAgQiBBUyB2ICUgMjEgSU4gKDIsIDQsIDcsIDks IDEyLCAxNCwgMTcsIDE5KSwKKyAgICAgICAgICAgQyBBUyB2ICUgMjEgSU4gKDMsIDUsIDgsIDEw LCAxMywgMTUsIDE4LCAyMCkKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz00Mi4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoKGEnIChiJyBjJyl7Mn0nKXsyfScpKyIKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNDcgdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDUgcGVhaywgNDMgdG90YWwsIDMwIHBydW5lZAorICAgTkZBOiAy IG1hdGNoZWQgKGxlbiAyMC8yMC8yMC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDIgYWJzb3Ji ZWQgKGxlbiAxMC8xMC8xMC4wKSwgOCBza2lwcGVkIChsZW4gMS81LzMuMCkKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00Mi4wMCBsb29wcz0x KQorKDkgcm93cykKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLSBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cwog LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkBAIC0xODk0LDEwICsyMDc2LDEwIEBAIFdJTkRPVyB3IEFTICgKICAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQog ICAgUGF0dGVybjogKGEnIGInIGMnKSsiCiAgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCi0gICBORkEgU3RhdGVzOiAzIHBlYWssIDgxIHRvdGFsLCAwIG1lcmdlZAotICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDYxIHRvdGFsLCAyMCBwcnVuZWQKKyAgIE5GQSBTdGF0ZXM6 IDQgcGVhaywgODEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEg dG90YWwsIDIwIHBydW5lZAogICAgTkZBOiAxIG1hdGNoZWQgKGxlbiA2MC82MC82MC4wKSwgMCBt aXNtYXRjaGVkCi0gICBORkE6IDE5IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDIwIHNraXBwZWQg KGxlbiAxLzEvMS4wKQorICAgTkZBOiAxOSBhYnNvcmJlZCAobGVuIDMvMy8zLjApLCAyMCBza2lw cGVkIChsZW4gMS8xLzEuMCkKICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQogKDkgcm93cykKIApAQCAtMjQ2MSw3ICsy NjQzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgTkZBIFN0YXRlczogNCBwZWFrLCAxMDIgdG90YWws IDAgbWVyZ2VkCiAgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNDEgdG90YWwsIDEwIHBydW5lZAog ICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDAgbWlzbWF0Y2hlZAotICAgTkZBOiAy MCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAwIHNraXBwZWQKKyAgIE5GQTogMTAgYWJzb3JiZWQg KGxlbiAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCiAgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKICg5 IHJvd3MpCiAKQEAgLTMxNTgsMTAgKzMzNDAsMTAgQEAgV0lORE9XIHcgQVMgKAogICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CiAgICBQYXR0ZXJuOiAoYScgYicpKyIKICAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKLSAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNjEgdG90YWwsIDAgbWVyZ2VkCi0gICBO RkEgQ29udGV4dHM6IDIgcGVhaywgNDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkEgU3RhdGVzOiA0 IHBlYWssIDYxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDQxIHRv dGFsLCAwIHBydW5lZAogICAgTkZBOiAxIG1hdGNoZWQgKGxlbiA0MC80MC80MC4wKSwgMCBtaXNt YXRjaGVkCi0gICBORkE6IDE5IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDIwIHNraXBwZWQgKGxl biAxLzEvMS4wKQorICAgTkZBOiAxOSBhYnNvcmJlZCAobGVuIDIvMi8yLjApLCAyMCBza2lwcGVk IChsZW4gMS8xLzEuMCkKICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQogKDkgcm93cykKIApAQCAtMzIzNCwxMiArMzQx NiwxMiBAQCBXSU5ET1cgdyBBUyAoCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgV2luZG93QWdnIChhY3R1YWwg cm93cz02MC4wMCBsb29wcz0xKQogICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCi0gICBQYXR0ZXJuOiAoKGEgYil7Mn0pKwor ICAgUGF0dGVybjogKChhJyBiJyl7Mn0nKSsiCiAgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCiAgICBORkEgU3RhdGVzOiA1IHBlYWssIDc2IHRvdGFsLCAwIG1lcmdlZAog ICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDYxIHRvdGFsLCAxNSBwcnVuZWQKICAgIE5GQTogMSBt YXRjaGVkIChsZW4gNjAvNjAvNjAuMCksIDAgbWlzbWF0Y2hlZAotICAgTkZBOiAwIGFic29yYmVk LCA0NCBza2lwcGVkIChsZW4gMS80LzIuMykKKyAgIE5GQTogMTQgYWJzb3JiZWQgKGxlbiA0LzQv NC4wKSwgMzAgc2tpcHBlZCAobGVuIDEvMi8xLjUpCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKICg5IHJvd3MpCiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CmluZGV4IDdiNWExN2ZiNjcxLi4yNTBm N2YxMzFiMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0CkBAIC00NDcsNiAr NDQ3LDMyNyBAQCBXSU5ET1cgdyBBUyAoCiAgIDcgfCB7WH0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCiAoNyByb3dzKQogCistLSBGaXhlZC1sZW5ndGggZ3JvdXAgYWJzb3JwdGlvbjogKEEg QnsyfSkrIEMKKy0tIEJ7Mn0gaGFzIG1pbiA9PSBtYXgsIGVxdWl2YWxlbnQgdG8gdW5yb2xsaW5n IHRvIChBIEIgQikrIEMKK1dJVEggdGVzdF9hYnNvcmJfZml4ZWRsZW4gQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg IEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNiwgIEFSUkFZ WydCJ10pLAorICAgICAgICAoNywgIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydC J10pLAorICAgICAgICAoOSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMTAsIEFSUkFZWydDJ10p LAorICAgICAgICAoMTEsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxh c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfZml4ZWRs ZW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEJ7Mn0pKyBDKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgIDEwCisgIDIgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDggfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMTAgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTEgfCB7 WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMTEgcm93cykKKworLS0gQ29uc2VjdXRp dmUgdmFycyBtZXJnZWQgdG8gZml4ZWQtbGVuZ3RoOiAoQSBCIEIpKyAtPiAoQSBCezJ9KSsKKy0t IG1lcmdlQ29uc2VjdXRpdmVWYXJzIHByb2R1Y2VzIEJ7Mn07IG5vdyBhYnNvcmJhYmxlIHdpdGgg Zml4ZWQtbGVuZ3RoIGNoZWNrCitXSVRIIHRlc3RfYWJzb3JiX2NvbnNlY3V0aXZlIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsICBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBBUlJBWVsnQiddKSwKKyAgICAgICAg KDQsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsICBB UlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDEwLCBBUlJB WVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2NvbnNlY3V0aXZlCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSBCIEIpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDkKKyAgMiB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAxMCB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygx MCByb3dzKQorCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIChC IEMpezJ9IEQpKyBFCistLSBJbm5lciBncm91cCB7Mn0gaGFzIG1pbiA9PSBtYXg7IGFic29yYmFi bGUgdmlhIHJlY3Vyc2l2ZSBjaGVjaworLS0gc3RlcF9zaXplID0gMSArICgxKzEpKjIgKyAxID0g NgorV0lUSCB0ZXN0X2Fic29yYl9uZXN0ZWRfZml4ZWRsZW4gQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgIEFSUkFZ WydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydC J10pLAorICAgICAgICAoNSwgIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgIEFSUkFZWydEJ10p LAorICAgICAgICAoNywgIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydCJ10pLAor ICAgICAgICAoOSwgIEFSUkFZWydDJ10pLAorICAgICAgICAoMTAsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMTEsIEFSUkFZWydDJ10pLAorICAgICAgICAoMTIsIEFSUkFZWydEJ10pLAorICAgICAg ICAoMTMsIEFSUkFZWydFJ10pLAorICAgICAgICAoMTQsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9hYnNvcmJfbmVzdGVkX2ZpeGVkbGVuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoQiBD KXsyfSBEKSsgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9 IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAor LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAg ICAgICAgIDEgfCAgICAgICAgMTMKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgOSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMSB8IHtDfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAxMiB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMyB8 IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxNCB8IHtYfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKygxNCByb3dzKQorCistLSBEb3VibHkgbmVzdGVkIGZpeGVkLWxlbmd0 aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoKEIgQ3szfSl7Mn0gRCl7Mn0gRSkrIEYKKy0tIHN0ZXBf c2l6ZSA9IDEgKyAoKDErMykqMisxKSoyICsgMSA9IDIwOyAyIGl0ZXJhdGlvbnMgKyBGID0gNDEg cm93cworV0lUSCB0ZXN0X2Fic29yYl9kb3VibHlfbmVzdGVkIEFTICgKKyAgICBTRUxFQ1QgdiBB UyBpZCwgQVJSQVlbCisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgx LCAyMSkgIFRIRU4gJ0EnCisgICAgICAgICAgICBXSEVOIHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1 LCAyMiwgMjYsIDMxLCAzNSkgVEhFTiAnQicKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgz LDQsNSwgNyw4LDksIDEyLDEzLDE0LCAxNiwxNywxOCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAyMywyNCwyNSwgMjcsMjgsMjksIDMyLDMzLDM0LCAzNiwzNywzOCkgVEhFTiAnQycKKyAg ICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgxMCwgMTksIDMwLCAzOSkgVEhFTiAnRCcKKyAgICAg ICAgICAgIFdIRU4gdiAlIDQxIElOICgyMCwgNDApIFRIRU4gJ0UnCisgICAgICAgICAgICBXSEVO IHYgJSA0MSA9IDAgVEhFTiAnRicKKyAgICAgICAgICAgIEVMU0UgJ1gnCisgICAgICAgIEVORAor ICAgIF0gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4MikgQVMgcyh2KQor KQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9k b3VibHlfbmVzdGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoKEIgQyBDIEMpezJ9IEQpezJ9 IEUpKyBGKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgIDQxCisgIDIgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUg fCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgMTAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMTEgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTIgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMTMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMTQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTUgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgMTcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTggfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTkgfCB7RH0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMjAgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjEgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjIgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgMjMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjQg fCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjUgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgMjYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg MjcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjggfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgMjkgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMzAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzEgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMzIgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMzMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzQgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgMzYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzcgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMzggfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMzkgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDAgfCB7 RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDEgfCB7Rn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgNDIgfCB7QX0gICB8ICAgICAgICAgIDQyIHwgICAgICAgIDgyCisgNDMg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDQgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgNDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg NDYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNDcgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgNDggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgNDkgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTAgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgNTEgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgNTIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTMgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgNTUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTYgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTcgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgNTggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNTkgfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjAgfCB7RH0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgNjEgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjIg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjMgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgNjQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg NjUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjYgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgNjcgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgNjggfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNjkgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgNzAgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgNzEgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzIgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgNzQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzUgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgNzcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzggfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgNzkgfCB7Q30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgODAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgODEg fCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgODIgfCB7Rn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisoODIgcm93cykKKworLS0gMy1sZXZlbCBFTkQgY2hhaW46ICgoQSAo QiBDKXsyfSl7Mn0pKworLS0gVGVzdHMgRU5EKEJDezJ9KSAtPiBFTkQoQS4uezJ9KSAtPiBFTkQo KykgY2hhaW5pbmcKKy0tIDIgaXRlcmF0aW9ucyBvZiArLCBlYWNoIDEwIHJvd3M6IChBIEIgQyBC IEMpKEEgQiBDIEIgQykKK1dJVEggdGVzdF9hYnNvcmJfM2xldmVsX2VuZCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSksICAtLSAxc3QgKyBp dGVyLCAxc3QgezJ9LCBBCisgICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAg QVJSQVlbJ0MnXSksCisgICAgICAgICg0LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCAgQVJS QVlbJ0MnXSksICAtLSAxc3QgKEJDKXsyfSBkb25lCisgICAgICAgICg2LCAgQVJSQVlbJ0EnXSks ICAtLSAxc3QgKyBpdGVyLCAybmQgezJ9LCBBCisgICAgICAgICg3LCAgQVJSQVlbJ0InXSksCisg ICAgICAgICg4LCAgQVJSQVlbJ0MnXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAg ICAgICgxMCwgQVJSQVlbJ0MnXSksICAtLSAybmQgKEJDKXsyfSBkb25lLCAxc3QgezJ9IGRvbmUs IDFzdCArIGl0ZXIgZG9uZQorICAgICAgICAoMTEsIEFSUkFZWydBJ10pLCAgLS0gMm5kICsgaXRl ciwgMXN0IHsyfSwgQQorICAgICAgICAoMTIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTMsIEFS UkFZWydDJ10pLAorICAgICAgICAoMTQsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTUsIEFSUkFZ WydDJ10pLAorICAgICAgICAoMTYsIEFSUkFZWydBJ10pLCAgLS0gMm5kICsgaXRlciwgMm5kIHsy fSwgQQorICAgICAgICAoMTcsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTgsIEFSUkFZWydDJ10p LAorICAgICAgICAoMTksIEFSUkFZWydCJ10pLAorICAgICAgICAoMjAsIEFSUkFZWydDJ10pLCAg LS0gMm5kICsgaXRlciBkb25lCisgICAgICAgICgyMSwgQVJSQVlbJ1gnXSkgICAtLSBubyBtYXRj aCwgKyBlbmRzCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfM2xldmVsX2VuZAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgIDIwCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDcgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDggfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMTAgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTEgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMTIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMTMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTQgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgMTYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTcgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTggfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgMTkgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjAgfCB7 Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMjEgfCB7WH0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoMjEgcm93cykKKwogLS0gTXVsdGlwbGUgdW5ib3VuZGVkOiBBKyBCKyAo Zmlyc3QgZWxlbWVudCB1bmJvdW5kZWQgZW5hYmxlcyBhYnNvcnB0aW9uKQogV0lUSCB0ZXN0X211 bHRpX3VuYm91bmRlZCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfYmFzZS5zcWwKaW5kZXggY2Y2YzA2MmFlODUuLjhjMjNjNzU5OGEzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcnByX2Jhc2Uuc3FsCkBAIC0yNjAwLDYgKzI2MDAsNDIgQEAgV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RwogICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgo QSsgQiB8IEEgQikqKQogICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2 YWwgPiA1MCk7CiAKKy0tIEZpeGVkLWxlbmd0aCBncm91cCBhYnNvcmJhYmxlOiAoQXsyfSBCezN9 KSsgLT4gKGF7Mn0nIGJ7M30nKXsyLH0iCistLSBBbGwgY2hpbGRyZW4gaGF2ZSBtaW4gPT0gbWF4 LCBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0byB7MSwxfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBezJ9 IEJ7M30pKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwOiAoQSAoQiBDKXsyfSBEKSsgLT4g YWJzb3JiYWJsZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKykKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIgQVMgdmFsIDw9IDQwLCBDIEFTIHZhbCA8PSA2MCwg RCBBUyB2YWwgPiA2MCk7CisKKy0tIE5lc3RlZCBmaXhlZC1sZW5ndGggd2l0aCBpbm5lciBxdWFu dGlmaWVyOiAoKEF7Mn0gQnszfSl7Mn0pKyAtPiBhYnNvcmJhYmxlCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAo KChBezJ9IEJ7M30pezJ9KSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBC IEFTIHZhbCA+IDUwKTsKKworLS0gTm9uLWFic29yYmFibGUgZml4ZWQtbGVuZ3RoOiAoQSBCezIs NX0pKyAtPiBubyBtYXJrZXJzIChtaW4gIT0gbWF4KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEJ7Miw1 fSkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7 CisKKy0tIE5vbi1hYnNvcmJhYmxlIGZpeGVkLWxlbmd0aDogKEEgQj8pKyAtPiBubyBtYXJrZXJz IChtaW4gIT0gbWF4KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEI/KSspCisgICAgICAgICAgICAgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKwogLS0gTm9uLWFic29yYmFibGUg KHVuYm91bmRlZCBub3QgYXQgc3RhcnQpOiBBIEIrIC0+IGEgYisgKG5vIG1hcmtlcnMpCiBFWFBM QUlOIChDT1NUUyBPRkYpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAppbmRleCA5M2UwNmIwY2JkZi4uMjM3ZjAzNjY2 MzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKQEAgLTU3OCw2ICs1NzgsMTIw IEBAIFdJTkRPVyB3IEFTICgKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMg PSAyLCBDIEFTIHYgJSAzID0gMAogKTsnKTsKIAorLS0gRml4ZWQtbGVuZ3RoIGdyb3VwIGFic29y cHRpb246IChBIEIgQikrIEMKKy0tIEIgQiBtZXJnZWQgdG8gQnsyfTsgYWJzb3JiYWJsZSB3aXRo IGZpeGVkLWxlbmd0aCBjaGVjaworLS0gc3RlcF9zaXplPTMgKEEgKyBCICsgQik7IHYgJSA3IGN5 Y2xlIGdpdmVzIDIgaXRlcmF0aW9ucyBwZXIgbWF0Y2gKK0NSRUFURSBWSUVXIHJwcl9ldjIwYiBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSBCIEIpKyBDKQorICAgIERFRklORSBBIEFTIHYgJSA3IElOICgxLCA0KSwg QiBBUyB2ICUgNyBJTiAoMiwgMywgNSwgNiksIEMgQVMgdiAlIDcgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMGIn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCIEIpKyBDKQorICAgIERFRklO RSBBIEFTIHYgJSA3IElOICgxLCA0KSwgQiBBUyB2ICUgNyBJTiAoMiwgMywgNSwgNiksIEMgQVMg diAlIDcgPSAwCispOycpOworCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRp b246IChBIChCIEMpezJ9IEQpKyBFCistLSBzdGVwX3NpemUgPSAxICsgKDErMSkqMiArIDEgPSA2 OyB2ICUgMTMgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zICsgRQorQ1JFQVRFIFZJRVcgcnByX2V2 MjBjIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2 NSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKyBFKQorICAgIERFRklORSBBIEFTIHYgJSAx MyBJTiAoMSwgNyksIEIgQVMgdiAlIDEzIElOICgyLCA0LCA4LCAxMCksCisgICAgICAgICAgIEMg QVMgdiAlIDEzIElOICgzLCA1LCA5LCAxMSksIEQgQVMgdiAlIDEzIElOICg2LCAxMiksCisgICAg ICAgICAgIEUgQVMgdiAlIDEzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjBjJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY1 KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgKEIgQyl7Mn0gRCkrIEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDEz IElOICgxLCA3KSwgQiBBUyB2ICUgMTMgSU4gKDIsIDQsIDgsIDEwKSwKKyAgICAgICAgICAgQyBB UyB2ICUgMTMgSU4gKDMsIDUsIDksIDExKSwgRCBBUyB2ICUgMTMgSU4gKDYsIDEyKSwKKyAgICAg ICAgICAgRSBBUyB2ICUgMTMgPSAwCispOycpOworCistLSBEb3VibHkgbmVzdGVkIGZpeGVkLWxl bmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoKEIgQ3szfSl7Mn0gRCl7Mn0gRSkrIEYKKy0tIHN0 ZXBfc2l6ZSA9IDEgKyAoKDErMykqMisxKSoyICsgMSA9IDIwOyB2ICUgNDEgY3ljbGUgZ2l2ZXMg MiBpdGVyYXRpb25zICsgRgorQ1JFQVRFIFZJRVcgcnByX2V2MjBkIEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4MikgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBICgo QiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDQxIElOICgxLCAy MSksCisgICAgICAgICAgIEIgQVMgdiAlIDQxIElOICgyLCA2LCAxMSwgMTUsIDIyLCAyNiwgMzEs IDM1KSwKKyAgICAgICAgICAgQyBBUyB2ICUgNDEgSU4gKDMsNCw1LCA3LDgsOSwgMTIsMTMsMTQs IDE2LDE3LDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMsMjQsMjUsIDI3LDI4LDI5 LCAzMiwzMywzNCwgMzYsMzcsMzgpLAorICAgICAgICAgICBEIEFTIHYgJSA0MSBJTiAoMTAsIDE5 LCAzMCwgMzkpLAorICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAoMjAsIDQwKSwKKyAgICAgICAg ICAgRiBBUyB2ICUgNDEgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMGQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSAoKEIgQyBDIEMpezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORSBBIEFT IHYgJSA0MSBJTiAoMSwgMjEpLAorICAgICAgICAgICBCIEFTIHYgJSA0MSBJTiAoMiwgNiwgMTEs IDE1LCAyMiwgMjYsIDMxLCAzNSksCisgICAgICAgICAgIEMgQVMgdiAlIDQxIElOICgzLDQsNSwg Nyw4LDksIDEyLDEzLDE0LCAxNiwxNywxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIz LDI0LDI1LCAyNywyOCwyOSwgMzIsMzMsMzQsIDM2LDM3LDM4KSwKKyAgICAgICAgICAgRCBBUyB2 ICUgNDEgSU4gKDEwLCAxOSwgMzAsIDM5KSwKKyAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIw LCA0MCksCisgICAgICAgICAgIEYgQVMgdiAlIDQxID0gMAorKTsnKTsKKworLS0gMy1sZXZlbCBF TkQgY2hhaW4gYWJzb3JwdGlvbjogKChBIChCIEMpezJ9KXsyfSkrCistLSBzdGVwX3NpemUgPSAo MSArICgxKzEpKjIpICogMiA9IDEwOyB2ICUgMjEgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zCist LSBFTkQgY2hhaW46IEVORChCQ3syfSkgLT4gRU5EKEEuLnsyfSkgLT4gRU5EKCssIEFCU09SQkFC TEUpCitDUkVBVEUgVklFVyBycHJfZXYyMGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQyKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkr KQorICAgIERFRklORSBBIEFTIHYgJSAyMSBJTiAoMSwgNiwgMTEsIDE2KSwKKyAgICAgICAgICAg QiBBUyB2ICUgMjEgSU4gKDIsIDQsIDcsIDksIDEyLCAxNCwgMTcsIDE5KSwKKyAgICAgICAgICAg QyBBUyB2ICUgMjEgSU4gKDMsIDUsIDgsIDEwLCAxMywgMTUsIDE4LCAyMCkKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjIw ZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA0MikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSAoQiBDKXsyfSl7Mn0pKykK KyAgICBERUZJTkUgQSBBUyB2ICUgMjEgSU4gKDEsIDYsIDExLCAxNiksCisgICAgICAgICAgIEIg QVMgdiAlIDIxIElOICgyLCA0LCA3LCA5LCAxMiwgMTQsIDE3LCAxOSksCisgICAgICAgICAgIEMg QVMgdiAlIDIxIElOICgzLCA1LCA4LCAxMCwgMTMsIDE1LCAxOCwgMjApCispOycpOworCiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX25mYS5zcWwKaW5kZXggNWVkY2IzMzU3ZTYuLmFhYTdiNDRmNzg5IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfbmZhLnNxbApAQCAtMzQ2LDYgKzM0NiwxNzQgQEAgV0lORE9XIHcgQVMgKAogICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKICk7CiAKKy0tIEZpeGVkLWxlbmd0aCBncm91cCBhYnNv cnB0aW9uOiAoQSBCezJ9KSsgQworLS0gQnsyfSBoYXMgbWluID09IG1heCwgZXF1aXZhbGVudCB0 byB1bnJvbGxpbmcgdG8gKEEgQiBCKSsgQworV0lUSCB0ZXN0X2Fic29yYl9maXhlZGxlbiBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0InXSksCisgICAg ICAgICg0LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSksCisgICAgICAg ICg2LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg4 LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAgICAgICgxMCwg QVJSQVlbJ0MnXSksCisgICAgICAgICgxMSwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fi c29yYl9maXhlZGxlbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQnsyfSkrIEMpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIENvbnNl Y3V0aXZlIHZhcnMgbWVyZ2VkIHRvIGZpeGVkLWxlbmd0aDogKEEgQiBCKSsgLT4gKEEgQnsyfSkr CistLSBtZXJnZUNvbnNlY3V0aXZlVmFycyBwcm9kdWNlcyBCezJ9OyBub3cgYWJzb3JiYWJsZSB3 aXRoIGZpeGVkLWxlbmd0aCBjaGVjaworV0lUSCB0ZXN0X2Fic29yYl9jb25zZWN1dGl2ZSBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0InXSksCisgICAg ICAgICg0LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSksCisgICAgICAg ICg2LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg4 LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAgICAgICgxMCwg QVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9jb25zZWN1dGl2ZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgQiBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBOZXN0ZWQg Zml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIChCIEMpezJ9IEQpKyBFCistLSBJbm5l ciBncm91cCB7Mn0gaGFzIG1pbiA9PSBtYXg7IGFic29yYmFibGUgdmlhIHJlY3Vyc2l2ZSBjaGVj aworLS0gc3RlcF9zaXplID0gMSArICgxKzEpKjIgKyAxID0gNgorV0lUSCB0ZXN0X2Fic29yYl9u ZXN0ZWRfZml4ZWRsZW4gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg IEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFS UkFZWydDJ10pLAorICAgICAgICAoNiwgIEFSUkFZWydEJ10pLAorICAgICAgICAoNywgIEFSUkFZ WydBJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydD J10pLAorICAgICAgICAoMTAsIEFSUkFZWydCJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydDJ10p LAorICAgICAgICAoMTIsIEFSUkFZWydEJ10pLAorICAgICAgICAoMTMsIEFSUkFZWydFJ10pLAor ICAgICAgICAoMTQsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfbmVzdGVkX2Zp eGVkbGVuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoQiBDKXsyfSBEKSsgRSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisKKy0t IERvdWJseSBuZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBICgoQiBDezN9 KXsyfSBEKXsyfSBFKSsgRgorLS0gc3RlcF9zaXplID0gMSArICgoMSszKSoyKzEpKjIgKyAxID0g MjA7IDIgaXRlcmF0aW9ucyArIEYgPSA0MSByb3dzCitXSVRIIHRlc3RfYWJzb3JiX2RvdWJseV9u ZXN0ZWQgQVMgKAorICAgIFNFTEVDVCB2IEFTIGlkLCBBUlJBWVsKKyAgICAgICAgQ0FTRQorICAg ICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDEsIDIxKSAgVEhFTiAnQScKKyAgICAgICAgICAgIFdI RU4gdiAlIDQxIElOICgyLCA2LCAxMSwgMTUsIDIyLCAyNiwgMzEsIDM1KSBUSEVOICdCJworICAg ICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDMsNCw1LCA3LDgsOSwgMTIsMTMsMTQsIDE2LDE3LDE4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0LDI1LCAyNywyOCwyOSwgMzIsMzMs MzQsIDM2LDM3LDM4KSBUSEVOICdDJworICAgICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDEwLCAx OSwgMzAsIDM5KSBUSEVOICdEJworICAgICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDIwLCA0MCkg VEhFTiAnRScKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxID0gMCBUSEVOICdGJworICAgICAgICAg ICAgRUxTRSAnWCcKKyAgICAgICAgRU5ECisgICAgXSBBUyBmbGFncworICAgIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDgyKSBBUyBzKHYpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2RvdWJseV9uZXN0ZWQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBICgoQiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFO WShmbGFncykKKyk7CisKKy0tIDMtbGV2ZWwgRU5EIGNoYWluOiAoKEEgKEIgQyl7Mn0pezJ9KSsK Ky0tIFRlc3RzIEVORChCQ3syfSkgLT4gRU5EKEEuLnsyfSkgLT4gRU5EKCspIGNoYWluaW5nCist LSAyIGl0ZXJhdGlvbnMgb2YgKywgZWFjaCAxMCByb3dzOiAoQSBCIEMgQiBDKShBIEIgQyBCIEMp CitXSVRIIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLCAgLS0gMXN0ICsgaXRlciwgMXN0IHsyfSwg QQorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydDJ10pLAor ICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydDJ10pLCAgLS0g MXN0IChCQyl7Mn0gZG9uZQorICAgICAgICAoNiwgIEFSUkFZWydBJ10pLCAgLS0gMXN0ICsgaXRl ciwgMm5kIHsyfSwgQQorICAgICAgICAoNywgIEFSUkFZWydCJ10pLAorICAgICAgICAoOCwgIEFS UkFZWydDJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMTAsIEFSUkFZ WydDJ10pLCAgLS0gMm5kIChCQyl7Mn0gZG9uZSwgMXN0IHsyfSBkb25lLCAxc3QgKyBpdGVyIGRv bmUKKyAgICAgICAgKDExLCBBUlJBWVsnQSddKSwgIC0tIDJuZCArIGl0ZXIsIDFzdCB7Mn0sIEEK KyAgICAgICAgKDEyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDEzLCBBUlJBWVsnQyddKSwKKyAg ICAgICAgKDE0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDE1LCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDE2LCBBUlJBWVsnQSddKSwgIC0tIDJuZCArIGl0ZXIsIDJuZCB7Mn0sIEEKKyAgICAgICAg KDE3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDE4LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDE5 LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIwLCBBUlJBWVsnQyddKSwgIC0tIDJuZCArIGl0ZXIg ZG9uZQorICAgICAgICAoMjEsIEFSUkFZWydYJ10pICAgLS0gbm8gbWF0Y2gsICsgZW5kcworICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSAo QiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5Z KGZsYWdzKQorKTsKKwogLS0gTXVsdGlwbGUgdW5ib3VuZGVkOiBBKyBCKyAoZmlyc3QgZWxlbWVu dCB1bmJvdW5kZWQgZW5hYmxlcyBhYnNvcnB0aW9uKQogV0lUSCB0ZXN0X211bHRpX3VuYm91bmRl ZCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0x NTUpCgo= --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0010-Rename-rpr_explain-test-views-to-descriptive-names.txt" Content-Disposition: attachment; filename="nocfbot-0010-Rename-rpr_explain-test-views-to-descriptive-names.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr88ug9 RnJvbSBhYWZmNDJiMGVhYzU0NjU0ZDljZmQ0MmFlNGQ1ZGI0YzExMjk3NjRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTYXQsIDQgQXByIDIwMjYgMjI6MDA6NTAgKzA5MDAKU3ViamVjdDogW1BBVENIXSBSZW5hbWUg cnByX2V4cGxhaW4gdGVzdCB2aWV3cyBmcm9tIHNlcXVlbnRpYWwgbnVtYmVycyB0bwogZGVzY3Jp cHRpdmUgbmFtZXMKClJlcGxhY2UgcnByX2V2MDEuLnJwcl9ldjg5IHdpdGggc2VjdGlvbi1iYXNl ZCBuYW1lcyBsaWtlCnJwcl9ldl9jdHhfYWJzb3JiX2dyb3VwLCBycHJfZXZfYWx0X25lc3RlZF9z dGFydCwgZXRjLgpUaGlzIGF2b2lkcyBudW1iZXJpbmcgY29uZmxpY3RzIHdoZW4gaW5zZXJ0aW5n IG5ldyB0ZXN0cy4KLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91 dCB8IDM3OCArKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJf ZXhwbGFpbi5zcWwgICAgICB8IDM3MiArKysrKysrKysrLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMzc1IGluc2VydGlvbnMoKyksIDM3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IDU2MGYyMWY0NGMyLi5mNjZjYWY4OTA4 ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAgLTExMSw3 ICsxMTEsNyBAQCBWQUxVRVMKIC0tIEJhc2ljIE5GQSBTdGF0aXN0aWNzIFRlc3RzCiAtLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tIFNpbXBsZSBwYXR0ZXJuIC0gc2hvdWxkIHNob3cgYmFzaWMgc3RhdGlzdGljcwotQ1JFQVRF IFZJRVcgcnByX2V2MDEgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19zaW1wbGUgQVMKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90ZXN0CiBXSU5ET1cgdyBBUyAoCkBA IC0xMjAsNyArMTIwLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQikKICAgICBE RUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InCiApOwotU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwMScpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX3NpbXBsZScp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5lICAg ICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhIGIpIApAQCAtMTUwLDcgKzE1 MCw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIFBhdHRlcm4gd2l0aCBubyBtYXRj aGVzIC0gMCBtYXRjaGVkCi1DUkVBVEUgVklFVyBycHJfZXYwMiBBUworQ1JFQVRFIFZJRVcgcnBy X2V2X2Jhc2ljX25vbWF0Y2ggQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25m YV90ZXN0CiBXSU5ET1cgdyBBUyAoCkBAIC0xNTksNyArMTU5LDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKFggWSBaKQogICAgIERFRklORSBYIEFTIGNhdCA9ICdYJywgWSBBUyBjYXQg PSAnWScsIFogQVMgY2F0ID0gJ1onCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX25vbWF0Y2gnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgIGxpbmUgICAgICAgIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKHggeSB6KSAKQEAgLTE4OCw3ICsxODgsNyBAQCBX SU5ET1cgdyBBUyAoCiAoOCByb3dzKQogCiAtLSBQYXR0ZXJuIG1hdGNoaW5nIGV2ZXJ5IHJvdyAt IGhpZ2ggbWF0Y2ggY291bnQKLUNSRUFURSBWSUVXIHJwcl9ldjAzIEFTCitDUkVBVEUgVklFVyBy cHJfZXZfYmFzaWNfYWxscm93cyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBycHJf bmZhX3Rlc3QKIFdJTkRPVyB3IEFTICgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoUikKICAgICBERUZJTkUgUiBBUyBUUlVFCiApOwotU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwMycpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX2FsbHJv d3MnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICBsaW5l ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChyKSAKQEAgLTIyNyw3ICsyMjcs NyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIFJlZ3Jlc3Npb24gdGVzdDogU3BhY2UgYmVmb3JlIHBh cmVudGhlc2lzIGluIHBhdHRlcm4gZGVwYXJzZQogLS0gVmVyaWZpZXMgdGhhdCAiQSAoQiB8IEMp IiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiYSAoYiB8IGMpIiB3aXRoIHNwYWNlCi1DUkVBVEUgVklF VyBycHJfZXYwNCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX2RlcGFyc2Vfc3BhY2UgQVMK IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMzUsNyArMjM1LDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEEgKEIgfCBDKSkKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAl IDMgPSAyLCBDIEFTIHYgJSAzID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MDQnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19kZXBhcnNlX3NwYWNlJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgIGxpbmUgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGEgKGIgfCBjKSkgCkBA IC0yNjYsNyArMjY2LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gUmVncmVzc2lvbiB0ZXN0OiBTZXF1 ZW50aWFsIGFsdGVybmF0aW9ucyBhdCBzYW1lIGRlcHRoCiAtLSBWZXJpZmllcyB0aGF0ICIoKEIg fCBDKSAoRCB8IEUpKSIgY29ycmVjdGx5IG91dHB1dHMgYXMgIihiIHwgYykgKGQgfCBlKSIKIC0t IFByZXZpb3VzbHkgZmFpbGVkIGR1ZSB0byBtaXNzaW5nIHBhcmVudGhlc2VzIG9uIEFMVCBkZXB0 aCBkZWNyZWFzZQotQ1JFQVRFIFZJRVcgcnByX2V2MDUgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9i YXNpY19kZXBhcnNlX3NlcWFsdCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI3NCw3ICsyNzQs NyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSAoKEIgfCBDKSAoRCB8IEUpKSopCiAg ICAgREVGSU5FIEEgQVMgdiAlIDUgPSAxLCBCIEFTIHYgJSA1ID0gMiwgQyBBUyB2ICUgNSA9IDMs IEQgQVMgdiAlIDUgPSA0LCBFIEFTIHYgJSA1ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MDUnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19kZXBhcnNlX3NlcWFs dCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAg ICAgIGxpbmUgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAgUEFUVEVSTiAoYSAoKGIgfCBjKSAoZCB8IGUpKSopIApAQCAtMzA1LDcgKzMwNSw3 IEBAIFdJTkRPVyB3IEFTICgKIC0tIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMgKHBlYWssIHRvdGFs LCBtZXJnZWQpCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tIFNpbXBsZSBxdWFudGlmaWVyIHBhdHRlcm4gLSBBKyB3aXRo IHNob3J0IG1hdGNoZXMgKG5vIG1lcmdpbmcpCi1DUkVBVEUgVklFVyBycHJfZXYwNiBBUworQ1JF QVRFIFZJRVcgcnByX2V2X3N0YXRlX3NpbXBsZV9xdWFudCBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgK QEAgLTMxNCw3ICszMTQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAg REVGSU5FIEEgQVMgdiAlIDIgPSAxCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwNicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX3NpbXBsZV9xdWFudCcpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgIGxpbmUgICAgICAgCiAtLS0t LS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSspIApAQCAtMzQzLDcgKzM0Myw3IEBAIFdJTkRP VyB3IEFTICgKICg4IHJvd3MpCiAKIC0tIEFsdGVybmF0aW9uIHBhdHRlcm4gLSBtdWx0aXBsZSBz dGF0ZSBicmFuY2hlcwotQ1JFQVRFIFZJRVcgcnByX2V2MDcgQVMKK0NSRUFURSBWSUVXIHJwcl9l dl9zdGF0ZV9hbHQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90ZXN0 CiBXSU5ET1cgdyBBUyAoCkBAIC0zNTQsNyArMzU0LDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAg ICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAogICAgICAg ICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjA3JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICAgICAgbGluZSAg ICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFU VEVSTiAoKGEgfCBiIHwgYykgKGQgfCBlKSkgCkBAIC0zODYsNyArMzg2LDcgQEAgV0lORE9XIHcg QVMgKAogKDkgcm93cykKIAogLS0gQ29tcGxleCBwYXR0ZXJuIHdpdGggaGlnaCBzdGF0ZSBjb3Vu dAotQ1JFQVRFIFZJRVcgcnByX2V2MDggQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9jb21w bGV4IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTM5OCw3ICszOTgsNyBAQCBXSU5ET1cgdyBB UyAoCiAgICAgICAgIEIgQVMgdiAlIDMgPSAyLAogICAgICAgICBDIEFTIHYgJSAzID0gMAogKTsK LVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2MDgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9zdGF0ZV9jb21wbGV4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OwogICAgICAgICAgbGluZSAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQ QVRURVJOIChhKyBiKiBjKykgCkBAIC00MzEsNyArNDMxLDcgQEAgV0lORE9XIHcgQVMgKAogKDkg cm93cykKIAogLS0gR3JvdXBlZCBwYXR0ZXJuIHdpdGggcXVhbnRpZmllciAtIHN0YXRlIGNvdW50 IHdpdGggZ3JvdXBpbmcKLUNSRUFURSBWSUVXIHJwcl9ldjA5IEFTCitDUkVBVEUgVklFVyBycHJf ZXZfc3RhdGVfZ3JvdXBfcXVhbnQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC00NDAsNyArNDQw LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBIEIpKykKICAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwOScpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2dyb3VwX3F1YW50JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICBsaW5lICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIGIpKykgCkBAIC00NzEs NyArNDcxLDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBTdGF0ZSBleHBsb3Npb24gcGF0dGVybiAt IG1hbnkgYWx0ZXJuYXRpb25zCiAtLSBQYXR0ZXJuIChBfEIpKEF8QikoQXxCKShBfEIpIGNhbiBj cmVhdGUgbWFueSBwYXJhbGxlbCBzdGF0ZXMKLUNSRUFURSBWSUVXIHJwcl9ldjEwIEFTCitDUkVB VEUgVklFVyBycHJfZXZfc3RhdGVfZXhwbG9zaW9uIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAg LTQ4MCw3ICs0ODAsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8 IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpKQogICAg IERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjEwJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfZXhwbG9z aW9uJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYikg KGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSkg CkBAIC01MTEsNyArNTExLDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBDb25zZWN1dGl2ZSBBTFQg bWVyZ2UgZm9sbG93ZWQgYnkgZGlmZmVyZW50IEFMVAogLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2 ZUFsdHMgZmx1c2ggb24gQUxUIGNoYW5nZTogKEF8Qil7Mn0gKEN8RCkKLUNSRUFURSBWSUVXIHJw cl9ldjExIEFTCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X21lcmdlX2FsdCBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK IFdJTkRPVyB3IEFTICgKQEAgLTUyMCw3ICs1MjAsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFU VEVSTiAoKEEgfCBCKSAoQSB8IEIpIChDIHwgRCkpCiAgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAw LCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXYxMScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0 YXRlX2FsdF9tZXJnZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSAo YyB8IGQpKSAKQEAgLTU1MSw3ICs1NTEsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIENvbnNlY3V0 aXZlIEFMVCBtZXJnZSBmb2xsb3dlZCBieSBub24tQUxUIGVsZW1lbnQKIC0tIFRlc3RzIG1lcmdl Q29uc2VjdXRpdmVBbHRzIGZsdXNoIG9uIG5vbi1BTFQ6IChBfEIpezJ9IGMKLUNSRUFURSBWSUVX IHJwcl9ldjEyIEFTCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X21lcmdlX25vbmFsdCBB UwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFT IHModikKIFdJTkRPVyB3IEFTICgKQEAgLTU2MCw3ICs1NjAsNyBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIEMpCiAgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAw LCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjEyJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X21lcmdlX25v bmFsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAg ICAgICAgbGluZSAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAgUEFUVEVSTiAoKGEgfCBiKSAoYSB8IGIpIGMpIApAQCAtNTkwLDcgKzU5MCw3IEBAIFdJ TkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEFMVCBwcmVmaXgvc3VmZml4IGFic29yYmVkIGlu dG8gR1JPVVA6IChBfEIpIChBfEIpKyAoQXxCKSAtPiAoQXxCKXszLH0KLUNSRUFURSBWSUVXIHJw cl9ldjEzIEFTCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X2Fic29yYl9ncm91cCBBUwog U0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHMo dikKIFdJTkRPVyB3IEFTICgKQEAgLTU5OSw3ICs1OTksNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpKyAoQSB8IEIpKQogICAgIERFRklORSBBIEFTIHYgJSAy ID0gMCwgQiBBUyB2ICUgMiA9IDEKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjEzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X2Fic29yYl9ncm91cCcpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgICAgICAgbGlu ZSAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICBQQVRURVJOICgoYSB8IGIpIChhIHwgYikrIChhIHwgYikpIApAQCAtNjI5LDcgKzYy OSw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEhpZ2ggc3RhdGUgY291bnQgLSBh bHRlcm5hdGlvbiB3aXRoIHBsdXMgcXVhbnRpZmllcgotQ1JFQVRFIFZJRVcgcnByX2V2MTQgQVMK K0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfcGx1cyBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAo CkBAIC02MzgsNyArNjM4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQiB8 IEMpKyBEKQogICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMg diAlIDQgPSAzLCBEIEFTIHYgJSA0ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MTQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfcGx1cycpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgIGxpbmUgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKGEgfCBi IHwgYykrIGQpIApAQCAtNjY5LDcgKzY2OSw3IEBAIFdJTkRPVyB3IEFTICgKIAogLS0gRWFybHkg dGVybWluYXRpb246IGZpcnN0IEFMVCBicmFuY2ggKEEpIHJlYWNoZXMgRklOIGltbWVkaWF0ZWx5 LAogLS0gcHJ1bmluZyBzZWNvbmQgYnJhbmNoIChBIEIrKSBiZWZvcmUgaXQgY2FuIGFjY3VtdWxh dGUgQiByZXBldGl0aW9ucy4KLUNSRUFURSBWSUVXIHJwcl9ldjE1IEFTCitDUkVBVEUgVklFVyBy cHJfZXZfc3RhdGVfYWx0X3BydW5lIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTY3OCw3ICs2 NzgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgfCBBIEIpKykKICAgICBERUZJ TkUgQSBBUyB2ID0gMSwgQiBBUyB2ID4gMQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MTUnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfcHJ1bmUnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICAgbGluZSAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOICgoYSB8IGEgYikrKSAK QEAgLTcwNyw3ICs3MDcsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOCByb3dzKQogCiAtLSBOZXN0ZWQg cXVhbnRpZmllcnMgY2F1c2luZyBzdGF0ZSBncm93dGgKLUNSRUFURSBWSUVXIHJwcl9ldjE2IEFT CitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfbmVzdGVkX3F1YW50IEFTCiBTRUxFQ1QgY291bnQo KikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCiBXSU5ET1cg dyBBUyAoCkBAIC03MTYsNyArNzE2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKCgo QSB8IEIpKykrKQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIKICk7 Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldjE2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfc3RhdGVfbmVzdGVkX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgICAgICBsaW5lICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICBQQVRURVJOICgoKGEgfCBiKSspKykgCkBAIC03NDksNyArNzQ5LDcgQEAgV0lO RE9XIHcgQVMgKAogLS0gQ29udGV4dCBTdGF0aXN0aWNzIFRlc3RzIChwZWFrLCB0b3RhbCwgcHJ1 bmVkICsgYWJzb3JiZWQvc2tpcHBlZCkKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gQ29udGV4dCBhYnNvcnB0aW9uIHdp dGggdW5ib3VuZGVkIHF1YW50aWZpZXIgYXQgc3RhcnQKLUNSRUFURSBWSUVXIHJwcl9ldjE3IEFT CitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl91bmJvdW5kZWQgQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cg dyBBUyAoCkBAIC03NTgsNyArNzU4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEr IEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKICk7Ci1TRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l djE3JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4 X2Fic29yYl91bmJvdW5kZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJO IChhKyBiKSAKQEAgLTc4OCw3ICs3ODgsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOSByb3dzKQogCiAt LSBObyBhYnNvcnB0aW9uIC0gYm91bmRlZCBxdWFudGlmaWVyCi1DUkVBVEUgVklFVyBycHJfZXYx OCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9ub19hYnNvcmIgQVMKIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBB UyAoCkBAIC03OTcsNyArNzk3LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEF7Miw0 fSBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXYxOCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0 eF9ub19hYnNvcmInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAg ICAgICAgICBsaW5lICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRF Uk4gKGF7Miw0fSBiKSAKQEAgLTgyNyw3ICs4MjcsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOSByb3dz KQogCiAtLSBDb250ZXh0cyBza2lwcGVkIGJ5IFNLSVAgUEFTVCBMQVNUIFJPVwotQ1JFQVRFIFZJ RVcgcnByX2V2MTkgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfc2tpcCBBUwogU0VMRUNUIGNv dW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5E T1cgdyBBUyAoCkBAIC04MzYsNyArODM2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEEgQiBDKQogICAgIERFRklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEwID0gMiwgQyBB UyB2ICUgMTAgPSAzCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxOScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2N0eF9za2lwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOwogICAgICAgICBsaW5lICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgICBQQVRURVJOIChhIGIgYykgCkBAIC04NjYsNyArODY2LDcgQEAgV0lORE9XIHcgQVMgKAog KDkgcm93cykKIAogLS0gSGlnaCBjb250ZXh0IGFic29ycHRpb24gLSB1bmJvdW5kZWQgZ3JvdXAK LUNSRUFURSBWSUVXIHJwcl9ldjIwIEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9n cm91cCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC04NzUsNyArODc1LDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKChBIEIpKyBDKQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwg QiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZ3JvdXAnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICBsaW5lICAg ICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIGIpKyBjKSAK QEAgLTkwNyw3ICs5MDcsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBGaXhlZC1sZW5ndGggZ3JvdXAg YWJzb3JwdGlvbjogKEEgQiBCKSsgQwogLS0gQiBCIG1lcmdlZCB0byBCezJ9OyBhYnNvcmJhYmxl IHdpdGggZml4ZWQtbGVuZ3RoIGNoZWNrCiAtLSBzdGVwX3NpemU9MyAoQSArIEIgKyBCKTsgdiAl IDcgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zIHBlciBtYXRjaAotQ1JFQVRFIFZJRVcgcnByX2V2 MjBiIEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9maXhlZHZhciBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFTIHModikKIFdJ TkRPVyB3IEFTICgKQEAgLTkxNiw3ICs5MTYsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVS TiAoKEEgQiBCKSsgQykKICAgICBERUZJTkUgQSBBUyB2ICUgNyBJTiAoMSwgNCksIEIgQVMgdiAl IDcgSU4gKDIsIDMsIDUsIDYpLCBDIEFTIHYgJSA3ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjBiJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9maXhl ZHZhcicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAg ICBsaW5lICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4g KChhIGIgYikrIGMpIApAQCAtOTQ3LDcgKzk0Nyw3IEBAIFdJTkRPVyB3IEFTICgKIAogLS0gTmVz dGVkIGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoQiBDKXsyfSBEKSsgRQogLS0g c3RlcF9zaXplID0gMSArICgxKzEpKjIgKyAxID0gNjsgdiAlIDEzIGN5Y2xlIGdpdmVzIDIgaXRl cmF0aW9ucyArIEUKLUNSRUFURSBWSUVXIHJwcl9ldjIwYyBBUworQ1JFQVRFIFZJRVcgcnByX2V2 X2N0eF9hYnNvcmJfbmVzdGVkIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2NSkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtOTU4LDcgKzk1OCw3 IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgICAgQyBBUyB2ICUgMTMgSU4gKDMsIDUsIDksIDEx KSwgRCBBUyB2ICUgMTMgSU4gKDYsIDEyKSwKICAgICAgICAgICAgRSBBUyB2ICUgMTMgPSAwCiAp OwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXYyMGMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9jdHhfYWJzb3JiX25lc3RlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKGEgKGIgYyl7Mn0gZCkrIGUpIApAQCAt OTkxLDcgKzk5MSw3IEBAIFdJTkRPVyB3IEFTICgKIAogLS0gRG91Ymx5IG5lc3RlZCBmaXhlZC1s ZW5ndGggZ3JvdXAgYWJzb3JwdGlvbjogKEEgKChCIEN7M30pezJ9IEQpezJ9IEUpKyBGCiAtLSBz dGVwX3NpemUgPSAxICsgKCgxKzMpKjIrMSkqMiArIDEgPSAyMDsgdiAlIDQxIGN5Y2xlIGdpdmVz IDIgaXRlcmF0aW9ucyArIEYKLUNSRUFURSBWSUVXIHJwcl9ldjIwZCBBUworQ1JFQVRFIFZJRVcg cnByX2V2X2N0eF9hYnNvcmJfZGVlcCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEwMDYsNyAr MTAwNiw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIwLCA0 MCksCiAgICAgICAgICAgIEYgQVMgdiAlIDQxID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjBkJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9kZWVwJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICAgICAg ICAgIGxpbmUgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKGEgKChiIGMgYyBjKXsyfSBkKXsyfSBlKSsg ZikgCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSAzLWxldmVsIEVORCBj aGFpbiBhYnNvcnB0aW9uOiAoKEEgKEIgQyl7Mn0pezJ9KSsKIC0tIHN0ZXBfc2l6ZSA9ICgxICsg KDErMSkqMikgKiAyID0gMTA7IHYgJSAyMSBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMKIC0tIEVO RCBjaGFpbjogRU5EKEJDezJ9KSAtPiBFTkQoQS4uezJ9KSAtPiBFTkQoKywgQUJTT1JCQUJMRSkK LUNSRUFURSBWSUVXIHJwcl9ldjIwZSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJf ZW5kY2hhaW4gQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDQyKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgICAgICAgIEIgQVMgdiAlIDIxIElOICgyLCA0LCA3LCA5LCAxMiwgMTQs IDE3LCAxOSksCiAgICAgICAgICAgIEMgQVMgdiAlIDIxIElOICgzLCA1LCA4LCAxMCwgMTMsIDE1 LCAxOCwgMjApCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXYyMGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2VuZGNoYWluJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAg CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKCgoYSAoYiBj KXsyfSl7Mn0pKykgCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBNYXRj aCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBGaXhlZCBsZW5ndGggbWF0Y2hl cyAtIGFsbCBzYW1lIGxlbmd0aAotQ1JFQVRFIFZJRVcgcnByX2V2MjEgQVMKK0NSRUFURSBWSUVX IHJwcl9ldl9tbGVuX2ZpeGVkIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIHJwcl9u ZmFfdGVzdAogV0lORE9XIHcgQVMgKApAQCAtMTEwMSw3ICsxMTAxLDcgQEAgV0lORE9XIHcgQVMg KAogICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0Mn LAogICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKICk7Ci1TRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjIxJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxlbl9maXhl ZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICBs aW5lICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhIGIg YyBkIGUpIApAQCAtMTEzMyw3ICsxMTMzLDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAog LS0gVmFyaWFibGUgbGVuZ3RoIG1hdGNoZXMgLSBtaW4vbWF4L2F2ZyBkaWZmZXIKLUNSRUFURSBW SUVXIHJwcl9ldjIyIEFTCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl92YXJpYWJsZSBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAg PSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXYyMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X21sZW5fdmFyaWFibGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQ QVRURVJOIChhKyBiKSAKQEAgLTExNzIsNyArMTE3Miw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJv d3MpCiAKIC0tIFZlcnkgbG9uZyBtYXRjaGVzCi1DUkVBVEUgVklFVyBycHJfZXYyMyBBUworQ1JF QVRFIFZJRVcgcnByX2V2X21sZW5fbG9uZyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xMTgx LDcgKzExODEsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAgICBERUZJ TkUgQSBBUyB2IDw9IDE5NSwgQiBBUyB2ID4gMTk1CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMycpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5fbG9uZycpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5lICAgICAgICAKIC0t LS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIpIApAQCAtMTIxMSw3ICsxMjExLDcg QEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gVW5pZm9ybSBtYXRjaCBsZW5ndGggd2l0 aCBtaXNtYXRjaGVzIGZyb20gZ2FwIHJvd3MgKHYlMjAgPSAxMS4uMTUpCi1DUkVBVEUgVklFVyBy cHJfZXYyNCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X21sZW5fd2l0aF9taXNtYXRjaCBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC0xMjIyLDcgKzEyMjIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg ICAgIEEgQVMgKHYgJSAyMCA8PiAwKSBBTkQgKHYgJSAyMCA8PSAxMCBPUiB2ICUgMjAgPiAxNSks CiAgICAgICAgIEIgQVMgdiAlIDIwID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX3dpdGhfbWlzbWF0Y2gnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAg CiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiKSAKQEAgLTEyNTgsNyArMTI1 OCw3IEBAIFdJTkRPVyB3IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gUGF0dGVybiB3aXRoIGNvbXBsZXRlIG1h dGNoIGV2ZXJ5IGN5Y2xlOiAwIG1pc21hdGNoZWQKIC0tIEEoMSwyLDMpIEIoNCw1KSBDKDYpIHJl cGVhdHMgcGVyZmVjdGx5OyBYIHJvd3MgYXJlIHBydW5lZCwgbm90IG1pc21hdGNoZWQKLUNSRUFU RSBWSUVXIHJwcl9ldjI1IEFTCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9ub19taXNtYXRjaCBB UwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSAoCiAgICAgU0VMRUNUIHYsCkBAIC0xMjc0 LDcgKzEyNzQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQisgQykKICAgICBE RUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJwogKTsK LVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2MjUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9tbGVuX25vX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOwogICAgICAgICAgbGluZSAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg UEFUVEVSTiAoYSsgYisgYykgCkBAIC0xMzExLDcgKzEzMTEsNyBAQCBXSU5ET1cgdyBBUyAoCiAo OSByb3dzKQogCiAtLSBMb25nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0IGZhaWwKLUNSRUFURSBWSUVX IHJwcl9ldjI2IEFTCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9sb25nX3BhcnRpYWwgQVMKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gKAogICAgIFNFTEVDVCBpIEFTIHYsCkBAIC0xMzMy LDcgKzEzMzIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQisgQykKICAgICBE RUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJwogKTsK LVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2MjYnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9tbGVuX2xvbmdfcGFydGlhbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKICAgICAgICAgIGxpbmUgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKGErIGIrIGMpIApAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgV0lORE9XIHcgQVMgKAog LS0gSlNPTiBGb3JtYXQgVGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gSlNPTiBmb3JtYXQgb3V0cHV0IHdpdGgg YWxsIHN0YXRpc3RpY3MKLUNSRUFURSBWSUVXIHJwcl9ldjI3IEFTCitDUkVBVEUgVklFVyBycHJf ZXZfanNvbl9iYXNpYyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEzODYsNyArMTM4Niw3IEBA IFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKykKICAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyNycpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2pzb25fYmFzaWMnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgIGxpbmUgICAgICAgIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIrKSAKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIFdJ TkRPVyB3IEFTICgKICgxIHJvdykKIAogLS0gSlNPTiBmb3JtYXQgd2l0aCBtYXRjaCBsZW5ndGgg c3RhdGlzdGljcwotQ1JFQVRFIFZJRVcgcnByX2V2MjggQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9q c29uX21hdGNobGVuIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTE0NjMsNyArMTQ2Myw3IEBA IFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAgIERFRklORSBBIEFTIHYgJSAx MCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjI4JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfanNvbl9tYXRjaGxlbicpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5lICAgICAgICAKIC0tLS0t LS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIpIApAQCAtMTUzNSw3ICsxNTM1LDcgQEAg V0lORE9XIHcgQVMgKAogCiAtLSBKU09OIGZvcm1hdCB3aXRoIG1pc21hdGNoIHN0YXRpc3RpY3MK IC0tIFBhdHRlcm4gQSBCIEMgZXhwZWN0cyAxLDIsMyBidXQgZ2V0cyAxLDIsNCB0d2ljZSBjYXVz aW5nIG1pc21hdGNoZXMKLUNSRUFURSBWSUVXIHJwcl9ldjI5IEFTCitDUkVBVEUgVklFVyBycHJf ZXZfanNvbl9taXNtYXRjaCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSAoVkFMVUVT ICgxKSwoMiksKDQpLCAoMSksKDIpLCg0KSwgKDEpLCgyKSwoMykpIEFTIHQodikKIFdJTkRPVyB3 IEFTICgKQEAgLTE1NDQsNyArMTU0NCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChB IEIgQykKICAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBBUyB2ID0gMwogKTsK LVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2MjknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9qc29uX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OwogICAgICAgICBsaW5lICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJO IChhIGIgYykgCkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIEpTT04g Zm9ybWF0IHdpdGggc2tpcHBlZCBjb250ZXh0IHN0YXRpc3RpY3MKIC0tIEFsdGVybmF0aW9uIHBh dHRlcm4gd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgY2F1c2VzIG1hbnkgY29udGV4dHMgdG8gYmUg c2tpcHBlZAotQ1JFQVRFIFZJRVcgcnByX2V2MzAgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9qc29u X3NraXAgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTYyNCw3ICsxNjI0LDcgQEAgV0lORE9X IHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEg fCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEs IEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYzMCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2pzb25fc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICBQQVRURVJOICgoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwg YikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikpIApAQCAtMTY5OCw3ICsxNjk4LDcgQEAgV0lORE9X IHcgQVMgKAogLS0gWE1MIEZvcm1hdCBUZXN0cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBYTUwgZm9ybWF0IG91dHB1 dAotQ1JFQVRFIFZJRVcgcnByX2V2MzEgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl94bWxfYmFzaWMg QVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBB UyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xNzA3LDcgKzE3MDcsNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoQSBCKQogICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUg MiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldjMxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfeG1sX2Jhc2ljJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgIGxpbmUgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRF Uk4gKGEgYikgCkBAIC0xNzc4LDcgKzE3NzgsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBNdWx0aXBs ZSBQYXJ0aXRpb25zIFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIFN0YXRpc3RpY3MgYWNyb3NzIG11bHRpcGxl IHBhcnRpdGlvbnMKLUNSRUFURSBWSUVXIHJwcl9ldjMyIEFTCitDUkVBVEUgVklFVyBycHJfZXZf cGFydF9tdWx0aSBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSAoCiAgICAgU0VMRUNU IHAsIHYKQEAgLTE3OTIsNyArMTc5Miw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChB KyBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXYzMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3Bh cnRfbXVsdGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAg ICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiKSAK QEAgLTE4MzIsNyArMTgzMiw3IEBAIFdJTkRPVyB3IEFTICgKICgxNCByb3dzKQogCiAtLSBEaWZm ZXJlbnQgcGF0dGVybiBiZWhhdmlvciBwZXIgcGFydGl0aW9uCi1DUkVBVEUgVklFVyBycHJfZXYz MyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3BhcnRfZGlmZiBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSAoCiAgICAgU0VMRUNUCkBAIC0xODQ3LDcgKzE4NDcsNyBAQCBXSU5ET1cgdyBB UyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2YWwgPCA1LCBCIEFTIHZh bCA+PSA1CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXYzMycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X3BhcnRfZGlmZicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKICAgICAgICBsaW5lICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBB VFRFUk4gKGErIGIpIApAQCAtMTg4OSw3ICsxODg5LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gRWRn ZSBDYXNlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLSBFbXB0eSByZXN1bHQgc2V0Ci1DUkVBVEUgVklFVyBycHJfZXYz NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHkgQVMKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDApIEFTIHModikKIFdJTkRPVyB3IEFTICgK QEAgLTE4OTgsNyArMTg5OCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBIEIpCiAg ICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjM0JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eScpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5lICAgICAgIAog LS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhIGIpIApAQCAtMTkyMyw3ICsxOTIzLDcg QEAgV0lORE9XIHcgQVMgKAogKDQgcm93cykKIAogLS0gU2luZ2xlIHJvdwotQ1JFQVRFIFZJRVcg cnByX2V2MzUgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX3NpbmdsZV9yb3cgQVMKIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIEFTIHModikKIFdJ TkRPVyB3IEFTICgKQEAgLTE5MzIsNyArMTkzMiw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRU RVJOIChBKQogICAgIERFRklORSBBIEFTIFRSVUUKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjM1JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9zaW5nbGVfcm93JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgbGluZSAgICAgIAog LS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSkgCkBAIC0xOTYxLDcgKzE5NjEsNyBAQCBX SU5ET1cgdyBBUyAoCiAoOCByb3dzKQogCiAtLSBQYXR0ZXJuIGxvbmdlciB0aGFuIGRhdGEKLUNS RUFURSBWSUVXIHJwcl9ldjM2IEFTCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9wYXR0ZXJuX2xv bmdlciBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NSkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTk3Miw3ICsxOTcyLDcgQEAgV0lORE9XIHcg QVMgKAogICAgICAgICBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAzLCBEIEFTIHYg PSA0LCBFIEFTIHYgPSA1LAogICAgICAgICBGIEFTIHYgPSA2LCBHIEFTIHYgPSA3LCBIIEFTIHYg PSA4LCBJIEFTIHYgPSA5LCBKIEFTIHYgPSAxMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MzYnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX3BhdHRlcm5fbG9uZ2VyJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICAgICAg bGluZSAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAgUEFUVEVSTiAoYSBiIGMgZCBlIGYgZyBoIGkgaikgCkBAIC0yMDAzLDcgKzIwMDMsNyBAQCBX SU5ET1cgdyBBUyAoCiAoOCByb3dzKQogCiAtLSBBbGwgcm93cyBtYXRjaCBhcyBzaW5nbGUgbWF0 Y2gKLUNSRUFURSBWSUVXIHJwcl9ldjM3IEFTCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9zaW5n bGVfbWF0Y2ggQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMgVFJVRQogKTsKLVNF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2MzcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9l ZGdlX3NpbmdsZV9tYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKICAgICAgIGxpbmUgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSsp IApAQCAtMjA0NSw3ICsyMDQ1LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gQ29tcGxleCBQYXR0ZXJu IFRlc3RzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tIE5lc3RlZCBncm91cHMKLUNSRUFURSBWSUVXIHJwcl9ldjM4IEFT CitDUkVBVEUgVklFVyBycHJfZXZfY3B4X25lc3RlZCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIg dwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAg LTIwNTQsNyArMjA1NCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoKEEgQikgQykr KQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMg PSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXYzOCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2NweF9uZXN0ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CiAgICAgICAgICAgbGluZSAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICBQQVRURVJOICgoKGEgYikgYykrKSAKQEAgLTIwODQsNyArMjA4NCw3IEBAIFdJTkRP VyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIE11bHRpcGxlIGFsdGVybmF0aW9ucwotQ1JFQVRFIFZJ RVcgcnByX2V2MzkgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9jcHhfbXVsdGlfYWx0IEFTCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIHJwcl9uZmFfdGVzdAogV0lORE9XIHcgQVMgKApAQCAt MjA5NSw3ICsyMDk1LDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBBIEFTIGNhdCA9ICdBJywg QiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAogICAgICAgICBEIEFTIGNhdCA9ICdEJywg RSBBUyBjYXQgPSAnRScKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjM5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X211bHRpX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYikg KGMgfCBkIHwgZSkpIApAQCAtMjEyNyw3ICsyMTI3LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93 cykKIAogLS0gT3B0aW9uYWwgZWxlbWVudHMKLUNSRUFURSBWSUVXIHJwcl9ldjQwIEFTCitDUkVB VEUgVklFVyBycHJfZXZfY3B4X29wdGlvbmFsIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjEz Niw3ICsyMTM2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQj8gQykKICAgICBE RUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMwogKTsK LVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2NDAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9jcHhfb3B0aW9uYWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CiAgICAgICAgIGxpbmUgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVS TiAoYSBiPyBjKSAKQEAgLTIxNjYsNyArMjE2Niw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3Mp CiAKIC0tIEJvdW5kZWQgcXVhbnRpZmllcnMKLUNSRUFURSBWSUVXIHJwcl9ldjQxIEFTCitDUkVB VEUgVklFVyBycHJfZXZfY3B4X2JvdW5kZWQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjE3 NSw3ICsyMTc1LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEF7Miw1fSBCKQogICAg IERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKICk7Ci1TRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQxJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X2JvdW5k ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICBs aW5lICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGF7Miw1 fSBiKSAKQEAgLTIyMDUsNyArMjIwNSw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0t IFN0YXIgcXVhbnRpZmllcgotQ1JFQVRFIFZJRVcgcnByX2V2NDIgQVMKK0NSRUFURSBWSUVXIHJw cl9ldl9jcHhfc3RhciBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTIyMTQsNyArMjIxNCw3IEBA IFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBIEIqIEMpCiAgICAgREVGSU5FIEEgQVMgdiAl IDEwID0gMSwgQiBBUyB2ICUgMTAgSU4gKDIsMyw0LDUsNiw3LDgpLCBDIEFTIHYgJSAxMCA9IDkK ICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldjQyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfY3B4X3N0YXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CiAgICAgICAgIGxpbmUgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVS TiAoYSBiKiBjKSAKQEAgLTIyNDcsNyArMjI0Nyw3IEBAIFdJTkRPVyB3IEFTICgKIC0tIFJlYWwt d29ybGQgUGF0dGVybiBFeGFtcGxlcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBTdG9jayBwcmljZSBwYXR0ZXJuIC0g Vi1zaGFwZSAoZG93biB0aGVuIHVwKQotQ1JFQVRFIFZJRVcgcnByX2V2NDMgQVMKK0NSRUFURSBW SUVXIHJwcl9ldl9yZWFsX3ZzaGFwZSBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBy cHJfbmZhX2NvbXBsZXgKIFdJTkRPVyB3IEFTICgKQEAgLTIyNTYsNyArMjI1Niw3IEBAIFdJTkRP VyB3IEFTICgKICAgICBQQVRURVJOIChEKyBVKykKICAgICBERUZJTkUgRCBBUyB0cmVuZCA9ICdE JywgVSBBUyB0cmVuZCA9ICdVJwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NDMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWFsX3ZzaGFwZScpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgUEFUVEVSTiAoZCsgdSspIApAQCAtMjI4Niw3ICsyMjg2LDcgQEAgV0lO RE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gU3RvY2sgcHJpY2UgcGF0dGVybiAtIHBlYWsgKHVw LCBzdGFibGUsIGRvd24pCi1DUkVBVEUgVklFVyBycHJfZXY0NCBBUworQ1JFQVRFIFZJRVcgcnBy X2V2X3JlYWxfcGVhayBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBycHJfbmZhX2Nv bXBsZXgKIFdJTkRPVyB3IEFTICgKQEAgLTIyOTUsNyArMjI5NSw3IEBAIFdJTkRPVyB3IEFTICgK ICAgICBQQVRURVJOIChVKyBTKiBEKykKICAgICBERUZJTkUgVSBBUyB0cmVuZCA9ICdVJywgUyBB UyB0cmVuZCA9ICdTJywgRCBBUyB0cmVuZCA9ICdEJwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NDQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWFsX3BlYWsnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICBsaW5lICAgICAgICAg IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKHUrIHMqIGQrKSAKQEAgLTIz MjUsNyArMjMyNSw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIENvbnNlY3V0aXZl IGluY3JlYXNpbmcgdmFsdWVzICh1c2luZyBQUkVWKQotQ1JFQVRFIFZJRVcgcnByX2V2NDUgQVMK K0NSRUFURSBWSUVXIHJwcl9ldl9yZWFsX2luY3JlYXNpbmcgQVMKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAo CkBAIC0yMzM0LDcgKzIzMzQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXszLH0p CiAgICAgREVGSU5FIEEgQVMgdiA+IFBSRVYodikgT1IgUFJFVih2KSBJUyBOVUxMCiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXY0NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3Jl YWxfaW5jcmVhc2luZycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK ICAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAo YXszLH0pIApAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gUGVyZm9ybWFu Y2Utb3JpZW50ZWQgVGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gTGFyZ2UgZGF0YXNldCB3aXRoIHNpbXBsZSBw YXR0ZXJuCi1DUkVBVEUgVklFVyBycHJfZXY0NiBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3BlcmZf bGFyZ2Vfc2ltcGxlIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMzc2LDcgKzIzNzYsNyBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSBCKQogICAgIERFRklORSBBIEFTIHYgJSAy ID0gMSwgQiBBUyB2ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQ2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcGVyZl9sYXJnZV9zaW1wbGUnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAKIC0tLS0t LS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSBiKSAKQEAgLTI0MDYsNyArMjQwNiw3IEBAIFdJ TkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIExhcmdlIGRhdGFzZXQgd2l0aCBhYnNvcnB0aW9u Ci1DUkVBVEUgVklFVyBycHJfZXY0NyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3BlcmZfbGFyZ2Vf YWJzb3JiIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMDAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUgMTAwIDw+ IDAsIEIgQVMgdiAlIDEwMCA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQ3JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcGVyZl9sYXJnZV9hYnNvcmInKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0t LS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiKSAKQEAgLTI0NDUsNyArMjQ0NSw3IEBA IFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEhpZ2ggc3RhdGUgbWVyZ2UgcmF0aW8KLUNS RUFURSBWSUVXIHJwcl9ldjQ4IEFTCitDUkVBVEUgVklFVyBycHJfZXZfcGVyZl9oaWdoX21lcmdl IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAp IEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI0NTQsNyArMjQ1NCw3IEBAIFdJTkRPVyB3IEFT ICgKICAgICBQQVRURVJOICgoQSB8IEIpKyBDKQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwg QiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY0OCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfaGlnaF9tZXJnZScpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICBsaW5lICAg ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYikr IGMpIApAQCAtMjQ4Nyw3ICsyNDg3LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gSU5JVElBTCB2cyBu byBJTklUSUFMIGNvbXBhcmlzb24KIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gV2l0aCBJTklUSUFMIGtleXdvcmQKLUNS RUFURSBWSUVXIHJwcl9ldjQ5IEFTCitDUkVBVEUgVklFVyBycHJfZXZfaW5pdGlhbF93aXRoIEFT CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMg cyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjQ5Nyw3ICsyNDk3LDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUg NSA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldjQ5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfaW5pdGlhbF93aXRoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOwogICAgICAgIGxpbmUgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg UEFUVEVSTiAoYSsgYikgCkBAIC0yNTI4LDcgKzI1MjgsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOSBy b3dzKQogCiAtLSBXaXRob3V0IElOSVRJQUwga2V5d29yZCAoc2FtZSBiZWhhdmlvciBjdXJyZW50 bHkpCi1DUkVBVEUgVklFVyBycHJfZXY1MCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2luaXRpYWxf d2l0aG91dCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI1MzcsNyArMjUzNyw3IEBAIFdJTkRP VyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2luaXRpYWxfd2l0aG91dCcpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5lICAgICAgICAKIC0tLS0tLS0tLS0t LS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIpIApAQCAtMjU3MCw3ICsyNTcwLDcgQEAgV0lORE9X IHcgQVMgKAogLS0gUXVhbnRpZmllciBWYXJpYXRpb25zCiAtLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIFBsdXMgcXVhbnRp ZmllcgotQ1JFQVRFIFZJRVcgcnByX2V2NTEgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9w bHVzIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0 MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjU3OSw3ICsyNTc5LDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFTIHYgJSA0IDw+IDAKICk7Ci1T RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldjUxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf cXVhbnRfcGx1cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAg ICAgIGxpbmUgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSspIApAQCAt MjYwOSw3ICsyNjA5LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gU3RhciBxdWFu dGlmaWVyICh6ZXJvIG9yIG1vcmUpCi1DUkVBVEUgVklFVyBycHJfZXY1MiBBUworQ1JFQVRFIFZJ RVcgcnByX2V2X3F1YW50X3N0YXIgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yNjE4LDcgKzI2 MTgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSogQikKICAgICBERUZJTkUgQSBB UyB2ICUgNCBJTiAoMSwgMiksIEIgQVMgdiAlIDQgPSAzCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1MicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X3N0YXInKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAg CiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKiBiKSAKQEAgLTI2NDgsNyArMjY0 OCw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIFF1ZXN0aW9uIG1hcmsgKHplcm8g b3Igb25lKQotQ1JFQVRFIFZJRVcgcnByX2V2NTMgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFu dF9xdWVzdGlvbiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI2NTcsNyArMjY1Nyw3IEBAIFdJ TkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBPyBCIEMpCiAgICAgREVGSU5FIEEgQVMgdiAlIDQg PSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjUzJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfcXVlc3Rpb24n KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgIGxpbmUg ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYT8gYiBjKSAKQEAg LTI2ODcsNyArMjY4Nyw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEV4YWN0IGNv dW50IHtufQotQ1JFQVRFIFZJRVcgcnByX2V2NTQgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9xdWFu dF9leGFjdCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI2OTYsNyArMjY5Niw3IEBAIFdJTkRP VyB3IEFTICgKICAgICBQQVRURVJOIChBezN9IEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4g MCwgQiBBUyB2ICUgNSA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjU0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfZXhhY3QnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgIGxpbmUgICAgICAgICAKIC0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYXszfSBiKSAKQEAgLTI3MjYsNyArMjcyNiw3IEBAIFdJ TkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIFJhbmdlIHtuLG19Ci1DUkVBVEUgVklFVyBycHJf ZXY1NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3JhbmdlIEFTCiBTRUxFQ1QgY291bnQo KikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcg QVMgKApAQCAtMjczNSw3ICsyNzM1LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEF7 Miw0fSBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwot U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXY1NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X3F1YW50X3JhbmdlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwog ICAgICAgICAgbGluZSAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRU RVJOIChhezIsNH0gYikgCkBAIC0yNzY1LDcgKzI3NjUsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOSBy b3dzKQogCiAtLSBBdCBsZWFzdCB7bix9Ci1DUkVBVEUgVklFVyBycHJfZXY1NiBBUworQ1JFQVRF IFZJRVcgcnByX2V2X3F1YW50X2F0bGVhc3QgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yNzc0 LDcgKzI3NzQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXszLH0gQikKICAgICBE RUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCiApOwotU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1NicpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X2F0bGVh c3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICBs aW5lICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhezMsfSBi KSAKQEAgLTI4MDgsNyArMjgwOCw3IEBAIFdJTkRPVyB3IEFTICgKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gVmVyaWZ5 IHN0YXRlIGNvdW50IGFjY3VyYWN5CiAtLSBQYXR0ZXJuIEErIEIgd2l0aCAyMCByb3dzIHNob3Vs ZCBzaG93IHByZWRpY3RhYmxlIHN0YXRlIGJlaGF2aW9yCi1DUkVBVEUgVklFVyBycHJfZXY1NyBB UworQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19zdGF0ZV9jb3VudCBBUwogU0VMRUNUIGNvdW50KCop IE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKIFdJTkRPVyB3IEFT ICgKQEAgLTI4MTcsNyArMjgxNyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBC KQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1 NycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlZ19z dGF0ZV9jb3VudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAg ICAgICBsaW5lICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIp IApAQCAtMjg0Nyw3ICsyODQ3LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gVmVy aWZ5IGNvbnRleHQgY291bnQgd2l0aCBrbm93biBhYnNvcnB0aW9uCi1DUkVBVEUgVklFVyBycHJf ZXY1OCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19jdHhfYWJzb3JiIEFTCiBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQogV0lORE9X IHcgQVMgKApAQCAtMjg1Niw3ICsyODU2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEErIEIgQykKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFT IHYgJSAxMCA9IDgsIEMgQVMgdiAlIDEwID0gOQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NTgnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfY3R4X2Fic29yYicpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgbGluZSAgICAgICAg IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiIGMpIApAQCAtMjg4Niw3 ICsyODg2LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gVmVyaWZ5IG1hdGNoIGxl bmd0aCB3aXRoIGZpeGVkLWxlbmd0aCBwYXR0ZXJuCi1DUkVBVEUgVklFVyBycHJfZXY1OSBBUwor Q1JFQVRFIFZJRVcgcnByX2V2X3JlZ19tYXRjaGxlbiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIg dwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAg LTI4OTUsNyArMjg5NSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBIEIgQykKICAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAog KTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2NTknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9yZWdfbWF0Y2hsZW4nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgIGxpbmUgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRF Uk4gKGEgYiBjKSAKQEAgLTI5MjgsNyArMjkyOCw3IEBAIFdJTkRPVyB3IEFTICgKIC0tIEFsdGVy bmF0aW9uIFBhdHRlcm4gVGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU2ltcGxlIGFsdGVybmF0aW9uCi1DUkVB VEUgVklFVyBycHJfZXY2MCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zaW1wbGUgQVMKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90ZXN0CiBXSU5ET1cgdyBBUyAoCkBA IC0yOTM3LDcgKzI5MzcsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgfCBCKSBD KQogICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0g J0MnCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXY2MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2FsdF9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CiAgICAgICAgICAgbGluZSAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAgUEFUVEVSTiAoKGEgfCBiKSBjKSAKQEAgLTI5NjcsNyArMjk2Nyw3IEBAIFdJTkRPVyB3 IEFTICgKICg5IHJvd3MpCiAKIC0tIE11bHRpcGxlIGl0ZW1zIGluIGFsdGVybmF0aW9uCi1DUkVB VEUgVklFVyBycHJfZXY2MSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9tdWx0aV9pdGVtIEFT CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIHJwcl9uZmFfdGVzdAogV0lORE9XIHcgQVMg KApAQCAtMjk3OCw3ICsyOTc4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBBIEFTIGNhdCA9 ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAogICAgICAgICBEIEFTIGNhdCA9 ICdEJywgRSBBUyBjYXQgPSAnRScKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjYxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X211bHRpX2l0ZW0nKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAg ICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwg YiB8IGMgfCBkKSBlKSAKQEAgLTMwMTAsNyArMzAxMCw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJv d3MpCiAKIC0tIEFsdGVybmF0aW9uIHdpdGggcXVhbnRpZmllcnMKLUNSRUFURSBWSUVXIHJwcl9l djYyIEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3dpdGhfcXVhbnQgQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cg dyBBUyAoCkBAIC0zMDE5LDcgKzMwMTksNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAo KEEgfCBCKSsgQykKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBD IEFTIHYgJSAzID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2NjInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfd2l0aF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICBsaW5lICAgICAgICAgICAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYikrIGMpIApAQCAtMzA0OSw3ICsz MDQ5LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gTXVsdGlwbGUgYWx0ZXJuYXRp dmVzICg0KykKLUNSRUFURSBWSUVXIHJwcl9ldjYzIEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0 X2ZvdXJfcGx1cyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zMDU3LDcgKzMwNTcsNyBAQCBX SU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSB8IEIgfCBDIHwgRCB8IEUpCiAgICAgREVGSU5F IEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAl IDUgPSAzLCBFIEFTIHYgJSA1ID0gNAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NjMnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZm91cl9wbHVzJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICAgICBsaW5lICAgICAgICAg ICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhIHwg YiB8IGMgfCBkIHwgZSkgCkBAIC0zMDg1LDcgKzMwODUsNyBAQCBXSU5ET1cgdyBBUyAoCiAoOCBy b3dzKQogCiAtLSBBbHRlcm5hdGlvbiBhdCBzdGFydAotQ1JFQVRFIFZJRVcgcnByX2V2NjQgQVMK K0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfYXRfc3RhcnQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBA IC0zMDkzLDcgKzMwOTMsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgfCBCKSBD IEQpCiAgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUg NCA9IDIsIEQgQVMgdiAlIDQgPSAzCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY2NCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9hdF9zdGFydCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgbGluZSAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKGEgfCBiKSBjIGQpIApAQCAt MzEyMiw3ICszMTIyLDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gTXVsdGlwbGUg c2VxdWVudGlhbCBhbHRlcm5hdGlvbnMKLUNSRUFURSBWSUVXIHJwcl9ldjY1IEFTCitDUkVBVEUg VklFVyBycHJfZXZfYWx0X3NlcXVlbnRpYWwgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMzEz MCw3ICszMTMwLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQikgQyAoRCB8 IEUpIEYpCiAgICAgREVGSU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2 ICUgNiA9IDIsIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUK ICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldjY1JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfYWx0X3NlcXVlbnRpYWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CiAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOICgoYSB8IGIpIGMgKGQgfCBlKSBmKSAK QEAgLTMxNTgsNyArMzE1OCw3IEBAIFdJTkRPVyB3IEFTICgKICg4IHJvd3MpCiAKIC0tIFF1YW50 aWZpZWQgYWx0ZXJuYXRpdmVzCi1DUkVBVEUgVklFVyBycHJfZXY2NiBBUworQ1JFQVRFIFZJRVcg cnByX2V2X2FsdF9xdWFudGlmaWVkIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMzE2Niw3ICsz MTY2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBKyB8IEIrKSBDKQogICAgIERF RklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCiApOwot U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXY2NicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2FsdF9xdWFudGlmaWVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OwogICAgICAgICAgICBsaW5lICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgICBQQVRURVJOICgoYSsgfCBiKykgYykgCkBAIC0zMTk1LDcgKzMxOTUsNyBAQCBXSU5ET1cg dyBBUyAoCiAoOSByb3dzKQogCiAtLSBBbHRlcm5hdGlvbiBhdCBlbmQKLUNSRUFURSBWSUVXIHJw cl9ldjY3IEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2F0X2VuZCBBUwogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3 IEFTICgKQEAgLTMyMDMsNyArMzIwMyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChB IEIgKEMgfCBEKSkKICAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBD IEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjY3JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X2VuZCcpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgbGluZSAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSBiIChjIHwgZCkp IApAQCAtMzIzMyw3ICszMjMzLDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBOZXN0ZWQgQUxUIGF0 IHN0YXJ0IG9mIGJyYW5jaCBpbnNpZGUgb3V0ZXIgQUxUCiAtLSBQYXR0ZXJuOiAoQSAoKEIgfCBD KSBEIHwgRSkpIC0gcHJlY2VkaW5nIFZBUiArIGlubmVyIEFMVCBhcyBmaXJzdCBicmFuY2ggZWxl bWVudAotQ1JFQVRFIFZJRVcgcnByX2V2NjggQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbmVz dGVkX3N0YXJ0IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMzI0MSw3ICszMjQxLDcgQEAgV0lO RE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgKChCIHwgQykgRCB8IEUpKQogICAgIERFRklORSBB IEFTIHYgJSA1ID0gMCwgQiBBUyB2ICUgNSA9IDEsIEMgQVMgdiAlIDUgPSAyLCBEIEFTIHYgJSA1 ID0gMywgRSBBUyB2ICUgNSA9IDQKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjY4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X25lc3RlZF9zdGFydCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICAgICAgbGluZSAgICAgICAg ICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSAo KGIgfCBjKSBkIHwgZSkpIApAQCAtMzI3MCw3ICszMjcwLDcgQEAgV0lORE9XIHcgQVMgKAogCiAt LSBOZXN0ZWQgQUxUIGF0IGVuZCBvZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAogLS0gUGF0dGVy bjogKEMgKEEgfCBCKSB8IEQpIC0gaW5uZXIgQUxUIGlzIGxhc3QgZWxlbWVudCBpbiBvdXRlciBi cmFuY2gKLUNSRUFURSBWSUVXIHJwcl9ldjY5IEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X25l c3RlZF9lbmQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDIwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zMjc4LDcgKzMyNzgsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQyAoQSB8IEIpIHwgRCkKICAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMK ICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldjY5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfYWx0X25lc3RlZF9lbmQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CiAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgICBQQVRURVJOIChjIChhIHwgYikgfCBkKSAKQEAgLTMzMDksNyArMzMwOSw3 IEBAIFdJTkRPVyB3IEFTICgKIC0tIEdyb3VwIFBhdHRlcm4gVGVzdHMKIC0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU2lt cGxlIGdyb3VwCi1DUkVBVEUgVklFVyBycHJfZXY3MCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dy cF9zaW1wbGUgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDQwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zMzE4LDcgKzMzMTgsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgQikrKQogICAgIERFRklORSBBIEFTIHYgJSAyID0g MSwgQiBBUyB2ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjcwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX3NpbXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgbGluZSAgICAgICAgIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgICBQQVRURVJOICgoYSBiKSspIApAQCAtMzM0OCw3ICszMzQ4LDcgQEAgV0lO RE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gR3JvdXAgd2l0aCBib3VuZGVkIHF1YW50aWZpZXIK LUNSRUFURSBWSUVXIHJwcl9ldjcxIEFTCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2JvdW5kZWQg QVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBB UyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zMzU3LDcgKzMzNTcsNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIg QVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY3MScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2dycF9ib3VuZGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgIGxpbmUgICAgICAgICAgIAogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKGEgYil7Miw0fSkgCkBAIC0zMzg3LDcgKzMzODcs NyBAQCBXSU5ET1cgdyBBUyAoCiAoOSByb3dzKQogCiAtLSBOZXN0ZWQgZ3JvdXBzCi1DUkVBVEUg VklFVyBycHJfZXY3MiBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9uZXN0ZWQgQVMKIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCiBX SU5ET1cgdyBBUyAoCkBAIC0zMzk2LDcgKzMzOTYsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFU VEVSTiAoKChBIEIpezJ9KSspCiAgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAy ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2NzInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9ncnBfbmVzdGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgICAgICBsaW5lICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICBQQVRURVJOICgoKGEgYil7Mn0pKykgCkBAIC0zNDI2LDcgKzM0MjYsNyBAQCBX SU5ET1cgdyBBUyAoCiAoOSByb3dzKQogCiAtLSBEZWVwIG5lc3RpbmcgKDMrIGxldmVscykKLUNS RUFURSBWSUVXIHJwcl9ldjczIEFTCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2RlZXAgQVMKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC0zNDM0LDcgKzM0MzQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoKCgoQSB8IEIpKykrKSspCiAgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFT IHYgJSAyID0gMQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2NzMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfZGVlcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoKCgoYSB8IGIpKykrKSspIApAQCAtMzQ2Myw3 ICszNDYzLDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gQm91bmRlZCBxdWFudGlm aWVyIG9uIGFsdGVybmF0aW9uCi1DUkVBVEUgVklFVyBycHJfZXY3NCBBUworQ1JFQVRFIFZJRVcg cnByX2V2X2dycF9ib3VuZGVkX2FsdCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTM0NzEsNyAr MzQ3MSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSB8IEIpezIsM30gQykKICAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgog KTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2NzQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9ncnBfYm91bmRlZF9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CiAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKChhIHwgYil7MiwzfSBjKSAKQEAgLTM1MDAsNyArMzUw MCw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIE5lc3RlZCBncm91cHMgd2l0aCBx dWFudGlmaWVycwotQ1JFQVRFIFZJRVcgcnByX2V2NzUgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9n cnBfbmVzdGVkX3F1YW50IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA2MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMzUwOCw3ICszNTA4LDcg QEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKCgoQSBCKSsgQykqKQogICAgIERFRklORSBB IEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCiApOwotU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY3 NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9u ZXN0ZWRfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAg ICAgICAgICAgIGxpbmUgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKCgoYSBiKSsgYykqKSAKQEAgLTM1MzcsNyArMzUzNyw3IEBAIFdJTkRPVyB3IEFT ICgKICg5IHJvd3MpCiAKIC0tIFBhcnRpYWwgbmVzdGVkIHF1YW50aWZpY2F0aW9uCi1DUkVBVEUg VklFVyBycHJfZXY3NiBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9wYXJ0aWFsX3F1YW50IEFT CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMg cyh2KQogV0lORE9XIHcgQVMgKApAQCAtMzU0NSw3ICszNTQ1LDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKChBIChCIEMpKykqKQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBB UyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY3NicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9wYXJ0aWFsX3F1YW50JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgICBsaW5lICAg ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOICgoYSAoYiBj KSspKikgCkBAIC0zNTc3LDcgKzM1NzcsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBXaW5kb3cgRnVu Y3Rpb24gQ29tYmluYXRpb25zCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGNvdW50KCopIHdpdGggcGF0dGVybgotQ1JF QVRFIFZJRVcgcnByX2V2NzcgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl93Zm5fY291bnQgQVMKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC0zNTg2LDcgKzM1ODYsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2NzcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl93Zm5fY291bnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJO IChhKyBiKSAKQEAgLTM2MTYsNyArMzYxNiw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAK IC0tIGZpcnN0X3ZhbHVlIHdpdGggcGF0dGVybgotQ1JFQVRFIFZJRVcgcnByX2V2NzggQVMKK0NS RUFURSBWSUVXIHJwcl9ldl93Zm5fZmlyc3RfdmFsdWUgQVMKIFNFTEVDVCBmaXJzdF92YWx1ZSh2 KSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCiBXSU5ET1cgdyBB UyAoCkBAIC0zNjI1LDcgKzM2MjUsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsg QikKICAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAogKTsKLVNFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 NzgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5f Zmlyc3RfdmFsdWUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAg ICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBi KSAKQEAgLTM2NTUsNyArMzY1NSw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIGxh c3RfdmFsdWUgd2l0aCBwYXR0ZXJuCi1DUkVBVEUgVklFVyBycHJfZXY3OSBBUworQ1JFQVRFIFZJ RVcgcnByX2V2X3dmbl9sYXN0X3ZhbHVlIEFTCiBTRUxFQ1QgbGFzdF92YWx1ZSh2KSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0z NjY0LDcgKzM2NjQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAgICBE RUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NzknKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5fbGFzdF92YWx1 ZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBsaW5l ICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIpIApAQCAtMzY5 NCw3ICszNjk0LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gTXVsdGlwbGUgd2lu ZG93IGZ1bmN0aW9ucwotQ1JFQVRFIFZJRVcgcnByX2V2ODAgQVMKK0NSRUFURSBWSUVXIHJwcl9l dl93Zm5fbXVsdGkgQVMKIFNFTEVDVAogICAgIGNvdW50KCopIE9WRVIgdywKICAgICBmaXJzdF92 YWx1ZSh2KSBPVkVSIHcsCkBAIC0zNzA2LDcgKzM3MDYsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2ODAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl93Zm5fbXVsdGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJO IChhKyBiKSAKQEAgLTM3NDIsNyArMzc0Miw3IEBAIFdJTkRPVyB3IEFTICgKIC0tIERFRklORSBF eHByZXNzaW9uIFZhcmlhdGlvbnMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gQ29tcGxleCBib29sZWFuIGV4cHJlc3Np b25zCi1DUkVBVEUgVklFVyBycHJfZXY4MSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9jb21w bGV4X2Jvb2wgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zNzUzLDcgKzM3NTMsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCiAg ICAgICAgIEIgQVMgKHYgJSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKICk7Ci1TRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjgxJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZGVmX2NvbXBsZXhf Ym9vbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICBs aW5lICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGErIGIpIApAQCAt Mzc4NSw3ICszNzg1LDcgQEAgV0lORE9XIHcgQVMgKAogKDkgcm93cykKIAogLS0gVXNpbmcgUFJF ViBmdW5jdGlvbgotQ1JFQVRFIFZJRVcgcnByX2V2ODIgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9k ZWZfcHJldiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMzApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTM3OTcsNyArMzc5Nyw3IEBAIFdJTkRP VyB3IEFTICgKICAgICAgICAgVSBBUyB2ID4gUFJFVih2KSwKICAgICAgICAgRCBBUyB2IDwgUFJF Vih2KQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2ODInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9kZWZfcHJldicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKICAgICAgICAgIGxpbmUgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKHMgdSsgZCspIApAQCAtMzgyOSw3ICszODI5LDcgQEAgV0lORE9XIHcgQVMgKAog KDggcm93cykKIAogLS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucwotQ1JFQVRFIFZJRVcgcnByX2V2 ODMgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9kZWZfbnVsbCBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSAoCiAgICAgU0VMRUNUIENBU0UgV0hFTiB2ICUgNSA9IDAgVEhFTiBOVUxMIEVM U0UgdiBFTkQgQVMgdgpAQCAtMzg0MSw3ICszODQxLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBB VFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiBJUyBOT1QgTlVMTCwgQiBBUyB2IElTIE5V TEwKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldjgzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfZGVmX251bGwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJO IChhKyBiKSAKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIFdJTkRPVyB3IEFTICgKIC0tIExhcmdlIFNj YWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIDUwMCByb3dzIC0gdmVyaWZ5 IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5Ci1DUkVBVEUgVklFVyBycHJfZXY4NCBBUworQ1JF QVRFIFZJRVcgcnByX2V2X3NjYWxlXzUwMHJvd3MgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt Mzg4Niw3ICszODg2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIgQykKICAg ICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0g OAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9zY2FsZV81MDByb3dzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgICBsaW5lICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKGErIGIgYykgCkBAIC0zOTE2LDcgKzM5MTYsNyBAQCBXSU5ET1cgdyBBUyAoCiAo OSByb3dzKQogCiAtLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCi1DUkVBVEUgVklFVyBycHJf ZXY4NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3NjYWxlX2hpZ2hfbWF0Y2ggQVMKIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lO RE9XIHcgQVMgKApAQCAtMzkyNSw3ICszOTI1LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRF Uk4gKEEgQikKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwot U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXY4NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X3NjYWxlX2hpZ2hfbWF0Y2gnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiAgICAgICAgbGluZSAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAo YSBiKSAKQEAgLTM5NTUsNyArMzk1NSw3IEBAIFdJTkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0t IEhpZ2ggc2tpcCBjb3VudCBzY2VuYXJpbwotQ1JFQVRFIFZJRVcgcnByX2V2ODYgQVMKK0NSRUFU RSBWSUVXIHJwcl9ldl9zY2FsZV9oaWdoX3NraXAgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt Mzk2OSw3ICszOTY5LDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBEIEFTIHYgJSAxMDAgPSA0 LAogICAgICAgICBFIEFTIHYgJSAxMDAgPSA1CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4NicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3NjYWxlX2hpZ2hfc2tpcCcpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKICAgICAgICAgICBsaW5lICAgICAg ICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhIGIgYyBkIGUpIApA QCAtNDAxMywxNyArNDAxMywxNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBUZXN0IHdpdGggcm93X251 bWJlcigpIGFzIHJlcHJlc2VudGF0aXZlIGNhc2UuCiAtLQogLS0gV2l0aG91dCBSUFI6IHJvd19u dW1iZXIoKSBmcmFtZSBpcyBvcHRpbWl6ZWQgdG8gUk9XUyBVTkJPVU5ERUQgUFJFQ0VESU5HCi1D UkVBVEUgVklFVyBycHJfZXY4NyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X29wdF9ub19ycHIgQVMK IFNFTEVDVCByb3dfbnVtYmVyKCkgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkg QVMgcyh2KQogV0lORE9XIHcgQVMgKAogICAgIE9SREVSIEJZIHYKICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICk7Ci1FWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gcnByX2V2ODc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gcnByX2V2X29wdF9ub19ycHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBTdWJxdWVyeSBTY2FuIG9u IHJwcl9ldjg3CisgU3VicXVlcnkgU2NhbiBvbiBycHJfZXZfb3B0X25vX3JwcgogICAgLT4gIFdp bmRvd0FnZwogICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBzLnYgUk9XUyBVTkJPVU5E RUQgUFJFQ0VESU5HKQogICAgICAgICAgLT4gIFNvcnQKQEAgLTQwMzIsNyArNDAzMiw3IEBAIEVY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXY4NzsKICg2IHJvd3MpCiAKIC0t IFdpdGggUlBSOiBmcmFtZSBtdXN0IHJlbWFpbiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKLUNSRUFURSBWSUVXIHJwcl9ldjg4IEFTCitDUkVBVEUgVklF VyBycHJfZXZfb3B0X3dpdGhfcnByIEFTCiBTRUxFQ1Qgcm93X251bWJlcigpIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTQwNDMs MTAgKzQwNDMsMTAgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORQogICAgICAgICBCIEFTIHYg PiBQUkVWKHYpCiApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjg4 OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldl9vcHRfd2l0aF9ycHI7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KLSBTdWJxdWVyeSBTY2FuIG9uIHJwcl9ldjg4CisgU3VicXVlcnkgU2NhbiBvbiBycHJf ZXZfb3B0X3dpdGhfcnByCiAgICAtPiAgV2luZG93QWdnCiAgICAgICAgICBXaW5kb3c6IHcgQVMg KE9SREVSIEJZIHMudiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCiAgICAgICAgICBQYXR0ZXJuOiBhIGIrCkBAIC00MDU5LDcgKzQwNTksNyBAQCBFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2ODg7CiAtLSBQbGFubmVyIG9wdGlt aXphdGlvbjogbm9uLVJQUiBhbmQgUlBSIHdpbmRvd3MgdGhhdCBzaGFyZSB0aGUgc2FtZSBiYXNl IGZyYW1lCiAtLSBhZnRlciBmcmFtZSBvcHRpbWl6YXRpb24gYXJlIGtlcHQgYXMgc2VwYXJhdGUg V2luZG93QWdnIG5vZGVzLgogLS0KLUNSRUFURSBWSUVXIHJwcl9ldjg5IEFTCitDUkVBVEUgVklF VyBycHJfZXZfb3B0X21peGVkIEFTCiBTRUxFQ1QKICAgICByb3dfbnVtYmVyKCkgT1ZFUiB3X25v cm1hbCBBUyBybl9ub3JtYWwsCiAgICAgcm93X251bWJlcigpIE9WRVIgd19ycHIgQVMgcm5fcnBy CkBAIC00MDcyLDEwICs0MDcyLDEwIEBAIFdJTkRPVwogICAgICAgICBQQVRURVJOIChBKykKICAg ICAgICAgREVGSU5FIEEgQVMgdiA+IDEKICAgICApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIHJwcl9ldjg5OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldl9vcHRfbWl4ZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIFN1YnF1ZXJ5IFNjYW4gb24gcnByX2V2ODkK KyBTdWJxdWVyeSBTY2FuIG9uIHJwcl9ldl9vcHRfbWl4ZWQKICAgIC0+ICBXaW5kb3dBZ2cKICAg ICAgICAgIFdpbmRvdzogd19ycHIgQVMgKE9SREVSIEJZIHMudiBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCiAgICAgICAgICBQYXR0ZXJuOiBhKyIKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAppbmRleCAyMzdmMDM2NjYzMS4uNjVhNzc1ZmRh ZDkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKQEAgLTExOCw3ICsxMTgsNyBA QCBWQUxVRVMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogCiAtLSBTaW1wbGUgcGF0dGVybiAtIHNob3VsZCBzaG93IGJhc2lj IHN0YXRpc3RpY3MKLUNSRUFURSBWSUVXIHJwcl9ldjAxIEFTCitDUkVBVEUgVklFVyBycHJfZXZf YmFzaWNfc2ltcGxlIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIHJwcl9uZmFfdGVz dAogV0lORE9XIHcgQVMgKApAQCAtMTI3LDcgKzEyNyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQ QVRURVJOIChBIEIpCiAgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJwog KTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2MDEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9iYXNpY19zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdJTkRPVyB3IEFTICgKICknKTsKIAogLS0g UGF0dGVybiB3aXRoIG5vIG1hdGNoZXMgLSAwIG1hdGNoZWQKLUNSRUFURSBWSUVXIHJwcl9ldjAy IEFTCitDUkVBVEUgVklFVyBycHJfZXZfYmFzaWNfbm9tYXRjaCBBUwogU0VMRUNUIGNvdW50KCop IE9WRVIgdwogRlJPTSBycHJfbmZhX3Rlc3QKIFdJTkRPVyB3IEFTICgKQEAgLTE0OSw3ICsxNDks NyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoWCBZIFopCiAgICAgREVGSU5FIFggQVMg Y2F0ID0gJ1gnLCBZIEFTIGNhdCA9ICdZJywgWiBBUyBjYXQgPSAnWicKICk7Ci1TRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjAyJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYmFzaWNfbm9t YXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBA IC0xNjIsNyArMTYyLDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gUGF0dGVybiBtYXRj aGluZyBldmVyeSByb3cgLSBoaWdoIG1hdGNoIGNvdW50Ci1DUkVBVEUgVklFVyBycHJfZXYwMyBB UworQ1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX2FsbHJvd3MgQVMKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKIEZST00gcnByX25mYV90ZXN0CiBXSU5ET1cgdyBBUyAoCkBAIC0xNzEsNyArMTcxLDcg QEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKFIpCiAgICAgREVGSU5FIFIgQVMgVFJVRQog KTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2MDMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9iYXNpY19hbGxyb3dzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKQEAgLTE4NSw3ICsxODUsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIFJlZ3Jl c3Npb24gdGVzdDogU3BhY2UgYmVmb3JlIHBhcmVudGhlc2lzIGluIHBhdHRlcm4gZGVwYXJzZQog LS0gVmVyaWZpZXMgdGhhdCAiQSAoQiB8IEMpIiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiYSAoYiB8 IGMpIiB3aXRoIHNwYWNlCi1DUkVBVEUgVklFVyBycHJfZXYwNCBBUworQ1JFQVRFIFZJRVcgcnBy X2V2X2Jhc2ljX2RlcGFyc2Vfc3BhY2UgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xOTMsNyAr MTkzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgKEIgfCBDKSkKICAgICBERUZJ TkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAogKTsKLVNF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2MDQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9i YXNpY19kZXBhcnNlX3NwYWNlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKQEAgLTIwNyw3ICsyMDcsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBSZWdyZXNz aW9uIHRlc3Q6IFNlcXVlbnRpYWwgYWx0ZXJuYXRpb25zIGF0IHNhbWUgZGVwdGgKIC0tIFZlcmlm aWVzIHRoYXQgIigoQiB8IEMpIChEIHwgRSkpIiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiKGIgfCBj KSAoZCB8IGUpIgogLS0gUHJldmlvdXNseSBmYWlsZWQgZHVlIHRvIG1pc3NpbmcgcGFyZW50aGVz ZXMgb24gQUxUIGRlcHRoIGRlY3JlYXNlCi1DUkVBVEUgVklFVyBycHJfZXYwNSBBUworQ1JFQVRF IFZJRVcgcnByX2V2X2Jhc2ljX2RlcGFyc2Vfc2VxYWx0IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZF UiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApA QCAtMjE1LDcgKzIxNSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBICgoQiB8IEMp IChEIHwgRSkpKikKICAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBD IEFTIHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYw NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Jhc2lj X2RlcGFyc2Vfc2VxYWx0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKQEAgLTIzMSw3ICsyMzEsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLS0g U2ltcGxlIHF1YW50aWZpZXIgcGF0dGVybiAtIEErIHdpdGggc2hvcnQgbWF0Y2hlcyAobm8gbWVy Z2luZykKLUNSRUFURSBWSUVXIHJwcl9ldjA2IEFTCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVf c2ltcGxlX3F1YW50IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjQwLDcgKzI0MCw3IEBAIFdJ TkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKykKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEK ICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldjA2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfc3RhdGVfc2ltcGxlX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcKQEAgLTI1Myw3ICsyNTMsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycp OwogCiAtLSBBbHRlcm5hdGlvbiBwYXR0ZXJuIC0gbXVsdGlwbGUgc3RhdGUgYnJhbmNoZXMKLUNS RUFURSBWSUVXIHJwcl9ldjA3IEFTCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0IEFTCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIHJwcl9uZmFfdGVzdAogV0lORE9XIHcgQVMgKApA QCAtMjY0LDcgKzI2NCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyBjYXQgPSAnQScs IEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKICAgICAgICAgRCBBUyBjYXQgPSAnRCcs IEUgQVMgY2F0ID0gJ0UnCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYwNycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0yNzksNyArMjc5LDcgQEAgV0lORE9XIHcgQVMg KAogKTsnKTsKIAogLS0gQ29tcGxleCBwYXR0ZXJuIHdpdGggaGlnaCBzdGF0ZSBjb3VudAotQ1JF QVRFIFZJRVcgcnByX2V2MDggQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9jb21wbGV4IEFT CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKIFdJTkRPVyB3IEFTICgKQEAgLTI5MSw3ICsyOTEsNyBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgICAgIEIgQVMgdiAlIDMgPSAyLAogICAgICAgICBDIEFTIHYgJSAzID0gMAogKTsKLVNFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 MDgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0 ZV9jb21wbGV4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKQEAgLTMwNyw3ICszMDcsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBHcm91cGVk IHBhdHRlcm4gd2l0aCBxdWFudGlmaWVyIC0gc3RhdGUgY291bnQgd2l0aCBncm91cGluZwotQ1JF QVRFIFZJRVcgcnByX2V2MDkgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9ncm91cF9xdWFu dCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjAp IEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTMxNiw3ICszMTYsNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoKEEgQikrKQogICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2 ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldjA5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfc3RhdGVfZ3JvdXBfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMzMwLDcgKzMzMCw3IEBAIFdJTkRPVyB3IEFT ICgKIAogLS0gU3RhdGUgZXhwbG9zaW9uIHBhdHRlcm4gLSBtYW55IGFsdGVybmF0aW9ucwogLS0g UGF0dGVybiAoQXxCKShBfEIpKEF8QikoQXxCKSBjYW4gY3JlYXRlIG1hbnkgcGFyYWxsZWwgc3Rh dGVzCi1DUkVBVEUgVklFVyBycHJfZXYxMCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2V4 cGxvc2lvbiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0zMzksNyArMzM5LDcgQEAgV0lORE9X IHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEg fCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEs IEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxMCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2V4cGxvc2lvbicpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0zNTMsNyArMzUzLDcgQEAgV0lORE9X IHcgQVMgKAogCiAtLSBDb25zZWN1dGl2ZSBBTFQgbWVyZ2UgZm9sbG93ZWQgYnkgZGlmZmVyZW50 IEFMVAogLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUFsdHMgZmx1c2ggb24gQUxUIGNoYW5nZTog KEF8Qil7Mn0gKEN8RCkKLUNSRUFURSBWSUVXIHJwcl9ldjExIEFTCitDUkVBVEUgVklFVyBycHJf ZXZfc3RhdGVfYWx0X21lcmdlX2FsdCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTM2Miw3ICsz NjIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChDIHwg RCkpCiAgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUg NCA9IDIsIEQgQVMgdiAlIDQgPSAzCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxMScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdF9tZXJnZV9hbHQnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMzc2LDcgKzM3Niw3 IEBAIFdJTkRPVyB3IEFTICgKIAogLS0gQ29uc2VjdXRpdmUgQUxUIG1lcmdlIGZvbGxvd2VkIGJ5 IG5vbi1BTFQgZWxlbWVudAogLS0gVGVzdHMgbWVyZ2VDb25zZWN1dGl2ZUFsdHMgZmx1c2ggb24g bm9uLUFMVDogKEF8Qil7Mn0gYwotQ1JFQVRFIFZJRVcgcnByX2V2MTIgQVMKK0NSRUFURSBWSUVX IHJwcl9ldl9zdGF0ZV9hbHRfbWVyZ2Vfbm9uYWx0IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt Mzg1LDcgKzM4NSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSB8IEIpIChBIHwg QikgQykKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYg JSAzID0gMgogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2MTInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfbWVyZ2Vfbm9uYWx0JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTM5OCw3ICszOTgsNyBAQCBXSU5ET1cg dyBBUyAoCiApOycpOwogCiAtLSBBTFQgcHJlZml4L3N1ZmZpeCBhYnNvcmJlZCBpbnRvIEdST1VQ OiAoQXxCKSAoQXxCKSsgKEF8QikgLT4gKEF8Qil7Myx9Ci1DUkVBVEUgVklFVyBycHJfZXYxMyBB UworQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdF9hYnNvcmJfZ3JvdXAgQVMKIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCiBXSU5E T1cgdyBBUyAoCkBAIC00MDcsNyArNDA3LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KChBIHwgQikgKEEgfCBCKSsgKEEgfCBCKSkKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIg QVMgdiAlIDIgPSAxCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxMycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdF9hYnNvcmJfZ3JvdXAnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK IEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtNDIwLDcgKzQyMCw3IEBAIFdJ TkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIEhpZ2ggc3RhdGUgY291bnQgLSBhbHRlcm5hdGlvbiB3 aXRoIHBsdXMgcXVhbnRpZmllcgotQ1JFQVRFIFZJRVcgcnByX2V2MTQgQVMKK0NSRUFURSBWSUVX IHJwcl9ldl9zdGF0ZV9hbHRfcGx1cyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC00MjksNyAr NDI5LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQiB8IEMpKyBEKQogICAg IERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzLCBE IEFTIHYgJSA0ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2MTQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfcGx1cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC00NDMsNyArNDQzLDcgQEAgV0lORE9XIHcg QVMgKAogCiAtLSBFYXJseSB0ZXJtaW5hdGlvbjogZmlyc3QgQUxUIGJyYW5jaCAoQSkgcmVhY2hl cyBGSU4gaW1tZWRpYXRlbHksCiAtLSBwcnVuaW5nIHNlY29uZCBicmFuY2ggKEEgQispIGJlZm9y ZSBpdCBjYW4gYWNjdW11bGF0ZSBCIHJlcGV0aXRpb25zLgotQ1JFQVRFIFZJRVcgcnByX2V2MTUg QVMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfcHJ1bmUgQVMKIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQogV0lORE9XIHcg QVMgKApAQCAtNDUyLDcgKzQ1Miw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSB8 IEEgQikrKQogICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPiAxCiApOwotU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxNScp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2Fs dF9wcnVuZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CkBAIC00NjUsNyArNDY1LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gTmVzdGVkIHF1 YW50aWZpZXJzIGNhdXNpbmcgc3RhdGUgZ3Jvd3RoCi1DUkVBVEUgVklFVyBycHJfZXYxNiBBUwor Q1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX25lc3RlZF9xdWFudCBBUwogU0VMRUNUIGNvdW50KCop IE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQogV0lORE9XIHcg QVMgKApAQCAtNDc0LDcgKzQ3NCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoKEEg fCBCKSspKykKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCiApOwot U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXYxNicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X3N0YXRlX25lc3RlZF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CkBAIC00OTEsNyArNDkxLDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAK IC0tIENvbnRleHQgYWJzb3JwdGlvbiB3aXRoIHVuYm91bmRlZCBxdWFudGlmaWVyIGF0IHN0YXJ0 Ci1DUkVBVEUgVklFVyBycHJfZXYxNyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJf dW5ib3VuZGVkIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtNTAwLDcgKzUwMCw3IEBAIFdJTkRP VyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxNycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfdW5ib3VuZGVkJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTUxMyw3ICs1MTMsNyBAQCBX SU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBObyBhYnNvcnB0aW9uIC0gYm91bmRlZCBxdWFudGlm aWVyCi1DUkVBVEUgVklFVyBycHJfZXYxOCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9ub19h YnNvcmIgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC01MjIsNyArNTIyLDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKEF7Miw0fSBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYxOCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2N0eF9ub19hYnNvcmInKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtNTM1LDcgKzUzNSw3IEBAIFdJTkRPVyB3 IEFTICgKICk7Jyk7CiAKIC0tIENvbnRleHRzIHNraXBwZWQgYnkgU0tJUCBQQVNUIExBU1QgUk9X Ci1DUkVBVEUgVklFVyBycHJfZXYxOSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9za2lwIEFT CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKIFdJTkRPVyB3IEFTICgKQEAgLTU0NCw3ICs1NDQsNyBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgUEFUVEVSTiAoQSBCIEMpCiAgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUg MTAgPSAyLCBDIEFTIHYgJSAxMCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjE5JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X3NraXAnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtNTU3LDcgKzU1Nyw3IEBAIFdJTkRP VyB3IEFTICgKICk7Jyk7CiAKIC0tIEhpZ2ggY29udGV4dCBhYnNvcnB0aW9uIC0gdW5ib3VuZGVk IGdyb3VwCi1DUkVBVEUgVklFVyBycHJfZXYyMCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9h YnNvcmJfZ3JvdXAgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtNTY2LDcgKzU2Niw3IEBAIFdJ TkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSBCKSsgQykKICAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAogKTsKLVNFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjAnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2dy b3VwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAg LTU4MSw3ICs1ODEsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSBGaXhlZC1sZW5ndGggZ3JvdXAgYWJz b3JwdGlvbjogKEEgQiBCKSsgQwogLS0gQiBCIG1lcmdlZCB0byBCezJ9OyBhYnNvcmJhYmxlIHdp dGggZml4ZWQtbGVuZ3RoIGNoZWNrCiAtLSBzdGVwX3NpemU9MyAoQSArIEIgKyBCKTsgdiAlIDcg Y3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zIHBlciBtYXRjaAotQ1JFQVRFIFZJRVcgcnByX2V2MjBi IEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9maXhlZHZhciBBUwogU0VMRUNUIGNv dW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFTIHModikKIFdJTkRP VyB3IEFTICgKQEAgLTU5MCw3ICs1OTAsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAo KEEgQiBCKSsgQykKICAgICBERUZJTkUgQSBBUyB2ICUgNyBJTiAoMSwgNCksIEIgQVMgdiAlIDcg SU4gKDIsIDMsIDUsIDYpLCBDIEFTIHYgJSA3ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjBiJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9maXhlZHZh cicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC02 MDQsNyArNjA0LDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdy b3VwIGFic29ycHRpb246IChBIChCIEMpezJ9IEQpKyBFCiAtLSBzdGVwX3NpemUgPSAxICsgKDEr MSkqMiArIDEgPSA2OyB2ICUgMTMgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zICsgRQotQ1JFQVRF IFZJRVcgcnByX2V2MjBjIEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9uZXN0ZWQg QVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY1KSBB UyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC02MTUsNyArNjE1LDcgQEAgV0lORE9XIHcgQVMgKAog ICAgICAgICAgICBDIEFTIHYgJSAxMyBJTiAoMywgNSwgOSwgMTEpLCBEIEFTIHYgJSAxMyBJTiAo NiwgMTIpLAogICAgICAgICAgICBFIEFTIHYgJSAxMyA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjIwYycpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfbmVz dGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAg LTYzMSw3ICs2MzEsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIERvdWJseSBuZXN0ZWQgZml4ZWQt bGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRgogLS0g c3RlcF9zaXplID0gMSArICgoMSszKSoyKzEpKjIgKyAxID0gMjA7IHYgJSA0MSBjeWNsZSBnaXZl cyAyIGl0ZXJhdGlvbnMgKyBGCi1DUkVBVEUgVklFVyBycHJfZXYyMGQgQVMKK0NSRUFURSBWSUVX IHJwcl9ldl9jdHhfYWJzb3JiX2RlZXAgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDgyKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC02NDYsNyAr NjQ2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAoMjAsIDQw KSwKICAgICAgICAgICAgRiBBUyB2ICUgNDEgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyMGQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2RlZXAnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtNjY3LDcg KzY2Nyw3IEBAIFdJTkRPVyB3IEFTICgKIC0tIDMtbGV2ZWwgRU5EIGNoYWluIGFic29ycHRpb246 ICgoQSAoQiBDKXsyfSl7Mn0pKwogLS0gc3RlcF9zaXplID0gKDEgKyAoMSsxKSoyKSAqIDIgPSAx MDsgdiAlIDIxIGN5Y2xlIGdpdmVzIDIgaXRlcmF0aW9ucwogLS0gRU5EIGNoYWluOiBFTkQoQkN7 Mn0pIC0+IEVORChBLi57Mn0pIC0+IEVORCgrLCBBQlNPUkJBQkxFKQotQ1JFQVRFIFZJRVcgcnBy X2V2MjBlIEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9lbmRjaGFpbiBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDIpIEFTIHModikK IFdJTkRPVyB3IEFTICgKQEAgLTY3OCw3ICs2NzgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAg ICAgIEIgQVMgdiAlIDIxIElOICgyLCA0LCA3LCA5LCAxMiwgMTQsIDE3LCAxOSksCiAgICAgICAg ICAgIEMgQVMgdiAlIDIxIElOICgzLCA1LCA4LCAxMCwgMTMsIDE1LCAxOCwgMjApCiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXYyMGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9j dHhfYWJzb3JiX2VuZGNoYWluJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKQEAgLTY5Nyw3ICs2OTcsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAog LS0gRml4ZWQgbGVuZ3RoIG1hdGNoZXMgLSBhbGwgc2FtZSBsZW5ndGgKLUNSRUFURSBWSUVXIHJw cl9ldjIxIEFTCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9maXhlZCBBUwogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwogRlJPTSBycHJfbmZhX3Rlc3QKIFdJTkRPVyB3IEFTICgKQEAgLTcwOCw3ICs3 MDgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9 ICdCJywgQyBBUyBjYXQgPSAnQycsCiAgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFTIGNhdCA9 ICdFJwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2MjEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9tbGVuX2ZpeGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcKQEAgLTcyMyw3ICs3MjMsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwog CiAtLSBWYXJpYWJsZSBsZW5ndGggbWF0Y2hlcyAtIG1pbi9tYXgvYXZnIGRpZmZlcgotQ1JFQVRF IFZJRVcgcnByX2V2MjIgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX3ZhcmlhYmxlIEFTCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKIFdJTkRPVyB3IEFTICgKQEAgLTczMiw3ICs3MzIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAg PSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXYyMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJO JzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X21sZW5fdmFyaWFibGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNU IGNvdW50KCopIE9WRVIgdwpAQCAtNzQ1LDcgKzc0NSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7 CiAKIC0tIFZlcnkgbG9uZyBtYXRjaGVzCi1DUkVBVEUgVklFVyBycHJfZXYyMyBBUworQ1JFQVRF IFZJRVcgcnByX2V2X21sZW5fbG9uZyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC03NTQsNyAr NzU0LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEg QVMgdiA8PSAxOTUsIEIgQVMgdiA+IDE5NQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjMnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX2xvbmcnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK IEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtNzY3LDcgKzc2Nyw3IEBAIFdJ TkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIFVuaWZvcm0gbWF0Y2ggbGVuZ3RoIHdpdGggbWlzbWF0 Y2hlcyBmcm9tIGdhcCByb3dzICh2JTIwID0gMTEuLjE1KQotQ1JFQVRFIFZJRVcgcnByX2V2MjQg QVMKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX3dpdGhfbWlzbWF0Y2ggQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQogV0lORE9X IHcgQVMgKApAQCAtNzc4LDcgKzc3OCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyAo diAlIDIwIDw+IDApIEFORCAodiAlIDIwIDw9IDEwIE9SIHYgJSAyMCA+IDE1KSwKICAgICAgICAg QiBBUyB2ICUgMjAgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyNCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X21sZW5fd2l0aF9taXNtYXRjaCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwog RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC03OTgsNyArNzk4LDcgQEAgV0lO RE9XIHcgQVMgKAogCiAtLSBQYXR0ZXJuIHdpdGggY29tcGxldGUgbWF0Y2ggZXZlcnkgY3ljbGU6 IDAgbWlzbWF0Y2hlZAogLS0gQSgxLDIsMykgQig0LDUpIEMoNikgcmVwZWF0cyBwZXJmZWN0bHk7 IFggcm93cyBhcmUgcHJ1bmVkLCBub3QgbWlzbWF0Y2hlZAotQ1JFQVRFIFZJRVcgcnByX2V2MjUg QVMKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX25vX21pc21hdGNoIEFTCiBTRUxFQ1QgY291bnQo KikgT1ZFUiB3CiBGUk9NICgKICAgICBTRUxFQ1QgdiwKQEAgLTgxNCw3ICs4MTQsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQisgQykKICAgICBERUZJTkUgQSBBUyBjYXQgPSAn QScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJwogKTsKLVNFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjUnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX25vX21pc21hdGNo JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTgz NCw3ICs4MzQsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBMb25nIHBhcnRpYWwgbWF0 Y2hlcyB0aGF0IGZhaWwKLUNSRUFURSBWSUVXIHJwcl9ldjI2IEFTCitDUkVBVEUgVklFVyBycHJf ZXZfbWxlbl9sb25nX3BhcnRpYWwgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gKAog ICAgIFNFTEVDVCBpIEFTIHYsCkBAIC04NTUsNyArODU1LDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEErIEIrIEMpCiAgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9 ICdCJywgQyBBUyBjYXQgPSAnQycKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjI2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxlbl9sb25nX3BhcnRpYWwnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtODg0LDcgKzg4NCw3IEBA IFdJTkRPVyB3IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogCiAtLSBKU09OIGZvcm1hdCBvdXRwdXQgd2l0aCBhbGwg c3RhdGlzdGljcwotQ1JFQVRFIFZJRVcgcnByX2V2MjcgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9q c29uX2Jhc2ljIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtODkzLDcgKzg5Myw3IEBAIFdJTkRP VyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKykKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEs IEIgQVMgdiAlIDMgPSAyCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYyNycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2pzb25fYmFzaWMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG LCBGT1JNQVQgSlNPTikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTkwNiw3ICs5MDYsNyBA QCBXSU5ET1cgdyBBUyAoCiApJyk7CiAKIC0tIEpTT04gZm9ybWF0IHdpdGggbWF0Y2ggbGVuZ3Ro IHN0YXRpc3RpY3MKLUNSRUFURSBWSUVXIHJwcl9ldjI4IEFTCitDUkVBVEUgVklFVyBycHJfZXZf anNvbl9tYXRjaGxlbiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC05MTUsNyArOTE1LDcgQEAg V0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDEw IDw+IDAsIEIgQVMgdiAlIDEwID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MjgnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9qc29uX21hdGNobGVuJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRiwgRk9STUFUIEpTT04pCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC05Mjks NyArOTI5LDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBKU09OIGZvcm1hdCB3aXRoIG1pc21hdGNo IHN0YXRpc3RpY3MKIC0tIFBhdHRlcm4gQSBCIEMgZXhwZWN0cyAxLDIsMyBidXQgZ2V0cyAxLDIs NCB0d2ljZSBjYXVzaW5nIG1pc21hdGNoZXMKLUNSRUFURSBWSUVXIHJwcl9ldjI5IEFTCitDUkVB VEUgVklFVyBycHJfZXZfanNvbl9taXNtYXRjaCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwog RlJPTSAoVkFMVUVTICgxKSwoMiksKDQpLCAoMSksKDIpLCg0KSwgKDEpLCgyKSwoMykpIEFTIHQo dikKIFdJTkRPVyB3IEFTICgKQEAgLTkzOCw3ICs5MzgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSBCIEMpCiAgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMg diA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldjI5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfanNvbl9taXNtYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1B VCBKU09OKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtOTUyLDcgKzk1Miw3IEBAIFdJTkRP VyB3IEFTICgKIAogLS0gSlNPTiBmb3JtYXQgd2l0aCBza2lwcGVkIGNvbnRleHQgc3RhdGlzdGlj cwogLS0gQWx0ZXJuYXRpb24gcGF0dGVybiB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyBjYXVzZXMg bWFueSBjb250ZXh0cyB0byBiZSBza2lwcGVkCi1DUkVBVEUgVklFVyBycHJfZXYzMCBBUworQ1JF QVRFIFZJRVcgcnByX2V2X2pzb25fc2tpcCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC05NjEs NyArOTYxLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAo QSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKICAgICBERUZJ TkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYzMCcpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2pzb25fc2tpcCcpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpA QCAtOTc4LDcgKzk3OCw3IEBAIFdJTkRPVyB3IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAtLSBYTUwgZm9ybWF0 IG91dHB1dAotQ1JFQVRFIFZJRVcgcnByX2V2MzEgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl94bWxf YmFzaWMgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC05ODcsNyArOTg3LDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKEEgQikKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMg diAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXYzMScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X3htbF9iYXNpYycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1B VCBYTUwpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBXSU5E T1cgdyBBUyAoCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIAogLS0gU3RhdGlzdGljcyBhY3Jvc3MgbXVsdGlwbGUgcGFydGl0 aW9ucwotQ1JFQVRFIFZJRVcgcnByX2V2MzIgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9wYXJ0X211 bHRpIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NICgKICAgICBTRUxFQ1QgcCwgdgpA QCAtMTAxOCw3ICsxMDE4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIpCiAg ICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKICk7Ci1TRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjMyJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcGFydF9tdWx0 aScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0x MDM2LDcgKzEwMzYsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBEaWZmZXJlbnQgcGF0 dGVybiBiZWhhdmlvciBwZXIgcGFydGl0aW9uCi1DUkVBVEUgVklFVyBycHJfZXYzMyBBUworQ1JF QVRFIFZJRVcgcnByX2V2X3BhcnRfZGlmZiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJP TSAoCiAgICAgU0VMRUNUCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg UEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2YWwgPCA1LCBCIEFTIHZhbCA+PSA1CiAp OwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXYzMycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X3BhcnRfZGlmZicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK IFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLS0g RW1wdHkgcmVzdWx0IHNldAotQ1JFQVRFIFZJRVcgcnByX2V2MzQgQVMKK0NSRUFURSBWSUVXIHJw cl9ldl9lZGdlX2VtcHR5IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xMDgzLDcgKzEwODMsNyBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSBCKQogICAgIERFRklORSBBIEFTIHYgPSAx LCBCIEFTIHYgPSAyCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXYzNCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2VkZ2VfZW1wdHknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQog U0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgV0lORE9XIHcgQVMg KAogKTsnKTsKIAogLS0gU2luZ2xlIHJvdwotQ1JFQVRFIFZJRVcgcnByX2V2MzUgQVMKK0NSRUFU RSBWSUVXIHJwcl9ldl9lZGdlX3NpbmdsZV9yb3cgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEx MDUsNyArMTEwNSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKQogICAgIERFRklO RSBBIEFTIFRSVUUKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjM1JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfZWRnZV9zaW5nbGVfcm93JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTExMTgsNyArMTExOCw3IEBAIFdJTkRPVyB3 IEFTICgKICk7Jyk7CiAKIC0tIFBhdHRlcm4gbG9uZ2VyIHRoYW4gZGF0YQotQ1JFQVRFIFZJRVcg cnByX2V2MzYgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX3BhdHRlcm5fbG9uZ2VyIEFTCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBBUyBzKHYp CiBXSU5ET1cgdyBBUyAoCkBAIC0xMTI5LDcgKzExMjksNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAg ICAgIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMsIEQgQVMgdiA9IDQsIEUgQVMg diA9IDUsCiAgICAgICAgIEYgQVMgdiA9IDYsIEcgQVMgdiA9IDcsIEggQVMgdiA9IDgsIEkgQVMg diA9IDksIEogQVMgdiA9IDEwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYzNicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2VkZ2VfcGF0dGVybl9sb25nZXInKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTE0NCw3ICsxMTQ0LDcg QEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gQWxsIHJvd3MgbWF0Y2ggYXMgc2luZ2xlIG1h dGNoCi1DUkVBVEUgVklFVyBycHJfZXYzNyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2Vfc2lu Z2xlX21hdGNoIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTE1Myw3ICsxMTUzLDcgQEAgV0lO RE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErKQogICAgIERFRklORSBBIEFTIFRSVUUKICk7Ci1T RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldjM3JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf ZWRnZV9zaW5nbGVfbWF0Y2gnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAK IC0tIE5lc3RlZCBncm91cHMKLUNSRUFURSBWSUVXIHJwcl9ldjM4IEFTCitDUkVBVEUgVklFVyBy cHJfZXZfY3B4X25lc3RlZCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTExNzksNyArMTE3OSw3 IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoKEEgQikgQykrKQogICAgIERFRklORSBB IEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCiApOwotU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXYz OCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2NweF9u ZXN0ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpA QCAtMTE5Miw3ICsxMTkyLDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gTXVsdGlwbGUg YWx0ZXJuYXRpb25zCi1DUkVBVEUgVklFVyBycHJfZXYzOSBBUworQ1JFQVRFIFZJRVcgcnByX2V2 X2NweF9tdWx0aV9hbHQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90 ZXN0CiBXSU5ET1cgdyBBUyAoCkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCiAg ICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFTIGNhdCA9ICdFJwogKTsKLVNFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2MzknKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhfbXVsdGlfYWx0 JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTEy MTgsNyArMTIxOCw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIE9wdGlvbmFsIGVsZW1l bnRzCi1DUkVBVEUgVklFVyBycHJfZXY0MCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9vcHRp b25hbCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEyMjcsNyArMTIyNyw3IEBAIFdJTkRPVyB3 IEFTICgKICAgICBQQVRURVJOIChBIEI/IEMpCiAgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBC IEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQwJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X29wdGlvbmFsJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTEyNDAsNyArMTI0 MCw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIEJvdW5kZWQgcXVhbnRpZmllcnMKLUNS RUFURSBWSUVXIHJwcl9ldjQxIEFTCitDUkVBVEUgVklFVyBycHJfZXZfY3B4X2JvdW5kZWQgQVMK IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKEF7Miw1fSBCKQogICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFT IHYgJSAxMCA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfY3B4X2JvdW5kZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQog U0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgV0lORE9XIHcgQVMg KAogKTsnKTsKIAogLS0gU3RhciBxdWFudGlmaWVyCi1DUkVBVEUgVklFVyBycHJfZXY0MiBBUwor Q1JFQVRFIFZJRVcgcnByX2V2X2NweF9zdGFyIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTI3 MSw3ICsxMjcxLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQiogQykKICAgICBE RUZJTkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAxMCBJTiAoMiwzLDQsNSw2LDcsOCksIEMg QVMgdiAlIDEwID0gOQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2NDInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhfc3RhcicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xMjg4LDcgKzEyODgsNyBAQCBXSU5ET1cgdyBBUyAo CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIAogLS0gU3RvY2sgcHJpY2UgcGF0dGVybiAtIFYtc2hhcGUgKGRvd24gdGhlbiB1 cCkKLUNSRUFURSBWSUVXIHJwcl9ldjQzIEFTCitDUkVBVEUgVklFVyBycHJfZXZfcmVhbF92c2hh cGUgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV9jb21wbGV4CiBXSU5E T1cgdyBBUyAoCkBAIC0xMjk3LDcgKzEyOTcsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVS TiAoRCsgVSspCiAgICAgREVGSU5FIEQgQVMgdHJlbmQgPSAnRCcsIFUgQVMgdHJlbmQgPSAnVScK ICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldjQzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfcmVhbF92c2hhcGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAog LS0gU3RvY2sgcHJpY2UgcGF0dGVybiAtIHBlYWsgKHVwLCBzdGFibGUsIGRvd24pCi1DUkVBVEUg VklFVyBycHJfZXY0NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3JlYWxfcGVhayBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwogRlJPTSBycHJfbmZhX2NvbXBsZXgKIFdJTkRPVyB3IEFTICgKQEAg LTEzMTksNyArMTMxOSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChVKyBTKiBEKykK ICAgICBERUZJTkUgVSBBUyB0cmVuZCA9ICdVJywgUyBBUyB0cmVuZCA9ICdTJywgRCBBUyB0cmVu ZCA9ICdEJwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2NDQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9yZWFsX3BlYWsnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNU IGNvdW50KCopIE9WRVIgdwpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgV0lORE9XIHcgQVMgKAogKTsn KTsKIAogLS0gQ29uc2VjdXRpdmUgaW5jcmVhc2luZyB2YWx1ZXMgKHVzaW5nIFBSRVYpCi1DUkVB VEUgVklFVyBycHJfZXY0NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3JlYWxfaW5jcmVhc2luZyBB UwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFT IHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEzNDEsNyArMTM0MSw3IEBAIFdJTkRPVyB3IEFTICgK ICAgICBQQVRURVJOIChBezMsfSkKICAgICBERUZJTkUgQSBBUyB2ID4gUFJFVih2KSBPUiBQUkVW KHYpIElTIE5VTEwKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjQ1JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfcmVhbF9pbmNyZWFzaW5nJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTEzNTgsNyArMTM1OCw3IEBAIFdJTkRPVyB3 IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogCiAtLSBMYXJnZSBkYXRhc2V0IHdpdGggc2ltcGxlIHBhdHRlcm4KLUNS RUFURSBWSUVXIHJwcl9ldjQ2IEFTCitDUkVBVEUgVklFVyBycHJfZXZfcGVyZl9sYXJnZV9zaW1w bGUgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTEzNjcsNyArMTM2Nyw3IEBAIFdJTkRPVyB3 IEFTICgKICAgICBQQVRURVJOIChBIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFT IHYgJSAyID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2NDYnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9wZXJmX2xhcmdlX3NpbXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xMzgwLDcgKzEzODAsNyBAQCBXSU5ET1cg dyBBUyAoCiApOycpOwogCiAtLSBMYXJnZSBkYXRhc2V0IHdpdGggYWJzb3JwdGlvbgotQ1JFQVRF IFZJRVcgcnByX2V2NDcgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9wZXJmX2xhcmdlX2Fic29yYiBB UwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkg QVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTM4OSw3ICsxMzg5LDcgQEAgV0lORE9XIHcgQVMg KAogICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDEwMCA8PiAwLCBCIEFT IHYgJSAxMDAgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY0NycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3BlcmZfbGFyZ2VfYWJzb3JiJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE0MDIsNyArMTQwMiw3IEBAIFdJTkRP VyB3IEFTICgKICk7Jyk7CiAKIC0tIEhpZ2ggc3RhdGUgbWVyZ2UgcmF0aW8KLUNSRUFURSBWSUVX IHJwcl9ldjQ4IEFTCitDUkVBVEUgVklFVyBycHJfZXZfcGVyZl9oaWdoX21lcmdlIEFTCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikK IFdJTkRPVyB3IEFTICgKQEAgLTE0MTEsNyArMTQxMSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQ QVRURVJOICgoQSB8IEIpKyBDKQogICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUg MyA9IDIsIEMgQVMgdiAlIDMgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY0OCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19h cnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3BlcmZfaGlnaF9tZXJnZScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xNDI4LDcgKzE0MjgsNyBA QCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIAogLS0gV2l0aCBJTklUSUFMIGtleXdvcmQKLUNSRUFU RSBWSUVXIHJwcl9ldjQ5IEFTCitDUkVBVEUgVklFVyBycHJfZXZfaW5pdGlhbF93aXRoIEFTCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2 KQogV0lORE9XIHcgQVMgKApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9 IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldjQ5JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfaW5pdGlhbF93aXRoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcKQEAgLTE0NTIsNyArMTQ1Miw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7 CiAKIC0tIFdpdGhvdXQgSU5JVElBTCBrZXl3b3JkIChzYW1lIGJlaGF2aW9yIGN1cnJlbnRseSkK LUNSRUFURSBWSUVXIHJwcl9ldjUwIEFTCitDUkVBVEUgVklFVyBycHJfZXZfaW5pdGlhbF93aXRo b3V0IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjUwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfaW5pdGlhbF93aXRob3V0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE0NzgsNyArMTQ3OCw3IEBAIFdJTkRPVyB3 IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogCiAtLSBQbHVzIHF1YW50aWZpZXIKLUNSRUFURSBWSUVXIHJwcl9ldjUx IEFTCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfcGx1cyBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKIFdJTkRPVyB3IEFTICgK QEAgLTE0ODcsNyArMTQ4Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKykKICAg ICBERUZJTkUgQSBBUyB2ICUgNCA8PiAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1MScpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X3BsdXMnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK IEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTUwMCw3ICsxNTAwLDcgQEAg V0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gU3RhciBxdWFudGlmaWVyICh6ZXJvIG9yIG1vcmUp Ci1DUkVBVEUgVklFVyBycHJfZXY1MiBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3N0YXIg QVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBB UyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xNTA5LDcgKzE1MDksNyBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoQSogQikKICAgICBERUZJTkUgQSBBUyB2ICUgNCBJTiAoMSwgMiksIEIg QVMgdiAlIDQgPSAzCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1MicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3F1YW50X3N0YXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQog U0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTUyMiw3ICsxNTIyLDcgQEAgV0lORE9XIHcgQVMg KAogKTsnKTsKIAogLS0gUXVlc3Rpb24gbWFyayAoemVybyBvciBvbmUpCi1DUkVBVEUgVklFVyBy cHJfZXY1MyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3F1ZXN0aW9uIEFTCiBTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQogV0lO RE9XIHcgQVMgKApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRF Uk4gKEE/IEIgQykKICAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBD IEFTIHYgJSA0ID0gMwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2NTMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9xdWVzdGlvbicpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBXSU5ET1cg dyBBUyAoCiApOycpOwogCiAtLSBFeGFjdCBjb3VudCB7bn0KLUNSRUFURSBWSUVXIHJwcl9ldjU0 IEFTCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfZXhhY3QgQVMKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAo CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXszfSBC KQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1 NCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50 X2V4YWN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK QEAgLTE1NjYsNyArMTU2Niw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIFJhbmdlIHtu LG19Ci1DUkVBVEUgVklFVyBycHJfZXY1NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3Jh bmdlIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgV0lORE9XIHcg QVMgKAogICAgIFBBVFRFUk4gKEF7Miw0fSBCKQogICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X3JhbmdlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE1ODgsNyArMTU4OCw3IEBAIFdJTkRPVyB3 IEFTICgKICk7Jyk7CiAKIC0tIEF0IGxlYXN0IHtuLH0KLUNSRUFURSBWSUVXIHJwcl9ldjU2IEFT CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfYXRsZWFzdCBBUwogU0VMRUNUIGNvdW50KCopIE9W RVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKIFdJTkRPVyB3IEFTICgK QEAgLTE1OTcsNyArMTU5Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBezMsfSBC KQogICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKICk7Ci1TRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l djU2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVh bnRfYXRsZWFzdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZF UiB3CkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBXSU5ET1cgdyBBUyAoCiAKIC0tIFZlcmlmeSBzdGF0 ZSBjb3VudCBhY2N1cmFjeQogLS0gUGF0dGVybiBBKyBCIHdpdGggMjAgcm93cyBzaG91bGQgc2hv dyBwcmVkaWN0YWJsZSBzdGF0ZSBiZWhhdmlvcgotQ1JFQVRFIFZJRVcgcnByX2V2NTcgQVMKK0NS RUFURSBWSUVXIHJwcl9ldl9yZWdfc3RhdGVfY291bnQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBA IC0xNjI0LDcgKzE2MjQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAogKTsKLVNFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NTcnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfc3RhdGVf Y291bnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpA QCAtMTYzNyw3ICsxNjM3LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gVmVyaWZ5IGNv bnRleHQgY291bnQgd2l0aCBrbm93biBhYnNvcnB0aW9uCi1DUkVBVEUgVklFVyBycHJfZXY1OCBB UworQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19jdHhfYWJzb3JiIEFTCiBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQogV0lORE9XIHcgQVMg KApAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIg QykKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAx MCA9IDgsIEMgQVMgdiAlIDEwID0gOQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NTgnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfY3R4X2Fic29yYicpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xNjU5LDcgKzE2NTksNyBA QCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBWZXJpZnkgbWF0Y2ggbGVuZ3RoIHdpdGggZml4 ZWQtbGVuZ3RoIHBhdHRlcm4KLUNSRUFURSBWSUVXIHJwcl9ldjU5IEFTCitDUkVBVEUgVklFVyBy cHJfZXZfcmVnX21hdGNobGVuIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTY2OCw3ICsxNjY4 LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQiBDKQogICAgIERFRklORSBBIEFT IHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCiApOwotU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY1OScp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlZ19tYXRj aGxlbicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBA IC0xNjg1LDcgKzE2ODUsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLS0gU2ltcGxlIGFs dGVybmF0aW9uCi1DUkVBVEUgVklFVyBycHJfZXY2MCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2Fs dF9zaW1wbGUgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90ZXN0CiBX SU5ET1cgdyBBUyAoCkBAIC0xNjk0LDcgKzE2OTQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFU VEVSTiAoKEEgfCBCKSBDKQogICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAn QicsIEMgQVMgY2F0ID0gJ0MnCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY2MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTcwNyw3ICsxNzA3LDcgQEAgV0lORE9X IHcgQVMgKAogKTsnKTsKIAogLS0gTXVsdGlwbGUgaXRlbXMgaW4gYWx0ZXJuYXRpb24KLUNSRUFU RSBWSUVXIHJwcl9ldjYxIEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X211bHRpX2l0ZW0gQVMK IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gcnByX25mYV90ZXN0CiBXSU5ET1cgdyBBUyAo CkBAIC0xNzE4LDcgKzE3MTgsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEEgQVMgY2F0ID0g J0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCiAgICAgICAgIEQgQVMgY2F0ID0g J0QnLCBFIEFTIGNhdCA9ICdFJwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NjEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbXVsdGlfaXRlbScpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwog RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBX SU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzCi1D UkVBVEUgVklFVyBycHJfZXY2MiBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF93aXRoX3F1YW50 IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkg QVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTc0Miw3ICsxNzQyLDcgQEAgV0lORE9XIHcgQVMg KAogICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCiAgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBC IEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjYyJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X3dpdGhfcXVhbnQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTc1NSw3ICsx NzU1LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gTXVsdGlwbGUgYWx0ZXJuYXRpdmVz ICg0KykKLUNSRUFURSBWSUVXIHJwcl9ldjYzIEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2Zv dXJfcGx1cyBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBXSU5E T1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSB8IEIgfCBDIHwgRCB8IEUpCiAgICAgREVGSU5FIEEg QVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUg PSAzLCBFIEFTIHYgJSA1ID0gNAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NjMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZm91cl9wbHVzJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE3NzUsNyArMTc3NSw3IEBAIFdJ TkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIEFsdGVybmF0aW9uIGF0IHN0YXJ0Ci1DUkVBVEUgVklF VyBycHJfZXY2NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9hdF9zdGFydCBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJ TkRPVyB3IEFTICgKQEAgLTE3ODMsNyArMTc4Myw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRU RVJOICgoQSB8IEIpIEMgRCkKICAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQg PSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjY0JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X3N0YXJ0Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE3OTUs NyArMTc5NSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIE11bHRpcGxlIHNlcXVlbnRp YWwgYWx0ZXJuYXRpb25zCi1DUkVBVEUgVklFVyBycHJfZXY2NSBBUworQ1JFQVRFIFZJRVcgcnBy X2V2X2FsdF9zZXF1ZW50aWFsIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTE4MDMsNyArMTgw Myw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSB8IEIpIEMgKEQgfCBFKSBGKQog ICAgIERFRklORSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAy LCBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CiApOwotU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXY2NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Fs dF9zZXF1ZW50aWFsJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwog U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKQEAgLTE4MTUsNyArMTgxNSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIFF1 YW50aWZpZWQgYWx0ZXJuYXRpdmVzCi1DUkVBVEUgVklFVyBycHJfZXY2NiBBUworQ1JFQVRFIFZJ RVcgcnByX2V2X2FsdF9xdWFudGlmaWVkIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTgyMyw3 ICsxODIzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKChBKyB8IEIrKSBDKQogICAg IERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCiAp OwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXY2NicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2FsdF9xdWFudGlmaWVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKQEAgLTE4MzUsNyArMTgzNSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAK IC0tIEFsdGVybmF0aW9uIGF0IGVuZAotQ1JFQVRFIFZJRVcgcnByX2V2NjcgQVMKK0NSRUFURSBW SUVXIHJwcl9ldl9hbHRfYXRfZW5kIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTg0Myw3ICsx ODQzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQiAoQyB8IEQpKQogICAgIERF RklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFT IHYgJSA0ID0gMwogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2NjcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfYXRfZW5kJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKQEAgLTE4NTYsNyArMTg1Niw3IEBAIFdJTkRPVyB3IEFTICgK IAogLS0gTmVzdGVkIEFMVCBhdCBzdGFydCBvZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAogLS0g UGF0dGVybjogKEEgKChCIHwgQykgRCB8IEUpKSAtIHByZWNlZGluZyBWQVIgKyBpbm5lciBBTFQg YXMgZmlyc3QgYnJhbmNoIGVsZW1lbnQKLUNSRUFURSBWSUVXIHJwcl9ldjY4IEFTCitDUkVBVEUg VklFVyBycHJfZXZfYWx0X25lc3RlZF9zdGFydCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwog RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTE4 NjQsNyArMTg2NCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBICgoQiB8IEMpIEQg fCBFKSkKICAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYg JSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CiApOwotU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY2OCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9uZXN0ZWRf c3RhcnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpA QCAtMTg3Nyw3ICsxODc3LDcgQEAgV0lORE9XIHcgQVMgKAogCiAtLSBOZXN0ZWQgQUxUIGF0IGVu ZCBvZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAogLS0gUGF0dGVybjogKEMgKEEgfCBCKSB8IEQp IC0gaW5uZXIgQUxUIGlzIGxhc3QgZWxlbWVudCBpbiBvdXRlciBicmFuY2gKLUNSRUFURSBWSUVX IHJwcl9ldjY5IEFTCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X25lc3RlZF9lbmQgQVMKIFNFTEVD VCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCiBX SU5ET1cgdyBBUyAoCkBAIC0xODg1LDcgKzE4ODUsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFU VEVSTiAoQyAoQSB8IEIpIHwgRCkKICAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAl IDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKICk7Ci1TRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjY5JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X25lc3RlZF9l bmQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAt MTkwMSw3ICsxOTAxLDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0tIFNpbXBsZSBncm91 cAotQ1JFQVRFIFZJRVcgcnByX2V2NzAgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfc2ltcGxl IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkg QVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgV0lORE9XIHcgQVMg KAogICAgIFBBVFRFUk4gKChBIEIpKykKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMg diAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXY3MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2dycF9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VM RUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTkyMyw3ICsxOTIzLDcgQEAgV0lORE9XIHcgQVMgKAog KTsnKTsKIAogLS0gR3JvdXAgd2l0aCBib3VuZGVkIHF1YW50aWZpZXIKLUNSRUFURSBWSUVXIHJw cl9ldjcxIEFTCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2JvdW5kZWQgQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCiBXSU5ET1cg dyBBUyAoCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAo KEEgQil7Miw0fSkKICAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiAp OwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXY3MScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2dycF9ib3VuZGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKQEAgLTE5NDUsNyArMTk0NSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0t IE5lc3RlZCBncm91cHMKLUNSRUFURSBWSUVXIHJwcl9ldjcyIEFTCitDUkVBVEUgVklFVyBycHJf ZXZfZ3JwX25lc3RlZCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTE5NTQsNyArMTk1NCw3IEBA IFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKICAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY3MicpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9uZXN0ZWQnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVy KCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYs IFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTk2Nyw3ICsxOTY3LDcg QEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gRGVlcCBuZXN0aW5nICgzKyBsZXZlbHMpCi1D UkVBVEUgVklFVyBycHJfZXY3MyBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9kZWVwIEFTCiBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2 KQogV0lORE9XIHcgQVMgKApAQCAtMTk3NSw3ICsxOTc1LDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKCgoKEEgfCBCKSspKykrKQogICAgIERFRklORSBBIEFTIHYgJSAyID0gMCwgQiBB UyB2ICUgMiA9IDEKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjczJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfZ3JwX2RlZXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VM RUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMTk4Nyw3ICsxOTg3LDcgQEAgV0lORE9XIHcgQVMgKAog KTsnKTsKIAogLS0gQm91bmRlZCBxdWFudGlmaWVyIG9uIGFsdGVybmF0aW9uCi1DUkVBVEUgVklF VyBycHJfZXY3NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9ib3VuZGVkX2FsdCBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK IFdJTkRPVyB3IEFTICgKQEAgLTE5OTUsNyArMTk5NSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQ QVRURVJOICgoQSB8IEIpezIsM30gQykKICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMg diAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NzQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfYm91bmRlZF9hbHQnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMjAwNyw3ICsyMDA3 LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gTmVzdGVkIGdyb3VwcyB3aXRoIHF1YW50 aWZpZXJzCi1DUkVBVEUgVklFVyBycHJfZXY3NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9u ZXN0ZWRfcXVhbnQgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDYwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMDE1LDcgKzIwMTUsNyBAQCBX SU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoKChBIEIpKyBDKSopCiAgICAgREVGSU5FIEEgQVMg diAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKICk7Ci1TRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjc1Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX25lc3Rl ZF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CkBAIC0yMDI3LDcgKzIwMjcsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBQYXJ0aWFs IG5lc3RlZCBxdWFudGlmaWNhdGlvbgotQ1JFQVRFIFZJRVcgcnByX2V2NzYgQVMKK0NSRUFURSBW SUVXIHJwcl9ldl9ncnBfcGFydGlhbF9xdWFudCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwog RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTIw MzUsNyArMjAzNSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOICgoQSAoQiBDKSspKikK ICAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0g MgogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2NzYnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9ncnBfcGFydGlhbF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMDUxLDcgKzIwNTEsNyBAQCBXSU5ET1cgdyBBUyAoCiAt LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIAogLS0gY291bnQoKikgd2l0aCBwYXR0ZXJuCi1DUkVBVEUgVklFVyBycHJfZXY3NyBB UworQ1JFQVRFIFZJRVcgcnByX2V2X3dmbl9jb3VudCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIg dwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAg LTIwNjAsNyArMjA2MCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAg IERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCiApOwotU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY3NycpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3dmbl9jb3VudCcp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMDcz LDcgKzIwNzMsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogCiAtLSBmaXJzdF92YWx1ZSB3aXRo IHBhdHRlcm4KLUNSRUFURSBWSUVXIHJwcl9ldjc4IEFTCitDUkVBVEUgVklFVyBycHJfZXZfd2Zu X2ZpcnN0X3ZhbHVlIEFTCiBTRUxFQ1QgZmlyc3RfdmFsdWUodikgT1ZFUiB3CiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjA4Miw3ICsyMDgy LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIpCiAgICAgREVGSU5FIEEgQVMg diAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjc4JyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX2ZpcnN0X3ZhbHVlJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBmaXJzdF92YWx1ZSh2KSBPVkVSIHcKQEAgLTIwOTUs NyArMjA5NSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIGxhc3RfdmFsdWUgd2l0aCBw YXR0ZXJuCi1DUkVBVEUgVklFVyBycHJfZXY3OSBBUworQ1JFQVRFIFZJRVcgcnByX2V2X3dmbl9s YXN0X3ZhbHVlIEFTCiBTRUxFQ1QgbGFzdF92YWx1ZSh2KSBPVkVSIHcKIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDMwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMTA0LDcgKzIxMDQsNyBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgQikKICAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2NzknKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl93Zm5fbGFzdF92YWx1ZScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCiBTRUxFQ1QgbGFzdF92YWx1ZSh2KSBPVkVSIHcKQEAgLTIxMTcsNyArMjEx Nyw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIE11bHRpcGxlIHdpbmRvdyBmdW5jdGlv bnMKLUNSRUFURSBWSUVXIHJwcl9ldjgwIEFTCitDUkVBVEUgVklFVyBycHJfZXZfd2ZuX211bHRp IEFTCiBTRUxFQ1QKICAgICBjb3VudCgqKSBPVkVSIHcsCiAgICAgZmlyc3RfdmFsdWUodikgT1ZF UiB3LApAQCAtMjEyOSw3ICsyMTI5LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEr IEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKICk7Ci1TRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l djgwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2Zu X211bHRpJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVApAQCAtMjE0OSw3ICsyMTQ5 LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0tIENvbXBsZXggYm9vbGVhbiBleHByZXNz aW9ucwotQ1JFQVRFIFZJRVcgcnByX2V2ODEgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9kZWZfY29t cGxleF9ib29sIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjE2MCw3ICsyMTYwLDcgQEAgV0lO RE9XIHcgQVMgKAogICAgICAgICBBIEFTICh2ICUgNSA8PiAwKSBBTkQgKHYgJSAzIDw+IDApLAog ICAgICAgICBCIEFTICh2ICUgNSA9IDApIE9SICh2ICUgMyA9IDApCiApOwotU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4MScpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2RlZl9jb21wbGV4 X2Jvb2wnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpA QCAtMjE3NSw3ICsyMTc1LDcgQEAgV0lORE9XIHcgQVMgKAogKTsnKTsKIAogLS0gVXNpbmcgUFJF ViBmdW5jdGlvbgotQ1JFQVRFIFZJRVcgcnByX2V2ODIgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9k ZWZfcHJldiBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMzApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTIxODcsNyArMjE4Nyw3IEBAIFdJTkRP VyB3IEFTICgKICAgICAgICAgVSBBUyB2ID4gUFJFVih2KSwKICAgICAgICAgRCBBUyB2IDwgUFJF Vih2KQogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2ODInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9kZWZfcHJldicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwog CiAtLSBVc2luZyBOVUxMIGNvbXBhcmlzb25zCi1DUkVBVEUgVklFVyBycHJfZXY4MyBBUworQ1JF QVRFIFZJRVcgcnByX2V2X2RlZl9udWxsIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9N ICgKICAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBB UyB2CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsg QikKICAgICBERUZJTkUgQSBBUyB2IElTIE5PVCBOVUxMLCBCIEFTIHYgSVMgTlVMTAogKTsKLVNF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2ODMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9k ZWZfbnVsbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CkBAIC0yMjM1LDcgKzIyMzUsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLS0gNTAwIHJv d3MgLSB2ZXJpZnkgc3RhdGlzdGljcyBzY2FsZSBjb3JyZWN0bHkKLUNSRUFURSBWSUVXIHJwcl9l djg0IEFTCitDUkVBVEUgVklFVyBycHJfZXZfc2NhbGVfNTAwcm93cyBBUwogU0VMRUNUIGNvdW50 KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCiBXSU5ET1cg dyBBUyAoCkBAIC0yMjQ0LDcgKzIyNDQsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAo QSsgQiBDKQogICAgIERFRklORSBBIEFTIHYgJSAxMCA8IDcsIEIgQVMgdiAlIDEwID0gNywgQyBB UyB2ICUgMTAgPSA4CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4NCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X3NjYWxlXzUwMHJvd3MnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CiBTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQogU0VMRUNUIGNvdW50KCopIE9WRVIgdwpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgV0lORE9XIHcg QVMgKAogKTsnKTsKIAogLS0gSGlnaCBtYXRjaCBjb3VudCBzY2VuYXJpbwotQ1JFQVRFIFZJRVcg cnByX2V2ODUgQVMKK0NSRUFURSBWSUVXIHJwcl9ldl9zY2FsZV9oaWdoX21hdGNoIEFTCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikK IFdJTkRPVyB3IEFTICgKQEAgLTIyNjYsNyArMjI2Niw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQ QVRURVJOIChBIEIpCiAgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAog KTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2ODUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9zY2FsZV9oaWdoX21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcKQEAgLTIyNzksNyArMjI3OSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7 CiAKIC0tIEhpZ2ggc2tpcCBjb3VudCBzY2VuYXJpbwotQ1JFQVRFIFZJRVcgcnByX2V2ODYgQVMK K0NSRUFURSBWSUVXIHJwcl9ldl9zY2FsZV9oaWdoX3NraXAgQVMKIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMg KApAQCAtMjI5Myw3ICsyMjkzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBEIEFTIHYgJSAx MDAgPSA0LAogICAgICAgICBFIEFTIHYgJSAxMDAgPSA1CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4NicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3NjYWxlX2hpZ2hfc2tpcCcp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhw bGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwg VElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMzIx LDcgKzIzMjEsNyBAQCBXSU5ET1cgdyBBUyAoCiAtLQogCiAtLSBXaXRob3V0IFJQUjogcm93X251 bWJlcigpIGZyYW1lIGlzIG9wdGltaXplZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcKLUNS RUFURSBWSUVXIHJwcl9ldjg3IEFTCitDUkVBVEUgVklFVyBycHJfZXZfb3B0X25vX3JwciBBUwog U0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBB UyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMzI5LDEwICsyMzI5LDEwIEBAIFdJTkRPVyB3IEFT ICgKICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK ICk7CiAKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXY4NzsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXZfb3B0X25vX3JwcjsKIAogLS0gV2l0 aCBSUFI6IGZyYW1lIG11c3QgcmVtYWluIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORwotQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMKK0NSRUFURSBWSUVXIHJw cl9ldl9vcHRfd2l0aF9ycHIgQVMKIFNFTEVDVCByb3dfbnVtYmVyKCkgT1ZFUiB3CiBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAtMjM0NCwxMyAr MjM0NCwxMyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgdiA+IFBSRVYodikKICk7CiAK LUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXY4ODsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXZfb3B0X3dpdGhfcnByOwogCiAtLQogLS0gUGxh bm5lciBvcHRpbWl6YXRpb246IG5vbi1SUFIgYW5kIFJQUiB3aW5kb3dzIHRoYXQgc2hhcmUgdGhl IHNhbWUgYmFzZSBmcmFtZQogLS0gYWZ0ZXIgZnJhbWUgb3B0aW1pemF0aW9uIGFyZSBrZXB0IGFz IHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4KIC0tCi1DUkVBVEUgVklFVyBycHJfZXY4OSBBUwor Q1JFQVRFIFZJRVcgcnByX2V2X29wdF9taXhlZCBBUwogU0VMRUNUCiAgICAgcm93X251bWJlcigp IE9WRVIgd19ub3JtYWwgQVMgcm5fbm9ybWFsLAogICAgIHJvd19udW1iZXIoKSBPVkVSIHdfcnBy IEFTIHJuX3JwcgpAQCAtMjM2NCw3ICsyMzY0LDcgQEAgV0lORE9XCiAgICAgICAgIERFRklORSBB IEFTIHYgPiAxCiAgICAgKTsKIAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldjg5OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldl9vcHRfbWl4 ZWQ7CiAKIC0tCiAtLSBQbGFubmVyIG9wdGltaXphdGlvbjogZmluZF93aW5kb3dfcnVuX2NvbmRp dGlvbnMgbXVzdCBub3QgcHVzaCBkb3duCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0011-Implement-1-slot-PREV-NEXT-navigation-for-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0011-Implement-1-slot-PREV-NEXT-navigation-for-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr8at110 RnJvbSAxYjQ1YjU5MzI5ZjkyMDE3NGM5MGVlMTgxYzUwNjUwNWViOTM1N2Q3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDIwIE1hciAyMDI2IDIzOjUyOjQyICswOTAwClN1YmplY3Q6IFtQQVRDSF0gSW1wbGVt ZW50IDEtc2xvdCBQUkVWL05FWFQgbmF2aWdhdGlvbiBmb3IgUlBSCgpBZGQgUFJFVih2YWx1ZSBb LCBvZmZzZXRdKSBhbmQgTkVYVCh2YWx1ZSBbLCBvZmZzZXRdKSBuYXZpZ2F0aW9uCmZ1bmN0aW9u cyBmb3IgdXNlIGluIHRoZSBERUZJTkUgY2xhdXNlIG9mIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9u LgoKVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgY29sdW1uIHZhbHVlIGF0IGEgcm93IG9mZnNl dCByb3dzCmJlZm9yZS9hZnRlciB0aGUgY3VycmVudCByb3cgd2l0aGluIHRoZSBwYXJ0aXRpb24s IHJldHVybmluZyBOVUxMCmlmIHRoZSB0YXJnZXQgcm93IGlzIG91dHNpZGUgdGhlIHBhcnRpdGlv bi4gVGhlIG9mZnNldCBkZWZhdWx0cwp0byAxIGlmIG9taXR0ZWQ7IG9mZnNldD0wIHJlZmVycyB0 byB0aGUgY3VycmVudCByb3cgaXRzZWxmOwpOVUxMIG9yIG5lZ2F0aXZlIG9mZnNldCByYWlzZXMg YW4gZXJyb3IuCgpLZXkgZGVzaWduOiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyAzLXNsb3QgbW9k ZWwgKG91dGVyL3NjYW4vaW5uZXIpLAphIHNpbmdsZS1zbG90IHN3YXAgbW9kZWwgaXMgdXNlZC4g RUVPUF9SUFJfTkFWX1NFVCB0ZW1wb3JhcmlseQpyZXBsYWNlcyBlY3h0X291dGVydHVwbGUgd2l0 aCB0aGUgdGFyZ2V0IHJvdywgdGhlIGFyZ3VtZW50CmV4cHJlc3Npb24gZXZhbHVhdGVzIGFnYWlu c3QgaXQsIGFuZCBFRU9QX1JQUl9OQVZfUkVTVE9SRSByZXN0b3Jlcwp0aGUgb3JpZ2luYWwgc2xv dC4gVGhpcyBlbGltaW5hdGVzIHZhcm5vIHJld3JpdGluZyBhbmQgbmF0dXJhbGx5CnN1cHBvcnRz IGFyYml0cmFyeSBvZmZzZXRzLgoKQSBkZWRpY2F0ZWQgbmF2X3dpbm9iaiB3aXRoIGl0cyBvd24g dHVwbGVzdG9yZSByZWFkIHBvaW50ZXIgYXZvaWRzCmludGVyZmVyZW5jZSB3aXRoIGFnZ3JlZ2F0 ZSBwcm9jZXNzaW5nLiBBIG1hcmsgcG9pbnRlciBwaW5uZWQgYXQKcG9zaXRpb24gMCBwcmV2ZW50 cyB0dXBsZXN0b3JlIHRydW5jYXRpb24gc28gdGhhdCBQUkVWKGV4cHIsIE4pCmNhbiByZWFjaCBh bnkgcHJpb3Igcm93LgoKUlBSTmF2RXhwciBpcyBhIG5ldyBleHByZXNzaW9uIG5vZGUgdGhhdCBy ZXBsYWNlcyB0aGUgcHJldmlvdXMKYXBwcm9hY2ggb2YgaWRlbnRpZnlpbmcgUFJFVi9ORVhUIGJ5 IGZ1bmNpZC4gVGhlIHBhcnNlciB0cmFuc2Zvcm1zClBSRVYvTkVYVCBmdW5jdGlvbiBjYWxscyBp bnRvIFJQUk5hdkV4cHIgbm9kZXMgaW4gUGFyc2VGdW5jT3JDb2x1bW4oKS4KVmFsaWRhdGlvbiBp biBwYXJzZV9ycHIuYyByZWplY3RzIG5lc3RlZCBQUkVWL05FWFQsIHJlcXVpcmVzIGF0CmxlYXN0 IG9uZSBjb2x1bW4gcmVmZXJlbmNlIGluIHRoZSBmaXJzdCBhcmd1bWVudCwgYW5kIGVuc3VyZXMK dGhlIG9mZnNldCBpcyBhIHJ1bi10aW1lIGNvbnN0YW50LgoKUlBSTmF2S2luZCB1c2VzIHBsYWlu IGVudW0gdmFsdWVzIChub3QgLTEvKzEpIHNvIHRoYXQgRklSU1QvTEFTVApjYW4gYmUgYWRkZWQg bGF0ZXIgd2l0aG91dCBhcml0aG1ldGljIHRyaWNrcy4KCkxMVk0gSklUIGZhbGxzIGJhY2sgdG8g dGhlIGludGVycHJldGVyIGZvciBleHByZXNzaW9ucyBjb250YWluaW5nClJQUiBuYXZpZ2F0aW9u IG9wY29kZXMsIGJlY2F1c2UgSklUIGNvZGUgY2FjaGVzIHRoZSBvdXRlcnR1cGxlJ3MKdHRzX3Zh bHVlcy90dHNfaXNudWxsIHBvaW50ZXJzIGluIHRoZSBlbnRyeSBibG9jayBhbmQgdGhlCm1pZC1l eHByZXNzaW9uIHNsb3Qgc3dhcCBsZWF2ZXMgdGhlbSBzdGFsZS4gT25seSBERUZJTkUgY2xhdXNl CmV4cHJlc3Npb25zIHdpdGggUFJFVi9ORVhUIGFyZSBhZmZlY3RlZDsgb3RoZXIgZXhwcmVzc2lv bnMgaW4KdGhlIHNhbWUgcXVlcnkgYXJlIHN0aWxsIEpJVC1jb21waWxlZCBub3JtYWxseS4KLS0t CiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sICAgICAgICB8ICAyMiArLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICAgICAgfCAgNTYgKysrCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jICAgICB8IDExMCArKysrKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgfCAyNDMgKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICAgICAgfCAgNDAgKysKIHNyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jICAgICAgICAgICAgIHwgIDMzICsrCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jICAgICAgICAgICB8ICAzMCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jw ci5jICAgICAgICAgICAgfCAgODYgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jICAgICAgICAgfCAgMTYgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMg ICAgICAgfCAgNTIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgICAgIHwgIDE4 ICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaCAgICAgIHwgICAzICsKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICB8ICAzMSArKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHIub3V0ICAgICAgICAgfCA1NTEgKysrKysrKysrKysrKysrKysrKysr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgfCAgODAgKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCAgICAgICAgICAgICAgfCAzMjIgKysrKysrKysr KysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsICAgICAgfCAgNTYgKysr CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMyArLQogMjEg ZmlsZXMgY2hhbmdlZCwgMTYwNiBpbnNlcnRpb25zKCspLCAxNjQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbCBiL2RvYy9zcmMvc2dt bC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKaW5kZXggYWUzNmUwZjMxMzUuLjFiOWI5OTNhODE3IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKQEAgLTMwNCwxMiArMzA0LDE3IEBACiAgICAg ICAgIDxpbmRleHRlcm0+CiAgICAgICAgICA8cHJpbWFyeT5wcmV2PC9wcmltYXJ5PgogICAgICAg ICA8L2luZGV4dGVybT4KLSAgICAgICAgPGZ1bmN0aW9uPnByZXY8L2Z1bmN0aW9uPiAoIDxwYXJh bWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gKQorICAgICAg ICA8ZnVuY3Rpb24+cHJldjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVy PiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVy PiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQogICAgICAgICA8cmV0dXJudmFsdWU+YW55ZWxlbWVu dDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAgICAgICBS ZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHByZXZpb3VzIHJvdzsKLSAgICAgICAgcmV0 dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIHJvdyBpbiB0aGUgd2luZG93IGZyYW1l LgorICAgICAgICBSZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHJvdyA8cGFyYW1ldGVy Pm9mZnNldDwvcGFyYW1ldGVyPgorICAgICAgICByb3dzIGJlZm9yZSB0aGUgY3VycmVudCByb3cg d2l0aGluIHRoZSB3aW5kb3cgZnJhbWU7CisgICAgICAgIHJldHVybnMgTlVMTCBpZiB0aGUgdGFy Z2V0IHJvdyBpcyBvdXRzaWRlIHRoZSB3aW5kb3cgZnJhbWUuCisgICAgICAgIDxwYXJhbWV0ZXI+ b2Zmc2V0PC9wYXJhbWV0ZXI+IGRlZmF1bHRzIHRvIDEgaWYgb21pdHRlZC4KKyAgICAgICAgPHBh cmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vy OworICAgICAgICBhbiBvZmZzZXQgb2YgMCByZWZlcnMgdG8gdGhlIGN1cnJlbnQgcm93IGl0c2Vs Zi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBub3QgYmUgTlVM TC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCkBAIC0zMTgsMTIgKzMy MywxNyBAQAogICAgICAgICA8aW5kZXh0ZXJtPgogICAgICAgICAgPHByaW1hcnk+bmV4dDwvcHJp bWFyeT4KICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlvbj5uZXh0PC9mdW5j dGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1lbnQ8L3R5 cGU+ICkKKyAgICAgICAgPGZ1bmN0aW9uPm5leHQ8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+dmFs dWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gWywgPHBhcmFtZXRlcj5vZmZz ZXQ8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiBdICkKICAgICAgICAgPHJldHVybnZh bHVlPmFueWVsZW1lbnQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFy YT4KLSAgICAgICAgUmV0dXJucyB0aGUgY29sdW1uIHZhbHVlIGF0IHRoZSBuZXh0IHJvdzsKLSAg ICAgICAgcmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIG5leHQgcm93IGluIHRoZSB3aW5kb3cg ZnJhbWUuCisgICAgICAgIFJldHVybnMgdGhlIGNvbHVtbiB2YWx1ZSBhdCB0aGUgcm93IDxwYXJh bWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+CisgICAgICAgIHJvd3MgYWZ0ZXIgdGhlIGN1cnJlbnQg cm93IHdpdGhpbiB0aGUgd2luZG93IGZyYW1lOworICAgICAgICByZXR1cm5zIE5VTEwgaWYgdGhl IHRhcmdldCByb3cgaXMgb3V0c2lkZSB0aGUgd2luZG93IGZyYW1lLgorICAgICAgICA8cGFyYW1l dGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZhdWx0cyB0byAxIGlmIG9taXR0ZWQuCisgICAgICAg IDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50 ZWdlcjsKKyAgICAgICAgYW4gb2Zmc2V0IG9mIDAgcmVmZXJzIHRvIHRoZSBjdXJyZW50IHJvdyBp dHNlbGYuCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3Qgbm90IGJl IE5VTEwuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMKaW5kZXggNzcyMjkxNDFiMzguLmRiZWQ0ZjQ4YTBmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMKQEAgLTEyMjIsNiArMTIyMiw2MiBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAq bm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIFRfUlBS TmF2RXhwcjoKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJQUiBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyAo UFJFVi9ORVhUKSBhcmUgY29tcGlsZWQgaW50bworCQkJCSAqIEVFT1BfUlBSX05BVl9TRVQgLyBF RU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIGluc3RlYWQgb2YKKwkJCQkgKiBhIG5vcm1hbCBm dW5jdGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUgc3dhcHMKKwkJCQkgKiBlY3h0X291dGVydHVw bGUgdG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudCBleHByZXNzaW9uCisJCQkJICogaXMg Y29tcGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQgc2xvdCksIGFuZCB0aGUK KwkJCQkgKiBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc2xvdC4KKwkJCQkg Ki8KKwkJCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCVdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZTsKKworCQkJCUFzc2VydChzdGF0ZS0+cGFyZW50ICYmIElzQShz dGF0ZS0+cGFyZW50LCBXaW5kb3dBZ2dTdGF0ZSkpOworCQkJCXdpbnN0YXRlID0gKFdpbmRvd0Fn Z1N0YXRlICopIHN0YXRlLT5wYXJlbnQ7CisKKwkJCQkvKiBFbWl0IFNFVCBvcGNvZGU6IHN3YXAg c2xvdCB0byB0YXJnZXQgcm93ICovCisJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1JQUl9OQVZf U0VUOworCQkJCXNjcmF0Y2guZC5ycHJfbmF2LndpbnN0YXRlID0gd2luc3RhdGU7CisJCQkJc2Ny YXRjaC5kLnJwcl9uYXYua2luZCA9IG5hdi0+a2luZDsKKworCQkJCWlmIChuYXYtPm9mZnNldF9h cmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEFsbG9jYXRlIHN0b3JhZ2UgZm9y IHRoZSBydW50aW1lIG9mZnNldCB2YWx1ZS4gIFRoZQorCQkJCQkgKiBvZmZzZXQgZXhwcmVzc2lv biBpcyBjb21waWxlZCBiZWxvdyBzbyBpdCBydW5zIGJlZm9yZQorCQkJCQkgKiBFRU9QX1JQUl9O QVZfU0VULgorCQkJCQkgKi8KKwkJCQkJRGF0dW0JICAgKm9mZnNldF92YWx1ZSA9IHBhbGxvY19v YmplY3QoRGF0dW0pOworCQkJCQlib29sCSAgICpvZmZzZXRfaXNudWxsID0gcGFsbG9jX29iamVj dChib29sKTsKKworCQkJCQkvKiBDb21waWxlIHRoZSBvZmZzZXQgZXhwcmVzc2lvbiBpbnRvIHRo ZSB0ZW1wIHN0b3JhZ2UgKi8KKwkJCQkJRXhlY0luaXRFeHByUmVjKG5hdi0+b2Zmc2V0X2FyZywg c3RhdGUsCisJCQkJCQkJCQlvZmZzZXRfdmFsdWUsIG9mZnNldF9pc251bGwpOworCisJCQkJCXNj cmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IG9mZnNldF92YWx1ZTsKKwkJCQkJc2NyYXRj aC5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCA9IG9mZnNldF9pc251bGw7CisJCQkJfQorCQkJCWVs c2UKKwkJCQl7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IE5VTEw7CisJ CQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBOVUxMOworCQkJCX0KKworCQkJ CUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCQkJCS8qIENvbXBpbGUgdGhl IGFyZ3VtZW50IGV4cHJlc3Npb24gbm9ybWFsbHkgKi8KKwkJCQlFeGVjSW5pdEV4cHJSZWMobmF2 LT5hcmcsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkJCS8qIEVtaXQgUkVTVE9SRSBvcGNv ZGU6IHJlc3RvcmUgb3JpZ2luYWwgc2xvdCAqLworCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9S UFJfTkFWX1JFU1RPUkU7CisJCQkJc2NyYXRjaC5kLnJwcl9uYXYud2luc3RhdGUgPSB3aW5zdGF0 ZTsKKwkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7CisJ CQl9CisKIAkJY2FzZSBUX0Z1bmNFeHByOgogCQkJewogCQkJCUZ1bmNFeHByICAgKmZ1bmMgPSAo RnVuY0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNF eHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmluZGV4 IDNjNDg0M2NkZTg2Li5lNDFmYWE5NWJlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jCkBAIC01NiwxMiArNTYsMTQgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAK KyNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJleGVjdXRvci9l eGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKQEAgLTU3OCw2ICs1 ODAsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfV0lORE9XX0ZVTkMsCiAJCSYmQ0FT RV9FRU9QX01FUkdFX1NVUFBPUlRfRlVOQywKIAkJJiZDQVNFX0VFT1BfU1VCUExBTiwKKwkJJiZD QVNFX0VFT1BfUlBSX05BVl9TRVQsCisJCSYmQ0FTRV9FRU9QX1JQUl9OQVZfUkVTVE9SRSwKIAkJ JiZDQVNFX0VFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSwKIAkJJiZDQVNFX0VFT1BfQUdHX0RF U0VSSUFMSVpFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0lOUFVUX0NIRUNLX0FSR1MsCkBA IC0yMDA1LDYgKzIwMDksMjQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAK KwkJLyogUlBSIG5hdmlnYXRpb246IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93ICovCisJCUVFT19D QVNFKEVFT1BfUlBSX05BVl9TRVQpCisJCXsKKwkJCUV4ZWNFdmFsUlBSTmF2U2V0KHN0YXRlLCBv cCwgZWNvbnRleHQpOworCQkJb3V0ZXJzbG90ID0gZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZTsK KworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCS8qIFJQUiBuYXZpZ2F0aW9uOiByZXN0b3JlIHNs b3QgdG8gb3JpZ2luYWwgcm93ICovCisJCUVFT19DQVNFKEVFT1BfUlBSX05BVl9SRVNUT1JFKQor CQl7CisJCQlFeGVjRXZhbFJQUk5hdlJlc3RvcmUoc3RhdGUsIG9wLCBlY29udGV4dCk7CisJCQlv dXRlcnNsb3QgPSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlOworCisJCQlFRU9fTkVYVCgpOwor CQl9CisKIAkJLyogZXZhbHVhdGUgYSBzdHJpY3QgYWdncmVnYXRlIGRlc2VyaWFsaXphdGlvbiBm dW5jdGlvbiAqLwogCQlFRU9fQ0FTRShFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUpCiAJCXsK QEAgLTU5MTgsMyArNTk0MCw5MSBAQCBFeGVjQWdnUGxhaW5UcmFuc0J5UmVmKEFnZ1N0YXRlICph Z2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAogCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRDb250ZXh0KTsKIH0KKworLyoKKyAqIEV2YWx1YXRlIFJQUiBQUkVWL05FWFQgbmF2 aWdhdGlvbjogc3dhcCBzbG90IHRvIHRhcmdldCByb3cuCisgKgorICogU2F2ZXMgdGhlIGN1cnJl bnQgb3V0ZXJ0dXBsZSBpbnRvIHdpbnN0YXRlIGZvciBsYXRlciByZXN0b3JlLCBjb21wdXRlcwor ICogdGhlIHRhcmdldCByb3cgcG9zaXRpb24sIGZldGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgc2xv dCBmcm9tIHRoZQorICogdHVwbGVzdG9yZSwgYW5kIHJlcGxhY2VzIGVjb250ZXh0LT5lY3h0X291 dGVydHVwbGUgd2l0aCBpdC4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBib3RoIGZyb20gdGhlIGlu dGVycHJldGVyIGlubGluZSBoYW5kbGVyIGFuZCBmcm9tCisgKiBKSVQtY29tcGlsZWQgZXhwcmVz c2lvbnMgdmlhIGJ1aWxkX0V2YWxYRnVuYy4KKyAqLwordm9pZAorRXhlY0V2YWxSUFJOYXZTZXQo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0 KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IG9wLT5kLnJwcl9uYXYud2luc3RhdGU7 CisJaW50NjQJCW9mZnNldDsKKwlpbnQ2NAkJdGFyZ2V0X3BvczsKKwlUdXBsZVRhYmxlU2xvdCAq dGFyZ2V0X3Nsb3Q7CisKKwkvKiBTYXZlIGN1cnJlbnQgc2xvdCBmb3IgbGF0ZXIgcmVzdG9yZSAq LworCXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0dXBsZSA9IGVjb250ZXh0LT5lY3h0X291dGVy dHVwbGU7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgdW5zaWduZWQgb2Zmc2V0LiAgRm9yIDIt YXJnIFBSRVYvTkVYVCB0aGUgb2Zmc2V0CisJICogZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVu IGV2YWx1YXRlZCBpbnRvIG9mZnNldF92YWx1ZS4gIE5VTEwgb3IKKwkgKiBuZWdhdGl2ZSBvZmZz ZXRzIGFyZSBlcnJvcnMgcGVyIHRoZSBTUUwgc3RhbmRhcmQgKElTTy9JRUMgOTA3NS0yLAorCSAq IFN1YmNsYXVzZSA1LjYuMikuCisJICovCisJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0X3ZhbHVl ICE9IE5VTEwpCisJeworCQlpZiAoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dF RCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbnVsbCIpKSk7 CisKKwkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCgqb3AtPmQucnByX25hdi5vZmZzZXRfdmFsdWUp OworCisJCWlmIChvZmZzZXQgPCAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVY VCBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSkpOworCX0KKwllbHNlCisJCW9mZnNldCA9 IDE7CisKKwkvKgorCSAqIENhbGN1bGF0ZSB0YXJnZXQgcG9zaXRpb24gYmFzZWQgb24gbmF2aWdh dGlvbiBkaXJlY3Rpb24uICBPbiBvdmVyZmxvdywKKwkgKiB1c2UgLTEgc28gdGhhdCBFeGVjUlBS TmF2R2V0U2xvdCB0cmVhdHMgaXQgYXMgb3V0IG9mIHJhbmdlLgorCSAqLworCXN3aXRjaCAob3At PmQucnByX25hdi5raW5kKQorCXsKKwkJY2FzZSBSUFJfTkFWX1BSRVY6CisJCQlpZiAocGdfc3Vi X3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LCAmdGFyZ2V0X3Bvcykp CisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJYnJlYWs7CisJCWNhc2UgUlBSX05BVl9ORVhUOgor CQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9mZnNldCwg JnRhcmdldF9wb3MpKQorCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCWJyZWFrOworCX0KKworCS8q IEZldGNoIHRhcmdldCByb3cgc2xvdCAocmV0dXJucyBuYXZfbnVsbF9zbG90IGlmIG91dCBvZiBy YW5nZSkgKi8KKwl0YXJnZXRfc2xvdCA9IEV4ZWNSUFJOYXZHZXRTbG90KHdpbnN0YXRlLCB0YXJn ZXRfcG9zKTsKKworCS8qCisJICogVXBkYXRlIGVjb250ZXh0IHRvIHBvaW50IHRvIHRoZSB0YXJn ZXQgc2xvdC4gIEFsc28gZGVjb21wcmVzcyB0aGUgbmV3CisJICogc2xvdCdzIGF0dHJpYnV0ZXMg c2luY2UgRkVUQ0hTT01FIGFscmVhZHkgcmFuIGZvciB0aGUgb3JpZ2luYWwgc2xvdC4KKwkgKiBU aGUgY2FsbGVyIChpbnRlcnByZXRlciBvciBKSVQpIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGlu ZyBhbnkgbG9jYWwKKwkgKiBzbG90IGNhY2hlIChlLmcuIG91dGVyc2xvdCkgZnJvbSBlY29udGV4 dCBhZnRlciB3ZSByZXR1cm4uCisJICovCisJc2xvdF9nZXRhbGxhdHRycyh0YXJnZXRfc2xvdCk7 CisJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHRhcmdldF9zbG90OworfQorCisvKgorICog RXZhbHVhdGUgUlBSIFBSRVYvTkVYVCBuYXZpZ2F0aW9uOiByZXN0b3JlIHNsb3QgdG8gb3JpZ2lu YWwgcm93LgorICoKKyAqIFJlc3RvcmVzIGVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgZnJvbSB0 aGUgc2F2ZWQgc2xvdCBpbiB3aW5zdGF0ZS4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUg Zm9yIHVwZGF0aW5nIGFueSBsb2NhbCBzbG90IGNhY2hlLgorICovCit2b2lkCitFeGVjRXZhbFJQ Uk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJICBF eHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gb3At PmQucnByX25hdi53aW5zdGF0ZTsKKworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSB3aW5z dGF0ZS0+bmF2X3NhdmVkX291dGVydHVwbGU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKaW5kZXggMWM5MjVlMDIyMWQuLmQyZmZmZTBmY2U2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAidXRpbHMvYWNsLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgot I2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRkYXR1 bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCkBAIC0xNzcsMTQgKzE3Niw2IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd1N0YXRlUGVy QWdnRGF0YQogCWJvb2wJCXJlc3RhcnQ7CQkvKiBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhZ2cgaW4g dGhpcyBjeWNsZT8gKi8KIH0gV2luZG93U3RhdGVQZXJBZ2dEYXRhOwogCi0vKgotICogU3RydWN0 dXJlIHVzZWQgYnkgY2hlY2tfcnByX25hdmlnYXRpb24oKSBhbmQgcnByX25hdmlnYXRpb25fd2Fs a2VyKCkuCi0gKi8KLXR5cGVkZWYgc3RydWN0IE5hdmlnYXRpb25JbmZvCi17Ci0JYm9vbAkJaXNf cHJldjsJCS8qIHRydWUgaWYgUFJFViAqLwotCWludAkJCW51bV92YXJzOwkJLyogbnVtYmVyIG9m IHZhciBub2RlcyAqLwotfSBOYXZpZ2F0aW9uSW5mbzsKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV93aW5kb3dhZ2dyZWdhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAogCQkJCQkJCQkJICAg V2luZG93U3RhdGVQZXJGdW5jIHBlcmZ1bmNzdGF0ZSwKQEAgLTI0Myw5ICsyMzQsNiBAQCBzdGF0 aWMgdWludDggZ2V0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSAg aW50NjQgcG9zLCBpbnQgYXJnbm8pOwogc3RhdGljIHZvaWQgcHV0X25vdG51bGxfaW5mbyhXaW5k b3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSBpbnQ2NCBwb3MsIGludCBhcmdubywgYm9vbCBpc251 bGwpOwotc3RhdGljIHZvaWQgYXR0bm9fbWFwKE5vZGUgKm5vZGUpOwotc3RhdGljIGJvb2wgYXR0 bm9fbWFwX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKLQogc3RhdGljIGJvb2wg cnByX2lzX2RlZmluZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKIHN0YXRpYyBpbnQJcm93 X2lzX2luX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKTsKIApA QCAtMjUzLDkgKzI0MSw2IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3JlZHVjZWRfZnJhbWUoV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlKTsKIHN0YXRpYyBpbnQJZ2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVz KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKTsKIHN0YXRpYyB2b2lkIHVwZGF0 ZV9yZWR1Y2VkX2ZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcyk7CiAKLXN0YXRp YyB2b2lkIGNoZWNrX3Jwcl9uYXZpZ2F0aW9uKE5vZGUgKm5vZGUsIGJvb2wgaXNfcHJldik7Ci1z dGF0aWMgYm9vbCBycHJfbmF2aWdhdGlvbl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4 dCk7Ci0KIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zIC0gTkZBIHJvdyBldmFsdWF0aW9uICovCiBz dGF0aWMgYm9vbCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBv cywgYm9vbCAqdmFyTWF0Y2hlZCk7CiAKQEAgLTEyODAsNiArMTI2NSwyNSBAQCBwcmVwYXJlX3R1 cGxlc3RvcmUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQl9CiAJfQogCisJLyogQ3JlYXRl IHJlYWQvbWFyayBwb2ludGVycyBmb3IgUlBSIG5hdmlnYXRpb24gaWYgbmVlZGVkICovCisJaWYg KHdpbnN0YXRlLT5uYXZfd2lub2JqKQorCXsKKwkJLyoKKwkJICogQWxsb2NhdGUgYSBtYXJrIHBv aW50ZXIgcGlubmVkIGF0IHBvc2l0aW9uIDAgc28gdGhhdCB0aGUgdHVwbGVzdG9yZQorCQkgKiBu ZXZlciB0cnVuY2F0ZXMgcm93cyB0aGF0IGEgUFJFVihleHByLCBOKSBtaWdodCBuZWVkLgorCQkg KgorCQkgKiBYWFggVGhpcyByZXRhaW5zIHRoZSBlbnRpcmUgcGFydGl0aW9uIGluIHRoZSB0dXBs ZXN0b3JlLiAgSWYgdGhlCisJCSAqIERFRklORSBjbGF1c2Ugb25seSB1c2VzIFBSRVYvTkVYVCB3 aXRoIHNtYWxsIGNvbnN0YW50IG9mZnNldHMsIHdlCisJCSAqIGNvdWxkIGFkdmFuY2UgdGhlIG1h cmsgdG8gKGN1cnJlbnRwb3MgLSBtYXhfb2Zmc2V0KSBpbnN0ZWFkLgorCQkgKi8KKwkJd2luc3Rh dGUtPm5hdl93aW5vYmotPm1hcmtwdHIgPQorCQkJdHVwbGVzdG9yZV9hbGxvY19yZWFkX3BvaW50 ZXIod2luc3RhdGUtPmJ1ZmZlciwgMCk7CisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5yZWFkcHRy ID0KKwkJCXR1cGxlc3RvcmVfYWxsb2NfcmVhZF9wb2ludGVyKHdpbnN0YXRlLT5idWZmZXIsCisJ CQkJCQkJCQkJICBFWEVDX0ZMQUdfQkFDS1dBUkQpOworCQl3aW5zdGF0ZS0+bmF2X3dpbm9iai0+ bWFya3BvcyA9IDA7CisJfQorCiAJLyoKIAkgKiBJZiB3ZSBhcmUgaW4gUkFOR0Ugb3IgR1JPVVBT IG1vZGUsIHRoZW4gZGV0ZXJtaW5pbmcgZnJhbWUgYm91bmRhcmllcwogCSAqIHJlcXVpcmVzIHBo eXNpY2FsIGFjY2VzcyB0byB0aGUgZnJhbWUgZW5kcG9pbnQgcm93cywgZXhjZXB0IGluIGNlcnRh aW4KQEAgLTEzOTEsNiArMTM5NSwxMyBAQCBiZWdpbl9wYXJ0aXRpb24oV2luZG93QWdnU3RhdGUg KndpbnN0YXRlKQogCQl3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8gPSAwOwogCX0KIAorCS8qIHJl c2V0IG1hcmsgYW5kIHNlZWsgcG9zaXRpb25zIGZvciBSUFIgbmF2aWdhdGlvbiAqLworCWlmICh3 aW5zdGF0ZS0+bmF2X3dpbm9iaikKKwl7CisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcG9z ID0gLTE7CisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5zZWVrcG9zID0gLTE7CisJfQorCiAJLyog cmVzZXQgbWFyayBhbmQgc2VlayBwb3NpdGlvbnMgZm9yIGVhY2ggcmVhbCB3aW5kb3cgZnVuY3Rp b24gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51bWZ1bmNzOyBpKyspCiAJewpAQCAtMjcyOSwx NSArMjc0MCwxOCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCXdpbnN0YXRlLT50ZW1wX3Nsb3RfMiA9IEV4ZWNJbml0RXh0 cmFUdXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKIAkJCQkJCQkJCQkJCSAgICZUVFNPcHNNaW5p bWFsVHVwbGUpOwogCi0Jd2luc3RhdGUtPnByZXZfc2xvdCA9IEV4ZWNJbml0RXh0cmFUdXBsZVNs b3QoZXN0YXRlLCBzY2FuRGVzYywKLQkJCQkJCQkJCQkJCSAmVFRTT3BzTWluaW1hbFR1cGxlKTsK KwlpZiAobm9kZS0+cnBQYXR0ZXJuICE9IE5VTEwpCisJeworCQl3aW5zdGF0ZS0+bmF2X3Nsb3Qg PSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2MsCisJCQkJCQkJCQkJCQkJ JlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsKIAot CXdpbnN0YXRlLT5uZXh0X3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2Nh bkRlc2MsCi0JCQkJCQkJCQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdpbnN0YXRlLT5u YXZfbnVsbF9zbG90ID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAor CQkJCQkJCQkJCQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7CisJCXdpbnN0YXRlLT5uYXZfbnVs bF9zbG90ID0gRXhlY1N0b3JlQWxsTnVsbFR1cGxlKHdpbnN0YXRlLT5uYXZfbnVsbF9zbG90KTsK IAotCXdpbnN0YXRlLT5udWxsX3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwg c2NhbkRlc2MsCi0JCQkJCQkJCQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7Ci0Jd2luc3RhdGUt Pm51bGxfc2xvdCA9IEV4ZWNTdG9yZUFsbE51bGxUdXBsZSh3aW5zdGF0ZS0+bnVsbF9zbG90KTsK KwkJd2luc3RhdGUtPm5hdl9zYXZlZF9vdXRlcnR1cGxlID0gTlVMTDsKKwl9CiAKIAkvKgogCSAq IGNyZWF0ZSBmcmFtZSBoZWFkIGFuZCB0YWlsIHNsb3RzIG9ubHkgaWYgbmVlZGVkIChtdXN0IGNy ZWF0ZSBzbG90cyBpbgpAQCAtMjkwNyw2ICsyOTIxLDIzIEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXdpbnN0YXRlLT5h Z2dfd2lub2JqID0gYWdnX3dpbm9iajsKIAl9CiAKKwkvKgorCSAqIFNldCB1cCBXaW5kb3dPYmpl Y3QgZm9yIFJQUiBuYXZpZ2F0aW9uIG9wY29kZXMuICBUaGlzIGlzIHNlcGFyYXRlIGZyb20KKwkg KiBhZ2dfd2lub2JqIGJlY2F1c2UgaXQgbmVlZHMgaXRzIG93biByZWFkIHBvaW50ZXIgdG8gYXZv aWQgaW50ZXJmZXJpbmcKKwkgKiB3aXRoIGFnZ3JlZ2F0ZSBwcm9jZXNzaW5nLgorCSAqLworCWlm IChub2RlLT5ycFBhdHRlcm4gIT0gTlVMTCkKKwl7CisJCVdpbmRvd09iamVjdCBuYXZfd2lub2Jq ID0gbWFrZU5vZGUoV2luZG93T2JqZWN0RGF0YSk7CisKKwkJbmF2X3dpbm9iai0+d2luc3RhdGUg PSB3aW5zdGF0ZTsKKwkJbmF2X3dpbm9iai0+YXJnc3RhdGVzID0gTklMOworCQluYXZfd2lub2Jq LT5sb2NhbG1lbSA9IE5VTEw7CisJCW5hdl93aW5vYmotPm1hcmtwdHIgPSAtMTsKKwkJbmF2X3dp bm9iai0+cmVhZHB0ciA9IC0xOworCQl3aW5zdGF0ZS0+bmF2X3dpbm9iaiA9IG5hdl93aW5vYmo7 CisJfQorCiAJLyogU2V0IHRoZSBzdGF0dXMgdG8gcnVubmluZyAqLwogCXdpbnN0YXRlLT5zdGF0 dXMgPSBXSU5ET1dBR0dfUlVOOwogCkBAIC0yOTQ3LDcgKzI5NzgsOSBAQCBFeGVjSW5pdFdpbmRv d0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChu b2RlLT5kZWZpbmVDbGF1c2UgIT0gTklMKQogCXsKIAkJLyoKLQkJICogVHdlYWsgYXJnIHZhciBv ZiBQUkVWL05FWFQgc28gdGhhdCBpdCByZWZlcnMgdG8gc2Nhbi9pbm5lciBzbG90LgorCQkgKiBD b21waWxlIERFRklORSBjbGF1c2UgZXhwcmVzc2lvbnMuICBQUkVWL05FWFQgbmF2aWdhdGlvbiBp cyBoYW5kbGVkCisJCSAqIGJ5IEVFT1BfUlBSX05BVl9TRVQvUkVTVE9SRSBvcGNvZGVzIGVtaXR0 ZWQgZHVyaW5nIEV4ZWNJbml0RXhwciwgc28KKwkJICogbm8gdmFybm8gcmV3cml0aW5nIGlzIG5l ZWRlZCBoZXJlLgogCQkgKi8KIAkJZm9yZWFjaChsLCBub2RlLT5kZWZpbmVDbGF1c2UpCiAJCXsK QEAgLTI5NjEsNyArMjk5NCw2IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQl3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVM aXN0ID0KIAkJCQlsYXBwZW5kKHdpbnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QsCiAJCQkJCQlt YWtlU3RyaW5nKHBzdHJkdXAobmFtZSkpKTsKLQkJCWF0dG5vX21hcCgoTm9kZSAqKSBleHByKTsK IAkJCWV4cHMgPSBFeGVjSW5pdEV4cHIoZXhwciwgKFBsYW5TdGF0ZSAqKSB3aW5zdGF0ZSk7CiAJ CQl3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlTGlzdCA9CiAJCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ZGVm aW5lQ2xhdXNlTGlzdCwgZXhwcyk7CkBAIC0yOTk2LDEwNyArMzAyOCwzOCBAQCBFeGVjSW5pdFdp bmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogfQog CiAvKgotICogUmV3cml0ZSB2YXJubyBvZiBWYXIgbm9kZXMgdGhhdCBhcmUgdGhlIGFyZ3VtZW50 IG9mIFBSRVYvTkVUIHNvIHRoYXQgdGhleQotICogc2VlIHNjYW4gdHVwbGUgKFBSRVYpIG9yIGlu bmVyIHR1cGxlIChORVhUKS4gIEFsc28gd2UgY2hlY2sgdGhlIGFyZ3VtZW50cwotICogb2YgUFJF Vi9ORVhUIGluY2x1ZGUgYXQgbGVhc3QgMSBjb2x1bW4gcmVmZXJlbmNlLiBUaGlzIGlzIHJlcXVp cmVkIGJ5IHRoZQotICogU1FMIHN0YW5kYXJkLgorICogRXhlY1JQUk5hdkdldFNsb3QKKyAqCisg KiBGZXRjaCB0dXBsZSBhdCBnaXZlbiBwb3NpdGlvbiBmb3IgUlBSIG5hdmlnYXRpb24gb3Bjb2Rl cy4KKyAqIFJldHVybnMgbmF2X3Nsb3Qgd2l0aCB0aGUgdHVwbGUgbG9hZGVkLCBvciBuYXZfbnVs bF9zbG90IGlmIG91dCBvZiByYW5nZS4KICAqLwotc3RhdGljIHZvaWQKLWF0dG5vX21hcChOb2Rl ICpub2RlKQorVHVwbGVUYWJsZVNsb3QgKgorRXhlY1JQUk5hdkdldFNsb3QoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBpbnQ2NCBwb3MpCiB7Ci0JKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxr ZXIobm9kZSwgYXR0bm9fbWFwX3dhbGtlciwgTlVMTCk7Ci19CisJV2luZG93T2JqZWN0IHdpbm9i aiA9IHdpbnN0YXRlLT5uYXZfd2lub2JqOworCVR1cGxlVGFibGVTbG90ICpzbG90ID0gd2luc3Rh dGUtPm5hdl9zbG90OwogCi1zdGF0aWMgYm9vbAotYXR0bm9fbWFwX3dhbGtlcihOb2RlICpub2Rl LCB2b2lkICpjb250ZXh0KQotewotCUZ1bmNFeHByICAgKmZ1bmM7Ci0JaW50CQkJbmFyZ3M7Ci0J Ym9vbAkJaXNfcHJldjsKKwlpZiAocG9zIDwgMCkKKwkJcmV0dXJuIHdpbnN0YXRlLT5uYXZfbnVs bF9zbG90OwogCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIGZhbHNlOworCS8qCisJICog SWYgbmF2X3Nsb3QgYWxyZWFkeSBob2xkcyB0aGlzIHBvc2l0aW9uLCByZXR1cm4gaXQgd2l0aG91 dCByZS1mZXRjaGluZy4KKwkgKiBUaGlzIGlzIGNyaXRpY2FsIHdoZW4gbXVsdGlwbGUgUFJFVi9O RVhUIGNhbGxzIGluIHRoZSBzYW1lIGV4cHJlc3Npb24KKwkgKiBuYXZpZ2F0ZSB0byB0aGUgc2Ft ZSByb3csIGJlY2F1c2UgcmUtZmV0Y2hpbmcgd291bGQgZnJlZSB0aGUgc2xvdCdzCisJICogdHVw bGUgbWVtb3J5IGFuZCBpbnZhbGlkYXRlIGFueSBwYXNzLWJ5LXJlZiBEYXR1bSBwb2ludGVycyBm cm9tIGVhcmxpZXIKKwkgKiBuYXZpZ2F0aW9uIHJlc3VsdHMuCisJICovCisJaWYgKHdpbnN0YXRl LT5uYXZfc2xvdF9wb3MgPT0gcG9zKQorCQlyZXR1cm4gc2xvdDsKIAotCWlmIChJc0Eobm9kZSwg RnVuY0V4cHIpKQorCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIHBvcywgc2xvdCkp CiAJewotCQlmdW5jID0gKEZ1bmNFeHByICopIG5vZGU7Ci0KLQkJaWYgKGZ1bmMtPmZ1bmNpZCA9 PSBGX1BSRVYgfHwgZnVuYy0+ZnVuY2lkID09IEZfTkVYVCkKLQkJewotCQkJLyoKLQkJCSAqIFRo ZSBTUUwgc3RhbmRhcmQgYWxsb3dzIHRvIGhhdmUgdHdvIG1vcmUgYXJndW1lbnRzIGZvcm0gb2YK LQkJCSAqIFBSRVYvTkVYVC4gIEJ1dCBjdXJyZW50bHkgd2UgYWxsb3cgb25seSAxIGFyZ3VtZW50 IGZvcm0uCi0JCQkgKi8KLQkJCW5hcmdzID0gbGlzdF9sZW5ndGgoZnVuYy0+YXJncyk7Ci0JCQlp ZiAobGlzdF9sZW5ndGgoZnVuYy0+YXJncykgIT0gMSkKLQkJCQllbG9nKEVSUk9SLCAiUFJFVi9O RVhUIG11c3QgaGF2ZSAxIGFyZ3VtZW50IGJ1dCBmdW5jdGlvbiAlZCBoYXMgJWQgYXJncyIsCi0J CQkJCSBmdW5jLT5mdW5jaWQsIG5hcmdzKTsKLQotCQkJLyoKLQkJCSAqIENoZWNrIGV4cHIgb2Yg UFJFVi9ORVhUIGFydWd1bWVudHMgYW5kIHJlcGxhY2UgdmFybm8uCi0JCQkgKi8KLQkJCWlzX3By ZXYgPSAoZnVuYy0+ZnVuY2lkID09IEZfUFJFVikgPyB0cnVlIDogZmFsc2U7Ci0JCQljaGVja19y cHJfbmF2aWdhdGlvbihub2RlLCBpc19wcmV2KTsKLQkJfQorCQl3aW5zdGF0ZS0+bmF2X3Nsb3Rf cG9zID0gLTE7CisJCXJldHVybiB3aW5zdGF0ZS0+bmF2X251bGxfc2xvdDsKIAl9Ci0JcmV0dXJu IGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgYXR0bm9fbWFwX3dhbGtlciwgTlVMTCk7Ci19 CiAKLS8qCi0gKiBSZXdyaXRlIHZhcm5vIG9mIFZhciBvZiBSUFIgbmF2aWdhdGlvbiBvcGVyYXRp b25zIChQUkVWL05FWFQpLgotICogSWYgaXNfcHJldiBpcyB0cnVlLCB3ZSB0YWtlIGNhcmUgUFJF Viwgb3RoZXJ3aXNlIE5FWFQuCi0gKi8KLXN0YXRpYyB2b2lkCi1jaGVja19ycHJfbmF2aWdhdGlv bihOb2RlICpub2RlLCBib29sIGlzX3ByZXYpCi17Ci0JTmF2aWdhdGlvbkluZm8gY29udGV4dDsK LQotCWNvbnRleHQuaXNfcHJldiA9IGlzX3ByZXY7Ci0JY29udGV4dC5udW1fdmFycyA9IDA7Ci0J KHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgcnByX25hdmlnYXRpb25fd2Fsa2Vy LCAmY29udGV4dCk7Ci0JaWYgKGNvbnRleHQubnVtX3ZhcnMgPCAxKQotCQllcmVwb3J0KEVSUk9S LAotCQkJCWVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24ncyBhcmd1bWVu dCBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UiKSk7Ci19Ci0KLXN0 YXRpYyBib29sCi1ycHJfbmF2aWdhdGlvbl93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4 dCkKLXsKLQlOYXZpZ2F0aW9uSW5mbyAqbmF2ID0gKE5hdmlnYXRpb25JbmZvICopIGNvbnRleHQ7 Ci0KLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlzd2l0Y2ggKG5vZGVU YWcobm9kZSkpCi0JewotCQljYXNlIFRfVmFyOgotCQkJewotCQkJCVZhcgkJICAgKnZhciA9IChW YXIgKikgbm9kZTsKLQotCQkJCW5hdi0+bnVtX3ZhcnMrKzsKLQotCQkJCWlmIChuYXYtPmlzX3By ZXYpCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBSZXdyaXRlIHZhcm5vIGZyb20gT1VURVJfVkFS IHRvIHJlZ3VsYXIgdmFyIG5vIHNvIHRoYXQKLQkJCQkJICogdGhlIHZhciByZWZlcmVuY2VzIHNj YW4gdHVwbGUuCi0JCQkJCSAqLwotCQkJCQl2YXItPnZhcm5vID0gdmFyLT52YXJub3N5bjsKLQkJ CQl9Ci0JCQkJZWxzZQotCQkJCQl2YXItPnZhcm5vID0gSU5ORVJfVkFSOwotCQkJfQotCQkJYnJl YWs7Ci0JCWNhc2UgVF9Db25zdDoKLQkJY2FzZSBUX0Z1bmNFeHByOgotCQljYXNlIFRfT3BFeHBy OgotCQkJYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycm1z Zygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24ncyBhcmd1bWVudCBpbmNsdWRlcyB1 bnN1cHBvcnRlZCBleHByZXNzaW9uIikpOwotCX0KLQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dh bGtlcihub2RlLCBycHJfbmF2aWdhdGlvbl93YWxrZXIsIGNvbnRleHQpOworCXdpbnN0YXRlLT5u YXZfc2xvdF9wb3MgPSBwb3M7CisJcmV0dXJuIHNsb3Q7CiB9CiAKIApAQCAtMzE1Nyw4ICszMTIw LDggQEAgRXhlY1JlU2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSkKIAlFeGVjQ2xl YXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnRlbXBf c2xvdF8xKTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMik7Ci0JRXhlY0NsZWFy VHVwbGUobm9kZS0+cHJldl9zbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5uZXh0X3Nsb3Qp OworCWlmIChub2RlLT5uYXZfc2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+bmF2X3Nsb3Qp OwogCWlmIChub2RlLT5mcmFtZWhlYWRfc2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ZnJh bWVoZWFkX3Nsb3QpOwogCWlmIChub2RlLT5mcmFtZXRhaWxfc2xvdCkKQEAgLTQyMjMsNiArNDE4 NiwxMCBAQCByZWdpc3Rlcl9yZXN1bHQ6CiAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHJvdyBleGlz dHMsIGZhbHNlIGlmIG91dCBvZiBwYXJ0aXRpb24uCiAgKiBJZiByb3cgZXhpc3RzLCBmaWxscyB2 YXJNYXRjaGVkIGFycmF5LgogICogdmFyTWF0Y2hlZFtpXSA9IHRydWUgaWYgdmFyaWFibGUgaSBt YXRjaGVkIGF0IGN1cnJlbnQgcm93LgorICoKKyAqIFVzZXMgMS1zbG90IG1vZGVsOiBvbmx5IGVj eHRfb3V0ZXJ0dXBsZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgcm93LgorICogUFJFVi9ORVhUIG5h dmlnYXRpb24gaXMgaGFuZGxlZCBieSBFRU9QX1JQUl9OQVZfU0VUL1JFU1RPUkUgb3Bjb2Rlcwor ICogZHVyaW5nIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwgd2hpY2ggdGVtcG9yYXJpbHkgc3dhcCB0 aGUgc2xvdC4KICAqLwogc3RhdGljIGJvb2wKIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0 IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJNYXRjaGVkKQpAQCAtNDIzMywzNyArNDIwMCwy NSBAQCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgYm9v bCAqdmFyTWF0Y2hlZCkKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQl2YXJJZHggPSAwOwogCVR1 cGxlVGFibGVTbG90ICpzbG90OworCWludDY0CQlzYXZlZF9wb3M7CiAKLQkvKgotCSAqIFNldCB1 cCBzbG90cyBmb3IgY3VycmVudCwgcHJldmlvdXMsIGFuZCBuZXh0IHJvd3MuIFdlIGRvbid0IGNh bGwKLQkgKiBnZXRfc2xvdHMoKSBoZXJlIHRvIGF2b2lkIHJlY3Vyc2lvbiB0aHJvdWdoIHJvd19p c19pbl9mcmFtZSAtPgotCSAqIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lIC0+IEV4ZWNSUFJQcm9jZXNz Um93LgotCSAqLwotCi0JLyogQ3VycmVudCByb3cgLT4gZWN4dF9vdXRlcnR1cGxlICovCisJLyog RmV0Y2ggY3VycmVudCByb3cgaW50byB0ZW1wX3Nsb3RfMSAqLwogCXNsb3QgPSB3aW5zdGF0ZS0+ dGVtcF9zbG90XzE7CiAJaWYgKCF3aW5kb3dfZ2V0dHVwbGVzbG90KHdpbm9iaiwgcG9zLCBzbG90 KSkKIAkJcmV0dXJuIGZhbHNlOwkJCS8qIE5vIHJvdyBleGlzdHMgKi8KKworCS8qIFNldCB1cCAx LXNsb3QgY29udGV4dDogb25seSBlY3h0X291dGVydHVwbGUgKi8KIAllY29udGV4dC0+ZWN4dF9v dXRlcnR1cGxlID0gc2xvdDsKIAotCS8qIFByZXZpb3VzIHJvdyAtPiBlY3h0X3NjYW50dXBsZSAo Zm9yIFBSRVYpICovCi0JaWYgKHBvcyA+IDApCi0JewotCQlzbG90ID0gd2luc3RhdGUtPnByZXZf c2xvdDsKLQkJaWYgKCF3aW5kb3dfZ2V0dHVwbGVzbG90KHdpbm9iaiwgcG9zIC0gMSwgc2xvdCkp Ci0JCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSB3aW5zdGF0ZS0+bnVsbF9zbG90OwotCQll bHNlCi0JCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwotCX0KLQllbHNlCi0JCWVj b250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHdpbnN0YXRlLT5udWxsX3Nsb3Q7CisJLyoKKwkgKiBT YXZlIGFuZCBzZXQgY3VycmVudHBvcyBzbyB0aGF0IEVFT1BfUlBSX05BVl9TRVQgb3Bjb2RlcyBj YW4gY2FsY3VsYXRlCisJICogdGFyZ2V0IHBvc2l0aW9ucyAoY3VycmVudHBvcyArLy0gb2Zmc2V0 KS4KKwkgKi8KKwlzYXZlZF9wb3MgPSB3aW5zdGF0ZS0+Y3VycmVudHBvczsKKwl3aW5zdGF0ZS0+ Y3VycmVudHBvcyA9IHBvczsKIAotCS8qIE5leHQgcm93IC0+IGVjeHRfaW5uZXJ0dXBsZSAoZm9y IE5FWFQpICovCi0Jc2xvdCA9IHdpbnN0YXRlLT5uZXh0X3Nsb3Q7Ci0JaWYgKCF3aW5kb3dfZ2V0 dHVwbGVzbG90KHdpbm9iaiwgcG9zICsgMSwgc2xvdCkpCi0JCWVjb250ZXh0LT5lY3h0X2lubmVy dHVwbGUgPSB3aW5zdGF0ZS0+bnVsbF9zbG90OwotCWVsc2UKLQkJZWNvbnRleHQtPmVjeHRfaW5u ZXJ0dXBsZSA9IHNsb3Q7CisJLyogSW52YWxpZGF0ZSBuYXZfc2xvdCBjYWNoZSBzbyBQUkVWL05F WFQgcmUtZmV0Y2ggZm9yIG5ldyByb3cgKi8KKwl3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7 CiAKIAlmb3JlYWNoKGxjLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlTGlzdCkKIAl7CkBAIC00Mjgx LDYgKzQyMzYsOCBAQCBuZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0 IHBvcywgYm9vbCAqdmFyTWF0Y2hlZCkKIAkJCWJyZWFrOwogCX0KIAorCXdpbnN0YXRlLT5jdXJy ZW50cG9zID0gc2F2ZWRfcG9zOworCiAJcmV0dXJuIHRydWU7CQkJCS8qIFJvdyBleGlzdHMgKi8K IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCA2NTBmMWQ0MmE5My4uZDE1 OGUzN2U3YjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0yOTYsNiArMjk2 LDQwIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJCQkJCSAgIEZJ RUxETk9fRVhQUkNPTlRFWFRfQUdHTlVMTFMsCiAJCQkJCQkJCSAgICJ2LmVjb250ZXh0LmFnZ251 bGxzIik7CiAKKwkvKgorCSAqIFJQUiBuYXZpZ2F0aW9uIG9wY29kZXMgKFBSRVYvTkVYVCkgc3dh cCBlY3h0X291dGVydHVwbGUgdG8gYSBkaWZmZXJlbnQKKwkgKiByb3cgbWlkLWV4cHJlc3Npb24u ICBUaGUgSklUIGNvZGUgbG9hZHMgdl9vdXRlcnZhbHVlcyBhbmQgdl9vdXRlcm51bGxzCisJICog b25jZSBpbiB0aGUgZW50cnkgYmxvY2sgYW5kIHJldXNlcyB0aGVtIGZvciBhbGwgRUVPUF9PVVRF Ul9WQVIgc3RlcHMuCisJICogQWZ0ZXIgYSBzbG90IHN3YXAsIHRoZXNlIHBvaW50ZXJzIGJlY29t ZSBzdGFsZSBiZWNhdXNlIHRoZSBuZXcgc2xvdCBoYXMKKwkgKiBpdHMgb3duIHR0c192YWx1ZXMv dHRzX2lzbnVsbCBhcnJheXMuICBGYWxsIGJhY2sgdG8gdGhlIGludGVycHJldGVyIGZvcgorCSAq IHRoZXNlIGV4cHJlc3Npb25zLgorCSAqCisJICogWFhYIFRvIEpJVC1jb21waWxlIHRoZXNlIGV4 cHJlc3Npb25zIHByb3Blcmx5LCB0aGUgTkFWX1NFVCBhbmQKKwkgKiBOQVZfUkVTVE9SRSBoYW5k bGVycyB3b3VsZCBuZWVkIHRvIHJlbG9hZCB0aGUgdHRzX3ZhbHVlcyBhbmQgdHRzX2lzbnVsbAor CSAqIHBvaW50ZXJzIGZyb20gdGhlIG5ldyBzbG90LiAgSG93ZXZlciwgTExWTSB1c2VzIFNTQSAo U3RhdGljIFNpbmdsZQorCSAqIEFzc2lnbm1lbnQpIGZvcm0gd2hlcmUgZWFjaCB2YWx1ZSBpcyBk ZWZpbmVkIGV4YWN0bHkgb25jZS4gIFdoZW4KKwkgKiBkaWZmZXJlbnQgYmFzaWMgYmxvY2tzIHBy b2R1Y2UgZGlmZmVyZW50IHZhbHVlcyBmb3IgdGhlIHNhbWUgcG9pbnRlciwKKwkgKiBMTFZNIHJl cXVpcmVzIFBISSBub2RlcyBhdCB0aGUgbWVyZ2UgcG9pbnQgdG8gc2VsZWN0IHRoZSBjb3JyZWN0 IG9uZS4KKwkgKiBXaXRob3V0IHRoYXQgcGx1bWJpbmcsIE9VVEVSX1ZBUiBzdGVwcyBhZnRlciBh IHNsb3Qgc3dhcCB3b3VsZCByZWFkCisJICogZnJvbSB0aGUgd3JvbmcgcG9pbnRlci4KKwkgKi8K KwlpZiAocGFyZW50ICYmIElzQShwYXJlbnQsIFdpbmRvd0FnZ1N0YXRlKSAmJgorCQkoKFdpbmRv d0FnZyAqKSBwYXJlbnQtPnBsYW4pLT5ycFBhdHRlcm4gIT0gTlVMTCkKKwl7CisJCWZvciAoaW50 IG9wbm8gPSAwOyBvcG5vIDwgc3RhdGUtPnN0ZXBzX2xlbjsgb3BubysrKQorCQl7CisJCQlFeHBy RXZhbE9wCW9wY29kZSA9IEV4ZWNFdmFsU3RlcE9wKHN0YXRlLCAmc3RhdGUtPnN0ZXBzW29wbm9d KTsKKworCQkJaWYgKG9wY29kZSA9PSBFRU9QX1JQUl9OQVZfU0VUIHx8CisJCQkJb3Bjb2RlID09 IEVFT1BfUlBSX05BVl9SRVNUT1JFKQorCQkJeworCQkJCUxMVk1EZWxldGVGdW5jdGlvbihldmFs X2ZuKTsKKwkJCQlMTFZNRGlzcG9zZUJ1aWxkZXIoYik7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJ fQorCQl9CisJfQorCiAJLyogYWxsb2NhdGUgYmxvY2tzIGZvciBlYWNoIG9wIHVwZnJvbnQsIHNv IHdlIGNhbiBkbyBqdW1wcyBlYXNpbHkgKi8KIAlvcGJsb2NrcyA9IHBhbGxvY19hcnJheShMTFZN QmFzaWNCbG9ja1JlZiwgc3RhdGUtPnN0ZXBzX2xlbik7CiAJZm9yIChpbnQgb3BubyA9IDA7IG9w bm8gPCBzdGF0ZS0+c3RlcHNfbGVuOyBvcG5vKyspCkBAIC0yNDMyLDYgKzI0NjYsMTIgQEAgbGx2 bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkJCQlMTFZNQnVpbGRCcihiLCBvcGJs b2Nrc1tvcG5vICsgMV0pOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEVFT1BfUlBSX05BVl9TRVQ6 CisJCQljYXNlIEVFT1BfUlBSX05BVl9SRVNUT1JFOgorCQkJCS8qIHVucmVhY2hhYmxlOiBmaWx0 ZXJlZCBvdXQgYnkgdGhlIHByZS1zY2FuIGFib3ZlICovCisJCQkJQXNzZXJ0KGZhbHNlKTsKKwkJ CQlyZXR1cm4gZmFsc2U7CisKIAkJCWNhc2UgRUVPUF9BR0dfU1RSSUNUX0RFU0VSSUFMSVpFOgog CQkJY2FzZSBFRU9QX0FHR19ERVNFUklBTElaRToKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZt aml0X3R5cGVzLmMKaW5kZXggYzhhMWY4NDEyOTMuLmU3OGIzMWQ3NzVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0 L2xsdm0vbGx2bWppdF90eXBlcy5jCkBAIC0xNjgsNiArMTY4LDggQEAgdm9pZAkgICAqcmVmZXJl bmNlZF9mdW5jdGlvbnNbXSA9CiAJRXhlY0V2YWxTY2FsYXJBcnJheU9wLAogCUV4ZWNFdmFsSGFz aGVkU2NhbGFyQXJyYXlPcCwKIAlFeGVjRXZhbFN1YlBsYW4sCisJRXhlY0V2YWxSUFJOYXZTZXQs CisJRXhlY0V2YWxSUFJOYXZSZXN0b3JlLAogCUV4ZWNFdmFsU3lzVmFyLAogCUV4ZWNFdmFsV2hv bGVSb3dWYXIsCiAJRXhlY0V2YWxYbWxFeHByLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCAxYWRk YTdjNWQ4NC4uZDJmMTk1ODQwNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVG dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC02OSw2ICs2OSw5 IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRGdW5j OgogCQkJdHlwZSA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bXNmdHlwZTsK IAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXR5cGUgPSAoKGNvbnN0IFJQUk5h dkV4cHIgKikgZXhwciktPnJlc3VsdHR5cGU7CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlw dGluZ1JlZjoKIAkJCXR5cGUgPSAoKGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqKSBleHByKS0+cmVm cmVzdHlwZTsKIAkJCWJyZWFrOwpAQCAtODUzLDYgKzg1Niw5IEBAIGV4cHJDb2xsYXRpb24oY29u c3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX01lcmdlU3VwcG9ydEZ1bmM6CiAJCQljb2xsID0gKChj b25zdCBNZXJnZVN1cHBvcnRGdW5jICopIGV4cHIpLT5tc2Zjb2xsaWQ7CiAJCQlicmVhazsKKwkJ Y2FzZSBUX1JQUk5hdkV4cHI6CisJCQljb2xsID0gKChjb25zdCBSUFJOYXZFeHByICopIGV4cHIp LT5yZXN1bHRjb2xsaWQ7CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJ CWNvbGwgPSAoKGNvbnN0IFN1YnNjcmlwdGluZ1JlZiAqKSBleHByKS0+cmVmY29sbGlkOwogCQkJ YnJlYWs7CkBAIC0xMTU0LDYgKzExNjAsOSBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIs IE9pZCBjb2xsYXRpb24pCiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRGdW5jOgogCQkJKChNZXJnZVN1 cHBvcnRGdW5jICopIGV4cHIpLT5tc2Zjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKKwkJ Y2FzZSBUX1JQUk5hdkV4cHI6CisJCQkoKFJQUk5hdkV4cHIgKikgZXhwciktPnJlc3VsdGNvbGxp ZCA9IGNvbGxhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0aW5nUmVmOgogCQkJ KChTdWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJy ZWFrOwpAQCAtMTQyNiw2ICsxNDM1LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIp CiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRGdW5jOgogCQkJbG9jID0gKChjb25zdCBNZXJnZVN1cHBv cnRGdW5jICopIGV4cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhw cjoKKwkJCWxvYyA9ICgoY29uc3QgUlBSTmF2RXhwciAqKSBleHByKS0+bG9jYXRpb247CisJCQli cmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCS8qIGp1c3QgdXNlIGNvbnRhaW5l ciBhcmd1bWVudCdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUgKikg KChjb25zdCBTdWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmV4cHIpOwpAQCAtMjE4Nyw2ICsy MTk5LDE2IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQly ZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsK KwkJCQlSUFJOYXZFeHByICpleHByID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChX QUxLKGV4cHItPmFyZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChleHByLT5vZmZzZXRf YXJnICYmIFdBTEsoZXhwci0+b2Zmc2V0X2FyZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQl7CiAJCQkJU3Vic2NyaXB0 aW5nUmVmICpzYnNyZWYgPSAoU3Vic2NyaXB0aW5nUmVmICopIG5vZGU7CkBAIC0zMTE2LDYgKzMx MzgsMTcgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZF eHByOgorCQkJeworCQkJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CisJ CQkJUlBSTmF2RXhwciAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIG5hdiwgUlBS TmF2RXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmFyZywgbmF2LT5hcmcsIEV4cHIgKik7CisJ CQkJTVVUQVRFKG5ld25vZGUtPm9mZnNldF9hcmcsIG5hdi0+b2Zmc2V0X2FyZywgRXhwciAqKTsK KwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRf U3Vic2NyaXB0aW5nUmVmOgogCQkJewogCQkJCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1 YnNjcmlwdGluZ1JlZiAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggMjNiMDJm YjNiYzAuLmUxNGZmNGRjNDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTc2MCw3ICs3 NjAsOCBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNu YW1lLCBMaXN0ICpmYXJncywKIAkvKiBuZXh0KCkgYW5kIHByZXYoKSBhcmUgb25seSBhbGxvd2Vk IGluIGEgV0lORE9XIERFRklORSBjbGF1c2UgKi8KIAlpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJ TF9OT1JNQUwgJiYKIAkJcHN0YXRlLT5wX2V4cHJfa2luZCAhPSBFWFBSX0tJTkRfUlBSX0RFRklO RSAmJgotCQkoZnVuY2lkID09IEZfUFJFViB8fCBmdW5jaWQgPT0gRl9ORVhUKSkKKwkJKGZ1bmNp ZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwK KwkJIGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBGX05FWFRf QU5ZRUxFTUVOVF9JTlQ4KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCiAJCQkJIGVycm1zZygiJXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERF RklORSBjbGF1c2UiLApAQCAtNzY4LDcgKzc2OSwzMiBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CiAKIAkvKiBidWlsZCB0aGUgYXBwcm9w cmlhdGUgb3V0cHV0IHN0cnVjdHVyZSAqLwotCWlmIChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05P Uk1BTCB8fCBmZHJlc3VsdCA9PSBGVU5DREVUQUlMX1BST0NFRFVSRSkKKwlpZiAoZmRyZXN1bHQg PT0gRlVOQ0RFVEFJTF9OT1JNQUwgJiYKKwkJKGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVCB8 fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwKKwkJIGZ1bmNpZCA9PSBGX1BSRVZfQU5Z RUxFTUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVF9JTlQ4KSkKKwl7CisJ CS8qCisJCSAqIFBSRVYoKSBhbmQgTkVYVCgpIGFyZSBjb21waWxlZCBpbnRvIEVFT1BfUlBSX05B Vl9TRVQgLworCQkgKiBFRU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIGluc3RlYWQgb2YgYSBu b3JtYWwgZnVuY3Rpb24gY2FsbC4KKwkJICogUmVwcmVzZW50IHRoZW0gYXMgUlBSTmF2RXhwciBu b2RlcyBzbyB0aGF0IGxhdGVyIHN0YWdlcyBjYW4KKwkJICogaWRlbnRpZnkgdGhlbSB3aXRob3V0 IHJlbHlpbmcgb24gZnVuY2lkIGNvbXBhcmlzb25zLgorCQkgKi8KKwkJYm9vbAkJaXNfbmV4dCA9 IChmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwKKwkJCQkJCQkgICBmdW5jaWQgPT0gRl9O RVhUX0FOWUVMRU1FTlRfSU5UOCk7CisJCWJvb2wJCWhhc19vZmZzZXQgPSAoZnVuY2lkID09IEZf UFJFVl9BTllFTEVNRU5UX0lOVDggfHwKKwkJCQkJCQkJICBmdW5jaWQgPT0gRl9ORVhUX0FOWUVM RU1FTlRfSU5UOCk7CisJCVJQUk5hdkV4cHIgKm5hdmV4cHIgPSBtYWtlTm9kZShSUFJOYXZFeHBy KTsKKworCQluYXZleHByLT5raW5kID0gaXNfbmV4dCA/IFJQUl9OQVZfTkVYVCA6IFJQUl9OQVZf UFJFVjsKKwkJbmF2ZXhwci0+YXJnID0gKEV4cHIgKikgbGluaXRpYWwoZmFyZ3MpOworCQluYXZl eHByLT5vZmZzZXRfYXJnID0gaGFzX29mZnNldCA/IChFeHByICopIGxzZWNvbmQoZmFyZ3MpIDog TlVMTDsKKwkJbmF2ZXhwci0+cmVzdWx0dHlwZSA9IHJldHR5cGU7CisJCS8qIHJlc3VsdGNvbGxp ZCB3aWxsIGJlIHNldCBieSBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJbmF2ZXhwci0+bG9jYXRpb24g PSBsb2NhdGlvbjsKKworCQlyZXR2YWwgPSAoTm9kZSAqKSBuYXZleHByOworCX0KKwllbHNlIGlm IChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCB8fCBmZHJlc3VsdCA9PSBGVU5DREVUQUlM X1BST0NFRFVSRSkKIAl7CiAJCUZ1bmNFeHByICAgKmZ1bmNleHByID0gbWFrZU5vZGUoRnVuY0V4 cHIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKaW5kZXggZGIxMzA5Y2EzMTEuLjNmYjVkOTRhYmU5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCkBAIC00Miw2ICs0Miw4IEBAIHN0YXRpYyB2b2lkIHZh bGlkYXRlUlBSUGF0dGVyblZhckNvdW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5v ZGUgKm5vZGUsCiAJCQkJCQkJCQkgICBMaXN0ICpycERlZnMsIExpc3QgKip2YXJOYW1lcyk7CiBz dGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2lu ZG93Q2xhdXNlICp3YywKIAkJCQkJCQkJICAgV2luZG93RGVmICp3aW5kZWYsIExpc3QgKip0YXJn ZXRsaXN0KTsKK3N0YXRpYyB2b2lkIGNoZWNrX3Jwcl9uYXZfZXhwcihSUFJOYXZFeHByICpuYXYs IFBhcnNlU3RhdGUgKnBzdGF0ZSk7CitzdGF0aWMgYm9vbCBjaGVja19ycHJfbmF2X25lc3Rpbmdf d2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogCiAvKgogICogdHJhbnNmb3JtUlBS CkBAIC00MTAsNiArNDEyLDEwIEBAIHRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsIFdpbmRvd0RlZiAqd2luZGVmLAogCWZvcmVhY2hfcHRy KFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5lQ2xhdXNlKQogCQl0ZS0+ZXhwciA9IChFeHByICopIGNv ZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgKE5vZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKIAor CS8qIGNoZWNrIGZvciBuZXN0ZWQgUFJFVi9ORVhUIGFuZCBtaXNzaW5nIGNvbHVtbiByZWZlcmVu Y2VzICovCisJZm9yZWFjaF9wdHIoVGFyZ2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJCSh2 b2lkKSBjaGVja19ycHJfbmF2X25lc3Rpbmdfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCBwc3Rh dGUpOworCiAJLyogbWFyayBjb2x1bW4gb3JpZ2lucyAqLwogCW1hcmtUYXJnZXRMaXN0T3JpZ2lu cyhwc3RhdGUsIGRlZmluZUNsYXVzZSk7CiAKQEAgLTQxOCwzICs0MjQsODMgQEAgdHJhbnNmb3Jt RGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93 RGVmICp3aW5kZWYsCiAKIAlyZXR1cm4gZGVmaW5lQ2xhdXNlOwogfQorCisvKgorICogY2hlY2tf cnByX25hdl9leHByCisgKgkJVmFsaWRhdGUgYSBzaW5nbGUgUlBSTmF2RXhwciBub2RlIGJ5IHdh bGtpbmcgaXRzIGFyZyBhbmQgb2Zmc2V0X2FyZworICoJCXN1YnRyZWVzIGluIGEgc2luZ2xlIHBh c3MgZWFjaC4gIENoZWNrcyBmb3IgbmVzdGVkIFBSRVYvTkVYVCwgbWlzc2luZworICoJCWNvbHVt biByZWZlcmVuY2VzLCBhbmQgbm9uLWNvbnN0YW50IG9mZnNldCBleHByZXNzaW9ucy4KKyAqLwor dHlwZWRlZiBzdHJ1Y3QKK3sKKwlib29sCQloYXNfbmF2OwkJLyogUlBSTmF2RXhwciBmb3VuZCAo bmVzdGluZykgKi8KKwlib29sCQloYXNfY29sdW1uX3JlZjsgLyogVmFyIGZvdW5kICovCit9CQkJ TmF2Q2hlY2tSZXN1bHQ7CisKK3N0YXRpYyBib29sCituYXZfY2hlY2tfd2Fsa2VyKE5vZGUgKm5v ZGUsIHZvaWQgKmNvbnRleHQpCit7CisJTmF2Q2hlY2tSZXN1bHQgKnJlc3VsdCA9IChOYXZDaGVj a1Jlc3VsdCAqKSBjb250ZXh0OworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNl OworCWlmIChJc0Eobm9kZSwgUlBSTmF2RXhwcikpCisJCXJlc3VsdC0+aGFzX25hdiA9IHRydWU7 CisJaWYgKElzQShub2RlLCBWYXIpKQorCQlyZXN1bHQtPmhhc19jb2x1bW5fcmVmID0gdHJ1ZTsK KworCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl9jaGVja193YWxrZXIs IGNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorY2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4 cHIgKm5hdiwgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsK KworCS8qIENoZWNrIGFyZyBzdWJ0cmVlOiBuZXN0aW5nICsgY29sdW1uIHJlZmVyZW5jZSBpbiBv bmUgd2FsayAqLworCW1lbXNldCgmcmVzdWx0LCAwLCBzaXplb2YocmVzdWx0KSk7CisJKHZvaWQp IG5hdl9jaGVja193YWxrZXIoKE5vZGUgKikgbmF2LT5hcmcsICZyZXN1bHQpOworCisJaWYgKHJl c3VsdC5oYXNfbmF2KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBi ZSBuZXN0ZWQiKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlv bikpKTsKKwlpZiAoIXJlc3VsdC5oYXNfY29sdW1uX3JlZikKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiYXJndW1lbnQg b2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0 IG9uZSBjb2x1bW4gcmVmZXJlbmNlIiksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IG5hdi0+bG9jYXRpb24pKSk7CisKKwkvKiBDaGVjayBvZmZzZXRfYXJnOiBjb2x1bW4gcmVmICsg dm9sYXRpbGUgaW4gb25lIHdhbGsgKi8KKwlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJ eworCQltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkpOworCQkodm9pZCkgbmF2X2No ZWNrX3dhbGtlcigoTm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsICZyZXN1bHQpOworCisJCWlmIChy ZXN1bHQuaGFzX2NvbHVtbl9yZWYgfHwKKwkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChO b2RlICopIG5hdi0+b2Zmc2V0X2FyZykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVY VCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCBuYXYtPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNr X3Jwcl9uYXZfbmVzdGluZ193YWxrZXIKKyAqCQlXYWxrIHRoZSBERUZJTkUgY2xhdXNlIGV4cHJl c3Npb24gdHJlZSBhbmQgdmFsaWRhdGUgZWFjaCBSUFJOYXZFeHByLgorICovCitzdGF0aWMgYm9v bAorY2hlY2tfcnByX25hdl9uZXN0aW5nX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0 KQoreworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoSXNBKG5vZGUs IFJQUk5hdkV4cHIpKQorCXsKKwkJY2hlY2tfcnByX25hdl9leHByKChSUFJOYXZFeHByICopIG5v ZGUsIChQYXJzZVN0YXRlICopIGNvbnRleHQpOworCQkvKiBkb24ndCByZWN1cnNlIGludG8gYXJn OyBuZXN0aW5nIGFscmVhZHkgY2hlY2tlZCBhYm92ZSAqLworCQlyZXR1cm4gZmFsc2U7CisJfQor CXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNoZWNrX3Jwcl9uYXZfbmVzdGlu Z193YWxrZXIsIGNvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGNm ZTI0ZGU0M2NmLi43NDJkODg5MTU0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAt MTAxMDYsNiArMTAxMDYsMjIgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQsCiAJCQlnZXRfZnVuY19leHByKChGdW5jRXhwciAqKSBub2RlLCBjb250 ZXh0LCBzaG93aW1wbGljaXQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJ CQl7CisJCQkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKworCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJCQkJCQkJICAgbmF2LT5raW5kID09IFJQUl9O QVZfUFJFViA/ICJQUkVWKCIgOiAiTkVYVCgiKTsKKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICop IG5hdi0+YXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJCWlmIChuYXYtPm9mZnNldF9h cmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAi KTsKKwkJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsIGNvbnRleHQs IHNob3dpbXBsaWNpdCk7CisJCQkJfQorCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJykn KTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgVF9OYW1lZEFyZ0V4cHI6CiAJCQl7CiAJCQkJ TmFtZWRBcmdFeHByICpuYSA9IChOYW1lZEFyZ0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3dpbmRvd2Z1bmNzLmMKaW5kZXggNzRlZjEwOWY3MmUuLjA5MTI2MGQyY2NlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvd2luZG93ZnVuY3MuYwpAQCAtNzI2LDIyICs3MjYsNjIgQEAgd2luZG93X250aF92 YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCiAvKgogICogcHJldgotICogRHVtbXkgZnVuY3Rpb24g dG8gaW52b2tlIFJQUidzIG5hdmlnYXRpb24gb3BlcmF0b3IgIlBSRVYiLgotICogVGhpcyBpcyAq bm90KiBhIHdpbmRvdyBmdW5jdGlvbi4KKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidz IFBSRVYgbmF2aWdhdGlvbiBvcGVyYXRvci4KKyAqCisgKiBUaGUgcGFyc2VyIHRyYW5zZm9ybXMg cHJldigpIGNhbGxzIGluc2lkZSBERUZJTkUgaW50byBSUFJOYXZFeHByIG5vZGVzLAorICogc28g dGhpcyBmdW5jdGlvbiBpcyBuZXZlciByZWFjaGVkIGR1cmluZyBub3JtYWwgUlBSIGV4ZWN1dGlv bi4gIEl0IGV4aXN0cworICogb25seSBzbyB0aGF0IHRoZSBwYXJzZXIgY2FuIHJlc29sdmUgdGhl IGZ1bmN0aW9uIG5hbWUgZnJvbSBwZ19wcm9jLgorICogQ2FsbHMgb3V0c2lkZSBERUZJTkUgYXJl IHJlamVjdGVkIGJ5IHBhcnNlX2Z1bmMuYyAoRVhQUl9LSU5EX1JQUl9ERUZJTkUKKyAqIGNoZWNr KS4gIFRoZSBlcnJvciBiZWxvdyBpcyBhIGRlZmVuc2l2ZSBtZWFzdXJlIGluIGNhc2UgdGhhdCBj aGVjayBpcworICogYnlwYXNzZWQgKGUuZy4sIGRpcmVjdCBDLWxldmVsIGZ1bmN0aW9uIGludm9j YXRpb24pLgogICovCiBEYXR1bQogd2luZG93X3ByZXYoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlQ R19SRVRVUk5fREFUVU0oUEdfR0VUQVJHX0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9SLAorCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicHJl digpIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19SRVRVUk5f TlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCiB9CiAKIC8qCiAgKiBuZXh0Ci0gKiBEdW1teSBm dW5jdGlvbiB0byBpbnZva2UgUlBSJ3MgbmF2aWdhdGlvbiBvcGVyYXRpb24gIk5FWFQiLgotICog VGhpcyBpcyAqbm90KiBhIHdpbmRvdyBmdW5jdGlvbi4KKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIg Zm9yIFJQUidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRvci4KKyAqIFNlZSB3aW5kb3dfcHJldigp IGZvciBkZXRhaWxzLgogICovCiBEYXR1bQogd2luZG93X25leHQoUEdfRlVOQ1RJT05fQVJHUykK IHsKLQlQR19SRVRVUk5fREFUVU0oUEdfR0VUQVJHX0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9S LAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1z ZygibmV4dCgpIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19S RVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCit9CisKKy8qCisgKiBwcmV2KHZhbHVl LCBvZmZzZXQpCisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBQUkVWIG5hdmlnYXRp b24gb3BlcmF0b3Igd2l0aCBvZmZzZXQuCisgKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWls cy4KKyAqLworRGF0dW0KK3dpbmRvd19wcmV2X29mZnNldChQR19GVU5DVElPTl9BUkdTKQorewor CWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkgZXJybXNnKCJwcmV2KCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1 c2UiKSkpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoK KyAqIG5leHQodmFsdWUsIG9mZnNldCkKKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidz IE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRvciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJl digpIGZvciBkZXRhaWxzLgorICovCitEYXR1bQord2luZG93X25leHRfb2Zmc2V0KFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coIm5leHQoKSBjYW4gb25seSBiZSB1c2VkIGlu IGEgREVGSU5FIGNsYXVzZSIpKSk7CisJUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hl ZCAqLwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggZGRmOTIyZDE2ZDcuLjhlOTUxNjli N2IwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTEwOTc1LDkgKzEwOTc1LDE1IEBACiB7 IG9pZCA9PiAnODEyNicsIGRlc2NyID0+ICdwcmV2aW91cyB2YWx1ZScsCiAgIHByb25hbWUgPT4g J3ByZXYnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAog ICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnd2luZG93X3ByZXYnIH0s Cit7IG9pZCA9PiAnODEyOCcsIGRlc2NyID0+ICdwcmV2aW91cyB2YWx1ZSBhdCBvZmZzZXQnLAor ICBwcm9uYW1lID0+ICdwcmV2JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAn ZicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxl bWVudCBpbnQ4JywgcHJvc3JjID0+ICd3aW5kb3dfcHJldl9vZmZzZXQnIH0sCiB7IG9pZCA9PiAn ODEyNycsIGRlc2NyID0+ICduZXh0IHZhbHVlJywKICAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3Zv bGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2FyZ3R5cGVz ID0+ICdhbnllbGVtZW50JywgcHJvc3JjID0+ICd3aW5kb3dfbmV4dCcgfSwKK3sgb2lkID0+ICc4 MTI5JywgZGVzY3IgPT4gJ25leHQgdmFsdWUgYXQgb2Zmc2V0JywKKyAgcHJvbmFtZSA9PiAnbmV4 dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3Ny YyA9PiAnd2luZG93X25leHRfb2Zmc2V0JyB9LAogCiAjIGZ1bmN0aW9ucyBmb3IgcmFuZ2UgdHlw ZXMKIHsgb2lkID0+ICczODMyJywgZGVzY3IgPT4gJ0kvTycsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aAppbmRleCBhYTliMzYxZmEzMS4uZmFjMzdjOTY4OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIu aApAQCAtMjc0LDYgKzI3NCwxMCBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfTUVS R0VfU1VQUE9SVF9GVU5DLAogCUVFT1BfU1VCUExBTiwKIAorCS8qIHJvdyBwYXR0ZXJuIG5hdmln YXRpb24gKFJQUiBQUkVWL05FWFQpICovCisJRUVPUF9SUFJfTkFWX1NFVCwKKwlFRU9QX1JQUl9O QVZfUkVTVE9SRSwKKwogCS8qIGFnZ3JlZ2F0aW9uIHJlbGF0ZWQgbm9kZXMgKi8KIAlFRU9QX0FH R19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJRUVPUF9BR0dfREVTRVJJQUxJWkUsCkBAIC02OTEsNiAr Njk1LDE2IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJU3ViUGxhblN0YXRlICpz c3RhdGU7CiAJCX0JCQlzdWJwbGFuOwogCisJCS8qIGZvciBFRU9QX1JQUl9OQVZfU0VUIC8gRUVP UF9SUFJfTkFWX1JFU1RPUkUgKi8KKwkJc3RydWN0CisJCXsKKwkJCVdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZTsKKwkJCVJQUk5hdktpbmQJa2luZDsJLyogUFJFViBvciBORVhUICovCisJCQlEYXR1 bQkgICAqb2Zmc2V0X3ZhbHVlOwkvKiAyLWFyZzogcnVudGltZSBvZmZzZXQgdmFsdWUsIG9yCisJ CQkJCQkJCQkJICogTlVMTCAqLworCQkJYm9vbAkgICAqb2Zmc2V0X2lzbnVsbDsJLyogMi1hcmc6 IHJ1bnRpbWUgb2Zmc2V0IG51bGwgZmxhZyAqLworCQl9CQkJcnByX25hdjsKKwogCQkvKiBmb3Ig RUVPUF9BR0dfKkRFU0VSSUFMSVpFICovCiAJCXN0cnVjdAogCQl7CkBAIC04OTgsNiArOTEyLDEw IEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsTWVyZ2VTdXBwb3J0RnVuYyhFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiBl eHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBsYW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKIAkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2 YWxSUFJOYXZTZXQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCQkg IEV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbFJQUk5hdlJlc3Rv cmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCQkJICBFeHByQ29u dGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxXaG9sZVJvd1ZhcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRl eHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxTeXNWYXIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dB Z2cuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaAppbmRleCBhZGE0YTFj NDU4Yy4uZjZmNjY0NTEzMWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVX aW5kb3dBZ2cuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmgKQEAg LTIwLDQgKzIwLDcgQEAgZXh0ZXJuIFdpbmRvd0FnZ1N0YXRlICpFeGVjSW5pdFdpbmRvd0FnZyhX aW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWYKIGV4dGVybiB2b2lkIEV4ZWNF bmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nh bldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSk7CiAKKy8qIFJQUiBuYXZpZ2F0aW9uIHN1 cHBvcnQgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBvcGNvZGVzICovCitleHRlcm4gVHVwbGVU YWJsZVNsb3QgKkV4ZWNSUFJOYXZHZXRTbG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50 NjQgcG9zKTsKKwogI2VuZGlmCQkJCQkJCS8qIE5PREVXSU5ET1dBR0dfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaAppbmRleCBjNjcyZDI5ZjM1Yi4uNzRhNmI2ODIxMzIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCkBAIC0yNjkxLDEwICsyNjkxLDEyIEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRl CiAJVHVwbGVUYWJsZVNsb3QgKnRlbXBfc2xvdF8xOwogCVR1cGxlVGFibGVTbG90ICp0ZW1wX3Ns b3RfMjsKIAotCS8qIHRlbXBvcmFyeSBzbG90cyBmb3IgUlBSICovCi0JVHVwbGVUYWJsZVNsb3Qg KnByZXZfc2xvdDsJLyogUFJFViByb3cgbmF2aWdhdGlvbiBvcGVyYXRvciAqLwotCVR1cGxlVGFi bGVTbG90ICpuZXh0X3Nsb3Q7CS8qIE5FWFQgcm93IG5hdmlnYXRpb24gb3BlcmF0b3IgKi8KLQlU dXBsZVRhYmxlU2xvdCAqbnVsbF9zbG90OwkvKiBhbGwgTlVMTCBzbG90ICovCisJLyogUlBSIG5h dmlnYXRpb24gKi8KKwlzdHJ1Y3QgV2luZG93T2JqZWN0RGF0YSAqbmF2X3dpbm9iajsJLyogd2lu b2JqIGZvciBSUFIgbmF2IGZldGNoICovCisJaW50NjQJCW5hdl9zbG90X3BvczsJLyogcG9zaXRp b24gY2FjaGVkIGluIG5hdl9zbG90LCBvciAtMSAqLworCVR1cGxlVGFibGVTbG90ICpuYXZfc2xv dDsJLyogc2xvdCBmb3IgUFJFVi9ORVhUIHRhcmdldCByb3cgKi8KKwlUdXBsZVRhYmxlU2xvdCAq bmF2X3NhdmVkX291dGVydHVwbGU7CS8qIHNhdmVkIHNsb3QgZHVyaW5nIG5hdiBzd2FwICovCisJ VHVwbGVUYWJsZVNsb3QgKm5hdl9udWxsX3Nsb3Q7CS8qIGFsbCBOVUxMIHNsb3QgKi8KIAogCS8q IFJQUiBjdXJyZW50IG1hdGNoIHJlc3VsdCAqLwogCWJvb2wJCXJwcl9tYXRjaF92YWxpZDsJLyog dHJ1ZSBpZiBhIG1hdGNoIHJlc3VsdCBpcyBzZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXgg ZjViNmI0NTY2NGEuLjk0NzIzYTNiOTA5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNjQ4LDYg KzY0OCwzNyBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dGdW5jUnVuQ29uZGl0aW9uCiAJRXhwcgkg ICAqYXJnOwogfSBXaW5kb3dGdW5jUnVuQ29uZGl0aW9uOwogCisvKgorICogUlBSTmF2RXhwcgor ICoKKyAqIFJlcHJlc2VudHMgYSBQUkVWKCkgb3IgTkVYVCgpIG5hdmlnYXRpb24gY2FsbCBpbiBh biBSUFIgREVGSU5FIGNsYXVzZS4KKyAqIEF0IGV4cHJlc3Npb24gY29tcGlsZSB0aW1lIHRoaXMg aXMgdHJhbnNsYXRlZCBpbnRvIEVFT1BfUlBSX05BVl9TRVQgLworICogRUVPUF9SUFJfTkFWX1JF U1RPUkUgb3Bjb2RlcyByYXRoZXIgdGhhbiBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsLgorICoKKyAq IGtpbmQ6ICAgICAgIFJQUl9OQVZfUFJFViBvciBSUFJfTkFWX05FWFQKKyAqIGFyZzogICAgICAg IHRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlIGFnYWluc3QgdGhlIHRhcmdldCByb3cKKyAqIG9m ZnNldF9hcmc6IG9wdGlvbmFsIGV4cGxpY2l0IG9mZnNldCBleHByZXNzaW9uICgyLWFyZyBmb3Jt KTsgTlVMTCBmb3IKKyAqICAgICAgICAgICAgIHRoZSAxLWFyZyBmb3JtIHdoaWNoIHVzZXMgYW4g aW1wbGljaXQgb2Zmc2V0IG9mIDEKKyAqLwordHlwZWRlZiBlbnVtIFJQUk5hdktpbmQKK3sKKwlS UFJfTkFWX1BSRVYsCisJUlBSX05BVl9ORVhULAorfSBSUFJOYXZLaW5kOworCit0eXBlZGVmIHN0 cnVjdCBSUFJOYXZFeHByCit7CisJRXhwcgkJeHByOworCVJQUk5hdktpbmQJa2luZDsJCQkvKiBQ UkVWIG9yIE5FWFQgKi8KKwlFeHByCSAgICphcmc7CQkJLyogYXJndW1lbnQgZXhwcmVzc2lvbiAq LworCUV4cHIJICAgKm9mZnNldF9hcmc7CQkvKiBvZmZzZXQgZXhwcmVzc2lvbiwgb3IgTlVMTCBm b3IgMS1hcmcgZm9ybSAqLworCU9pZAkJCXJlc3VsdHR5cGU7CQkvKiByZXN1bHQgdHlwZSAoc2Ft ZSBhcyBhcmcncyB0eXBlKSAqLworCS8qIE9JRCBvZiBjb2xsYXRpb24gb2YgcmVzdWx0ICovCisJ T2lkCQkJcmVzdWx0Y29sbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkv KiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworCVBhcnNlTG9jCWxvY2F0aW9u OworfSBSUFJOYXZFeHByOworCiAvKgogICogTWVyZ2VTdXBwb3J0RnVuYwogICoKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnByLm91dAppbmRleCBlNzIxNzEwNTBjNy4uZDU4NmUxN2UwYTEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwci5vdXQKQEAgLTEwMTgsNiArMTAxOCw1NTUgQEAgV0lORE9XIHcgQVMg KAogICA1IHwgICAgIDAuMSB8ICAgICAwCiAoNSByb3dzKQogCistLQorLS0gRXJyb3IgY2FzZXM6 IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKKy0tCistLSBQUkVWIG91dHNpZGUgREVGSU5F IGNsYXVzZQorU0VMRUNUIHByZXYocHJpY2UpIEZST00gc3RvY2s7CitFUlJPUjogIHByZXYgY2Fu IG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIHByZXYocHJp Y2UpIEZST00gc3RvY2s7CisgICAgICAgICAgICAgICBeCistLSBORVhUIG91dHNpZGUgREVGSU5F IGNsYXVzZQorU0VMRUNUIG5leHQocHJpY2UpIEZST00gc3RvY2s7CitFUlJPUjogIG5leHQgY2Fu IG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIG5leHQocHJp Y2UpIEZST00gc3RvY2s7CisgICAgICAgICAgICAgICBeCistLSBOZXN0ZWQgUFJFVgorU0VMRUNU IHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJF VihQUkVWKHByaWNlKSkKKyk7CitFUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGJlIG5lc3Rl ZAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYocHJpY2UpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBOZXN0ZWQgTkVYVAorU0VMRUNUIHBy aWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChO RVhUKHByaWNlKSkKKyk7CitFUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGJlIG5lc3RlZAor TElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQUkVWIG5lc3RlZCBpbnNpZGUgTkVYVAor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNl ID4gTkVYVChQUkVWKHByaWNlKSkKKyk7CitFUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGJl IG5lc3RlZAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKFBSRVYocHJpY2Up KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQUkVWIG5lc3RlZCBpbnNp ZGUgZXhwcmVzc2lvbiBpbnNpZGUgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2UpKQor KTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBE RUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UgKiBQUkVWKHByaWNlKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gVHJpcGxlIG5lc3Rpbmc6IGVycm9yIHJlcG9ydGVk IGF0IG91dGVybW9zdCBQUkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMg KAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisg ICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQorKTsKK0VSUk9S OiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBB UyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNlKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIE5vIGNvbHVtbiByZWZlcmVuY2UgaW4gUFJFVi9ORVhUIGFyZ3VtZW50 CistLSBQUkVWKDEpOiBjb25zdGFudCBvbmx5LCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVigxKSA+IDAK Kyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9u IG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA3OiAgICAg REVGSU5FIEEgQVMgUFJFVigxKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5F WFQoMSArIDIpOiBjb25zdGFudCBleHByZXNzaW9uLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxF Q1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21w YW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgTkVYVCgxICsg MikgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9w ZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJTkUg NzogICAgIERFRklORSBBIEFTIE5FWFQoMSArIDIpID4gMAorICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gMi1hcmcgZm9ybTogUFJFVigxLCAxKTogY29uc3RhbnQgZXhwcmVzc2lvbiBhcyBm aXJzdCBhcmcKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBQUkVWKDEsIDEpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4g bmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVm ZXJlbmNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKDEsIDEpID4gMAorICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5j ZSBhcyBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJ TkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCispOworRVJST1I6ICBQUkVWL05FWFQgb2Zm c2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudAorTElORSA3OiAgICAgREVGSU5FIEEgQVMg UFJFVihwcmljZSwgcHJpY2UpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm9u LWNvbnN0YW50IG9mZnNldDogdm9sYXRpbGUgZnVuY3Rpb24gYXMgb2Zmc2V0CitTRUxFQ1QgcHJp Y2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55Cisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg SU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFu ZG9tKCk6OmludCkgPiAwCispOworRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3QgYmUgYSBy dW4tdGltZSBjb25zdGFudAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFu ZG9tKCk6OmludCkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBOb24tY29uc3Rh bnQgb2Zmc2V0OiBzdWJxdWVyeSBhcyBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFU VEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCAoU0VMRUNUIDEpKSA+IDAKKyk7 CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVGSU5FIGV4cHJlc3Npb24KK0xJTkUg NzogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIChTRUxFQ1QgMSkpID4gMAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRmlyc3QgYXJnOiBzdWJxdWVyeSAoY2F1 Z2h0IGJ5IERFRklORS1sZXZlbCBzdWJxdWVyeSByZXN0cmljdGlvbikKK1NFTEVDVCBwcmljZSBG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklU SUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgKFNFTEVD VCAxKSkgPiAwCispOworRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIERFRklORSBleHBy ZXNzaW9uCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgKFNFTEVDVCAxKSkg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRmlyc3QgYXJn OiB2b2xhdGlsZSBmdW5jdGlvbiBpcyBhbGxvd2VkIChldmFsdWF0ZWQgb24gdGFyZ2V0IHJvdykK K1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2Up IE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0 ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UgKyByYW5kb20o KSAqIDApID49IDAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92 YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEt MjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAgIDEzMCB8ICAgICA5 CisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwg ICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIz IHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAgIDEzMDAgfCAgICAgOQorIGNvbXBhbnkyIHwg MDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0y MDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisoMjAgcm93cykKKworLS0KKy0tIDItYXJnIFBSRVYvTkVYVDogZnVuY3Rpb25h bCB0ZXN0cworLS0KKy0tIFBSRVYocHJpY2UsIDIpOiBtYXRjaCByb3dzIHdoZXJlIGN1cnJlbnQg cHJpY2UgPiBwcmljZSAyIHJvd3MgYmFjaworLS0gc3RvY2s6IDEwMCwgOTAsIDgwLCA5NSwgMTEw CistLSBQYXR0ZXJuIChBIEIrKTogQT1hbnksIEIgd2hlcmUgcHJpY2UgPiBQUkVWKHByaWNlLCAy KQorLS0gQXQgcG9zIDIgKDgwKTogQSBtYXRjaGVzLiBwb3MgMyAoOTUpOiA5NSA+IFBSRVYoOTUs Mik9OTAgVFJVRS4KKy0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgNCAoMTEwKTog MTEwID4gUFJFVigxMTAsMik9ODAgVFJVRS4gTWF0Y2ghCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgcHJpY2UgPiBQUkVW KHByaWNlLCAyKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3Zh bHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0y MDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAgICAgMTUwIHwgICAgIDIK KyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAg ICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w Ny0yMDIzIHwgICAxMTAgfCAgICAgICAgIDExMCB8ICAgICAgICAxMjAgfCAgICAgMworIGNvbXBh bnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMg fCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTUwMCB8ICAgICAyCisgY29tcGFueTIgfCAw Ny0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAw IHwgICAgICAgIDExMDAgfCAgICAgICAxMjAwIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA4LTIw MjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKygyMCByb3dzKQorCistLSBORVhUKHByaWNlLCAyKTogbWF0Y2ggcm93cyB3aGVy ZSBjdXJyZW50IHByaWNlID4gcHJpY2UgMiByb3dzIGFoZWFkCistLSBwb3MgMCAoMTAwKTogTkVY VCgxMDAsMik9ODAsIDEwMD44MCBUUlVFLiBwb3MgMSAoOTApOiBORVhUKDkwLDIpPTk1LCA5MD45 NSBGQUxTRS4gTWF0Y2ggZW5kcy4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAg ICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBj b3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHByaWNlID4gTkVYVChwcmljZSwgMikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJp Y2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBh bnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAg IDIwMCB8ICAgICAxCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwg ICAgICAgICAxNDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMg fCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIw MjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAgIDIwMDAgfCAgICAgMQor IGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAxNDAwIHwg ICAgICAgMTUwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAg IDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3 LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93cykKKworLS0gRXhwcmVzc2lvbnMgaW5zaWRl IFBSRVYvTkVYVCBhcmc6IGV4cHIgaXMgZXZhbHVhdGVkIG9uIHRhcmdldCByb3cKKy0tIFBSRVYo cHJpY2UgLSA1MCwgMSk6IGZldGNoZXMgKHByaWNlIC0gNTApIGZyb20gMSByb3cgYmFjaworU0VM RUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRl CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlIC0gNTAs IDEpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBs YXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAg IDEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w Mi0yMDIzIHwgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAgICAyMDAgfCAgICAgMQorIGNvbXBh bnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAgICAg IDE1MCB8ICAgICAyCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMg fCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEzMCB8ICAgICA0CisgY29tcGFueTEgfCAw Ny0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAw IHwgICAgICAgIDIwMDAgfCAgICAgICAyMDAwIHwgICAgIDEKKyBjb21wYW55MiB8IDA3LTAzLTIw MjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgIDE1MDAgfCAgICAgICAxNTAw IHwgICAgIDEKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAg ICAgMTEwMCB8ICAgICAgIDEzMDAgfCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAx MzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5 LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgMTMwMCB8ICAgICAgIDEzMDAgfCAgICAg MQorKDIwIHJvd3MpCisKKy0tIE5FWFQocHJpY2UgKiAyLCAxKTogZmV0Y2hlcyAocHJpY2UgKiAy KSBmcm9tIDEgcm93IGFoZWFkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAg IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291 bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBw cmljZSA8IE5FWFQocHJpY2UgKiAyLCAxKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBw cmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMjAgfCAg ICAgOQorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAy MyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAx MzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEt MjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwgICAgIDQKKyBjb21wYW55 MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwg ICAgNjAgfCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAgfCAgICAgNAorIGNvbXBhbnkyIHwgMDct MDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSBMYXJnZSBvZmZzZXQ6IFBS RVYodmFsLCA5OTkpIG9uIDEwMDAtcm93IHNlcmllcyBtYXRjaGVzIG9ubHkgbGFzdCByb3cKKy0t IE5FWFQodmFsLCA5OTkpIG1hdGNoZXMgb25seSBmaXJzdCByb3cKK1NFTEVDVCB2YWwsIGZpcnN0 X3ZhbHVlKHZhbCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodmFsLCA5OTkpID0gMQorKQor T1JERVIgQlkgdmFsIERFU0MgTElNSVQgMzsKKyB2YWwgIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3Zh bHVlIHwgY291bnQgCistLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQor IDEwMDAgfCAgICAgICAgMTAwMCB8ICAgICAgIDEwMDAgfCAgICAgMQorICA5OTkgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorICA5OTggfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorKDMgcm93cykKKworU0VMRUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBPVkVS IHcsIGxhc3RfdmFsdWUodmFsKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgTkVYVCh2YWwsIDk5OSkgPSAxMDAwCispCitMSU1JVCAzOworIHZh bCB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLQorICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAgMSB8 ICAgICAxCisgICAyIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyAgIDMgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDMgcm93cykKKworLS0gUFJFVihwcmlj ZSwgMCk6IG9mZnNldCAwIG1lYW5zIGN1cnJlbnQgcm93LCBhbHdheXMgZXF1YWwgdG8gcHJpY2UK Ky0tIEErIG1hdGNoZXMgZW50aXJlIHBhcnRpdGlvbiBhcyBvbmUgZ3JvdXA7IGNvdW50ID0gcGFy dGl0aW9uIHNpemUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJp Y2UsIDApID0gcHJpY2UKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJz dF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDct MDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTMwIHwgICAgMTAKKyBjb21w YW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIz IHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1 MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTMwMCB8ICAgIDEwCisgY29tcGFueTIgfCAwNy0wMi0y MDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAg MTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w OC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisoMjAgcm93cykKKworLS0gMi1hcmcgUFJFVi9ORVhUIG91dHNpZGUgREVG SU5FIGNsYXVzZQorU0VMRUNUIHByZXYocHJpY2UsIDIpIEZST00gc3RvY2s7CitFUlJPUjogIHBy ZXYgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIHBy ZXYocHJpY2UsIDIpIEZST00gc3RvY2s7CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgbmV4dChw cmljZSwgMikgRlJPTSBzdG9jazsKK0VSUk9SOiAgbmV4dCBjYW4gb25seSBiZSB1c2VkIGluIGEg REVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgbmV4dChwcmljZSwgMikgRlJPTSBzdG9jazsK KyAgICAgICAgICAgICAgIF4KKy0tIDItYXJnIFBSRVYvTkVYVDogbmVnYXRpdmUgb2Zmc2V0CitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIg QlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCAtMSkg SVMgTk9UIE5VTEwKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbmVn YXRpdmUKKy0tIDItYXJnIFBSRVYvTkVYVDogTlVMTCBvZmZzZXQgKHR5cGVkKQorU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRl CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgTlVMTDo6aW50OCkg SVMgTk9UIE5VTEwKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbnVs bAorLS0gMi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodW50eXBlZCkKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sK K1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIE5VTEwpIElTIE5PVCBO VUxMCispOworRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKKy0tIDIt YXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSBuZWdhdGl2ZSBhbmQgTlVMTAorUFJFUEFSRSB0 ZXN0X3ByZXZfb2Zmc2V0KGludDgpIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UsICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2 X29mZnNldCgtMSk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRp dmUKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9m ZnNldCBtdXN0IG5vdCBiZSBudWxsCitERUFMTE9DQVRFIHRlc3RfcHJldl9vZmZzZXQ7CistLSAy LWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgd2l0aCBleHByZXNzaW9uICgwICsgJDEpCitQ UkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFT ICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgMCArICQxKQorKTsKK0VYRUNV VEUgdGVzdF9wcmV2X29mZnNldCgtMSk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBu b3QgYmUgbmVnYXRpdmUKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0VSUk9SOiAg UFJFVi9ORVhUIG9mZnNldCBtdXN0IG5vdCBiZSBudWxsCitERUFMTE9DQVRFIHRlc3RfcHJldl9v ZmZzZXQ7CistLSAyLWFyZzogdHdvIFBSRVYgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBzYW1l IERFRklORSBjbGF1c2UKKy0tIEI6IHByaWNlIGV4Y2VlZHMgYm90aCAxLWJhY2sgYW5kIDItYmFj ayB2YWx1ZXMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVS IHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBP UkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyBw cmljZSA+IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworIGNv bXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwg Y291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAy MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAg ICAgICAgMTEwIHwgICAgICAgIDEzMCB8ICAgICAyCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIz IHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAg ICAgIDEzMDAgfCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0y MDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3Mp CisKKy0tIDItYXJnOiBQUkVWIGFuZCBORVhUIHdpdGggZXhwbGljaXQgb2Zmc2V0cyBpbiBzYW1l IERFRklORSBjbGF1c2UKKy0tIEE6IHByaWNlIGV4Y2VlZHMgMS1iYWNrIGFuZCBpcyBiZWxvdyAx LWFoZWFkIChhc2NlbmRpbmcgaW50ZXJpb3IgcG9pbnQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+ IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA8IE5FWFQocHJpY2UsIDEpCispOworIGNvbXBhbnkg IHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQg CistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8 ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAg MTEwIHwgICAgICAgIDExMCB8ICAgICAxCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAy MyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0 MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUt MjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEx MDAgfCAgICAgMQorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwg IDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKIC0t CiAtLSBTS0lQIFRPIC8gQmFja3RyYWNraW5nIC8gRnJhbWUgYm91bmRhcnkKIC0tCkBAIC0xNDc5 LDcgKzIwMjgsNyBAQCBjb3VudCgqKSBPVkVSIHcKICgxNCByb3dzKQogCiAtLSBSZVNjYW4gdGVz dDogTEFURVJBTCBqb2luIGZvcmNlcyBXaW5kb3dBZ2cgcmVzY2FuIHdpdGggUlBSCi0tLSBUZXN0 cyBFeGVjUmVTY2FuV2luZG93QWdnIGNsZWFyaW5nIHByZXZfc2xvdC9uZXh0X3Nsb3QKKy0tIFRl c3RzIEV4ZWNSZVNjYW5XaW5kb3dBZ2cgY2xlYXJpbmcgbmF2X3Nsb3QKIFNFTEVDVCBnLngsIHN1 Yi4qCiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBnKHgpLAogTEFURVJBTCAoCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IGY2NmNhZjg5MDhlLi40YTY0 NmQxZTFkOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFp bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAg LTM4MjgsNiArMzgyOCw4NiBAQCBXSU5ET1cgdyBBUyAoCiAgICAtPiAgRnVuY3Rpb24gU2NhbiBv biBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKICg4IHJvd3Mp CiAKKy0tIFVzaW5nIDEtYXJnIFBSRVYgKGltcGxpY2l0IG9mZnNldCAxKQorQ1JFQVRFIFZJRVcg cnByX2V2X25hdl9wcmV2MSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBB IEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA+IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9uYXZfcHJldjEn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhU JzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFTICh2ID4gUFJFVih2KSkgKTsK KygzIHJvd3MpCisKKy0tIFVzaW5nIDEtYXJnIE5FWFQgKGltcGxpY2l0IG9mZnNldCAxKQorQ1JF QVRFIFZJRVcgcnByX2V2X25hdl9uZXh0MSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQor ICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodikKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9u YXZfbmV4dDEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8 UFJFVnxORVhUJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFTICh2IDwgTkVY VCh2KSkgKTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIDItYXJnIFBSRVYgKGV4cGxpY2l0IG9mZnNl dCkKK0NSRUFURSBWSUVXIHJwcl9ldl9uYXZfcHJldjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYsIDIpCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfbmF2X3ByZXYyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk58REVGSU5FfFBSRVZ8TkVYVCc7CisgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KGEgYispIAorICAgREVGSU5FCisgICBiIEFTICh2ID4gUFJFVih2LCAoMik6OmJpZ2ludCkpICk7 CisoMyByb3dzKQorCistLSBVc2luZyAyLWFyZyBORVhUIChleHBsaWNpdCBvZmZzZXQpCitDUkVB VEUgVklFVyBycHJfZXZfbmF2X25leHQyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2IDwgTkVYVCh2LCAyKQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X25hdl9uZXh0MicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklO RXxQUkVWfE5FWFQnOworICAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIrKSAK KyAgIERFRklORQorICAgYiBBUyAodiA8IE5FWFQodiwgKDIpOjpiaWdpbnQpKSApOworKDMgcm93 cykKKwogLS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucwogQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9u dWxsIEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9ycHIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbAppbmRleCA5NTc5 NGQ0MDllMS4uNTA0NDc2YTJiMDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw ci5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbApAQCAtNDQwLDYgKzQ0MCwz MjYgQEAgV0lORE9XIHcgQVMgKAogICBCIEFTIHZhbCA+IFBSRVYodmFsKSAqIDAuOTkKICk7CiAK Ky0tCistLSBFcnJvciBjYXNlczogUFJFVi9ORVhUIHVzYWdlIHJlc3RyaWN0aW9ucworLS0KKwor LS0gUFJFViBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBwcmV2KHByaWNlKSBGUk9NIHN0 b2NrOworCistLSBORVhUIG91dHNpZGUgREVGSU5FIGNsYXVzZQorU0VMRUNUIG5leHQocHJpY2Up IEZST00gc3RvY2s7CisKKy0tIE5lc3RlZCBQUkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYocHJpY2UpKQorKTsK KworLS0gTmVzdGVkIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoTkVYVChwcmljZSkpCispOworCistLSBQUkVWIG5l c3RlZCBpbnNpZGUgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgK KyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAg IERFRklORSBBIEFTIHByaWNlID4gTkVYVChQUkVWKHByaWNlKSkKKyk7CisKKy0tIFBSRVYgbmVz dGVkIGluc2lkZSBleHByZXNzaW9uIGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAg IFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlICogUFJFVihw cmljZSkpCispOworCistLSBUcmlwbGUgbmVzdGluZzogZXJyb3IgcmVwb3J0ZWQgYXQgb3V0ZXJt b3N0IFBSRVYKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNlKSkpCispOworCistLSBObyBjb2x1bW4g cmVmZXJlbmNlIGluIFBSRVYvTkVYVCBhcmd1bWVudAorLS0gUFJFVigxKTogY29uc3RhbnQgb25s eSwgbm8gY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChB KQorICAgIERFRklORSBBIEFTIFBSRVYoMSkgPiAwCispOworCistLSBORVhUKDEgKyAyKTogY29u c3RhbnQgZXhwcmVzc2lvbiwgbm8gY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIHByaWNlIEZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwK KyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIE5FWFQoMSArIDIpID4gMAorKTsKKwor LS0gMi1hcmcgZm9ybTogUFJFVigxLCAxKTogY29uc3RhbnQgZXhwcmVzc2lvbiBhcyBmaXJzdCBh cmcKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQ UkVWKDEsIDEpID4gMAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVy ZW5jZSBhcyBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBE RUZJTkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCispOworCistLSBOb24tY29uc3RhbnQg b2Zmc2V0OiB2b2xhdGlsZSBmdW5jdGlvbiBhcyBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisg ICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCByYW5kb20oKTo6aW50 KSA+IDAKKyk7CisKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHN1YnF1ZXJ5IGFzIG9mZnNldAor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYo cHJpY2UsIChTRUxFQ1QgMSkpID4gMAorKTsKKworLS0gRmlyc3QgYXJnOiBzdWJxdWVyeSAoY2F1 Z2h0IGJ5IERFRklORS1sZXZlbCBzdWJxdWVyeSByZXN0cmljdGlvbikKK1NFTEVDVCBwcmljZSBG Uk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklU SUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgKFNFTEVD VCAxKSkgPiAwCispOworCistLSBGaXJzdCBhcmc6IHZvbGF0aWxlIGZ1bmN0aW9uIGlzIGFsbG93 ZWQgKGV2YWx1YXRlZCBvbiB0YXJnZXQgcm93KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgUFJFVihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorKTsKKworLS0KKy0tIDIt YXJnIFBSRVYvTkVYVDogZnVuY3Rpb25hbCB0ZXN0cworLS0KKworLS0gUFJFVihwcmljZSwgMik6 IG1hdGNoIHJvd3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBiYWNrCistLSBz dG9jazogMTAwLCA5MCwgODAsIDk1LCAxMTAKKy0tIFBhdHRlcm4gKEEgQispOiBBPWFueSwgQiB3 aGVyZSBwcmljZSA+IFBSRVYocHJpY2UsIDIpCistLSBBdCBwb3MgMiAoODApOiBBIG1hdGNoZXMu IHBvcyAzICg5NSk6IDk1ID4gUFJFVig5NSwyKT05MCBUUlVFLgorLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBvcyA0ICgxMTApOiAxMTAgPiBQUkVWKDExMCwyKT04MCBUUlVFLiBNYXRj aCEKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBC WSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwK KyAgICAgICAgQiBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworCistLSBORVhUKHByaWNl LCAyKTogbWF0Y2ggcm93cyB3aGVyZSBjdXJyZW50IHByaWNlID4gcHJpY2UgMiByb3dzIGFoZWFk CistLSBwb3MgMCAoMTAwKTogTkVYVCgxMDAsMik9ODAsIDEwMD44MCBUUlVFLiBwb3MgMSAoOTAp OiBORVhUKDkwLDIpPTk1LCA5MD45NSBGQUxTRS4gTWF0Y2ggZW5kcy4KK1NFTEVDVCBjb21wYW55 LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSwgMikKKyk7CisKKy0tIEV4 cHJlc3Npb25zIGluc2lkZSBQUkVWL05FWFQgYXJnOiBleHByIGlzIGV2YWx1YXRlZCBvbiB0YXJn ZXQgcm93CistLSBQUkVWKHByaWNlIC0gNTAsIDEpOiBmZXRjaGVzIChwcmljZSAtIDUwKSBmcm9t IDEgcm93IGJhY2sKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4g UFJFVihwcmljZSAtIDUwLCAxKQorKTsKKworLS0gTkVYVChwcmljZSAqIDIsIDEpOiBmZXRjaGVz IChwcmljZSAqIDIpIGZyb20gMSByb3cgYWhlYWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHByaWNlIDwgTkVYVChwcmljZSAqIDIsIDEpCispOworCistLSBMYXJnZSBvZmZz ZXQ6IFBSRVYodmFsLCA5OTkpIG9uIDEwMDAtcm93IHNlcmllcyBtYXRjaGVzIG9ubHkgbGFzdCBy b3cKKy0tIE5FWFQodmFsLCA5OTkpIG1hdGNoZXMgb25seSBmaXJzdCByb3cKK1NFTEVDVCB2YWws IGZpcnN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodmFsLCA5OTkpID0g MQorKQorT1JERVIgQlkgdmFsIERFU0MgTElNSVQgMzsKKworU0VMRUNUIHZhbCwgZmlyc3RfdmFs dWUodmFsKSBPVkVSIHcsIGxhc3RfdmFsdWUodmFsKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVCh2YWwsIDk5OSkgPSAxMDAwCispCitM SU1JVCAzOworCistLSBQUkVWKHByaWNlLCAwKTogb2Zmc2V0IDAgbWVhbnMgY3VycmVudCByb3cs IGFsd2F5cyBlcXVhbCB0byBwcmljZQorLS0gQSsgbWF0Y2hlcyBlbnRpcmUgcGFydGl0aW9uIGFz IG9uZSBncm91cDsgY291bnQgPSBwYXJ0aXRpb24gc2l6ZQorU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgMCkgPSBwcmljZQorKTsKKworLS0gMi1hcmcgUFJF Vi9ORVhUIG91dHNpZGUgREVGSU5FIGNsYXVzZQorU0VMRUNUIHByZXYocHJpY2UsIDIpIEZST00g c3RvY2s7CitTRUxFQ1QgbmV4dChwcmljZSwgMikgRlJPTSBzdG9jazsKKworLS0gMi1hcmcgUFJF Vi9ORVhUOiBuZWdhdGl2ZSBvZmZzZXQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIFBSRVYocHJpY2UsIC0xKSBJUyBOT1QgTlVMTAorKTsKKworLS0gMi1hcmcgUFJF Vi9ORVhUOiBOVUxMIG9mZnNldCAodHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVMTAorKTsKKwor LS0gMi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodW50eXBlZCkKK1NFTEVDVCBjb21wYW55 LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIE5VTEwpIElTIE5PVCBOVUxM CispOworCistLSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgbmVnYXRpdmUgYW5kIE5V TEwKK1BSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9X IHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAkMSkKKyk7CitFWEVD VVRFIHRlc3RfcHJldl9vZmZzZXQoLTEpOworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwp OworREVBTExPQ0FURSB0ZXN0X3ByZXZfb2Zmc2V0OworCistLSAyLWFyZyBQUkVWL05FWFQ6IGhv c3QgdmFyaWFibGUgd2l0aCBleHByZXNzaW9uICgwICsgJDEpCitQUkVQQVJFIHRlc3RfcHJldl9v ZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHByaWNlID4gUFJFVihwcmljZSwgMCArICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNl dCgtMSk7CitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoTlVMTCk7CitERUFMTE9DQVRFIHRlc3Rf cHJldl9vZmZzZXQ7CisKKy0tIDItYXJnOiB0d28gUFJFViB3aXRoIGRpZmZlcmVudCBvZmZzZXRz IGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQjogcHJpY2UgZXhjZWVkcyBib3RoIDEtYmFjayBh bmQgMi1iYWNrIHZhbHVlcworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50 KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAg ICBCIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlID4gUFJFVihwcmljZSwgMikK Kyk7CisKKy0tIDItYXJnOiBQUkVWIGFuZCBORVhUIHdpdGggZXhwbGljaXQgb2Zmc2V0cyBpbiBz YW1lIERFRklORSBjbGF1c2UKKy0tIEE6IHByaWNlIGV4Y2VlZHMgMS1iYWNrIGFuZCBpcyBiZWxv dyAxLWFoZWFkIChhc2NlbmRpbmcgaW50ZXJpb3IgcG9pbnQpCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUo cHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmlj ZSA+IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA8IE5FWFQocHJpY2UsIDEpCispOworCiAtLQog LS0gU0tJUCBUTyAvIEJhY2t0cmFja2luZyAvIEZyYW1lIGJvdW5kYXJ5CiAtLQpAQCAtNjcxLDcg Kzk5MSw3IEBAIGNvdW50KCopIE9WRVIgdwogKTsKIAogLS0gUmVTY2FuIHRlc3Q6IExBVEVSQUwg am9pbiBmb3JjZXMgV2luZG93QWdnIHJlc2NhbiB3aXRoIFJQUgotLS0gVGVzdHMgRXhlY1JlU2Nh bldpbmRvd0FnZyBjbGVhcmluZyBwcmV2X3Nsb3QvbmV4dF9zbG90CistLSBUZXN0cyBFeGVjUmVT Y2FuV2luZG93QWdnIGNsZWFyaW5nIG5hdl9zbG90CiBTRUxFQ1QgZy54LCBzdWIuKgogRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMikgZyh4KSwKIExBVEVSQUwgKApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnBy X2V4cGxhaW4uc3FsCmluZGV4IDY1YTc3NWZkYWQ5Li5hZWQyZjY5YmM0ZiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9leHBsYWluLnNxbApAQCAtMjIwMiw2ICsyMjAyLDYyIEBAIFdJTkRPVyB3IEFT ICgKICAgICAgICAgRCBBUyB2IDwgUFJFVih2KQogKTsnKTsKIAorLS0gVXNpbmcgMS1hcmcgUFJF ViAoaW1wbGljaXQgb2Zmc2V0IDEpCitDUkVBVEUgVklFVyBycHJfZXZfbmF2X3ByZXYxIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyB2ID4gUFJFVih2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X25hdl9wcmV2MScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVWfE5FWFQnOworCistLSBVc2luZyAxLWFyZyBO RVhUIChpbXBsaWNpdCBvZmZzZXQgMSkKK0NSRUFURSBWSUVXIHJwcl9ldl9uYXZfbmV4dDEgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBC IEFTIHYgPCBORVhUKHYpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbmF2X25leHQxJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIDItYXJn IFBSRVYgKGV4cGxpY2l0IG9mZnNldCkKK0NSRUFURSBWSUVXIHJwcl9ldl9uYXZfcHJldjIgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBC IEFTIHYgPiBQUkVWKHYsIDIpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbmF2X3ByZXYyJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIDIt YXJnIE5FWFQgKGV4cGxpY2l0IG9mZnNldCkKK0NSRUFURSBWSUVXIHJwcl9ldl9uYXZfbmV4dDIg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAg ICBCIEFTIHYgPCBORVhUKHYsIDIpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbmF2X25leHQyJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBSRVZ8TkVYVCc7CisKIC0tIFVzaW5n IE5VTEwgY29tcGFyaXNvbnMKIENSRUFURSBWSUVXIHJwcl9ldl9kZWZfbnVsbCBBUwogU0VMRUNU IGNvdW50KCopIE9WRVIgdwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2MDkwYzJkODk1 MC4uMTZkZTE0MjEzMDIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xODAxLDcgKzE4 MDEsNiBAQCBOYW1lZExXTG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1cGxlc3RvcmVTY2FuCiBO YW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KLU5hdmlnYXRpb25JbmZvCiBO ZXN0TG9vcAogTmVzdExvb3BQYXJhbQogTmVzdExvb3BTdGF0ZQpAQCAtMjQ3OCw2ICsyNDc3LDgg QEAgUXVlcnlTb3VyY2UKIFF1ZXVlQmFja2VuZFN0YXR1cwogUXVldWVQb3NpdGlvbgogUXVpdFNp Z25hbFJlYXNvbgorUlBSTmF2RXhwcgorUlBSTmF2S2luZAogUkJUTm9kZQogUkJUT3JkZXJDb250 cm9sCiBSQlRyZWUKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0012-JIT-support-for-PREV-NEXT.txt" Content-Disposition: attachment; filename="nocfbot-0012-JIT-support-for-PREV-NEXT.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr8d8k11 RnJvbSA1NmVjNzk4Y2I3NWVhZWUzNjY1YzBlMDNhODFlZTE2NzNlM2Y4YTk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTA6NTQ6MzAgKzA5MDAKU3ViamVjdDogW1BBVENIXSBBZGQgSklU IGNvbXBpbGF0aW9uIHN1cHBvcnQgZm9yIFJQUiBQUkVWL05FWFQgbmF2aWdhdGlvbgoKLS0tCiBz cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyB8IDcyICsrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgICB8IDMxICsr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgICAgICAgIHwgMjcgKysr KysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggZDE1OGUzN2U3YjUuLjQ5 MDFiMmE3ZmY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTI3LDYgKzEy Nyw5IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJTExWTVZhbHVlUmVm IHZfYWdndmFsdWVzOwogCUxMVk1WYWx1ZVJlZiB2X2FnZ251bGxzOwogCisJLyogUlBSIG5hdmln YXRpb246IHdoZW4gdHJ1ZSwgRUVPUF9PVVRFUl9WQVIgcmVsb2FkcyBmcm9tIGVjb250ZXh0ICov CisJYm9vbAkJaGFzX3Jwcl9uYXY7CisKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlpbnN0cl90 aW1lCWRlZm9ybV9zdGFydHRpbWU7CiAJaW5zdHJfdGltZQllbmR0aW1lOwpAQCAtMzAwLDE5ICsz MDMsMTYgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAkgKiBSUFIgbmF2 aWdhdGlvbiBvcGNvZGVzIChQUkVWL05FWFQpIHN3YXAgZWN4dF9vdXRlcnR1cGxlIHRvIGEgZGlm ZmVyZW50CiAJICogcm93IG1pZC1leHByZXNzaW9uLiAgVGhlIEpJVCBjb2RlIGxvYWRzIHZfb3V0 ZXJ2YWx1ZXMgYW5kIHZfb3V0ZXJudWxscwogCSAqIG9uY2UgaW4gdGhlIGVudHJ5IGJsb2NrIGFu ZCByZXVzZXMgdGhlbSBmb3IgYWxsIEVFT1BfT1VURVJfVkFSIHN0ZXBzLgotCSAqIEFmdGVyIGEg c2xvdCBzd2FwLCB0aGVzZSBwb2ludGVycyBiZWNvbWUgc3RhbGUgYmVjYXVzZSB0aGUgbmV3IHNs b3QgaGFzCi0JICogaXRzIG93biB0dHNfdmFsdWVzL3R0c19pc251bGwgYXJyYXlzLiAgRmFsbCBi YWNrIHRvIHRoZSBpbnRlcnByZXRlciBmb3IKLQkgKiB0aGVzZSBleHByZXNzaW9ucy4KKwkgKiBB ZnRlciBhIHNsb3Qgc3dhcCwgdGhlc2UgY2FjaGVkIHBvaW50ZXJzIGJlY29tZSBzdGFsZSBiZWNh dXNlIHRoZSBuZXcKKwkgKiBzbG90IGhhcyBpdHMgb3duIHR0c192YWx1ZXMvdHRzX2lzbnVsbCBh cnJheXMuCiAJICoKLQkgKiBYWFggVG8gSklULWNvbXBpbGUgdGhlc2UgZXhwcmVzc2lvbnMgcHJv cGVybHksIHRoZSBOQVZfU0VUIGFuZAotCSAqIE5BVl9SRVNUT1JFIGhhbmRsZXJzIHdvdWxkIG5l ZWQgdG8gcmVsb2FkIHRoZSB0dHNfdmFsdWVzIGFuZCB0dHNfaXNudWxsCi0JICogcG9pbnRlcnMg ZnJvbSB0aGUgbmV3IHNsb3QuICBIb3dldmVyLCBMTFZNIHVzZXMgU1NBIChTdGF0aWMgU2luZ2xl Ci0JICogQXNzaWdubWVudCkgZm9ybSB3aGVyZSBlYWNoIHZhbHVlIGlzIGRlZmluZWQgZXhhY3Rs eSBvbmNlLiAgV2hlbgotCSAqIGRpZmZlcmVudCBiYXNpYyBibG9ja3MgcHJvZHVjZSBkaWZmZXJl bnQgdmFsdWVzIGZvciB0aGUgc2FtZSBwb2ludGVyLAotCSAqIExMVk0gcmVxdWlyZXMgUEhJIG5v ZGVzIGF0IHRoZSBtZXJnZSBwb2ludCB0byBzZWxlY3QgdGhlIGNvcnJlY3Qgb25lLgotCSAqIFdp dGhvdXQgdGhhdCBwbHVtYmluZywgT1VURVJfVkFSIHN0ZXBzIGFmdGVyIGEgc2xvdCBzd2FwIHdv dWxkIHJlYWQKLQkgKiBmcm9tIHRoZSB3cm9uZyBwb2ludGVyLgorCSAqIFdoZW4gUlBSIG5hdmln YXRpb24gb3Bjb2RlcyBhcmUgcHJlc2VudCwgRUVPUF9PVVRFUl9WQVIgcmVsb2FkcyB0aGUKKwkg KiBzbG90IHBvaW50ZXIgZnJvbSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlIG9uIGV2ZXJ5IGFj Y2VzcyBpbnN0ZWFkIG9mCisJICogdXNpbmcgdGhlIGNhY2hlZCBlbnRyeS1ibG9jayB2YWx1ZXMu ICBUaGlzIGF2b2lkcyB0aGUgU1NBL1BISQorCSAqIGNvbXBsZXhpdHkgd2hpbGUga2VlcGluZyB0 aGUgcmVzdCBvZiB0aGUgZXhwcmVzc2lvbiBKSVQtY29tcGlsZWQuCisJICogRXhwcmVzc2lvbnMg d2l0aG91dCBSUFIgbmF2aWdhdGlvbiB1c2UgdGhlIGNhY2hlZCB2YWx1ZXMgYXMgYmVmb3JlLgog CSAqLworCWhhc19ycHJfbmF2ID0gZmFsc2U7CiAJaWYgKHBhcmVudCAmJiBJc0EocGFyZW50LCBX aW5kb3dBZ2dTdGF0ZSkgJiYKIAkJKChXaW5kb3dBZ2cgKikgcGFyZW50LT5wbGFuKS0+cnBQYXR0 ZXJuICE9IE5VTEwpCiAJewpAQCAtMzIzLDkgKzMyMyw4IEBAIGxsdm1fY29tcGlsZV9leHByKEV4 cHJTdGF0ZSAqc3RhdGUpCiAJCQlpZiAob3Bjb2RlID09IEVFT1BfUlBSX05BVl9TRVQgfHwKIAkJ CQlvcGNvZGUgPT0gRUVPUF9SUFJfTkFWX1JFU1RPUkUpCiAJCQl7Ci0JCQkJTExWTURlbGV0ZUZ1 bmN0aW9uKGV2YWxfZm4pOwotCQkJCUxMVk1EaXNwb3NlQnVpbGRlcihiKTsKLQkJCQlyZXR1cm4g ZmFsc2U7CisJCQkJaGFzX3Jwcl9uYXYgPSB0cnVlOworCQkJCWJyZWFrOwogCQkJfQogCQl9CiAJ fQpAQCAtNDkyLDggKzQ5MSwzNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRl KQogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKG9wY29kZSA9PSBFRU9QX09VVEVSX1ZBUikKIAkJCQkJ ewotCQkJCQkJdl92YWx1ZXMgPSB2X291dGVydmFsdWVzOwotCQkJCQkJdl9udWxscyA9IHZfb3V0 ZXJudWxsczsKKwkJCQkJCWlmIChoYXNfcnByX25hdikKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJ CQkJCSAqIFJQUiBuYXZpZ2F0aW9uIHN3YXBzIGVjeHRfb3V0ZXJ0dXBsZQorCQkJCQkJCSAqIG1p ZC1leHByZXNzaW9uLiAgUmVsb2FkIHNsb3QgcG9pbnRlciBmcm9tCisJCQkJCQkJICogZWNvbnRl eHQgb24gZXZlcnkgYWNjZXNzIHNvIHdlIHJlYWQgZnJvbSB0aGUKKwkJCQkJCQkgKiBjdXJyZW50 IChwb3NzaWJseSBzd2FwcGVkKSBzbG90LgorCQkJCQkJCSAqLworCQkJCQkJCUxMVk1WYWx1ZVJl ZiB2X3RtcHNsb3Q7CisKKwkJCQkJCQl2X3RtcHNsb3QgPSBsX2xvYWRfc3RydWN0X2dlcChiLAor CQkJCQkJCQkJCQkJCQkgIFN0cnVjdEV4cHJDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkgIHZfZWNv bnRleHQsCisJCQkJCQkJCQkJCQkJCSAgRklFTEROT19FWFBSQ09OVEVYVF9PVVRFUlRVUExFLAor CQkJCQkJCQkJCQkJCQkgICJ2X291dGVyc2xvdF9yZWxvYWQiKTsKKwkJCQkJCQl2X3ZhbHVlcyA9 IGxfbG9hZF9zdHJ1Y3RfZ2VwKGIsCisJCQkJCQkJCQkJCQkJCSBTdHJ1Y3RUdXBsZVRhYmxlU2xv dCwKKwkJCQkJCQkJCQkJCQkJIHZfdG1wc2xvdCwKKwkJCQkJCQkJCQkJCQkJIEZJRUxETk9fVFVQ TEVUQUJMRVNMT1RfVkFMVUVTLAorCQkJCQkJCQkJCQkJCQkgInZfb3V0ZXJ2YWx1ZXNfcmVsb2Fk Iik7CisJCQkJCQkJdl9udWxscyA9IGxfbG9hZF9zdHJ1Y3RfZ2VwKGIsCisJCQkJCQkJCQkJCQkJ CVN0cnVjdFR1cGxlVGFibGVTbG90LAorCQkJCQkJCQkJCQkJCQl2X3RtcHNsb3QsCisJCQkJCQkJ CQkJCQkJCUZJRUxETk9fVFVQTEVUQUJMRVNMT1RfSVNOVUxMLAorCQkJCQkJCQkJCQkJCQkidl9v dXRlcm51bGxzX3JlbG9hZCIpOworCQkJCQkJfQorCQkJCQkJZWxzZQorCQkJCQkJeworCQkJCQkJ CXZfdmFsdWVzID0gdl9vdXRlcnZhbHVlczsKKwkJCQkJCQl2X251bGxzID0gdl9vdXRlcm51bGxz OworCQkJCQkJfQogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKG9wY29kZSA9PSBFRU9QX1NDQU5fVkFS KQogCQkJCQl7CkBAIC0yNDY3LDEwICsyNDk1LDE2IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJT dGF0ZSAqc3RhdGUpCiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgRUVPUF9SUFJfTkFWX1NFVDoKKwkJ CQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0V2YWxSUFJOYXZTZXQiLAorCQkJCQkJCQl2 X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3Bu byArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBFRU9QX1JQUl9OQVZfUkVTVE9SRToKLQkJ CQkvKiB1bnJlYWNoYWJsZTogZmlsdGVyZWQgb3V0IGJ5IHRoZSBwcmUtc2NhbiBhYm92ZSAqLwot CQkJCUFzc2VydChmYWxzZSk7Ci0JCQkJcmV0dXJuIGZhbHNlOworCQkJCWJ1aWxkX0V2YWxYRnVu YyhiLCBtb2QsICJFeGVjRXZhbFJQUk5hdlJlc3RvcmUiLAorCQkJCQkJCQl2X3N0YXRlLCBvcCwg dl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJ CQlicmVhazsKIAogCQkJY2FzZSBFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkU6CiAJCQljYXNl IEVFT1BfQUdHX0RFU0VSSUFMSVpFOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IGQ1 ODZlMTdlMGExLi5kZTZjZTRmYmE4YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAt MjE1Myw2ICsyMTUzLDM3IEBAIFNFTEVDVCBtYXRjaF9maXJzdCwgbWF0Y2hfbGFzdCwgbWF0Y2hf bGVuIEZST00gcmVzdWx0IFdIRVJFIG1hdGNoX2xlbiA+IDA7CiAgICAgICAgICAgIDAgfCAgICAg IDk5OTk4IHwgICAgIDk5OTk5CiAoMSByb3cpCiAKKy0tIEpJVCBQUkVWL05FWFQgbmF2aWdhdGlv biB0ZXN0OiAxMDBLIHJvd3Mgd2l0aCBQUkVWIGluIERFRklORS4KKy0tIEV4ZXJjaXNlcyBFRU9Q X1JQUl9OQVZfU0VUL1JFU1RPUkUgSklUIGNvZGUgcGF0aHMgKGhhc19ycHJfbmF2IHJlbG9hZCkK Ky0tIGF0IHNjYWxlLiBWLXNoYXBlOiBwcmljZSByaXNlcyB0aGVuIGZhbGxzLCByZXBlYXRlZCBh Y3Jvc3MgcGFydGl0aW9uLgorU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1dJVEggZGF0YSBBUyAo CisgU0VMRUNUIGksIGFicyg1MDAwMCAtIGkpIEFTIHByaWNlCisgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwMDAwKSBpCispLAorcmVzdWx0IEFTICgKKyBTRUxFQ1QgaSwgcHJpY2UsCisgICAg ICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9sZW4sCisgICAgICAgIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcgQVMgbWF0Y2hfZmlyc3QKKyBGUk9NIGRhdGEKKyBXSU5ET1cgdyBBUyAoCisg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOIChET1dOKyBV UCspCisgIERFRklORQorICAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICAgVVAgQVMg cHJpY2UgPiBQUkVWKHByaWNlKQorICkKKykKK1NFTEVDVCBjb3VudCgqKSBBUyBtYXRjaGVkX3Jv d3MsIG1heChtYXRjaF9sZW4pIEFTIGxvbmdlc3RfbWF0Y2gKK0ZST00gcmVzdWx0IFdIRVJFIG1h dGNoX2xlbiA+IDA7CisgbWF0Y2hlZF9yb3dzIHwgbG9uZ2VzdF9tYXRjaCAKKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgMSB8ICAgICAgICAgOTk5OTkKKygxIHJv dykKKworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CiAtLQogLS0gSUdOT1JFIE5VTExTCiAtLQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jwci5zcWwKaW5kZXggNTA0NDc2YTJiMDIuLmIzYmJjODI1NGM0IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw ci5zcWwKQEAgLTEwODQsNiArMTA4NCwzMyBAQCByZXN1bHQgQVMgKAogLS0gU2hvdWxkIG1hdGNo OiBBICgzMzMzMyByb3dzKSArIEIgKDMzMzMzIHJvd3MpICsgQyAoMzMzMzMgcm93cykgPSA5OTk5 OSByb3dzCiBTRUxFQ1QgbWF0Y2hfZmlyc3QsIG1hdGNoX2xhc3QsIG1hdGNoX2xlbiBGUk9NIHJl c3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOwogCistLSBKSVQgUFJFVi9ORVhUIG5hdmlnYXRpb24g dGVzdDogMTAwSyByb3dzIHdpdGggUFJFViBpbiBERUZJTkUuCistLSBFeGVyY2lzZXMgRUVPUF9S UFJfTkFWX1NFVC9SRVNUT1JFIEpJVCBjb2RlIHBhdGhzIChoYXNfcnByX25hdiByZWxvYWQpCist LSBhdCBzY2FsZS4gVi1zaGFwZTogcHJpY2UgcmlzZXMgdGhlbiBmYWxscywgcmVwZWF0ZWQgYWNy b3NzIHBhcnRpdGlvbi4KK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitXSVRIIGRhdGEgQVMgKAor IFNFTEVDVCBpLCBhYnMoNTAwMDAgLSBpKSBBUyBwcmljZQorIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwMDAwMCkgaQorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIGksIHByaWNlLAorICAgICAg ICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3IEFTIG1hdGNoX2ZpcnN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMgKAorICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoRE9XTisgVVAr KQorICBERUZJTkUKKyAgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgIFVQIEFTIHBy aWNlID4gUFJFVihwcmljZSkKKyApCispCitTRUxFQ1QgY291bnQoKikgQVMgbWF0Y2hlZF9yb3dz LCBtYXgobWF0Y2hfbGVuKSBBUyBsb25nZXN0X21hdGNoCitGUk9NIHJlc3VsdCBXSEVSRSBtYXRj aF9sZW4gPiAwOworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CisKIC0tCiAtLSBJR05PUkUgTlVMTFMK IC0tCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0013-Add-tuplestore-trim-optimization-for-RPR-PREV.txt" Content-Disposition: attachment; filename="nocfbot-0013-Add-tuplestore-trim-optimization-for-RPR-PREV.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr8f4e12 RnJvbSBhODQ4MTc3NGJhYmI1MWI0ZDU1MjdmYWI2YzEzNDk4N2Y5YmI0OWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTYXQsIDQgQXByIDIwMjYgMTE6NDk6MzIgKzA5MDAKU3ViamVjdDogW1BBVENIXSBBZGQgdHVw bGVzdG9yZSB0cmltIG9wdGltaXphdGlvbiBmb3IgUlBSIFBSRVYgbmF2aWdhdGlvbgoKQWR2YW5j ZSB0aGUgdHVwbGVzdG9yZSBtYXJrIHBvaW50ZXIgYmFzZWQgb24gdGhlIG1heGltdW0gUFJFViBv ZmZzZXQKZm91bmQgaW4gREVGSU5FIGNsYXVzZSBleHByZXNzaW9ucywgYWxsb3dpbmcgdHVwbGVz dG9yZV90cmltKCkgdG8KZnJlZSByb3dzIHRoYXQgUFJFViBjYW4gbm8gbG9uZ2VyIHJlYWNoLgoK VGhlIHBsYW5uZXIgd2Fsa3MgREVGSU5FIGV4cHJlc3Npb25zIHRvIGZpbmQgdGhlIG1heGltdW0g UFJFViBvZmZzZXQuCklmIGFsbCBvZmZzZXRzIGFyZSBjb25zdGFudHMsIG5hdk1heE9mZnNldCBp cyBzZXQgZGlyZWN0bHkuIElmIGFueQpvZmZzZXQgaXMgbm9uLWNvbnN0YW50IChwYXJhbWV0ZXIg b3IgZXhwcmVzc2lvbiksIHRoZSBwbGFubmVyIHNldHMKUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZB TCBhbmQgdGhlIGV4ZWN1dG9yIGV2YWx1YXRlcyBhbGwgUFJFViBvZmZzZXRzCmF0IGluaXQgdGlt ZS4gVGhlIGV4ZWN1dG9yIHRoZW4gYWR2YW5jZXMgdGhlIG1hcmsgdG8KKGN1cnJlbnRwb3MgLSBu YXZNYXhPZmZzZXQpIGVhY2ggcm93LgoKTkVYVCBvZmZzZXRzIGFyZSBpZ25vcmVkIHNpbmNlIHRo ZXkgbG9vayBmb3J3YXJkIGFuZCBkbyBub3QgYWZmZWN0CnRyaW0uIFJQUl9OQVZfT0ZGU0VUX1JF VEFJTl9BTEwgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBuYXZpZ2F0aW9uCmZ1bmN0aW9ucyAoRklS U1QvTEFTVCkgdGhhdCByZXF1aXJlIHRoZSBlbnRpcmUgcGFydGl0aW9uLgotLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICB8IDEzNiArKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDEwMSArKysr KysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgfCAgIDkgKysK IHNyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAgICAgICAgICAgICB8ICAgOSArKwogNSBmaWxl cyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IGQyZmZmZTBmY2U2Li4xODYwMjlkZjFkOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpAQCAtMjQ0LDYgKzI0NCwxMCBAQCBzdGF0 aWMgdm9pZCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBw b3MpOwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBORkEgcm93IGV2YWx1YXRpb24gKi8KIHN0 YXRpYyBib29sIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9z LCBib29sICp2YXJNYXRjaGVkKTsKIAorLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBuYXZpZ2F0 aW9uIG9mZnNldCBldmFsdWF0aW9uICovCitzdGF0aWMgYm9vbCBjb2xsZWN0X3ByZXZfb2Zmc2V0 X3dhbGtlcihOb2RlICpub2RlLCBMaXN0ICoqb2Zmc2V0cyk7CitzdGF0aWMgdm9pZCBldmFsX25h dl9tYXhfb2Zmc2V0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5lQ2xhdXNl KTsKKwogLyoKICAqIE5vdCBudWxsIGluZm8gYml0IGFycmF5IGNvbnNpc3RzIG9mIDItYml0IGl0 ZW1zCiAgKi8KQEAgLTkzNCwxMiArOTM4LDE4IEBAIGV2YWxfd2luZG93YWdncmVnYXRlcyhXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCWlmIChycHJfaXNfZGVmaW5lZCh3aW5zdGF0ZSkpCiAJ CXsKIAkJCS8qCi0JCQkgKiBJZiBSUFIgaXMgdXNlZCwgaXQgaXMgcG9zc2libGUgUFJFViB3YW50 cyB0byBsb29rIGF0IHRoZQotCQkJICogcHJldmlvdXMgcm93LiAgU28gdGhlIG1hcmsgcG9zIHNo b3VsZCBiZSBmcmFtZWhlYWRwb3MgLSAxCi0JCQkgKiB1bmxlc3MgaXQgaXMgYmVsb3cgMC4KKwkJ CSAqIElmIFJQUiBpcyB1c2VkLCBQUkVWIG1heSBuZWVkIHRvIGxvb2sgYXQgcm93cyBiZWZvcmUg dGhlIGZyYW1lCisJCQkgKiBoZWFkLiAgQWRqdXN0IG1hcmsgYnkgbmF2TWF4T2Zmc2V0IGlmIGtu b3duLCBvdGhlcndpc2UgcmV0YWluCisJCQkgKiBmcm9tIHBvc2l0aW9uIDAuCiAJCQkgKi8KLQkJ CW1hcmtwb3MgLT0gMTsKLQkJCWlmIChtYXJrcG9zIDwgMCkKKwkJCWlmICh3aW5zdGF0ZS0+bmF2 TWF4T2Zmc2V0ID49IDApCisJCQl7CisJCQkJaWYgKG1hcmtwb3MgPiB3aW5zdGF0ZS0+bmF2TWF4 T2Zmc2V0KQorCQkJCQltYXJrcG9zIC09IHdpbnN0YXRlLT5uYXZNYXhPZmZzZXQ7CisJCQkJZWxz ZQorCQkJCQltYXJrcG9zID0gMDsKKwkJCX0KKwkJCWVsc2UKIAkJCQltYXJrcG9zID0gMDsKIAkJ fQogCQlXaW5TZXRNYXJrUG9zaXRpb24oYWdnX3dpbm9iaiwgbWFya3Bvcyk7CkBAIC0xMjY5LDEy ICsxMjc5LDE1IEBAIHByZXBhcmVfdHVwbGVzdG9yZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUp CiAJaWYgKHdpbnN0YXRlLT5uYXZfd2lub2JqKQogCXsKIAkJLyoKLQkJICogQWxsb2NhdGUgYSBt YXJrIHBvaW50ZXIgcGlubmVkIGF0IHBvc2l0aW9uIDAgc28gdGhhdCB0aGUgdHVwbGVzdG9yZQot CQkgKiBuZXZlciB0cnVuY2F0ZXMgcm93cyB0aGF0IGEgUFJFVihleHByLCBOKSBtaWdodCBuZWVk LgorCQkgKiBBbGxvY2F0ZSBtYXJrIGFuZCByZWFkIHBvaW50ZXJzIGZvciBQUkVWL05FWFQgbmF2 aWdhdGlvbi4KKwkJICoKKwkJICogSWYgbmF2TWF4T2Zmc2V0ID49IDAsIHdlIGFkdmFuY2UgdGhl IG1hcmsgdG8gKGN1cnJlbnRwb3MgLQorCQkgKiBuYXZNYXhPZmZzZXQpIGFzIHJvd3MgYXJlIHBy b2Nlc3NlZCwgYWxsb3dpbmcgdHVwbGVzdG9yZV90cmltKCkgdG8KKwkJICogZnJlZSByb3dzIHRo YXQgYXJlIG5vIGxvbmdlciByZWFjaGFibGUuCiAJCSAqCi0JCSAqIFhYWCBUaGlzIHJldGFpbnMg dGhlIGVudGlyZSBwYXJ0aXRpb24gaW4gdGhlIHR1cGxlc3RvcmUuICBJZiB0aGUKLQkJICogREVG SU5FIGNsYXVzZSBvbmx5IHVzZXMgUFJFVi9ORVhUIHdpdGggc21hbGwgY29uc3RhbnQgb2Zmc2V0 cywgd2UKLQkJICogY291bGQgYWR2YW5jZSB0aGUgbWFyayB0byAoY3VycmVudHBvcyAtIG1heF9v ZmZzZXQpIGluc3RlYWQuCisJCSAqIElmIG5hdk1heE9mZnNldCA8IDAgKFJQUl9OQVZfT0ZGU0VU X05FRURTX0VWQUwgb3IKKwkJICogUlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTCksIHRoZSBtYXJr IHN0YXlzIGF0IDAsIHJldGFpbmluZyB0aGUKKwkJICogZW50aXJlIHBhcnRpdGlvbiBpbiB0aGUg dHVwbGVzdG9yZS4KIAkJICovCiAJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcHRyID0KIAkJ CXR1cGxlc3RvcmVfYWxsb2NfcmVhZF9wb2ludGVyKHdpbnN0YXRlLT5idWZmZXIsIDApOwpAQCAt MjUxMiw2ICsyNTI1LDI0IEBAIEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRlICpwc3RhdGUpCiAJCWlm ICh3aW5zdGF0ZS0+Z3JvdXB0YWlsX3B0ciA+PSAwKQogCQkJdXBkYXRlX2dyb3VwdGFpbHBvcyh3 aW5zdGF0ZSk7CiAKKwkJLyoKKwkJICogQWR2YW5jZSBSUFIgbmF2aWdhdGlvbiBtYXJrIHBvaW50 ZXIgaWYgcG9zc2libGUsIHNvIHRoYXQKKwkJICogdHVwbGVzdG9yZV90cmltKCkgY2FuIGZyZWUg cm93cyBubyBsb25nZXIgcmVhY2hhYmxlIGJ5IFBSRVYuCisJCSAqLworCQlpZiAod2luc3RhdGUt Pm5hdl93aW5vYmogJiYKKwkJCXdpbnN0YXRlLT5ycFBhdHRlcm4gIT0gTlVMTCAmJgorCQkJd2lu c3RhdGUtPm5hdk1heE9mZnNldCA+PSAwKQorCQl7CisJCQlpbnQ2NAkJbmF2bWFya3BvczsKKwor CQkJaWYgKHdpbnN0YXRlLT5jdXJyZW50cG9zID4gd2luc3RhdGUtPm5hdk1heE9mZnNldCkKKwkJ CQluYXZtYXJrcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3MgLSB3aW5zdGF0ZS0+bmF2TWF4T2Zm c2V0OworCQkJZWxzZQorCQkJCW5hdm1hcmtwb3MgPSAwOworCQkJaWYgKG5hdm1hcmtwb3MgPiB3 aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcykKKwkJCQlXaW5TZXRNYXJrUG9zaXRpb24od2lu c3RhdGUtPm5hdl93aW5vYmosIG5hdm1hcmtwb3MpOworCQl9CisKIAkJLyoKIAkJICogVHJ1bmNh dGUgYW55IG5vLWxvbmdlci1uZWVkZWQgcm93cyBmcm9tIHRoZSB0dXBsZXN0b3JlLgogCQkgKi8K QEAgLTI5NjAsNiArMjk5MSwxMCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXdpbnN0YXRlLT5ycFNraXBUbyA9IG5vZGUt PnJwU2tpcFRvOwogCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBQQVRURVJOIGNs YXVzZSAoY29tcGlsZWQgTkZBKSAqLwogCXdpbnN0YXRlLT5ycFBhdHRlcm4gPSBub2RlLT5ycFBh dHRlcm47CisJLyogU2V0IHVwIG1heCBQUkVWIG9mZnNldCBmb3IgdHVwbGVzdG9yZSB0cmltICov CisJd2luc3RhdGUtPm5hdk1heE9mZnNldCA9IG5vZGUtPm5hdk1heE9mZnNldDsKKwlpZiAod2lu c3RhdGUtPm5hdk1heE9mZnNldCA9PSBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMKQorCQlldmFs X25hdl9tYXhfb2Zmc2V0KHdpbnN0YXRlLCBub2RlLT5kZWZpbmVDbGF1c2UpOwogCiAJLyogQ2Fs Y3VsYXRlIE5GQSBzdGF0ZSBzaXplIGFuZCBhbGxvY2F0ZSBjeWNsZSBkZXRlY3Rpb24gYml0bWFw ICovCiAJaWYgKG5vZGUtPnJwUGF0dGVybiAhPSBOVUxMKQpAQCAtMzg3Miw2ICszOTA3LDg3IEBA IHB1dF9ub3RudWxsX2luZm8oV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBpbnQgYXJn bm8sIGJvb2wgaXNudWxsKQogCW1icFticG9zXSA9IG1iOwogfQogCisvKgorICogY29sbGVjdF9w cmV2X29mZnNldF93YWxrZXIKKyAqCQlXYWxrIGV4cHJlc3Npb24gdHJlZSB0byBjb2xsZWN0IFBS RVYgb2Zmc2V0X2FyZyBleHByZXNzaW9ucy4KKyAqLworc3RhdGljIGJvb2wKK2NvbGxlY3RfcHJl dl9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIExpc3QgKipvZmZzZXRzKQoreworCWlmIChub2Rl ID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgUlBSTmF2RXhwcikp CisJeworCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCisJCWlmIChu YXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWICYmIG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKQorCQkJ Km9mZnNldHMgPSBsYXBwZW5kKCpvZmZzZXRzLCBuYXYtPm9mZnNldF9hcmcpOworCisJCS8qIERv bid0IHdhbGsgaW50byBSUFJOYXZFeHByIGNoaWxkcmVuICovCisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBjb2xsZWN0X3ByZXZfb2Zm c2V0X3dhbGtlciwgb2Zmc2V0cyk7Cit9CisKKy8qCisgKiBldmFsX25hdl9tYXhfb2Zmc2V0Cisg KgkJRXZhbHVhdGUgbm9uLWNvbnN0YW50IFBSRVYgb2Zmc2V0cyBhdCBleGVjdXRvciBpbml0IHRp bWUuCisgKgorICogQ2FsbGVkIHdoZW4gdGhlIHBsYW5uZXIgc2V0IG5hdk1heE9mZnNldCB0byBS UFJfTkFWX09GRlNFVF9ORUVEU19FVkFMCisgKiBiZWNhdXNlIHNvbWUgUFJFViBvZmZzZXQgY29u dGFpbnMgYSBwYXJhbWV0ZXIgb3Igbm9uLWZvbGRhYmxlIGV4cHJlc3Npb24uCisgKiBXYWxrcyB0 aGUgb3JpZ2luYWwgZGVmaW5lQ2xhdXNlIGV4cHJlc3Npb24gdHJlZXMsIGNvbXBpbGVzIGFuZCBl dmFsdWF0ZXMKKyAqIGVhY2ggUFJFViBvZmZzZXRfYXJnLCBhbmQgc3RvcmVzIHRoZSBtYXhpbXVt IGluIHdpbnN0YXRlLT5uYXZNYXhPZmZzZXQuCisgKi8KK3N0YXRpYyB2b2lkCitldmFsX25hdl9t YXhfb2Zmc2V0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5lQ2xhdXNlKQor eworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4 dDsKKwlMaXN0CSAgICpvZmZzZXRzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCWludDY0CQlt YXhPZmZzZXQgPSAwOworCisJLyogQ29sbGVjdCBhbGwgUFJFViBvZmZzZXQgZXhwcmVzc2lvbnMg ZnJvbSBERUZJTkUgY2xhdXNlICovCisJZm9yZWFjaChsYywgZGVmaW5lQ2xhdXNlKQorCXsKKwkJ VGFyZ2V0RW50cnkgKnRlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsYyk7CisKKwkJY29sbGVj dF9wcmV2X29mZnNldF93YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsICZvZmZzZXRzKTsKKwl9CisK KwkvKiBFdmFsdWF0ZSBlYWNoIG9mZnNldCBhbmQgZmluZCBtYXhpbXVtICovCisJZm9yZWFjaChs Yywgb2Zmc2V0cykKKwl7CisJCUV4cHIJICAgKm9mZnNldF9leHByID0gKEV4cHIgKikgbGZpcnN0 KGxjKTsKKwkJRXhwclN0YXRlICAqZXN0YXRlOworCQlEYXR1bQkJdmFsOworCQlib29sCQlpc251 bGw7CisJCWludDY0CQlvZmZzZXQ7CisKKwkJZXN0YXRlID0gRXhlY0luaXRFeHByKG9mZnNldF9l eHByLCAoUGxhblN0YXRlICopIHdpbnN0YXRlKTsKKwkJdmFsID0gRXhlY0V2YWxFeHByU3dpdGNo Q29udGV4dChlc3RhdGUsIGVjb250ZXh0LCAmaXNudWxsKTsKKworCQkvKgorCQkgKiBOVUxMIG9y IG5lZ2F0aXZlIG9mZnNldHMgd2lsbCBjYXVzZSBhIHJ1bnRpbWUgZXJyb3Igd2hlbiBQUkVWIGlz CisJCSAqIGFjdHVhbGx5IGV2YWx1YXRlZC4gIEZvciB0cmltIHB1cnBvc2VzLCB0cmVhdCB0aGVt IGFzIDAuCisJCSAqLworCQlpZiAoaXNudWxsKQorCQkJY29udGludWU7CisKKwkJb2Zmc2V0ID0g RGF0dW1HZXRJbnQ2NCh2YWwpOworCQlpZiAob2Zmc2V0IDwgMCkKKwkJCWNvbnRpbnVlOworCisJ CWlmIChvZmZzZXQgPiBtYXhPZmZzZXQpCisJCQltYXhPZmZzZXQgPSBvZmZzZXQ7CisJfQorCisJ d2luc3RhdGUtPm5hdk1heE9mZnNldCA9IG1heE9mZnNldDsKKworCWxpc3RfZnJlZShvZmZzZXRz KTsKK30KKwogLyoKICAqIHJwcl9pc19kZWZpbmVkCiAgKiByZXR1cm4gdHJ1ZSBpZiBSb3cgcGF0 dGVybiByZWNvZ25pdGlvbiBpcyBkZWZpbmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jCmluZGV4IDlhYzI0Y2MyMjJkLi5lZTJkNTNiNTkyNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjQ2MSw2ICsyNDYxLDEwNCBAQCBjcmVhdGVf bWlubWF4YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1pbk1heEFnZ1BhdGggKmJlc3RfcGF0 aCkKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIG5hdl9tYXhfb2Zmc2V0X3dhbGtlcgorICoJ CVdhbGsgZXhwcmVzc2lvbiB0cmVlIHRvIGZpbmQgdGhlIG1heGltdW0gUFJFViBvZmZzZXQuCisg KgorICogT25seSBQUkVWIGlzIHJlbGV2YW50IGZvciB0dXBsZXN0b3JlIHRyaW0gc2luY2UgaXQg bG9va3MgYmFja3dhcmQ7CisgKiBORVhUIGxvb2tzIGZvcndhcmQgYW5kIG5ldmVyIHJlZmVyZW5j ZXMgYWxyZWFkeS10cmltbWVkIHJvd3MuCisgKgorICogUmV0dXJucyB0cnVlICh0byBzdG9wIHdh bGtpbmcpIGlmIGEgbm9uLWNvbnN0YW50IFBSRVYgb2Zmc2V0IGlzIGZvdW5kLAorICogaW4gd2hp Y2ggY2FzZSAqbWF4T2Zmc2V0IGlzIHNldCB0byAtMS4gIE90aGVyd2lzZSBhY2N1bXVsYXRlcyB0 aGUKKyAqIG1heGltdW0gY29uc3RhbnQgb2Zmc2V0IHZhbHVlLgorICovCitzdGF0aWMgYm9vbAor bmF2X21heF9vZmZzZXRfd2Fsa2VyKE5vZGUgKm5vZGUsIGludDY0ICptYXhPZmZzZXQpCit7CisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKElzQShub2RlLCBSUFJO YXZFeHByKSkKKwl7CisJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CisK KwkJLyogT25seSBQUkVWIGxvb2tzIGJhY2t3YXJkOyBORVhUIGlzIGlycmVsZXZhbnQgZm9yIHRy aW0gKi8KKwkJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYpCisJCXsKKwkJCWludDY0CQlv ZmZzZXQ7CisKKwkJCWlmIChuYXYtPm9mZnNldF9hcmcgPT0gTlVMTCkKKwkJCXsKKwkJCQkvKiAx LWFyZyBmb3JtOiBpbXBsaWNpdCBvZmZzZXQgb2YgMSAqLworCQkJCW9mZnNldCA9IDE7CisJCQl9 CisJCQllbHNlIGlmIChJc0EobmF2LT5vZmZzZXRfYXJnLCBDb25zdCkpCisJCQl7CisJCQkJQ29u c3QJICAgKmMgPSAoQ29uc3QgKikgbmF2LT5vZmZzZXRfYXJnOworCisJCQkJaWYgKGMtPmNvbnN0 aXNudWxsKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTlVMTCBvZmZzZXQgY2F1c2VzIGEgcnVu dGltZSBlcnJvciwgc28gdGhpcyBwYXRoIGlzCisJCQkJCSAqIG5ldmVyIGFjdHVhbGx5IHJlYWNo ZWQgZHVyaW5nIGV4ZWN1dGlvbi4gIFVzZSAwIGFzIGEKKwkJCQkJICogc2FmZSBwbGFjZWhvbGRl ciBmb3IgcGxhbm5pbmcgcHVycG9zZXMuCisJCQkJCSAqLworCQkJCQlvZmZzZXQgPSAwOworCQkJ CX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlvZmZzZXQgPSBEYXR1bUdldEludDY0KGMtPmNvbnN0 dmFsdWUpOworCQkJCQlpZiAob2Zmc2V0IDwgMCkKKwkJCQkJCW9mZnNldCA9IDA7IC8qIG5lZ2F0 aXZlIG9mZnNldCBjYXVzZXMgcnVudGltZSBlcnJvciAqLworCQkJCX0KKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQkvKgorCQkJCSAqIE5vbi1jb25zdGFudCBvZmZzZXQgKFBhcmFtLCBzdGFibGUg ZnVuY3Rpb24sIGV0Yy4pLiBUaGUKKwkJCQkgKiBwYXJzZXIgZ3VhcmFudGVlcyBvZmZzZXQgaXMg YSBydW50aW1lIGNvbnN0YW50LCBzbyBpdCBjYW4KKwkJCQkgKiBiZSBldmFsdWF0ZWQgYXQgZXhl Y3V0b3IgaW5pdCB0aW1lLgorCQkJCSAqLworCQkJCSptYXhPZmZzZXQgPSBSUFJfTkFWX09GRlNF VF9ORUVEU19FVkFMOworCQkJCXJldHVybiB0cnVlOwkvKiBzdG9wIHdhbGtpbmcgKi8KKwkJCX0K KworCQkJaWYgKG9mZnNldCA+ICptYXhPZmZzZXQpCisJCQkJKm1heE9mZnNldCA9IG9mZnNldDsK KwkJfQorCisJCS8qIERvbid0IHdhbGsgaW50byBSUFJOYXZFeHByIGNoaWxkcmVuIC0gb2Zmc2V0 X2FyZyBhbHJlYWR5IGhhbmRsZWQgKi8KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiBl eHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIG5hdl9tYXhfb2Zmc2V0X3dhbGtlciwgbWF4T2Zm c2V0KTsKK30KKworLyoKKyAqIGNvbXB1dGVfbmF2X21heF9vZmZzZXQKKyAqCQlDb21wdXRlIHRo ZSBtYXhpbXVtIFBSRVYgb2Zmc2V0IGZyb20gREVGSU5FIGNsYXVzZSBleHByZXNzaW9ucy4KKyAq CisgKiBSZXR1cm5zIHRoZSBtYXhpbXVtIGNvbnN0YW50IG9mZnNldCBmb3VuZCwgb3IgLTEgaWYg YW55IFBSRVYgb2Zmc2V0CisgKiBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LiAgTkVY VCBvZmZzZXRzIGFyZSBpZ25vcmVkIHNpbmNlIHRoZXkKKyAqIGxvb2sgZm9yd2FyZCBhbmQgZG9u J3QgYWZmZWN0IHR1cGxlc3RvcmUgdHJpbS4KKyAqLworc3RhdGljIGludDY0Citjb21wdXRlX25h dl9tYXhfb2Zmc2V0KExpc3QgKmRlZmluZUNsYXVzZSkKK3sKKwlpbnQ2NAkJbWF4T2Zmc2V0ID0g MDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKKwl7CisJ CVRhcmdldEVudHJ5ICp0ZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCWlmIChu YXZfbWF4X29mZnNldF93YWxrZXIoKE5vZGUgKikgdGUtPmV4cHIsICZtYXhPZmZzZXQpKQorCQkJ cmV0dXJuIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUw7CisJfQorCisJcmV0dXJuIG1heE9mZnNl dDsKK30KKwogLyoKICAqIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbgogICoKQEAgLTY2NzgsNiArNjc3 Niw5IEBAIG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCiAJ bm9kZS0+ZGVmaW5lQ2xhdXNlID0gZGVmaW5lQ2xhdXNlOwogCisJLyogQ29tcHV0ZSBtYXggUFJF ViBvZmZzZXQgZm9yIHR1cGxlc3RvcmUgdHJpbSBvcHRpbWl6YXRpb24gKi8KKwlub2RlLT5uYXZN YXhPZmZzZXQgPSBjb21wdXRlX25hdl9tYXhfb2Zmc2V0KGRlZmluZUNsYXVzZSk7CisKIAlwbGFu LT50YXJnZXRsaXN0ID0gdGxpc3Q7CiAJcGxhbi0+bGVmdHRyZWUgPSBsZWZ0dHJlZTsKIAlwbGFu LT5yaWdodHRyZWUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA3NGE2YjY4MjEzMi4u ZmY2ZDdkNzBhNjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0yNjkyLDYgKzI2OTIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCVR1cGxlVGFibGVTbG90ICp0ZW1wX3Nsb3Rf MjsKIAogCS8qIFJQUiBuYXZpZ2F0aW9uICovCisJaW50NjQJCW5hdk1heE9mZnNldDsJLyogbWF4 IFBSRVYgb2Zmc2V0OyBzZWUgUlBSX05BVl9PRkZTRVRfKiAqLwogCXN0cnVjdCBXaW5kb3dPYmpl Y3REYXRhICpuYXZfd2lub2JqOwkvKiB3aW5vYmogZm9yIFJQUiBuYXYgZmV0Y2ggKi8KIAlpbnQ2 NAkJbmF2X3Nsb3RfcG9zOwkvKiBwb3NpdGlvbiBjYWNoZWQgaW4gbmF2X3Nsb3QsIG9yIC0xICov CiAJVHVwbGVUYWJsZVNsb3QgKm5hdl9zbG90OwkvKiBzbG90IGZvciBQUkVWL05FWFQgdGFyZ2V0 IHJvdyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBjZWFhYjRkOTdiMC4uMjdhMmU3YjQ4Yzcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMzg2LDYgKzEzODYsMTUgQEAgdHlwZWRlZiBzdHJ1 Y3QgV2luZG93QWdnCiAJLyogUm93IFBhdHRlcm4gREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJn ZXRFbnRyeSkgKi8KIAlMaXN0CSAgICpkZWZpbmVDbGF1c2U7CiAKKwkvKgorCSAqIE1heGltdW0g UFJFViBvZmZzZXQgZm9yIHR1cGxlc3RvcmUgbWFyayBvcHRpbWl6YXRpb24uID49IDA6IHN0YXRp Y2FsbHkKKwkgKiBkZXRlcm1pbmVkIG1heCBvZmZzZXQgKG1hcmsgPSBjdXJyZW50cG9zIC0gb2Zm c2V0KS4KKwkgKiBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMOiBoYXMgbm9uLWNvbnN0YW50IG9m ZnNldDsgZXZhbHVhdGUgYXQKKwkgKiBleGVjdXRvciBpbml0LiAgUlBSX05BVl9PRkZTRVRfUkVU QUlOX0FMTDogbXVzdCByZXRhaW4gZW50aXJlIHBhcnRpdGlvbgorCSAqIChubyB0cmltIHBvc3Np YmxlKS4KKwkgKi8KKwlpbnQ2NAkJbmF2TWF4T2Zmc2V0OworCiAJLyoKIAkgKiBmYWxzZSBmb3Ig YWxsIGFwYXJ0IGZyb20gdGhlIFdpbmRvd0FnZyB0aGF0J3MgY2xvc2VzdCB0byB0aGUgcm9vdCBv ZgogCSAqIHRoZSBwbGFuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgg Yi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKaW5kZXggZTc4MDkyNjc4YmIuLjkxMTQ4ZjZj NTc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmgKKysrIGIvc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3Jwci5oCkBAIC01NSw2ICs1NSwxNSBAQAogI2RlZmluZSBSUFJFbGVt SXNGaW4oZSkJCQkoKGUpLT52YXJJZCA9PSBSUFJfVkFSSURfRklOKQogI2RlZmluZSBSUFJFbGVt Q2FuU2tpcChlKQkJKChlKS0+bWluID09IDApCiAKKy8qCisgKiBuYXZNYXhPZmZzZXQgc2VudGlu ZWwgdmFsdWVzLgorICogTm9uLW5lZ2F0aXZlIHZhbHVlcyByZXByZXNlbnQgYSBzdGF0aWNhbGx5 IGRldGVybWluZWQgbWF4aW11bSBQUkVWIG9mZnNldC4KKyAqLworI2RlZmluZSBSUFJfTkFWX09G RlNFVF9ORUVEU19FVkFMCSgtMSkJLyogaGFzIG5vbi1jb25zdGFudCBQUkVWIG9mZnNldDsKKwkJ CQkJCQkJCQkJICogZXZhbHVhdGUgYXQgZXhlY3V0b3IgaW5pdCAqLworI2RlZmluZSBSUFJfTkFW X09GRlNFVF9SRVRBSU5fQUxMCSgtMikJLyogbXVzdCByZXRhaW4gZW50aXJlIHBhcnRpdGlvbgor CQkJCQkJCQkJCQkgKiAoZS5nLiwgZnV0dXJlIEZJUlNUL0xBU1QpICovCisKIGV4dGVybiBMaXN0 ICpjb2xsZWN0UGF0dGVyblZhcmlhYmxlcyhSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CiBleHRl cm4gdm9pZCBidWlsZERlZmluZVZhcmlhYmxlTGlzdChMaXN0ICpkZWZpbmVDbGF1c2UsCiAJCQkJ CQkJCQlMaXN0ICoqZGVmaW5lVmFyaWFibGVMaXN0KTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1 NSkKCg== --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0014-Update-RPR-code-comments-for-1-slot-navigation.txt" Content-Disposition: attachment; filename="nocfbot-0014-Update-RPR-code-comments-for-1-slot-navigation.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr8i4713 RnJvbSBjZGRiMTU1YTlkMDZmMzgxM2Y4NzQxMDVjN2Y2NmI4MDI2NTI1ODZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUaHUsIDIgQXByIDIwMjYgMTY6MDY6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUg UlBSIGNvZGUgY29tbWVudHMgdG8gcmVmbGVjdCAxLXNsb3QgbmF2aWdhdGlvbiBtb2RlbAoKLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgfCA0NSArKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgfCAgMyArKy0K IDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JQUi5jCmluZGV4IDhmMDQ1N2UyYjNjLi4zMjljYmZiYWFhYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSUFIuYwpAQCAtMTkxLDEwICsxOTEsMTUgQEAKICAqIHRyYW5zZm9ybURlZmluZUNs YXVzZSgpIHByb2Nlc3NlcyBlYWNoIERFRklORSB2YXJpYWJsZSBhcyBmb2xsb3dzOgogICoKICAq ICAgKDEpIENoZWNrcyBmb3IgZHVwbGljYXRlIHZhcmlhYmxlIG5hbWVzCi0gKiAgICgyKSBUcmFu c2Zvcm1zIHRoZSBleHByZXNzaW9uIGludG8gYSBzdGFuZGFyZCBTUUwgZXhwcmVzc2lvbgotICog ICAoMykgQ29lcmNlcyB0byBCb29sZWFuIHR5cGUgKGNvZXJjZV90b19ib29sZWFuKQorICogICAo MikgVHJhbnNmb3JtcyB0aGUgZXhwcmVzc2lvbiB2aWEgdHJhbnNmb3JtRXhwcigpCisgKiAgICgz KSBFeHRyYWN0cyBWYXIgbm9kZXMgdmlhIHB1bGxfdmFyX2NsYXVzZSgpIGFuZCBlbnN1cmVzIGVh Y2ggaXMKKyAqICAgICAgIHByZXNlbnQgaW4gdGhlIHF1ZXJ5IHRhcmdldGxpc3QsIHNvIHRoZSBw bGFubmVyIHByb3BhZ2F0ZXMgdGhlCisgKiAgICAgICByZWZlcmVuY2VkIGNvbHVtbnMgdGhyb3Vn aCB0aGUgcGxhbiB0cmVlCiAgKiAgICg0KSBXcmFwcyBpbiBhIFRhcmdldEVudHJ5IHdpdGggdGhl IHZhcmlhYmxlIG5hbWUgc2V0IGluIHJlc25hbWUKICAqCisgKiBBZnRlciBhbGwgdmFyaWFibGVz IGFyZSBwcm9jZXNzZWQ6CisgKiAgICg1KSBDb2VyY2VzIGVhY2ggZXhwcmVzc2lvbiB0byBCb29s ZWFuIHR5cGUgKGNvZXJjZV90b19ib29sZWFuKQorICoKICAqIFZhcmlhYmxlcyB0aGF0IGFyZSB1 c2VkIGluIFBBVFRFUk4gYnV0IG5vdCBkZWZpbmVkIGluIERFRklORSBhcmUgaW1wbGljaXRseQog ICogZXZhbHVhdGVkIGFzIFRSVUUgKG1hdGNoaW5nIGFsbCByb3dzKS4KICAqCkBAIC00MzEsOCAr NDM2LDkgQEAKICAqCiAgKiAgIENhc2UgMTogU2ltcGxlIFZBUisgKGUuZy4sIEErKQogICogICAg ICAgICAgIC0+IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCBzZXQgb24gdGhlIFZBUgot ICogICBDYXNlIDI6IEdST1VQKyB3aG9zZSBib2R5IGNvbnNpc3RzIG9ubHkgb2YgezEsMX0gVkFS cyAoZS5nLiwgKEEgQikrKQotICogICAgICAgICAgIC0+IEFCU09SQkFCTEVfQlJBTkNIIG9uIGNo aWxkcmVuLAorICogICBDYXNlIDI6IEdST1VQKyB3aXRoIGZpeGVkLWxlbmd0aCBjaGlsZHJlbiAo bWluID09IG1heCwgcmVjdXJzaXZlbHkpCisgKiAgICAgICAgICAgZS5nLiwgKEEgQikrLCAoQSBC ezJ9KSssICgoQSAoQiBDKXsyfSl7Mn0pKworICogICAgICAgICAgIC0+IEFCU09SQkFCTEVfQlJB TkNIIG9uIGFsbCBlbGVtZW50cyB3aXRoaW4gdGhlIGdyb3VwLAogICogICAgICAgICAgICAgQUJT T1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIIG9uIEVORAogICogICBDYXNlIDM6IEdST1VQKyB3 aG9zZSBib2R5IHN0YXJ0cyB3aXRoIFZBUisgKGUuZy4sIChBKyBCKSspCiAgKiAgICAgICAgICAg LT4gUmVjdXJzZXMgZnJvbSBCRUdJTiBpbnRvIHRoZSBib2R5LCBhcHBseWluZyBDYXNlIDEuCkBA IC02MDQsMTEgKzYxMCwxNyBAQAogICogICAgICAgdmFyTWF0Y2hlZFtpXSA9IChub3QgbnVsbCBh bmQgdHJ1ZSkKICAqCiAgKiBUbyBzdXBwb3J0IHJvdyBuYXZpZ2F0aW9uIG9wZXJhdG9ycyBzdWNo IGFzIFBSRVYoKSBhbmQgTkVYVCgpLAotICogdGhlIHByZXZpb3VzIHJvdywgY3VycmVudCByb3cs IGFuZCBuZXh0IHJvdyBhcmUgc2V0IGluIHNlcGFyYXRlIHNsb3RzOgorICogYSAxLXNsb3QgbW9k ZWwgaXMgdXNlZDogb25seSBlY3h0X291dGVydHVwbGUgaXMgc2V0IHRvIHRoZSBjdXJyZW50Cisg KiByb3cuICBQUkVWL05FWFQgbmF2aWdhdGlvbiBpcyBoYW5kbGVkIGJ5IEVFT1BfUlBSX05BVl9T RVQvUkVTVE9SRQorICogb3Bjb2RlcyBlbWl0dGVkIGR1cmluZyBERUZJTkUgZXhwcmVzc2lvbiBj b21waWxhdGlvbjoKKyAqCisgKiAgIE5BVl9TRVQ6ICAgICBzYXZlIGVjeHRfb3V0ZXJ0dXBsZSwg c3dhcCBpbiB0YXJnZXQgcm93IHZpYSBuYXZfc2xvdAorICogICAoZXZhbHVhdGUpOiAgYXJndW1l bnQgZXhwcmVzc2lvbiByZWFkcyBmcm9tIHN3YXBwZWQgc2xvdAorICogICBOQVZfUkVTVE9SRTog cmVzdG9yZSBvcmlnaW5hbCBlY3h0X291dGVydHVwbGUKICAqCi0gKiAgIGVjeHRfc2NhbnR1cGxl ICA9IHByZXZpb3VzIHJvdyAoZm9yIFBSRVYgcmVmZXJlbmNlKQotICogICBlY3h0X291dGVydHVw bGUgPSBjdXJyZW50IHJvdyAgKGRlZmF1bHQgcmVmZXJlbmNlKQotICogICBlY3h0X2lubmVydHVw bGUgPSBuZXh0IHJvdyAgICAgKGZvciBORVhUIHJlZmVyZW5jZSkKKyAqIG5hdl9zbG90IGNhY2hl cyB0aGUgbGFzdCBmZXRjaGVkIHBvc2l0aW9uIChuYXZfc2xvdF9wb3MpIHRvIGF2b2lkCisgKiBy ZWR1bmRhbnQgdHVwbGVzdG9yZSBsb29rdXBzIHdoZW4gbXVsdGlwbGUgUFJFVi9ORVhUIGNhbGxz IHRhcmdldAorICogdGhlIHNhbWUgcm93LgogICoKICAqIFRoZSB2YXJNYXRjaGVkIGFycmF5IGlz IHJlZmVyZW5jZWQgbGF0ZXIgaW4gUGhhc2UgMSAoTWF0Y2gpLgogICoKQEAgLTkwOCw4ICs5MjAs MTEgQEAKICAqCiAgKiAgICgyKSBBdCBydW50aW1lOiBpbml0aWFsaXplIHRoZSBuZmFWaXNpdGVk RWxlbXMgYml0bWFwIGltbWVkaWF0ZWx5IGJlZm9yZQogICogICAgICAgREZTIGV4cGFuc2lvbiBv ZiBlYWNoIHN0YXRlIHdpdGhpbiBhZHZhbmNlIChvbmNlIHBlciBzdGF0ZSkuCi0gKiAgICAgICBE dXJpbmcgREZTLCBzZXQgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbUlkeCBiaXQgd2hlbiB2aXNpdGlu ZyBlYWNoCi0gKiAgICAgICBlbGVtZW50LgorICogICAgICAgRHVyaW5nIERGUywgZXBzaWxvbiBl bGVtZW50cyAoRU5ELCBBTFQsIEJFR0lOKSBhcmUgbWFya2VkIGluIHRoZQorICogICAgICAgYml0 bWFwIGF0IG5mYV9hZHZhbmNlX3N0YXRlIGVudHJ5LiAgVkFSIGVsZW1lbnRzIGFyZSBtYXJrZWQg bGF0ZXIKKyAqICAgICAgIHdoZW4gYWRkZWQgdG8gdGhlIHN0YXRlIGxpc3QgKG5mYV9hZGRfc3Rh dGVfdW5pcXVlKSwgc28gdGhhdAorICogICAgICAgbGVnaXRpbWF0ZSBsb29wLWJhY2sgdG8gdGhl IHNhbWUgVkFSIGluIGEgbmV3IGdyb3VwIGl0ZXJhdGlvbgorICogICAgICAgKGUuZy4sIEVORCAt PiBBTFQgLT4gc2FtZSBWQVIpIGlzIG5vdCBibG9ja2VkLgogICogICAgICAgSWYgYSBwcmV2aW91 c2x5IHZpc2l0ZWQgZWxlbUlkeCBpcyByZXZpc2l0ZWQsIHRoYXQgcGF0aCBpcyB0ZXJtaW5hdGVk LgogICoKICAqICAgTm90ZTogdGhlIGJpdG1hcCB0cmFja3Mgb25seSBlbGVtSWR4IGFuZCBkb2Vz IG5vdCBjb25zaWRlciBjb3VudHMuCkBAIC0xMjE2LDExICsxMjMxLDExIEBACiAgKiAgICgzKSBT dGF0ZSBEZWR1cGxpY2F0aW9uIChJWC01KQogICoKICAqICAgICBEdXJpbmcgYWR2YW5jZSwgREZT IG1heSBnZW5lcmF0ZSBzdGF0ZXMgd2l0aCB0aGUgc2FtZSAoZWxlbUlkeCwKLSAqICAgICBjb3Vu dHMpIGNvbWJpbmF0aW9uIHRocm91Z2ggbXVsdGlwbGUgcGF0aHMuIEFkZGl0aW9uYWxseSwgdW5s aWtlCi0gKiAgICAgVkFSIHJlcGV0aXRpb24sIGdyb3VwIHJlcGV0aXRpb24gY2Fubm90IHBlcmZv cm0gYWJzb3JwdGlvbgotICogICAgIGNvbXBhcmlzb24gdXNpbmcgVkFSIHN0YXRlcywgc28gaW5s aW5lIGFkdmFuY2UgaXMgcGVyZm9ybWVkIGZyb20KLSAqICAgICBhZnRlciBQaGFzZSAxIG1hdGNo IHRocm91Z2ggdG8gRU5EOyB0aGlzIHByb2Nlc3MgY2FuIGFsc28gcHJvZHVjZQotICogICAgIGR1 cGxpY2F0ZSBzdGF0ZXMgcmVhY2hpbmcgdGhlIHNhbWUgRU5ELgorICogICAgIGNvdW50cykgY29t YmluYXRpb24gdGhyb3VnaCBtdWx0aXBsZSBwYXRocy4gQWRkaXRpb25hbGx5LCBmb3IKKyAqICAg ICBncm91cCBhYnNvcnB0aW9uLCBuZmFfbWF0Y2ggcGVyZm9ybXMgaW5saW5lIGFkdmFuY2UgZnJv bSBib3VuZGVkCisgKiAgICAgVkFScyAoY291bnQgPj0gbWF4KSB3aXRoaW4gdGhlIGFic29yYmFi bGUgcmVnaW9uIChBQlNPUkJBQkxFX0JSQU5DSCkKKyAqICAgICB0aHJvdWdoIEVORCBjaGFpbnMg dG8gcmVhY2ggdGhlIGp1ZGdtZW50IHBvaW50IChBQlNPUkJBQkxFIEVORCkuCisgKiAgICAgVGhp cyBwcm9jZXNzIGNhbiBhbHNvIHByb2R1Y2UgZHVwbGljYXRlIHN0YXRlcyByZWFjaGluZyB0aGUg c2FtZSBFTkQuCiAgKiAgICAgbmZhX2FkZF9zdGF0ZV91bmlxdWUoKSBibG9ja3MgZHVwbGljYXRl IGFkZGl0aW9uIG9mIGlkZW50aWNhbCBzdGF0ZXMKICAqICAgICBpbiBib3RoIGNhc2VzLgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCAzZmI1ZDk0YWJlOS4uZDFlMDJlNTJlNTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfcnByLmMKQEAgLTI2NSw3ICsyNjUsOCBAQCB2YWxpZGF0ZVJQUlBhdHRlcm5W YXJDb3VudChQYXJzZVN0YXRlICpwc3RhdGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAogICoKICAq IFRoZW4gZm9yIGVhY2ggREVGSU5FIHZhcmlhYmxlOgogICogICAyLiBDaGVja3MgZm9yIGR1cGxp Y2F0ZSB2YXJpYWJsZSBuYW1lcyBpbiBERUZJTkUgY2xhdXNlCi0gKiAgIDMuIFRyYW5zZm9ybXMg ZXhwcmVzc2lvbnMgYW5kIGFkZHMgdG8gdGFyZ2V0bGlzdCB2aWEgZmluZFRhcmdldGxpc3RFbnRy eVNRTDk5CisgKiAgIDMuIFRyYW5zZm9ybXMgZXhwcmVzc2lvbiB2aWEgdHJhbnNmb3JtRXhwcigp IGFuZCBlbnN1cmVzIHJlZmVyZW5jZWQKKyAqICAgICAgVmFyIG5vZGVzIGFyZSBwcmVzZW50IGlu IHRoZSBxdWVyeSB0YXJnZXRsaXN0ICh2aWEgcHVsbF92YXJfY2xhdXNlKQogICogICA0LiBDcmVh dGVzIGRlZmluZUNsYXVzZSBlbnRyeSB3aXRoIHByb3BlciByZXNuYW1lIChwYXR0ZXJuIHZhcmlh YmxlIG5hbWUpCiAgKiAgIDUuIENvZXJjZXMgZXhwcmVzc2lvbnMgdG8gYm9vbGVhbiB0eXBlCiAg KiAgIDYuIE1hcmtzIGNvbHVtbiBvcmlnaW5zIGFuZCBhc3NpZ25zIGNvbGxhdGlvbiBpbmZvcm1h dGlvbgotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --00000000000007da99064eb601a9 Content-Type: text/plain; charset="US-ASCII"; name="wip-0015-Implement-FIRST-LAST-navigation-for-RPR.txt" Content-Disposition: attachment; filename="wip-0015-Implement-FIRST-LAST-navigation-for-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlr8kk514 RnJvbSAzM2E4ZGU4YWViOGMwMjJjYWMwMjA0ZjBiMWZjODRiY2RjNjM1NzBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBTdW4sIDUgQXByIDIwMjYgMDA6NTY6MjAgKzA5MDAKU3ViamVjdDogW1BBVENIXSBJbXBsZW1l bnQgRklSU1QvTEFTVCBuYXZpZ2F0aW9uIGZvciBSUFIKCkFkZCBGSVJTVChleHByIFssIG9mZnNl dF0pIGFuZCBMQVNUKGV4cHIgWywgb2Zmc2V0XSkgbmF2aWdhdGlvbgpmdW5jdGlvbnMgZm9yIERF RklORSBjbGF1c2VzLiAgRklSU1QgcmVmZXJlbmNlcyB0aGUgbWF0Y2ggc3RhcnQgcm93LApMQVNU IHJlZmVyZW5jZXMgdGhlIGN1cnJlbnQgcm93LiAgSW5jbHVkZXMgc2xvdCBzd2FwIGVsaXNpb24s CnBlci1jb250ZXh0IERFRklORSByZS1ldmFsdWF0aW9uIGZvciBtYXRjaF9zdGFydC1kZXBlbmRl bnQgdmFyaWFibGVzLAphbmQgcGxhbm5lci1sZXZlbCBhYnNvcnB0aW9uIGRpc2FibGluZyB3aGVu IEZJUlNUIG9yIExBU1Qtd2l0aC1vZmZzZXQKaXMgcHJlc2VudC4KLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjRXhwci5jICAgICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgfCAgNTQgKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JQUi5jICAgICAgICAgICAgfCAgNzggKysrKysrKystCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICB8ICAyOCArKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICB8ICA5NSArKysrKysrKysrLQogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcnByLmMgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9mdW5jLmMgICAgICAgICAgIHwgIDcwICsrKysrKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfcnByLmMgICAgICAgICAgICB8ICA1NiArKysrKystCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgICAgICAgICB8ICAxOSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93 aW5kb3dmdW5jcy5jICAgICAgIHwgIDU2ICsrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgICAgICAgICAgIHwgIDEyICsrCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhw ci5oICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAg ICAgICAgICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAg ICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICB8 ICAxMSArLQogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oICAgICAgICAgICAgICAgfCAgMTAg Ky0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICAgICAgIHwgMTg2ICsrKysr KysrKysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0 ICAgIHwgIDc3ICsrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFp bi5vdXQgfCAgODMgKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCAgICAg ICAgICAgICAgfCAxMDAgKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFz ZS5zcWwgICAgICAgICB8ICA0OSArKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBs YWluLnNxbCAgICAgIHwgIDQ5ICsrKysrKwogMjIgZmlsZXMgY2hhbmdlZCwgOTkwIGluc2VydGlv bnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGRiZWQ0 ZjQ4YTBmLi5hZjJlOTE1NzAxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0xMjI1LDEy ICsxMjI1LDE2IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRl LAogCQljYXNlIFRfUlBSTmF2RXhwcjoKIAkJCXsKIAkJCQkvKgotCQkJCSAqIFJQUiBuYXZpZ2F0 aW9uIGZ1bmN0aW9ucyAoUFJFVi9ORVhUKSBhcmUgY29tcGlsZWQgaW50bwotCQkJCSAqIEVFT1Bf UlBSX05BVl9TRVQgLyBFRU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIGluc3RlYWQgb2YKLQkJ CQkgKiBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUgc3dhcHMKLQkJCQkg KiBlY3h0X291dGVydHVwbGUgdG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudCBleHByZXNz aW9uCi0JCQkJICogaXMgY29tcGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQg c2xvdCksIGFuZCB0aGUKLQkJCQkgKiBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2lu YWwgc2xvdC4KKwkJCQkgKiBSUFIgbmF2aWdhdGlvbiBmdW5jdGlvbnMgKFBSRVYvTkVYVC9GSVJT VC9MQVNUKSBhcmUKKwkJCQkgKiBjb21waWxlZCBpbnRvIEVFT1BfUlBSX05BVl9TRVQgLyBFRU9Q X1JQUl9OQVZfUkVTVE9SRQorCQkJCSAqIG9wY29kZXMgaW5zdGVhZCBvZiBhIG5vcm1hbCBmdW5j dGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUKKwkJCQkgKiBzd2FwcyBlY3h0X291dGVydHVwbGUg dG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudAorCQkJCSAqIGV4cHJlc3Npb24gaXMgY29t cGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQKKwkJCQkgKiBzbG90KSwgYW5k IHRoZSBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc2xvdC4KKwkJCQkgKgor CQkJCSAqIERlZmF1bHQgb2Zmc2V0IHdoZW4gb2Zmc2V0X2FyZyBpcyBOVUxMOiBQUkVWL05FWFQ6 IDEKKwkJCQkgKiAocGh5c2ljYWwgb2Zmc2V0IGZyb20gY3VycmVudHBvcykgRklSU1QvTEFTVDog MCAobG9naWNhbAorCQkJCSAqIG9mZnNldCBmcm9tIG1hdGNoIGJvdW5kYXJ5KQogCQkJCSAqLwog CQkJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CiAJCQkJV2luZG93QWdn U3RhdGUgKndpbnN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXgg ZTQxZmFhOTViZTMuLjg4YzVlM2I3NjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50 ZXJwLmMKQEAgLTU5NDIsNyArNTk0Miw3IEBAIEV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoQWdnU3Rh dGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zLAogfQogCiAvKgotICogRXZh bHVhdGUgUlBSIFBSRVYvTkVYVCBuYXZpZ2F0aW9uOiBzd2FwIHNsb3QgdG8gdGFyZ2V0IHJvdy4K KyAqIEV2YWx1YXRlIFJQUiBuYXZpZ2F0aW9uIChQUkVWL05FWFQvRklSU1QvTEFTVCk6IHN3YXAg c2xvdCB0byB0YXJnZXQgcm93LgogICoKICAqIFNhdmVzIHRoZSBjdXJyZW50IG91dGVydHVwbGUg aW50byB3aW5zdGF0ZSBmb3IgbGF0ZXIgcmVzdG9yZSwgY29tcHV0ZXMKICAqIHRoZSB0YXJnZXQg cm93IHBvc2l0aW9uLCBmZXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIHNsb3QgZnJvbSB0aGUKQEAg LTU5NjMsMjcgKzU5NjMsMzYgQEAgRXhlY0V2YWxSUFJOYXZTZXQoRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQogCXdpbnN0YXRlLT5uYXZf c2F2ZWRfb3V0ZXJ0dXBsZSA9IGVjb250ZXh0LT5lY3h0X291dGVydHVwbGU7CiAKIAkvKgotCSAq IERldGVybWluZSB0aGUgdW5zaWduZWQgb2Zmc2V0LiAgRm9yIDItYXJnIFBSRVYvTkVYVCB0aGUg b2Zmc2V0Ci0JICogZXhwcmVzc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZCBpbnRvIG9m ZnNldF92YWx1ZS4gIE5VTEwgb3IKLQkgKiBuZWdhdGl2ZSBvZmZzZXRzIGFyZSBlcnJvcnMgcGVy IHRoZSBTUUwgc3RhbmRhcmQgKElTTy9JRUMgOTA3NS0yLAotCSAqIFN1YmNsYXVzZSA1LjYuMiku CisJICogRGV0ZXJtaW5lIHRoZSB1bnNpZ25lZCBvZmZzZXQuICBGb3IgMi1hcmcgZm9ybXMgdGhl IG9mZnNldCBleHByZXNzaW9uCisJICogaGFzIGFscmVhZHkgYmVlbiBldmFsdWF0ZWQgaW50byBv ZmZzZXRfdmFsdWUuICBOVUxMIG9yIG5lZ2F0aXZlIG9mZnNldHMKKwkgKiBhcmUgZXJyb3JzIHBl ciB0aGUgU1FMIHN0YW5kYXJkLgorCSAqCisJICogRGVmYXVsdCBvZmZzZXQgd2hlbiBvZmZzZXRf YXJnIGlzIE5VTEw6IFBSRVYvTkVYVDogMSAoc3RhbmRhcmQgNS42LjIpCisJICogRklSU1QvTEFT VDogMCAoc3RhbmRhcmQgNS42LjMpCiAJICovCiAJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0X3Zh bHVlICE9IE5VTEwpCiAJewogCQlpZiAoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxM T1dFRCksCi0JCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbnVsbCIp KSk7CisJCQkJCSBlcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90 IGJlIG51bGwiKSkpOwogCiAJCW9mZnNldCA9IERhdHVtR2V0SW50NjQoKm9wLT5kLnJwcl9uYXYu b2Zmc2V0X3ZhbHVlKTsKIAogCQlpZiAob2Zmc2V0IDwgMCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkgZXJy bXNnKCJQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlIikpKTsKKwkJCQkJIGVy cm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUi KSkpOwogCX0KIAllbHNlCi0JCW9mZnNldCA9IDE7CisJeworCQkvKiBEZWZhdWx0IG9mZnNldDog MSBmb3IgUFJFVi9ORVhULCAwIGZvciBGSVJTVC9MQVNUICovCisJCWlmIChvcC0+ZC5ycHJfbmF2 LmtpbmQgPT0gUlBSX05BVl9GSVJTVCB8fAorCQkJb3AtPmQucnByX25hdi5raW5kID09IFJQUl9O QVZfTEFTVCkKKwkJCW9mZnNldCA9IDA7CisJCWVsc2UKKwkJCW9mZnNldCA9IDE7CisJfQogCiAJ LyoKIAkgKiBDYWxjdWxhdGUgdGFyZ2V0IHBvc2l0aW9uIGJhc2VkIG9uIG5hdmlnYXRpb24gZGly ZWN0aW9uLiAgT24gb3ZlcmZsb3csCkBAIC01OTk5LDggKzYwMDgsMzMgQEAgRXhlY0V2YWxSUFJO YXZTZXQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KQogCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3Ms IG9mZnNldCwgJnRhcmdldF9wb3MpKQogCQkJCXRhcmdldF9wb3MgPSAtMTsKIAkJCWJyZWFrOwor CQljYXNlIFJQUl9OQVZfRklSU1Q6CisJCQkvKiBGSVJTVDogb2Zmc2V0IGZyb20gbWF0Y2hfc3Rh cnQsIGNsYW1wZWQgdG8gY3VycmVudHBvcyAqLworCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3co d2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCwgb2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQkJdGFy Z2V0X3BvcyA9IC0xOworCQkJZWxzZSBpZiAodGFyZ2V0X3BvcyA+IHdpbnN0YXRlLT5jdXJyZW50 cG9zKQorCQkJCXRhcmdldF9wb3MgPSAtMTsJLyogYmV5b25kIGN1cnJlbnQgbWF0Y2ggcmFuZ2Ug Ki8KKwkJCWJyZWFrOworCQljYXNlIFJQUl9OQVZfTEFTVDoKKwkJCS8qIExBU1Q6IG9mZnNldCBi YWNrd2FyZCBmcm9tIGN1cnJlbnRwb3MsIGNsYW1wZWQgdG8gbWF0Y2hfc3RhcnQgKi8KKwkJCWlm IChwZ19zdWJfczY0X292ZXJmbG93KHdpbnN0YXRlLT5jdXJyZW50cG9zLCBvZmZzZXQsICZ0YXJn ZXRfcG9zKSkKKwkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQllbHNlIGlmICh0YXJnZXRfcG9zIDwg d2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCkKKwkJCQl0YXJnZXRfcG9zID0gLTE7CS8qIGJlZm9y ZSBtYXRjaF9zdGFydCAqLworCQkJYnJlYWs7CiAJfQogCisJLyoKKwkgKiBTbG90IHN3YXAgZWxp c2lvbjogaWYgdGFyZ2V0X3BvcyBpcyB0aGUgY3VycmVudCByb3csIHNraXAgdGhlCisJICogdHVw bGVzdG9yZSBmZXRjaCBhbmQgc2xvdCBzd2FwIGVudGlyZWx5LiAgVGhpcyBiZW5lZml0cyBMQVNU KGV4cHIpLAorCSAqIFBSRVYoZXhwciwgMCksIE5FWFQoZXhwciwgMCksIGFuZCBzaW1pbGFyIGNh c2VzLgorCSAqCisJICogV2UgbXVzdCBzdGlsbCBzZXQgbmF2X3NhdmVkX291dGVydHVwbGUgKGRv bmUgYWJvdmUpIHNvIHRoYXQKKwkgKiBFRU9QX1JQUl9OQVZfUkVTVE9SRSBpcyBhIGhhcm1sZXNz IG5vLW9wLgorCSAqLworCWlmICh0YXJnZXRfcG9zID09IHdpbnN0YXRlLT5jdXJyZW50cG9zKQor CQlyZXR1cm47CisKIAkvKiBGZXRjaCB0YXJnZXQgcm93IHNsb3QgKHJldHVybnMgbmF2X251bGxf c2xvdCBpZiBvdXQgb2YgcmFuZ2UpICovCiAJdGFyZ2V0X3Nsb3QgPSBFeGVjUlBSTmF2R2V0U2xv dCh3aW5zdGF0ZSwgdGFyZ2V0X3Bvcyk7CiAKQEAgLTYwMTUsOSArNjA0OSwxMSBAQCBFeGVjRXZh bFJQUk5hdlNldChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4 dCAqZWNvbnRleHQpCiB9CiAKIC8qCi0gKiBFdmFsdWF0ZSBSUFIgUFJFVi9ORVhUIG5hdmlnYXRp b246IHJlc3RvcmUgc2xvdCB0byBvcmlnaW5hbCByb3cuCisgKiBFdmFsdWF0ZSBSUFIgbmF2aWdh dGlvbjogcmVzdG9yZSBzbG90IHRvIG9yaWdpbmFsIHJvdy4KICAqCiAgKiBSZXN0b3JlcyBlY29u dGV4dC0+ZWN4dF9vdXRlcnR1cGxlIGZyb20gdGhlIHNhdmVkIHNsb3QgaW4gd2luc3RhdGUuCisg KiBXaGVuIHNsb3Qgc3dhcCB3YXMgZWxpZGVkICh0YXJnZXQgPT0gY3VycmVudHBvcyksIHRoaXMg aXMgYSBoYXJtbGVzcworICogbm8tb3Agc2luY2Ugc2F2ZWQgYW5kIGN1cnJlbnQgc2xvdHMgYXJl IGlkZW50aWNhbC4KICAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIGFu eSBsb2NhbCBzbG90IGNhY2hlLgogICovCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMKaW5kZXgg MzI5Y2JmYmFhYWEuLjEwZTA2YTMwZjhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUlBSLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCkBAIC02MDks MTcgKzYwOSwxNyBAQAogICogICAgICAgcmVzdWx0ID0gRXhlY0V2YWxFeHByKGRlZmluZUNsYXVz ZVtpXSkKICAqICAgICAgIHZhck1hdGNoZWRbaV0gPSAobm90IG51bGwgYW5kIHRydWUpCiAgKgot ICogVG8gc3VwcG9ydCByb3cgbmF2aWdhdGlvbiBvcGVyYXRvcnMgc3VjaCBhcyBQUkVWKCkgYW5k IE5FWFQoKSwKKyAqIFRvIHN1cHBvcnQgcm93IG5hdmlnYXRpb24gb3BlcmF0b3JzIChQUkVWLCBO RVhULCBGSVJTVCwgTEFTVCksCiAgKiBhIDEtc2xvdCBtb2RlbCBpcyB1c2VkOiBvbmx5IGVjeHRf b3V0ZXJ0dXBsZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQKLSAqIHJvdy4gIFBSRVYvTkVYVCBuYXZp Z2F0aW9uIGlzIGhhbmRsZWQgYnkgRUVPUF9SUFJfTkFWX1NFVC9SRVNUT1JFCi0gKiBvcGNvZGVz IGVtaXR0ZWQgZHVyaW5nIERFRklORSBleHByZXNzaW9uIGNvbXBpbGF0aW9uOgorICogcm93LiAg TmF2aWdhdGlvbiBpcyBoYW5kbGVkIGJ5IEVFT1BfUlBSX05BVl9TRVQvUkVTVE9SRSBvcGNvZGVz CisgKiBlbWl0dGVkIGR1cmluZyBERUZJTkUgZXhwcmVzc2lvbiBjb21waWxhdGlvbjoKICAqCiAg KiAgIE5BVl9TRVQ6ICAgICBzYXZlIGVjeHRfb3V0ZXJ0dXBsZSwgc3dhcCBpbiB0YXJnZXQgcm93 IHZpYSBuYXZfc2xvdAogICogICAoZXZhbHVhdGUpOiAgYXJndW1lbnQgZXhwcmVzc2lvbiByZWFk cyBmcm9tIHN3YXBwZWQgc2xvdAogICogICBOQVZfUkVTVE9SRTogcmVzdG9yZSBvcmlnaW5hbCBl Y3h0X291dGVydHVwbGUKICAqCiAgKiBuYXZfc2xvdCBjYWNoZXMgdGhlIGxhc3QgZmV0Y2hlZCBw b3NpdGlvbiAobmF2X3Nsb3RfcG9zKSB0byBhdm9pZAotICogcmVkdW5kYW50IHR1cGxlc3RvcmUg bG9va3VwcyB3aGVuIG11bHRpcGxlIFBSRVYvTkVYVCBjYWxscyB0YXJnZXQKKyAqIHJlZHVuZGFu dCB0dXBsZXN0b3JlIGxvb2t1cHMgd2hlbiBtdWx0aXBsZSBuYXZpZ2F0aW9uIGNhbGxzIHRhcmdl dAogICogdGhlIHNhbWUgcm93LgogICoKICAqIFRoZSB2YXJNYXRjaGVkIGFycmF5IGlzIHJlZmVy ZW5jZWQgbGF0ZXIgaW4gUGhhc2UgMSAoTWF0Y2gpLgpAQCAtMjk5NywxMiArMjk5Nyw2MyBAQCBF eGVjUlBSUmVjb3JkQ29udGV4dEZhaWx1cmUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2 NCBmYWlsZWRMZW4pCiAgKiAgIDIuIEFic29yYiByZWR1bmRhbnQgY29udGV4dHMgLSBpZGVhbCB0 aW1pbmcgYWZ0ZXIgY29udmVyZ2VuY2UKICAqICAgMy4gQWR2YW5jZSBhbGwgY29udGV4dHMgKGRp dmVyZ2VuY2UpIC0gY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIG5leHQgcm93CiAgKi8KKy8qCisgKiBu ZmFfcmVldmFsdWF0ZV9kZXBlbmRlbnRfdmFycworICoJCVJlLWV2YWx1YXRlIG1hdGNoX3N0YXJ0 LWRlcGVuZGVudCBERUZJTkUgdmFyaWFibGVzIGZvciBhIHNwZWNpZmljCisgKgkJY29udGV4dCB3 aG9zZSBtYXRjaFN0YXJ0Um93IGRpZmZlcnMgZnJvbSB0aGUgc2hhcmVkIGV2YWx1YXRpb24ncwor ICoJCW5hdl9tYXRjaF9zdGFydC4KKyAqCisgKiBPbmx5IHZhcmlhYmxlcyBpbiBkZWZpbmVNYXRj aFN0YXJ0RGVwZW5kZW50IGFyZSByZS1ldmFsdWF0ZWQuICBUaGUKKyAqIGN1cnJlbnQgcm93J3Mg c2xvdCAoZWN4dF9vdXRlcnR1cGxlKSBtdXN0IGFscmVhZHkgYmUgc2V0IHVwIGJ5CisgKiBuZmFf ZXZhbHVhdGVfcm93KCkuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfcmVldmFsdWF0ZV9kZXBlbmRl bnRfdmFycyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJ CQkJCQkgIGludDY0IGN1cnJlbnRQb3MpCit7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2lu c3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OworCWludDY0CQlzYXZlZF9tYXRjaF9zdGFydCA9 IHdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQ7CisJaW50NjQJCXNhdmVkX3BvcyA9IHdpbnN0YXRl LT5jdXJyZW50cG9zOworCWludAkJCXZhcklkeCA9IDA7CisJTGlzdENlbGwgICAqbGM7CisKKwkv KiBUZW1wb3JhcmlseSBzZXQgbmF2X21hdGNoX3N0YXJ0IGFuZCBjdXJyZW50cG9zIGZvciBGSVJT VC9MQVNUICovCisJd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCA9IGN0eC0+bWF0Y2hTdGFydFJv dzsKKwl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IGN1cnJlbnRQb3M7CisKKwkvKiBJbnZhbGlkYXRl IG5hdl9zbG90IGNhY2hlIHNpbmNlIG1hdGNoX3N0YXJ0IGNoYW5nZWQgKi8KKwl3aW5zdGF0ZS0+ bmF2X3Nsb3RfcG9zID0gLTE7CisKKwlmb3JlYWNoKGxjLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNl TGlzdCkKKwl7CisJCWlmIChibXNfaXNfbWVtYmVyKHZhcklkeCwgd2luc3RhdGUtPmRlZmluZU1h dGNoU3RhcnREZXBlbmRlbnQpKQorCQl7CisJCQlFeHByU3RhdGUgICpleHByU3RhdGUgPSAoRXhw clN0YXRlICopIGxmaXJzdChsYyk7CisJCQlEYXR1bQkJcmVzdWx0OworCQkJYm9vbAkJaXNudWxs OworCisJCQlyZXN1bHQgPSBFeGVjRXZhbEV4cHIoZXhwclN0YXRlLCBlY29udGV4dCwgJmlzbnVs bCk7CisJCQl3aW5zdGF0ZS0+bmZhVmFyTWF0Y2hlZFt2YXJJZHhdID0gKCFpc251bGwgJiYgRGF0 dW1HZXRCb29sKHJlc3VsdCkpOworCQl9CisKKwkJdmFySWR4Kys7CisJCWlmICh2YXJJZHggPj0g bGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCkpCisJCQlicmVhazsKKwl9 CisKKwkvKiBSZXN0b3JlIG9yaWdpbmFsIG1hdGNoX3N0YXJ0LCBjdXJyZW50cG9zLCBhbmQgaW52 YWxpZGF0ZSBjYWNoZSAqLworCXdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQgPSBzYXZlZF9tYXRj aF9zdGFydDsKKwl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IHNhdmVkX3BvczsKKwl3aW5zdGF0ZS0+ bmF2X3Nsb3RfcG9zID0gLTE7Cit9CisKIHZvaWQKIEV4ZWNSUFJQcm9jZXNzUm93KFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgY3VycmVudFBvcywKIAkJCQkgIGJvb2wgaGFzTGltaXRl ZEZyYW1lLCBpbnQ2NCBmcmFtZU9mZnNldCkKIHsKIAlSUFJORkFDb250ZXh0ICpjdHg7CiAJYm9v bAkgICAqdmFyTWF0Y2hlZCA9IHdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkOworCWJvb2wJCWhhc0Rl cGVuZGVudCA9ICFibXNfaXNfZW1wdHkod2luc3RhdGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRl bnQpOwogCiAJLyogQWxsb3cgcXVlcnkgY2FuY2VsbGF0aW9uIG9uY2UgcGVyIHJvdyBmb3Igc2lt cGxlL2xvdy1zdGF0ZSBwYXR0ZXJucyAqLwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC0z MDI5LDcgKzMwODAsMjQgQEAgRXhlY1JQUlByb2Nlc3NSb3coV2luZG93QWdnU3RhdGUgKndpbnN0 YXRlLCBpbnQ2NCBjdXJyZW50UG9zLAogCQkJfQogCQl9CiAKLQkJbmZhX21hdGNoKHdpbnN0YXRl LCBjdHgsIHZhck1hdGNoZWQpOworCQkvKgorCQkgKiBJZiB0aGlzIGNvbnRleHQgaGFzIGEgZGlm ZmVyZW50IG1hdGNoU3RhcnRSb3cgdGhhbiB0aGUgb25lIHVzZWQgaW4KKwkJICogdGhlIHNoYXJl ZCBldmFsdWF0aW9uLCByZS1ldmFsdWF0ZSBtYXRjaF9zdGFydC1kZXBlbmRlbnQgdmFyaWFibGVz CisJCSAqIHdpdGggdGhpcyBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdy4KKwkJICovCisJCWlmICho YXNEZXBlbmRlbnQgJiYgY3R4LT5tYXRjaFN0YXJ0Um93ICE9IHdpbnN0YXRlLT5uYXZfbWF0Y2hf c3RhcnQpCisJCXsKKwkJCW5mYV9yZWV2YWx1YXRlX2RlcGVuZGVudF92YXJzKHdpbnN0YXRlLCBj dHgsIGN1cnJlbnRQb3MpOworCQkJbmZhX21hdGNoKHdpbnN0YXRlLCBjdHgsIHZhck1hdGNoZWQp OworCisJCQkvKiBSZXN0b3JlIHNoYXJlZCB2YXJNYXRjaGVkIHZhbHVlcyBmb3IgZGVwZW5kZW50 IHZhcmlhYmxlcyAqLworCQkJbmZhX3JlZXZhbHVhdGVfZGVwZW5kZW50X3ZhcnMod2luc3RhdGUs IHdpbnN0YXRlLT5uZmFDb250ZXh0LAorCQkJCQkJCQkJCSAgY3VycmVudFBvcyk7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQluZmFfbWF0Y2god2luc3RhdGUsIGN0eCwgdmFyTWF0Y2hlZCk7CisJCX0K IAkJY3R4LT5sYXN0UHJvY2Vzc2VkUm93ID0gY3VycmVudFBvczsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYwppbmRleCAxODYwMjlkZjFkOS4uODY3ZmY1MDY4ZTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTkzOCw5ICs5MzgsOSBAQCBldmFsX3dp bmRvd2FnZ3JlZ2F0ZXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCQlpZiAocnByX2lzX2Rl ZmluZWQod2luc3RhdGUpKQogCQl7CiAJCQkvKgotCQkJICogSWYgUlBSIGlzIHVzZWQsIFBSRVYg bWF5IG5lZWQgdG8gbG9vayBhdCByb3dzIGJlZm9yZSB0aGUgZnJhbWUKLQkJCSAqIGhlYWQuICBB ZGp1c3QgbWFyayBieSBuYXZNYXhPZmZzZXQgaWYga25vd24sIG90aGVyd2lzZSByZXRhaW4KLQkJ CSAqIGZyb20gcG9zaXRpb24gMC4KKwkJCSAqIElmIFJQUiBpcyB1c2VkLCBuYXZpZ2F0aW9uIG1h eSBuZWVkIHRvIGxvb2sgYXQgcm93cyBiZWZvcmUgdGhlCisJCQkgKiBmcmFtZSBoZWFkLiAgQWRq dXN0IG1hcmsgYnkgbmF2TWF4T2Zmc2V0IGlmIGtub3duLCBvdGhlcndpc2UKKwkJCSAqIHJldGFp biBmcm9tIHBvc2l0aW9uIDAuCiAJCQkgKi8KIAkJCWlmICh3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0 ID49IDApCiAJCQl7CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBwcmVwYXJlX3R1cGxlc3RvcmUoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaikKIAl7CiAJ CS8qCi0JCSAqIEFsbG9jYXRlIG1hcmsgYW5kIHJlYWQgcG9pbnRlcnMgZm9yIFBSRVYvTkVYVCBu YXZpZ2F0aW9uLgorCQkgKiBBbGxvY2F0ZSBtYXJrIGFuZCByZWFkIHBvaW50ZXJzIGZvciBSUFIg bmF2aWdhdGlvbi4KIAkJICoKIAkJICogSWYgbmF2TWF4T2Zmc2V0ID49IDAsIHdlIGFkdmFuY2Ug dGhlIG1hcmsgdG8gKGN1cnJlbnRwb3MgLQogCQkgKiBuYXZNYXhPZmZzZXQpIGFzIHJvd3MgYXJl IHByb2Nlc3NlZCwgYWxsb3dpbmcgdHVwbGVzdG9yZV90cmltKCkgdG8KQEAgLTI1MjcsNyArMjUy Nyw3IEBAIEV4ZWNXaW5kb3dBZ2coUGxhblN0YXRlICpwc3RhdGUpCiAKIAkJLyoKIAkJICogQWR2 YW5jZSBSUFIgbmF2aWdhdGlvbiBtYXJrIHBvaW50ZXIgaWYgcG9zc2libGUsIHNvIHRoYXQKLQkJ ICogdHVwbGVzdG9yZV90cmltKCkgY2FuIGZyZWUgcm93cyBubyBsb25nZXIgcmVhY2hhYmxlIGJ5 IFBSRVYuCisJCSAqIHR1cGxlc3RvcmVfdHJpbSgpIGNhbiBmcmVlIHJvd3Mgbm8gbG9uZ2VyIHJl YWNoYWJsZSBieSBuYXZpZ2F0aW9uLgogCQkgKi8KIAkJaWYgKHdpbnN0YXRlLT5uYXZfd2lub2Jq ICYmCiAJCQl3aW5zdGF0ZS0+cnBQYXR0ZXJuICE9IE5VTEwgJiYKQEAgLTI3ODIsNiArMjc4Miw3 IEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCXdpbnN0YXRlLT5uYXZfbnVsbF9zbG90ID0gRXhlY1N0b3JlQWxsTnVsbFR1 cGxlKHdpbnN0YXRlLT5uYXZfbnVsbF9zbG90KTsKIAogCQl3aW5zdGF0ZS0+bmF2X3NhdmVkX291 dGVydHVwbGUgPSBOVUxMOworCQl3aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0ID0gMDsKIAl9CiAK IAkvKgpAQCAtMjk5MSwxMSArMjk5MiwxNCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXdpbnN0YXRlLT5ycFNraXBUbyA9 IG5vZGUtPnJwU2tpcFRvOwogCS8qIFNldCB1cCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBQQVRU RVJOIGNsYXVzZSAoY29tcGlsZWQgTkZBKSAqLwogCXdpbnN0YXRlLT5ycFBhdHRlcm4gPSBub2Rl LT5ycFBhdHRlcm47Ci0JLyogU2V0IHVwIG1heCBQUkVWIG9mZnNldCBmb3IgdHVwbGVzdG9yZSB0 cmltICovCisJLyogU2V0IHVwIG1heCBiYWNrd2FyZCBuYXYgb2Zmc2V0IGZvciB0dXBsZXN0b3Jl IHRyaW0gKi8KIAl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0ID0gbm9kZS0+bmF2TWF4T2Zmc2V0Owog CWlmICh3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0ID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwp CiAJCWV2YWxfbmF2X21heF9vZmZzZXQod2luc3RhdGUsIG5vZGUtPmRlZmluZUNsYXVzZSk7CiAK KwkvKiBDb3B5IG1hdGNoX3N0YXJ0IGRlcGVuZGVuY3kgYml0bWFwc2V0IGZvciBwZXItY29udGV4 dCBldmFsdWF0aW9uICovCisJd2luc3RhdGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQgPSBi bXNfY29weShub2RlLT5kZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50KTsKKwogCS8qIENhbGN1bGF0 ZSBORkEgc3RhdGUgc2l6ZSBhbmQgYWxsb2NhdGUgY3ljbGUgZGV0ZWN0aW9uIGJpdG1hcCAqLwog CWlmIChub2RlLT5ycFBhdHRlcm4gIT0gTlVMTCkKIAl7CkBAIC00MjE1LDggKzQyMTksMTQgQEAg dXBkYXRlX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKQogCiAJ CS8qCiAJCSAqIEV2YWx1YXRlIHZhcmlhYmxlcyBmb3IgdGhpcyByb3cgLSBkb25lIG9ubHkgb25j ZSwgc2hhcmVkIGJ5IGFsbAotCQkgKiBjb250ZXh0cworCQkgKiBjb250ZXh0cy4KKwkJICoKKwkJ ICogU2V0IG5hdl9tYXRjaF9zdGFydCB0byB0aGUgaGVhZCBjb250ZXh0J3MgbWF0Y2hTdGFydFJv dyBmb3IKKwkJICogRklSU1QvTEFTVCBuYXZpZ2F0aW9uLiAgTWF0Y2hfc3RhcnQtZGVwZW5kZW50 IHZhcmlhYmxlcyAoRklSU1QsCisJCSAqIExBU1Qtd2l0aC1vZmZzZXQpIGFyZSByZS1ldmFsdWF0 ZWQgcGVyLWNvbnRleHQgaW4gRXhlY1JQUlByb2Nlc3NSb3cKKwkJICogd2hlbiBtYXRjaFN0YXJ0 Um93IGRpZmZlcnMuCiAJCSAqLworCQl3aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0ID0gdGFyZ2V0 Q3R4LT5tYXRjaFN0YXJ0Um93OwogCQlyb3dFeGlzdHMgPSBuZmFfZXZhbHVhdGVfcm93KHdpbm9i aiwgY3VycmVudFBvcywgd2luc3RhdGUtPm5mYVZhck1hdGNoZWQpOwogCiAJCS8qIE5vIG1vcmUg cm93cyBpbiBwYXJ0aXRpb24/IEZpbmFsaXplIGFsbCBjb250ZXh0cyAqLwpAQCAtNDMwNCw4ICs0 MzE0LDggQEAgcmVnaXN0ZXJfcmVzdWx0OgogICogdmFyTWF0Y2hlZFtpXSA9IHRydWUgaWYgdmFy aWFibGUgaSBtYXRjaGVkIGF0IGN1cnJlbnQgcm93LgogICoKICAqIFVzZXMgMS1zbG90IG1vZGVs OiBvbmx5IGVjeHRfb3V0ZXJ0dXBsZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgcm93LgotICogUFJF Vi9ORVhUIG5hdmlnYXRpb24gaXMgaGFuZGxlZCBieSBFRU9QX1JQUl9OQVZfU0VUL1JFU1RPUkUg b3Bjb2RlcwotICogZHVyaW5nIGV4cHJlc3Npb24gZXZhbHVhdGlvbiwgd2hpY2ggdGVtcG9yYXJp bHkgc3dhcCB0aGUgc2xvdC4KKyAqIFBSRVYvTkVYVC9GSVJTVC9MQVNUIG5hdmlnYXRpb24gaXMg aGFuZGxlZCBieSBFRU9QX1JQUl9OQVZfU0VUL1JFU1RPUkUKKyAqIG9wY29kZXMgZHVyaW5nIGV4 cHJlc3Npb24gZXZhbHVhdGlvbiwgd2hpY2ggdGVtcG9yYXJpbHkgc3dhcCB0aGUgc2xvdC4KICAq Lwogc3RhdGljIGJvb2wKIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0IHdpbm9iaiwgaW50 NjQgcG9zLCBib29sICp2YXJNYXRjaGVkKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRl cGxhbi5jCmluZGV4IGVlMmQ1M2I1OTI0Li5jNGM0MGQyNGNmMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjkyLDYgKzI5Miw3IEBAIHN0YXRpYyBXaW5kb3dB Z2cgKm1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJCQkJ CQkgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNraXBUbywKIAkJCQkJCQkJIFJQUlBh dHRlcm4gKmNvbXBpbGVkUGF0dGVybiwKIAkJCQkJCQkJIExpc3QgKmRlZmluZUNsYXVzZSwKKwkJ CQkJCQkJIEJpdG1hcHNldCAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCwKIAkJCQkJCQkJIExp c3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LAogCQkJCQkJCQkgUGxhbiAqbGVmdHRyZWUpOwogc3Rh dGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFsLCBpbnQgbnVtR3Jv dXBDb2xzLApAQCAtMjQ4Miw2ICsyNDgzLDIwIEBAIG5hdl9tYXhfb2Zmc2V0X3dhbGtlcihOb2Rl ICpub2RlLCBpbnQ2NCAqbWF4T2Zmc2V0KQogCXsKIAkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5h dkV4cHIgKikgbm9kZTsKIAorCQkvKgorCQkgKiBGSVJTVCBhbHdheXMgcmVmZXJlbmNlcyBtYXRj aF9zdGFydCwgc28gd2UgbXVzdCByZXRhaW4gdGhlIGVudGlyZQorCQkgKiBwYXJ0aXRpb24uICBM QVNUIHdpdGggYW4gZXhwbGljaXQgb2Zmc2V0IGNhbiBsb29rIGJhY2sgdG8KKwkJICogbWF0Y2hf c3RhcnQgZm9yIHRoZSBib3VuZGFyeSBjaGVjaywgc28gc2FtZSB0cmVhdG1lbnQuIExBU1Qgd2l0 aG91dAorCQkgKiBvZmZzZXQgYWx3YXlzIHJlc29sdmVzIHRvIGN1cnJlbnRwb3MgYW5kIG5ldmVy IGxvb2tzIGJhY2t3YXJkIOKAlAorCQkgKiBubyBpbXBhY3Qgb24gdHJpbS4KKwkJICovCisJCWlm IChuYXYtPmtpbmQgPT0gUlBSX05BVl9GSVJTVCB8fAorCQkJKG5hdi0+a2luZCA9PSBSUFJfTkFW X0xBU1QgJiYgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpKQorCQl7CisJCQkqbWF4T2Zmc2V0ID0g UlBSX05BVl9PRkZTRVRfUkVUQUlOX0FMTDsKKwkJCXJldHVybiB0cnVlOwkJLyogc3RvcCB3YWxr aW5nICovCisJCX0KKwogCQkvKiBPbmx5IFBSRVYgbG9va3MgYmFja3dhcmQ7IE5FWFQgaXMgaXJy ZWxldmFudCBmb3IgdHJpbSAqLwogCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVikKIAkJ ewpAQCAtMjUzOCw5ICsyNTUzLDEwIEBAIG5hdl9tYXhfb2Zmc2V0X3dhbGtlcihOb2RlICpub2Rl LCBpbnQ2NCAqbWF4T2Zmc2V0KQogICogY29tcHV0ZV9uYXZfbWF4X29mZnNldAogICoJCUNvbXB1 dGUgdGhlIG1heGltdW0gUFJFViBvZmZzZXQgZnJvbSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb25z LgogICoKLSAqIFJldHVybnMgdGhlIG1heGltdW0gY29uc3RhbnQgb2Zmc2V0IGZvdW5kLCBvciAt MSBpZiBhbnkgUFJFViBvZmZzZXQKLSAqIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHku ICBORVhUIG9mZnNldHMgYXJlIGlnbm9yZWQgc2luY2UgdGhleQotICogbG9vayBmb3J3YXJkIGFu ZCBkb24ndCBhZmZlY3QgdHVwbGVzdG9yZSB0cmltLgorICogUmV0dXJucyB0aGUgbWF4aW11bSBj b25zdGFudCBvZmZzZXQgZm91bmQsIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwgaWYKKyAqIGFu eSBQUkVWIG9mZnNldCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LCBvcgorICogUlBS X05BVl9PRkZTRVRfUkVUQUlOX0FMTCBpZiBGSVJTVC9MQVNUIGlzIHByZXNlbnQuICBORVhUIG9m ZnNldHMgYXJlCisgKiBpZ25vcmVkIHNpbmNlIHRoZXkgbG9vayBmb3J3YXJkIGFuZCBkb24ndCBh ZmZlY3QgdHVwbGVzdG9yZSB0cmltLgogICovCiBzdGF0aWMgaW50NjQKIGNvbXB1dGVfbmF2X21h eF9vZmZzZXQoTGlzdCAqZGVmaW5lQ2xhdXNlKQpAQCAtMjU1OSw2ICsyNTc1LDY1IEBAIGNvbXB1 dGVfbmF2X21heF9vZmZzZXQoTGlzdCAqZGVmaW5lQ2xhdXNlKQogCXJldHVybiBtYXhPZmZzZXQ7 CiB9CiAKKy8qCisgKiBoYXNfbWF0Y2hfc3RhcnRfZGVwZW5kZW5jeQorICoJCUNoZWNrIGlmIGFu IGV4cHJlc3Npb24gdHJlZSBjb250YWlucyBGSVJTVCBvciBMQVNULXdpdGgtb2Zmc2V0LAorICoJ CXdoaWNoIGRlcGVuZCBvbiBtYXRjaF9zdGFydCBhbmQgcmVxdWlyZSBwZXItY29udGV4dCBldmFs dWF0aW9uLgorICoKKyAqIExBU1Qgd2l0aG91dCBvZmZzZXQgYWx3YXlzIHJlc29sdmVzIHRvIGN1 cnJlbnRwb3MgYW5kIGlzCisgKiBtYXRjaF9zdGFydC1pbmRlcGVuZGVudC4KKyAqLworc3RhdGlj IGJvb2wKK2hhc19tYXRjaF9zdGFydF9kZXBlbmRlbmN5KE5vZGUgKm5vZGUpCit7CisJaWYgKG5v ZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKElzQShub2RlLCBSUFJOYXZFeHBy KSkKKwl7CisJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CisKKwkJaWYg KG5hdi0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQorCQkJcmV0dXJuIHRydWU7CisJCWlmIChuYXYt PmtpbmQgPT0gUlBSX05BVl9MQVNUICYmIG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKQorCQkJcmV0 dXJuIHRydWU7CisKKwkJLyogQ2hlY2sgY2hpbGRyZW4gKGFyZyBtYXkgY29udGFpbiBmdXJ0aGVy IG5hdiBleHByZXNzaW9ucykgKi8KKwkJcmV0dXJuIGhhc19tYXRjaF9zdGFydF9kZXBlbmRlbmN5 KChOb2RlICopIG5hdi0+YXJnKTsKKwl9CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX3dhbGtl cihub2RlLCBoYXNfbWF0Y2hfc3RhcnRfZGVwZW5kZW5jeSwgTlVMTCk7Cit9CisKKy8qCisgKiBj b21wdXRlX21hdGNoX3N0YXJ0X2RlcGVuZGVudAorICoJCUJ1aWxkIGEgQml0bWFwc2V0IG9mIERF RklORSB2YXJpYWJsZSBpbmRpY2VzIHdob3NlIGV4cHJlc3Npb25zCisgKgkJZGVwZW5kIG9uIG1h dGNoX3N0YXJ0IChjb250YWluIEZJUlNUIG9yIExBU1Qtd2l0aC1vZmZzZXQpLgorICoKKyAqIFZh cmlhYmxlcyBpbiB0aGlzIHNldCByZXF1aXJlIHBlci1jb250ZXh0IHJlLWV2YWx1YXRpb24gZHVy aW5nIE5GQQorICogcHJvY2Vzc2luZywgYmVjYXVzZSBkaWZmZXJlbnQgY29udGV4dHMgbWF5IGhh dmUgZGlmZmVyZW50IG1hdGNoX3N0YXJ0CisgKiB2YWx1ZXMuCisgKi8KK3N0YXRpYyBCaXRtYXBz ZXQgKgorY29tcHV0ZV9tYXRjaF9zdGFydF9kZXBlbmRlbnQoTGlzdCAqZGVmaW5lQ2xhdXNlKQor eworCUJpdG1hcHNldCAgKnJlc3VsdCA9IE5VTEw7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJ dmFySWR4ID0gMDsKKworCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKKwl7CisJCVRhcmdldEVu dHJ5ICp0ZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCisJCWlmIChoYXNfbWF0Y2hf c3RhcnRfZGVwZW5kZW5jeSgoTm9kZSAqKSB0ZS0+ZXhwcikpCisJCQlyZXN1bHQgPSBibXNfYWRk X21lbWJlcihyZXN1bHQsIHZhcklkeCk7CisKKwkJdmFySWR4Kys7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKwogLyoKICAqIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbgogICoKQEAgLTI1ODYsNiAr MjY2MSw3IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgV2luZG93 QWdnUGF0aCAqYmVzdF9wYXRoKQogCUxpc3QJICAgKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsK IAlMaXN0CSAgICpmaWx0ZXJlZERlZmluZUNsYXVzZSA9IE5JTDsKIAlSUFJQYXR0ZXJuICpjb21w aWxlZFBhdHRlcm4gPSBOVUxMOworCUJpdG1hcHNldCAgKm1hdGNoU3RhcnREZXBlbmRlbnQgPSBO VUxMOwogCiAKIAkvKgpAQCAtMjY0OCwxMSArMjcyNCwxNSBAQCBjcmVhdGVfd2luZG93YWdnX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJYnVpbGRE ZWZpbmVWYXJpYWJsZUxpc3Qod2MtPmRlZmluZUNsYXVzZSwgJmRlZmluZVZhcmlhYmxlTGlzdCk7 CiAJCWZpbHRlcmVkRGVmaW5lQ2xhdXNlID0gd2MtPmRlZmluZUNsYXVzZTsKIAorCQkvKiBJZGVu dGlmeSBtYXRjaF9zdGFydC1kZXBlbmRlbnQgREVGSU5FIHZhcmlhYmxlcyAqLworCQltYXRjaFN0 YXJ0RGVwZW5kZW50ID0gY29tcHV0ZV9tYXRjaF9zdGFydF9kZXBlbmRlbnQod2MtPmRlZmluZUNs YXVzZSk7CisKIAkJLyogQ29tcGlsZSBhbmQgb3B0aW1pemUgUlBSIHBhdHRlcm5zICovCiAJCWNv bXBpbGVkUGF0dGVybiA9IGJ1aWxkUlBSUGF0dGVybih3Yy0+cnBQYXR0ZXJuLAogCQkJCQkJCQkJ CSAgZGVmaW5lVmFyaWFibGVMaXN0LAogCQkJCQkJCQkJCSAgd2MtPnJwU2tpcFRvLAotCQkJCQkJ CQkJCSAgd2MtPmZyYW1lT3B0aW9ucyk7CisJCQkJCQkJCQkJICB3Yy0+ZnJhbWVPcHRpb25zLAor CQkJCQkJCQkJCSAgIWJtc19pc19lbXB0eShtYXRjaFN0YXJ0RGVwZW5kZW50KSk7CiAJfQogCiAJ LyogQW5kIGZpbmFsbHkgd2UgY2FuIG1ha2UgdGhlIFdpbmRvd0FnZyBub2RlICovCkBAIC0yNjcw LDYgKzI3NTAsNyBAQCBjcmVhdGVfd2luZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdp bmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkKIAkJCQkJCSAgd2MtPnJwU2tpcFRvLAogCQkJCQkJICBj b21waWxlZFBhdHRlcm4sCiAJCQkJCQkgIGZpbHRlcmVkRGVmaW5lQ2xhdXNlLAorCQkJCQkJICBt YXRjaFN0YXJ0RGVwZW5kZW50LAogCQkJCQkJICBiZXN0X3BhdGgtPnF1YWwsCiAJCQkJCQkgIGJl c3RfcGF0aC0+dG9wd2luZG93LAogCQkJCQkJICBzdWJwbGFuKTsKQEAgLTY3NDIsNiArNjgyMyw3 IEBAIG1ha2Vfd2luZG93YWdnKExpc3QgKnRsaXN0LCBXaW5kb3dDbGF1c2UgKndjLAogCQkJICAg TGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNraXBUbywKIAkJCSAgIFJQUlBhdHRlcm4g KmNvbXBpbGVkUGF0dGVybiwKIAkJCSAgIExpc3QgKmRlZmluZUNsYXVzZSwKKwkJCSAgIEJpdG1h cHNldCAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCwKIAkJCSAgIExpc3QgKnF1YWwsIGJvb2wg dG9wV2luZG93LCBQbGFuICpsZWZ0dHJlZSkKIHsKIAlXaW5kb3dBZ2cgICpub2RlID0gbWFrZU5v ZGUoV2luZG93QWdnKTsKQEAgLTY3NzYsNyArNjg1OCwxMCBAQCBtYWtlX3dpbmRvd2FnZyhMaXN0 ICp0bGlzdCwgV2luZG93Q2xhdXNlICp3YywKIAogCW5vZGUtPmRlZmluZUNsYXVzZSA9IGRlZmlu ZUNsYXVzZTsKIAotCS8qIENvbXB1dGUgbWF4IFBSRVYgb2Zmc2V0IGZvciB0dXBsZXN0b3JlIHRy aW0gb3B0aW1pemF0aW9uICovCisJLyogU3RvcmUgcHJlLWNvbXB1dGVkIG1hdGNoX3N0YXJ0IGRl cGVuZGVuY3kgYml0bWFwc2V0ICovCisJbm9kZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCA9 IGRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQ7CisKKwkvKiBDb21wdXRlIG1heCBiYWNrd2FyZCBu YXYgb2Zmc2V0IGZvciB0dXBsZXN0b3JlIHRyaW0gb3B0aW1pemF0aW9uICovCiAJbm9kZS0+bmF2 TWF4T2Zmc2V0ID0gY29tcHV0ZV9uYXZfbWF4X29mZnNldChkZWZpbmVDbGF1c2UpOwogCiAJcGxh bi0+dGFyZ2V0bGlzdCA9IHRsaXN0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vcnByLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYwppbmRleCBjMGU5 ZDEzNGFhOS4uNzY3YTIxNDAxNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jCkBAIC0xODkz LDcgKzE4OTMsOCBAQCBidWlsZERlZmluZVZhcmlhYmxlTGlzdChMaXN0ICpkZWZpbmVDbGF1c2Us IExpc3QgKipkZWZpbmVWYXJpYWJsZUxpc3QpCiAgKi8KIFJQUlBhdHRlcm4gKgogYnVpbGRSUFJQ YXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3Qs Ci0JCQkJUlBTa2lwVG8gcnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMpCisJCQkJUlBTa2lwVG8g cnBTa2lwVG8sIGludCBmcmFtZU9wdGlvbnMsCisJCQkJYm9vbCBoYXNNYXRjaFN0YXJ0RGVwZW5k ZW50KQogewogCVJQUlBhdHRlcm4gKnJlc3VsdDsKIAlSUFJQYXR0ZXJuTm9kZSAqb3B0aW1pemVk OwpAQCAtMTk0Nyw3ICsxOTQ4LDggQEAgYnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpw YXR0ZXJuLCBMaXN0ICpkZWZpbmVWYXJpYWJsZUxpc3QsCiAJaGFzTGltaXRlZEZyYW1lID0gKGZy YW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1JPV1MpICYmCiAJCSEoZnJhbWVPcHRpb25zICYgRlJB TUVPUFRJT05fRU5EX1VOQk9VTkRFRF9GT0xMT1dJTkcpOwogCi0JaWYgKHJwU2tpcFRvID09IFNU X1BBU1RfTEFTVF9ST1cgJiYgIWhhc0xpbWl0ZWRGcmFtZSkKKwlpZiAocnBTa2lwVG8gPT0gU1Rf UEFTVF9MQVNUX1JPVyAmJiAhaGFzTGltaXRlZEZyYW1lICYmCisJCSFoYXNNYXRjaFN0YXJ0RGVw ZW5kZW50KQogCXsKIAkJLyogUnVudGltZSBjb25kaXRpb25zIG1ldCAtIGNoZWNrIHN0cnVjdHVy YWwgYWJzb3JiYWJpbGl0eSAqLwogCQljb21wdXRlQWJzb3JiYWJpbGl0eShyZXN1bHQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9mdW5jLmMKaW5kZXggZTE0ZmY0ZGM0OTQuLmFhNDVhOTg3MTNmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9mdW5jLmMKQEAgLTc1NywzNSArNzU3LDc5IEBAIFBhcnNlRnVuY09yQ29sdW1u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdzLAogCWlmIChy ZXRzZXQpCiAJCWNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChwc3RhdGUsIGxhc3Rfc3JmLCBsb2Nh dGlvbik7CiAKLQkvKiBuZXh0KCkgYW5kIHByZXYoKSBhcmUgb25seSBhbGxvd2VkIGluIGEgV0lO RE9XIERFRklORSBjbGF1c2UgKi8KKwkvKgorCSAqIFJQUiBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyAo UFJFVi9ORVhUL0ZJUlNUL0xBU1QpIGFyZSBvbmx5IG1lYW5pbmdmdWwKKwkgKiBpbnNpZGUgYSBX SU5ET1cgREVGSU5FIGNsYXVzZS4KKwkgKgorCSAqIE91dHNpZGUgREVGSU5FLCB0aGVzZSBwb2x5 bW9ycGhpYyBwbGFjZWhvbGRlcnMgY2FuIHNoYWRvdyBjb2x1bW4gYWNjZXNzCisJICogdmlhIGZ1 bmN0aW9uYWwgbm90YXRpb24gKGUuZy4sIGxhc3QoZikgbWVhbmluZyBmLmxhc3QpLiBGb3IgdGhl IDEtYXJnCisJICogZm9ybSwgdHJ5IGNvbHVtbiBwcm9qZWN0aW9uIGZpcnN0OyBpZiB0aGF0IHN1 Y2NlZWRzLCB1c2UgaXQgaW5zdGVhZC4KKwkgKiBPdGhlcndpc2UsIHJlcG9ydCBhIGNsZWFyIHBh cnNlciBlcnJvci4KKwkgKi8KIAlpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgJiYK IAkJcHN0YXRlLT5wX2V4cHJfa2luZCAhPSBFWFBSX0tJTkRfUlBSX0RFRklORSAmJgogCQkoZnVu Y2lkID09IEZfUFJFVl9BTllFTEVNRU5UIHx8IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVCB8 fAotCQkgZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZfTkVY VF9BTllFTEVNRU5UX0lOVDgpKQorCQkgZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDgg fHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDggfHwKKwkJIGZ1bmNpZCA9PSBGX0ZJ UlNUX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTEFTVF9BTllFTEVNRU5UIHx8CisJCSBmdW5j aWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZfTEFTVF9BTllFTEVN RU5UX0lOVDgpKQorCXsKKwkJLyogMS1hcmcgZm9ybTogdHJ5IGNvbHVtbiBwcm9qZWN0aW9uIGJl Zm9yZSBlcnJvcmluZyBvdXQgKi8KKwkJaWYgKG5hcmdzID09IDEgJiYgIWFnZ19zdGFyICYmICFh Z2dfZGlzdGluY3QgJiYgb3ZlciA9PSBOVUxMICYmCisJCQlsaXN0X2xlbmd0aChmdW5jbmFtZSkg PT0gMSkKKwkJeworCQkJTm9kZQkgICAqcHJvamVjdGlvbjsKKworCQkJcHJvamVjdGlvbiA9IFBh cnNlQ29tcGxleFByb2plY3Rpb24ocHN0YXRlLAorCQkJCQkJCQkJCQkJc3RyVmFsKGxpbml0aWFs KGZ1bmNuYW1lKSksCisJCQkJCQkJCQkJCQlsaW5pdGlhbChmYXJncyksCisJCQkJCQkJCQkJCQls b2NhdGlvbik7CisJCQlpZiAocHJvamVjdGlvbikKKwkJCQlyZXR1cm4gcHJvamVjdGlvbjsKKwkJ fQorCisJCS8qIE5vdCBhIGNvbHVtbiBwcm9qZWN0aW9uIOKAlCByZXBvcnQgZXJyb3IgKi8KIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ IGVycm1zZygiJXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UiLAogCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhmdW5jbmFtZSkpLAogCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBsb2NhdGlvbikpKTsKKwl9CiAKIAkvKiBidWlsZCB0aGUgYXBwcm9wcmlhdGUgb3V0cHV0 IHN0cnVjdHVyZSAqLwogCWlmIChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCAmJgorCQlw c3RhdGUtPnBfZXhwcl9raW5kID09IEVYUFJfS0lORF9SUFJfREVGSU5FICYmCiAJCShmdW5jaWQg PT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UIHx8Ci0J CSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FO WUVMRU1FTlRfSU5UOCkpCisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fCBm dW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCB8fAorCQkgZnVuY2lkID09IEZfRklSU1Rf QU5ZRUxFTUVOVCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVMRU1FTlQgfHwKKwkJIGZ1bmNpZCA9 PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9MQVNUX0FOWUVMRU1FTlRf SU5UOCkpCiAJewogCQkvKgotCQkgKiBQUkVWKCkgYW5kIE5FWFQoKSBhcmUgY29tcGlsZWQgaW50 byBFRU9QX1JQUl9OQVZfU0VUIC8KLQkJICogRUVPUF9SUFJfTkFWX1JFU1RPUkUgb3Bjb2RlcyBp bnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwuCi0JCSAqIFJlcHJlc2VudCB0aGVtIGFz IFJQUk5hdkV4cHIgbm9kZXMgc28gdGhhdCBsYXRlciBzdGFnZXMgY2FuCi0JCSAqIGlkZW50aWZ5 IHRoZW0gd2l0aG91dCByZWx5aW5nIG9uIGZ1bmNpZCBjb21wYXJpc29ucy4KKwkJICogUlBSIG5h dmlnYXRpb24gZnVuY3Rpb25zIChQUkVWL05FWFQvRklSU1QvTEFTVCkgYXJlIGNvbXBpbGVkIGlu dG8KKwkJICogRUVPUF9SUFJfTkFWX1NFVCAvIEVFT1BfUlBSX05BVl9SRVNUT1JFIG9wY29kZXMg aW5zdGVhZCBvZiBhIG5vcm1hbAorCQkgKiBmdW5jdGlvbiBjYWxsLiAgUmVwcmVzZW50IHRoZW0g YXMgUlBSTmF2RXhwciBub2RlcyBzbyB0aGF0IGxhdGVyCisJCSAqIHN0YWdlcyBjYW4gaWRlbnRp ZnkgdGhlbSB3aXRob3V0IHJlbHlpbmcgb24gZnVuY2lkIGNvbXBhcmlzb25zLgogCQkgKi8KLQkJ Ym9vbAkJaXNfbmV4dCA9IChmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwKLQkJCQkJCQkg ICBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCk7Ci0JCWJvb2wJCWhhc19vZmZzZXQg PSAoZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDggfHwKLQkJCQkJCQkJICBmdW5jaWQg PT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCk7Ci0JCVJQUk5hdkV4cHIgKm5hdmV4cHIgPSBtYWtl Tm9kZShSUFJOYXZFeHByKTsKKwkJUlBSTmF2S2luZAlraW5kOworCQlib29sCQloYXNfb2Zmc2V0 OworCQlSUFJOYXZFeHByICpuYXZleHByOworCisJCWlmIChmdW5jaWQgPT0gRl9QUkVWX0FOWUVM RU1FTlQgfHwgZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDgpCisJCQlraW5kID0gUlBS X05BVl9QUkVWOworCQllbHNlIGlmIChmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwgZnVu Y2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpCisJCQlraW5kID0gUlBSX05BVl9ORVhUOwor CQllbHNlIGlmIChmdW5jaWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UIHx8IGZ1bmNpZCA9PSBGX0ZJ UlNUX0FOWUVMRU1FTlRfSU5UOCkKKwkJCWtpbmQgPSBSUFJfTkFWX0ZJUlNUOworCQllbHNlCisJ CQlraW5kID0gUlBSX05BVl9MQVNUOworCisJCWhhc19vZmZzZXQgPSAoZnVuY2lkID09IEZfUFJF Vl9BTllFTEVNRU5UX0lOVDggfHwKKwkJCQkJICBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRf SU5UOCB8fAorCQkJCQkgIGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCB8fAorCQkJ CQkgIGZ1bmNpZCA9PSBGX0xBU1RfQU5ZRUxFTUVOVF9JTlQ4KTsKKworCQluYXZleHByID0gbWFr ZU5vZGUoUlBSTmF2RXhwcik7CiAKLQkJbmF2ZXhwci0+a2luZCA9IGlzX25leHQgPyBSUFJfTkFW X05FWFQgOiBSUFJfTkFWX1BSRVY7CisJCW5hdmV4cHItPmtpbmQgPSBraW5kOwogCQluYXZleHBy LT5hcmcgPSAoRXhwciAqKSBsaW5pdGlhbChmYXJncyk7CiAJCW5hdmV4cHItPm9mZnNldF9hcmcg PSBoYXNfb2Zmc2V0ID8gKEV4cHIgKikgbHNlY29uZChmYXJncykgOiBOVUxMOwogCQluYXZleHBy LT5yZXN1bHR0eXBlID0gcmV0dHlwZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9ycHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwppbmRleCBkMWUwMmU1 MmU1My4uZGFiMDJmZmY0ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMKQEAgLTMzOSw4ICszMzks OCBAQCB0cmFuc2Zvcm1EZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1 c2UgKndjLCBXaW5kb3dEZWYgKndpbmRlZiwKIAkJLyoKIAkJICogVHJhbnNmb3JtIHRoZSBERUZJ TkUgZXhwcmVzc2lvbi4gIFdlIG11c3QgTk9UIGFkZCB0aGUgd2hvbGUKIAkJICogZXhwcmVzc2lv biB0byB0aGUgcXVlcnkgdGFyZ2V0bGlzdCwgYmVjYXVzZSBpdCBtYXkgY29udGFpbgotCQkgKiBS UFJOYXZFeHByIG5vZGVzIChQUkVWL05FWFQpIHRoYXQgY2FuIG9ubHkgYmUgZXZhbHVhdGVkIGlu c2lkZSB0aGUKLQkJICogb3duaW5nIFdpbmRvd0FnZy4KKwkJICogUlBSTmF2RXhwciBub2RlcyAo UFJFVi9ORVhUL0ZJUlNUL0xBU1QpIHRoYXQgY2FuIG9ubHkgYmUgZXZhbHVhdGVkCisJCSAqIGlu c2lkZSB0aGUgb3duaW5nIFdpbmRvd0FnZy4KIAkJICoKIAkJICogSW5zdGVhZCwgd2UgdHJhbnNm b3JtIHRoZSBleHByZXNzaW9uIGRpcmVjdGx5IGFuZCBvbmx5IGVuc3VyZSB0aGF0CiAJCSAqIHRo ZSBpbmRpdmlkdWFsIFZhciBub2RlcyBpdCByZWZlcmVuY2VzIGFyZSBwcmVzZW50IGluIHRoZQpA QCAtNDI5LDEzICs0MjksMjAgQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBz dGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAvKgogICogY2hlY2tf cnByX25hdl9leHByCiAgKgkJVmFsaWRhdGUgYSBzaW5nbGUgUlBSTmF2RXhwciBub2RlIGJ5IHdh bGtpbmcgaXRzIGFyZyBhbmQgb2Zmc2V0X2FyZwotICoJCXN1YnRyZWVzIGluIGEgc2luZ2xlIHBh c3MgZWFjaC4gIENoZWNrcyBmb3IgbmVzdGVkIFBSRVYvTkVYVCwgbWlzc2luZworICoJCXN1YnRy ZWVzIGluIGEgc2luZ2xlIHBhc3MgZWFjaC4gIENoZWNrcyBmb3IgaWxsZWdhbCBuZXN0aW5nLCBt aXNzaW5nCiAgKgkJY29sdW1uIHJlZmVyZW5jZXMsIGFuZCBub24tY29uc3RhbnQgb2Zmc2V0IGV4 cHJlc3Npb25zLgorICoKKyAqIE5lc3RpbmcgcnVsZXMgKFNRTCBzdGFuZGFyZCA1LjYuNCk6Cisg KiAgIC0gUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1Q6IGFsbG93ZWQgKGNvbXBvdW5kIG5h dmlnYXRpb24pCisgKiAgIC0gRklSU1QvTEFTVCB3cmFwcGluZyBQUkVWL05FWFQ6IHByb2hpYml0 ZWQKKyAqICAgLSBTYW1lLWNhdGVnb3J5IG5lc3RpbmcgKFBSRVYgaW5zaWRlIFBSRVYsIEZJUlNU IGluc2lkZSBGSVJTVCwgZXRjLik6CisgKiAgICAgcHJvaGliaXRlZAogICovCiB0eXBlZGVmIHN0 cnVjdAogewogCWJvb2wJCWhhc19uYXY7CQkvKiBSUFJOYXZFeHByIGZvdW5kIChuZXN0aW5nKSAq LwogCWJvb2wJCWhhc19jb2x1bW5fcmVmOyAvKiBWYXIgZm91bmQgKi8KKwlSUFJOYXZLaW5kCWlu bmVyX2tpbmQ7CQkvKiBraW5kIG9mIG5lc3RlZCBSUFJOYXZFeHByLCBpZiBhbnkgKi8KIH0JCQlO YXZDaGVja1Jlc3VsdDsKIAogc3RhdGljIGJvb2wKQEAgLTQ0Niw3ICs0NTMsMTAgQEAgbmF2X2No ZWNrX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCWlmIChub2RlID09IE5VTEwp CiAJCXJldHVybiBmYWxzZTsKIAlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQorCXsKIAkJcmVz dWx0LT5oYXNfbmF2ID0gdHJ1ZTsKKwkJcmVzdWx0LT5pbm5lcl9raW5kID0gKChSUFJOYXZFeHBy ICopIG5vZGUpLT5raW5kOworCX0KIAlpZiAoSXNBKG5vZGUsIFZhcikpCiAJCXJlc3VsdC0+aGFz X2NvbHVtbl9yZWYgPSB0cnVlOwogCkBAIC00NTcsMTYgKzQ2Nyw0NiBAQCBzdGF0aWMgdm9pZAog Y2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4cHIgKm5hdiwgUGFyc2VTdGF0ZSAqcHN0YXRlKQog ewogCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsKKwlib29sCQlvdXRlcl9pc19waHlzaWNhbCA9IChu YXYtPmtpbmQgPT0gUlBSX05BVl9QUkVWIHx8CisJCQkJCQkJCQkgbmF2LT5raW5kID09IFJQUl9O QVZfTkVYVCk7CiAKIAkvKiBDaGVjayBhcmcgc3VidHJlZTogbmVzdGluZyArIGNvbHVtbiByZWZl cmVuY2UgaW4gb25lIHdhbGsgKi8KIAltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3VsdCkp OwogCSh2b2lkKSBuYXZfY2hlY2tfd2Fsa2VyKChOb2RlICopIG5hdi0+YXJnLCAmcmVzdWx0KTsK IAogCWlmIChyZXN1bHQuaGFzX25hdikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiUFJFViBhbmQgTkVY VCBjYW5ub3QgYmUgbmVzdGVkIiksCi0JCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5h di0+bG9jYXRpb24pKSk7CisJeworCQlib29sCQlpbm5lcl9pc19waHlzaWNhbCA9IChyZXN1bHQu aW5uZXJfa2luZCA9PSBSUFJfTkFWX1BSRVYgfHwKKwkJCQkJCQkJCQkgcmVzdWx0LmlubmVyX2tp bmQgPT0gUlBSX05BVl9ORVhUKTsKKworCQlpZiAob3V0ZXJfaXNfcGh5c2ljYWwgJiYgIWlubmVy X2lzX3BoeXNpY2FsKQorCQl7CisJCQkvKgorCQkJICogUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNU L0xBU1Q6IHZhbGlkIGNvbXBvdW5kIG5hdmlnYXRpb24gcGVyCisJCQkgKiBTUUwgc3RhbmRhcmQg NS42LjQsIGJ1dCBub3QgeWV0IGltcGxlbWVudGVkLgorCQkJICovCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBl cnJtc2coImNvbXBvdW5kIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gaXMgbm90IHlldCBzdXBwb3J0 ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7 CisJCX0KKwkJZWxzZSBpZiAoIW91dGVyX2lzX3BoeXNpY2FsICYmIGlubmVyX2lzX3BoeXNpY2Fs KQorCQl7CisJCQkvKiBGSVJTVC9MQVNUIHdyYXBwaW5nIFBSRVYvTkVYVDogcHJvaGliaXRlZCBi eSBzdGFuZGFyZCAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJGSVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFp biBQUkVWIG9yIE5FWFQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+ bG9jYXRpb24pKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBTYW1lLWNhdGVnb3J5IG5lc3Rp bmc6IHByb2hpYml0ZWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBv cGVyYXRpb25zIGNhbm5vdCBiZSBuZXN0ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisJCX0KKwl9CiAJaWYgKCFyZXN1bHQuaGFzX2NvbHVt bl9yZWYpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLApAQCAtNDgzLDcgKzUyMyw3IEBAIGNoZWNrX3Jwcl9uYXZfZXhwcihSUFJOYXZFeHByICpu YXYsIFBhcnNlU3RhdGUgKnBzdGF0ZSkKIAkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChO b2RlICopIG5hdi0+b2Zmc2V0X2FyZykpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coIlBSRVYvTkVY VCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50IiksCisJCQkJCSBlcnJtc2coInJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIp LAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKIAl9 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggNzQyZDg4OTE1NGIuLmU5Y2Y0OWNh MjEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMDEwOSw5ICsxMDEwOSwyNCBA QCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJ Y2FzZSBUX1JQUk5hdkV4cHI6CiAJCQl7CiAJCQkJUlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4 cHIgKikgbm9kZTsKKwkJCQljb25zdCBjaGFyICpmdW5jbmFtZTsKIAotCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLAotCQkJCQkJCQkJICAgbmF2LT5raW5kID09IFJQUl9OQVZfUFJFViA/ ICJQUkVWKCIgOiAiTkVYVCgiKTsKKwkJCQlzd2l0Y2ggKG5hdi0+a2luZCkKKwkJCQl7CisJCQkJ CWNhc2UgUlBSX05BVl9QUkVWOgorCQkJCQkJZnVuY25hbWUgPSAiUFJFVigiOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgUlBSX05BVl9ORVhUOgorCQkJCQkJZnVuY25hbWUgPSAiTkVYVCgiOwor CQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUlBSX05BVl9GSVJTVDoKKwkJCQkJCWZ1bmNuYW1lID0g IkZJUlNUKCI7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBSUFJfTkFWX0xBU1Q6CisJCQkJCQlm dW5jbmFtZSA9ICJMQVNUKCI7CisJCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsIGZ1bmNuYW1lKTsKIAkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5h di0+YXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwogCQkJCWlmIChuYXYtPm9mZnNldF9hcmcg IT0gTlVMTCkKIAkJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93 ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5jCmluZGV4IDA5MTI2 MGQyY2NlLi40MjBhNDk2MjM5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dp bmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKQEAg LTc4NSwzICs3ODUsNTkgQEAgd2luZG93X25leHRfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkgZXJybXNnKCJuZXh0KCkgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UiKSkp OwogCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KIH0KKworLyoKKyAqIGZp cnN0CisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBGSVJTVCBuYXZpZ2F0aW9uIG9w ZXJhdG9yLgorICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3 aW5kb3dfZmlyc3QoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygiZmlyc3Qo KSBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZSIpKSk7CisJUEdfUkVUVVJOX05V TEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLworfQorCisvKgorICogbGFzdAorICogQ2F0YWxvZyBw bGFjZWhvbGRlciBmb3IgUlBSJ3MgTEFTVCBuYXZpZ2F0aW9uIG9wZXJhdG9yLgorICogU2VlIHdp bmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3aW5kb3dfbGFzdChQR19GVU5D VElPTl9BUkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJsYXN0KCkgY2FuIG9ubHkgYmUgdXNlZCBp biBhIERFRklORSBjbGF1c2UiKSkpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNo ZWQgKi8KK30KKworLyoKKyAqIGZpcnN0KHZhbHVlLCBvZmZzZXQpCisgKiBDYXRhbG9nIHBsYWNl aG9sZGVyIGZvciBSUFIncyBGSVJTVCBuYXZpZ2F0aW9uIG9wZXJhdG9yIHdpdGggb2Zmc2V0Lgor ICogU2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3aW5kb3dfZmly c3Rfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coImZpcnN0KCkg Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UiKSkpOworCVBHX1JFVFVSTl9OVUxM KCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIGxhc3QodmFsdWUsIG9mZnNldCkK KyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIExBU1QgbmF2aWdhdGlvbiBvcGVyYXRv ciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgorICovCitE YXR1bQord2luZG93X2xhc3Rfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBl cnJtc2coImxhc3QoKSBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZSIpKSk7CisJ UEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLworfQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggOGU5NTE2OWI3YjAuLjZkNzBlZDIzYWViIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTEwOTg0LDYgKzEwOTg0LDE4IEBACiB7IG9pZCA9PiAnODEyOScsIGRlc2NyID0+ ICduZXh0IHZhbHVlIGF0IG9mZnNldCcsCiAgIHByb25hbWUgPT4gJ25leHQnLCBwcm92b2xhdGls ZSA9PiAncycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcs CiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGludDgnLCBwcm9zcmMgPT4gJ3dpbmRvd19u ZXh0X29mZnNldCcgfSwKK3sgb2lkID0+ICc4MTMwJywgZGVzY3IgPT4gJ2ZpcnN0IHZhbHVlIGlu IG1hdGNoJywKKyAgcHJvbmFtZSA9PiAnZmlyc3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3Jl dHR5cGUgPT4gJ2FueWVsZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCcsIHBy b3NyYyA9PiAnd2luZG93X2ZpcnN0JyB9LAoreyBvaWQgPT4gJzgxMzInLCBkZXNjciA9PiAnZmly c3QgdmFsdWUgaW4gbWF0Y2ggYXQgb2Zmc2V0JywKKyAgcHJvbmFtZSA9PiAnZmlyc3QnLCBwcm92 b2xhdGlsZSA9PiAncycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxl bWVudCcsCisgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50IGludDgnLCBwcm9zcmMgPT4gJ3dp bmRvd19maXJzdF9vZmZzZXQnIH0sCit7IG9pZCA9PiAnODEzMScsIGRlc2NyID0+ICdsYXN0IHZh bHVlIGluIG1hdGNoJywKKyAgcHJvbmFtZSA9PiAnbGFzdCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCisgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50 JywgcHJvc3JjID0+ICd3aW5kb3dfbGFzdCcgfSwKK3sgb2lkID0+ICc4MTMzJywgZGVzY3IgPT4g J2xhc3QgdmFsdWUgaW4gbWF0Y2ggYXQgb2Zmc2V0JywKKyAgcHJvbmFtZSA9PiAnbGFzdCcsIHBy b3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdhbnll bGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9PiAn d2luZG93X2xhc3Rfb2Zmc2V0JyB9LAogCiAjIGZ1bmN0aW9ucyBmb3IgcmFuZ2UgdHlwZXMKIHsg b2lkID0+ICczODMyJywgZGVzY3IgPT4gJ0kvTycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRl eCBmYWMzN2M5Njg5Ni4uYTM0ZTFhOGRmZTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAt Njk5LDcgKzY5OSw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQlzdHJ1Y3QKIAkJ ewogCQkJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlOwotCQkJUlBSTmF2S2luZAlraW5kOwkvKiBQ UkVWIG9yIE5FWFQgKi8KKwkJCVJQUk5hdktpbmQJa2luZDsJLyogUFJFViwgTkVYVCwgRklSU1Qs IG9yIExBU1QgKi8KIAkJCURhdHVtCSAgICpvZmZzZXRfdmFsdWU7CS8qIDItYXJnOiBydW50aW1l IG9mZnNldCB2YWx1ZSwgb3IKIAkJCQkJCQkJCQkgKiBOVUxMICovCiAJCQlib29sCSAgICpvZmZz ZXRfaXNudWxsOwkvKiAyLWFyZzogcnVudGltZSBvZmZzZXQgbnVsbCBmbGFnICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IGZmNmQ3ZDcwYTYwLi5kNjVjZWUxYWVmZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTI2MzgsNiArMjYzOCw5IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRl CiAJU2l6ZQkJbmZhU3RhdGVTaXplOwkvKiBwcmUtY2FsY3VsYXRlZCBSUFJORkFTdGF0ZSBzaXpl ICovCiAJYm9vbAkgICAqbmZhVmFyTWF0Y2hlZDsJLyogcGVyLXJvdyBjYWNoZTogdmFyTWF0Y2hl ZFt2YXJJZF0gZm9yIHZhcklkCiAJCQkJCQkJCSAqIDwgbnVtRGVmaW5lcyAqLworCUJpdG1hcHNl dCAgKmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQ7CS8qIERFRklORSB2YXJzIG5lZWRpbmcgcGVy LWNvbnRleHQKKwkJCQkJCQkJCQkJICogZXZhbHVhdGlvbgorCQkJCQkJCQkJCQkgKiAobWF0Y2hf c3RhcnQtZGVwZW5kZW50KSAqLwogCWJpdG1hcHdvcmQgKm5mYVZpc2l0ZWRFbGVtczsJLyogZWxl bUlkeCB2aXNpdGVkIGJpdG1hcCBmb3IgY3ljbGUKIAkJCQkJCQkJCSAqIGRldGVjdGlvbiAqLwog CWludAkJCW5mYVZpc2l0ZWROV29yZHM7CS8qIG51bWJlciBvZiBiaXRtYXB3b3JkcyBpbgpAQCAt MjY5MiwxMiArMjY5NSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dBZ2dTdGF0ZQogCVR1cGxl VGFibGVTbG90ICp0ZW1wX3Nsb3RfMjsKIAogCS8qIFJQUiBuYXZpZ2F0aW9uICovCi0JaW50NjQJ CW5hdk1heE9mZnNldDsJLyogbWF4IFBSRVYgb2Zmc2V0OyBzZWUgUlBSX05BVl9PRkZTRVRfKiAq LworCWludDY0CQluYXZNYXhPZmZzZXQ7CS8qIG1heCBiYWNrd2FyZCBuYXYgb2Zmc2V0OyBzZWUK KwkJCQkJCQkJICogUlBSX05BVl9PRkZTRVRfKiAqLwogCXN0cnVjdCBXaW5kb3dPYmplY3REYXRh ICpuYXZfd2lub2JqOwkvKiB3aW5vYmogZm9yIFJQUiBuYXYgZmV0Y2ggKi8KIAlpbnQ2NAkJbmF2 X3Nsb3RfcG9zOwkvKiBwb3NpdGlvbiBjYWNoZWQgaW4gbmF2X3Nsb3QsIG9yIC0xICovCi0JVHVw bGVUYWJsZVNsb3QgKm5hdl9zbG90OwkvKiBzbG90IGZvciBQUkVWL05FWFQgdGFyZ2V0IHJvdyAq LworCVR1cGxlVGFibGVTbG90ICpuYXZfc2xvdDsJLyogc2xvdCBmb3IgUFJFVi9ORVhUL0ZJUlNU L0xBU1QgdGFyZ2V0IHJvdyAqLwogCVR1cGxlVGFibGVTbG90ICpuYXZfc2F2ZWRfb3V0ZXJ0dXBs ZTsJLyogc2F2ZWQgc2xvdCBkdXJpbmcgbmF2IHN3YXAgKi8KIAlUdXBsZVRhYmxlU2xvdCAqbmF2 X251bGxfc2xvdDsJLyogYWxsIE5VTEwgc2xvdCAqLworCWludDY0CQluYXZfbWF0Y2hfc3RhcnQ7 CS8qIG1hdGNoX3N0YXJ0IGZvciBGSVJTVC9MQVNUIG5hdiAqLwogCiAJLyogUlBSIGN1cnJlbnQg bWF0Y2ggcmVzdWx0ICovCiAJYm9vbAkJcnByX21hdGNoX3ZhbGlkOwkvKiB0cnVlIGlmIGEgbWF0 Y2ggcmVzdWx0IGlzIHNldCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAyN2EyZTdiNDhjNy4u YTRiMWU4ODBmZTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMzg3LDExICsxMzg3LDE4IEBA IHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZwogCUxpc3QJICAgKmRlZmluZUNsYXVzZTsKIAogCS8q Ci0JICogTWF4aW11bSBQUkVWIG9mZnNldCBmb3IgdHVwbGVzdG9yZSBtYXJrIG9wdGltaXphdGlv bi4gPj0gMDogc3RhdGljYWxseQotCSAqIGRldGVybWluZWQgbWF4IG9mZnNldCAobWFyayA9IGN1 cnJlbnRwb3MgLSBvZmZzZXQpLgorCSAqIEJpdG1hcHNldCBvZiBERUZJTkUgdmFyaWFibGUgaW5k aWNlcyB3aG9zZSBleHByZXNzaW9ucyBkZXBlbmQgb24KKwkgKiBtYXRjaF9zdGFydCAoY29udGFp biBGSVJTVCBvciBMQVNULXdpdGgtb2Zmc2V0KS4gIFZhcmlhYmxlcyBpbiB0aGlzIHNldAorCSAq IHJlcXVpcmUgcGVyLWNvbnRleHQgcmUtZXZhbHVhdGlvbiBkdXJpbmcgTkZBIHByb2Nlc3Npbmcu CisJICovCisJQml0bWFwc2V0ICAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudDsKKworCS8qCisJ ICogTWF4aW11bSBiYWNrd2FyZCBuYXZpZ2F0aW9uIG9mZnNldCBmb3IgdHVwbGVzdG9yZSBtYXJr IG9wdGltaXphdGlvbi4gPj0KKwkgKiAwOiBzdGF0aWNhbGx5IGRldGVybWluZWQgbWF4IG9mZnNl dCAobWFyayA9IGN1cnJlbnRwb3MgLSBvZmZzZXQpLgogCSAqIFJQUl9OQVZfT0ZGU0VUX05FRURT X0VWQUw6IGhhcyBub24tY29uc3RhbnQgb2Zmc2V0OyBldmFsdWF0ZSBhdAogCSAqIGV4ZWN1dG9y IGluaXQuICBSUFJfTkFWX09GRlNFVF9SRVRBSU5fQUxMOiBtdXN0IHJldGFpbiBlbnRpcmUgcGFy dGl0aW9uCi0JICogKG5vIHRyaW0gcG9zc2libGUpLgorCSAqIChlLmcuLCBGSVJTVC9MQVNUIG5h dmlnYXRpb24pLgogCSAqLwogCWludDY0CQluYXZNYXhPZmZzZXQ7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKaW5kZXggOTQ3MjNhM2I5MDkuLjBlNDBmYWQ2MjkxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApA QCAtNjUxLDI1ICs2NTEsMjggQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93RnVuY1J1bkNvbmRpdGlv bgogLyoKICAqIFJQUk5hdkV4cHIKICAqCi0gKiBSZXByZXNlbnRzIGEgUFJFVigpIG9yIE5FWFQo KSBuYXZpZ2F0aW9uIGNhbGwgaW4gYW4gUlBSIERFRklORSBjbGF1c2UuCisgKiBSZXByZXNlbnRz IGEgUFJFVi9ORVhUL0ZJUlNUL0xBU1QgbmF2aWdhdGlvbiBjYWxsIGluIGFuIFJQUiBERUZJTkUg Y2xhdXNlLgogICogQXQgZXhwcmVzc2lvbiBjb21waWxlIHRpbWUgdGhpcyBpcyB0cmFuc2xhdGVk IGludG8gRUVPUF9SUFJfTkFWX1NFVCAvCiAgKiBFRU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVz IHJhdGhlciB0aGFuIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwuCiAgKgotICoga2luZDogICAgICAg UlBSX05BVl9QUkVWIG9yIFJQUl9OQVZfTkVYVAorICoga2luZDogICAgICAgUlBSX05BVl9QUkVW LCBSUFJfTkFWX05FWFQsIFJQUl9OQVZfRklSU1QsIG9yIFJQUl9OQVZfTEFTVAogICogYXJnOiAg ICAgICAgdGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgYWdhaW5zdCB0aGUgdGFyZ2V0IHJvdwog ICogb2Zmc2V0X2FyZzogb3B0aW9uYWwgZXhwbGljaXQgb2Zmc2V0IGV4cHJlc3Npb24gKDItYXJn IGZvcm0pOyBOVUxMIGZvcgotICogICAgICAgICAgICAgdGhlIDEtYXJnIGZvcm0gd2hpY2ggdXNl cyBhbiBpbXBsaWNpdCBvZmZzZXQgb2YgMQorICogICAgICAgICAgICAgdGhlIDEtYXJnIGZvcm0g KGltcGxpY2l0IG9mZnNldDogMSBmb3IgUFJFVi9ORVhULCAwIGZvcgorICogICAgICAgICAgICAg RklSU1QvTEFTVCkKICAqLwogdHlwZWRlZiBlbnVtIFJQUk5hdktpbmQKIHsKIAlSUFJfTkFWX1BS RVYsCiAJUlBSX05BVl9ORVhULAorCVJQUl9OQVZfRklSU1QsCisJUlBSX05BVl9MQVNULAogfSBS UFJOYXZLaW5kOwogCiB0eXBlZGVmIHN0cnVjdCBSUFJOYXZFeHByCiB7CiAJRXhwcgkJeHByOwot CVJQUk5hdktpbmQJa2luZDsJCQkvKiBQUkVWIG9yIE5FWFQgKi8KKwlSUFJOYXZLaW5kCWtpbmQ7 CQkJLyogUFJFViwgTkVYVCwgRklSU1QsIG9yIExBU1QgKi8KIAlFeHByCSAgICphcmc7CQkJLyog YXJndW1lbnQgZXhwcmVzc2lvbiAqLwogCUV4cHIJICAgKm9mZnNldF9hcmc7CQkvKiBvZmZzZXQg ZXhwcmVzc2lvbiwgb3IgTlVMTCBmb3IgMS1hcmcgZm9ybSAqLwogCU9pZAkJCXJlc3VsdHR5cGU7 CQkvKiByZXN1bHQgdHlwZSAoc2FtZSBhcyBhcmcncyB0eXBlKSAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5oCmlu ZGV4IDkxMTQ4ZjZjNTc0Li45MGUxM2VkNzI0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3Jwci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaApAQCAtNTcsMTcg KzU3LDE5IEBACiAKIC8qCiAgKiBuYXZNYXhPZmZzZXQgc2VudGluZWwgdmFsdWVzLgotICogTm9u LW5lZ2F0aXZlIHZhbHVlcyByZXByZXNlbnQgYSBzdGF0aWNhbGx5IGRldGVybWluZWQgbWF4aW11 bSBQUkVWIG9mZnNldC4KKyAqIE5vbi1uZWdhdGl2ZSB2YWx1ZXMgcmVwcmVzZW50IGEgc3RhdGlj YWxseSBkZXRlcm1pbmVkIG1heGltdW0gYmFja3dhcmQKKyAqIG5hdmlnYXRpb24gb2Zmc2V0IChQ UkVWKS4KICAqLwotI2RlZmluZSBSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMCSgtMSkJLyogaGFz IG5vbi1jb25zdGFudCBQUkVWIG9mZnNldDsKKyNkZWZpbmUgUlBSX05BVl9PRkZTRVRfTkVFRFNf RVZBTAkoLTEpCS8qIGhhcyBub24tY29uc3RhbnQgb2Zmc2V0OwogCQkJCQkJCQkJCQkgKiBldmFs dWF0ZSBhdCBleGVjdXRvciBpbml0ICovCiAjZGVmaW5lIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9B TEwJKC0yKQkvKiBtdXN0IHJldGFpbiBlbnRpcmUgcGFydGl0aW9uCi0JCQkJCQkJCQkJCSAqIChl LmcuLCBmdXR1cmUgRklSU1QvTEFTVCkgKi8KKwkJCQkJCQkJCQkJICogKGUuZy4sIEZJUlNUL0xB U1QgbmF2aWdhdGlvbikgKi8KIAogZXh0ZXJuIExpc3QgKmNvbGxlY3RQYXR0ZXJuVmFyaWFibGVz KFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKIGV4dGVybiB2b2lkIGJ1aWxkRGVmaW5lVmFyaWFi bGVMaXN0KExpc3QgKmRlZmluZUNsYXVzZSwKIAkJCQkJCQkJCUxpc3QgKipkZWZpbmVWYXJpYWJs ZUxpc3QpOwogZXh0ZXJuIFJQUlBhdHRlcm4gKmJ1aWxkUlBSUGF0dGVybihSUFJQYXR0ZXJuTm9k ZSAqcGF0dGVybiwgTGlzdCAqZGVmaW5lVmFyaWFibGVMaXN0LAotCQkJCQkJCQkgICBSUFNraXBU byBycFNraXBUbywgaW50IGZyYW1lT3B0aW9ucyk7CisJCQkJCQkJCSAgIFJQU2tpcFRvIHJwU2tp cFRvLCBpbnQgZnJhbWVPcHRpb25zLAorCQkJCQkJCQkgICBib29sIGhhc01hdGNoU3RhcnREZXBl bmRlbnQpOwogCiAjZW5kaWYJCQkJCQkJLyogT1BUSU1JWkVSX1JQUl9IICovCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwci5vdXQKaW5kZXggZGU2Y2U0ZmJhOGEuLmZiNjIzZWExNTJiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ycHIub3V0CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgUEFUVEVSTiAoQSkKICAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJFVihwcmljZSkp CiApOwotRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQKK0VSUk9SOiAgcm93 IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb25zIGNhbm5vdCBiZSBuZXN0ZWQKIExJTkUgNzog ICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKHByaWNlKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogLS0gTmVzdGVkIE5FWFQKQEAgLTEwNTIsNyArMTA1Miw3IEBA IFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKQogICAgIERFRklORSBBIEFTIHByaWNlID4g TkVYVChORVhUKHByaWNlKSkKICk7Ci1FUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGJlIG5l c3RlZAorRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMgY2Fubm90IGJl IG5lc3RlZAogTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2Up KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBQUkVWIG5lc3RlZCBpbnNp ZGUgTkVYVApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEEpCiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKFBSRVYocHJpY2UpKQogKTsKLUVSUk9S OiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgYmUgbmVzdGVkCitFUlJPUjogIHJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb3BlcmF0aW9ucyBjYW5ub3QgYmUgbmVzdGVkCiBMSU5FIDc6ICAgICBERUZJTkUg QSBBUyBwcmljZSA+IE5FWFQoUFJFVihwcmljZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KIC0tIFBSRVYgbmVzdGVkIGluc2lkZSBleHByZXNzaW9uIGluc2lkZSBORVhUCkBA IC0xMDc2LDcgKzEwNzYsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSkKICAgICBE RUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UgKiBQUkVWKHByaWNlKSkKICk7Ci1FUlJPUjog IFBSRVYgYW5kIE5FWFQgY2Fubm90IGJlIG5lc3RlZAorRVJST1I6ICByb3cgcGF0dGVybiBuYXZp Z2F0aW9uIG9wZXJhdGlvbnMgY2Fubm90IGJlIG5lc3RlZAogTElORSA3OiAgICAgREVGSU5FIEEg QVMgcHJpY2UgPiBORVhUKHByaWNlICogUFJFVihwcmljZSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4KIC0tIFRyaXBsZSBuZXN0aW5nOiBlcnJvciByZXBvcnRlZCBhdCBvdXRl cm1vc3QgUFJFVgpAQCAtMTA4OCw3ICsxMDg4LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRF Uk4gKEEpCiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQog KTsKLUVSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgYmUgbmVzdGVkCitFUlJPUjogIHJvdyBw YXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9ucyBjYW5ub3QgYmUgbmVzdGVkCiBMSU5FIDc6ICAg ICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNlKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KIC0tIE5vIGNvbHVtbiByZWZlcmVuY2UgaW4gUFJFVi9O RVhUIGFyZ3VtZW50CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFU VEVSTiAoQSkKICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCiApOwotRVJS T1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudAorRVJST1I6 ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3Rh bnQKIExJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKICAgICAg ICAgICAgICAgICAgICAgICAgIF4KIC0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHZvbGF0aWxlIGZ1 bmN0aW9uIGFzIG9mZnNldApAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEEpCiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFuZG9tKCk6OmludCkg PiAwCiApOwotRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25z dGFudAorRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVu LXRpbWUgY29uc3RhbnQKIExJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHJhbmRv bSgpOjppbnQpID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gTm9uLWNvbnN0YW50 IG9mZnNldDogc3VicXVlcnkgYXMgb2Zmc2V0CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBXSU5ET1cg dyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgLTEp IElTIE5PVCBOVUxMCiApOwotRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG5l Z2F0aXZlCitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJl IG5lZ2F0aXZlCiAtLSAyLWFyZyBQUkVWL05FWFQ6IE5VTEwgb2Zmc2V0ICh0eXBlZCkKIFNFTEVD VCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKIEZST00g c3RvY2sKQEAgLTE0NTIsNyArMTQ1Miw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChB KykKICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVMTAog KTsKLUVSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBtdXN0IG5vdCBiZSBudWxsCitFUlJPUjogIHJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKIC0tIDItYXJnIFBS RVYvTkVYVDogTlVMTCBvZmZzZXQgKHVudHlwZWQpCiBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CiBGUk9NIHN0b2NrCkBAIC0xNDYyLDcgKzE0 NjIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSspCiAgICAgREVGSU5FIEEgQVMg UFJFVihwcmljZSwgTlVMTCkgSVMgTk9UIE5VTEwKICk7Ci1FUlJPUjogIFBSRVYvTkVYVCBvZmZz ZXQgbXVzdCBub3QgYmUgbnVsbAorRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNl dCBtdXN0IG5vdCBiZSBudWxsCiAtLSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgbmVn YXRpdmUgYW5kIE5VTEwKIFBSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUwogU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdwpAQCAtMTQ3 NCw5ICsxNDc0LDkgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklORSBBIEFTIHByaWNlID4gUFJF VihwcmljZSwgJDEpCiApOwogRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKLUVSUk9SOiAg UFJFVi9ORVhUIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorRVJST1I6ICByb3cgcGF0dGVy biBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQogRVhFQ1VURSB0ZXN0X3By ZXZfb2Zmc2V0KE5VTEwpOwotRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51 bGwKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbnVs bAogREVBTExPQ0FURSB0ZXN0X3ByZXZfb2Zmc2V0OwogLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0 IHZhcmlhYmxlIHdpdGggZXhwcmVzc2lvbiAoMCArICQxKQogUFJFUEFSRSB0ZXN0X3ByZXZfb2Zm c2V0KGludDgpIEFTCkBAIC0xNDg5LDkgKzE0ODksOSBAQCBXSU5ET1cgdyBBUyAoCiAgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAwICsgJDEpCiApOwogRVhFQ1VURSB0ZXN0X3By ZXZfb2Zmc2V0KC0xKTsKLUVSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdh dGl2ZQorRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBu ZWdhdGl2ZQogRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOwotRVJST1I6ICBQUkVWL05F WFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlv biBvZmZzZXQgbXVzdCBub3QgYmUgbnVsbAogREVBTExPQ0FURSB0ZXN0X3ByZXZfb2Zmc2V0Owog LS0gMi1hcmc6IHR3byBQUkVWIHdpdGggZGlmZmVyZW50IG9mZnNldHMgaW4gc2FtZSBERUZJTkUg Y2xhdXNlCiAtLSBCOiBwcmljZSBleGNlZWRzIGJvdGggMS1iYWNrIGFuZCAyLWJhY2sgdmFsdWVz CkBAIC0xNTY3LDYgKzE1NjcsMTY0IEBAIFdJTkRPVyB3IEFTICgKICBjb21wYW55MiB8IDA3LTEw LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCiAoMjAgcm93 cykKIAorLS0KKy0tIEZJUlNUL0xBU1QgbmF2aWdhdGlvbgorLS0KKy0tIFRlc3QgZGF0YSBmb3Ig RklSU1QvTEFTVDogdmFsdWVzIGN5Y2xlIGJhY2sgc28gRklSU1QodmFsKSA9IExBU1QodmFsKQor LS0gYXQgc3BlY2lmaWMgcG9zaXRpb25zLgorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hdiAoaWQg aW50LCB2YWwgaW50KTsKK0lOU0VSVCBJTlRPIHJwcl9uYXYgVkFMVUVTICgxLDEwKSwoMiwyMCks KDMsMzApLCg0LDEwKSwoNSw1MCksKDYsMTApOworLS0gRklSU1QodmFsKSA9IGNvbnN0YW50OiBC IG1hdGNoZXMgd2hlbiBtYXRjaF9zdGFydCBoYXMgdmFsPTEwCistLSBtYXRjaF9zdGFydD0xKDEw KTogQT1pZDEsIEI9aWQyLCBGSVJTVCh2YWwpPTEwIOKGkiBtYXRjaCB7MSwyfQorLS0gbWF0Y2hf c3RhcnQ9MygzMCk6IEE9aWQzLCBCPWlkNCwgRklSU1QodmFsKT0zMOKJoDEwIOKGkiBubyBtYXRj aAorLS0gbWF0Y2hfc3RhcnQ9NCgxMCk6IEE9aWQ0LCBCPWlkNSwgRklSU1QodmFsKT0xMCDihpIg bWF0Y2ggezQsNX0KK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1m LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gMTAK Kyk7CisgaWQgfCB2YWwgfCBtZiB8IG1sIAorLS0tLSstLS0tLSstLS0tKy0tLS0KKyAgMSB8ICAx MCB8ICAxIHwgIDIKKyAgMiB8ICAyMCB8ICAgIHwgICAKKyAgMyB8ICAzMCB8ICAgIHwgICAKKyAg NCB8ICAxMCB8ICA0IHwgIDUKKyAgNSB8ICA1MCB8ICAgIHwgICAKKyAgNiB8ICAxMCB8ICAgIHwg ICAKKyg2IHJvd3MpCisKKy0tIExBU1QodmFsKTogYWx3YXlzIGVxdWFscyBjdXJyZW50IHJvdydz IHZhbCAob2Zmc2V0IDAgZGVmYXVsdCkKKy0tIEVxdWl2YWxlbnQgdG86IEIgQVMgdmFsID4gMTUK K1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIp CisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBMQVNUKHZhbCkgPiAxNQorKTsKKyBpZCB8IHZh bCB8IG1mIHwgbWwgCistLS0tKy0tLS0tKy0tLS0rLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgMgor ICAyIHwgIDIwIHwgICAgfCAgIAorICAzIHwgIDMwIHwgICAgfCAgIAorICA0IHwgIDEwIHwgIDQg fCAgNQorICA1IHwgIDUwIHwgICAgfCAgIAorICA2IHwgIDEwIHwgICAgfCAgIAorKDYgcm93cykK KworLS0gUmVsdWN0YW50IEErPyB3aXRoIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCk6IGZpbmQgc2hv cnRlc3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2 YWwuCistLSBtYXRjaF9zdGFydD0xKDEwKTogcmVsdWN0YW50IHRyaWVzIEIgZWFybHk6CistLSAg IGlkMigyMOKJoDEwKSwgaWQzKDMw4omgMTApLCBpZDQoMTA9MTApIOKGkiBtYXRjaCB7MSwyLDMs NH0KKy0tIG1hdGNoX3N0YXJ0PTUoNTApOiBpZDYoMTDiiaA1MCkg4oaSIG5vIG1hdGNoCitTRUxF Q1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIpCisg ICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCispOworIGlk IHwgdmFsIHwgbWYgfCBtbCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tCisgIDEgfCAgMTAgfCAgMSB8 ICA0CisgIDIgfCAgMjAgfCAgICB8ICAgCisgIDMgfCAgMzAgfCAgICB8ICAgCisgIDQgfCAgMTAg fCAgICB8ICAgCisgIDUgfCAgNTAgfCAgICB8ICAgCisgIDYgfCAgMTAgfCAgICB8ICAgCisoNiBy b3dzKQorCistLSBHcmVlZHkgQSsgd2l0aCBGSVJTVCh2YWwpID0gTEFTVCh2YWwpOiBmaW5kIGxv bmdlc3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2 YWwuCistLSBtYXRjaF9zdGFydD0xKDEwKTogZ3JlZWR5IEEgZWF0cyBhbGwsIEIgdHJpZXMgbGFz dDoKKy0tICAgaWQ2KDEwPTEwKSDihpIgbWF0Y2ggezEsMiwzLDQsNSw2fQorU0VMRUNUIGlkLCB2 YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtbAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F IEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCispOworIGlkIHwgdmFsIHwg bWYgfCBtbCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tCisgIDEgfCAgMTAgfCAgMSB8ICA2CisgIDIg fCAgMjAgfCAgICB8ICAgCisgIDMgfCAgMzAgfCAgICB8ICAgCisgIDQgfCAgMTAgfCAgICB8ICAg CisgIDUgfCAgNTAgfCAgICB8ICAgCisgIDYgfCAgMTAgfCAgICB8ICAgCisoNiByb3dzKQorCist LSBTS0lQIFRPIE5FWFQgUk9XIHdpdGggRklSU1QodmFsKSA9IExBU1QodmFsKTogb3ZlcmxhcHBp bmcgbWF0Y2ggYXR0ZW1wdHMuCistLSBXaXRoIE9ORSBST1cgUEVSIE1BVENILCBlYWNoIHJvdyBz aG93cyBvbmx5IGl0cyBmaXJzdCBtYXRjaCByZXN1bHQuCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORSBBIEFTIFRSVUUs IEIgQVMgRklSU1QodmFsKSA9IExBU1QodmFsKQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgbWwgCist LS0tKy0tLS0tKy0tLS0rLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgNAorICAyIHwgIDIwIHwgICAg fCAgIAorICAzIHwgIDMwIHwgICAgfCAgIAorICA0IHwgIDEwIHwgIDQgfCAgNgorICA1IHwgIDUw IHwgICAgfCAgIAorICA2IHwgIDEwIHwgICAgfCAgIAorKDYgcm93cykKKworLS0gRklSU1QvTEFT VCBvdXRzaWRlIERFRklORSBjbGF1c2UgKGVycm9yIGNhc2VzKQorU0VMRUNUIGZpcnN0KHZhbCkg RlJPTSBycHJfbmF2OworRVJST1I6ICBmaXJzdCBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5F IGNsYXVzZQorTElORSAxOiBTRUxFQ1QgZmlyc3QodmFsKSBGUk9NIHJwcl9uYXY7CisgICAgICAg ICAgICAgICBeCitTRUxFQ1QgbGFzdCh2YWwpIEZST00gcnByX25hdjsKK0VSUk9SOiAgbGFzdCBj YW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgbGFzdCh2 YWwpIEZST00gcnByX25hdjsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBmaXJzdCh2YWwsIDEp IEZST00gcnByX25hdjsKK0VSUk9SOiAgZmlyc3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklO RSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIGZpcnN0KHZhbCwgMSkgRlJPTSBycHJfbmF2OworICAg ICAgICAgICAgICAgXgorLS0gRnVuY3Rpb25hbCBub3RhdGlvbjogc2hvdWxkIGFjY2VzcyBjb2x1 bW4sIG5vdCBSUFIgbmF2aWdhdGlvbgorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hbWVzIChwcmV2 IGludCwgbmV4dCBpbnQsIGZpcnN0IHRleHQsIGxhc3QgdGV4dCk7CitJTlNFUlQgSU5UTyBycHJf bmFtZXMgVkFMVUVTICgxLCAyLCAnSm9lJywgJ0Jsb3cnKTsKK1NFTEVDVCBwcmV2KGYpLCBuZXh0 KGYpLCBmaXJzdChmKSwgbGFzdChmKSBGUk9NIHJwcl9uYW1lcyBmOworIHByZXYgfCBuZXh0IHwg Zmlyc3QgfCBsYXN0IAorLS0tLS0tKy0tLS0tLSstLS0tLS0tKy0tLS0tLQorICAgIDEgfCAgICAy IHwgSm9lICAgfCBCbG93CisoMSByb3cpCisKK0RST1AgVEFCTEUgcnByX25hbWVzOworLS0gQ29t cG91bmQgbmF2aWdhdGlvbjogbm90IHlldCBzdXBwb3J0ZWQKK1NFTEVDVCBpZCwgdmFsIEZST00g cnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIpCisg ICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCksIDEpID4gMAorKTsKK0VS Uk9SOiAgY29tcG91bmQgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBpcyBub3QgeWV0IHN1cHBvcnRl ZAorTElORSA1OiAgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCksIDEp ID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBSZXZlcnNlIG5l c3Rpbmc6IEZJUlNUIHdyYXBwaW5nIFBSRVYgaXMgcHJvaGliaXRlZAorU0VMRUNUIGlkLCB2YWwg RlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEg QikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKFBSRVYodmFsKSkgPiAwCispOwor RVJST1I6ICBGSVJTVCBhbmQgTEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQKK0xJTkUg NTogICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QoUFJFVih2YWwpKSA+IDAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBycHJfbmF2OwogLS0K IC0tIFNLSVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFyeQogLS0KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKaW5kZXggNzQ1MmNmMWIzYWIuLjcwOWQ4ZjVkOGU2 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dApAQCAtMTYyOSw3ICsxNjI5 LDcgQEAgTElORSA2OiAgICAgUEFUVEVSTiAoQXssMjE0NzQ4MzY0N30pCiAtLSBFeHBlY3RlZDog RVJST1I6IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYK IERST1AgVEFCTEUgcnByX2JvdW5kczsKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMg VGVzdHMgKFBSRVYgLyBORVhUKQorLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYg LyBORVhUIC8gRklSU1QgLyBMQVNUKQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBDUkVBVEUgVEFCTEUgcnByX25hdiAoaWQg SU5ULCB2YWwgSU5UKTsKIElOU0VSVCBJTlRPIHJwcl9uYXYgVkFMVUVTCkBAIC0xNzMwLDYgKzE3 MzAsODEgQEAgRVJST1I6ICBuZXh0IGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNl CiBMSU5FIDE6IFNFTEVDVCBORVhUKGlkKSwgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAogICAgICAgICAgICAgICAgXgogLS0gRXhwZWN0ZWQ6IEVSUk9SOiBuZXh0IGNhbiBvbmx5IGJl IHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlCistLSBGSVJTVCBmdW5jdGlvbiAtIHJlZmVyZW5jZSBt YXRjaF9zdGFydCByb3cKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4gMCwKKyAgICAgICAgQiBBUyB2YWwg PiBGSVJTVCh2YWwpCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNQorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAg IDAKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBMQVNU IGZ1bmN0aW9uIHdpdGhvdXQgb2Zmc2V0IC0gZXF1aXZhbGVudCB0byBjdXJyZW50IHJvdydzIHZh bHVlCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERF RklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgTEFTVCh2YWwpID4gUFJF Vih2YWwpCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDMKKyAg NCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBGSVJTVCBhbmQg TEFTVCBjb21iaW5lZAorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBC KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+ IEZJUlNUKHZhbCkgQU5EIExBU1QodmFsKSA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8 ICAgMAorKDUgcm93cykKKworLS0gRklSU1QgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIg dGhhbiBpbiBERUZJTkUKK1NFTEVDVCBGSVJTVChpZCksIGlkLCB2YWwgRlJPTSBycHJfbmF2Owor RVJST1I6ICBmaXJzdCBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAx OiBTRUxFQ1QgRklSU1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsKKyAgICAgICAgICAgICAg IF4KKy0tIEV4cGVjdGVkOiBFUlJPUjogZmlyc3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklO RSBjbGF1c2UKKy0tIExBU1QgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBpbiBE RUZJTkUKK1NFTEVDVCBMQVNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7CitFUlJPUjogIGxh c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIExB U1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsKKyAgICAgICAgICAgICAgIF4KKy0tIEV4cGVj dGVkOiBFUlJPUjogbGFzdCBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQogRFJP UCBUQUJMRSBycHJfbmF2OwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dAppbmRleCA0YTY0NmQxZTFkOC4u ODNhMDM1MDIzYmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4 cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0 CkBAIC0xMDg2LDYgKzEwODYsODkgQEAgV0lORE9XIHcgQVMgKAogICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQyLjAwIGxvb3BzPTEpCiAoOSBy b3dzKQogCistLSBObyBhYnNvcnB0aW9uIHdoZW4gREVGSU5FIHVzZXMgRklSU1QgKG1hdGNoX3N0 YXJ0LWRlcGVuZGVudCkKKy0tIFNhbWUgcGF0dGVybiBhcyBycHJfZXZfY3R4X2Fic29yYl91bmJv dW5kZWQgYnV0IHdpdGggRklSU1QgaW4gREVGSU5FLgorLS0gQ29tcGFyZTogYWJzb3JiZWQgY291 bnQgc2hvdWxkIGJlIDAgaGVyZSB2cyA+MCBhYm92ZS4KK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhf bm9fYWJzb3JiX2ZpcnN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAgQU5EIHYgPiBGSVJTVCh2KQorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9ub19h YnNvcmJfZmlyc3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBi KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBB TkQgdiA+IEZJUlNUKHYpCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsgYgorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZB IFN0YXRlczogOSBwZWFrLCAxNTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDUg cGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA1LzUvNS4w KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQwIHNraXBwZWQgKGxlbiAxLzQv Mi41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCBy b3dzPTUwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBBYnNvcnB0aW9uIHByZXNlcnZlZCB3 aGVuIERFRklORSB1c2VzIG9ubHkgTEFTVCB3aXRob3V0IG9mZnNldAorLS0gTEFTVCh2KSBpcyBt YXRjaF9zdGFydC1pbmRlcGVuZGVudCAoYWx3YXlzIGN1cnJlbnRwb3MpLCBzbyBhYnNvcnB0aW9u CistLSByZW1haW5zIGFjdGl2ZS4gIENvbXBhcmU6IGFic29yYmVkIGNvdW50IHNob3VsZCBiZSA+ MCwgbGlrZSB0aGUKKy0tIFBSRVYtb25seSBjYXNlIGFib3ZlLgorQ1JFQVRFIFZJRVcgcnByX2V2 X2N0eF9hYnNvcmJfbGFzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1 IDw+IDAsIEIgQVMgTEFTVCh2KSAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9sYXN0Jyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyBMQVNUKHYpICUgNSA9IDAKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz01MC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQK KyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTog MzAgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAt PiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAg bG9vcHM9MSkKKyg5IHJvd3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gTWF0Y2ggTGVuZ3RoIFN0YXRpc3RpY3Mg VGVzdHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggYjNiYmM4MjU0YzQuLjI3OTI5YzQ3 ZDdiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKQEAgLTc2MCw2ICs3NjAsMTA2IEBAIFdJTkRPVyB3IEFT ICgKICAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA8IE5F WFQocHJpY2UsIDEpCiApOwogCistLQorLS0gRklSU1QvTEFTVCBuYXZpZ2F0aW9uCistLQorCist LSBUZXN0IGRhdGEgZm9yIEZJUlNUL0xBU1Q6IHZhbHVlcyBjeWNsZSBiYWNrIHNvIEZJUlNUKHZh bCkgPSBMQVNUKHZhbCkKKy0tIGF0IHNwZWNpZmljIHBvc2l0aW9ucy4KK0NSRUFURSBURU1QIFRB QkxFIHJwcl9uYXYgKGlkIGludCwgdmFsIGludCk7CitJTlNFUlQgSU5UTyBycHJfbmF2IFZBTFVF UyAoMSwxMCksKDIsMjApLCgzLDMwKSwoNCwxMCksKDUsNTApLCg2LDEwKTsKKworLS0gRklSU1Qo dmFsKSA9IGNvbnN0YW50OiBCIG1hdGNoZXMgd2hlbiBtYXRjaF9zdGFydCBoYXMgdmFsPTEwCist LSBtYXRjaF9zdGFydD0xKDEwKTogQT1pZDEsIEI9aWQyLCBGSVJTVCh2YWwpPTEwIOKGkiBtYXRj aCB7MSwyfQorLS0gbWF0Y2hfc3RhcnQ9MygzMCk6IEE9aWQzLCBCPWlkNCwgRklSU1QodmFsKT0z MOKJoDEwIOKGkiBubyBtYXRjaAorLS0gbWF0Y2hfc3RhcnQ9NCgxMCk6IEE9aWQ0LCBCPWlkNSwg RklSU1QodmFsKT0xMCDihpIgbWF0Y2ggezQsNX0KK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnBy X25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBB UyBGSVJTVCh2YWwpID0gMTAKKyk7CisKKy0tIExBU1QodmFsKTogYWx3YXlzIGVxdWFscyBjdXJy ZW50IHJvdydzIHZhbCAob2Zmc2V0IDAgZGVmYXVsdCkKKy0tIEVxdWl2YWxlbnQgdG86IEIgQVMg dmFsID4gMTUKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBMQVNUKHZhbCkgPiAxNQorKTsK KworLS0gUmVsdWN0YW50IEErPyB3aXRoIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCk6IGZpbmQgc2hv cnRlc3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2 YWwuCistLSBtYXRjaF9zdGFydD0xKDEwKTogcmVsdWN0YW50IHRyaWVzIEIgZWFybHk6CistLSAg IGlkMigyMOKJoDEwKSwgaWQzKDMw4omgMTApLCBpZDQoMTA9MTApIOKGkiBtYXRjaCB7MSwyLDMs NH0KKy0tIG1hdGNoX3N0YXJ0PTUoNTApOiBpZDYoMTDiiaA1MCkg4oaSIG5vIG1hdGNoCitTRUxF Q1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIpCisg ICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCispOworCist LSBHcmVlZHkgQSsgd2l0aCBGSVJTVCh2YWwpID0gTEFTVCh2YWwpOiBmaW5kIGxvbmdlc3QgbWF0 Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0aGUgc2FtZSB2YWwuCistLSBt YXRjaF9zdGFydD0xKDEwKTogZ3JlZWR5IEEgZWF0cyBhbGwsIEIgdHJpZXMgbGFzdDoKKy0tICAg aWQ2KDEwPTEwKSDihpIgbWF0Y2ggezEsMiwzLDQsNSw2fQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtbAorRlJP TSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgVFJV RSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCispOworCistLSBTS0lQIFRPIE5FWFQgUk9X IHdpdGggRklSU1QodmFsKSA9IExBU1QodmFsKTogb3ZlcmxhcHBpbmcgbWF0Y2ggYXR0ZW1wdHMu CistLSBXaXRoIE9ORSBST1cgUEVSIE1BVENILCBlYWNoIHJvdyBzaG93cyBvbmx5IGl0cyBmaXJz dCBtYXRjaCByZXN1bHQuCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFsKSA9 IExBU1QodmFsKQorKTsKKworLS0gRklSU1QvTEFTVCBvdXRzaWRlIERFRklORSBjbGF1c2UgKGVy cm9yIGNhc2VzKQorU0VMRUNUIGZpcnN0KHZhbCkgRlJPTSBycHJfbmF2OworU0VMRUNUIGxhc3Qo dmFsKSBGUk9NIHJwcl9uYXY7CitTRUxFQ1QgZmlyc3QodmFsLCAxKSBGUk9NIHJwcl9uYXY7CisK Ky0tIEZ1bmN0aW9uYWwgbm90YXRpb246IHNob3VsZCBhY2Nlc3MgY29sdW1uLCBub3QgUlBSIG5h dmlnYXRpb24KK0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYW1lcyAocHJldiBpbnQsIG5leHQgaW50 LCBmaXJzdCB0ZXh0LCBsYXN0IHRleHQpOworSU5TRVJUIElOVE8gcnByX25hbWVzIFZBTFVFUyAo MSwgMiwgJ0pvZScsICdCbG93Jyk7CitTRUxFQ1QgcHJldihmKSwgbmV4dChmKSwgZmlyc3QoZiks IGxhc3QoZikgRlJPTSBycHJfbmFtZXMgZjsKK0RST1AgVEFCTEUgcnByX25hbWVzOworCistLSBD b21wb3VuZCBuYXZpZ2F0aW9uOiBub3QgeWV0IHN1cHBvcnRlZAorU0VMRUNUIGlkLCB2YWwgRlJP TSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikK KyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgMSkgPiAwCispOwor CistLSBSZXZlcnNlIG5lc3Rpbmc6IEZJUlNUIHdyYXBwaW5nIFBSRVYgaXMgcHJvaGliaXRlZAor U0VMRUNUIGlkLCB2YWwgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKFBSRVYo dmFsKSkgPiAwCispOworCitEUk9QIFRBQkxFIHJwcl9uYXY7CisKIC0tCiAtLSBTS0lQIFRPIC8g QmFja3RyYWNraW5nIC8gRnJhbWUgYm91bmRhcnkKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfYmFzZS5z cWwKaW5kZXggOGMyM2M3NTk4YTMuLjZhYzI0OGIzMTAxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ycHJfYmFzZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jh c2Uuc3FsCkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBXSU5ET1cgdyBBUyAoCiBEUk9QIFRBQkxFIHJw cl9ib3VuZHM7CiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYg LyBORVhUKQorLS0gTmF2aWdhdGlvbiBGdW5jdGlvbnMgVGVzdHMgKFBSRVYgLyBORVhUIC8gRklS U1QgLyBMQVNUKQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAKIApAQCAtMTI3OCw2ICsxMjc4LDUzIEBAIFdJTkRPVyB3IEFT ICgKIE9SREVSIEJZIGlkOwogLS0gRXhwZWN0ZWQ6IEVSUk9SOiBuZXh0IGNhbiBvbmx5IGJlIHVz ZWQgaW4gYSBERUZJTkUgY2xhdXNlCiAKKy0tIEZJUlNUIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIG1h dGNoX3N0YXJ0IHJvdworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBC KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+ IEZJUlNUKHZhbCkKKykKK09SREVSIEJZIGlkOworCistLSBMQVNUIGZ1bmN0aW9uIHdpdGhvdXQg b2Zmc2V0IC0gZXF1aXZhbGVudCB0byBjdXJyZW50IHJvdydzIHZhbHVlCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFT IHZhbCA+IDAsCisgICAgICAgIEIgQVMgTEFTVCh2YWwpID4gUFJFVih2YWwpCispCitPUkRFUiBC WSBpZDsKKworLS0gRklSU1QgYW5kIExBU1QgY29tYmluZWQKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4g MCwKKyAgICAgICAgQiBBUyB2YWwgPiBGSVJTVCh2YWwpIEFORCBMQVNUKHZhbCkgPiBQUkVWKHZh bCkKKykKK09SREVSIEJZIGlkOworCistLSBGSVJTVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBv dGhlciB0aGFuIGluIERFRklORQorU0VMRUNUIEZJUlNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9u YXY7CistLSBFeHBlY3RlZDogRVJST1I6IGZpcnN0IGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJ TkUgY2xhdXNlCisKKy0tIExBU1QgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBp biBERUZJTkUKK1NFTEVDVCBMQVNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7CistLSBFeHBl Y3RlZDogRVJST1I6IGxhc3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UKKwog RFJPUCBUQUJMRSBycHJfbmF2OwogCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3Jwcl9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWlu LnNxbAppbmRleCBhZWQyZjY5YmM0Zi4uOWFlZDRmNzIwNzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9y cHJfZXhwbGFpbi5zcWwKQEAgLTY5Miw2ICs2OTIsNTUgQEAgV0lORE9XIHcgQVMgKAogICAgICAg ICAgICBDIEFTIHYgJSAyMSBJTiAoMywgNSwgOCwgMTAsIDEzLCAxNSwgMTgsIDIwKQogKTsnKTsK IAorLS0gTm8gYWJzb3JwdGlvbiB3aGVuIERFRklORSB1c2VzIEZJUlNUIChtYXRjaF9zdGFydC1k ZXBlbmRlbnQpCistLSBTYW1lIHBhdHRlcm4gYXMgcnByX2V2X2N0eF9hYnNvcmJfdW5ib3VuZGVk IGJ1dCB3aXRoIEZJUlNUIGluIERFRklORS4KKy0tIENvbXBhcmU6IGFic29yYmVkIGNvdW50IHNo b3VsZCBiZSAwIGhlcmUgdnMgPjAgYWJvdmUuCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X25vX2Fi c29yYl9maXJzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwIEFORCB2ID4gRklSU1QodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfbm9fYWJzb3Ji X2ZpcnN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBBTkQgdiA+IEZJUlNUKHYpCispOycp OworCistLSBBYnNvcnB0aW9uIHByZXNlcnZlZCB3aGVuIERFRklORSB1c2VzIG9ubHkgTEFTVCB3 aXRob3V0IG9mZnNldAorLS0gTEFTVCh2KSBpcyBtYXRjaF9zdGFydC1pbmRlcGVuZGVudCAoYWx3 YXlzIGN1cnJlbnRwb3MpLCBzbyBhYnNvcnB0aW9uCistLSByZW1haW5zIGFjdGl2ZS4gIENvbXBh cmU6IGFic29yYmVkIGNvdW50IHNob3VsZCBiZSA+MCwgbGlrZSB0aGUKKy0tIFBSRVYtb25seSBj YXNlIGFib3ZlLgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfbGFzdCBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgTEFTVCh2KSAlIDUgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9sYXN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIExBU1QodikgJSA1 ID0gMAorKTsnKTsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLSBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cwog LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --00000000000007da99064eb601a9--